# @freqhole/midden 中文文档

规范地址：https://npmcn.com/package/%40freqhole/midden/

版本：0\.3\.27
npm 元数据更新时间：2026-11-10T03:23:05.269Z
中文译文更新时间：2026-11-15T14:28:58.623Z
软件包许可：未声明

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40freqhole/midden
原文对照：https://npmcn.com/package/%40freqhole/midden/?lang=original
项目主页：https://github.com/freqhole/tomb#readme
源码仓库：https://github.com/freqhole/tomb

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：6 MB，6 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：0 个
- 首次发布：2026-06-18T01:35:39.561Z
- 最新版本发布：2026-11-10T03:23:04.934Z
- 近 30 天下载量：2699（2026-10-16 至 2026-11-14，npm 官方下载统计）
- 已发布版本数：45（近 12 个月 45 个）

## 中文简介

用于 freqhole P2P 客户端的 WASM 绑定( roh )

## 安装

```sh
npm install @freqhole/midden
```

也可以使用：`pnpm add @freqhole/midden`、`yarn add @freqhole/midden`、`bun add @freqhole/midden`

## README

# 中间

应用软件的freqhole世界的统一取道:a `MiddenNode` 课 浏览器与 freqhole 同行讨论 iroh p2p - api 请求, 已核实 blob 流出, 由 offs 支撑的持久块存储、块化导入会话、收音机和原始双向 用于应用协议的流 。 生锈货箱,用原木-宾德根/瓦斯-包装;npm包件 `@freqhole/midden`。 。 。 .

## 结构

```mermaid
graph LR
    subgraph browser
        APP[your app / worker]
        MN[MiddenNode wasm]
        OPFS[(opfs blob store)]
    end
    subgraph peers
        P1[always-on peer<br/>grimoire / tumulus / any]
        P2[another browser]
    end
    APP --> MN
    MN --- OPFS
    MN <-- "iroh p2p (relay discovery + direct)" --> P1 & P2
```

默认注册的 ALPN 集为 app 中性 基础 (`freqhole/1`自动同步, 朋友,管理员,事件, iroh -blobs。 应用特定ALPN通过 `extra_alpns` - 说吧 这里没有硬码.

## 结构

```
src/
  lib.rs           MiddenNode + options, bi-streams, blob transfer, import sessions
  opfs_store/      persistent browser blob store (storage-generic core, native tests)
  radio.rs         radio streaming
pkg/               committed wasm-pack output - consumers file:-dep straight at it
Makefile           build targets
```

`pkg/` 检查为 git : 每次重建 `src/` 改变或消费者看不到 变化.

## 开始中

```typescript
import { MiddenNode, MiddenNodeOptions } from "@freqhole/midden";

const options = new MiddenNodeOptions();
options.set_secret_key(mySecretKeyBytes); // omit to generate fresh
options.set_opfs_store_dir("myapp-blobs"); // persistent blob store
options.set_extra_alpns(["myapp/1"]); // app protocol ALPNs
const node = await MiddenNode.create_with_options(options);
console.log("node id:", node.node_id());

// request/response to a peer (json over iroh; same dispatch shape as http)
const resp = await node.api_request(peerAddr, "GET", "/api/hello", null);

// verified blob download with progress
const bytes = await node.download_verified_with_ensure_progress(
  peerAddr,
  blake3Hash,
  totalSize,
  (fraction) => {},
  downloadId,
);

// raw bidirectional stream for your own protocol
const stream = await node.open_bi(peerAddr, "myapp/1");
await stream.write_raw_and_finish(encodedRequest);
const reply = await stream.read_to_end(64 * 1024);
```

`peer_addr` 接受光64-hex节点id(中继发现)或全端点json (单位:千美元)`{"id":"...","addrs":[...]}` 带有中继/ip提示).

其他表面 : `import_blob`编号 :`release_blob` (同行的相位字节), `ImportSession` (用增量的 blake3 进行整流导入), `Blake3Hasher`, (中文(简体) ), `CancelToken` + 键 `download_cancel` (暂停/恢复), `protect_blob`编号 :`unprotect_blob` (克针), `has_complete_blob`自我测试 无线电.

## 开发者快速启动

```bash
cargo install wasm-pack
brew install llvm          # macos: wasm toolchain needs it

make build                 # dev build -> pkg/
make build-release         # optimized
cargo test                 # native tests (opfs_store core runs without a browser)
```

今天的消费者:坟墓/泉水+鼠洞,skein/loam,播放列表-全部通过 `file:` 代码 : `pkg/` (例如:. `file:../../midden/pkg`毒气的消费者将这捆绑在工人需要的 解析 Id- plugin 模式 (参见 @ freqhole/ reliquary's README) .

## 协议

与Greanoire联邦运输公司相同的电线协议:ALPN `freqhole/1`、 消息 `ApiRequest`编号 :`ApiResponse`, (中文(简体) ), `EnsureBlobRequest`编号 :`EnsureBlobResponse`,blob 流出为 a 长度前缀头+生字节. 见 `grimoire/src/federation/transport/protocol.rs`。 。 。 .

* * *

在纽约市与..

## 常见问题

### @freqhole/midden 是什么？

用于 freqhole P2P 客户端的 WASM 绑定\( roh \)

### 如何安装 @freqhole/midden？

在项目目录运行 npm install @freqhole/midden，或使用 pnpm add / yarn add / bun add。

### @freqhole/midden 支持 TypeScript 吗？

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

### @freqhole/midden 支持 ESM 还是 CommonJS？

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

### @freqhole/midden 可以商用吗？

@freqhole/midden 使用 未声明 许可。package\.json 没有声明许可证。没有许可证的代码默认保留全部权利，商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括，不构成法律意见，请以许可原文为准。

### @freqhole/midden 的下载量有多少？

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

### @freqhole/midden 还在维护吗？

最新版本 0\.3\.27 发布于 2026/11/10（5 天前）；至今共发布 45 个版本，其中过去 12 个月发布了 45 个；首次发布于 2026/06/18。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

