{"_id":"@hyext/hyext-reporter","_rev":"42-2e0ea7001ca6106dacf0b58c3971800f","name":"@hyext/hyext-reporter","dist-tags":{"beta":"1.2.2-beta.2","latest":"1.2.3"},"versions":{"0.1.1-beta.1":{"name":"@hyext/hyext-reporter","version":"0.1.1-beta.1","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@0.1.1-beta.1","maintainers":[{"name":"mylhyz","email":"mylhyz@gmail.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"}],"dist":{"shasum":"e1da58d1fb4c1dad85171f05ed48a8aeb5bf394b","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-0.1.1-beta.1.tgz","fileCount":8,"integrity":"sha512-KkLuX9qa5gLIW8iQh9pBjz41C3g0zlNROhcAifhvqVsbCEkGjh+bwreiS9zdA51QqUhkuLJMmoSqfZqnoQAZoA==","signatures":[{"sig":"MEUCIQDV55IjZH6lTkAciQi2TYvrCy5mnJPkY+pwwvni+dBveAIgGanx5rv7ybYQatWoDpdsAiPwA0i5B7pyJqix0HNXdns=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108265,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg9YRDCRA9TVsSAnZWagAAli4P/3OYXCzkQ+sE7yhDNtOU\nEcGlVsZ2GZEJN6VqJfc0SkjOiqVyaGDjzEdMwx1q6klaqFJxRLbucbgXm6bS\nYHl8REhAJk17IRXCIu0Hj5Vkr/CtgWpFywEWr10p20XiU5rGnfST0U6WR2SX\nT0twALrzPMB6oNw3X5Pf/KInpuvE0nTJAOqqHTgtLSFp9yPgYyzFEvFvpjUn\nSA28reRHaKFU6haNUr/2566oPUB6qPfSWKN6bOrFIoLRMw2rrfR7FDt0r+/R\nV4nzyoRyG+AzpAvbRrysIYtZcuXKLIL0insURkWxSMNNAIDhOcHUtBhsR7/n\ncY4a4zo4SH9yb17jLNuisigKcVhqnenImAYjRrx1uwF8eyZ7pyLypY//vfnJ\nxWPnmIN4HTRBdgpslCslPuEznUPsDvG3jtroq7wcVZMG1j7O0w9MEWDUYq6h\n7u7gaTov3ldZUt9nsz+2EUpQq+x4cMHxBmXP+1qoShwcJvjliBOtY4050H+0\nDdUcN91lQih+YMmQhe6RWGhSDMRLAQJOITBMAV0dGgHLwXBfpZt+GoDR2W+7\nqq624OPHuoQzIqR0j32XTjFVq/PVixC0GabbdWRJpvrKrxZMbdalFaPNViIh\nFjsgRLIPhGcqwbxTqBiDWSUedn5FG2avjB/zovFsOASzYUN+VZPPlOUWcGmF\nM6VK\r\n=Wf2W\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"6.14.8","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"http://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_0.1.1-beta.1_1626702915268_0.5757893251580031","host":"s3://npm-registry-packages"}},"0.1.4-beta.0":{"name":"@hyext/hyext-reporter","version":"0.1.4-beta.0","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@0.1.4-beta.0","maintainers":[{"name":"mylhyz","email":"mylhyz@gmail.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"}],"dist":{"shasum":"172be7173e42943befba068293b58a72ab474638","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-0.1.4-beta.0.tgz","fileCount":8,"integrity":"sha512-pWsKbz+M5xEio7yerEBraRRIr0Dx5xM4E+2m8/oU5ikyMbljrvQUcXDX09rVcEDGe1/I8aa5z2Dh5KOohPlOtA==","signatures":[{"sig":"MEYCIQD6j+3xH5ENO/io80gDigShEBCXBHsjGXdV4Wwi7kap4wIhAPEvB881Ilp77xM6SQddpKivvUFT7sT/YpjSvjZvdP5Y","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108322,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg9YXTCRA9TVsSAnZWagAAAlcP/02BMHxsilP8dJtadIA+\n/m69M4Gw2ORP3PBEPSWjbioPUr40Zs6ReIdh2SuUJInIbDXHCLppqZgnOhVx\ndYMkq0vOLr4pTHcjfJpVWMoI5KCjzGYRSzEFm5JrPX8PIRBem6sdRQ1mQ1x7\nPXU2ryCa7ouKsVH4DKfpK31NjOWYijDfx1c79sQveGrxBBSwwUQtiJKK0xhk\n3xZu0fuuTCvFD+T+lJW8txJsPdotGhHpC9bq+OoaudWc/Nkb9oApzo4SpRSn\nxQL3l9h4uN8DWfYZlFuxzkasei9rUNkooaMaWvda+EFGMrFRQfG9qmGoQ82S\nnUhT8YiuEYCaoFcftY5C4UoN0iCDDu6NjY80cNzTvVtYNrNiTqcWhH+YELPt\n/xNU92oQyfyhfvfelPh+iKs1/22gqf9bu6UxwsvfePft2wJWF+dOV8QlqT0B\nWSrD+oTVahU0aBrc0WsOPqtbQI8ppuN8y8RhZJMnSmdeTAYVPC9HOovgQWUy\nzHuMJZFAJ1bV4jb1x6Qlt/5W7Bt5UwzmXD9fPeOFJeTsq14VI+EGu8ngiSio\nkUmJfSLsdg9gdxvsHG25cANe3n49dKJZzGUb+rPwz1m5EgIEVIXEZqEnZLq+\nRoTHjilx7dpjPQBjZ0K7/MpQdnV0e6HqZ+1SWK7B4Vq50Lsq74HWbIqh8Mq0\nDEQ6\r\n=Nlbs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","readme":"## 小程序统一日志上报\n\n- @hyext/hyext-reporter\n- 负责统一小程序日志数据，不做主动上报\n- 提供全局心跳，默认 60 秒心跳一次\n- 日志延迟 2 秒上报，会收集延迟时间内的所有日志；\n\n### 安装\n\n```\nnpm install @hyext/hyext-reporter --registry=https://nexus.huya.com/repository/npm-public/\n```\n\n### 引入\n\n```\nimport { ExtReporter, LogEvents } from '@hyext/hyext-reporter'\n\n```\n\n### 实例化 - new ExtReporter(config)\n\n#### 配置 config\n\n| 参数            | 类型     | 必填 | 默认  | 说明             |\n| --------------- | -------- | ---- | ----- | ---------------- |\n| PlatformRequest | Callback | 是   | --    | 平台定义上报方法 |\n| CommonInfo      | Object   | 是   | --    | 日志公用信息     |\n| OpenReport      | boolean  | 否   | true  | 是否开启上报     |\n| Debug           | boolean  | 否   | false | 是否开启 debug   |\n| ReportDelay     | number   | 否   | 2000  | 延迟上报时差     |\n| HeartbeatFreq   | number   | 否   | 60000 | 心跳频率         |\n| BaseInfo        | Object   | 否   | --    | 日志基础信息     |\n\n#### 上报方法 PlatformRequest\n\n| 回调参数    | 类型   | 说明         |\n| ----------- | ------ | ------------ |\n| params      | Object | 回调参数     |\n| params.logs | Array  | 日志数据数组 |\n\n#### 日志公用信息 CommonInfo\n\n| 参数    | 类型   | 说明                                         |\n| ------- | ------ | -------------------------------------------- |\n| ext_id  | string | 小程序 ID                                    |\n| uid     | string | 用户 ID                                      |\n| pid     | string | 主播 ID                                      |\n| game_id | string | 品类 ID                                      |\n| env     | string | 环境信息，test-测试环境, production-正式环境 |\n\n#### 示例\n\n- 先通过平台获取基础数据\n\n```\nconst basInfo = {\n  ext_id: \"abababa\", // 小程序ID\n  uid: \"202020\", // 用户uid\n  pid: \"202011\", // 主播ID\n  game_id: \"1002\", // 品类ID\n  env: \"production\",\n}\n```\n\n- 实例化\n\n```\nconst reporter = new ExtReporter({\n  Debug: true, // 是否开启debug日志，可选\n  OpenReport: true, // 是否开启上报，可选\n  PlatformRequest: ({ logs }) => {\n    // 上报日志数据，必填\n  },\n  CommonInfo: { // 日志公共数据\n    uid: basInfo.uid,\n    pid: basInfo.pid,\n    ext_id: basInfo.ext_id,\n    game_id: basInfo.game_id,\n    env: basInfo.env\n  }\n});\n```\n\n### 开始心跳 - reporter.startHeartBeat(fields);\n\n- 只有一个全局的心跳\n- 默认 60s 一次心跳\n- 心跳用于统计用户在线时长，用户进入即开始心跳即可\n\n#### 参数\n\n| 参数   | 类型   | 必填 | 默认 | 说明           |\n| ------ | ------ | ---- | ---- | -------------- |\n| fields | Object | 否   | --   | 自定义上报数据 |\n\n#### 示例\n\n```\nreporter.startHeartBeat();\n```\n\n### 停止心跳 - reporter.endHeartBeat()\n\n- 停止全局的心跳\n- 用户退出时调用\n\n#### 示例\n\n```\nreporter.endHeartBeat();\n```\n\n### 普通上报 - reporter.reportBusiMetric(info, fields)\n\n- 事件上报\n\n#### 参数\n\n| 参数   | 类型   | 必填 | 默认 | 说明           |\n| ------ | ------ | ---- | ---- | -------------- |\n| info   | Object | 是   | --   | 上报日志信息   |\n| fields | Object | 否   | --   | 自定义日志数据 |\n\n#### 上报日志信息 info\n\n| 参数   | 类型   | 必填 | 默认 | 说明           |\n| ------ | ------ | ---- | ---- | -------------- |\n| info   | Object | 是   | --   | 上报日志信息   |\n| fields | Object | 否   | --   | 自定义日志数据 |\n\n#### 预制事件 LogEvents\n\n- 预制的一些 info 变量\n- 按需上报即可\n\n| 变量                     | 描述                   |\n| ------------------------ | ---------------------- |\n| LogEvents.USER_ACTIVE    | 用户互动               |\n| LogEvents.USER_SEND_GIFT | 用户送礼               |\n| LogEvents.USER_SEND_WORD | 用户发言               |\n| LogEvents.USER_SUBSCRIBE | 用户订阅               |\n| LogEvents.USER_SHARE     | 用户分享               |\n| LogEvents.GAME_CREATE    | 游戏开局，某轮游戏开始 |\n| LogEvents.GAME_FINISH    | 游戏结束，某轮游戏结束 |\n\n#### fields 敏感关键词（传入 key 值不能与之重复）\n\n| 参数        | 类型   | 说明                     |\n| ----------- | ------ | ------------------------ |\n| key         | string | 由 info 传入             |\n| desc        | string | 由 info 传入             |\n| type        | number | 系统默认值               |\n| client_time | number | 日志创建时间戳，系统生成 |\n| ext_id      | string | 由 CommonInfo 传入       |\n| uid         | string | 由 CommonInfo 传入       |\n| pid         | string | 由 CommonInfo 传入       |\n| game_id     | string | 由 CommonInfo 传入       |\n| env         | string | 由 CommonInfo 传入       |\n\n#### 示例\n\n- 自定义上报\n\n```\nextReporter.reportBusiMetric({\n  key: 'ext_diy/my_action'\n  desc: '自定义事件描述'\n}, {\n  data : 'your_data'\n});\n```\n\n- 上报用户交互\n\n```\nreporter.reportBusiMetric(LogEvents.USER_ACTIVE, {\n  act: '啥交互？'\n});\n```\n\n- 上报用户送礼\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_GIFT, {\n  gift_id: 2222,\n  gift_count: 1,\n  gift_amount: 100\n});\n```\n\n- 上报用户发言\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_WORD, {\n  word: '你说啥？'\n});\n```\n\n- 上报订阅主播\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SUBSCRIBE);\n```\n\n- 上报用户分享\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SHARE, {\n  share_type: 1\n});\n```\n\n- 上报开始游戏\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_CREATE);\n```\n\n- 上报游戏结束\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_FINISH);\n```\n","gitHead":"5144f2d7d3ca9e85cfe7c77249b7c8bcdf845ded","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"http://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_0.1.4-beta.0_1626703315633_0.5346629268402394","host":"s3://npm-registry-packages"}},"0.1.6-beta.0":{"name":"@hyext/hyext-reporter","version":"0.1.6-beta.0","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@0.1.6-beta.0","maintainers":[{"name":"mylhyz","email":"mylhyz@gmail.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"}],"dist":{"shasum":"38d1f17e655286307333182556d8822ae2c6513b","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-0.1.6-beta.0.tgz","fileCount":8,"integrity":"sha512-Ql5Ytm23bHtKrxKf0IUXRRC1fVcRTx/v0tYI/umn0X+s+xCDTra5uopEWDjbAL8xNXj0HeUnL3wKpLFeuMGWMg==","signatures":[{"sig":"MEUCIQDQwgwy/tUoGC+bOFBDqXAD4w5tPLu0iQhGfnmoHN4DLAIgeDcSmqiLqV6++hzhMYGe5CuiZNG27E/VYZyfDgIxxXQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108322,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg9YdICRA9TVsSAnZWagAA8G4P/Aivs9FsohLghS0Omulc\nepXf6T48CC6nib5JiwwcjHYM43DaEaScrF/7KSU/93ri2Tp1iE6nl/Fpe+QE\n5b2QIcUGW0RVaT7zN0WVAugOk/g4/CTyINl4xjlXguqbc6fYAH/k6gS5/Dhs\n84NZ7B1JFfzQDDzssAjsEObGnRUkkEXgP3wS1dy8MY8OQBbl4D2sz2RBayXj\n4yvpKSzmO8LZIC/uCKmtbC/PSIbDtoj78faPmCLpfNho+wZjXjBXAMcP7X/T\nAcGBGJvEGsiBgg3e540USnJwK9YKAI58tQWo4ZG2fHLaGj4Tn5AzDkpfHXCk\nNdua4rttbhQuIDZsHP8pfRKL0a5mmsJvsddczQ2MCMjujPKvz50F6wUOjEHS\nCAPJzaBQfN8cx9dFKobCxPtkXuPW1eeYFoecOzAuxLbf6u+rfqR4xbmgRkwo\n2KdDVtaOC9E7heEVmZ/KdN4rL50DnGTfCSvXqKd7LfkS9FIk3bXFtSUw13ph\nm4bcVKbL80UxVtEyauh8WitYX7RFS+myv0H2Tgj7fBp6r7IrhE+lcQcEGu9A\nKXn8DiZCldRNMqmDHAwIDp+RMXtgAjP3qjZVm4pZyfnevIBV0H3eNR+hkpaB\n/HNppxfjLkVECTWkO8lBReTUxFWnxWLtR7kTRm8s3rA5fxspb5WT06vyKZTp\n3Crz\r\n=jMjp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","readme":"## 小程序统一日志上报\n\n- @hyext/hyext-reporter\n- 负责统一小程序日志数据，不做主动上报\n- 提供全局心跳，默认 60 秒心跳一次\n- 日志延迟 2 秒上报，会收集延迟时间内的所有日志；\n\n### 安装\n\n```\nnpm install @hyext/hyext-reporter --registry=https://nexus.huya.com/repository/npm-public/\n```\n\n### 引入\n\n```\nimport { ExtReporter, LogEvents } from '@hyext/hyext-reporter'\n\n```\n\n### 实例化 - new ExtReporter(config)\n\n#### 配置 config\n\n| 参数            | 类型     | 必填 | 默认  | 说明             |\n| --------------- | -------- | ---- | ----- | ---------------- |\n| PlatformRequest | Callback | 是   | --    | 平台定义上报方法 |\n| CommonInfo      | Object   | 是   | --    | 日志公用信息     |\n| OpenReport      | boolean  | 否   | true  | 是否开启上报     |\n| Debug           | boolean  | 否   | false | 是否开启 debug   |\n| ReportDelay     | number   | 否   | 2000  | 延迟上报时差     |\n| HeartbeatFreq   | number   | 否   | 60000 | 心跳频率         |\n| BaseInfo        | Object   | 否   | --    | 日志基础信息     |\n\n#### 上报方法 PlatformRequest\n\n| 回调参数    | 类型   | 说明         |\n| ----------- | ------ | ------------ |\n| params      | Object | 回调参数     |\n| params.logs | Array  | 日志数据数组 |\n\n#### 日志公用信息 CommonInfo\n\n| 参数    | 类型   | 说明                                         |\n| ------- | ------ | -------------------------------------------- |\n| ext_id  | string | 小程序 ID                                    |\n| uid     | string | 用户 ID                                      |\n| pid     | string | 主播 ID                                      |\n| game_id | string | 品类 ID                                      |\n| env     | string | 环境信息，test-测试环境, production-正式环境 |\n\n#### 示例\n\n- 先通过平台获取基础数据\n\n```\nconst basInfo = {\n  ext_id: \"abababa\", // 小程序ID\n  uid: \"202020\", // 用户uid\n  pid: \"202011\", // 主播ID\n  game_id: \"1002\", // 品类ID\n  env: \"production\",\n}\n```\n\n- 实例化\n\n```\nconst reporter = new ExtReporter({\n  Debug: true, // 是否开启debug日志，可选\n  OpenReport: true, // 是否开启上报，可选\n  PlatformRequest: ({ logs }) => {\n    // 上报日志数据，必填\n  },\n  CommonInfo: { // 日志公共数据\n    uid: basInfo.uid,\n    pid: basInfo.pid,\n    ext_id: basInfo.ext_id,\n    game_id: basInfo.game_id,\n    env: basInfo.env\n  }\n});\n```\n\n### 开始心跳 - reporter.startHeartBeat(fields);\n\n- 只有一个全局的心跳\n- 默认 60s 一次心跳\n- 心跳用于统计用户在线时长，用户进入即开始心跳即可\n\n#### 参数\n\n| 参数   | 类型   | 必填 | 默认 | 说明           |\n| ------ | ------ | ---- | ---- | -------------- |\n| fields | Object | 否   | --   | 自定义上报数据 |\n\n#### 示例\n\n```\nreporter.startHeartBeat();\n```\n\n### 停止心跳 - reporter.endHeartBeat()\n\n- 停止全局的心跳\n- 用户退出时调用\n\n#### 示例\n\n```\nreporter.endHeartBeat();\n```\n\n### 普通上报 - reporter.reportBusiMetric(info, fields)\n\n- 事件上报\n\n#### 参数\n\n| 参数   | 类型   | 必填 | 默认 | 说明           |\n| ------ | ------ | ---- | ---- | -------------- |\n| info   | Object | 是   | --   | 上报日志信息   |\n| fields | Object | 否   | --   | 自定义日志数据 |\n\n#### 上报日志信息 info\n\n| 参数   | 类型   | 必填 | 默认 | 说明           |\n| ------ | ------ | ---- | ---- | -------------- |\n| info   | Object | 是   | --   | 上报日志信息   |\n| fields | Object | 否   | --   | 自定义日志数据 |\n\n#### 预制事件 LogEvents\n\n- 预制的一些 info 变量\n- 按需上报即可\n\n| 变量                     | 描述                   |\n| ------------------------ | ---------------------- |\n| LogEvents.USER_ACTIVE    | 用户互动               |\n| LogEvents.USER_SEND_GIFT | 用户送礼               |\n| LogEvents.USER_SEND_WORD | 用户发言               |\n| LogEvents.USER_SUBSCRIBE | 用户订阅               |\n| LogEvents.USER_SHARE     | 用户分享               |\n| LogEvents.GAME_CREATE    | 游戏开局，某轮游戏开始 |\n| LogEvents.GAME_FINISH    | 游戏结束，某轮游戏结束 |\n\n#### fields 敏感关键词（传入 key 值不能与之重复）\n\n| 参数        | 类型   | 说明                     |\n| ----------- | ------ | ------------------------ |\n| key         | string | 由 info 传入             |\n| desc        | string | 由 info 传入             |\n| type        | number | 系统默认值               |\n| client_time | number | 日志创建时间戳，系统生成 |\n| ext_id      | string | 由 CommonInfo 传入       |\n| uid         | string | 由 CommonInfo 传入       |\n| pid         | string | 由 CommonInfo 传入       |\n| game_id     | string | 由 CommonInfo 传入       |\n| env         | string | 由 CommonInfo 传入       |\n\n#### 示例\n\n- 自定义上报\n\n```\nextReporter.reportBusiMetric({\n  key: 'ext_diy/my_action'\n  desc: '自定义事件描述'\n}, {\n  data : 'your_data'\n});\n```\n\n- 上报用户交互\n\n```\nreporter.reportBusiMetric(LogEvents.USER_ACTIVE, {\n  act: '啥交互？'\n});\n```\n\n- 上报用户送礼\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_GIFT, {\n  gift_id: 2222,\n  gift_count: 1,\n  gift_amount: 100\n});\n```\n\n- 上报用户发言\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_WORD, {\n  word: '你说啥？'\n});\n```\n\n- 上报订阅主播\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SUBSCRIBE);\n```\n\n- 上报用户分享\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SHARE, {\n  share_type: 1\n});\n```\n\n- 上报开始游戏\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_CREATE);\n```\n\n- 上报游戏结束\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_FINISH);\n```\n","gitHead":"61b922bbed458528e675879d1ac1ca175441d075","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"http://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_0.1.6-beta.0_1626703688508_0.3613439967216412","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"@hyext/hyext-reporter","version":"1.0.0","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.0.0","maintainers":[{"name":"mylhyz","email":"mylhyz@gmail.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"}],"dist":{"shasum":"186a8be18d3658c4b99149618abe6c966a5b6220","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.0.0.tgz","fileCount":8,"integrity":"sha512-d6O4dyzjUdwPxIGaEzjvnAO9o/UtF0/2ULlCYIXfHOE9qH+ZseypxC23PlfdXizZyCjLJWhMQvyB4VUVARwD+g==","signatures":[{"sig":"MEQCIAh6IM6vppL/sioiUoKMoHcBDTO3/LwS/RpRzDUU79fGAiAiJJjJewpLLZ5t4fG5ZWe1kGnlkNGabBJxy9K+Ch/E0g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108315,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg9YhvCRA9TVsSAnZWagAAlWEP/3oXV1wACZoymewIuduC\n7ea2Ehb7I5paB0cqVUs7e1X013VWaY+LeeT/Tl37P4l0S+nqFmPOay+u12jk\neubLh60vCLGHr0Dd4sxM5XQhNzVtqWCMydLEmOQ2iow4EMfTEFvb0zmuZWmg\n24zycLWEQv23MRAGpNll3SDbZyMJQYGJlL8KhL1h4J7m3LNHN4vT4UIKG+Vv\nWMoealvmaOBg5ETX79x0ly/pW0kRZ5z7myClEoE862dIBzQj9IteZcGumbne\nyBIaqCYVwDIfDgJRhEIJkS3tFJ5vC6bfKNGzbuDcpYzvLdiR2W8tg3FNrqGo\nq4lsqxwl25jzzplwl4JLYNnEi7JauH9x1Ay6pc7dgZQ9KeZ2Tu8vDVAUJaQG\nCtJ3Itr97dC6uXzM/gyOPnOCxa6u+3Ys+23atgx0Zjde8yXI5vJTrbFt7eaH\nZKB7B0/Xid8jtE7coQM73DTYU4kbVD3VFY9mNkemDM9oA59SQryGghXVfz03\nRxHuC/7xSjfAZ/Pd+1/eqjxHXIj4OnMk0IjLgQm4TJ9f6jm/7fRvsMYOOluL\nOXlvy4lTw91af/V9BrBpcFuGrLLfISbL+UjeYE0qzyRyUC5hN7LE8XfpLehW\nr3nQAXI+hLGXWmMuk8fMm9ah/C6mFmsHJOXQR7xIOpcplu+hVv/9sEZQ7SQw\n6cOo\r\n=Ipv4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","gitHead":"14772e76f0f0cc9731e9299927e3aa4014557d3a","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"http://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.0.0_1626703982990_0.4541186990168582","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@hyext/hyext-reporter","version":"1.0.1","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.0.1","maintainers":[{"name":"mylhyz","email":"mylhyz@gmail.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"}],"dist":{"shasum":"a2c1ba75a5b45a76af0e75b61300248261665ce9","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.0.1.tgz","fileCount":8,"integrity":"sha512-vA6MR/IPEQzWyDZPzCdKk57ByPdylR9MXIW5cZookSa1DpbinW8mtGq4Ds21WXhXQgVNFxg5yWG2BSNhE2l5YA==","signatures":[{"sig":"MEUCIAvWr7dvNpuBcu58zYqZPEj9vWFQCUf0aVixMa8MwGSNAiEAgf94Jt0W5PYaDwVZsemceSJC3ltdSW2JQkzGV49y6cg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108258,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg9YkGCRA9TVsSAnZWagAA5BUP/1p3lwZtep5PAdebc2Vq\nrWAKc8f9ygBVaaG45L44Q2D78hMXO1WNVVpZ6WXP/NLyxkLTm5bVf/0NXbI7\nVtTKg9rimM3rNzz5ilmyjM6toZyXHm+8b9pi4p/ZBt2iHNsN1yhJzUk092K1\nYcIWOwCJhyLg1hfgPUSzb96BqkMkYB0ODt/ncY1AMG8xyN5QdExAMb89YkTZ\n/kN5LL686a+rLrH30NDvwvv9MiM0X0JW0cKVuPvONXMN/3QjwEU4AOaNiZX1\nrGyvti+5Q6I2TqCmyB5DqOYm/wjmO0FfVXyf2Neh8X84ttPFAznuWS4R9NSS\nyeJB04JNtmWXkKfVn89PLTIkSOqU2fOlI+FSMwDaiO+xHsHDcywtIEb7PWXz\nv6dM9D/RB0RoXgS1Q+Zaf4bNi9Znopi7OFpPW6ebUB2Ef4RoMHKxHyo0ijTD\nxsGYRXVGNiHF5HerSMdn392/qC7cYTI9Xbf58ixTLhdJGfZ/cmvzbXbowFwA\nBEI08Tx9LWmv7jrZMYxY8cH6SiMj2OGfU1aMdtWIhp+D8HXRwdmD2jCq/CZd\niqhiprx9JkHXbQiMHil1TZhumnoqwcsWLweR42nsZpKEfJk/EOae/i2aTyh4\nRcONJUqSBuVRHXyuDLCPW4tIXVKN4Dz9CD11sTH5RDy4NEJOapcWm166+omS\n44AQ\r\n=9hDy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","gitHead":"4ec26a7a40850fdcedf4207587d36ec9ffbe9f1c","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"http://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.0.1_1626704134569_0.9872979848832968","host":"s3://npm-registry-packages"}},"1.0.2-beta.0":{"name":"@hyext/hyext-reporter","version":"1.0.2-beta.0","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.0.2-beta.0","maintainers":[{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"mylhyz","email":"mylhyz@gmail.com"}],"dist":{"shasum":"4a0bf0dc03fff013c91edc789502d323ba85f570","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.0.2-beta.0.tgz","fileCount":9,"integrity":"sha512-uiHvR22mtcs/dXR5009pWajlM0szDwddlh6D3pMlm184rwhyrHpwddXk9zNP9PYBpPQUQTkVsYwt/T3VtZUw8w==","signatures":[{"sig":"MEQCIBWwjUkXjSW1DvVcM18paEE+aQ8FS4N4UdGHgraFA2zvAiBz4BKvNDqDSNojl9KL+w3as4oIBiS8PD/aUsUi0q483g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":203262,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg9ujWCRA9TVsSAnZWagAA7SAP/jIv9buKimZnDVtoUkH5\nOv+zv73zLXJBOT3cuHH8y6QuiEN6LFA8fQZMuiMUFJZtICj7v9LYCc0LAdGQ\ndGvfq1It2nGtrmOviQNYIPa2ccmUadL8IDk4slBoPZBgexMyXcpFP/zjutDK\nHHST6R8sZMMrHbsz1yCAuX58rbYFKAUwHIFYo3UHKHmGAg8ErJIzNZESSbMv\nELlW3pKbg8pTW/WiNLtsRf2WntlTHWNVwnSlV4NssHdB+gynJM3akxritfDb\nsJNPjVn7mjzHmWvYiW2eyQcIKSm6i4X4n8RLjYYwMtJF9D2Is7Ig4Uo7Z/ed\n6QCF/XV654G5klnXQxb39yrDx45MHMv7A0lV+qX2/8iy+PTE2wZtL+SlAjhW\n+ouYqiTG+XeXjjTTqmuPEXj7vy9BQpGMm5a64I3XyYDTIx5jTFuuZjfy350s\nsDPp950kM7E4tUZ5wY/qIU6csDizhm86cLU7y4O9WXLMmow6YR0r5/Zg/Xr7\nHfhh+fowuiGpqYvF3YCodTfEqQJ6zFaE1d9Z74BkoBI1tMRePLUJh1cFzFtI\nglPwBcm61Ag3dr68zmJRd5rkxGSvO8gbsYXLO5Oe6s9QbOgUZGFDau5gd46w\nbiWomxthP+JcpRfBL0AvC8dehQexw+Fijwy1DrBHrW7DnQUUN3VeLraXu20e\nzMhb\r\n=b2uN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","readme":"## 小程序统一日志上报\n\n- @hyext/hyext-reporter\n- 负责统一小程序日志数据，不做主动上报\n- 提供全局心跳，默认 60 秒心跳一次\n- 日志延迟 2 秒上报，会收集延迟时间内的所有日志；\n\n### 安装\n\n```\nnpm install @hyext/hyext-reporter\n```\n\n### 引入\n\n```\nimport { ExtReporter, LogEvents } from '@hyext/hyext-reporter'\n\n```\n\n### 实例化 - new ExtReporter(config)\n\n#### 配置 config\n\n| 参数                                | 类型     | 必填 | 默认  | 说明             |\n| ----------------------------------- | -------- | ---- | ----- | ---------------- |\n| [PlatformRequest](#PlatformRequest) | Callback | 是   | --    | 平台定义上报方法 |\n| [CommonInfo](#CommonInfo)           | Object   | 是   | --    | 日志公用信息     |\n| OpenReport                          | boolean  | 否   | true  | 是否开启上报     |\n| Debug                               | boolean  | 否   | false | 是否开启 debug   |\n| ReportDelay                         | number   | 否   | 2000  | 延迟上报时差     |\n| HeartbeatFreq                       | number   | 否   | 60000 | 心跳频率         |\n| BaseInfo                            | Object   | 否   | --    | 日志基础信息     |\n\n#### PlatformRequest\n\n- 日志上报方法\n\n| 回调参数    | 类型   | 说明         |\n| ----------- | ------ | ------------ |\n| params      | Object | 回调参数     |\n| params.logs | Array  | 日志数据数组 |\n\n#### CommonInfo\n\n- 日志公共数据\n\n| 参数    | 类型   | 说明                                         |\n| ------- | ------ | -------------------------------------------- |\n| ext_id  | string | 小程序 ID                                    |\n| uid     | string | 用户 ID                                      |\n| pid     | string | 主播 ID                                      |\n| game_id | string | 品类 ID                                      |\n| env     | string | 环境信息，test-测试环境, production-正式环境 |\n\n#### 示例\n\n- 先通过平台获取基础数据\n\n```\nconst basInfo = {\n  ext_id: \"abababa\", // 小程序ID\n  uid: \"202020\", // 用户uid\n  pid: \"202011\", // 主播ID\n  game_id: \"1002\", // 品类ID\n  env: \"production\",\n}\n```\n\n- 实例化\n\n```\nconst reporter = new ExtReporter({\n  Debug: true, // 是否开启debug日志，可选\n  OpenReport: true, // 是否开启上报，可选\n  PlatformRequest: ({ logs }) => {\n    // 上报日志数据，必填\n  },\n  CommonInfo: { // 日志公共数据\n    uid: basInfo.uid,\n    pid: basInfo.pid,\n    ext_id: basInfo.ext_id,\n    game_id: basInfo.game_id,\n    env: basInfo.env\n  }\n});\n```\n\n### 开始心跳 - reporter.startHeartBeat(fields);\n\n- 只有一个全局的心跳\n- 默认 60s 一次心跳\n- 心跳用于统计用户在线时长，用户进入即开始心跳即可\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明           |\n| ----------------- | ------ | ---- | ---- | -------------- |\n| [fields](#fields) | Object | 否   | --   | 自定义上报数据 |\n\n#### 示例\n\n```\nreporter.startHeartBeat();\n```\n\n### 停止心跳 - reporter.endHeartBeat()\n\n- 停止全局的心跳\n- 用户退出时调用\n\n#### 示例\n\n```\nreporter.endHeartBeat();\n```\n\n### 普通上报 - reporter.reportBusiMetric(info, fields)\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明           |\n| ----------------- | ------ | ---- | ---- | -------------- |\n| [info](#info)     | Object | 是   | --   | 上报日志信息   |\n| [fields](#fields) | Object | 否   | --   | 自定义日志数据 |\n\n#### info\n\n- 上报日志信息\n\n| 参数 | 类型   | 必填 | 说明       |\n| ---- | ------ | ---- | ---------- |\n| key  | string | 是   | 业务关键词 |\n| desc | string | 是   | 业务描述   |\n\n#### LogEvents\n\n- 预制事件信息\n- 预制的一些 info 结构的变量\n- 按需上报即可\n\n| 变量                     | 描述                   |\n| ------------------------ | ---------------------- |\n| LogEvents.USER_ACTIVE    | 用户互动               |\n| LogEvents.USER_SEND_GIFT | 用户送礼               |\n| LogEvents.USER_SEND_WORD | 用户发言               |\n| LogEvents.USER_SUBSCRIBE | 用户订阅               |\n| LogEvents.USER_SHARE     | 用户分享               |\n| LogEvents.GAME_CREATE    | 游戏开局，某轮游戏开始 |\n| LogEvents.GAME_FINISH    | 游戏结束，某轮游戏结束 |\n\n#### fields\n\n- 自定义上报数据对象\n- 键值不能与以下值重复\n\n| 键值        | 类型   | 说明                     |\n| ----------- | ------ | ------------------------ |\n| key         | string | 由 info 传入             |\n| desc        | string | 由 info 传入             |\n| type        | number | 系统默认值               |\n| client_time | number | 日志创建时间戳，系统生成 |\n| ext_id      | string | 由 CommonInfo 传入       |\n| uid         | string | 由 CommonInfo 传入       |\n| pid         | string | 由 CommonInfo 传入       |\n| game_id     | string | 由 CommonInfo 传入       |\n| env         | string | 由 CommonInfo 传入       |\n\n#### 示例\n\n- 自定义上报\n\n```\nextReporter.reportBusiMetric({\n  key: 'ext_diy/my_action'\n  desc: '自定义事件描述'\n}, {\n  data : 'your_data'\n});\n```\n\n- 上报用户交互\n\n```\nreporter.reportBusiMetric(LogEvents.USER_ACTIVE, {\n  act: '啥交互？'\n});\n```\n\n- 上报用户送礼\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_GIFT, {\n  gift_id: 2222,\n  gift_count: 1,\n  gift_amount: 100\n});\n```\n\n- 上报用户发言\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_WORD, {\n  word: '你说啥？'\n});\n```\n\n- 上报订阅主播\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SUBSCRIBE);\n```\n\n- 上报用户分享\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SHARE, {\n  share_type: 1\n});\n```\n\n- 上报开始游戏\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_CREATE);\n```\n\n- 上报游戏结束\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_FINISH);\n```\n","gitHead":"61a52551e5120277c49a825842b4556c2a706528","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"http://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.0.2-beta.0_1626794198029_0.06580493070992266","host":"s3://npm-registry-packages"}},"1.0.2-beta.1":{"name":"@hyext/hyext-reporter","version":"1.0.2-beta.1","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.0.2-beta.1","maintainers":[{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"mylhyz","email":"mylhyz@gmail.com"}],"dist":{"shasum":"31b3eaf6989168758b248ac2db706da9fc47b04b","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.0.2-beta.1.tgz","fileCount":9,"integrity":"sha512-TGf5cwTrchBWW591B1Rz6HOLm29Uae7En7djDI0TM6mhNFP5ojHH7GxufBc47ghiGYfds188x6HG9tJ1GBFfrQ==","signatures":[{"sig":"MEUCIALwuwSmtTJXwerZvxhXEHiCyea2P6weh9Y+wQt3ovOQAiEArnrVBoPCP6KZJqZbUUs0EWppcQ+yeFU6k78tERmN50E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":328606,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+TVhCRA9TVsSAnZWagAA/NEP/20DI8W5u5JGR9pWddQE\n4gxc3mx3tJDUuogQBWBIMQJX8cX2q7JoNoAWMgEc0KDLmIOvgiepXrsWrnJp\n1/rRj3OesLFPL477iQvhKBHYFRUrK7ZEDCajVRbam6kw0FQA6GUSwXirNlcS\nhYAfslTLMHcS8MxsMKUiHtbt2Pn5QiHQSAhq8Xbku2+LIJmFRCTc1q8zZ36E\nss8NL9DUlh28blNY45CAx4UvZTokdUNp9G2tgGlsnsUMir/VawQ4znKPFyJG\nASHha0SORfC5Gz9fNdXu+aMSC06f7yePt1Ai0cAZ8bMKw2pf3BWv25ODkzB+\n0rOA4lCf1F/7oibm6jZMA86ASL7ZdU+nvzgI8eGDViKKaV22r/V245+xfi5U\nVQJK3QdXBaxQhnnajvvjqbdRQiqNxbDEkvALcQn8DWmQkrshxNFm0vReaN9i\nCDVqCIm73lYj0buvgi5blk2e9wjMZiN1jFRgU4INyd+IofDs7O/5OMAjoXaM\nu2Z2j74fYwUQ2FrR6YP6QWtSih4T/sXwdXPnPu2xrZ08FET9C6LVMuUbLuNz\nChejnlOsSBR19foXpUtN+6trTNDC89qXEYs0xMiHWjnrWGxxGsPp2n1wFpyI\nWjwcypkBJV9BKNZQMkzGn0RlxImQRkjMpcqytHyphDwQKeMjaDGJyd3IcnMW\nFeNF\r\n=CgBC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","readme":"## 小程序统一日志上报\n\n- @hyext/hyext-reporter\n- 负责统一小程序日志数据，不做主动上报\n- 提供全局心跳，默认 60 秒心跳一次\n- 日志延迟 1 秒上报，会收集延迟时间内的所有日志；\n\n### 安装\n\n```\nnpm install @hyext/hyext-reporter\n```\n\n### 引入\n\n```\nimport { ExtReporter, LogEvents } from '@hyext/hyext-reporter'\n\n```\n\n### 实例化 - new ExtReporter(config)\n\n#### 配置 config\n\n| 参数                                | 类型     | 必填 | 默认  | 说明             |\n| ----------------------------------- | -------- | ---- | ----- | ---------------- |\n| [PlatformRequest](#PlatformRequest) | Callback | 是   | --    | 平台定义上报方法 |\n| [CommonInfo](#CommonInfo)           | Object   | 是   | --    | 日志公用信息     |\n| OpenReport                          | boolean  | 否   | true  | 是否开启上报     |\n| Debug                               | boolean  | 否   | false | 是否开启 debug   |\n| ReportDelay                         | number   | 否   | 2000  | 延迟上报时差     |\n| HeartbeatFreq                       | number   | 否   | 60000 | 心跳频率         |\n| BaseInfo                            | Object   | 否   | --    | 日志基础信息     |\n\n#### PlatformRequest\n\n- 日志上报方法\n\n| 回调参数    | 类型   | 说明         |\n| ----------- | ------ | ------------ |\n| params      | Object | 回调参数     |\n| params.logs | Array  | 日志数据数组 |\n\n#### CommonInfo\n\n- 日志公共数据\n\n| 参数    | 类型   | 说明                                         |\n| ------- | ------ | -------------------------------------------- |\n| ext_id  | string | 小程序 ID                                    |\n| uid     | string | 用户 ID                                      |\n| pid     | string | 主播 ID                                      |\n| game_id | string | 品类 ID                                      |\n| env     | string | 环境信息，test-测试环境, production-正式环境 |\n\n#### 示例\n\n- 先通过平台获取基础数据\n\n```\nconst basInfo = {\n  ext_id: \"abababa\", // 小程序ID\n  uid: \"202020\", // 用户uid\n  pid: \"202011\", // 主播ID\n  game_id: \"1002\", // 品类ID\n  env: \"production\",\n}\n```\n\n- 实例化\n\n```\nconst reporter = new ExtReporter({\n  Debug: true, // 是否开启debug日志，可选\n  OpenReport: true, // 是否开启上报，可选\n  PlatformRequest: ({ logs }) => {\n    // 上报日志数据，必填\n  },\n  CommonInfo: { // 日志公共数据\n    uid: basInfo.uid,\n    pid: basInfo.pid,\n    ext_id: basInfo.ext_id,\n    game_id: basInfo.game_id,\n    env: basInfo.env\n  }\n});\n```\n\n### 开始心跳 - reporter.startHeartBeat(fields);\n\n- 只有一个全局的心跳\n- 默认 60s 一次心跳\n- 心跳用于统计用户在线时长，用户进入即开始心跳即可\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明           |\n| ----------------- | ------ | ---- | ---- | -------------- |\n| [fields](#fields) | Object | 否   | --   | 自定义上报数据 |\n\n#### 示例\n\n```\nreporter.startHeartBeat();\n```\n\n### 停止心跳 - reporter.endHeartBeat()\n\n- 停止全局的心跳\n- 用户退出时调用\n\n#### 示例\n\n```\nreporter.endHeartBeat();\n```\n\n### 普通上报 - reporter.reportBusiMetric(info, fields)\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明           |\n| ----------------- | ------ | ---- | ---- | -------------- |\n| [info](#info)     | Object | 是   | --   | 上报日志信息   |\n| [fields](#fields) | Object | 否   | --   | 自定义日志数据 |\n\n#### info\n\n- 上报日志信息\n\n| 参数 | 类型   | 必填 | 说明       |\n| ---- | ------ | ---- | ---------- |\n| key  | string | 是   | 业务关键词 |\n| desc | string | 是   | 业务描述   |\n\n#### LogEvents\n\n- 预制事件信息\n- 预制的一些 info 结构的变量\n- 按需上报即可\n\n| 变量                     | 描述                   |\n| ------------------------ | ---------------------- |\n| LogEvents.USER_ACTIVE    | 用户互动               |\n| LogEvents.USER_SEND_GIFT | 用户送礼               |\n| LogEvents.USER_SEND_WORD | 用户发言               |\n| LogEvents.USER_SUBSCRIBE | 用户订阅               |\n| LogEvents.USER_SHARE     | 用户分享               |\n| LogEvents.GAME_CREATE    | 游戏开局，某轮游戏开始 |\n| LogEvents.GAME_FINISH    | 游戏结束，某轮游戏结束 |\n\n#### fields\n\n- 自定义上报数据\n- 键值不能与以下取值重复，否则会被覆盖\n\n| 键值        | 类型   | 说明           | 数据源      |\n| ----------- | ------ | -------------- | ----------- |\n| key         | string | 业务关键词     | info        |\n| type        | number | 日志类型       | info/默认值 |\n| client_time | number | 日志创建时间戳 | 系统生成    |\n| ext_id      | string | 小程序 ID      | CommonInfo  |\n| uid         | string | 用户 ID        | CommonInfo  |\n| pid         | string | 主播 ID        | CommonInfo  |\n| game_id     | string | 品类 ID        | CommonInfo  |\n| env         | string | 环境信息       | CommonInfo  |\n\n#### 示例\n\n- 自定义上报\n\n```\nextReporter.reportBusiMetric({\n  key: 'ext_diy/my_action'\n  desc: '自定义事件描述'\n}, {\n  data : 'your_data'\n});\n```\n\n- 上报用户交互\n\n```\nreporter.reportBusiMetric(LogEvents.USER_ACTIVE, {\n  act: '啥交互？'\n});\n```\n\n- 上报用户送礼\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_GIFT, {\n  gift_id: 2222,\n  gift_count: 1,\n  gift_amount: 100\n});\n```\n\n- 上报用户发言\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_WORD, {\n  word: '你说啥？'\n});\n```\n\n- 上报订阅主播\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SUBSCRIBE);\n```\n\n- 上报用户分享\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SHARE, {\n  share_type: 1\n});\n```\n\n- 上报开始游戏\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_CREATE);\n```\n\n- 上报游戏结束\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_FINISH);\n```\n","gitHead":"8df787404be5edef272d1203d4ffcf0c7e429af5","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"http://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.0.2-beta.1_1626944865250_0.11100279046445172","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@hyext/hyext-reporter","version":"1.0.2","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.0.2","maintainers":[{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"mylhyz","email":"mylhyz@gmail.com"}],"dist":{"shasum":"97beac39463465eb7e49d252e9d927add0dbabdb","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.0.2.tgz","fileCount":9,"integrity":"sha512-WKXmCE+bUFkrI039rqYlx14h3QQBrvL1Mxr0CQ+n9feIjP0+kionf96tgPxjGxfSnhXwXeUqL3d+dfny9ErIDQ==","signatures":[{"sig":"MEYCIQCgcNXKgS0+l6tpIe8Q/wIczCkevIw/7bjUZn19DqKv+QIhALnsvmNTZM1X2/gUOJgAR/cNGAfrrercW9zrOfOwhQIb","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":328586,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+UWSCRA9TVsSAnZWagAAb3EP/097PX+sKASbqdVZLRUx\nMSfaZ1oETtF23PgS7CDFsjOaqHTYwm2sbIrf4cxeME7HQD3vA1phI6p2iaF/\n9JVcaJokmuo7EXXkNdUFXFoa31I5xVo7NkDLq+86J2/c5w3DS8pQmLlpqWQk\nKTPvVdZDEoU6/FVjGRax0m0RfBsw6se8tK0p97TiTmJGq/Y4RXzw7ym2SHm9\nPM8qjvbknGWauY5VNiKZWIfWlt4tpUI60RSBL09QVYxX8X+ymvFgpy67e/KW\nNNlVkYlMPsj5qzJoZM726nU+Ey6XNprNfcx32MqHOgthzdtOhFYl/Gx3pYan\nCMZ0zblYeuf+DDydhBL19rGXtb7l9hrgl8Q4hv6B6Z7Yy0orMIr1cTgUIR0B\n2WwYq6eC2jBhDNHTY/pCB4od73F8XfF2HLaZqmhff3+/GdnG3ljwejsXu373\nnnFjnX1l5uUr65WwalylUzLkkqO4sbFQCaTwCRdjIfUT3A5qAgnu2L2Q1qRI\nAmi+SFSFXK2PJZjcQIDqDnMi0Yoj56veivX+3167A+olHggma7dCXE5StFE7\n41FbO6A0M/PXPudMxZ+13bQ85upPUhuD6/zOqJLeP+0l3S2rBB2Cj+krSQ7z\nGUNQVZxdEd2gOt2aaLearzQrxf7VA+5yDgrsIKpOd+RNWhBNy4Mmj/Av+Qlk\nXC0s\r\n=PHUL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","gitHead":"01e06968875b62b67c3dbab3b242fa18d18c6144","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"http://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.0.2_1626949010119_0.06307960713517757","host":"s3://npm-registry-packages"}},"1.0.3-beta.0":{"name":"@hyext/hyext-reporter","version":"1.0.3-beta.0","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.0.3-beta.0","maintainers":[{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"mylhyz","email":"mylhyz@gmail.com"}],"dist":{"shasum":"4e9ac06d9e01a20f5fac3a46629eec0175ea9815","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.0.3-beta.0.tgz","fileCount":9,"integrity":"sha512-TPcZdWCUu34kcDP744srVm5iLQnA2gjV3++394uORnrzH9EN/pxvVbb9UZLGLiI0Evvtu4GTSuOTzJ+xWvcwoA==","signatures":[{"sig":"MEUCIGqGn0aLNHfMMB0LD7DnjXK4XA71Yn/qIvgAullF3mfTAiEA/z7gilRdsowdcooFFtFk1eO/nDCbnDcGk97RvE5rWT4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":330737,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhANplCRA9TVsSAnZWagAAZEAP/i4pxZYsB0iO1jNr6Uz0\nntzjV8I/oFV/CeyHyyyDskMinCr0m9/QMOoYMGjgT5akVS1EFci0kGaPW4fp\nuc3ovzcMRLUCect32QqsfZ99rG8NDSVlT0Es+rd7L52HaoYjG4CnVp8thLnf\ntOwiEtI9Lq+2wosYSnZ9d7DMmnqcS+uRqy97I9ZcO07y3v/3rY+gt+UgdtIa\nazeHY9s2oMYjsD6mFmBspz/XZ8iq4RJreQrVFoqHCyq4H8YNkDX6cqIbskyT\ntF7m+Fm3nFJl0LliKHLILakEHd9cJDAGD1h9Nw0Bqf2HO8bT1w937OeV1Rhi\ndGE+TXRl6fbi0CCe4oj/6LkJYNCrgf2N/84VidRtajdb+etTJ4jEjGL/MEaH\nV834BFLEWZ9aw3NMi1kxE18gAmbvmveCkfxZvKbWYDjNVHE6INEF+y40Ckc1\n9A6s7RErShBx92FtpzsSzpDLLai6901O7qp2VKKtGO/bGtedDmSeBOicnKeP\nl+FstjFDIlzZ5R7g+8WBPQLDFSA6GpMG/oiNVAuq7rW0yx90LJBbGr/X3R5d\njBVRG8ICwb/WPTpzSiNoCWXwLeL7jfICubRIP2pQX5R0RBmEZfDRrFbx2rIX\n57UF6K9wdTQpUMRtSP6jtuzDg2rhXzitDKxo31uXv8fwKY+GPz1yEQt4Z5Mt\nhKgw\r\n=tlps\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","readme":"## 小程序统一日志上报\n\n- @hyext/hyext-reporter\n- 负责统一小程序日志数据，不做主动上报\n- 提供全局心跳，默认 60 秒心跳一次\n- 日志延迟 1 秒上报，每次上报最多 100 条；\n\n### 安装\n\n```\nnpm install @hyext/hyext-reporter\n```\n\n### 引入\n\n```\nimport { ExtReporter, LogEvents } from '@hyext/hyext-reporter'\n\n```\n\n### 实例化 - new ExtReporter(config)\n\n#### 配置 config\n\n| 参数                                | 类型     | 必填 | 默认  | 说明             |\n| ----------------------------------- | -------- | ---- | ----- | ---------------- |\n| [PlatformRequest](#PlatformRequest) | Callback | 是   | --    | 平台定义上报方法 |\n| [CommonInfo](#CommonInfo)           | Object   | 是   | --    | 日志公用信息     |\n| OpenReport                          | boolean  | 否   | true  | 是否开启上报     |\n| Debug                               | boolean  | 否   | false | 是否开启 debug   |\n| ReportDelay                         | number   | 否   | 2000  | 延迟上报时差     |\n| HeartbeatFreq                       | number   | 否   | 60000 | 心跳频率         |\n| BaseInfo                            | Object   | 否   | --    | 日志基础信息     |\n\n#### PlatformRequest\n\n- 日志上报方法\n\n| 回调参数    | 类型   | 说明         |\n| ----------- | ------ | ------------ |\n| params      | Object | 回调参数     |\n| params.logs | Array  | 日志数据数组 |\n\n#### CommonInfo\n\n- 日志公共数据\n\n| 参数    | 类型   | 说明                                         |\n| ------- | ------ | -------------------------------------------- |\n| ext_id  | string | 小程序 ID                                    |\n| uid     | string | 用户 ID                                      |\n| pid     | string | 主播 ID                                      |\n| game_id | string | 品类 ID                                      |\n| env     | string | 环境信息，test-测试环境, production-正式环境 |\n\n#### 示例\n\n- 先通过平台获取基础数据\n\n```\nconst basInfo = {\n  ext_id: \"abababa\", // 小程序ID\n  uid: \"202020\", // 用户uid\n  pid: \"202011\", // 主播ID\n  game_id: \"1002\", // 品类ID\n  env: \"production\",\n}\n```\n\n- 实例化\n\n```\nconst reporter = new ExtReporter({\n  Debug: true, // 是否开启debug日志，可选\n  OpenReport: true, // 是否开启上报，可选\n  PlatformRequest: ({ logs }) => {\n    // 上报日志数据，必填\n  },\n  CommonInfo: { // 日志公共数据\n    uid: basInfo.uid,\n    pid: basInfo.pid,\n    ext_id: basInfo.ext_id,\n    game_id: basInfo.game_id,\n    env: basInfo.env\n  }\n});\n```\n\n### 开始心跳 - reporter.startHeartBeat(fields);\n\n- 只有一个全局的心跳\n- 默认 60s 一次心跳\n- 心跳用于统计用户在线时长，用户进入即开始心跳即可\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明           |\n| ----------------- | ------ | ---- | ---- | -------------- |\n| [fields](#fields) | Object | 否   | --   | 自定义上报数据 |\n\n#### 示例\n\n```\nreporter.startHeartBeat();\n```\n\n### 停止心跳 - reporter.endHeartBeat()\n\n- 停止全局的心跳\n- 用户退出时调用\n\n#### 示例\n\n```\nreporter.endHeartBeat();\n```\n\n### 普通上报 - reporter.reportBusiMetric(info, fields)\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明           |\n| ----------------- | ------ | ---- | ---- | -------------- |\n| [info](#info)     | Object | 是   | --   | 上报日志信息   |\n| [fields](#fields) | Object | 否   | --   | 自定义日志数据 |\n\n#### info\n\n- 上报日志信息\n\n| 参数 | 类型   | 必填 | 说明       |\n| ---- | ------ | ---- | ---------- |\n| key  | string | 是   | 业务关键词 |\n| desc | string | 是   | 业务描述   |\n\n#### LogEvents\n\n- 预制事件信息\n- 预制的一些 info 结构的变量\n- 按需上报即可\n\n| 变量                     | 描述                   |\n| ------------------------ | ---------------------- |\n| LogEvents.USER_ACTIVE    | 用户互动               |\n| LogEvents.USER_SEND_GIFT | 用户送礼               |\n| LogEvents.USER_SEND_WORD | 用户发言               |\n| LogEvents.USER_SUBSCRIBE | 用户订阅               |\n| LogEvents.USER_SHARE     | 用户分享               |\n| LogEvents.GAME_CREATE    | 游戏开局，某轮游戏开始 |\n| LogEvents.GAME_FINISH    | 游戏结束，某轮游戏结束 |\n\n#### fields\n\n- 自定义上报数据\n- 键值不能与以下取值重复，否则会被覆盖\n\n| 键值        | 类型   | 说明           | 数据源      |\n| ----------- | ------ | -------------- | ----------- |\n| key         | string | 业务关键词     | info        |\n| type        | number | 日志类型       | info/默认值 |\n| client_time | number | 日志创建时间戳 | 系统生成    |\n| ext_id      | string | 小程序 ID      | CommonInfo  |\n| uid         | string | 用户 ID        | CommonInfo  |\n| pid         | string | 主播 ID        | CommonInfo  |\n| game_id     | string | 品类 ID        | CommonInfo  |\n| env         | string | 环境信息       | CommonInfo  |\n\n#### 示例\n\n- 自定义上报\n\n```\nextReporter.reportBusiMetric({\n  key: 'ext_diy/my_action'\n  desc: '自定义事件描述'\n}, {\n  data : 'your_data'\n});\n```\n\n- 上报用户交互\n\n```\nreporter.reportBusiMetric(LogEvents.USER_ACTIVE, {\n  act: '啥交互？'\n});\n```\n\n- 上报用户送礼\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_GIFT, {\n  gift_id: 2222,\n  gift_count: 1,\n  gift_amount: 100\n});\n```\n\n- 上报用户发言\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_WORD, {\n  word: '你说啥？'\n});\n```\n\n- 上报订阅主播\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SUBSCRIBE);\n```\n\n- 上报用户分享\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SHARE, {\n  share_type: 1\n});\n```\n\n- 上报开始游戏\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_CREATE);\n```\n\n- 上报游戏结束\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_FINISH);\n```\n","gitHead":"dbeea70f12c471fd45f67962ccece82e350938e9","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"http://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.0.3-beta.0_1627445861729_0.3557721334114976","host":"s3://npm-registry-packages"}},"1.0.5":{"name":"@hyext/hyext-reporter","version":"1.0.5","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.0.5","maintainers":[{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"mylhyz","email":"mylhyz@gmail.com"}],"dist":{"shasum":"21a21c2e8277ecec0167cf64b35ba4bf229bf439","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.0.5.tgz","fileCount":9,"integrity":"sha512-MLjCUY4I5pZzpu0P5UPSYE3TQLEmUsr6Odh73p0X68wB2wezsOJ5yDEDb03B26GnrE5B1tPczmlOiIpvJ5YOHA==","signatures":[{"sig":"MEYCIQDj5EQd5BgGHa0Ie17XhijC2/DugofGAm9xlZ0lL/jE1QIhAKagCAGPIVt927MAg3yDuh9ObJ/u17F2R2xYN6KmKoWl","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":331523,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhAN8bCRA9TVsSAnZWagAAnyoP/2tQOtFPdG5xypfZXmgE\nL6EFbEJsHElkyRsAO6OcTdOIVLbUpDKFYVCmKDxkU/L2vKDQkqxBbtYMURAY\nUKtxct94XHIBJ27pdQ2Ov9tGcsg5LrjWQEWp+ACSxx+5krHNkPPRKuzXZCad\nMqNoTaYmpdXs/yoHyzwvUSJI/zHk5ZhiZn8+DsT6qV+IH2TY8bbZykexMyHd\nFT5/FHisN/Ss1IJgdImD9ZsHhzrJrOGTFHt8gXXrIAVnhBj3ApDdmCGfBFb2\nXU+TEPmgdlToLzQUFERkx3Q+zWj2QKMMFpIoXqabsHxAagAonWYPwN7sONyM\nAZl5QUAoVfGOw4KaP8dEXgYknqnFAfZ3jj/lVOtKo6KkUZbxqGGEISpoYZqg\nSadD95RaaM4xpoWzlD85PyWTphGZxF/SK2WsI/V3LaJk7NVLlrs9eem8hqtM\nofQFUM/VjuWch7zg7iqa7AgvVrBEwge9/NkME56wKVwamZjAh5dOPYiCycjT\n4qfGxl7FmfbalAv4VtL1fSUcXxQn97ensCk4ixucRFyavRGlj/oLXviIAmdX\nhBuTe/BNCZzvsub6hyo+XiCzdlMtEiRYZLNhuCK/FF2VQyYAh+hYmGPfqX9x\nwXYrTAK26JYE/v94LF5aiROjuJnAKPFYCK9nnskaPYLLtrT5qSN6guW3VZ5k\ndSGn\r\n=81w2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","gitHead":"4b170fa3f894a0ac7eacdbd1830dc9483cab938e","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"http://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.0.5_1627447067348_0.46855650710368524","host":"s3://npm-registry-packages"}},"1.0.6":{"name":"@hyext/hyext-reporter","version":"1.0.6","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.0.6","maintainers":[{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"mylhyz","email":"mylhyz@gmail.com"}],"dist":{"shasum":"69a40bb05ce79c8d0f7d363f501095f2e71ab806","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.0.6.tgz","fileCount":9,"integrity":"sha512-E2qltZ0ntv2VD/ax68znC/IFkCBuyU2BFkqQ7fTqUEATduk2WtZFBwm6T3e2cIg6D7ISc4+ZI51iy5S54TmDyA==","signatures":[{"sig":"MEUCIECT/3TpXHi/Xl07+GuAenxJcgAPrBIdGhPy4PLlu7B7AiEAmmxaigfYadG/QJeGK4rke5vmnh4VfYOGgA2bfJYvMYI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":331524,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhASN3CRA9TVsSAnZWagAAmpsP/21xlwzlUvdRONyV0GUl\nA7P6DQVvWjOrCaIRSkUpw4a8cN3Y95mYmNyyd/1ESNsJ9zu/RbD1jzmB2pBn\nB6RiLeg4Iyw0/nb3P9YnegKphw4dHLE7dhRVWCSROyl7Auz9HuaO26Sn/ab5\nMMCX9Eu6029Y6d0eNKd4B3TVXU2KZWSF2ID4N3LrtMr0HNm95ok9ROU9htBV\nsc18Ag78YYmcJ4+K5PxRUS7uGfXrOY6lIXlZhLPJO8KUF+kRC+lmrmBYchJT\nmEvpeV2NXVoAH5x9FaC32FOKtEhKPqhZjYXWnc8de0A/rTWPjSrUSQTpmn1m\nrw80R8SJmDBTQoapotHXOEbyoo6IuS94Lmq656jYoYJUJAVMn2vcbktTc431\nM3wCLvzGIinRCKhzutR281zSPmgltXMtezvgQSOFfyQQ7KCkWlOtMxBEvxij\nGmwvMt7g1kNWtRWNfrfIn9JkiTfa9QHsGbeyNkkfgCfFeO0oZq0Lm1se/wgI\n21N5p/bNRRTN3nKjR3wZLBZcbGX9XgA6FW0knEHrKKKpsFt3G5cc5qy6o6D3\nFc+Wt1Bg0LLWyqNxieo9UiZmaAtTQ4vgqrw8mfajezK9kg8WJ19tDAP3amV2\nGj3wgfWmO4eAjYXCSBuBWc4OZEbjjV30BNlvekiA2mziCzTk6kTq0BFhZQ3f\nljRz\r\n=4fdf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","gitHead":"4667af5d865cba77ef39b97c719e2c1f70246f97","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"http://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.0.6_1627464567471_0.780455784051582","host":"s3://npm-registry-packages"}},"1.0.7-beta.0":{"name":"@hyext/hyext-reporter","version":"1.0.7-beta.0","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.0.7-beta.0","maintainers":[{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"mylhyz","email":"mylhyz@gmail.com"}],"dist":{"shasum":"dead00ab5c60d27bcf20885f7b6d1e72a71285ab","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.0.7-beta.0.tgz","fileCount":9,"integrity":"sha512-/aeOm1dl6VAFHIBpK1GPdLLbfdsUciIT82vo/Y5INHuFDYYslmxl0VUoUPudKLJd803F/3nGgNmiQ5P9OX+nyQ==","signatures":[{"sig":"MEYCIQCoQ30+ucb5e92FnTD8IDbGOg8j57vvj9hs98y8N8PNcQIhAIAoWY7lBovfOB3fTCOwY6Y59UOOHaH+4Q2CWWlnQmXQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":331591,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhAWadCRA9TVsSAnZWagAAodcQAIb9671szXdMmIVkcZ3Y\ngBYcgsKId8Zy1OkrFyAkBfYre8tQ1nlxah/JxYXimw9z9rYFO+W4zGRCPbiN\nCh5uh+Ec+0DnNfdlrh7Qxi5RZPY3jeNmoxHiKyi9G6kXOVKS3oKoD/iZ7ieW\n9vqN/oM541mXK3Xbeib0Q9tBRIC+ggKeDO0prlzC7oDAdWddL3rqw3quPHRv\nUON8AHtSKr4iEyXYudZQE4IW5FN1RBNeLIs81bCFi7wJQ8ABKotGAIkknVYR\no0eUR9ohYNnqabaFst/sxupD2u/MKYTL5OEp5gCLu8n8a7Oapi0dbZz4W3LY\nrB25kdW9/1/RYcf7YiPeuLxrdFxCurDiFFbkBPckEfIogIt1Qv+cGOPBjLpG\nUZl/aIbzoAqlm5bqwS/3MZWGxf7dDAVcTQV5cY7aMWJZrLErdJeJzslrvjg4\nlrmRfQvRx5dKuvKq30jIJsK7l/vQzzonqoxFg9zSx/xeeea8ug8V/JGLv/UA\nznLyBfMRcFTYLuEM8LsPwhvx8/gg56CXhg9ajMKPJ2Z8nbSnwkkuly/UYlDO\nUBXuX67c6ouOdPTtTpUzZ8aD994PJSLTbpTDT36ZMMxRtr1gsxWwsdvptAwB\nGaeUP7R51dHU4sJOFeQ/ulvSHta+yau4fFVcOzD2hPbHWCSVVD4xKwZnQW+7\nid5l\r\n=Oz2N\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","readme":"## 小程序统一日志上报\n\n- @hyext/hyext-reporter\n- 负责统一小程序日志数据，不做主动上报\n- 提供全局心跳，默认 60 秒心跳一次\n- 日志延迟 1 秒上报，每次上报最多 100 条；\n\n### 安装\n\n```\nnpm install @hyext/hyext-reporter\n```\n\n### 引入\n\n```\nimport { ExtReporter, LogEvents } from '@hyext/hyext-reporter'\n\n```\n\n### 实例化 - new ExtReporter(config)\n\n#### 配置 config\n\n| 参数                                | 类型     | 必填 | 默认  | 说明             |\n| ----------------------------------- | -------- | ---- | ----- | ---------------- |\n| [PlatformRequest](#PlatformRequest) | Callback | 是   | --    | 平台定义上报方法 |\n| [CommonInfo](#CommonInfo)           | Object   | 是   | --    | 日志公用信息     |\n| OpenReport                          | boolean  | 否   | true  | 是否开启上报     |\n| Debug                               | boolean  | 否   | false | 是否开启 debug   |\n| ReportDelay                         | number   | 否   | 2000  | 延迟上报时差     |\n| HeartbeatFreq                       | number   | 否   | 60000 | 心跳频率         |\n| BaseInfo                            | Object   | 否   | --    | 日志基础信息     |\n\n#### PlatformRequest\n\n- 日志上报方法\n\n| 回调参数    | 类型   | 说明         |\n| ----------- | ------ | ------------ |\n| params      | Object | 回调参数     |\n| params.logs | Array  | 日志数据数组 |\n\n#### CommonInfo\n\n- 日志公共数据\n\n| 参数    | 类型   | 说明                                         |\n| ------- | ------ | -------------------------------------------- |\n| ext_id  | string | 小程序 ID                                    |\n| uid     | string | 用户 ID                                      |\n| pid     | string | 主播 ID                                      |\n| game_id | string | 品类 ID                                      |\n| env     | string | 环境信息，test-测试环境, production-正式环境 |\n\n#### 示例\n\n- 先通过平台获取基础数据\n\n```\nconst basInfo = {\n  ext_id: \"abababa\", // 小程序ID\n  uid: \"202020\", // 用户uid\n  pid: \"202011\", // 主播ID\n  game_id: \"1002\", // 品类ID\n  env: \"production\",\n}\n```\n\n- 实例化\n\n```\nconst reporter = new ExtReporter({\n  Debug: true, // 是否开启debug日志，可选\n  OpenReport: true, // 是否开启上报，可选\n  PlatformRequest: ({ logs }) => {\n    // 上报日志数据，必填\n  },\n  CommonInfo: { // 日志公共数据\n    uid: basInfo.uid,\n    pid: basInfo.pid,\n    ext_id: basInfo.ext_id,\n    game_id: basInfo.game_id,\n    env: basInfo.env\n  }\n});\n```\n\n### 开始心跳 - reporter.startHeartBeat(fields);\n\n- 只有一个全局的心跳\n- 默认 60s 一次心跳\n- 心跳用于统计用户在线时长，用户进入即开始心跳即可\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明           |\n| ----------------- | ------ | ---- | ---- | -------------- |\n| [fields](#fields) | Object | 否   | --   | 自定义上报数据 |\n\n#### 示例\n\n```\nreporter.startHeartBeat();\n```\n\n### 停止心跳 - reporter.endHeartBeat()\n\n- 停止全局的心跳\n- 用户退出时调用\n\n#### 示例\n\n```\nreporter.endHeartBeat();\n```\n\n### 普通上报 - reporter.reportBusiMetric(info, fields)\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明           |\n| ----------------- | ------ | ---- | ---- | -------------- |\n| [info](#info)     | Object | 是   | --   | 上报日志信息   |\n| [fields](#fields) | Object | 否   | --   | 自定义日志数据 |\n\n#### info\n\n- 上报日志信息\n\n| 参数 | 类型   | 必填 | 说明       |\n| ---- | ------ | ---- | ---------- |\n| key  | string | 是   | 业务关键词 |\n| desc | string | 是   | 业务描述   |\n\n#### LogEvents\n\n- 预制事件信息\n- 预制的一些 info 结构的变量\n- 按需上报即可\n\n| 变量                     | 描述                   |\n| ------------------------ | ---------------------- |\n| LogEvents.USER_ACTIVE    | 用户互动               |\n| LogEvents.USER_SEND_GIFT | 用户送礼               |\n| LogEvents.USER_SEND_WORD | 用户发言               |\n| LogEvents.USER_SUBSCRIBE | 用户订阅               |\n| LogEvents.USER_SHARE     | 用户分享               |\n| LogEvents.GAME_CREATE    | 游戏开局，某轮游戏开始 |\n| LogEvents.GAME_FINISH    | 游戏结束，某轮游戏结束 |\n\n#### fields\n\n- 自定义上报数据\n- 键值不能与以下取值重复，否则会被覆盖\n\n| 键值        | 类型   | 说明           | 数据源      |\n| ----------- | ------ | -------------- | ----------- |\n| key         | string | 业务关键词     | info        |\n| desc        | string | 业务描述       | info        |\n| type        | number | 日志类型       | info/默认值 |\n| client_time | number | 日志创建时间戳 | 系统生成    |\n| ext_id      | string | 小程序 ID      | CommonInfo  |\n| uid         | string | 用户 ID        | CommonInfo  |\n| pid         | string | 主播 ID        | CommonInfo  |\n| game_id     | string | 品类 ID        | CommonInfo  |\n| env         | string | 环境信息       | CommonInfo  |\n\n#### 示例\n\n- 自定义上报\n\n```\nextReporter.reportBusiMetric({\n  key: 'ext_diy/my_action'\n  desc: '自定义事件描述'\n}, {\n  data : 'your_data'\n});\n```\n\n- 上报用户交互\n\n```\nreporter.reportBusiMetric(LogEvents.USER_ACTIVE, {\n  act: '啥交互？'\n});\n```\n\n- 上报用户送礼\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_GIFT, {\n  gift_id: 2222,\n  gift_count: 1,\n  gift_amount: 100\n});\n```\n\n- 上报用户发言\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_WORD, {\n  word: '你说啥？'\n});\n```\n\n- 上报订阅主播\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SUBSCRIBE);\n```\n\n- 上报用户分享\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SHARE, {\n  share_type: 1\n});\n```\n\n- 上报开始游戏\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_CREATE);\n```\n\n- 上报游戏结束\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_FINISH);\n```\n\n### 高级上报 - reporter.report(base, info, fields)\n\n- 非统一日志上报\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明           |\n| ----------------- | ------ | ---- | ---- | -------------- |\n| [base](#base)     | Object | 是   | --   | 基础信息       |\n| [info](#info)     | Object | 否   | --   | 上报日志信息   |\n| [fields](#fields) | Object | 否   | --   | 自定义日志数据 |\n\n#### base\n\n- 对应后统计台业务上报信息\n\n| 参数     | 类型   | 必填 | 说明     |\n| -------- | ------ | ---- | -------- |\n| eid      | string | 是   | 事件 id  |\n| eid_desc | string | 是   | 事件名称 |\n\n#### 示例\n\n```\nreporter.report({\n  eid: 'usr/diy/eid',\n  eid_desc: '非统一上报日志'\n}, {\n  data: '上报数据',\n})\n```\n","gitHead":"fe4b1266bc6296f060f4c5248990adeff2ac9819","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"http://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.0.7-beta.0_1627481756897_0.8435822469604446","host":"s3://npm-registry-packages"}},"1.0.7-beta.1":{"name":"@hyext/hyext-reporter","version":"1.0.7-beta.1","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.0.7-beta.1","maintainers":[{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"mylhyz","email":"mylhyz@gmail.com"}],"dist":{"shasum":"f6a9abcf2a099fea501b7b937bc125635af65025","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.0.7-beta.1.tgz","fileCount":9,"integrity":"sha512-7si+14HQfWjK19WEhgWLJxfj0AhYZ2HNZ6aCjeLcVN+yflKY82TYlcVZ7xDNa5Z2wOcNVd+DVZg+JbA+gF+92A==","signatures":[{"sig":"MEUCIQCWNpO7txIbhr66YbOg1B0oJjuHBZYZ+AYxwb5pf+QPZQIgL8B2hXVSrK2J5K4E5C2K9yPFPSFh2nXCYAnBeMtVJWM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":332811,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhAXChCRA9TVsSAnZWagAAJ7IQAJX/Slmrm0ltrQbjXxuS\nE11/ybThoL1KB/53GQa/nFg7AQ15MIfRLR+BbrTsNMoGW+kkhe9nyHziKBUq\nSHzI26+j5x7IZ6hE5C6JWsSVB8DNRrcAvzEf6sm2sMX6VCMyn/zsdmhl6NKe\noSlJbDbLssxI2Ao+b6yhoyO7iRsWJlPhN9aaHjSarUnQEYpAyw907zcLiiVi\nqA8PvOKG2Z+6W3OC0nMpFU/zaILyXfBYyn2Qjyrty7hcLW0v3PlCAaA9sGNg\nFMjCrmwWljN3RO07Rvc7Lw1h4SJWI+i6WPjtjGBhQamd3ezmYuwrxti1j9Ks\nQ17+olfTFUPMrmqDALtHoC/QSgdb5UB2eqIaWA7Ig6jUSxZmt80+tP6fS2V+\nq3Yqod+qXxLfDxkCwqWz1rfgTH6AwvBl0wR9tVHS/INBOWevBQLX6eS0rSPx\nSAreHV7egrBeNsSV7S6dTQhk0XCsZfzopq64xr8IUYgAWvXjnINANOJrMtq0\nRt/ODAkuFXWE9MPBFPfvl+V5FJB2E4CALBaUEvlAg2uxFiRn9fji3zWxKKb/\no2qpDowKOP/CUI8pUel6RdYxSLMs+zeUHY7tvhzo5R7kxStKlDRYBahlchGZ\nA2TO08M48nnIrnQQwHAg+9dMBRKjvIY/dwzVuxJK0aOr81g+56rCa+IbZrrp\nvg37\r\n=z3De\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","readme":"## 小程序统一日志上报\n\n- @hyext/hyext-reporter\n- 负责统一小程序日志数据，不做主动上报\n- 提供全局心跳，默认 60 秒心跳一次\n- 日志延迟 1 秒上报，每次上报最多 100 条；\n\n### 安装\n\n```\nnpm install @hyext/hyext-reporter\n```\n\n### 引入\n\n```\nimport { ExtReporter, LogEvents } from '@hyext/hyext-reporter'\n\n```\n\n### 实例化 - new ExtReporter(config)\n\n#### 配置 config\n\n| 参数                                | 类型     | 必填 | 默认  | 说明             |\n| ----------------------------------- | -------- | ---- | ----- | ---------------- |\n| [PlatformRequest](#PlatformRequest) | Callback | 是   | --    | 平台定义上报方法 |\n| [CommonInfo](#CommonInfo)           | Object   | 是   | --    | 日志公用信息     |\n| OpenReport                          | boolean  | 否   | true  | 是否开启上报     |\n| Debug                               | boolean  | 否   | false | 是否开启 debug   |\n| ReportDelay                         | number   | 否   | 2000  | 延迟上报时差     |\n| HeartbeatFreq                       | number   | 否   | 60000 | 心跳频率         |\n| BaseInfo                            | Object   | 否   | --    | 日志基础信息     |\n\n#### PlatformRequest\n\n- 日志上报方法\n\n| 回调参数    | 类型   | 说明         |\n| ----------- | ------ | ------------ |\n| params      | Object | 回调参数     |\n| params.logs | Array  | 日志数据数组 |\n\n#### CommonInfo\n\n- 日志公共数据\n\n| 参数    | 类型   | 说明                                         |\n| ------- | ------ | -------------------------------------------- |\n| ext_id  | string | 小程序 ID                                    |\n| uid     | string | 用户 ID                                      |\n| pid     | string | 主播 ID                                      |\n| game_id | string | 品类 ID                                      |\n| env     | string | 环境信息，test-测试环境, production-正式环境 |\n\n#### 示例\n\n- 先通过平台获取基础数据\n\n```\nconst basInfo = {\n  ext_id: \"abababa\", // 小程序ID\n  uid: \"202020\", // 用户uid\n  pid: \"202011\", // 主播ID\n  game_id: \"1002\", // 品类ID\n  env: \"production\",\n}\n```\n\n- 实例化\n\n```\nconst reporter = new ExtReporter({\n  Debug: true, // 是否开启debug日志，可选\n  OpenReport: true, // 是否开启上报，可选\n  PlatformRequest: ({ logs }) => {\n    // 上报日志数据，必填\n  },\n  CommonInfo: { // 日志公共数据\n    uid: basInfo.uid,\n    pid: basInfo.pid,\n    ext_id: basInfo.ext_id,\n    game_id: basInfo.game_id,\n    env: basInfo.env\n  }\n});\n```\n\n### 开始心跳 - reporter.startHeartBeat(fields);\n\n- 只有一个全局的心跳\n- 默认 60s 一次心跳\n- 心跳用于统计用户在线时长，用户进入即开始心跳即可\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明           |\n| ----------------- | ------ | ---- | ---- | -------------- |\n| [fields](#fields) | Object | 否   | --   | 自定义上报数据 |\n\n#### 示例\n\n```\nreporter.startHeartBeat();\n```\n\n### 停止心跳 - reporter.endHeartBeat()\n\n- 停止全局的心跳\n- 用户退出时调用\n\n#### 示例\n\n```\nreporter.endHeartBeat();\n```\n\n### 普通上报 - reporter.reportBusiMetric(info, fields)\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明           |\n| ----------------- | ------ | ---- | ---- | -------------- |\n| [info](#info)     | Object | 是   | --   | 上报日志信息   |\n| [fields](#fields) | Object | 否   | --   | 自定义日志数据 |\n\n#### info\n\n- 上报日志信息\n\n| 参数 | 类型   | 必填 | 说明       |\n| ---- | ------ | ---- | ---------- |\n| key  | string | 是   | 业务关键词 |\n| desc | string | 是   | 业务描述   |\n\n#### LogEvents\n\n- 预制事件信息\n- 预制的一些 info 结构的变量\n- 按需上报即可\n\n| 变量                     | 描述                   |\n| ------------------------ | ---------------------- |\n| LogEvents.USER_ACTIVE    | 用户互动               |\n| LogEvents.USER_SEND_GIFT | 用户送礼               |\n| LogEvents.USER_SEND_WORD | 用户发言               |\n| LogEvents.USER_SUBSCRIBE | 用户订阅               |\n| LogEvents.USER_SHARE     | 用户分享               |\n| LogEvents.GAME_CREATE    | 游戏开局，某轮游戏开始 |\n| LogEvents.GAME_FINISH    | 游戏结束，某轮游戏结束 |\n\n#### fields\n\n- 自定义上报数据\n- 键值不能与以下取值重复，否则会被覆盖\n\n| 键值        | 类型   | 说明           | 数据源      |\n| ----------- | ------ | -------------- | ----------- |\n| key         | string | 业务关键词     | info        |\n| desc        | string | 业务描述       | info        |\n| type        | number | 日志类型       | info/默认值 |\n| client_time | number | 日志创建时间戳 | 系统生成    |\n| ext_id      | string | 小程序 ID      | CommonInfo  |\n| uid         | string | 用户 ID        | CommonInfo  |\n| pid         | string | 主播 ID        | CommonInfo  |\n| game_id     | string | 品类 ID        | CommonInfo  |\n| env         | string | 环境信息       | CommonInfo  |\n\n#### 示例\n\n- 自定义上报\n\n```\nextReporter.reportBusiMetric({\n  key: 'ext_diy/my_action'\n  desc: '自定义事件描述'\n}, {\n  data : 'your_data'\n});\n```\n\n- 上报用户交互\n\n```\nreporter.reportBusiMetric(LogEvents.USER_ACTIVE, {\n  act: '啥交互？'\n});\n```\n\n- 上报用户送礼\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_GIFT, {\n  gift_id: 2222,\n  gift_count: 1,\n  gift_amount: 100\n});\n```\n\n- 上报用户发言\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_WORD, {\n  word: '你说啥？'\n});\n```\n\n- 上报订阅主播\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SUBSCRIBE);\n```\n\n- 上报用户分享\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SHARE, {\n  share_type: 1\n});\n```\n\n- 上报开始游戏\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_CREATE);\n```\n\n- 上报游戏结束\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_FINISH);\n```\n\n### 高级上报 - reporter.report(base, info, fields)\n\n- 非统一日志上报\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明           |\n| ----------------- | ------ | ---- | ---- | -------------- |\n| [base](#base)     | Object | 是   | --   | 基础信息       |\n| [info](#info)     | Object | 否   | --   | 上报日志信息   |\n| [fields](#fields) | Object | 否   | --   | 自定义日志数据 |\n\n#### base\n\n- 对应后统计台业务上报信息\n\n| 参数     | 类型   | 必填 | 说明     |\n| -------- | ------ | ---- | -------- |\n| eid      | string | 是   | 事件 id  |\n| eid_desc | string | 是   | 事件名称 |\n\n#### 示例\n\n```\nreporter.report({\n  eid: 'usr/diy/eid',\n  eid_desc: '非统一上报日志'\n}, {\n  data: '上报数据',\n})\n```\n","gitHead":"506ce7770e006abf46f262adcf0004d1f331d91d","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"http://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.0.7-beta.1_1627484321540_0.03420584406881799","host":"s3://npm-registry-packages"}},"1.0.7":{"name":"@hyext/hyext-reporter","version":"1.0.7","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.0.7","maintainers":[{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"mylhyz","email":"mylhyz@gmail.com"}],"dist":{"shasum":"e68cd15344d8aebe6eec1db3971d93f25ea6c48d","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.0.7.tgz","fileCount":9,"integrity":"sha512-JpdhlMLOIpdP3P8zmHg+HbdeoLFrvMm61tnM6Y48R3ZZecRXBl46gO1QyXLPyS7cBPyzC8NEVNtivgWND/8vYA==","signatures":[{"sig":"MEQCIAi4E4WMTzGLzX+CVqhCZMwwxpPOU6n7hP91hHPw8mqjAiAbx27cOQPLtePfbNM6voPs0QwAr3Nku+4MMcHZKAFx8w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":332966,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhAXZRCRA9TVsSAnZWagAAhLsP/RHhV13zpD+1ISZituui\nK+OLnwDIlb17EmU+lH13ZF1mp0F75mzQwG/a+k3kWTGFM+pXHnCqLdeYCqov\n4m0YRmxxoBxQ3sPIzU7Kf5ehMpFE7ftKQj6YvYfER9mQuBZ0G8hC2ieSi7Sw\nkucLil+6ex8gv29DcL6NuYeshXn0hL0PpYIn/h90uzOQw5xZC/tmhJOJZe5S\nS98wGaSGUDCD317MmzMH+MQ153SDManM7bnIIVUmXAFzW9XVVvoGnS9LLI5s\nCEcUm5E2nRWl2SQfuPLkZk2cxIMALmd9x9g71U8uUA5K6g/QtdmKrcs+nU4m\nmw/wTg7I4xDwmO6+nY34cLC141CYpr9XMlQfKryQ/5F+mjYFli1R54hZK9ci\n0/DltGNKVzykZLKLQ3LE/On71fo2dVX36IaoW1GfzpfcyRdzkB9sycGqdme7\nywpYjk3tyq7bovDlOjNTHy167JrBs4P2GR3H0uZHf6CHNRt7sL8G0Dqxq+lj\nii3KYxdLUcspzGnGYw3WH3X+BiR6G+1589et9hntxN7fal0do8hQgzBNRhO5\n204/1oBj2sI/6K0WOrcFPjm2nTrITjuP9FrFjGfPbjdidhvhHafyQWdENMHT\n4lq/V/7Djueug2L16PN/wheU5pNurRwN7n6nz/42JdbrPff0CfJT5oW0yqRr\nfsYb\r\n=BG5i\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","gitHead":"584aeb7cf421eb90536b036251156a0ec985c1c7","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"http://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.0.7_1627485776977_0.7488150179343038","host":"s3://npm-registry-packages"}},"1.0.9":{"name":"@hyext/hyext-reporter","version":"1.0.9","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.0.9","maintainers":[{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"mylhyz","email":"mylhyz@gmail.com"}],"dist":{"shasum":"b3a9e5b672c3ee8c36f16e44f734cd8ac257bfc9","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.0.9.tgz","fileCount":9,"integrity":"sha512-zJuKj18Ps2YrWKsTI76XtG/7O8ag7JtYk52VaSX3VUYmGM8ZJALGjGOenZM8jTDDsOckYX6xTnBSBiAHj42X3w==","signatures":[{"sig":"MEQCIAcDzKjqtsvykntRq3eRlAreMVLd0YS3BLsaWP8LfdeYAiAt/NwyEZmv4egjz91oLG6tLFk0EqmX/+CH/5dn64CkEQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":331889,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhAitfCRA9TVsSAnZWagAAvpUQAIxIjdIai+xOrxZiPkGs\nsqJ4WkwvXDqB2hwM709n6uulF5PsWzpeu1tNjetAqAWYVeTnS/g43dvitg9g\naThxINBb1V9Hhzs3BGcAIWrsMFe4+oLDP19vX0YGlIL1HW3pDrPp3oxQK3wq\nMIfaGuG2V3259BTE3cetu3517yGTV6Gh2DteCtV3RSL09LDLHcWIgOjC6XgL\nqQO24ic4wNHHPjrNwPBOI8a5RJfHMR+O+D9IpXh3jaY6OX8+2U5htVAiOi5z\n3qrCLI7XdUmjyIiJpq/ZxPZpRnHrzUmGGgmbbLRHz+oBb3Iu6CeXW9n4zi4F\nMGAA49Lmz2Ot3rLCJzumB8Ru/OQG+zVeDKAyWfXop8X9aZUiA3mTAhfV/AaY\nNWrb6ltYRIKnyuJjLhz3qNUQBEkhIMEldtPsF/sOWPIKGYNZz8laDNzOvV5d\naPhJXKR0xfDWJ1isu+vrPuj2fVBq6RU9iPxC6cEX4txSwTqWRIiJS/CMvWLc\n1P03qRF9KbF4kuGUXgS8b4Q5cybcXklMWd9MpCqlhbilshHTOEwZfMcfWx1C\ntqVBKrVSCRB9tVMgZF5P83tPxASavL/wZmMPW8uNX5kPqt/k+7JuNBkO1Q5O\no/XGgy74qmKUGEYFzV3aESX1D9Wl2tHnmaQ7YhIoDS9ICuRARrJ45J29+JEs\n6OVr\r\n=O+Fw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","gitHead":"b93de036d56b10718438e07c37fa635948b504be","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"http://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.0.9_1627532127404_0.8574594421713915","host":"s3://npm-registry-packages"}},"1.0.10-beta.0":{"name":"@hyext/hyext-reporter","version":"1.0.10-beta.0","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.0.10-beta.0","maintainers":[{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"mylhyz","email":"mylhyz@gmail.com"}],"dist":{"shasum":"0391fb186532792c8dd833e3c464f404d81c6dd9","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.0.10-beta.0.tgz","fileCount":9,"integrity":"sha512-zMM4Z7VP7uQKebXz15zcHc+aNXttea5y+4nhB1fN4N+L48jsiTmBf+PIctmlF+R/1eev9boM7anldnmu6KZCAQ==","signatures":[{"sig":"MEYCIQD2MMdAVQOBbBnQNyFvEnwHcyJL21ttu3ABrAgQBgTzigIhAMUU+iM6Gb39cBDwsxS9e3dvepDZsWKsBouNKz+i3i8b","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":332334,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhC+FJCRA9TVsSAnZWagAAgUYQAJio9rXgVcCPlZwCAWOC\n2rwdrelgufe5wNWV5/8dQbPDxB9HC/S3oUx2m/R9UjCPteFLtstSSapYtAO1\nDHK1VG8uzko6W3WEoYcGpb5zh0uyCeCB8CALkSugOi/o+Q9DCVOfXb02i6Qp\nTIPQNcZ5by+zyAfmLbOTg/LK0SHFGLaP/kpeo1ONZERNmYBCWNVKyqE0M5S9\nH75psj/EdlRSjoHmuC+vkNab429B7ylGreiE2uUbyioBj1a4dLnIlz3U3uaB\nqiZBH1Hkb58oPnEwycKOmZsA2I9O8sp8HdPDmX1m6awA9cdpHkmUzSvM3tjB\ntgF0JnDTUe3dH2PzACCiU9sP4JZUaU66GwkO0TyNk8uysa9X6qV0KV7ZI5kX\nDX0fLwxDXZXLxxn0WxykptY2LwPOT51YUn3Gy8NJ/6S5D1E0icdpAPXmaumL\nK3u5WN1pGLi0pxdUT/3Za/nlECpBUIEPLX6GEMmvWnFHqBRBjoxX6geZl+BH\nSUjq2mDH4WjU6sU/L6vameibex7UwIzKVWz47Odhr22AX2sx+tlrBiDSOLFb\nsPW+lXa76AOA9nG4FJXmSUQvPmb2WhcgAIQ23hyLAkDMX5Dy1AZMxbwKXgxs\nP8612HxLcw6K0fvIZ9KLlK+cmnvlRm0Cryg0nCleHaR7dOOQQCgQIcLQxkjk\nVcU2\r\n=31d4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","readme":"## 小程序统一日志上报\n\n- @hyext/hyext-reporter\n- 负责统一小程序日志数据，不做主动上报\n- 提供全局心跳，默认 60 秒心跳一次\n- 日志延迟 500ms 上报，每次上报最多 100 条；\n\n### 安装\n\n```\nnpm install @hyext/hyext-reporter\n```\n\n### 引入\n\n```\nimport { ExtReporter, LogEvents } from '@hyext/hyext-reporter'\n```\n\n### 实例化 - new ExtReporter([config](#config))\n\n#### config\n\n- 实例化配置\n\n| 参数                                | 类型     | 必填 | 默认  | 说明             |\n| ----------------------------------- | -------- | ---- | ----- | ---------------- |\n| [PlatformRequest](#PlatformRequest) | Callback | 是   | --    | 平台定义上报方法 |\n| [CommonInfo](#CommonInfo)           | Object   | 是   | --    | 日志公用信息     |\n| OpenReport                          | boolean  | 否   | true  | 是否开启上报     |\n| Debug                               | boolean  | 否   | false | 是否开启 debug   |\n| ReportDelay                         | number   | 否   | 2000  | 延迟上报时差     |\n| HeartbeatFreq                       | number   | 否   | 60000 | 心跳频率         |\n\n#### PlatformRequest\n\n> ([params](#params)) => Promise\\<void>\n\n- 日志上报方法\n\n#### params\n\n- 日志上报回调参数\n\n| 属性 | 类型          | 说明         |\n| ---- | ------------- | ------------ |\n| logs | [log](#log)[] | 上报日志数组 |\n\n#### log\n\n- 上报日志信息\n\n| 属性     | 类型   | 说明     |\n| -------- | ------ | -------- |\n| eid      | string | 事件 id  |\n| eid_desc | string | 事件名称 |\n| prop     | Object | 上报数据 |\n\n#### CommonInfo\n\n- 日志公共数据，每条日志的基础信息，可覆盖\n\n| 参数        | 类型   | 必填 | 说明      |\n| ----------- | ------ | ---- | --------- |\n| ext_id      | string | 是   | 小程序 ID |\n| uid         | string | 是   | 用户 ID   |\n| pid         | string | 是   | 主播 ID   |\n| game_id     | string | 是   | 品类 ID   |\n| [env](#env) | string | 是   | 环境信息  |\n\n#### env\n\n- 环境信息\n\n| 取值    | 说明     |\n| ------- | -------- |\n| unknown | 未知环境 |\n| online  | 正式环境 |\n| test    | 测试环境 |\n| dev     | 开发环境 |\n\n#### 示例\n\n- 先通过平台获取基础数据\n\n```\nconst basInfo = {\n  ext_id: \"abababa\", // 小程序ID\n  uid: \"202020\", // 用户uid\n  pid: \"202011\", // 主播ID\n  game_id: \"1002\", // 品类ID\n  env: \"online\",\n}\n```\n\n- 实例化\n\n```\nconst reporter = new ExtReporter({\n  Debug: true, // 是否开启debug日志，可选\n  OpenReport: true, // 是否开启上报，可选\n  PlatformRequest: ({ logs }) => {\n    // 上报日志数据，必填\n    console.log(\"report logs\": logs);\n  },\n  CommonInfo: { // 日志公共数据\n    uid: basInfo.uid,\n    pid: basInfo.pid,\n    ext_id: basInfo.ext_id,\n    game_id: basInfo.game_id,\n    env: basInfo.env\n  }\n});\n```\n\n### 开始心跳 - reporter.startHeartBeat(fields);\n\n- 只有一个全局的心跳\n- 默认 60s 一次心跳\n- 心跳用于统计用户在线时长，用户进入即开始心跳即可\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明           |\n| ----------------- | ------ | ---- | ---- | -------------- |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据 |\n\n#### 示例\n\n```\nreporter.startHeartBeat();\n```\n\n### 停止心跳 - reporter.endHeartBeat()\n\n- 停止全局的心跳\n- 用户退出时调用\n\n#### 示例\n\n```\nreporter.endHeartBeat();\n```\n\n### 普通上报 - reporter.reportBusiMetric(info, fields)\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明                         |\n| ----------------- | ------ | ---- | ---- | ---------------------------- |\n| [info](#info)     | Object | 是   | --   | 日志描述，不会被 fields 覆盖 |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据               |\n\n#### info\n\n- 日志描述信息，不会被 fields 覆盖\n- 系统预制了一些日志描述信息 [LogEvents](#LogEvents) 方便使用\n- 也可定义自己日志描述信息\n\n| 参数 | 类型   | 必填 | 说明       |\n| ---- | ------ | ---- | ---------- |\n| key  | string | 是   | 业务关键词 |\n| desc | string | 是   | 业务描述   |\n\n#### LogEvents\n\n- 预制日志描述信息\n- 均为与 info 同构变量\n- 按需上报即可\n\n| 变量                     | 描述                   |\n| ------------------------ | ---------------------- |\n| LogEvents.USER_ACTIVE    | 用户互动               |\n| LogEvents.USER_SEND_GIFT | 用户送礼               |\n| LogEvents.USER_SEND_WORD | 用户发言               |\n| LogEvents.USER_SUBSCRIBE | 用户订阅               |\n| LogEvents.USER_SHARE     | 用户分享               |\n| LogEvents.GAME_CREATE    | 游戏开局，某轮游戏开始 |\n| LogEvents.GAME_FINISH    | 游戏结束，某轮游戏结束 |\n\n#### fields\n\n- 自定义上报数据\n- 键值不能与以下取值重复，否则会被覆盖\n\n| 敏感键值    | 类型   | 说明           | 数据源      |\n| ----------- | ------ | -------------- | ----------- |\n| key         | string | 业务关键词     | info        |\n| desc        | string | 业务描述       | info        |\n| type        | number | 日志类型       | info/默认值 |\n| client_time | number | 日志创建时间戳 | 系统生成    |\n\n#### 示例\n\n- 自定义日志信息 info 的上报\n\n```\nextReporter.reportBusiMetric({\n  key: 'ext_diy/my_action'\n  desc: '自定义事件描述'\n}, {\n  data : 'your_data'\n});\n```\n\n- 上报用户交互\n\n```\nreporter.reportBusiMetric(LogEvents.USER_ACTIVE, {\n  act: '啥交互？'\n});\n```\n\n- 上报用户送礼\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_GIFT, {\n  gift_id: 2222,\n  gift_count: 1,\n  gift_amount: 100\n});\n```\n\n- 上报用户发言\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_WORD, {\n  word: '你说啥？'\n});\n```\n\n- 上报订阅主播\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SUBSCRIBE);\n```\n\n- 上报用户分享\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SHARE, {\n  share_type: 1\n});\n```\n\n- 上报开始游戏\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_CREATE);\n```\n\n- 上报游戏结束\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_FINISH);\n```\n\n### 非统一日志上报 - reporter.report(base, info, fields)\n\n- 非统一日志上报，特殊情况下使用\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明                       |\n| ----------------- | ------ | ---- | ---- | -------------------------- |\n| [base](#base)     | Object | 是   | --   | 日志业务信息               |\n| [info](#info)     | Object | 否   | --   | 日志描述，不被 fields 覆盖 |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据             |\n\n#### base\n\n- 对应后统计台业务上报信息\n\n| 参数     | 类型   | 必填 | 说明     |\n| -------- | ------ | ---- | -------- |\n| eid      | string | 是   | 事件 id  |\n| eid_desc | string | 是   | 事件名称 |\n\n#### 示例\n\n```\nreporter.report({\n  eid: 'usr/diy/eid',\n  eid_desc: '非统一上报日志'\n}, {\n  type: '固定信息'\n}, {\n  data: '上报数据',\n})\n```\n","gitHead":"82d0ed7e3ce38e5f133621e0291a5939cb026b41","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"http://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.0.10-beta.0_1628168521134_0.18065434768679878","host":"s3://npm-registry-packages"}},"1.0.10":{"name":"@hyext/hyext-reporter","version":"1.0.10","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.0.10","maintainers":[{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"mylhyz","email":"mylhyz@gmail.com"}],"dist":{"shasum":"8a581c469afe75f36494d6ec249f0d37298a198c","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.0.10.tgz","fileCount":9,"integrity":"sha512-q5Pmxdr31XQ73mt5OyjUZX7qIfQS0GGniBHTCTqKxeH70Liy936sJQI/VhsXDyN3/QbJWwseSM4uj7YoxJ+Euw==","signatures":[{"sig":"MEYCIQD5+anHUBiBZ1GntVf4F8IzlxHkzBia/UlcMJtrZL8K0AIhAMijzuVhW/VG/R1WfIUlGJ+ZHFssiLPEc1bbaQLGp/Uw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":332851,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhC+j0CRA9TVsSAnZWagAA/0AP/28OHZtaxE4pJtSzK7kZ\n59x1i0+sjHQxu8MIptvm45PnrAsMhOdL9uPg6uiBXgsxpDGmCZDrOLU9yPRR\nS5NDBiupork9VwhndbhikgUASOv2WSA9L313inLNU45JJeFY99hYT2ncbKTY\nAsP91aTSQ+qcL+iUTZ0sh9eI/xniuq/lnV3N91AYKSY0AZ5XRKqj5d0MWGPT\nLQHs6sl6o2OqKqr/zx6TK2Bu2kO/MuDTE99FD5aCV67jY/o8Z4IdoVF/1QZw\nJUYFBPjxkSNLWWmpYf9Fvr1dAE90YJJ1Rfhv5US4chDgPPkh2ZRWEzmyFUqf\nkRY3T3HvFruGRdqImvwqdWr2DEeW4/K5UNpwsQWwZOu33m/WLJZCRfQ5svf/\nLUEUk93urWHV4Cqw3UsiQLCv2yTVatzeBGeZGuvPfN7ehKACE88hrnFkaHFB\nYkN4fGZqhT6XIq67Fx2VmgUuv/H384Dz+nZsHZueOy7L6zO62rMdYP6uqkWG\ngvK3qss/amjyPz7aGqorZ3uVqPzAC2kop1B18wnABWV4XL6gc8mDMoH+E5+b\niniZ+BM8sEdNRnxRDjnqd6IXkm37BNk6+lZc534H4V0mg9hQLlnzD4tK5och\n11BfaUCixxgqhmvpI73b8cxi57UQOFpMjZYMS8uychXQ+b8VjOscbaZYbv8/\nEXWu\r\n=ljtR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","gitHead":"7c5c1353c2d4a1d2fdca16a0b93569d7cee05b32","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"http://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.0.10_1628170484253_0.9750752759375623","host":"s3://npm-registry-packages"}},"1.0.11-beta.0":{"name":"@hyext/hyext-reporter","version":"1.0.11-beta.0","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.0.11-beta.0","maintainers":[{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"mylhyz","email":"mylhyz@gmail.com"}],"dist":{"shasum":"6af1ffad3fe5533f58c82c0adececcb263c2f7c6","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.0.11-beta.0.tgz","fileCount":10,"integrity":"sha512-Li5u3UeUQocSCOIaHtikmc++y+MQ7DnRwZgga8MW8MaIQSqrrqzQ2dDRnpu09sldTc+CiT8QuXQ9zQYvGcdQGA==","signatures":[{"sig":"MEQCIEoZNnbduxSGvUlwJhVi57cCPtLVJoTjxHDGKeWxzIP2AiAnCrIEDtvrWt1NFJeDt+6eMXsFc2dAKOkfyZMYZcds8g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":341457,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhDNZbCRA9TVsSAnZWagAABpgP+QDhAOGwH/yArGuu/RQ/\nuNL2g/NpFzBlPLvuEbBRWz+yaEnRCxj2fNXU4RLPbACdFWfoINGBiJPXLRzA\nCNrXlNzou1/zxZS9DDLo4YxcBk7isaHSFTBxTC7QmgLrjvBdOLAANoPjkrCS\n/RQi4TcBA7Oj0TkmKkdt1/QObISEtIAG2IMNNJ8U7ur1hM0+pjWxB4shJWD5\n2N4NOEjEi2b2uwy5UZ5CQ2XFN8OQkME6WXSUnI8am3DisbnPE81rT/SFINpP\nYsAkt0D4TfD/khBihr5axry1bz4PQbEos7+7LA/YqZ8IQ1w6RMjqwc7BnNUg\nPJ4xYNQage/0w+Muu+4Yh/TwjxcslRvV8IT5KU+ZUGmxmARE72x372zC8+1s\nniClDF6QZVDJpFA/hy+MixvongWPOmdOpnKqKlE3gHFGlcXLWcorNRuv4Mzv\n+cD/9tQlMrDQ+PNR7WwPF6OOgVt68wD9xM6sHq/CRWSpyq3BeuuwMgSh7xY2\nEBwvGNP0bSOd+fdftMyomaOagvEe2FPf248sJlLhkpG5TIBILf0dXCnf/qak\nvEL/x1LZxWqDDpOsKMOQYQeeF1oaNvHcMqU8szzGYX2kCFT/BvVBpSOg64Z9\nNw21shyQaXWgHyD8s9GQA92uaShSCJpftT9kqOjEmkQdA2o4S6+mhDdPIi8n\nidsA\r\n=vQP/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","readme":"## 小程序统一日志上报\n\n- @hyext/hyext-reporter\n- 负责统一小程序日志数据，不做主动上报\n- 提供全局心跳，默认 60 秒心跳一次\n- 日志延迟 500ms 上报，每次上报最多 100 条；\n\n### 安装\n\n```\nnpm install @hyext/hyext-reporter\n```\n\n### 引入\n\n```\nimport { ExtReporter, LogEvents } from '@hyext/hyext-reporter'\n```\n\n### 实例化 - new ExtReporter([config](#config))\n\n#### config\n\n- 实例化配置\n\n| 参数                                | 类型     | 必填 | 默认  | 说明                       |\n| ----------------------------------- | -------- | ---- | ----- | -------------------------- |\n| [PlatformRequest](#PlatformRequest) | Callback | 是   | --    | 平台定义上报方法           |\n| [CommonInfo](#CommonInfo)           | Object   | 是   | --    | 日志公用信息               |\n| OpenReport                          | boolean  | 否   | true  | 是否开启上报               |\n| Debug                               | boolean  | 否   | false | 是否开启 debug             |\n| ReportDelay                         | number   | 否   | 500   | 延迟上报时差，0 不延迟     |\n| ReportSizeLimit                     | number   | 否   | 25    | 每次上报大小上限，0 不限制 |\n| HeartbeatFreq                       | number   | 否   | 60000 | 心跳频率                   |\n\n#### PlatformRequest\n\n> ([params](#params)) => Promise\\<void>\n\n- 日志上报方法\n\n#### params\n\n- 日志上报回调参数\n\n| 属性 | 类型          | 说明         |\n| ---- | ------------- | ------------ |\n| logs | [log](#log)[] | 上报日志数组 |\n\n#### log\n\n- 上报日志信息\n\n| 属性     | 类型   | 说明     |\n| -------- | ------ | -------- |\n| eid      | string | 事件 id  |\n| eid_desc | string | 事件名称 |\n| prop     | Object | 上报数据 |\n\n#### CommonInfo\n\n- 日志公共数据，每条日志的基础信息，可覆盖\n\n| 参数        | 类型   | 必填 | 说明      |\n| ----------- | ------ | ---- | --------- |\n| ext_id      | string | 是   | 小程序 ID |\n| uid         | string | 是   | 用户 ID   |\n| pid         | string | 是   | 主播 ID   |\n| game_id     | string | 是   | 品类 ID   |\n| [env](#env) | string | 是   | 环境信息  |\n\n#### env\n\n- 环境信息\n\n| 取值    | 说明     |\n| ------- | -------- |\n| unknown | 未知环境 |\n| online  | 正式环境 |\n| test    | 测试环境 |\n| dev     | 开发环境 |\n\n#### 示例\n\n- 先通过平台获取基础数据\n\n```\nconst basInfo = {\n  ext_id: \"abababa\", // 小程序ID\n  uid: \"202020\", // 用户uid\n  pid: \"202011\", // 主播ID\n  game_id: \"1002\", // 品类ID\n  env: \"online\",\n}\n```\n\n- 实例化\n\n```\nconst reporter = new ExtReporter({\n  Debug: true, // 是否开启debug日志，可选\n  OpenReport: true, // 是否开启上报，可选\n  PlatformRequest: ({ logs }) => {\n    // 上报日志数据，必填\n    console.log(\"report logs\": logs);\n  },\n  CommonInfo: { // 日志公共数据\n    uid: basInfo.uid,\n    pid: basInfo.pid,\n    ext_id: basInfo.ext_id,\n    game_id: basInfo.game_id,\n    env: basInfo.env\n  }\n});\n```\n\n### 开始心跳 - reporter.startHeartBeat(fields);\n\n- 只有一个全局的心跳\n- 默认 60s 一次心跳\n- 心跳用于统计用户在线时长，用户进入即开始心跳即可\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明           |\n| ----------------- | ------ | ---- | ---- | -------------- |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据 |\n\n#### 示例\n\n```\nreporter.startHeartBeat();\n```\n\n### 停止心跳 - reporter.endHeartBeat()\n\n- 停止全局的心跳\n- 用户退出时调用\n\n#### 示例\n\n```\nreporter.endHeartBeat();\n```\n\n### 普通上报 - reporter.reportBusiMetric(info, fields)\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明                         |\n| ----------------- | ------ | ---- | ---- | ---------------------------- |\n| [info](#info)     | Object | 是   | --   | 日志描述，不会被 fields 覆盖 |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据               |\n\n#### info\n\n- 日志描述信息，不会被 fields 覆盖\n- 系统预制了一些日志描述信息 [LogEvents](#LogEvents) 方便使用\n- 也可定义自己日志描述信息\n\n| 参数 | 类型   | 必填 | 说明       |\n| ---- | ------ | ---- | ---------- |\n| key  | string | 是   | 业务关键词 |\n| desc | string | 是   | 业务描述   |\n\n#### LogEvents\n\n- 预制日志描述信息\n- 均为与 info 同构变量\n- 按需上报即可\n\n| 变量                     | 描述                   |\n| ------------------------ | ---------------------- |\n| LogEvents.USER_ACTIVE    | 用户互动               |\n| LogEvents.USER_SEND_GIFT | 用户送礼               |\n| LogEvents.USER_SEND_WORD | 用户发言               |\n| LogEvents.USER_SUBSCRIBE | 用户订阅               |\n| LogEvents.USER_SHARE     | 用户分享               |\n| LogEvents.GAME_CREATE    | 游戏开局，某轮游戏开始 |\n| LogEvents.GAME_FINISH    | 游戏结束，某轮游戏结束 |\n\n#### fields\n\n- 自定义上报数据\n- 键值不能与以下取值重复，否则会被覆盖\n\n| 敏感键值    | 类型   | 说明           | 数据源      |\n| ----------- | ------ | -------------- | ----------- |\n| key         | string | 业务关键词     | info        |\n| desc        | string | 业务描述       | info        |\n| type        | number | 日志类型       | info/默认值 |\n| client_time | number | 日志创建时间戳 | 系统生成    |\n\n#### 示例\n\n- 自定义日志信息 info 的上报\n\n```\nextReporter.reportBusiMetric({\n  key: 'ext_diy/my_action'\n  desc: '自定义事件描述'\n}, {\n  data : 'your_data'\n});\n```\n\n- 上报用户交互\n\n```\nreporter.reportBusiMetric(LogEvents.USER_ACTIVE, {\n  act: '啥交互？'\n});\n```\n\n- 上报用户送礼\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_GIFT, {\n  gift_id: 2222,\n  gift_count: 1,\n  gift_amount: 100\n});\n```\n\n- 上报用户发言\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_WORD, {\n  word: '你说啥？'\n});\n```\n\n- 上报订阅主播\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SUBSCRIBE);\n```\n\n- 上报用户分享\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SHARE, {\n  share_type: 1\n});\n```\n\n- 上报开始游戏\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_CREATE);\n```\n\n- 上报游戏结束\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_FINISH);\n```\n\n### 非统一日志上报 - reporter.report(base, info, fields)\n\n- 非统一日志上报，特殊情况下使用\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明                       |\n| ----------------- | ------ | ---- | ---- | -------------------------- |\n| [base](#base)     | Object | 是   | --   | 日志业务信息               |\n| [info](#info)     | Object | 否   | --   | 日志描述，不被 fields 覆盖 |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据             |\n\n#### base\n\n- 对应后统计台业务上报信息\n\n| 参数     | 类型   | 必填 | 说明     |\n| -------- | ------ | ---- | -------- |\n| eid      | string | 是   | 事件 id  |\n| eid_desc | string | 是   | 事件名称 |\n\n#### 示例\n\n```\nreporter.report({\n  eid: 'usr/diy/eid',\n  eid_desc: '非统一上报日志'\n}, {\n  type: '固定信息'\n}, {\n  data: '上报数据',\n})\n```\n","gitHead":"58e40f7a18db4330b5016602b3600a1eadff1bb2","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"http://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.0.11-beta.0_1628231258917_0.1082295753914464","host":"s3://npm-registry-packages"}},"1.0.11-beta.1":{"name":"@hyext/hyext-reporter","version":"1.0.11-beta.1","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.0.11-beta.1","maintainers":[{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"mylhyz","email":"mylhyz@gmail.com"}],"dist":{"shasum":"8c488ffd2b7bcea259f757c47d9aab85cb612cdc","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.0.11-beta.1.tgz","fileCount":10,"integrity":"sha512-si+NvVpqUK7veVS9Mo7sGJ564pgy4Y1ORmFhnI2r6Lj3K7Pa2HqV0FltnAyuj0KDex6YI1TwRyobkZakDDopwA==","signatures":[{"sig":"MEQCIAUlW1NA+1WKcTfjAUlXdxnc/cpkyY5y90yYatgSuiq6AiAy2c5k68TbSG562U6wgNTAOt6Yx9N3iwuy7jBRU468jQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":341472,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhDObYCRA9TVsSAnZWagAAZwkP/RAClvxG+yOaZcRGi+oD\nU56TEU1tva8VaW4UJ8c5taOpyo+UFoikmWoB9Kv+xmq3hEAnfSOj/k489lYR\nLxGbUNWnHmvmt5G29l3bHuUtUtVIkLPAuR6Fjn4u4IsSYTZZvHmFxe7ZOS5p\nK1II7f5zqFi6L1Bm/b7+32AXy7g+3CzKP95YCSUC46c1uauIWSXyMsYV2ow4\nwk72sQqI1ufrHlYH2hphgaASiRLkq3emGen7m03e0BpiJDaTsZyp6GSXeM8c\nQo9Lia6E9+LnZlmSC0nlSbbciEX4SPI5Jw3Xw148GN9BlH5bSAn88n0uNYi7\nakyLAZ493kE/gyEYVn4J5nXLzKfb4jY/sgHr+V3S0KSbVORRMaxPaAht4yml\nXOOv/NKcaAOEAktr24aYOVM+dmeQSwwie5cdgmlxSzHtJQOKQlN7vgkxNIHT\nvgyFlyhJrLbuBketueMrcuzTxB5tvt//OeXKBKfN0kiaU3U1YhXUAR6022yF\nPzU7yWNym0khGWzRmY9PFvWAKE0DWB1E2MSjaYp0xv5H44cKlf9zqGKiObY2\nOfBbAfaud+B5yjl447M4vDl24gD2LKaB73ZY0YJKJ8EWxEtEORg/upR44amW\nfL+19oYrg5OJQdGeHxzWrx03YjlNAbViL5kAPFeTQ+AKxKY+z01NfKLI3LL9\nMgOB\r\n=NbXr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","readme":"## 小程序统一日志上报\n\n- @hyext/hyext-reporter\n- 负责统一小程序日志数据，不做主动上报\n- 提供全局心跳，默认 60 秒心跳一次\n- 日志延迟 500ms 上报，每次上报最多 100 条；\n\n### 安装\n\n```\nnpm install @hyext/hyext-reporter\n```\n\n### 引入\n\n```\nimport { ExtReporter, LogEvents } from '@hyext/hyext-reporter'\n```\n\n### 实例化 - new ExtReporter([config](#config))\n\n#### config\n\n- 实例化配置\n\n| 参数                                | 类型     | 必填 | 默认  | 说明                       |\n| ----------------------------------- | -------- | ---- | ----- | -------------------------- |\n| [PlatformRequest](#PlatformRequest) | Callback | 是   | --    | 平台定义上报方法           |\n| [CommonInfo](#CommonInfo)           | Object   | 是   | --    | 日志公用信息               |\n| OpenReport                          | boolean  | 否   | true  | 是否开启上报               |\n| Debug                               | boolean  | 否   | false | 是否开启 debug             |\n| ReportDelay                         | number   | 否   | 500   | 延迟上报时差，0 不延迟     |\n| ReportSizeLimit                     | number   | 否   | 25    | 每次上报大小上限，0 不限制 |\n| HeartbeatFreq                       | number   | 否   | 60000 | 心跳频率                   |\n\n#### PlatformRequest\n\n> ([params](#params)) => Promise\\<void>\n\n- 日志上报方法\n\n#### params\n\n- 日志上报回调参数\n\n| 属性 | 类型          | 说明         |\n| ---- | ------------- | ------------ |\n| logs | [log](#log)[] | 上报日志数组 |\n\n#### log\n\n- 上报日志信息\n\n| 属性     | 类型   | 说明     |\n| -------- | ------ | -------- |\n| eid      | string | 事件 id  |\n| eid_desc | string | 事件名称 |\n| prop     | Object | 上报数据 |\n\n#### CommonInfo\n\n- 日志公共数据，每条日志的基础信息，可覆盖\n\n| 参数        | 类型   | 必填 | 说明      |\n| ----------- | ------ | ---- | --------- |\n| ext_id      | string | 是   | 小程序 ID |\n| uid         | string | 是   | 用户 ID   |\n| pid         | string | 是   | 主播 ID   |\n| game_id     | string | 是   | 品类 ID   |\n| [env](#env) | string | 是   | 环境信息  |\n\n#### env\n\n- 环境信息\n\n| 取值    | 说明     |\n| ------- | -------- |\n| unknown | 未知环境 |\n| online  | 正式环境 |\n| test    | 测试环境 |\n| dev     | 开发环境 |\n\n#### 示例\n\n- 先通过平台获取基础数据\n\n```\nconst basInfo = {\n  ext_id: \"abababa\", // 小程序ID\n  uid: \"202020\", // 用户uid\n  pid: \"202011\", // 主播ID\n  game_id: \"1002\", // 品类ID\n  env: \"online\",\n}\n```\n\n- 实例化\n\n```\nconst reporter = new ExtReporter({\n  Debug: true, // 是否开启debug日志，可选\n  OpenReport: true, // 是否开启上报，可选\n  PlatformRequest: ({ logs }) => {\n    // 上报日志数据，必填\n    console.log(\"report logs\": logs);\n  },\n  CommonInfo: { // 日志公共数据\n    uid: basInfo.uid,\n    pid: basInfo.pid,\n    ext_id: basInfo.ext_id,\n    game_id: basInfo.game_id,\n    env: basInfo.env\n  }\n});\n```\n\n### 开始心跳 - reporter.startHeartBeat(fields);\n\n- 只有一个全局的心跳\n- 默认 60s 一次心跳\n- 心跳用于统计用户在线时长，用户进入即开始心跳即可\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明           |\n| ----------------- | ------ | ---- | ---- | -------------- |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据 |\n\n#### 示例\n\n```\nreporter.startHeartBeat();\n```\n\n### 停止心跳 - reporter.endHeartBeat()\n\n- 停止全局的心跳\n- 用户退出时调用\n\n#### 示例\n\n```\nreporter.endHeartBeat();\n```\n\n### 普通上报 - reporter.reportBusiMetric(info, fields)\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明                         |\n| ----------------- | ------ | ---- | ---- | ---------------------------- |\n| [info](#info)     | Object | 是   | --   | 日志描述，不会被 fields 覆盖 |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据               |\n\n#### info\n\n- 日志描述信息，不会被 fields 覆盖\n- 系统预制了一些日志描述信息 [LogEvents](#LogEvents) 方便使用\n- 也可定义自己日志描述信息\n\n| 参数 | 类型   | 必填 | 说明       |\n| ---- | ------ | ---- | ---------- |\n| key  | string | 是   | 业务关键词 |\n| desc | string | 是   | 业务描述   |\n\n#### LogEvents\n\n- 预制日志描述信息\n- 均为与 info 同构变量\n- 按需上报即可\n\n| 变量                     | 描述                   |\n| ------------------------ | ---------------------- |\n| LogEvents.USER_ACTIVE    | 用户互动               |\n| LogEvents.USER_SEND_GIFT | 用户送礼               |\n| LogEvents.USER_SEND_WORD | 用户发言               |\n| LogEvents.USER_SUBSCRIBE | 用户订阅               |\n| LogEvents.USER_SHARE     | 用户分享               |\n| LogEvents.GAME_CREATE    | 游戏开局，某轮游戏开始 |\n| LogEvents.GAME_FINISH    | 游戏结束，某轮游戏结束 |\n\n#### fields\n\n- 自定义上报数据\n- 键值不能与以下取值重复，否则会被覆盖\n\n| 敏感键值    | 类型   | 说明           | 数据源      |\n| ----------- | ------ | -------------- | ----------- |\n| key         | string | 业务关键词     | info        |\n| desc        | string | 业务描述       | info        |\n| type        | number | 日志类型       | info/默认值 |\n| client_time | number | 日志创建时间戳 | 系统生成    |\n\n#### 示例\n\n- 自定义日志信息 info 的上报\n\n```\nextReporter.reportBusiMetric({\n  key: 'ext_diy/my_action'\n  desc: '自定义事件描述'\n}, {\n  data : 'your_data'\n});\n```\n\n- 上报用户交互\n\n```\nreporter.reportBusiMetric(LogEvents.USER_ACTIVE, {\n  act: '啥交互？'\n});\n```\n\n- 上报用户送礼\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_GIFT, {\n  gift_id: 2222,\n  gift_count: 1,\n  gift_amount: 100\n});\n```\n\n- 上报用户发言\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_WORD, {\n  word: '你说啥？'\n});\n```\n\n- 上报订阅主播\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SUBSCRIBE);\n```\n\n- 上报用户分享\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SHARE, {\n  share_type: 1\n});\n```\n\n- 上报开始游戏\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_CREATE);\n```\n\n- 上报游戏结束\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_FINISH);\n```\n\n### 非统一日志上报 - reporter.report(base, info, fields)\n\n- 非统一日志上报，特殊情况下使用\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明                       |\n| ----------------- | ------ | ---- | ---- | -------------------------- |\n| [base](#base)     | Object | 是   | --   | 日志业务信息               |\n| [info](#info)     | Object | 否   | --   | 日志描述，不被 fields 覆盖 |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据             |\n\n#### base\n\n- 对应后统计台业务上报信息\n\n| 参数     | 类型   | 必填 | 说明     |\n| -------- | ------ | ---- | -------- |\n| eid      | string | 是   | 事件 id  |\n| eid_desc | string | 是   | 事件名称 |\n\n#### 示例\n\n```\nreporter.report({\n  eid: 'usr/diy/eid',\n  eid_desc: '非统一上报日志'\n}, {\n  type: '固定信息'\n}, {\n  data: '上报数据',\n})\n```\n","gitHead":"70197915d3b064347e91555de02be216a628b27d","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"http://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.0.11-beta.1_1628235480774_0.4321153531726911","host":"s3://npm-registry-packages"}},"1.0.11":{"name":"@hyext/hyext-reporter","version":"1.0.11","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.0.11","maintainers":[{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"mylhyz","email":"mylhyz@gmail.com"}],"dist":{"shasum":"8920093e354ef0a51f6d3b5a376ff98aac319c9e","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.0.11.tgz","fileCount":10,"integrity":"sha512-ItUpYRUcxssX1BL5X311M17Q2Y1bXxNyUlRcpaLAaOkGhOyTpMlABqm5RRrQbgCsChinntNnJstQzeixql4jog==","signatures":[{"sig":"MEYCIQCYSJw19jByka5Dqh+BhVbtRKkDq/rf04mHz5yIguXLfwIhAKKhkK9+85mH6shxIKXts/xkXfbn/hHEHu5p/b/QV9/6","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":341488,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhDO4MCRA9TVsSAnZWagAAkm4P/1RrgwOjZ1cjCj9q24mW\nn/OlrsnN6M9aqNSwO6b8vr+fXod9CBhxc/xEWldo6l+QkfBx6obf/qBUi80U\n2sIO5H+smfo3VFk20ijFs8BEHKFp2/YGa1B5MUUxau1uToQO2c2XMGChpbX7\nkg4PjPoCgsAVtrtX/VDP1c3Kf7M20ssnuw6ORo5zPuOtZOXCVZx59bqGiZQm\nKulf7o6Lz/06vio36G8fR1oGLznfm+QA5Gb3CMd0qimnkmNwpNz+Wn/YUNv0\nerZzkwYWCVlcEmKGVbDa63utjWvArEI3mkaePM8ZBEJzqoJ77/fcbxJysOMd\n4VLqWywCkcivbqa2i5L9q+YdeT2K18PLC1SZ78aS00e8JVtuhmofzq2njVLN\n0YneZsB/0tKP33JEAtHt5CEAKXKFzd4g+uNlx1cHDOAzVl5949TVxiHLzNFx\n1YkuxMb2bONdhi/tPPg9L4zc5IQSwYZcgIGwxPtcEHTRBqpQiK4ukmWC0Aop\nKbwmV7feXd9uKzgRwRK+On3GFQTQ+ERX/cS6whkOZE1pXsglR7ewnsXN8DC0\nWaZ9HwyCDOc5rghwAvG107mrJiMmcQeAel8+L28C3XrUl8wCd9NpDpelt9DX\nOtdjsiLskqTkRxmNfxTEhU7eTcGP1kuSUdLQKDNZWk1eXbISmfHXURMnEFpj\nRtyG\r\n=PjEW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","gitHead":"d138a66ac59213b265d72af84d8ac467f5666e23","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"http://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.0.11_1628237324031_0.9026081923474898","host":"s3://npm-registry-packages"}},"1.0.12-beta.0":{"name":"@hyext/hyext-reporter","version":"1.0.12-beta.0","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.0.12-beta.0","maintainers":[{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"mylhyz","email":"mylhyz@gmail.com"}],"dist":{"shasum":"81995c63c7a57b76e2a1966a0260a56490fca12e","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.0.12-beta.0.tgz","fileCount":10,"integrity":"sha512-9gzLtHVCDh1NpbRv4nMN15494LaiQd1iVsEYQjeAMo69QdZTN/u9Nu9/1Rb7a78DQ8hHZ7m6JPZmy6PUjUJ6mA==","signatures":[{"sig":"MEUCIQCgNg9yplfNnSnXLSDeZaiV2j7GA6Rn68/2zcMJ43u4OAIgQsXET/jgvMxAj6msIUdfLI6lFHbmu9VYv4b9TYDY3TM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":341657,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhDRUFCRA9TVsSAnZWagAAnVcP/R0mgZhFBQoz7qKzDyGl\njQU3XP1MIeLMeXYx9ivBt5FPBvjFqBGeCKCbID2yce1Lj9wbLEK5ammcRzpg\nGEDVItavwNedYj5jCZes0irgxLIbEwDDuyP1lF2LqOpMhx2m3X4gtzzh5ple\ncKSROwzJ/Qg516SlUeMgGSgEUaHAF6+j3+DPQhyBQkshju3SKbfzJoolZd3e\ngtGe1tqezi5yx3jdtqWveObMS4PFrqGtCb2S/FsKcaxfZzxNpniRaONKx2ap\nvocYfxqTkQV2kD9kOaByptlOfHpMJmKB7caKBxXfqLkctzJgNOboimq9UfZq\nD+cq0TxmAFHe1mmeJPaZY4e/7u8KwbYsB+EdAebmqXqzJyltE0lBsB9TfkoN\nR8TS7gm7bt8aBPe0YYiOooR/11DSinyb2AMxOSyNXw1M+1SYKqgfnFnltp3g\nhfO9TFzuvp3iPDGI45VKCPDrm3+X8JVjHApKk1T0vBEPcIYj3k3DrUh65L0Q\n744uZ8+dydr6JDtXzhcUQIi4YOq/a50PlG0aNPlEyMBoSyC3l68tiZnfOp6u\nHbBFisbGYzAhkHQBlEkicfDHoXw2+P57vPJARyMaZKQldwwzNjQaN3dT1zwi\nkTyCWrjJVNaTcb3zD2BSzj0gAb3WQ30HunjfCWeUhID2zr/4ztpSYa9EIUXS\nr8Lp\r\n=rk4j\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","readme":"## 小程序统一日志上报\n\n- @hyext/hyext-reporter\n- 负责统一小程序日志数据，不做主动上报\n- 提供全局心跳，默认 60 秒心跳一次\n- 日志延迟 500ms 上报，每次上报最多 100 条；\n\n### 安装\n\n```\nnpm install @hyext/hyext-reporter\n```\n\n### 引入\n\n```\nimport { ExtReporter, LogEvents } from '@hyext/hyext-reporter'\n```\n\n### 实例化 - new ExtReporter([config](#config))\n\n#### config\n\n- 实例化配置\n\n| 参数                                | 类型     | 必填 | 默认  | 说明                           |\n| ----------------------------------- | -------- | ---- | ----- | ------------------------------ |\n| [PlatformRequest](#PlatformRequest) | Callback | 是   | --    | 平台定义上报方法               |\n| [CommonInfo](#CommonInfo)           | Object   | 是   | --    | 日志公用信息                   |\n| OpenReport                          | boolean  | 否   | true  | 是否开启上报                   |\n| Debug                               | boolean  | 否   | false | 是否开启 debug                 |\n| ReportDelay                         | number   | 否   | 500   | 延迟上报时差(ms)，0 不延迟     |\n| ReportSizeLimit                     | number   | 否   | 25    | 每次上报大小上限(KB)，0 不限制 |\n| HeartbeatFreq                       | number   | 否   | 60000 | 心跳频率                       |\n\n#### PlatformRequest\n\n> ([params](#params)) => Promise\\<void>\n\n- 日志上报方法\n\n#### params\n\n- 日志上报回调参数\n\n| 属性 | 类型          | 说明         |\n| ---- | ------------- | ------------ |\n| logs | [log](#log)[] | 上报日志数组 |\n\n#### log\n\n- 上报日志信息\n\n| 属性     | 类型   | 说明     |\n| -------- | ------ | -------- |\n| eid      | string | 事件 id  |\n| eid_desc | string | 事件名称 |\n| prop     | Object | 上报数据 |\n\n#### CommonInfo\n\n- 日志公共数据，每条日志的基础信息，可覆盖\n\n| 参数        | 类型   | 必填 | 说明      |\n| ----------- | ------ | ---- | --------- |\n| ext_id      | string | 是   | 小程序 ID |\n| uid         | string | 是   | 用户 ID   |\n| pid         | string | 是   | 主播 ID   |\n| game_id     | string | 是   | 品类 ID   |\n| [env](#env) | string | 是   | 环境信息  |\n\n#### env\n\n- 环境信息\n\n| 取值    | 说明     |\n| ------- | -------- |\n| unknown | 未知环境 |\n| online  | 正式环境 |\n| test    | 测试环境 |\n| dev     | 开发环境 |\n\n#### 示例\n\n- 先通过平台获取基础数据\n\n```\nconst basInfo = {\n  ext_id: \"abababa\", // 小程序ID\n  uid: \"202020\", // 用户uid\n  pid: \"202011\", // 主播ID\n  game_id: \"1002\", // 品类ID\n  env: \"online\",\n}\n```\n\n- 实例化\n\n```\nconst reporter = new ExtReporter({\n  Debug: true, // 是否开启debug日志，可选\n  OpenReport: true, // 是否开启上报，可选\n  PlatformRequest: ({ logs }) => {\n    // 上报日志数据，必填\n    console.log(\"report logs\": logs);\n  },\n  CommonInfo: { // 日志公共数据\n    uid: basInfo.uid,\n    pid: basInfo.pid,\n    ext_id: basInfo.ext_id,\n    game_id: basInfo.game_id,\n    env: basInfo.env\n  }\n});\n```\n\n### 开始心跳 - reporter.startHeartBeat(fields);\n\n- 只有一个全局的心跳\n- 默认 60s 一次心跳\n- 心跳用于统计用户在线时长，用户进入即开始心跳即可\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明           |\n| ----------------- | ------ | ---- | ---- | -------------- |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据 |\n\n#### 示例\n\n```\nreporter.startHeartBeat();\n```\n\n### 停止心跳 - reporter.endHeartBeat()\n\n- 停止全局的心跳\n- 用户退出时调用\n\n#### 示例\n\n```\nreporter.endHeartBeat();\n```\n\n### 普通上报 - reporter.reportBusiMetric(info, fields)\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明                         |\n| ----------------- | ------ | ---- | ---- | ---------------------------- |\n| [info](#info)     | Object | 是   | --   | 日志描述，不会被 fields 覆盖 |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据               |\n\n#### info\n\n- 日志描述信息，不会被 fields 覆盖\n- 系统预制了一些日志描述信息 [LogEvents](#LogEvents) 方便使用\n- 也可定义自己日志描述信息\n\n| 参数 | 类型   | 必填 | 说明       |\n| ---- | ------ | ---- | ---------- |\n| key  | string | 是   | 业务关键词 |\n| desc | string | 是   | 业务描述   |\n\n#### LogEvents\n\n- 预制日志描述信息\n- 均为与 info 同构变量\n- 按需上报即可\n\n| 变量                     | 描述                   |\n| ------------------------ | ---------------------- |\n| LogEvents.USER_ACTIVE    | 用户互动               |\n| LogEvents.USER_SEND_GIFT | 用户送礼               |\n| LogEvents.USER_SEND_WORD | 用户发言               |\n| LogEvents.USER_SUBSCRIBE | 用户订阅               |\n| LogEvents.USER_SHARE     | 用户分享               |\n| LogEvents.GAME_CREATE    | 游戏开局，某轮游戏开始 |\n| LogEvents.GAME_FINISH    | 游戏结束，某轮游戏结束 |\n\n#### fields\n\n- 自定义上报数据\n- 键值不能与以下取值重复，否则会被覆盖\n\n| 敏感键值    | 类型   | 说明           | 数据源      |\n| ----------- | ------ | -------------- | ----------- |\n| key         | string | 业务关键词     | info        |\n| desc        | string | 业务描述       | info        |\n| type        | number | 日志类型       | info/默认值 |\n| client_time | number | 日志创建时间戳 | 系统生成    |\n\n#### 示例\n\n- 自定义日志信息 info 的上报\n\n```\nextReporter.reportBusiMetric({\n  key: 'ext_diy/my_action'\n  desc: '自定义事件描述'\n}, {\n  data : 'your_data'\n});\n```\n\n- 上报用户交互\n\n```\nreporter.reportBusiMetric(LogEvents.USER_ACTIVE, {\n  act: '啥交互？'\n});\n```\n\n- 上报用户送礼\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_GIFT, {\n  gift_id: 2222,\n  gift_count: 1,\n  gift_amount: 100\n});\n```\n\n- 上报用户发言\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_WORD, {\n  word: '你说啥？'\n});\n```\n\n- 上报订阅主播\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SUBSCRIBE);\n```\n\n- 上报用户分享\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SHARE, {\n  share_type: 1\n});\n```\n\n- 上报开始游戏\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_CREATE);\n```\n\n- 上报游戏结束\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_FINISH);\n```\n\n### 非统一日志上报 - reporter.report(base, info, fields)\n\n- 非统一日志上报，特殊情况下使用\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明                       |\n| ----------------- | ------ | ---- | ---- | -------------------------- |\n| [base](#base)     | Object | 是   | --   | 日志业务信息               |\n| [info](#info)     | Object | 否   | --   | 日志描述，不被 fields 覆盖 |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据             |\n\n#### base\n\n- 对应后统计台业务上报信息\n\n| 参数     | 类型   | 必填 | 说明     |\n| -------- | ------ | ---- | -------- |\n| eid      | string | 是   | 事件 id  |\n| eid_desc | string | 是   | 事件名称 |\n\n#### 示例\n\n```\nreporter.report({\n  eid: 'usr/diy/eid',\n  eid_desc: '非统一上报日志'\n}, {\n  type: '固定信息'\n}, {\n  data: '上报数据',\n})\n```\n","gitHead":"b41e437557156b1e275c5e15be0e00a778192939","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"http://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.0.12-beta.0_1628247300754_0.928364823780905","host":"s3://npm-registry-packages"}},"1.0.12-beta.1":{"name":"@hyext/hyext-reporter","version":"1.0.12-beta.1","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.0.12-beta.1","maintainers":[{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"mylhyz","email":"mylhyz@gmail.com"}],"dist":{"shasum":"5dcc9fc7439dac536e60a3d7a486616a6c355326","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.0.12-beta.1.tgz","fileCount":10,"integrity":"sha512-HL8pZ4i5+p9yXNrWsPmIAG8DtD0SHnHEIieW5JyOQw9IcPfxtY/W/6OAhXjlhdmCy+R7U4qqj30BBd9m+dFVWg==","signatures":[{"sig":"MEQCIDApNacHNflqgpgfUa5ao+v+MhmsKAAMg9Dlro8OWTZ+AiAs4x0vNzsLy3rT2Il8x87F9PVwrDvkItBl2dr2CvpQLA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":342612,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhEKp1CRA9TVsSAnZWagAAd8IP/RmVNQqW68BbNXPKe2Do\nC8cRiD4mKmSIQ6Nov7xYqbcNyFC19m0WeAjwl1geN4wPH9k7Vq7efi+rHF+p\nO1aWUWufp8YyIi6fbOCbl4pp43qm4cRF8OG4I7eki2ADuI3gaWXFeJWvWaxR\njuW6LJG3WfxRtxjR8DlkT6BcfGt7nfNM+m9ZEuwUmrkynrOxUPwqlOXTR67F\nLLqNgYyh9pdMQ/euLMPTt9Zw9gZZUvJxzsMipVJrF14OwngOcX65Ksr8TFn0\npy2T3D6mp7UrpyP3shypmKmSN4IqaUXxAkbSx2O1V15oL9RzF5SwEAS4Lhze\nGXwzIJc2Tncsr9meE4tqfU5Ix3KL2GggskjuuEAQKwucE1uUhNu7jx1C92LE\n7i6hbTkRYKRADHXsSnhIGfuoxwa4Brc5d4r/FA4MhZUIK1D3N2Nf84C48XGq\nrNK26H1OCV6imCByBqETqZpDx3VJScvpTkG3zQJGguA8bV3cY2JJt5jCKecq\nsnp0bS+NraTkd39bt58ghULY+wYIuSCNvHPI8bQhhCyDJxu0+asvUjMY9yTI\nr6YwVHYyaNmyi4Slow0oGT7oA5Waiy6zGCdpILBB/j6Nqk1yTdPu0PC4Jevm\nyMr+YYxp8xSHOJpElX6A1AlbAofYY3woGiPWZPQL7ooYSGTS2xoVbuOAl6+H\n966M\r\n=vxAK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","readme":"## 小程序统一日志上报\n\n- @hyext/hyext-reporter\n- 负责统一小程序日志数据，不做主动上报\n- 提供全局心跳，默认 60 秒心跳一次\n- 日志延迟 500ms 上报，每次上报最多 100 条；\n\n### 安装\n\n```\nnpm install @hyext/hyext-reporter\n```\n\n### 引入\n\n```\nimport { ExtReporter, LogEvents } from '@hyext/hyext-reporter'\n```\n\n### 实例化 - new ExtReporter([config](#config))\n\n#### config\n\n- 实例化配置\n\n| 参数                                | 类型     | 必填 | 默认  | 说明                           |\n| ----------------------------------- | -------- | ---- | ----- | ------------------------------ |\n| [PlatformRequest](#PlatformRequest) | Callback | 是   | --    | 平台定义上报方法               |\n| [CommonInfo](#CommonInfo)           | Object   | 是   | --    | 日志公用信息                   |\n| OpenReport                          | boolean  | 否   | true  | 是否开启上报                   |\n| Debug                               | boolean  | 否   | false | 是否开启 debug                 |\n| ReportDelay                         | number   | 否   | 500   | 延迟上报时差(ms)，0 不延迟     |\n| ReportSizeLimit                     | number   | 否   | 25    | 每次上报大小上限(KB)，0 不限制 |\n| HeartbeatFreq                       | number   | 否   | 60000 | 心跳频率                       |\n\n#### PlatformRequest\n\n> ([params](#params)) => Promise\\<void>\n\n- 日志上报方法\n\n#### params\n\n- 日志上报回调参数\n\n| 属性 | 类型          | 说明         |\n| ---- | ------------- | ------------ |\n| logs | [log](#log)[] | 上报日志数组 |\n\n#### log\n\n- 上报日志信息\n\n| 属性     | 类型   | 说明     |\n| -------- | ------ | -------- |\n| eid      | string | 事件 id  |\n| eid_desc | string | 事件名称 |\n| prop     | Object | 上报数据 |\n\n#### CommonInfo\n\n- 日志公共数据，每条日志的基础信息，可覆盖\n\n| 参数        | 类型   | 必填 | 说明      |\n| ----------- | ------ | ---- | --------- |\n| ext_id      | string | 是   | 小程序 ID |\n| uid         | string | 是   | 用户 ID   |\n| pid         | string | 是   | 主播 ID   |\n| game_id     | string | 是   | 品类 ID   |\n| [env](#env) | string | 是   | 环境信息  |\n\n#### env\n\n- 环境信息\n\n| 取值    | 说明     |\n| ------- | -------- |\n| unknown | 未知环境 |\n| online  | 正式环境 |\n| test    | 测试环境 |\n| dev     | 开发环境 |\n\n#### 示例\n\n- 先通过平台获取基础数据\n\n```\nconst basInfo = {\n  ext_id: \"abababa\", // 小程序ID\n  uid: \"202020\", // 用户uid\n  pid: \"202011\", // 主播ID\n  game_id: \"1002\", // 品类ID\n  env: \"online\",\n}\n```\n\n- 实例化\n\n```\nconst reporter = new ExtReporter({\n  Debug: true, // 是否开启debug日志，可选\n  OpenReport: true, // 是否开启上报，可选\n  PlatformRequest: ({ logs }) => {\n    // 上报日志数据，必填\n    console.log(\"report logs\": logs);\n  },\n  CommonInfo: { // 日志公共数据\n    uid: basInfo.uid,\n    pid: basInfo.pid,\n    ext_id: basInfo.ext_id,\n    game_id: basInfo.game_id,\n    env: basInfo.env\n  }\n});\n```\n\n### 开始心跳 - reporter.startHeartBeat(fields);\n\n- 只有一个全局的心跳\n- 默认 60s 一次心跳\n- 心跳用于统计用户在线时长，用户进入即开始心跳即可\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明           |\n| ----------------- | ------ | ---- | ---- | -------------- |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据 |\n\n#### 示例\n\n```\nreporter.startHeartBeat();\n```\n\n### 停止心跳 - reporter.endHeartBeat()\n\n- 停止全局的心跳\n- 用户退出时调用\n\n#### 示例\n\n```\nreporter.endHeartBeat();\n```\n\n### 普通上报 - reporter.reportBusiMetric(info, fields)\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明                         |\n| ----------------- | ------ | ---- | ---- | ---------------------------- |\n| [info](#info)     | Object | 是   | --   | 日志描述，不会被 fields 覆盖 |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据               |\n\n#### info\n\n- 日志描述信息，不会被 fields 覆盖\n- 系统预制了一些日志描述信息 [LogEvents](#LogEvents) 方便使用\n- 也可定义自己日志描述信息\n\n| 参数 | 类型   | 必填 | 说明       |\n| ---- | ------ | ---- | ---------- |\n| key  | string | 是   | 业务关键词 |\n| desc | string | 是   | 业务描述   |\n\n#### LogEvents\n\n- 预制日志描述信息\n- 均为与 info 同构变量\n- 按需上报即可\n\n| 变量                     | 描述                   |\n| ------------------------ | ---------------------- |\n| LogEvents.USER_ACTIVE    | 用户互动               |\n| LogEvents.USER_SEND_GIFT | 用户送礼               |\n| LogEvents.USER_SEND_WORD | 用户发言               |\n| LogEvents.USER_SUBSCRIBE | 用户订阅               |\n| LogEvents.USER_SHARE     | 用户分享               |\n| LogEvents.GAME_CREATE    | 游戏开局，某轮游戏开始 |\n| LogEvents.GAME_FINISH    | 游戏结束，某轮游戏结束 |\n\n#### fields\n\n- 自定义上报数据\n- 键值不能与以下取值重复，否则会被覆盖\n\n| 敏感键值    | 类型   | 说明           | 数据源      |\n| ----------- | ------ | -------------- | ----------- |\n| key         | string | 业务关键词     | info        |\n| desc        | string | 业务描述       | info        |\n| type        | number | 日志类型       | info/默认值 |\n| client_time | number | 日志创建时间戳 | 系统生成    |\n\n#### 示例\n\n- 自定义日志信息 info 的上报\n\n```\nextReporter.reportBusiMetric({\n  key: 'ext_diy/my_action'\n  desc: '自定义事件描述'\n}, {\n  data : 'your_data'\n});\n```\n\n- 上报用户交互\n\n```\nreporter.reportBusiMetric(LogEvents.USER_ACTIVE, {\n  act: '啥交互？'\n});\n```\n\n- 上报用户送礼\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_GIFT, {\n  gift_id: 2222,\n  gift_count: 1,\n  gift_amount: 100\n});\n```\n\n- 上报用户发言\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_WORD, {\n  word: '你说啥？'\n});\n```\n\n- 上报订阅主播\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SUBSCRIBE);\n```\n\n- 上报用户分享\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SHARE, {\n  share_type: 1\n});\n```\n\n- 上报开始游戏\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_CREATE);\n```\n\n- 上报游戏结束\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_FINISH);\n```\n\n### 非统一日志上报 - reporter.report(base, info, fields)\n\n- 非统一日志上报，特殊情况下使用\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明                       |\n| ----------------- | ------ | ---- | ---- | -------------------------- |\n| [base](#base)     | Object | 是   | --   | 日志业务信息               |\n| [info](#info)     | Object | 否   | --   | 日志描述，不被 fields 覆盖 |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据             |\n\n#### base\n\n- 对应后统计台业务上报信息\n\n| 参数     | 类型   | 必填 | 说明     |\n| -------- | ------ | ---- | -------- |\n| eid      | string | 是   | 事件 id  |\n| eid_desc | string | 是   | 事件名称 |\n\n#### 示例\n\n```\nreporter.report({\n  eid: 'usr/diy/eid',\n  eid_desc: '非统一上报日志'\n}, {\n  type: '固定信息'\n}, {\n  data: '上报数据',\n})\n```\n","gitHead":"fedf6b6ef0195a6983bba5bd545add2ed69fa84e","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"http://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.0.12-beta.1_1628482165506_0.9334643095150139","host":"s3://npm-registry-packages"}},"1.0.12-beta.2":{"name":"@hyext/hyext-reporter","version":"1.0.12-beta.2","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.0.12-beta.2","maintainers":[{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"mylhyz","email":"mylhyz@gmail.com"}],"dist":{"shasum":"b37ab03ec36f9db6a4a70d91c33e534c8bca2099","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.0.12-beta.2.tgz","fileCount":10,"integrity":"sha512-MwdUmLCv3xKwe2P2P+nzyiOt9zpR/3T/XKJkUe/SysYIHw+7FmSgjYbMD6DlfhVUN3mitUFoV8oKlWV84ACWRA==","signatures":[{"sig":"MEUCIDLrThzfIzxySqVBjf7aJDQ1Nuat9u6LN2P2JAp6EMFpAiEAzBoLtREpVpXWvhFD/FdFOmqRQshyo/IPixiCwXx2zA8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":346263,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhEMy7CRA9TVsSAnZWagAALnAP/2aSfihrooFg33NNLwDN\nrinS7qzc3GLlAoHYP42hxtlIxsHS7LKDdTzyz1llHbJmPhNFxz2JbF1j53r3\nUyfju3bHVSfj1blLF4cJ7U9gagvPC0Q7R8Ov7+MkfZ/ASzQvI4wnE5B2VmWV\nhl9Mwg2a7WbOXJSCcaBjZukxtrgPJumLRq/zAOVgcumofE5w9iE0aD6eelGu\ntOE6kN+NLOIxn7/vUvl6mugv7hl0t9IURFxMCgetalN/ClzRGan0TiXhJ7z4\ngYZ1O11lSjaJbJhBDcvOPTFC0omghJUQFmhkfZRtD8TvhPWsGstRf71BC2M1\nCjD+GgaEMOhNBYnYp9yz2M4/4yOyrZlI1Kwa/TzxmgQDh5oldmUzbFnvQMo2\neUpJvFTVpHRFcFbYh94QMKCKZfO9HkC9SJSmM23FBz3aWvI3dla56/VZc+ID\nGu4jU4c4vN8/qqA5pgDW/sq8OQUHiTNyJxVbLmQKC7ZN+atnEyBH951KUjZL\nCoW1+DlBsr0fs5vVfmCgIC2siQIKCDbGZHQVM326fjI6yvo92IyPonElMGLn\nnh6+MtWZIKVZ+1IGaYo6iDqzTQ5Pnadjcl3IoPyeeM9o8coaHPIOtaD//fgF\n1YBA+bXbMwwWlX6UA65C7Oh9WZYara8KgBweMKCLh/SwqXp4KJYFYCq7DIxU\nZofc\r\n=cKsE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","readme":"## 小程序统一日志上报\n\n- @hyext/hyext-reporter\n- 负责统一小程序日志数据，不做主动上报\n- 提供全局心跳，默认 60 秒心跳一次\n- 日志延迟 500ms 上报，每次上报最多 100 条；\n\n### 安装\n\n```\nnpm install @hyext/hyext-reporter\n```\n\n### 引入\n\n```\nimport { ExtReporter, LogEvents } from '@hyext/hyext-reporter'\n```\n\n### 实例化 - new ExtReporter([config](#config))\n\n#### config\n\n- 实例化配置\n\n| 参数                                | 类型     | 必填 | 默认  | 说明                           |\n| ----------------------------------- | -------- | ---- | ----- | ------------------------------ |\n| [PlatformRequest](#PlatformRequest) | Callback | 是   | --    | 平台定义上报方法               |\n| [CommonInfo](#CommonInfo)           | Object   | 是   | --    | 日志公用信息                   |\n| OpenReport                          | boolean  | 否   | true  | 是否开启上报                   |\n| Debug                               | boolean  | 否   | false | 是否开启 debug                 |\n| ReportDelay                         | number   | 否   | 500   | 延迟上报时差(ms)，0 不延迟     |\n| ReportSizeLimit                     | number   | 否   | 25    | 每次上报大小上限(KB)，0 不限制 |\n| HeartbeatFreq                       | number   | 否   | 60000 | 心跳频率                       |\n\n#### PlatformRequest\n\n> ([params](#params)) => Promise\\<void>\n\n- 日志上报方法\n\n#### params\n\n- 日志上报回调参数\n\n| 属性 | 类型          | 说明         |\n| ---- | ------------- | ------------ |\n| logs | [log](#log)[] | 上报日志数组 |\n\n#### log\n\n- 上报日志信息\n\n| 属性     | 类型   | 说明     |\n| -------- | ------ | -------- |\n| eid      | string | 事件 id  |\n| eid_desc | string | 事件名称 |\n| prop     | Object | 上报数据 |\n\n#### CommonInfo\n\n- 日志公共数据，每条日志的基础信息，可覆盖\n\n| 参数        | 类型   | 必填 | 说明      |\n| ----------- | ------ | ---- | --------- |\n| ext_id      | string | 是   | 小程序 ID |\n| uid         | string | 是   | 用户 ID   |\n| pid         | string | 是   | 主播 ID   |\n| game_id     | string | 是   | 品类 ID   |\n| [env](#env) | string | 是   | 环境信息  |\n\n#### env\n\n- 环境信息\n\n| 取值    | 说明     |\n| ------- | -------- |\n| unknown | 未知环境 |\n| online  | 正式环境 |\n| test    | 测试环境 |\n| dev     | 开发环境 |\n\n#### 示例\n\n- 先通过平台获取基础数据\n\n```\nconst basInfo = {\n  ext_id: \"abababa\", // 小程序ID\n  uid: \"202020\", // 用户uid\n  pid: \"202011\", // 主播ID\n  game_id: \"1002\", // 品类ID\n  env: \"online\",\n}\n```\n\n- 实例化\n\n```\nconst reporter = new ExtReporter({\n  Debug: true, // 是否开启debug日志，可选\n  OpenReport: true, // 是否开启上报，可选\n  PlatformRequest: ({ logs }) => {\n    // 上报日志数据，必填\n    console.log(\"report logs\": logs);\n  },\n  CommonInfo: { // 日志公共数据\n    uid: basInfo.uid,\n    pid: basInfo.pid,\n    ext_id: basInfo.ext_id,\n    game_id: basInfo.game_id,\n    env: basInfo.env\n  }\n});\n```\n\n### 开始心跳 - reporter.startHeartBeat(fields);\n\n- 只有一个全局的心跳\n- 默认 60s 一次心跳\n- 心跳用于统计用户在线时长，用户进入即开始心跳即可\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明           |\n| ----------------- | ------ | ---- | ---- | -------------- |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据 |\n\n#### 示例\n\n```\nreporter.startHeartBeat();\n```\n\n### 停止心跳 - reporter.endHeartBeat()\n\n- 停止全局的心跳\n- 用户退出时调用\n\n#### 示例\n\n```\nreporter.endHeartBeat();\n```\n\n### 普通上报 - reporter.reportBusiMetric(info, fields)\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明                         |\n| ----------------- | ------ | ---- | ---- | ---------------------------- |\n| [info](#info)     | Object | 是   | --   | 日志描述，不会被 fields 覆盖 |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据               |\n\n#### info\n\n- 日志描述信息，不会被 fields 覆盖\n- 系统预制了一些日志描述信息 [LogEvents](#LogEvents) 方便使用\n- 也可定义自己日志描述信息\n\n| 参数 | 类型   | 必填 | 说明       |\n| ---- | ------ | ---- | ---------- |\n| key  | string | 是   | 业务关键词 |\n| desc | string | 是   | 业务描述   |\n\n#### LogEvents\n\n- 预制日志描述信息\n- 均为与 info 同构变量\n- 按需上报即可\n\n| 变量                     | 描述                   |\n| ------------------------ | ---------------------- |\n| LogEvents.USER_ACTIVE    | 用户互动               |\n| LogEvents.USER_SEND_GIFT | 用户送礼               |\n| LogEvents.USER_SEND_WORD | 用户发言               |\n| LogEvents.USER_SUBSCRIBE | 用户订阅               |\n| LogEvents.USER_SHARE     | 用户分享               |\n| LogEvents.GAME_CREATE    | 游戏开局，某轮游戏开始 |\n| LogEvents.GAME_FINISH    | 游戏结束，某轮游戏结束 |\n\n#### fields\n\n- 自定义上报数据\n- 键值不能与以下取值重复，否则会被覆盖\n\n| 敏感键值    | 类型   | 说明           | 数据源      |\n| ----------- | ------ | -------------- | ----------- |\n| key         | string | 业务关键词     | info        |\n| desc        | string | 业务描述       | info        |\n| type        | number | 日志类型       | info/默认值 |\n| client_time | number | 日志创建时间戳 | 系统生成    |\n\n#### 示例\n\n- 自定义日志信息 info 的上报\n\n```\nextReporter.reportBusiMetric({\n  key: 'ext_diy/my_action'\n  desc: '自定义事件描述'\n}, {\n  data : 'your_data'\n});\n```\n\n- 上报用户交互\n\n```\nreporter.reportBusiMetric(LogEvents.USER_ACTIVE, {\n  act: '啥交互？'\n});\n```\n\n- 上报用户送礼\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_GIFT, {\n  gift_id: 2222,\n  gift_count: 1,\n  gift_amount: 100\n});\n```\n\n- 上报用户发言\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_WORD, {\n  word: '你说啥？'\n});\n```\n\n- 上报订阅主播\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SUBSCRIBE);\n```\n\n- 上报用户分享\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SHARE, {\n  share_type: 1\n});\n```\n\n- 上报开始游戏\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_CREATE);\n```\n\n- 上报游戏结束\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_FINISH);\n```\n\n### 非统一日志上报 - reporter.report(base, info, fields)\n\n- 非统一日志上报，特殊情况下使用\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明                       |\n| ----------------- | ------ | ---- | ---- | -------------------------- |\n| [base](#base)     | Object | 是   | --   | 日志业务信息               |\n| [info](#info)     | Object | 否   | --   | 日志描述，不被 fields 覆盖 |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据             |\n\n#### base\n\n- 对应后统计台业务上报信息\n\n| 参数     | 类型   | 必填 | 说明     |\n| -------- | ------ | ---- | -------- |\n| eid      | string | 是   | 事件 id  |\n| eid_desc | string | 是   | 事件名称 |\n\n#### 示例\n\n```\nreporter.report({\n  eid: 'usr/diy/eid',\n  eid_desc: '非统一上报日志'\n}, {\n  type: '固定信息'\n}, {\n  data: '上报数据',\n})\n```\n","gitHead":"dbc29cf2fb00f0b3222dedbf7a0fb26fcee55880","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"http://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.0.12-beta.2_1628490939062_0.5610477392838422","host":"s3://npm-registry-packages"}},"1.0.12-beta.3":{"name":"@hyext/hyext-reporter","version":"1.0.12-beta.3","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.0.12-beta.3","maintainers":[{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"mylhyz","email":"mylhyz@gmail.com"}],"dist":{"shasum":"810992e79625427bb2df393e360d3c681bd2f936","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.0.12-beta.3.tgz","fileCount":10,"integrity":"sha512-iDci88m2IYZKetgJTHxOaxAfH2vuYuOgVdaS5vN0bCh6S6th3V85C1+vuv0Q5cjoxOeAX2GwYiegCMa6CRQtOQ==","signatures":[{"sig":"MEUCIQCZpgI/KB64DDHDOW4dXZSbOC5LrULwoElkOFWzNr/4CQIgfALLxkulXKM7MYFCnVCUHncF1AFFqLfCEtD6B7NKd8g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":346530,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhEPevCRA9TVsSAnZWagAAt8kP/3J2LBAKCwSa6FRFqntH\nAG+Jlj0mi05TjWSgJyhsn5Lqa3PNGOFul0jpj8azHHkmiiqBO5bs/uCelGEr\nsv/rs9OS51bQ1CsknyrCYoD3kT4UtzrvF8Uzh6IJj8dnYyoAJXSOxjowzrab\n55r/+BnAE4iBzqlAbJj/rcBd2COB895PnlygOf1kHrD94pcsTqK4Nvz4/gtj\n4skRHh736Q6ABvecMUwzNx3p3G5HcGad7ilPjGpxR6sg3EFv8WUAPhpRGJo+\nYvtN4B7MgOFXgk01KU8Ztb6a/il1xGCUC/E2AOsMRulMq4IK4BrI7AIyaHKe\nXPz7vFToeRPxA6S/D3CyG4KP7JarghK3w5dUSvBoZz2w44GebdqLLr0GRRF+\nR77asTk3Cfur7qTTQUFAH6yFNcEjQ3kOgaWIr86BLmeJ1Ryx5/zxG8LUKfT2\n5a6LZemt1SCUSQEm2AJs6H4keT7AaIw8e9EszC8J8+KS6DXcENUuyy9f3k7r\nbaryF7f/XoZTZ6XAF7xV2r5EHFhJgP8J1US4C+bkou+140pyU52Ionm8Zaky\nGtZ1jBd1BDwRSLDixTyETEq9Q71HFpc+Rt7zDK0FQa4NN1cdBmUzIdWGYOim\nu/pIGN38AdqY+dJeRnZL5jwvZWtVw/Hp5GEutasYVnrDMbYDSyWOKX1XWdR9\nbACH\r\n=PTH2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","readme":"## 小程序统一日志上报\n\n- @hyext/hyext-reporter\n- 负责统一小程序日志数据，不做主动上报\n- 提供全局心跳，默认 60 秒心跳一次\n- 日志延迟 500ms 上报，每次上报最多 100 条；\n\n### 安装\n\n```\nnpm install @hyext/hyext-reporter\n```\n\n### 引入\n\n```\nimport { ExtReporter, LogEvents } from '@hyext/hyext-reporter'\n```\n\n### 实例化 - new ExtReporter([config](#config))\n\n#### config\n\n- 实例化配置\n\n| 参数                                | 类型     | 必填 | 默认  | 说明                           |\n| ----------------------------------- | -------- | ---- | ----- | ------------------------------ |\n| [PlatformRequest](#PlatformRequest) | Callback | 是   | --    | 平台定义上报方法               |\n| [CommonInfo](#CommonInfo)           | Object   | 是   | --    | 日志公用信息                   |\n| OpenReport                          | boolean  | 否   | true  | 是否开启上报                   |\n| Debug                               | boolean  | 否   | false | 是否开启 debug                 |\n| ReportDelay                         | number   | 否   | 500   | 延迟上报时差(ms)，0 不延迟     |\n| ReportSizeLimit                     | number   | 否   | 25    | 每次上报大小上限(KB)，0 不限制 |\n| HeartbeatFreq                       | number   | 否   | 60000 | 心跳频率                       |\n\n#### PlatformRequest\n\n> ([params](#params)) => Promise\\<void>\n\n- 日志上报方法\n\n#### params\n\n- 日志上报回调参数\n\n| 属性 | 类型          | 说明         |\n| ---- | ------------- | ------------ |\n| logs | [log](#log)[] | 上报日志数组 |\n\n#### log\n\n- 上报日志信息\n\n| 属性     | 类型   | 说明     |\n| -------- | ------ | -------- |\n| eid      | string | 事件 id  |\n| eid_desc | string | 事件名称 |\n| prop     | Object | 上报数据 |\n\n#### CommonInfo\n\n- 日志公共数据，每条日志的基础信息，可覆盖\n\n| 参数        | 类型   | 必填 | 说明      |\n| ----------- | ------ | ---- | --------- |\n| ext_id      | string | 是   | 小程序 ID |\n| uid         | string | 是   | 用户 ID   |\n| pid         | string | 是   | 主播 ID   |\n| game_id     | string | 是   | 品类 ID   |\n| [env](#env) | string | 是   | 环境信息  |\n\n#### env\n\n- 环境信息\n\n| 取值    | 说明     |\n| ------- | -------- |\n| unknown | 未知环境 |\n| online  | 正式环境 |\n| test    | 测试环境 |\n| dev     | 开发环境 |\n\n#### 示例\n\n- 先通过平台获取基础数据\n\n```\nconst basInfo = {\n  ext_id: \"abababa\", // 小程序ID\n  uid: \"202020\", // 用户uid\n  pid: \"202011\", // 主播ID\n  game_id: \"1002\", // 品类ID\n  env: \"online\",\n}\n```\n\n- 实例化\n\n```\nconst reporter = new ExtReporter({\n  Debug: true, // 是否开启debug日志，可选\n  OpenReport: true, // 是否开启上报，可选\n  PlatformRequest: ({ logs }) => {\n    // 上报日志数据，必填\n    console.log(\"report logs\": logs);\n  },\n  CommonInfo: { // 日志公共数据\n    uid: basInfo.uid,\n    pid: basInfo.pid,\n    ext_id: basInfo.ext_id,\n    game_id: basInfo.game_id,\n    env: basInfo.env\n  }\n});\n```\n\n### 开始心跳 - reporter.startHeartBeat(fields);\n\n- 只有一个全局的心跳\n- 默认 60s 一次心跳\n- 心跳用于统计用户在线时长，用户进入即开始心跳即可\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明           |\n| ----------------- | ------ | ---- | ---- | -------------- |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据 |\n\n#### 示例\n\n```\nreporter.startHeartBeat();\n```\n\n### 停止心跳 - reporter.endHeartBeat()\n\n- 停止全局的心跳\n- 用户退出时调用\n\n#### 示例\n\n```\nreporter.endHeartBeat();\n```\n\n### 普通上报 - reporter.reportBusiMetric(info, fields)\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明                         |\n| ----------------- | ------ | ---- | ---- | ---------------------------- |\n| [info](#info)     | Object | 是   | --   | 日志描述，不会被 fields 覆盖 |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据               |\n\n#### info\n\n- 日志描述信息，不会被 fields 覆盖\n- 系统预制了一些日志描述信息 [LogEvents](#LogEvents) 方便使用\n- 也可定义自己日志描述信息\n\n| 参数 | 类型   | 必填 | 说明       |\n| ---- | ------ | ---- | ---------- |\n| key  | string | 是   | 业务关键词 |\n| desc | string | 是   | 业务描述   |\n\n#### LogEvents\n\n- 预制日志描述信息\n- 均为与 info 同构变量\n- 按需上报即可\n\n| 变量                     | 描述                   |\n| ------------------------ | ---------------------- |\n| LogEvents.USER_ACTIVE    | 用户互动               |\n| LogEvents.USER_SEND_GIFT | 用户送礼               |\n| LogEvents.USER_SEND_WORD | 用户发言               |\n| LogEvents.USER_SUBSCRIBE | 用户订阅               |\n| LogEvents.USER_SHARE     | 用户分享               |\n| LogEvents.GAME_CREATE    | 游戏开局，某轮游戏开始 |\n| LogEvents.GAME_FINISH    | 游戏结束，某轮游戏结束 |\n\n#### fields\n\n- 自定义上报数据\n- 键值不能与以下取值重复，否则会被覆盖\n\n| 敏感键值    | 类型   | 说明           | 数据源      |\n| ----------- | ------ | -------------- | ----------- |\n| key         | string | 业务关键词     | info        |\n| desc        | string | 业务描述       | info        |\n| type        | number | 日志类型       | info/默认值 |\n| client_time | number | 日志创建时间戳 | 系统生成    |\n\n#### 示例\n\n- 自定义日志信息 info 的上报\n\n```\nextReporter.reportBusiMetric({\n  key: 'ext_diy/my_action'\n  desc: '自定义事件描述'\n}, {\n  data : 'your_data'\n});\n```\n\n- 上报用户交互\n\n```\nreporter.reportBusiMetric(LogEvents.USER_ACTIVE, {\n  act: '啥交互？'\n});\n```\n\n- 上报用户送礼\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_GIFT, {\n  gift_id: 2222,\n  gift_count: 1,\n  gift_amount: 100\n});\n```\n\n- 上报用户发言\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_WORD, {\n  word: '你说啥？'\n});\n```\n\n- 上报订阅主播\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SUBSCRIBE);\n```\n\n- 上报用户分享\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SHARE, {\n  share_type: 1\n});\n```\n\n- 上报开始游戏\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_CREATE);\n```\n\n- 上报游戏结束\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_FINISH);\n```\n\n### 非统一日志上报 - reporter.report(base, info, fields)\n\n- 非统一日志上报，特殊情况下使用\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明                       |\n| ----------------- | ------ | ---- | ---- | -------------------------- |\n| [base](#base)     | Object | 是   | --   | 日志业务信息               |\n| [info](#info)     | Object | 否   | --   | 日志描述，不被 fields 覆盖 |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据             |\n\n#### base\n\n- 对应后统计台业务上报信息\n\n| 参数     | 类型   | 必填 | 说明     |\n| -------- | ------ | ---- | -------- |\n| eid      | string | 是   | 事件 id  |\n| eid_desc | string | 是   | 事件名称 |\n\n#### 示例\n\n```\nreporter.report({\n  eid: 'usr/diy/eid',\n  eid_desc: '非统一上报日志'\n}, {\n  type: '固定信息'\n}, {\n  data: '上报数据',\n})\n```\n","gitHead":"b9e3d83b74ae5ad22a5195fc10408fa28d8081bc","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"http://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.0.12-beta.3_1628501935452_0.11907658700103929","host":"s3://npm-registry-packages"}},"1.0.12":{"name":"@hyext/hyext-reporter","version":"1.0.12","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.0.12","maintainers":[{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"mylhyz","email":"mylhyz@gmail.com"}],"dist":{"shasum":"6f07ca8bc2f1a53d2e4f9be4b26662dd69f5f9e8","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.0.12.tgz","fileCount":10,"integrity":"sha512-McFhSoda9LBw5PvaL4E+XlkWeer6UXyJjymZOvmCGOh+MTFIqngkHMfLXUXQd4r8pTpP4Z+RplpxMXXyqEAFtA==","signatures":[{"sig":"MEQCIBgiN0XJqAWBiTMMVPodn+6igeMCFTXZSTwKDxM00NobAiAQ88tFD1ZdqJj2kdeGVzWLOkU0v8RoF2I9qpBapDP1KQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":346333,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhEQjqCRA9TVsSAnZWagAA29MP/j/hFOOEYxfkzdar/vAB\nYLrcd3GWwh0P0DUAPFV75CjjYvHIYdEutykUMd3EcrxeYV0+BMJKaYvPuHdF\nCmtEBLUoVOBxDGWDtNxXW/tG3PddRpZkr769FPOc1H+wn0kz+D1Nf2Dh40y2\nC4vt4FYx+gffHCvxGTLC+zQB6mDpNSlzXpSRKx5XvQpDsyL3xqlod18CGHjk\neNlHTzcRse1w8iIn2D/Xdx2oURqQy6ln4Homi7aNJy8HF7R1jz5q1QG5uvKv\n2Dhex6KB8zqgObYPapx91L7RDhnxE9SYh1YoFmu2iRNKtJw4MT1h5pPZTCPr\nAEqy3lrhfXUdBbzqs13oWF+VRloxSrL/o5GhEegcdiQTMmBpZt39HWyKh3hS\nIrdmwkVTSsSfYILoKKsQO8zDksFoXKLjPccaL7taGu80u5p1aExAr6MhaUwp\n7hJvV4WG0HFV9j5BNs0TURLmoVfcOnZZlbyxlKQy3l+XIh29S0Ph3+qryf6+\nxZXaCEwpkZeZUu0FVMcxmkNSYlc3/u79hDdsf0LuwZacK/M8FX4VbBp9dC6S\n7mBKW7Tuh5cZ1PXDbAxJtF8S1H55UA5AsV8O0EHn55tStFr4f2cLmNs97ZnL\nCW/Om2gO7sHNeXO1XxBGwbDSn0b5CRa0d/iTqZpIba7LwxxpoibEBBdl0DB1\n02Mo\r\n=0XD/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","gitHead":"10f24d3eaf78e669032e0e55bc5b9c0861409736","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"http://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.0.12_1628506346234_0.04544817892653108","host":"s3://npm-registry-packages"}},"1.0.13":{"name":"@hyext/hyext-reporter","version":"1.0.13","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.0.13","maintainers":[{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"mylhyz","email":"mylhyz@gmail.com"}],"dist":{"shasum":"5bb39b63a598f47bc8a5d685cbe5882cfd8c63ee","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.0.13.tgz","fileCount":10,"integrity":"sha512-bk31FgKJnnamCvqDXTyWrpxQnYCGnR3bmKszeSOgD1fEq3ui0RkLXzxhZIcaYkMnv77Kw7mCCTS97BqKvB2f3g==","signatures":[{"sig":"MEYCIQD6DW5+Ypiq6rr2uxaqvdGbrxYjxeb9Yy2dCoRERJSWigIhAOyAGT1vtABo4bN3zb7EMLA/uujPE6SuZi3Rj2gEDE5a","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":346361},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","gitHead":"9efd2765df151c203b2842c3436b9f047e65bc4d","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"http://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.0.13_1632821519668_0.5876575890406552","host":"s3://npm-registry-packages"}},"1.0.15":{"name":"@hyext/hyext-reporter","version":"1.0.15","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.0.15","maintainers":[{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"mylhyz","email":"mylhyz@gmail.com"}],"dist":{"shasum":"6e8f61beabbcab977c37104f83dac0207aa7e530","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.0.15.tgz","fileCount":10,"integrity":"sha512-YYNKzQOmBdLulL47Lp96+9LC/h7RwbG8nbWMvlZl+aaB6vyyIBUi0E1CH2XsyUzhp2L0lApQH2DufQJB+y/DSg==","signatures":[{"sig":"MEYCIQDE0+QDXM+FSBkKXd0hknEY7sVT3p2pAMOUsafAb20qqAIhAP8wy/LMzt/CHrVDjHgIRokBwgUrrTsL1+8EBRv6BoBQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":346362},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","gitHead":"e43df0f5ce662bf31194f17c12fa1a16aaa9cf58","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.0.15_1634628152925_0.7320556254857005","host":"s3://npm-registry-packages"}},"1.0.16-beta.0":{"name":"@hyext/hyext-reporter","version":"1.0.16-beta.0","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.0.16-beta.0","maintainers":[{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"mylhyz","email":"mylhyz@gmail.com"}],"dist":{"shasum":"03141114480ee7d19636da4ee66a2cf85045d5ef","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.0.16-beta.0.tgz","fileCount":10,"integrity":"sha512-NK3qsyqiBXmmlfid0KfC3E+0WLB1dEOlxMXl2LdUUbbdgMwg1wH8k7dhJrYMAzzjUXhAZopG63SsPG13KrX/OA==","signatures":[{"sig":"MEUCIBivSh5lOHtHGDpquMQXY8f/uLhjUKsyXb3eNkLvaZVhAiEAwzOxvpibhMZgrqC6Lnq2BKjoXZh59nmdABEaAOFVB60=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":346773,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhn1lqCRA9TVsSAnZWagAA7R8P/0cqXTpGIi8oPrTAwV6E\nqAlCxjBltRJ2SVdd9CaFIJ5HPbaZALd4dpE9AMco4uxw9Eef4vG1vg1kyBvI\nXHrhWNY0lTiR9BLrw6WfGR6OoQ+sPGcqji1f6OZUJZhGEjxRhxaBKW7q9E6M\nk9mHc8kxap7Oa3GVQa5dXa+hhTr/mnYGbz4a9lId8vN5DeuI7Ijzb6zWgeGn\nJjo7BL3xczraWNJ1K4E/cFZDuXk4iqC51M7A8zLyV7i3AM9upRF+pVGGPhiL\nRzJXqpHsxo+zkc+P4M7m/4981ylXwimX0r2aKpOrgkr+W7gOVAqXwTgE45BV\nCBZP9TN3nYdAaIfx9ECDkt/EC0OvCYsEVYd1pZJbAiYOkomEbcTQ1lzowaxb\nSiLKWVinEN2sW4CF4jvLbfB9KZw72Pn3Lcd4vLjBpAUBx+EYunNeUw9tBC6L\nffHVIs6VohLjl9VY8lLM7gCrxZn+Tmm2BYFwzWSNX+g+Kh0K9HHQ/qZZ9nsz\nPf3k1fq/VohAUWFyVQA0j3tVAnYz01o3xGm7DyR8D4Riixx0Lj6gWUwIL/Fa\nfsA7YRxLXPKX/GES8AhCv6+Al4yuZXhnYDmB3hkY/tXHNVkgdotlpzdD0Kvn\nJLrzz6PfbszSAybyFdR+P4lyjoYAP8yOAtBdHFR3gGZEmnLkcX/jlhR4a4DL\nu044\r\n=MV5I\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","readme":"## 小程序统一日志上报\n\n- @hyext/hyext-reporter\n- 负责统一小程序日志数据，不做主动上报\n- 提供全局心跳，默认 30 秒心跳一次\n- 日志延迟 500ms 上报，每次上报最多 100 条；\n\n### 安装\n\n```\nnpm install @hyext/hyext-reporter\n```\n\n### 引入\n\n```\nimport { ExtReporter, LogEvents } from '@hyext/hyext-reporter'\n```\n\n### 实例化 - new ExtReporter([config](#config))\n\n#### config\n\n- 实例化配置\n\n| 参数                                | 类型     | 必填 | 默认  | 说明                           |\n| ----------------------------------- | -------- | ---- | ----- | ------------------------------ |\n| [PlatformRequest](#PlatformRequest) | Callback | 是   | --    | 平台定义上报方法               |\n| [CommonInfo](#CommonInfo)           | Object   | 是   | --    | 日志公用信息                   |\n| OpenReport                          | boolean  | 否   | true  | 是否开启上报                   |\n| Debug                               | boolean  | 否   | false | 是否开启 debug                 |\n| ReportDelay                         | number   | 否   | 500   | 延迟上报时差(ms)，0 不延迟     |\n| ReportSizeLimit                     | number   | 否   | 25    | 每次上报大小上限(KB)，0 不限制 |\n| HeartbeatFreq                       | number   | 否   | 60000 | 心跳频率                       |\n\n#### PlatformRequest\n\n> ([params](#params)) => Promise\\<void>\n\n- 日志上报方法\n\n#### params\n\n- 日志上报回调参数\n\n| 属性 | 类型          | 说明         |\n| ---- | ------------- | ------------ |\n| logs | [log](#log)[] | 上报日志数组 |\n\n#### log\n\n- 上报日志信息\n\n| 属性     | 类型   | 说明     |\n| -------- | ------ | -------- |\n| eid      | string | 事件 id  |\n| eid_desc | string | 事件名称 |\n| prop     | Object | 上报数据 |\n\n#### CommonInfo\n\n- 日志公共数据，每条日志的基础信息，可覆盖\n\n| 参数        | 类型   | 必填 | 说明      |\n| ----------- | ------ | ---- | --------- |\n| ext_id      | string | 是   | 小程序 ID |\n| uid         | string | 是   | 用户 ID   |\n| pid         | string | 是   | 主播 ID   |\n| game_id     | string | 是   | 品类 ID   |\n| [env](#env) | string | 是   | 环境信息  |\n\n#### env\n\n- 环境信息\n\n| 取值    | 说明     |\n| ------- | -------- |\n| unknown | 未知环境 |\n| online  | 正式环境 |\n| test    | 测试环境 |\n| dev     | 开发环境 |\n\n#### 示例\n\n- 先通过平台获取基础数据\n\n```\nconst basInfo = {\n  ext_id: \"abababa\", // 小程序ID\n  uid: \"202020\", // 用户uid\n  pid: \"202011\", // 主播ID\n  game_id: \"1002\", // 品类ID\n  env: \"online\",\n}\n```\n\n- 实例化\n\n```\nconst reporter = new ExtReporter({\n  Debug: true, // 是否开启debug日志，可选\n  OpenReport: true, // 是否开启上报，可选\n  PlatformRequest: ({ logs }) => {\n    // 上报日志数据，必填\n    console.log(\"report logs\": logs);\n  },\n  CommonInfo: { // 日志公共数据\n    uid: basInfo.uid,\n    pid: basInfo.pid,\n    ext_id: basInfo.ext_id,\n    game_id: basInfo.game_id,\n    env: basInfo.env\n  }\n});\n```\n\n### 开始心跳 - reporter.startHeartBeat(fields);\n\n- 只有一个全局的心跳\n- 默认 30s 一次心跳\n- 心跳用于统计用户在线时长，用户进入即开始心跳即可\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明           |\n| ----------------- | ------ | ---- | ---- | -------------- |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据 |\n\n#### 示例\n\n```\nreporter.startHeartBeat();\n```\n\n### 停止心跳 - reporter.endHeartBeat()\n\n- 停止全局的心跳\n- 用户退出时调用\n\n#### 示例\n\n```\nreporter.endHeartBeat();\n```\n\n### 普通上报 - reporter.reportBusiMetric(info, fields)\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明                         |\n| ----------------- | ------ | ---- | ---- | ---------------------------- |\n| [info](#info)     | Object | 是   | --   | 日志描述，不会被 fields 覆盖 |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据               |\n\n#### info\n\n- 日志描述信息，不会被 fields 覆盖\n- 系统预制了一些日志描述信息 [LogEvents](#LogEvents) 方便使用\n- 也可定义自己日志描述信息\n\n| 参数 | 类型   | 必填 | 说明       |\n| ---- | ------ | ---- | ---------- |\n| key  | string | 是   | 业务关键词 |\n| desc | string | 是   | 业务描述   |\n\n#### LogEvents\n\n- 预制日志描述信息\n- 均为与 info 同构变量\n- 按需上报即可\n\n| 变量                     | 描述                   |\n| ------------------------ | ---------------------- |\n| LogEvents.USER_ACTIVE    | 用户互动               |\n| LogEvents.USER_SEND_GIFT | 用户送礼               |\n| LogEvents.USER_SEND_WORD | 用户发言               |\n| LogEvents.USER_SUBSCRIBE | 用户订阅               |\n| LogEvents.USER_SHARE     | 用户分享               |\n| LogEvents.GAME_CREATE    | 游戏开局，某轮游戏开始 |\n| LogEvents.GAME_FINISH    | 游戏结束，某轮游戏结束 |\n\n#### fields\n\n- 自定义上报数据\n- 键值不能与以下取值重复，否则会被覆盖\n\n| 敏感键值    | 类型   | 说明           | 数据源      |\n| ----------- | ------ | -------------- | ----------- |\n| key         | string | 业务关键词     | info        |\n| desc        | string | 业务描述       | info        |\n| type        | number | 日志类型       | info/默认值 |\n| client_time | number | 日志创建时间戳 | 系统生成    |\n\n#### 示例\n\n- 自定义日志信息 info 的上报\n\n```\nextReporter.reportBusiMetric({\n  key: 'ext_diy/my_action'\n  desc: '自定义事件描述'\n}, {\n  data : 'your_data'\n});\n```\n\n- 上报用户交互\n\n```\nreporter.reportBusiMetric(LogEvents.USER_ACTIVE, {\n  act: '啥交互？'\n});\n```\n\n- 上报用户送礼\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_GIFT, {\n  gift_id: 2222,\n  gift_count: 1,\n  gift_amount: 100\n});\n```\n\n- 上报用户发言\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_WORD, {\n  word: '你说啥？'\n});\n```\n\n- 上报订阅主播\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SUBSCRIBE);\n```\n\n- 上报用户分享\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SHARE, {\n  share_type: 1\n});\n```\n\n- 上报开始游戏\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_CREATE);\n```\n\n- 上报游戏结束\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_FINISH);\n```\n\n### 非统一日志上报 - reporter.report(base, info, fields)\n\n- 非统一日志上报，特殊情况下使用\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明                       |\n| ----------------- | ------ | ---- | ---- | -------------------------- |\n| [base](#base)     | Object | 是   | --   | 日志业务信息               |\n| [info](#info)     | Object | 否   | --   | 日志描述，不被 fields 覆盖 |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据             |\n\n#### base\n\n- 对应后统计台业务上报信息\n\n| 参数     | 类型   | 必填 | 说明     |\n| -------- | ------ | ---- | -------- |\n| eid      | string | 是   | 事件 id  |\n| eid_desc | string | 是   | 事件名称 |\n\n#### 示例\n\n```\nreporter.report({\n  eid: 'usr/diy/eid',\n  eid_desc: '非统一上报日志'\n}, {\n  type: '固定信息'\n}, {\n  data: '上报数据',\n})\n```\n\n### 清除缓存日志 - reporter.clear()\n","gitHead":"0da80c526ddf5feaffc6e55589993914d6e9de02","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.0.16-beta.0_1637833066012_0.17884327781557863","host":"s3://npm-registry-packages"}},"1.0.16":{"name":"@hyext/hyext-reporter","version":"1.0.16","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.0.16","maintainers":[{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"mylhyz","email":"mylhyz@gmail.com"}],"dist":{"shasum":"adb5a59c00f0c47d9bba72609dc5ac0ea7b94cb2","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.0.16.tgz","fileCount":10,"integrity":"sha512-uIthYRZTfa/ZygS86GGnHvdiiZpvZMKl2T63/kGLhJyi3zQ2fA53hz2OZJ3hxAIh3qa976aOooLUWRpkZVwaug==","signatures":[{"sig":"MEQCID0BxT4UzF2YY8ofhaqAXTU1ajrjwd2r5uNS/vkrmgD9AiAIxh+tAyjBND4PilFgSVCWS0llGKk9MvIkekuSznjFxA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":346929,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhoK+RCRA9TVsSAnZWagAA71EQAIoEh+/W//we+ko5APq1\nbo2uKQufxO+CQFkLGUnMAV+79sLXyll9HMX+ICTwZRpHm4bqcxWdJZiE2EUT\nD5sZtPltnuMvXxFp0JDh2/Bp6uJBOE3muvKFO9o7JxRltOAsJBfXQuWXyO0w\ncxQ0yjDZJq4bRF0uquMo8R4H/her5FcMnReOFgZKSoFkqGkBkkJsQEJdy/Fa\nL/RRzlqXEZBmGfiH8lZU570IkGOOgdVh5Cdv7m0V71s8HXG/JcDegfAEH/lG\nExLHHwXYNujPc/Pm5WeFSi4MjKFU1+SoEJiTXFAFFrSt9IU5o7HLSEXP0iRY\n26wbh4LTOQuvBl+EhFN43Q6lOn7FdibuaQICYnDnjnKk2Kyg09egaH+fe3tQ\nJgzycQ0zcRPAKQM0HJv+azDMTNRZNX2/NL2CiYe/lzjiWsJu86p5NR0VgqRt\n+S0I/Ipg5af41QWAOqqgpRzSQHOtDzU/og2mYR9lKbWmO62vKV9rxMHExpID\nwdwfwJiIZYsR8KlmpXnVeCupfVQkb05WOeI44jHr/UZuA8NVbCMiii/uj2YR\nC1iffv5COq1nylOUWHx9mSs2hv047LgoZU8DTWS/56rIEnWk8bcwWiuEB16F\nHzvWxruVyuNj35UDUynwi2m7DV9bsPvF0YnV22NBRxFkFEfwG+RuPOQq4Ge/\n0y2k\r\n=W3Bb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","gitHead":"84625b2c38c3ab8247b0e1b2ebdf5b0b70728401","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.0.16_1637920657253_0.45957709918625733","host":"s3://npm-registry-packages"}},"1.0.17-beta.0":{"name":"@hyext/hyext-reporter","version":"1.0.17-beta.0","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.0.17-beta.0","maintainers":[{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"mylhyz","email":"mylhyz@gmail.com"}],"dist":{"shasum":"0174fb1a7ab129f70bb2744f717816dc100000bb","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.0.17-beta.0.tgz","fileCount":10,"integrity":"sha512-EcpPSPyEqIZht2C2gxr//InoeTHoYr4I16GvXWj5qfEbYhjCvZYc5B+1tT/+BFgffkO9GhKYCvD7bs5f9awlyQ==","signatures":[{"sig":"MEUCICFC7qNwnCX2jPyHvAP4irFfRcHtrlolsYkweTeNvPRMAiEAgS8tKj1vzcbaXbKC2V5SH8RhkMTvjIdR/aV6aV3a488=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":346583,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhurh9CRA9TVsSAnZWagAAm6sP/0BJMbu1tVTB8TNDgFnV\nrhNaMN4qil/Eb2jQSs1rDV+F7AeB8cByrHQh/QUcM5/cwgh9ALb6Qm4gcEHC\n1PIApsWtcXu1of3xJifGF6+4tUg54+qqhfAZ2hQh0rM07C21smHrBp9Lt4ud\nu8yBCde2bDKw5koV4sAuK81iZjQaP11wgucFJIPVgCaXrFcBptrPE2PX4s3L\n9SrP8GWppXV6u2qrXBWpaX960oYIZ/RR0GOV2RDkKEkr+w/AA0mMSjqLF/BB\n0BONccPyWHTkBSAn5QBwcM+GMv+URSAtN6cCj5tlJewoAaFucoJ4T4/J948h\n6DlOLoyTjqI5RxKKiSuRIFYDgShA4l1DKkQ8j9MdqH8klmpf88ejRcXW5P6K\nqMgV3h2mk+RvzyBnjEVOOqJba046FlJiH5uWxp18/HCm71EkYmEGI/NC7zm2\n9PRxMIWJNphAQKZpQoVYxBk+TpcjWIb24v7yfZqCuVE6F4nb31+F8cQMV9r4\nV3/XdEUasytl6e5NzNzqtsCg0A42RTjVuZxuPShpn+8orgRQTfmyAAgnlxj1\nh307nZLfgnCI02/Kua2peoXMIrazoN9uQPDsXf43M8xkxWRjzurCgs5V9ltJ\n9I0wszBdmnQpZOdr76gaXlrJ44RbfUDuSPKrgTr9Qef5bP26YNskniQT41+8\n4bHc\r\n=6k6h\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","readme":"## 小程序统一日志上报\n\n- @hyext/hyext-reporter\n- 负责统一小程序日志数据，不做主动上报\n- 提供全局心跳，默认 30 秒心跳一次\n- 日志延迟 500ms 上报，每次上报最多 100 条；\n\n### 安装\n\n```\nnpm install @hyext/hyext-reporter\n```\n\n### 引入\n\n```\nimport { ExtReporter, LogEvents } from '@hyext/hyext-reporter'\n```\n\n### 实例化 - new ExtReporter([config](#config))\n\n#### config\n\n- 实例化配置\n\n| 参数                                | 类型     | 必填 | 默认  | 说明                           |\n| ----------------------------------- | -------- | ---- | ----- | ------------------------------ |\n| [PlatformRequest](#PlatformRequest) | Callback | 是   | --    | 平台定义上报方法               |\n| [CommonInfo](#CommonInfo)           | Object   | 是   | --    | 日志公用信息                   |\n| OpenReport                          | boolean  | 否   | true  | 是否开启上报                   |\n| Debug                               | boolean  | 否   | false | 是否开启 debug                 |\n| ReportDelay                         | number   | 否   | 500   | 延迟上报时差(ms)，0 不延迟     |\n| ReportSizeLimit                     | number   | 否   | 25    | 每次上报大小上限(KB)，0 不限制 |\n| HeartbeatFreq                       | number   | 否   | 60000 | 心跳频率                       |\n\n#### PlatformRequest\n\n> ([params](#params)) => Promise\\<void>\n\n- 日志上报方法\n\n#### params\n\n- 日志上报回调参数\n\n| 属性 | 类型          | 说明         |\n| ---- | ------------- | ------------ |\n| logs | [log](#log)[] | 上报日志数组 |\n\n#### log\n\n- 上报日志信息\n\n| 属性     | 类型   | 说明     |\n| -------- | ------ | -------- |\n| eid      | string | 事件 id  |\n| eid_desc | string | 事件名称 |\n| prop     | Object | 上报数据 |\n\n#### CommonInfo\n\n- 日志公共数据，每条日志的基础信息，可覆盖\n\n| 参数        | 类型   | 必填 | 说明      |\n| ----------- | ------ | ---- | --------- |\n| ext_id      | string | 是   | 小程序 ID |\n| uid         | string | 是   | 用户 ID   |\n| pid         | string | 是   | 主播 ID   |\n| game_id     | string | 是   | 品类 ID   |\n| [env](#env) | string | 是   | 环境信息  |\n\n#### env\n\n- 环境信息\n\n| 取值    | 说明     |\n| ------- | -------- |\n| unknown | 未知环境 |\n| online  | 正式环境 |\n| test    | 测试环境 |\n| dev     | 开发环境 |\n\n#### 示例\n\n- 先通过平台获取基础数据\n\n```\nconst basInfo = {\n  ext_id: \"abababa\", // 小程序ID\n  uid: \"202020\", // 用户uid\n  pid: \"202011\", // 主播ID\n  game_id: \"1002\", // 品类ID\n  env: \"online\",\n}\n```\n\n- 实例化\n\n```\nconst reporter = new ExtReporter({\n  Debug: true, // 是否开启debug日志，可选\n  OpenReport: true, // 是否开启上报，可选\n  PlatformRequest: ({ logs }) => {\n    // 上报日志数据，必填\n    console.log(\"report logs\": logs);\n  },\n  CommonInfo: { // 日志公共数据\n    uid: basInfo.uid,\n    pid: basInfo.pid,\n    ext_id: basInfo.ext_id,\n    game_id: basInfo.game_id,\n    env: basInfo.env\n  }\n});\n```\n\n### 开始心跳 - reporter.startHeartBeat(fields);\n\n- 只有一个全局的心跳\n- 默认 30s 一次心跳\n- 心跳用于统计用户在线时长，用户进入即开始心跳即可\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明           |\n| ----------------- | ------ | ---- | ---- | -------------- |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据 |\n\n#### 示例\n\n```\nreporter.startHeartBeat();\n```\n\n### 停止心跳 - reporter.endHeartBeat()\n\n- 停止全局的心跳\n- 用户退出时调用\n\n#### 示例\n\n```\nreporter.endHeartBeat();\n```\n\n### 普通上报 - reporter.reportBusiMetric(info, fields)\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明                         |\n| ----------------- | ------ | ---- | ---- | ---------------------------- |\n| [info](#info)     | Object | 是   | --   | 日志描述，不会被 fields 覆盖 |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据               |\n\n#### info\n\n- 日志描述信息，不会被 fields 覆盖\n- 系统预制了一些日志描述信息 [LogEvents](#LogEvents) 方便使用\n- 也可定义自己日志描述信息\n\n| 参数 | 类型   | 必填 | 说明       |\n| ---- | ------ | ---- | ---------- |\n| key  | string | 是   | 业务关键词 |\n| desc | string | 是   | 业务描述   |\n\n#### LogEvents\n\n- 预制日志描述信息\n- 均为与 info 同构变量\n- 按需上报即可\n\n| 变量                     | 描述                   |\n| ------------------------ | ---------------------- |\n| LogEvents.USER_ACTIVE    | 用户互动               |\n| LogEvents.USER_SEND_GIFT | 用户送礼               |\n| LogEvents.USER_SEND_WORD | 用户发言               |\n| LogEvents.USER_SUBSCRIBE | 用户订阅               |\n| LogEvents.USER_SHARE     | 用户分享               |\n| LogEvents.GAME_CREATE    | 游戏开局，某轮游戏开始 |\n| LogEvents.GAME_FINISH    | 游戏结束，某轮游戏结束 |\n\n#### fields\n\n- 自定义上报数据\n- 键值不能与以下取值重复，否则会被覆盖\n\n| 敏感键值    | 类型   | 说明           | 数据源      |\n| ----------- | ------ | -------------- | ----------- |\n| key         | string | 业务关键词     | info        |\n| desc        | string | 业务描述       | info        |\n| type        | number | 日志类型       | info/默认值 |\n| client_time | number | 日志创建时间戳 | 系统生成    |\n\n#### 示例\n\n- 自定义日志信息 info 的上报\n\n```\nextReporter.reportBusiMetric({\n  key: 'ext_diy/my_action'\n  desc: '自定义事件描述'\n}, {\n  data : 'your_data'\n});\n```\n\n- 上报用户交互\n\n```\nreporter.reportBusiMetric(LogEvents.USER_ACTIVE, {\n  act: '啥交互？'\n});\n```\n\n- 上报用户送礼\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_GIFT, {\n  gift_id: 2222,\n  gift_count: 1,\n  gift_amount: 100,\n  total_pay: 0,\n});\n```\n\n- 上报用户发言\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_WORD, {\n  word: '你说啥？'\n});\n```\n\n- 上报订阅主播\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SUBSCRIBE);\n```\n\n- 上报用户分享\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SHARE, {\n  share_type: 1\n});\n```\n\n- 上报开始游戏\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_CREATE);\n```\n\n- 上报游戏结束\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_FINISH);\n```\n\n### 非统一日志上报 - reporter.report(base, info, fields)\n\n- 非统一日志上报，特殊情况下使用\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明                       |\n| ----------------- | ------ | ---- | ---- | -------------------------- |\n| [base](#base)     | Object | 是   | --   | 日志业务信息               |\n| [info](#info)     | Object | 否   | --   | 日志描述，不被 fields 覆盖 |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据             |\n\n#### base\n\n- 对应后统计台业务上报信息\n\n| 参数     | 类型   | 必填 | 说明     |\n| -------- | ------ | ---- | -------- |\n| eid      | string | 是   | 事件 id  |\n| eid_desc | string | 是   | 事件名称 |\n\n#### 示例\n\n```\nreporter.report({\n  eid: 'usr/diy/eid',\n  eid_desc: '非统一上报日志'\n}, {\n  type: '固定信息'\n}, {\n  data: '上报数据',\n})\n```\n\n### 清除缓存日志 - reporter.clear()\n","gitHead":"3cf24c74a95cf4e9f86bfdf2507b00a7af01a037","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.0.17-beta.0_1639626877514_0.9741714740026275","host":"s3://npm-registry-packages"}},"1.0.17":{"name":"@hyext/hyext-reporter","version":"1.0.17","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.0.17","maintainers":[{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"mylhyz","email":"mylhyz@gmail.com"}],"dist":{"shasum":"2ea33ba3a9098eaedc18ba099c320459d19c69a3","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.0.17.tgz","fileCount":10,"integrity":"sha512-cUepKar+w3ZNNDhAGPPJZ915oPAfCrgGx/9YzG+4Rm8DeOCgLvNA+9QV+QjEdYiKg/9XTr+kVE5yY0CXMuKWdA==","signatures":[{"sig":"MEYCIQCcr9RSxfvhk9A23N9moGuyx24kGUO/EvIrPAMfBsxwwgIhAOQF8UIDiL5IAL/HasBTwxYeBpwhntlaihLbQm+aRmke","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":346758,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhut6YCRA9TVsSAnZWagAA0QUP/2shWv2ac8mpY+VdnP5i\nx9F+ONKLrYVQVdFCzTrUB8uBX2ap1LRKouVi6JkfAUDkO2dYZjRjEMM0Li2s\no4O4/W+Y/6e0KPLFVWHxFPG5V6Eq0hAONgfKDbAR+TSpxgPVM1YtXpaMfHYq\nrlMVaNxCPOdIFf2SwnsjOOAlp5VUQe3CQOYSG9DMQaGZOuMKxiHgVHMfxDw2\nIv68jZ6Fkr7ozhp9wAB1/ljynpGyDBgz/Fl8l3QWCPBQTKcmKobbvWVXjPmN\nSnAOcdByNEd/talzDjm/Kl1FYCHPyOfJvI+yNJCKD9SgqY3xI1nDTPth746H\nXiRlEssjLI2raO3nmx/PZaSUZH7N3QQCiNwx9TuwNaLwOcWjyXBxm2a2b886\nZPea59aLog6hG4c+uPlOnD3kKw1Ch4I3gEO5P/vIuGhzKVDNKXiSqH8xiz8A\nO/aaku7qxSWbHE+jN5zMHkrTc3C/wSxtFxV6HgU7GaAmjZFdaWFhSjQD9Dvb\nWKnnXtV0HGJZi8njHdfPhLmkqO8z9UCvS27h4HNwFj5fmVZJu1rEFotVZea8\nmzVDGhU5gQq3d6K15Jq+xy1Xg393TgjQDMyod+elYL7DZol5++67nVChAX0/\nIIg7cG5TheHVE4jPn46yxqOX0Nkyjkdgj8UR9WHoBoh3cojl+sG7bTKHRbMH\n8yaU\r\n=pXzV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","gitHead":"6c84eddcb4a567e10f9d0666ec46156d17966150","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.0.17_1639636632248_0.727780141788519","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"@hyext/hyext-reporter","version":"1.2.0","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.2.0","maintainers":[{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"mylhyz","email":"mylhyz@gmail.com"}],"dist":{"shasum":"f0a54846ebe3f397cd026d6ac54b11113d8f8a8c","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.2.0.tgz","fileCount":10,"integrity":"sha512-lE3FN3bIU8N7i8QIRilOYJ2zspxBEV/M3t89iEUqCeIkPkdNVoSxxQI6QuuHBBr8DPKotk8RN74DlCSjRZ+Y6A==","signatures":[{"sig":"MEUCIQDrlBGGLAEzBGhbrplJaXdSSBqVcfbzfVzMF2L8ml74cAIgfmbNzSvR8mivY13uTNTn0BhkNCSB7f+TpWKLl1B+/Ro=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":346564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhuuI6CRA9TVsSAnZWagAAhEcP/2EMT+YIhNUrbavR9VQv\nJD1Svog2FtQdhm8uRFx1Gutd6wUj0X1KfuZMAvdmMHHZmX8XOlJOSdinxkM7\njQtAXL57UMGAnPEmFV+D9szYX305x/UOCIycCl/j/VlozfR44VIZQJViD3c5\nXT4/RGzj4/uu7mj0V8Z3x1MaRUeuatJxCTN5Z+ybC6igzplaRw2ktBeOqcdL\nSmrfgJH0lOHDjs8NkTTNJWluKrk3XtrW9/qMkBeL51uTQbM80n5G/+qXik2f\nSRSFIKQQH2IBU3AepNpIJv/eaLuyAM8rHAme4bbzpXSalO5qqwKqhX8GbM6S\nKD3njIiKyRveg4y0xOO7z1+yAE06MdXHZW8Fig7J4FdBvI1lxchMiCh89xKa\nrqvC8Zye3Tu83TFf6ngpmQnhdNCrI9zsYY5slFBDUp0gClwAzivvosj1GskV\n/d2HUKQ/GjvWQclSzCP61IfWVRAR8HphAs+jaeMDsJJ5ZKMSi9I48+cFStYa\n2MT5iZZqhh+U1lWL3NzDqKnLf1CKPR2En16xkrHWfKgcjDpgxxx2OYVufk7Y\nb9fWOEfS03iEHKoeye/KbUta3oENf9tkOWQ30p9QKtUpfIndK5jjDdL10OAY\nzqUMOqojrNDG5O+XRCBsFUhV8o2NFe0FtX9xsBisAwkjZiUuaPVr+ryZgkKJ\nmnak\r\n=6p3t\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","gitHead":"f4c8c7387bf619831e16d50f6221b1e9d5aabecd","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.2.0_1639637562600_0.5985971401698129","host":"s3://npm-registry-packages"}},"1.2.1-beta.0":{"name":"@hyext/hyext-reporter","version":"1.2.1-beta.0","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.2.1-beta.0","maintainers":[{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"mylhyz","email":"mylhyz@gmail.com"}],"dist":{"shasum":"e6ffb0bb435902eb5480a6758371cd3f9ec8bc23","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.2.1-beta.0.tgz","fileCount":10,"integrity":"sha512-pr9qRKCHSrMziE7lLi5de8rI5A/Ew2ZUpIBbCU81sgxWeDyxN7fypedEcJLPQ09LM4bMSztxeZiNTrnOUyXFKQ==","signatures":[{"sig":"MEUCIClutg8v7kFOJRYFY5JpmBL20G5LKdGspAlnu/0YznLPAiEA2UKPkJu/ry1DvyKSHoiZXgCFCi/HaxSye9UfTqAXuOY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":346571,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhvJRUCRA9TVsSAnZWagAAWEcP/1aqdxNxbZUliOYmDMuT\nYNtEWeTW/+vp4Aac7FqAz2zKocQJmxxwCzFzQdXdKh+wXPEDFZFQsVobBcP5\nAzVgP+MOrfSsi2Y+m2ahG92HNCwtWaSgCWU69OzRHvJztgj8JmVej+mWms8Y\nD4KfHBp70HmdiJpZA0xcpskoQpxrs9ixSqmCJ/6Hf50JIY8Lc3wy/O9Zus8V\nRbGNYxBYzpPFyVfYzj/DkvKuYkf1+DgiS/ZPjCuWRTFCW6mOIs2q+L6BqvGv\nHev9kgSLOQ81Q/03gIIYP4gZ9WF9+eTUZUwVdFj8Ql1ujJU/AzDJIxBas2Q0\nAZ2Vjyy8rXRoYkdN1qZtxry/FjDh5XUBSQ3ynCPKD9YpCckfUvE7CpKjjHrm\nwYC3De8/CCBbH+NZAD74emeQtY4XHVhpABBMSzPYfMkMS15lOx32xeR9Okle\nvScwV2iFNNTZvRbdvbit7/Wdo+3Ip1vnFv3AjnOPHfRaqKEUbnfP4PzTUDJ7\nqcV6XAMTp0iblvA080xu8Bpy3eTiKAqVKL+BGbry969o+pyEMat2KF72+3sT\nenV9pm74F2uyH+jaU9q6OIL/RXILyS4jzMmsL0XefRW3VlyDJanD4mCKdguR\na77ydL67cpEAPnLJAWFKyemkxOr1t1jnFDv+ng1jrXB/8kYhNokMPNU9CWEy\n9n2b\r\n=rbTv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","readme":"## 小程序统一日志上报\n\n- @hyext/hyext-reporter\n- 负责统一小程序日志数据，不做主动上报\n- 提供全局心跳，默认 30 秒心跳一次\n- 日志延迟 500ms 上报，每次上报最多 100 条；\n\n### 安装\n\n```\nnpm install @hyext/hyext-reporter\n```\n\n### 引入\n\n```\nimport { ExtReporter, LogEvents } from '@hyext/hyext-reporter'\n```\n\n### 实例化 - new ExtReporter([config](#config))\n\n#### config\n\n- 实例化配置\n\n| 参数                                | 类型     | 必填 | 默认  | 说明                           |\n| ----------------------------------- | -------- | ---- | ----- | ------------------------------ |\n| [PlatformRequest](#PlatformRequest) | Callback | 是   | --    | 平台定义上报方法               |\n| [CommonInfo](#CommonInfo)           | Object   | 是   | --    | 日志公用信息                   |\n| OpenReport                          | boolean  | 否   | true  | 是否开启上报                   |\n| Debug                               | boolean  | 否   | false | 是否开启 debug                 |\n| ReportDelay                         | number   | 否   | 500   | 延迟上报时差(ms)，0 不延迟     |\n| ReportSizeLimit                     | number   | 否   | 25    | 每次上报大小上限(KB)，0 不限制 |\n| HeartbeatFreq                       | number   | 否   | 60000 | 心跳频率                       |\n\n#### PlatformRequest\n\n> ([params](#params)) => Promise\\<void>\n\n- 日志上报方法\n\n#### params\n\n- 日志上报回调参数\n\n| 属性 | 类型          | 说明         |\n| ---- | ------------- | ------------ |\n| logs | [log](#log)[] | 上报日志数组 |\n\n#### log\n\n- 上报日志信息\n\n| 属性     | 类型   | 说明     |\n| -------- | ------ | -------- |\n| eid      | string | 事件 id  |\n| eid_desc | string | 事件名称 |\n| prop     | Object | 上报数据 |\n\n#### CommonInfo\n\n- 日志公共数据，每条日志的基础信息，可覆盖\n\n| 参数        | 类型   | 必填 | 说明      |\n| ----------- | ------ | ---- | --------- |\n| ext_id      | string | 是   | 小程序 ID |\n| uid         | string | 是   | 用户 ID   |\n| pid         | string | 是   | 主播 ID   |\n| game_id     | string | 是   | 品类 ID   |\n| [env](#env) | string | 是   | 环境信息  |\n\n#### env\n\n- 环境信息\n\n| 取值    | 说明     |\n| ------- | -------- |\n| unknown | 未知环境 |\n| online  | 正式环境 |\n| test    | 测试环境 |\n| dev     | 开发环境 |\n\n#### 示例\n\n- 先通过平台获取基础数据\n\n```\nconst basInfo = {\n  ext_id: \"abababa\", // 小程序ID\n  uid: \"202020\", // 用户uid\n  pid: \"202011\", // 主播ID\n  game_id: \"1002\", // 品类ID\n  env: \"online\",\n}\n```\n\n- 实例化\n\n```\nconst reporter = new ExtReporter({\n  Debug: true, // 是否开启debug日志，可选\n  OpenReport: true, // 是否开启上报，可选\n  PlatformRequest: ({ logs }) => {\n    // 上报日志数据，必填\n    console.log(\"report logs\": logs);\n  },\n  CommonInfo: { // 日志公共数据\n    uid: basInfo.uid,\n    pid: basInfo.pid,\n    ext_id: basInfo.ext_id,\n    game_id: basInfo.game_id,\n    env: basInfo.env\n  }\n});\n```\n\n### 开始心跳 - reporter.startHeartBeat(fields);\n\n- 只有一个全局的心跳\n- 默认 30s 一次心跳\n- 心跳用于统计用户在线时长，用户进入即开始心跳即可\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明           |\n| ----------------- | ------ | ---- | ---- | -------------- |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据 |\n\n#### 示例\n\n```\nreporter.startHeartBeat();\n```\n\n### 停止心跳 - reporter.endHeartBeat()\n\n- 停止全局的心跳\n- 用户退出时调用\n\n#### 示例\n\n```\nreporter.endHeartBeat();\n```\n\n### 普通上报 - reporter.reportBusiMetric(info, fields)\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明                         |\n| ----------------- | ------ | ---- | ---- | ---------------------------- |\n| [info](#info)     | Object | 是   | --   | 日志描述，不会被 fields 覆盖 |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据               |\n\n#### info\n\n- 日志描述信息，不会被 fields 覆盖\n- 系统预制了一些日志描述信息 [LogEvents](#LogEvents) 方便使用\n- 也可定义自己日志描述信息\n\n| 参数 | 类型   | 必填 | 说明       |\n| ---- | ------ | ---- | ---------- |\n| key  | string | 是   | 业务关键词 |\n| desc | string | 是   | 业务描述   |\n\n#### LogEvents\n\n- 预制日志描述信息\n- 均为与 info 同构变量\n- 按需上报即可\n\n| 变量                     | 描述                   |\n| ------------------------ | ---------------------- |\n| LogEvents.USER_ACTIVE    | 用户互动               |\n| LogEvents.USER_SEND_GIFT | 用户送礼               |\n| LogEvents.USER_SEND_WORD | 用户发言               |\n| LogEvents.USER_SUBSCRIBE | 用户订阅               |\n| LogEvents.USER_SHARE     | 用户分享               |\n| LogEvents.GAME_CREATE    | 游戏开局，某轮游戏开始 |\n| LogEvents.GAME_FINISH    | 游戏结束，某轮游戏结束 |\n\n#### fields\n\n- 自定义上报数据\n- 键值不能与以下取值重复，否则会被覆盖\n\n| 敏感键值    | 类型   | 说明           | 数据源      |\n| ----------- | ------ | -------------- | ----------- |\n| key         | string | 业务关键词     | info        |\n| desc        | string | 业务描述       | info        |\n| type        | number | 日志类型       | info/默认值 |\n| client_time | number | 日志创建时间戳 | 系统生成    |\n\n#### 示例\n\n- 自定义日志信息 info 的上报\n\n```\nextReporter.reportBusiMetric({\n  key: 'ext_diy/my_action'\n  desc: '自定义事件描述'\n}, {\n  data : 'your_data'\n});\n```\n\n- 上报用户交互\n\n```\nreporter.reportBusiMetric(LogEvents.USER_ACTIVE, {\n  act: '啥交互？'\n});\n```\n\n- 上报用户送礼\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_GIFT, {\n  gift_id: 2222,\n  gift_count: 1,\n  gift_amount: 100,\n  total_pay: 0,\n});\n```\n\n- 上报用户发言\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_WORD, {\n  word: '你说啥？'\n});\n```\n\n- 上报订阅主播\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SUBSCRIBE);\n```\n\n- 上报用户分享\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SHARE, {\n  share_type: 1\n});\n```\n\n- 上报开始游戏\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_CREATE);\n```\n\n- 上报游戏结束\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_FINISH);\n```\n\n### 非统一日志上报 - reporter.report(base, info, fields)\n\n- 非统一日志上报，特殊情况下使用\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明                       |\n| ----------------- | ------ | ---- | ---- | -------------------------- |\n| [base](#base)     | Object | 是   | --   | 日志业务信息               |\n| [info](#info)     | Object | 否   | --   | 日志描述，不被 fields 覆盖 |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据             |\n\n#### base\n\n- 对应后统计台业务上报信息\n\n| 参数     | 类型   | 必填 | 说明     |\n| -------- | ------ | ---- | -------- |\n| eid      | string | 是   | 事件 id  |\n| eid_desc | string | 是   | 事件名称 |\n\n#### 示例\n\n```\nreporter.report({\n  eid: 'usr/diy/eid',\n  eid_desc: '非统一上报日志'\n}, {\n  type: '固定信息'\n}, {\n  data: '上报数据',\n})\n```\n\n### 清除缓存日志 - reporter.clear()\n","gitHead":"c4b437f74dbca28cbd14da8ffb48de50e2ff9b18","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.2.1-beta.0_1639748692239_0.16063420533203865","host":"s3://npm-registry-packages"}},"1.2.1":{"name":"@hyext/hyext-reporter","version":"1.2.1","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.2.1","maintainers":[{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"mylhyz","email":"mylhyz@gmail.com"}],"dist":{"shasum":"ead73dc90603bd132cd58dfbbf99927c06c10d0e","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.2.1.tgz","fileCount":10,"integrity":"sha512-2Zy7kcnKGX0xaxBXa/UOikDbobTPCN5aM9jUpQBoRNHV20h8QImLox0M4J0iWaBL/Bjz04lboiJrlpS6RsTBcQ==","signatures":[{"sig":"MEUCIAbiMenaDmmfeiK7F+vYLEZOCauiS+Bnm+2xLZWEINcvAiEAjz17GE7lh8raRZscFQay2d7AEmbflfXwBulUY7O4M/k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":346564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhwFqvCRA9TVsSAnZWagAALgkQAIA+/ZiOYisQXhno6nkB\nBmw1orxniFxKzv3WV3hprxCxY2SBJ1BoC6WP+QidFc+gzb+WFZIxEH1n3j+r\n00R8AoVCPqucFq1vJElRWP+7WEsmRgGVphPTvJwaTttpGhVFudrOSnxIIGfx\nNF6ndtgpdvGfTQ6LW9HOqqnFWLkRqj0BtvxAtegPplM9MiFHaXroqlxznNUU\ncv9UaefblMrFjUQuIEx+z2inMQwJ2FxqHifNCfoTRXouPm+yDBCdmeBN/a+L\nWL1Et3axJiaZxRcQzwJqEzEqNwxE/Bwk1KxuJJl8zR0g9mBkO1cTWSKzaUVC\n3bA5OWYzkNWQu2/BIFz+mWsQCoNzhJN9h/OqQIpzBaXNPSrGTrhcJJ8lIR4v\npVODUXI3PfteQ7kcQxkbBB25euCQBXuoqOqAXsIWjRsfwDEfN0w3mvo5rkni\ny7SPPjkjP0hGFZgcuHqiAWv2bOkoKqkpRM6zZQZ2hj3RCPIno7SvnjEfTl5g\ntGkFkWWKH9UzwxbyT8pqBv03p1ml314mueeav3IE7CRyh12M9iKC/GvL3Ja2\nItGTbf2jzmFtbZU2Fkp0iVgtiuEVBxm4fkKmpCfCoIe0iS+GqznCqT1wKWJd\nlcrr4R6a1wLC1e9mUq/gM5gmsPjWsWZ/9w2a3Z/yvkEKrdn2jqzO45Mp6MJV\n1SKl\r\n=vwIT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","gitHead":"fc8536150d1beb52375f3037fab7c6a46f61b5b0","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.2.1_1639996079512_0.39573331582316307","host":"s3://npm-registry-packages"}},"1.2.2-beta.0":{"name":"@hyext/hyext-reporter","version":"1.2.2-beta.0","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.2.2-beta.0","maintainers":[{"name":"hy-ext","email":"luzuoqing@huya.com"},{"name":"menglexing","email":"menglexing@vip.qq.com"},{"name":"wundereye","email":"icymindt@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"jch2020","email":"jchjob@163.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"},{"name":"quoc-vi","email":"13580557171@163.com"},{"name":"mylhyz","email":"mylhyz@gmail.com"}],"dist":{"shasum":"1919c2d9b2fcda0ababe34a284c7573e95fd0571","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.2.2-beta.0.tgz","fileCount":10,"integrity":"sha512-tp4vOvmqC8lo/uEHoHLkPBOOx8gjNyCc95aD3ZtRzv0Pkvcu1AoWNdTiRmZk8RKWB3EpqS0MTAKwgIMOUI8EpQ==","signatures":[{"sig":"MEYCIQD0UkKBkrJci6KUAR8ejktSt+ALv3738Hnv+NjRsJ316QIhAMXPq0hiu1WGQItZe3v2VuUd6AVoP436qiAdTdjayTGy","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":346543,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh3qUCCRA9TVsSAnZWagAA5CsP/jf3smQAmZcQLTbhT62X\nn2g6akdz3gAIHlvMbn5rKQbYALVZ1fDFsH3CgNpLUKPINqJRhoJ7Qn+splW5\n+NXvyrrp8P+ozmIEy8o2V28RQiV18GlZYT0KK8PYl2/VjdUmUlS8j5Fyj3iM\nh0NtHIi6UazmCBcb1RgrT77hTuey/PO0+QcHg+TdTHVuCzKme++xTH+LeXEc\nloGcALHV+uQ7B7csDttYDOR1b2QvYu6MudYPm+FuPCmVS6HeFXaqgI5ytwtL\ngnFXvb/jpvMQQRAvw8j9zTdTq/qDkPc1kSTZ24v6Kb/FJyZwil3Wlk5EoSzZ\n4WQgHRJ3TItXs6cB2q9lNhxtMUO6enSNgVwkd+ME1ievcF4U5SxvAgWM4b5M\ndKlwzTbhIYrhAU9Var4UIYk/uiwjA0FyK4HuOdAMfw2iWzPBWCcP2n3h7LTy\nkO2w532ljJlImzkgLfuMH8GuPjxEE0kxwxEh+pQtGoPs29Hi652cLWshBF0o\n6wiEegz/TPzPd7dDPwUUiImXfWpwRXXRxsDAkXuEOwg42GIsr0LLEkZ57ZMO\nd5rfuji2DQIi3N+KMpdpUHm/N+Q3Gticc+aHV0ktgTAC0c39zgRef3nWcSBB\n5UDpbPZGmMp46AvamIqV4GUsXI0lxD4vgYt8vdAHYDnIAKrauWZ1By4nT1JD\ny3fY\r\n=f97o\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","readme":"## 小程序统一日志上报\n\n- @hyext/hyext-reporter\n- 负责统一小程序日志数据，不做主动上报\n- 提供全局心跳，默认 30 秒心跳一次\n- 日志延迟 500ms 上报，每次上报最多 100 条；\n\n### 安装\n\n```\nnpm install @hyext/hyext-reporter\n```\n\n### 引入\n\n```\nimport { ExtReporter, LogEvents } from '@hyext/hyext-reporter'\n```\n\n### 实例化 - new ExtReporter([config](#config))\n\n#### config\n\n- 实例化配置\n\n| 参数                                | 类型     | 必填 | 默认  | 说明                           |\n| ----------------------------------- | -------- | ---- | ----- | ------------------------------ |\n| [PlatformRequest](#PlatformRequest) | Callback | 是   | --    | 平台定义上报方法               |\n| [CommonInfo](#CommonInfo)           | Object   | 是   | --    | 日志公用信息                   |\n| OpenReport                          | boolean  | 否   | true  | 是否开启上报                   |\n| Debug                               | boolean  | 否   | false | 是否开启 debug                 |\n| ReportDelay                         | number   | 否   | 500   | 延迟上报时差(ms)，0 不延迟     |\n| ReportSizeLimit                     | number   | 否   | 25    | 每次上报大小上限(KB)，0 不限制 |\n| HeartbeatFreq                       | number   | 否   | 60000 | 心跳频率                       |\n\n#### PlatformRequest\n\n> ([params](#params)) => Promise\\<void>\n\n- 日志上报方法\n\n#### params\n\n- 日志上报回调参数\n\n| 属性 | 类型          | 说明         |\n| ---- | ------------- | ------------ |\n| logs | [log](#log)[] | 上报日志数组 |\n\n#### log\n\n- 上报日志信息\n\n| 属性     | 类型   | 说明     |\n| -------- | ------ | -------- |\n| eid      | string | 事件 id  |\n| eid_desc | string | 事件名称 |\n| prop     | Object | 上报数据 |\n\n#### CommonInfo\n\n- 日志公共数据，每条日志的基础信息，可覆盖\n\n| 参数        | 类型   | 必填 | 说明      |\n| ----------- | ------ | ---- | --------- |\n| ext_id      | string | 是   | 小程序 ID |\n| uid         | string | 是   | 用户 ID   |\n| pid         | string | 是   | 主播 ID   |\n| game_id     | string | 是   | 品类 ID   |\n| [env](#env) | string | 是   | 环境信息  |\n\n#### env\n\n- 环境信息\n\n| 取值    | 说明     |\n| ------- | -------- |\n| unknown | 未知环境 |\n| online  | 正式环境 |\n| test    | 测试环境 |\n| dev     | 开发环境 |\n\n#### 示例\n\n- 先通过平台获取基础数据\n\n```\nconst basInfo = {\n  ext_id: \"abababa\", // 小程序ID\n  uid: \"202020\", // 用户uid\n  pid: \"202011\", // 主播ID\n  game_id: \"1002\", // 品类ID\n  env: \"online\",\n}\n```\n\n- 实例化\n\n```\nconst reporter = new ExtReporter({\n  Debug: true, // 是否开启debug日志，可选\n  OpenReport: true, // 是否开启上报，可选\n  PlatformRequest: ({ logs }) => {\n    // 上报日志数据，必填\n    console.log(\"report logs\": logs);\n  },\n  CommonInfo: { // 日志公共数据\n    uid: basInfo.uid,\n    pid: basInfo.pid,\n    ext_id: basInfo.ext_id,\n    game_id: basInfo.game_id,\n    env: basInfo.env\n  }\n});\n```\n\n### 开始心跳 - reporter.startHeartBeat(fields);\n\n- 只有一个全局的心跳\n- 默认 30s 一次心跳\n- 心跳用于统计用户在线时长，用户进入即开始心跳即可\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明           |\n| ----------------- | ------ | ---- | ---- | -------------- |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据 |\n\n#### 示例\n\n```\nreporter.startHeartBeat();\n```\n\n### 停止心跳 - reporter.endHeartBeat()\n\n- 停止全局的心跳\n- 用户退出时调用\n\n#### 示例\n\n```\nreporter.endHeartBeat();\n```\n\n### 普通上报 - reporter.reportBusiMetric(info, fields)\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明                         |\n| ----------------- | ------ | ---- | ---- | ---------------------------- |\n| [info](#info)     | Object | 是   | --   | 日志描述，不会被 fields 覆盖 |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据               |\n\n#### info\n\n- 日志描述信息，不会被 fields 覆盖\n- 系统预制了一些日志描述信息 [LogEvents](#LogEvents) 方便使用\n- 也可定义自己日志描述信息\n\n| 参数 | 类型   | 必填 | 说明       |\n| ---- | ------ | ---- | ---------- |\n| key  | string | 是   | 业务关键词 |\n| desc | string | 是   | 业务描述   |\n\n#### LogEvents\n\n- 预制日志描述信息\n- 均为与 info 同构变量\n- 按需上报即可\n\n| 变量                     | 描述                   |\n| ------------------------ | ---------------------- |\n| LogEvents.USER_ACTIVE    | 用户互动               |\n| LogEvents.USER_SEND_GIFT | 用户送礼               |\n| LogEvents.USER_SEND_WORD | 用户发言               |\n| LogEvents.USER_SUBSCRIBE | 用户订阅               |\n| LogEvents.USER_SHARE     | 用户分享               |\n| LogEvents.GAME_CREATE    | 游戏开局，某轮游戏开始 |\n| LogEvents.GAME_FINISH    | 游戏结束，某轮游戏结束 |\n\n#### fields\n\n- 自定义上报数据\n- 键值不能与以下取值重复，否则会被覆盖\n\n| 敏感键值    | 类型   | 说明           | 数据源      |\n| ----------- | ------ | -------------- | ----------- |\n| key         | string | 业务关键词     | info        |\n| desc        | string | 业务描述       | info        |\n| type        | number | 日志类型       | info/默认值 |\n| client_time | number | 日志创建时间戳 | 系统生成    |\n\n#### 示例\n\n- 自定义日志信息 info 的上报\n\n```\nextReporter.reportBusiMetric({\n  key: 'ext_diy/my_action'\n  desc: '自定义事件描述'\n}, {\n  data : 'your_data'\n});\n```\n\n- 上报用户交互\n\n```\nreporter.reportBusiMetric(LogEvents.USER_ACTIVE, {\n  act: '啥交互？'\n});\n```\n\n- 上报用户送礼\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_GIFT, {\n  gift_id: 2222,\n  gift_count: 1,\n  gift_amount: 100,\n  total_pay: 0,\n});\n```\n\n- 上报用户发言\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_WORD, {\n  word: '你说啥？'\n});\n```\n\n- 上报订阅主播\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SUBSCRIBE);\n```\n\n- 上报用户分享\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SHARE, {\n  share_type: 1\n});\n```\n\n- 上报开始游戏\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_CREATE);\n```\n\n- 上报游戏结束\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_FINISH);\n```\n\n### 非统一日志上报 - reporter.report(base, info, fields)\n\n- 非统一日志上报，特殊情况下使用\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明                       |\n| ----------------- | ------ | ---- | ---- | -------------------------- |\n| [base](#base)     | Object | 是   | --   | 日志业务信息               |\n| [info](#info)     | Object | 否   | --   | 日志描述，不被 fields 覆盖 |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据             |\n\n#### base\n\n- 对应后统计台业务上报信息\n\n| 参数     | 类型   | 必填 | 说明     |\n| -------- | ------ | ---- | -------- |\n| eid      | string | 是   | 事件 id  |\n| eid_desc | string | 是   | 事件名称 |\n\n#### 示例\n\n```\nreporter.report({\n  eid: 'usr/diy/eid',\n  eid_desc: '非统一上报日志'\n}, {\n  type: '固定信息'\n}, {\n  data: '上报数据',\n})\n```\n\n### 清除缓存日志 - reporter.clear()\n","gitHead":"45659cfba012ac2ae586c4f57bb8e6e2bad877f5","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","publishConfig":{"@hyext:registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.2.2-beta.0_1641981186402_0.19673789012648513","host":"s3://npm-registry-packages"}},"1.2.2-beta.1":{"name":"@hyext/hyext-reporter","version":"1.2.2-beta.1","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.2.2-beta.1","maintainers":[{"name":"hy-ext","email":"hy-ext@huya.com"},{"name":"wundereye","email":"overcch@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"}],"dist":{"shasum":"bec44e35ab58a48b4858ef40b50a84bdf8e181df","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.2.2-beta.1.tgz","fileCount":10,"integrity":"sha512-lsfsgKNsIAkQPcHBlEbv0CpGgwfZMQNQMExNZYeGiJDK0ahDYqP6LBcb308zJCdn4azDKxCdnMEkgjiXDnDTqA==","signatures":[{"sig":"MEQCIAUDTeMn7R4pQdcl/aO58MDhInVGl8zvPH476f+HBxzoAiBfeZXdw8hQ/qRrUe33GfVQvdqHI0PKudbHSkseVO03LQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":67968,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkCIk0ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq9MA//cLPgjO9I1wgBnM58LTtv1y16g9fovRXCMs9f18jbaXB7g8XE\r\nfZe0ZizfKkpoNvz9qflIQwVvcfIram1uCDt2Lm+N57kd8oZMQOCPNhk9AJ9P\r\n4iWAHO7huS1kEDgBb3hUbWZZfC27w5MDx3EKkide5VLolwxDKd4ru/2kiXHK\r\nti0kLfKJbKgbzOkCcmpIDC1Q2HBggH5PWeNPiULAm/lB1FM0gkLIPvH9LVZZ\r\nv4jgxaWWkiRTaDUHb5o5d1SDqYljws0VwwlRjyXU1UrS7dFtmFlSD+qQL2DA\r\nJEK7bjsSUMz6+ai3rLpda9IUfzaS2xmf4tTkaPu/kBeqwnyqPrSIOEk2Obs2\r\nhu5KQdZckh6P7sHFT/Y+w9hea8aZtWQuevj+rHSHI7fVcvQiFk35dEvcnm5x\r\nX7uTKUBH/6N9CimU9WdvnOpfpX9EC6CpwzQA2R9y3GOTGNK2gtSDEXw6F1um\r\nR5qZeIodBLjw3tkxqtAIJIAxYSCjJm4isl7LBczcNV6OaSakuOGIJbaxyGp+\r\n/BEmpCWGJxoJkCsyJ8tUOVgJZQSXmmFwlhMwLv4VcsZCEwl3ambykm04AX9r\r\nJfhLMd+dV0yD5NOkxZ3nrxy3XsPEFaJ/QyT0mqEzQ4rRlfK5+nX/IG5pL9F8\r\na8qLPXkNvKjrSE27d482DVZvWUZ6B3uPftI=\r\n=Xocx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/index.cjs.js","type":"module","types":"./build/index.d.ts","module":"./build/index.js","readme":"## 小程序统一日志上报\n\n- @hyext/hyext-reporter\n- 负责统一小程序日志数据，不做主动上报\n- 提供全局心跳，默认 30 秒心跳一次\n- 日志延迟 500ms 上报，每次上报最多 100 条；\n\n### 安装\n\n```\nnpm install @hyext/hyext-reporter\n```\n\n### 引入\n\n```\nimport { ExtReporter, LogEvents } from '@hyext/hyext-reporter'\n```\n\n### 实例化 - new ExtReporter([config](#config))\n\n#### config\n\n- 实例化配置\n\n| 参数                                | 类型     | 必填 | 默认  | 说明                           |\n| ----------------------------------- | -------- | ---- | ----- | ------------------------------ |\n| [PlatformRequest](#PlatformRequest) | Callback | 是   | --    | 平台定义上报方法               |\n| [CommonInfo](#CommonInfo)           | Object   | 是   | --    | 日志公用信息                   |\n| OpenReport                          | boolean  | 否   | true  | 是否开启上报                   |\n| Debug                               | boolean  | 否   | false | 是否开启 debug                 |\n| ReportDelay                         | number   | 否   | 500   | 延迟上报时差(ms)，0 不延迟     |\n| ReportSizeLimit                     | number   | 否   | 25    | 每次上报大小上限(KB)，0 不限制 |\n| HeartbeatFreq                       | number   | 否   | 60000 | 心跳频率                       |\n\n#### PlatformRequest\n\n> ([params](#params)) => Promise\\<void>\n\n- 日志上报方法\n\n#### params\n\n- 日志上报回调参数\n\n| 属性 | 类型          | 说明         |\n| ---- | ------------- | ------------ |\n| logs | [log](#log)[] | 上报日志数组 |\n\n#### log\n\n- 上报日志信息\n\n| 属性     | 类型   | 说明     |\n| -------- | ------ | -------- |\n| eid      | string | 事件 id  |\n| eid_desc | string | 事件名称 |\n| prop     | Object | 上报数据 |\n\n#### CommonInfo\n\n- 日志公共数据，每条日志的基础信息，可覆盖\n\n| 参数        | 类型   | 必填 | 说明      |\n| ----------- | ------ | ---- | --------- |\n| ext_id      | string | 是   | 小程序 ID |\n| uid         | string | 是   | 用户 ID   |\n| pid         | string | 是   | 主播 ID   |\n| game_id     | string | 是   | 品类 ID   |\n| [env](#env) | string | 是   | 环境信息  |\n\n#### env\n\n- 环境信息\n\n| 取值    | 说明     |\n| ------- | -------- |\n| unknown | 未知环境 |\n| online  | 正式环境 |\n| test    | 测试环境 |\n| dev     | 开发环境 |\n\n#### 示例\n\n- 先通过平台获取基础数据\n\n```\nconst basInfo = {\n  ext_id: \"abababa\", // 小程序ID\n  uid: \"202020\", // 用户uid\n  pid: \"202011\", // 主播ID\n  game_id: \"1002\", // 品类ID\n  env: \"online\",\n}\n```\n\n- 实例化\n\n```\nconst reporter = new ExtReporter({\n  Debug: true, // 是否开启debug日志，可选\n  OpenReport: true, // 是否开启上报，可选\n  PlatformRequest: ({ logs }) => {\n    // 上报日志数据，必填\n    console.log(\"report logs\": logs);\n  },\n  CommonInfo: { // 日志公共数据\n    uid: basInfo.uid,\n    pid: basInfo.pid,\n    ext_id: basInfo.ext_id,\n    game_id: basInfo.game_id,\n    env: basInfo.env\n  }\n});\n```\n\n### 开始心跳 - reporter.startHeartBeat(fields);\n\n- 只有一个全局的心跳\n- 默认 30s 一次心跳\n- 心跳用于统计用户在线时长，用户进入即开始心跳即可\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明           |\n| ----------------- | ------ | ---- | ---- | -------------- |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据 |\n\n#### 示例\n\n```\nreporter.startHeartBeat();\n```\n\n### 停止心跳 - reporter.endHeartBeat()\n\n- 停止全局的心跳\n- 用户退出时调用\n\n#### 示例\n\n```\nreporter.endHeartBeat();\n```\n\n### 普通上报 - reporter.reportBusiMetric(info, fields)\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明                         |\n| ----------------- | ------ | ---- | ---- | ---------------------------- |\n| [info](#info)     | Object | 是   | --   | 日志描述，不会被 fields 覆盖 |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据               |\n\n#### info\n\n- 日志描述信息，不会被 fields 覆盖\n- 系统预制了一些日志描述信息 [LogEvents](#LogEvents) 方便使用\n- 也可定义自己日志描述信息\n\n| 参数 | 类型   | 必填 | 说明       |\n| ---- | ------ | ---- | ---------- |\n| key  | string | 是   | 业务关键词 |\n| desc | string | 是   | 业务描述   |\n\n#### LogEvents\n\n- 预制日志描述信息\n- 均为与 info 同构变量\n- 按需上报即可\n\n| 变量                     | 描述                   |\n| ------------------------ | ---------------------- |\n| LogEvents.USER_ACTIVE    | 用户互动               |\n| LogEvents.USER_SEND_GIFT | 用户送礼               |\n| LogEvents.USER_SEND_WORD | 用户发言               |\n| LogEvents.USER_SUBSCRIBE | 用户订阅               |\n| LogEvents.USER_SHARE     | 用户分享               |\n| LogEvents.GAME_CREATE    | 游戏开局，某轮游戏开始 |\n| LogEvents.GAME_FINISH    | 游戏结束，某轮游戏结束 |\n\n#### fields\n\n- 自定义上报数据\n- 键值不能与以下取值重复，否则会被覆盖\n\n| 敏感键值    | 类型   | 说明           | 数据源      |\n| ----------- | ------ | -------------- | ----------- |\n| key         | string | 业务关键词     | info        |\n| desc        | string | 业务描述       | info        |\n| type        | number | 日志类型       | info/默认值 |\n| client_time | number | 日志创建时间戳 | 系统生成    |\n\n#### 示例\n\n- 自定义日志信息 info 的上报\n\n```\nextReporter.reportBusiMetric({\n  key: 'ext_diy/my_action'\n  desc: '自定义事件描述'\n}, {\n  data : 'your_data'\n});\n```\n\n- 上报用户交互\n\n```\nreporter.reportBusiMetric(LogEvents.USER_ACTIVE, {\n  act: '啥交互？'\n});\n```\n\n- 上报用户送礼\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_GIFT, {\n  gift_id: 2222,\n  gift_count: 1,\n  gift_amount: 100,\n  total_pay: 0,\n});\n```\n\n- 上报用户发言\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_WORD, {\n  word: '你说啥？'\n});\n```\n\n- 上报订阅主播\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SUBSCRIBE);\n```\n\n- 上报用户分享\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SHARE, {\n  share_type: 1\n});\n```\n\n- 上报开始游戏\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_CREATE);\n```\n\n- 上报游戏结束\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_FINISH);\n```\n\n### 非统一日志上报 - reporter.report(base, info, fields)\n\n- 非统一日志上报，特殊情况下使用\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明                       |\n| ----------------- | ------ | ---- | ---- | -------------------------- |\n| [base](#base)     | Object | 是   | --   | 日志业务信息               |\n| [info](#info)     | Object | 否   | --   | 日志描述，不被 fields 覆盖 |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据             |\n\n#### base\n\n- 对应后统计台业务上报信息\n\n| 参数     | 类型   | 必填 | 说明     |\n| -------- | ------ | ---- | -------- |\n| eid      | string | 是   | 事件 id  |\n| eid_desc | string | 是   | 事件名称 |\n\n#### 示例\n\n```\nreporter.report({\n  eid: 'usr/diy/eid',\n  eid_desc: '非统一上报日志'\n}, {\n  type: '固定信息'\n}, {\n  data: '上报数据',\n})\n```\n\n### 清除缓存日志 - reporter.clear()\n","gitHead":"b455eda571b8703ea8a72316e0e5c7fd80f01ee7","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v14.14.0+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"14.14.0","publishConfig":{"@hyext:registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.2.2-beta.1_1678281012367_0.29506042184194525","host":"s3://npm-registry-packages"}},"1.2.2-beta.2":{"name":"@hyext/hyext-reporter","version":"1.2.2-beta.2","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.2.2-beta.2","maintainers":[{"name":"hy-ext","email":"hy-ext@huya.com"},{"name":"wundereye","email":"overcch@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"}],"dist":{"shasum":"88e3146cf3b5acbf7e14e4bbc727aac03f1a95f2","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.2.2-beta.2.tgz","fileCount":10,"integrity":"sha512-hRIVNH2j7UySVNNb7XkQULz6RZX5WI/K2wV0vpGfDnWEHKe7eBr5qL/e8B0LmZzzyWo4sW1mdGsrgw1FCP0aHg==","signatures":[{"sig":"MEUCIHNRPbS8fDGk9OnhYgR3LsQhpsIdxd8jHHfhmbAzVDljAiEA08H5OA+F4YohDVLMlPyHPa8ciSpqrSYh/IkLFGP3azA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":67948},"main":"./build/index.cjs.js","types":"./build/index.d.ts","module":"./build/index.js","readme":"## 小程序统一日志上报\n\n- @hyext/hyext-reporter\n- 负责统一小程序日志数据，不做主动上报\n- 提供全局心跳，默认 30 秒心跳一次\n- 日志延迟 500ms 上报，每次上报最多 100 条；\n\n### 安装\n\n```\nnpm install @hyext/hyext-reporter\n```\n\n### 引入\n\n```\nimport { ExtReporter, LogEvents } from '@hyext/hyext-reporter'\n```\n\n### 实例化 - new ExtReporter([config](#config))\n\n#### config\n\n- 实例化配置\n\n| 参数                                | 类型     | 必填 | 默认  | 说明                           |\n| ----------------------------------- | -------- | ---- | ----- | ------------------------------ |\n| [PlatformRequest](#PlatformRequest) | Callback | 是   | --    | 平台定义上报方法               |\n| [CommonInfo](#CommonInfo)           | Object   | 是   | --    | 日志公用信息                   |\n| OpenReport                          | boolean  | 否   | true  | 是否开启上报                   |\n| Debug                               | boolean  | 否   | false | 是否开启 debug                 |\n| ReportDelay                         | number   | 否   | 500   | 延迟上报时差(ms)，0 不延迟     |\n| ReportSizeLimit                     | number   | 否   | 25    | 每次上报大小上限(KB)，0 不限制 |\n| HeartbeatFreq                       | number   | 否   | 60000 | 心跳频率                       |\n\n#### PlatformRequest\n\n> ([params](#params)) => Promise\\<void>\n\n- 日志上报方法\n\n#### params\n\n- 日志上报回调参数\n\n| 属性 | 类型          | 说明         |\n| ---- | ------------- | ------------ |\n| logs | [log](#log)[] | 上报日志数组 |\n\n#### log\n\n- 上报日志信息\n\n| 属性     | 类型   | 说明     |\n| -------- | ------ | -------- |\n| eid      | string | 事件 id  |\n| eid_desc | string | 事件名称 |\n| prop     | Object | 上报数据 |\n\n#### CommonInfo\n\n- 日志公共数据，每条日志的基础信息，可覆盖\n\n| 参数        | 类型   | 必填 | 说明      |\n| ----------- | ------ | ---- | --------- |\n| ext_id      | string | 是   | 小程序 ID |\n| uid         | string | 是   | 用户 ID   |\n| pid         | string | 是   | 主播 ID   |\n| game_id     | string | 是   | 品类 ID   |\n| [env](#env) | string | 是   | 环境信息  |\n\n#### env\n\n- 环境信息\n\n| 取值    | 说明     |\n| ------- | -------- |\n| unknown | 未知环境 |\n| online  | 正式环境 |\n| test    | 测试环境 |\n| dev     | 开发环境 |\n\n#### 示例\n\n- 先通过平台获取基础数据\n\n```\nconst basInfo = {\n  ext_id: \"abababa\", // 小程序ID\n  uid: \"202020\", // 用户uid\n  pid: \"202011\", // 主播ID\n  game_id: \"1002\", // 品类ID\n  env: \"online\",\n}\n```\n\n- 实例化\n\n```\nconst reporter = new ExtReporter({\n  Debug: true, // 是否开启debug日志，可选\n  OpenReport: true, // 是否开启上报，可选\n  PlatformRequest: ({ logs }) => {\n    // 上报日志数据，必填\n    console.log(\"report logs\": logs);\n  },\n  CommonInfo: { // 日志公共数据\n    uid: basInfo.uid,\n    pid: basInfo.pid,\n    ext_id: basInfo.ext_id,\n    game_id: basInfo.game_id,\n    env: basInfo.env\n  }\n});\n```\n\n### 开始心跳 - reporter.startHeartBeat(fields);\n\n- 只有一个全局的心跳\n- 默认 30s 一次心跳\n- 心跳用于统计用户在线时长，用户进入即开始心跳即可\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明           |\n| ----------------- | ------ | ---- | ---- | -------------- |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据 |\n\n#### 示例\n\n```\nreporter.startHeartBeat();\n```\n\n### 停止心跳 - reporter.endHeartBeat()\n\n- 停止全局的心跳\n- 用户退出时调用\n\n#### 示例\n\n```\nreporter.endHeartBeat();\n```\n\n### 普通上报 - reporter.reportBusiMetric(info, fields)\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明                         |\n| ----------------- | ------ | ---- | ---- | ---------------------------- |\n| [info](#info)     | Object | 是   | --   | 日志描述，不会被 fields 覆盖 |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据               |\n\n#### info\n\n- 日志描述信息，不会被 fields 覆盖\n- 系统预制了一些日志描述信息 [LogEvents](#LogEvents) 方便使用\n- 也可定义自己日志描述信息\n\n| 参数 | 类型   | 必填 | 说明       |\n| ---- | ------ | ---- | ---------- |\n| key  | string | 是   | 业务关键词 |\n| desc | string | 是   | 业务描述   |\n\n#### LogEvents\n\n- 预制日志描述信息\n- 均为与 info 同构变量\n- 按需上报即可\n\n| 变量                     | 描述                   |\n| ------------------------ | ---------------------- |\n| LogEvents.USER_ACTIVE    | 用户互动               |\n| LogEvents.USER_SEND_GIFT | 用户送礼               |\n| LogEvents.USER_SEND_WORD | 用户发言               |\n| LogEvents.USER_SUBSCRIBE | 用户订阅               |\n| LogEvents.USER_SHARE     | 用户分享               |\n| LogEvents.GAME_CREATE    | 游戏开局，某轮游戏开始 |\n| LogEvents.GAME_FINISH    | 游戏结束，某轮游戏结束 |\n\n#### fields\n\n- 自定义上报数据\n- 键值不能与以下取值重复，否则会被覆盖\n\n| 敏感键值    | 类型   | 说明           | 数据源      |\n| ----------- | ------ | -------------- | ----------- |\n| key         | string | 业务关键词     | info        |\n| desc        | string | 业务描述       | info        |\n| type        | number | 日志类型       | info/默认值 |\n| client_time | number | 日志创建时间戳 | 系统生成    |\n\n#### 示例\n\n- 自定义日志信息 info 的上报\n\n```\nextReporter.reportBusiMetric({\n  key: 'ext_diy/my_action'\n  desc: '自定义事件描述'\n}, {\n  data : 'your_data'\n});\n```\n\n- 上报用户交互\n\n```\nreporter.reportBusiMetric(LogEvents.USER_ACTIVE, {\n  act: '啥交互？'\n});\n```\n\n- 上报用户送礼\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_GIFT, {\n  gift_id: 2222,\n  gift_count: 1,\n  gift_amount: 100,\n  total_pay: 0,\n});\n```\n\n- 上报用户发言\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_WORD, {\n  word: '你说啥？'\n});\n```\n\n- 上报订阅主播\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SUBSCRIBE);\n```\n\n- 上报用户分享\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SHARE, {\n  share_type: 1\n});\n```\n\n- 上报开始游戏\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_CREATE);\n```\n\n- 上报游戏结束\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_FINISH);\n```\n\n### 非统一日志上报 - reporter.report(base, info, fields)\n\n- 非统一日志上报，特殊情况下使用\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明                       |\n| ----------------- | ------ | ---- | ---- | -------------------------- |\n| [base](#base)     | Object | 是   | --   | 日志业务信息               |\n| [info](#info)     | Object | 否   | --   | 日志描述，不被 fields 覆盖 |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据             |\n\n#### base\n\n- 对应后统计台业务上报信息\n\n| 参数     | 类型   | 必填 | 说明     |\n| -------- | ------ | ---- | -------- |\n| eid      | string | 是   | 事件 id  |\n| eid_desc | string | 是   | 事件名称 |\n\n#### 示例\n\n```\nreporter.report({\n  eid: 'usr/diy/eid',\n  eid_desc: '非统一上报日志'\n}, {\n  type: '固定信息'\n}, {\n  data: '上报数据',\n})\n```\n\n### 清除缓存日志 - reporter.clear()\n","gitHead":"04afe08de150b41a726ae486888f444c5042ee48","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.22.12+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.22.12","publishConfig":{"@hyext:registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.2.2-beta.2_1700205476192_0.0289583135659508","host":"s3://npm-registry-packages"}},"1.2.3":{"name":"@hyext/hyext-reporter","version":"1.2.3","author":{"name":"limingyi"},"license":"ISC","_id":"@hyext/hyext-reporter@1.2.3","maintainers":[{"name":"hy-ext","email":"hy-ext@huya.com"},{"name":"wundereye","email":"overcch@gmail.com"},{"name":"maizhiying","email":"zhiying.mai@gmail.com"},{"name":"xiangwang123","email":"wangxiang@huya.com"},{"name":"zhangjiaheng","email":"zhangjiaheng@huya.com"},{"name":"limingyi_100","email":"limingyi_100@126.com"}],"dist":{"shasum":"eb10760bbcd4d1ba6e1a82d106351cb3416cb6fb","tarball":"https://registry.npmjs.org/@hyext/hyext-reporter/-/hyext-reporter-1.2.3.tgz","fileCount":10,"integrity":"sha512-LJB+k2br6bLKcaKyLwYJFQLy6q8a52SyZvdU7lY17miOlqBTMWPbs3iNj+z/FuH3naccOWtAw1+a5QX09/CqjQ==","signatures":[{"sig":"MEYCIQC7xaHi5vTk6V6Us4jX3vO8ggkbxBSOhMZWhfX4QKyGAwIhAKhpr30JqdOmEEmo0VwX6+Sa7HTQhdUh3q0VkFRKz+g2","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":67941},"main":"./build/index.cjs.js","types":"./build/index.d.ts","module":"./build/index.js","gitHead":"e6cd08d32482c18aa3586bc7551310420cb13382","_npmUser":{"name":"limingyi_100","email":"limingyi_100@126.com"},"repository":{"type":"gitlab"},"_npmVersion":"lerna/3.22.1/node@v12.22.12+x64 (darwin)","description":"小程序上报日志统一","directories":{},"sideEffects":false,"_nodeVersion":"12.22.12","publishConfig":{"@hyext:registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/hyext-reporter_1.2.3_1700205754611_0.6848037239004316","host":"s3://npm-registry-packages"}}},"time":{"created":"2021-07-19T13:55:14.963Z","modified":"2025-04-25T02:57:16.766Z","0.1.1-beta.1":"2021-07-19T13:55:15.412Z","0.1.4-beta.0":"2021-07-19T14:01:55.785Z","0.1.6-beta.0":"2021-07-19T14:08:08.669Z","1.0.0":"2021-07-19T14:13:03.129Z","1.0.1":"2021-07-19T14:15:34.701Z","1.0.2-beta.0":"2021-07-20T15:16:38.191Z","1.0.2-beta.1":"2021-07-22T09:07:45.426Z","1.0.2":"2021-07-22T10:16:50.273Z","1.0.3-beta.0":"2021-07-28T04:17:41.845Z","1.0.5":"2021-07-28T04:37:47.742Z","1.0.6":"2021-07-28T09:29:27.652Z","1.0.7-beta.0":"2021-07-28T14:15:57.124Z","1.0.7-beta.1":"2021-07-28T14:58:41.670Z","1.0.7":"2021-07-28T15:22:57.096Z","1.0.9":"2021-07-29T04:15:27.553Z","1.0.10-beta.0":"2021-08-05T13:02:01.265Z","1.0.10":"2021-08-05T13:34:44.401Z","1.0.11-beta.0":"2021-08-06T06:27:39.053Z","1.0.11-beta.1":"2021-08-06T07:38:00.952Z","1.0.11":"2021-08-06T08:08:44.243Z","1.0.12-beta.0":"2021-08-06T10:55:01.003Z","1.0.12-beta.1":"2021-08-09T04:09:25.658Z","1.0.12-beta.2":"2021-08-09T06:35:39.227Z","1.0.12-beta.3":"2021-08-09T09:38:55.620Z","1.0.12":"2021-08-09T10:52:26.399Z","1.0.13":"2021-09-28T09:31:59.813Z","1.0.15":"2021-10-19T07:22:33.114Z","1.0.16-beta.0":"2021-11-25T09:37:46.299Z","1.0.16":"2021-11-26T09:57:37.388Z","1.0.17-beta.0":"2021-12-16T03:54:37.666Z","1.0.17":"2021-12-16T06:37:12.379Z","1.2.0":"2021-12-16T06:52:42.751Z","1.2.1-beta.0":"2021-12-17T13:44:52.412Z","1.2.1":"2021-12-20T10:27:59.772Z","1.2.2-beta.0":"2022-01-12T09:53:06.576Z","1.2.2-beta.1":"2023-03-08T13:10:12.556Z","1.2.2-beta.2":"2023-11-17T07:17:56.358Z","1.2.3":"2023-11-17T07:22:34.780Z"},"author":{"name":"limingyi"},"license":"ISC","repository":{"type":"gitlab"},"description":"小程序上报日志统一","maintainers":[{"email":"hy-ext@huya.com","name":"hy-ext"},{"email":"zhiying.mai@gmail.com","name":"maizhiying"}],"readme":"## 小程序统一日志上报\n\n- @hyext/hyext-reporter\n- 负责统一小程序日志数据，不做主动上报\n- 提供全局心跳，默认 30 秒心跳一次\n- 日志延迟 500ms 上报，每次上报最多 100 条；\n\n### 安装\n\n```\nnpm install @hyext/hyext-reporter\n```\n\n### 引入\n\n```\nimport { ExtReporter, LogEvents } from '@hyext/hyext-reporter'\n```\n\n### 实例化 - new ExtReporter([config](#config))\n\n#### config\n\n- 实例化配置\n\n| 参数                                | 类型     | 必填 | 默认  | 说明                           |\n| ----------------------------------- | -------- | ---- | ----- | ------------------------------ |\n| [PlatformRequest](#PlatformRequest) | Callback | 是   | --    | 平台定义上报方法               |\n| [CommonInfo](#CommonInfo)           | Object   | 是   | --    | 日志公用信息                   |\n| OpenReport                          | boolean  | 否   | true  | 是否开启上报                   |\n| Debug                               | boolean  | 否   | false | 是否开启 debug                 |\n| ReportDelay                         | number   | 否   | 500   | 延迟上报时差(ms)，0 不延迟     |\n| ReportSizeLimit                     | number   | 否   | 25    | 每次上报大小上限(KB)，0 不限制 |\n| HeartbeatFreq                       | number   | 否   | 60000 | 心跳频率                       |\n\n#### PlatformRequest\n\n> ([params](#params)) => Promise\\<void>\n\n- 日志上报方法\n\n#### params\n\n- 日志上报回调参数\n\n| 属性 | 类型          | 说明         |\n| ---- | ------------- | ------------ |\n| logs | [log](#log)[] | 上报日志数组 |\n\n#### log\n\n- 上报日志信息\n\n| 属性     | 类型   | 说明     |\n| -------- | ------ | -------- |\n| eid      | string | 事件 id  |\n| eid_desc | string | 事件名称 |\n| prop     | Object | 上报数据 |\n\n#### CommonInfo\n\n- 日志公共数据，每条日志的基础信息，可覆盖\n\n| 参数        | 类型   | 必填 | 说明      |\n| ----------- | ------ | ---- | --------- |\n| ext_id      | string | 是   | 小程序 ID |\n| uid         | string | 是   | 用户 ID   |\n| pid         | string | 是   | 主播 ID   |\n| game_id     | string | 是   | 品类 ID   |\n| [env](#env) | string | 是   | 环境信息  |\n\n#### env\n\n- 环境信息\n\n| 取值    | 说明     |\n| ------- | -------- |\n| unknown | 未知环境 |\n| online  | 正式环境 |\n| test    | 测试环境 |\n| dev     | 开发环境 |\n\n#### 示例\n\n- 先通过平台获取基础数据\n\n```\nconst basInfo = {\n  ext_id: \"abababa\", // 小程序ID\n  uid: \"202020\", // 用户uid\n  pid: \"202011\", // 主播ID\n  game_id: \"1002\", // 品类ID\n  env: \"online\",\n}\n```\n\n- 实例化\n\n```\nconst reporter = new ExtReporter({\n  Debug: true, // 是否开启debug日志，可选\n  OpenReport: true, // 是否开启上报，可选\n  PlatformRequest: ({ logs }) => {\n    // 上报日志数据，必填\n    console.log(\"report logs\": logs);\n  },\n  CommonInfo: { // 日志公共数据\n    uid: basInfo.uid,\n    pid: basInfo.pid,\n    ext_id: basInfo.ext_id,\n    game_id: basInfo.game_id,\n    env: basInfo.env\n  }\n});\n```\n\n### 开始心跳 - reporter.startHeartBeat(fields);\n\n- 只有一个全局的心跳\n- 默认 30s 一次心跳\n- 心跳用于统计用户在线时长，用户进入即开始心跳即可\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明           |\n| ----------------- | ------ | ---- | ---- | -------------- |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据 |\n\n#### 示例\n\n```\nreporter.startHeartBeat();\n```\n\n### 停止心跳 - reporter.endHeartBeat()\n\n- 停止全局的心跳\n- 用户退出时调用\n\n#### 示例\n\n```\nreporter.endHeartBeat();\n```\n\n### 普通上报 - reporter.reportBusiMetric(info, fields)\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明                         |\n| ----------------- | ------ | ---- | ---- | ---------------------------- |\n| [info](#info)     | Object | 是   | --   | 日志描述，不会被 fields 覆盖 |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据               |\n\n#### info\n\n- 日志描述信息，不会被 fields 覆盖\n- 系统预制了一些日志描述信息 [LogEvents](#LogEvents) 方便使用\n- 也可定义自己日志描述信息\n\n| 参数 | 类型   | 必填 | 说明       |\n| ---- | ------ | ---- | ---------- |\n| key  | string | 是   | 业务关键词 |\n| desc | string | 是   | 业务描述   |\n\n#### LogEvents\n\n- 预制日志描述信息\n- 均为与 info 同构变量\n- 按需上报即可\n\n| 变量                     | 描述                   |\n| ------------------------ | ---------------------- |\n| LogEvents.USER_ACTIVE    | 用户互动               |\n| LogEvents.USER_SEND_GIFT | 用户送礼               |\n| LogEvents.USER_SEND_WORD | 用户发言               |\n| LogEvents.USER_SUBSCRIBE | 用户订阅               |\n| LogEvents.USER_SHARE     | 用户分享               |\n| LogEvents.GAME_CREATE    | 游戏开局，某轮游戏开始 |\n| LogEvents.GAME_FINISH    | 游戏结束，某轮游戏结束 |\n\n#### fields\n\n- 自定义上报数据\n- 键值不能与以下取值重复，否则会被覆盖\n\n| 敏感键值    | 类型   | 说明           | 数据源      |\n| ----------- | ------ | -------------- | ----------- |\n| key         | string | 业务关键词     | info        |\n| desc        | string | 业务描述       | info        |\n| type        | number | 日志类型       | info/默认值 |\n| client_time | number | 日志创建时间戳 | 系统生成    |\n\n#### 示例\n\n- 自定义日志信息 info 的上报\n\n```\nextReporter.reportBusiMetric({\n  key: 'ext_diy/my_action'\n  desc: '自定义事件描述'\n}, {\n  data : 'your_data'\n});\n```\n\n- 上报用户交互\n\n```\nreporter.reportBusiMetric(LogEvents.USER_ACTIVE, {\n  act: '啥交互？'\n});\n```\n\n- 上报用户送礼\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_GIFT, {\n  gift_id: 2222,\n  gift_count: 1,\n  gift_amount: 100,\n  total_pay: 0,\n});\n```\n\n- 上报用户发言\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SEND_WORD, {\n  word: '你说啥？'\n});\n```\n\n- 上报订阅主播\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SUBSCRIBE);\n```\n\n- 上报用户分享\n\n```\nreporter.reportBusiMetric(LogEvents.USER_SHARE, {\n  share_type: 1\n});\n```\n\n- 上报开始游戏\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_CREATE);\n```\n\n- 上报游戏结束\n\n```\nreporter.reportBusiMetric(LogEvents.GAME_FINISH);\n```\n\n### 非统一日志上报 - reporter.report(base, info, fields)\n\n- 非统一日志上报，特殊情况下使用\n\n#### 参数\n\n| 参数              | 类型   | 必填 | 默认 | 说明                       |\n| ----------------- | ------ | ---- | ---- | -------------------------- |\n| [base](#base)     | Object | 是   | --   | 日志业务信息               |\n| [info](#info)     | Object | 否   | --   | 日志描述，不被 fields 覆盖 |\n| [fields](#fields) | Object | 否   | --   | 日志自定义数据             |\n\n#### base\n\n- 对应后统计台业务上报信息\n\n| 参数     | 类型   | 必填 | 说明     |\n| -------- | ------ | ---- | -------- |\n| eid      | string | 是   | 事件 id  |\n| eid_desc | string | 是   | 事件名称 |\n\n#### 示例\n\n```\nreporter.report({\n  eid: 'usr/diy/eid',\n  eid_desc: '非统一上报日志'\n}, {\n  type: '固定信息'\n}, {\n  data: '上报数据',\n})\n```\n\n### 清除缓存日志 - reporter.clear()\n","readmeFilename":"README.md"}