# @burnt-labs/abstraxion-js 中文文档

规范地址：https://npmcn.com/package/%40burnt-labs/abstraxion-js/

版本：1\.0\.0-alpha\.6
npm 元数据更新时间：2026-10-23T16:30:00.691Z
中文译文更新时间：2026-11-08T20:21:01.250Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40burnt-labs/abstraxion-js
原文对照：https://npmcn.com/package/%40burnt-labs/abstraxion-js/?lang=original
项目主页：https://github.com/burnt-labs/xion.js#readme
源码仓库：https://github.com/burnt-labs/xion.js

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

- 包体积（解压后）：982 kB，93 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：7 个
- 首次发布：2026-06-09T11:53:26.487Z
- 最新版本发布：2026-10-23T16:30:00.172Z
- 近 30 天下载量：2864（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：6（近 12 个月 6 个）

## 中文简介

XION 账户抽象的框架不可知运行时间. 拥有每个模态的状态机器,控制器,策略,以及签名客户端——没有反应,没有DOM,也没有平台的假设被烤入.

## 安装

```sh
npm install @burnt-labs/abstraxion-js
```

也可以使用：`pnpm add @burnt-labs/abstraxion-js`、`yarn add @burnt-labs/abstraxion-js`、`bun add @burnt-labs/abstraxion-js`

## README

# @burnt-labs/abstraxion-js (英语)

XION 账户抽象的框架不可知运行时间. 拥有每个模态的状态机器,控制器,策略,以及签名客户端——没有反应,没有DOM,也没有平台的假设被烤入.

您只需直接依赖此软件包 :

-   建立非反应/RN一体化(Svelte、Vue、SolidJS、vanilla JS)
-   实施自定义主机(如电子预装,服务员,测试带),需要注入自己的存储/重定向/iframe-transport行为
-   写入新框架包抄到 [`@burnt-labs/abstraxion-react`](https://npmcn.com/package/%40burnt-labs/abstraxion-react) 或者说 [`@burnt-labs/abstraxion-react-native`](https://npmcn.com/package/%40burnt-labs/abstraxion-react-native)

如果你正在建造一个 **反应应用程序**,使用时 [`@burnt-labs/abstraxion-react`](https://npmcn.com/package/%40burnt-labs/abstraxion-react)。如果你正在建立一个 **反应原生应用程序**,使用时 [`@burnt-labs/abstraxion-react-native`](https://npmcn.com/package/%40burnt-labs/abstraxion-react-native)。两个包件都会重新导出此运行时间的相关部件,所以您很少需要从 `abstraxion-js` 直接说.

## 安装

```bash
npm i @burnt-labs/abstraxion-js
```

## 运行时间

`createAbstraxionRuntime(config, strategies?)` 是单一的切入点。 它返回一个 `runtime` 一次拥有一个控制器的对象(匹配对象) `config.authentication.type`),并揭露出一个小的反应性API:

```ts
import { createAbstraxionRuntime } from "@burnt-labs/abstraxion-js";

const runtime = createAbstraxionRuntime({
  chainId: "xion-testnet-2",
  treasury: "xion1...",
  authentication: { type: "auto" },
});

const unsubscribe = runtime.subscribe((state) => {
  // state.isConnected, state.isConnecting, state.granterAddress, state.error, ...
});

await runtime.login();
const snapshot = runtime.getState();
await runtime.logout();
unsubscribe();
```

这是整个表面 一个主机框架需要绑定。 反应 `useSyncExternalStore`,一个斯维尔特 `readable` 存储, 一个 Vue `ref` 周围都是薄的适配器 `runtime.subscribe(listener) → unsubscribe` 加号 `runtime.getState()`。 。 。 .

## 认证模式

这个 `authentication` 配置字段选择控制器 :

| 模式 | 主计长 | 它会做什么 |
| --- | --- | --- |
| `popup` | `PopupController` | 在弹出窗口中打开仪表板;通过 `postMessage`。 。 。 . |
| `redirect` | `RedirectController` | 全页重定向到仪表板;返回回调的URL. |
| `embedded` | `IframeController` | 在嵌入式iframe中渲染仪表板;通过 `MessageChannel`。 。 。 . |
| `signer` | `SignerController` | 无头-呼叫者提供一个签名器(Turnkey / MetaMask / Kepler /自定义). |
| `auto` | 自动解决 | 决定 `popup` 在桌面上, `redirect` 在移动/PWA. |

每个控制器通过 `runtime.subscribe`,所以包装不需要特殊的情况模式.

## 策略注入( 运行在浏览器外)

运行时间通过三种可注入策略到达主机环境:

```ts
import {
  createAbstraxionRuntime,
  type StorageStrategy,
  type RedirectStrategy,
  type IframeTransportStrategy,
} from "@burnt-labs/abstraxion-js";

const runtime = createAbstraxionRuntime(config, {
  strategies: {
    storageStrategy: myStorageStrategy, // implements StorageStrategy
    redirectStrategy: myRedirectStrategy, // implements RedirectStrategy
    iframeTransportStrategy: myIframeTransport, // implements IframeTransportStrategy
  },
});
```

默认为浏览器本地化 :

-   `BrowserStorageStrategy` —— 说 `localStorage`
-   `BrowserRedirectStrategy` —— 说 `window.location` + 键 `URLSearchParams`
-   `BrowserIframeTransportStrategy` - DOM iframe + 数据 `MessageChannel`

你只能超越那些不符合你环境的违约者——例如. `@burnt-labs/abstraxion-react-native` 注入 AsyncStorage 备份 `StorageStrategy`,一个被Web浏览器支持的博览会 `RedirectStrategy`,则a `react-native-webview`\- 后卫 `IframeTransportStrategy`。不使用的模式(`signer` 不需要改变策略, `redirect` 不需要iframe transfer)可以不设.

## 直接签名

两个客户被曝直接签名(即元账户在每笔交易上签字,支付自己的毒气):

-   `RequireSigningClient` ——处理弹出/重定向/iframe传输的单一客户端. 运输从活性控制器中选择;消费者不直接选择.
-   `AAClient` 用于 `signer` 模式; 将外部提供的签名符(MetaMask、Kepler、Twitchey、.)包起来.

两者都暴露了同样的 `signAndBroadcast` 编号 : `sendTokens` 编号 : `execute` 因此在会话键签名和直接签名之间切换是消费者的一行变化.

## 公共表面(部分出口)

```ts
export { createAbstraxionRuntime } from "@burnt-labs/abstraxion-js";
export type {
  AbstraxionRuntime,
  AbstraxionRuntimeOptions,
} from "@burnt-labs/abstraxion-js";

export {
  BaseController,
  IframeController,
  PopupController,
  RedirectController,
  SignerController,
  createController,
} from "@burnt-labs/abstraxion-js";

export {
  BrowserStorageStrategy,
  BrowserRedirectStrategy,
  BrowserIframeTransportStrategy,
} from "@burnt-labs/abstraxion-js";
export type {
  IframeTransportStrategy,
  // RedirectStrategy and StorageStrategy are re-exported from abstraxion-core
} from "@burnt-labs/abstraxion-js";

export { RequireSigningClient, AAClient } from "@burnt-labs/abstraxion-js";

export {
  ConnectorType,
  IframeMessageType,
  MessageTarget,
} from "@burnt-labs/abstraxion-js";
export { AUTHENTICATOR_TYPE } from "@burnt-labs/abstraxion-js";
```

配置类型( E)`AbstraxionConfig`, (中文(简体) ), `AuthenticationConfig`见 [`packages/abstraxion-js/src/types.ts`](https://npmcn.com/package/%40burnt-labs/abstraxion-js/src/types.ts) 它们也从框架包装中再出口.

## 建立一个新的框架包

斯维尔特演示 [`demos/svelte/`](https://npmcn.com/package/demos/svelte) 是实例: 它创建了运行时间, 从 Svelte 订阅 `writable`,并且与由此产生的商店相对立。 同一模式对Vue(`ref` + 键 `watchEffect`),SolidJS (英语:`createStore`),或任何可以反射外部订阅的活性原始.

## 许可证

麻省理工学院

## 常见问题

### @burnt-labs/abstraxion-js 是什么？

XION 账户抽象的框架不可知运行时间\. 拥有每个模态的状态机器,控制器,策略,以及签名客户端——没有反应,没有DOM,也没有平台的假设被烤入\.

### 如何安装 @burnt-labs/abstraxion-js？

在项目目录运行 npm install @burnt-labs/abstraxion-js，或使用 pnpm add / yarn add / bun add。

### @burnt-labs/abstraxion-js 支持 TypeScript 吗？

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

### @burnt-labs/abstraxion-js 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @burnt-labs/abstraxion-js 可以商用吗？

@burnt-labs/abstraxion-js 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @burnt-labs/abstraxion-js 的下载量有多少？

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

### @burnt-labs/abstraxion-js 还在维护吗？

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

