npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

etest-sdk

v1.0.46

Published

ETest 用于前端使用的 SDK

Readme

ETest SDK

SDK 与 服务器 ETestS 之间建立 websocket 连接,以二进制的格式发送数据,支持 RPC (远程过程调用)和频道订阅两种方式通信。

SDK包括两部分,一个是基础通信 API (ETestSdk),一个是数据库 API (ETestDb)。

安装

npm install etest-sdk

测试

包含服务端 mocker,目前添加了一个更新网络变量的测试用例

npm run watch
node lib/tests/test_mocker.js

使用

import { ETestSDK, ETestDb } from 'etest-sdk'
// 创建SDK对象
const sdk = new ETestSDK()
// 打开websocket连接
sdk.Open('ws://xxx')
// 调用下位机API
sdk.Call('S', '0', apiName, apiData)

// 创建db对象
const db = new ETestDb(sdk)
db.set('k1', [100, 200])

ETestSDK API

Open(url)

  • 打开websocket连接
  • 参数:websocket url
  • 返回值:Promise<true | error> 对象
try {
  await sdk.Open('ws://127.0.0.1:8610/etest4/C/@')
  console.log('open websocket success')
} catch (e) {
  console.log('open websocket failed')
}

Close()

  • 关闭websocket连接
  • 参数:无
  • 返回值:无
sdk.Close()

Call(role, key, fn, params)

  • 发送请求
  • 参数:
    • role:角色,此处固定为 S
    • key:执行器编号,此处固定为 0
    • fn:api名称
    • params:api参数
  • 返回值:Promise<result>
sdk.Call('S', '0', 'designPairwise', {...})

onClose(callback)

  • 监听 websocket close 事件
  • 参数:callback - 回调函数
  • 返回值:无
sdk.onClose(() => {
  // websocket断开后执行
})

onError(callback)

  • 监听 error 事件
  • 参数:callback - 回调函数
  • 返回值:无
sdk.onError(() => {
  // websocket连接出错后执行
})

onChannel(chan, callback)

  • 频道订阅
  • 参数
    • chan:频道名称
    • callback:回调函数
  • 返回值:无
sdk.onChannel('ideDiagnostic', () => {
  // 每次服务器发送 ideDiagnostic 通知时执行
})

offChannel(chan, callback)

onOutput(callback)

  • 监听执行器输出
  • 参数
    • callback:回调函数
  • 返回值:无
sdk.onOutput((data) => {
  // 处理输出结果
})

onNetvar(callback)

  • 监听网络变量
  • 参数
    • callback = (data) => void:回调函数
      • data: { isInit: boolean, data: Array }
  • 返回值:无
sdk.onNetvar((data) => {
  // 网络变量
})
  • 解除频道订阅
  • 参数
    • chan:频道名称
    • callback:回调函数
  • 返回值:无
sdk.offChannel('ideDiagnostic', () => {
  // 解除 ideDiagnostic 订阅时执行
})

ETestDb API

ETestDb 的 API主要分为三类:基本的键值对操作、Hash操作、List操作

ETestDb

  • 参数:
    • sdk: ETestSDK实例对象
    • type: 数据库类型 - sysDb: 系统数据库(默认), runDb: 运行时数据库
// 创建db对象
const db = new ETestDb(sdk, type)
db.set('k1', [100, 200])

基础操作

| API | 返回值| 说明 | | - | - | - | | set(key: string, value: any) | Promise<number> | 新增或者设置键值对到数据库中 | | get(key: string) | Promise<any> | 从数据库中查询指定 key 的值 | | del(key: string) | Promise<number> | 从数据库删除指定 key |

Hash操作

Hash是一个键值对映射表,通常用于存储对象,在此可以简单理解为js对象。

| API | 返回值| 说明 | | - | - | - | | hashSet(name: string, key: string, value: any) | Promise<number> | 设置哈希表 name 中 字段(属性) key 的值为 value | | hashGet(name: string, key: string) | Promise<any> | 获取存储在哈希表中指定字段的值 | | hashDel(name: string, key: string) | Promise<number> | 删除哈希表中的指定字段 | | hashScan(name: string, start: string, end: string, limit: number) | Promise<{ [key: string]: any }> | 扫描哈希表中指定区间中指定长度为 limit 的元素,并将结果以键值对形式返回。其中参数startendkey值,而非数字。 startend均为nulllimit 为哈希表长度,则返回的是整个哈希表 | | hashList(name: string, start: string, end: string, limit: number) | Promise<number> | 获取哈希表中指定区间中指定长度为 limit 的元素的 key 值,并将结果以数组形式返回。其中参数startendkey值,而非数字。 startend均为nulllimit 为哈希表长度,则返回的是整个哈希表的 key 集合 | | hashClear(name: string, start: string, end: string) | Promise<number> | 删除指定 key 为 startend 直接的元素。startend均为null,则清空整个哈希表 | | ashSize(name: string) | Promise<number> | 获取哈希表长度 |

List操作

List在此可以理解为js数组。

| API | 返回值| 说明 | | - | - | - | | listPush(name: string, value: any) | Promise<number> | 在列表尾部插入一个元素 | | listUnshift(name: string, value: any) | Promise<number> | 在列表头部插入一个元素 | | listPop(name: string) | Promise<number> | 移除列表最后一个元素 | | listShift(name: string) | Promise<number> | 移除列表的第一个元素 | | listIndex(name: string, idx: number) | Promise<any> | 获取列表中索引为 idx 的元素 | | listSet(name: string, idx: number, value: any) | Promise<number> | 设置列表中索引为 idx 元素的值 | | listSize(name: string) | Promise<number> | 获取列表的长度 | | listRange(name: string, start: number, end: number | Promise<Array<any>> | 获取列表指定范围内的元素 | | listRangeNative(name: string, start: number, end: number | Promise<Array<any>> | 获取主题数据相关的list,主要区别是解包方式不同 |