# @deadair/sdk 中文文档

规范地址：https://npmcn.com/package/%40deadair/sdk/

版本：0\.97\.4
npm 元数据更新时间：2026-11-11T15:29:35.498Z
中文译文更新时间：2026-11-11T18:23:00.456Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40deadair/sdk
原文对照：https://npmcn.com/package/%40deadair/sdk/?lang=original
项目主页：https://deadair.radio/docs/api-reference
源码仓库：https://github.com/robert-dean/deadair

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

- 包体积（解压后）：1.7 MB，243 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：2 个
- 首次发布：2026-09-14T20:12:02.641Z
- 最新版本发布：2026-11-11T15:29:35.101Z
- 近 30 天下载量：17144（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：220（近 12 个月 220 个）

## 中文简介

死气站HTTP API的打字客户端,由站所服务的同一份合同生成.

## 安装

```sh
npm install @deadair/sdk
```

也可以使用：`pnpm add @deadair/sdk`、`yarn add @deadair/sdk`、`bun add @deadair/sdk`

## README

# @ deadair/ sdk (英语)

一个死气站HTTP API的打字客户端. 这是从同一个合同产生的 车站 服务它的路线,所以一种方法, 它的参数和 它的形状是站自己的 而不是手拷贝 控制台是建立在它的上.

```bash
npm install @deadair/sdk
```

它只是一个ES模块, 它运行在任何地方 一个全球 `fetch`:节点20后,德诺,邦 和每个当前浏览器.

## 哪个版本

SDK与站台一同发布并搭载站台版本:SDK `0.6.0` 是客户端 为站点 `0.6.0`。使用与您所交谈的电台匹配的版本。 在1.0之前,一个小步骤 而SDK则随它而改变.

## 开始

每个车站都是自办的,所以地址是你自己的. API服务于 `/api` 编辑 车站的一个已公布的端口,默认安装为 `http://localhost:8080/api`。 。 。 .

```ts
import { DeadairSdk } from '@deadair/sdk';

const sdk = new DeadairSdk({ baseUrl: 'http://localhost:8080/api' });

const now = await sdk.nowplaying.getNowPlaying();
console.log(now.onAir && now.track ? `${now.track.artist} - ${now.track.title}` : 'off air');
```

`getNowPlaying` 是一条不需要注册的路线 其余的,要一个密码的代号 同意并寄给每一个请求. `headers` 可能是一个函数,每个请求一次调用,所以一个符号 替换后不新建客户端

```ts
import { DeadairSdk } from '@deadair/sdk';

let token: string | undefined;
const sdk = new DeadairSdk({
    baseUrl: 'http://localhost:8080/api',
    headers: (): Record<string, string> => (token ? { Authorization: `Bearer ${token}` } : {}),
});

const answer = await sdk.authentication.requestToken({ grant_type: 'password', username: 'you@example.com', password: '...' });
if (answer.result === 'mfa_required') {
    throw new Error('this account has a second factor to verify before it gets a token');
}
token = answer.access_token;

const page = await sdk.history.readHistory({ limit: 5 });
for (const entry of page.entries) {
    console.log(entry.airedAt.toRelative(), entry.artists, '-', entry.title);
}
```

每一个路线需要什么, 它的答案和它背后的许可在 [API 参考](https://deadair.radio/docs/api-reference),则由同一来源生成 合同并命名每条路线的方法.

## 日期和小数

约会时间到达现场 [鲁克逊](https://moment.github.io/luxon/) `DateTime` 和小数 字段为 [小数点.js](https://mikemcl.github.io/decimal.js/) `Decimal`从电线上复活 在方法返回之前。 两者都是这个包的依赖性,而鲁克逊的类型也随之而来.

导入 SDK 设置小数 。 Js's (英语) `toExpNeg` 财务报告和审定财务报表 `toExpPos` 他们的极限,所以 `Decimal` 打印为平方位数,绝不作符号标记。 该设置是全球的复制 小数点 J是SDK和你的密码 使用 `Decimal.clone()` 给自己的建筑师,如果 您依赖于默认值.

## 错误

400发或以上的响应 `SdkError`,带有 `status`,则 `statusText`,则 `headers` 编辑 `body`当它是JSON。 每个请求都带新鲜的 `X-Request-ID` 头曰. 过 `requestIdFactory` 来做身份证明.

## 自己捡

`fetch` 在选项中替换整个传输: SDK 递给它相对于 API 的路径 根和一个 `RequestInit`,并分析任意 `Response` 它回来了. `createSdkFetch(options)` 构建默认的, 这也是抛出 `SdkError`,因此包装可以添加周围的行为 它,例如每次请求的时间,或者在刷新符号后重试一次401:

```ts
import { createSdkFetch, DeadairSdk, type SdkFetch } from '@deadair/sdk';

const base = createSdkFetch({ baseUrl: 'http://localhost:8080/api' });
const withLogging: SdkFetch = async (url, init) => {
    const started = Date.now();
    try {
        return await base(url, init);
    } finally {
        console.debug(init.method, url, `${Date.now() - started}ms`);
    }
};
const sdk = new DeadairSdk({ baseUrl: 'http://localhost:8080/api', fetch: withLogging });
```

## 从何而来

所有东西都放在下面 `src/` 由 ContractKit 从 `.ck` 合同 [`apps/api/data/contracts`](https://github.com/robert-dean/deadair/tree/main/apps/api/data/contracts), (中文(简体) ), 它没有一个是手工编辑的。 客户变更是指合同变更. 一样 合同生成车站的路线, API 参考, a [OpenAPI 文档](https://deadair.radio/openapi.yaml) 对于任何其他语言, 和克特林,C# 和斯威夫特客户端 收听器应用程序是建立在.

## 常见问题

### @deadair/sdk 是什么？

死气站HTTP API的打字客户端,由站所服务的同一份合同生成\.

### 如何安装 @deadair/sdk？

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

### @deadair/sdk 支持 TypeScript 吗？

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

### @deadair/sdk 支持 ESM 还是 CommonJS？

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

### @deadair/sdk 可以商用吗？

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

### @deadair/sdk 的下载量有多少？

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

### @deadair/sdk 还在维护吗？

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

