@enbox/dwn-sdk-js

中文文档
0.4.32发布于 2026/11/12Apache-2.0TypeScriptES Module构建来源已验证近 30 天下载 2862
中文使用文档
文档目录9 节
  1. 概览
  2. 安装
  3. 使用量
  4. 背景角色偏好
  5. 自定义租户图
  6. 自定义签名符
  7. 建筑
  8. 发展
  9. 许可证

分散式网络节点( DWN) SDK

研究预览 ——Enbox正在积极开发. API可不经通知而更改.

Coverage

类型脚本执行 分散式网络节点 ——由模块驱动的用户控制的个人数据存储.

概览

这个包是Enbox堆栈其余部分使用的核心 DWN 引擎. 它处理消息处理,模块授权,记录存储,以及加密. 大多数应用程序应当使用 @enbox/api 而不是这个包直接.

安装

bun add @enbox/dwn-sdk-js

使用量

import { Dwn, DataStream, Jws, RecordsWrite } from '@enbox/dwn-sdk-js';
import { DataStoreLevel, MessageStoreLevel, ResumableTaskStoreLevel } from '@enbox/dwn-sdk-js/stores/level';

const messageStore = new MessageStoreLevel();
const dataStore = new DataStoreLevel();
const resumableTaskStore = new ResumableTaskStoreLevel();
const dwn = await Dwn.create({ messageStore, dataStore, resumableTaskStore });

// Create and process a RecordsWrite message
const data = new TextEncoder().encode('Hello, World!');
const recordsWrite = await RecordsWrite.create({
  data,
  dataFormat  : 'application/json',
  published   : true,
  schema      : 'example/post',
  signer      : Jws.createSigner(persona),
});

const dataStream = DataStream.fromBytes(data);
const result = await dwn.processMessage(persona.did, recordsWrite.message, { dataStream });
console.log(result.status); // { code: 202, detail: 'Accepted' }

await dwn.close();

级别支持的存储执行从 @enbox/dwn-sdk-js/stores/level 因此仅需要信件的应用程序和模块 API 默认不会加载 L等值存储模块图. 可供替代商店执行时使用的共享块状辅助工具来自 @enbox/dwn-sdk-js/stores/blockstore。 。 。 .

背景角色偏好

resolveModuleContextRoles(graph, contextPath) 返回根 提供直接儿童角色路径 read输入 $actions 数组顺序。 这个顺序 选择此精确根后, 声明客户端; 对象属性顺序 不影响它。 它不会改变DWN的授权,意味着角色继承, 或修改角色分配。 高级共享文本 API产生其作用 同一解析模块图中的候选人.

见 上下文角色偏好 定义公约,以及一个带有编辑和查看器角色的笔记本示例.

自定义租户图

默认情况下,所有委托人都可以作为租户。 提供自定义 TenantGate 限制访问:

import { ActiveTenantCheckResult, Dwn, TenantGate } from '@enbox/dwn-sdk-js';

class CustomTenantGate implements TenantGate {
  public async isActiveTenant(did: string): Promise<ActiveTenantCheckResult> {
    // custom logic
  }
}

const dwn = await Dwn.create({ messageStore, dataStore, resumableTaskStore, tenantGate: new CustomTenantGate() });

自定义签名符

使用 PrivateKeySigner 如果您有可用的密钥,或者执行 Signer 与外部签名服务整合的接口 HSM等 :

import type { Signer } from '@enbox/dwn-sdk-js';

class CustomSigner implements Signer {
  public keyId = 'did:example:alice#key1';
  public algorithm = 'EdDSA';
  public async sign(content: Uint8Array): Promise<Uint8Array> {
    // custom signing logic
  }
}

建筑

DWN architecture diagram

该图是一个概念性观点;来源中的实际成分名称可能不同.

发展

# Build
bun run build

# Test
bun run test:node

# Test with grep filter (from this package directory)
GREP="ModulesConfigure" bun run test:node-grep

# Lint
bun run lint

许可证

阿帕奇 - 2.0

版本与发布记录

@enbox/dwn-sdk-js 共发布 57 个版本,首次发布于 2025/08/03;过去 12 个月发布了 55 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.4.32latest2026/11/121 天前
0.4.312026/11/077 天前
0.4.302026/11/0113 天前
0.4.292026/10/2322 天前
0.4.282026/10/2124 天前
0.4.272026/09/181 个月前

关于 @enbox/dwn-sdk-js 的常见问题

@enbox/dwn-sdk-js 是什么?

参考实施情况 https://identity.foundation/去中央集权-web-node/ spec/

如何安装 @enbox/dwn-sdk-js?

在项目目录运行 npm install @enbox/dwn-sdk-js,或使用 pnpm add / yarn add / bun add。

@enbox/dwn-sdk-js 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@enbox/dwn-sdk-js 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@enbox/dwn-sdk-js 可以商用吗?

@enbox/dwn-sdk-js 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@enbox/dwn-sdk-js 的下载量有多少?

根据 npm 官方下载统计,@enbox/dwn-sdk-js 在 2026/10/14 – 2026/11/12 这 30 天内被下载 2,862 次,日均约 95 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@enbox/dwn-sdk-js 还在维护吗?

最新版本 0.4.32 发布于 2026/11/12(1 天前);至今共发布 57 个版本,其中过去 12 个月发布了 55 个;首次发布于 2025/08/03。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。