New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

hrc-debug

Package Overview
Dependencies
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

hrc-debug

print debug info at server from client

latest
Source
npmnpm
Version
1.1.4
Version published
Maintainers
1
Created
Source

hrc-debug

🇨🇳中文 | ENGLISH

hrc-debug可以理解成运行在服务端的console面板,把客户端使用console输出的内容同步输出到服务端。

目的是为了提升无控制台场景的轻量调试体验,如小程序、手机端浏览器。

原理很简单,就是把console.log/console.error等方法要输出的内容以HTTP的形式发送到服务端,由服务端来输出,也可以做到收集多个客户端的日志数据到服务端。

安装

npm i hrc-debug -D

使用

// SERVER
// 是一个node服务,需要手动用node执行
const service = require('hrc-debug/release/server.js').default;

service({
  port: 3000,
  // 默认可以不传
  route: '/proxy/console',
  // 输出前调用, 可以不传
  beforeOutput: (...args) => {},
});
// CLIENT
import HRCDebug from 'hrc-debug';
import { appear } from 'hrc-debug/release/appears/browser';
// 微信小程序使用
// import { appear } from 'hrc-debug/release/appears/miniprogram.wx';

new HRCDebug({
  // /proxy/console这个接口是默认实现的
  server: 'http://127.0.0.1:3000/proxy/console',
  // 上报时调用的方法,本质就是个函数,完全可以自己实现,会传递过来每一批要上报的数据
  appear,
  // 可以不传递,修改item里的内容,输出到服务端的也会被修改
  beforeEachQueuePost(chunk) {},
  // 如果配置了,会匹配log/warn/error等第一个参数,完全匹配才会发送
  filterMatcher: '__hrc',
});

// 会在服务端和客户端同时输出
// 目前代理了 log/warn/error
console.log('996');
console.warn('996');
console.error('996');

上报会按照166毫秒节流,理论上讲可以保证时序。

数据类型支持

客户端和服务端交互才用JSON,非JSON标准的类型是会被JSON过滤的,所以在数据添加到上报队列前会做处理。

目前对以下数据做了处理:

  • NaN
  • Infinity / -Infinity
  • String
  • Number
  • Boolean
  • BigInt
  • Symbol
  • Function
  • null
  • Undefined
  • Object

非标准JSON的数据会被加上___hrc_$TYPE的后缀,比如:

// CLIENT
console.log({
  a: 123n,
  b: Symbol('88'),
  c: undefined,
  d: 996,
});

// SERVER
{
  a: '123n___hrc_BigInt',
  b: 'Symbol(88)___hrc_Symbol',
  c: 'undefined___hrc_Undefined',
  d: 996,
}

对象中的属性互递归的做处理。

TIPS

不要用到生产

仅用于调试,别带上线,生产环境用肯定会爆炸[狗头]。

小程序没有开启NPM怎么使用

把仓库里的release目录拷走,直接用。

有没有异常抓取上报的功能?

hrc-debug本身只负责劫持console.log/console.warn/console.error,全局异常处理暂时不考虑加入,太重了。

可以考虑本身在小程序里实现相关逻辑,然后在对应的逻辑里调用console.*

名称由来

其实是从IPC通信抄来的,HRC就是 HTTP Remote Communication,HTTP远端通信。

Keywords

mobile console

FAQs

Package last updated on 18 Mar 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts