@deadair/sdk

中文文档
0.97.4发布于 2026/11/11MITTypeScriptES Module构建来源已验证近 30 天下载 1.7万

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

中文使用文档
文档目录6 节
  1. 哪个版本
  2. 开始
  3. 日期和小数
  4. 错误
  5. 自己捡
  6. 从何而来

@ deadair/ sdk (英语)

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

npm install @deadair/sdk

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

哪个版本

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

开始

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

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 可能是一个函数,每个请求一次调用,所以一个符号 替换后不新建客户端

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: '[email protected]', 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 参考,则由同一来源生成 合同并命名每条路线的方法.

日期和小数

约会时间到达现场 鲁克逊 DateTime 和小数 字段为 小数点.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:

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, (中文(简体) ), 它没有一个是手工编辑的。 客户变更是指合同变更. 一样 合同生成车站的路线, API 参考, a OpenAPI 文档 对于任何其他语言, 和克特林,C# 和斯威夫特客户端 收听器应用程序是建立在.

版本与发布记录

@deadair/sdk 共发布 220 个版本,首次发布于 2026/09/15;过去 12 个月发布了 220 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.97.4latest2026/11/11今天
0.97.32026/11/11今天
0.97.22026/11/101 天前
0.97.12026/11/093 天前
0.97.02026/11/083 天前
0.96.52026/11/084 天前

关于 @deadair/sdk 的常见问题

@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 和提交记录判断。