@defuse-protocol/outlayer-sdk

中文文档
0.6.0发布于 2026/09/29MITTypeScriptES Module近 30 天下载 4164

用于外层服务的 TypeScript gRPC SDK

中文使用文档
文档目录4 节
  1. 安装
  2. 使用量
  3. 截止日期、取消和燃料
  4. 认证

@ defuse-protocol/outlayer- sdk (英语)

脚本 gRPC SDK 类型 外层 服务,使用 连接-ES只有节点.js - 通过 HTTP/2 向工人说 gRPC, 和船舶生成的信息类型加一个 execute 帮手.

安装

SDK公开发布至npm:

npm install @defuse-protocol/outlayer-sdk

使用量

import { createOutlayerClient } from "@defuse-protocol/outlayer-sdk";

const client = createOutlayerClient("http://localhost:50051");

const res = await client.execute({
  app: { appId: "app.near" },
  input: new TextEncoder().encode("{}"),
});

if (res.error) {
  console.error(res.error, res.fuelConsumed); // WASM run failed (returned as data)
} else {
  console.log(new TextDecoder().decode(res.output), res.fuelConsumed);
}

Apps 也可以直接从 URL 执行,使用十六进制或生字节 SHA-256大麻:

const res = await client.execute({
  app: {
    codeUrl: "https://example.com/app.wasm",
    codeHash: "8f2466da...",
  },
  input: new TextEncoder().encode("{}"),
});

execute 决定: { output, logs, fuelConsumed, error? }· ; output编号 :logs 原为 Uint8Arrays. 居住人口 error 意思是运行到达了工人,但WASM 失败 —— 作为数据返回, 不是抛出 。 运输故障以 ConnectError。 。 。 .

截止日期、取消和燃料

execute 还需要三个选择 这些都是可选的:

const controller = new AbortController();

const res = await client.execute(
  { app, input },
  {
    timeoutMs: 5_000,
    signal: controller.signal,
    fuelLimit: 1_000_000_000n,
  },
);

timeoutMs 是一个预算 整个呼吁。 获得信使,请求,和 使用刷新符号重试后全部共享,所以一个电话从不需要两次全时休息. 改为: 给每个呼叫一个最后期限,设置客户端的默认值。 单次通话仍然可以覆盖 内容:

const client = createOutlayerClient({
  endpoint: "https://worker.example.com:443",
  defaultTimeoutMs: 30_000,
});

timeoutMs 财务报告和审定财务报表 signal 只能结束你的电话。 工人完成了一个运行 已经开始了,所以他们两个都没有解脱能力. fuelLimit 是唯一的限制 它可以停止运行,而运行。 别管它了,工人用自己的违约.

认证

Google IAM背后的一位工人想要一个Google标识符. 创建 Google 令牌管理器 并注入客户端。 经理薄荷 缓存 和刷新符号。 若为 工人拒绝一个要求 未经认证, Google 管理器宣布无效 缓存的令牌, 生成一个新令牌, 并重复一次 :

import {
  createGoogleJwtTokenManager,
  createOutlayerClient,
  type JwtTokenManager,
} from "@defuse-protocol/outlayer-sdk";

const jwtTokenManager = createGoogleJwtTokenManager({
  impersonate: "[email protected]",
});

const client = createOutlayerClient({
  endpoint: "https://worker.example.com:443",
  auth: jwtTokenManager,
});

奥米 auth 给有认证障碍的工人。 与谷歌, 删除 impersonate 直接使用应用程序默认身份证书 :

createOutlayerClient("http://localhost:50051");
createGoogleJwtTokenManager();
createGoogleJwtTokenManager({ impersonate });

Google 认证需要可选的对等依赖 google-auth-library。只安装它 使用时 createGoogleJwtTokenManager。 。 。 .

观众默认 outlayer,这是工人的期望,除非其 部署另设一个。 在管理选项中覆盖它 :

createGoogleJwtTokenManager({ audience: "another-audience" });

其他身份提供者可以执行提供者中性接口:

const jwtTokenManager: JwtTokenManager = {
  generateToken: () => myTokenSource(),
  invalidateToken: async () => clearMyTokenCache(),
  handleAuthError: async (error) => {
    throw error;
  },
};

打电话 invalidateToken() 随时迫使下一个请求生成新的 符号 :

jwtTokenManager.invalidateToken();

一个 authToken 转至 execute 覆盖为此配置的管理器 请求。 超接可以是符号或同步或同步函数:

await client.execute({ app, input }, { authToken: idToken });
await client.execute({ app, input }, { authToken: () => getFreshToken() });

覆盖符按给定发送并绕过管理器的重试行为.

受JWT保护的工人融合测试被禁用,除非其终点或标志 已配置。 提供两个变量运行它:

OUTLAYER_ENDPOINT=https://worker.example.com:443 \
OUTLAYER_JWT_TOKEN="$(get-token)" \
pnpm test:jwt-live

对于内置的WASM或自定义传输,请使用位于 client.raw,或从再出口中创建自己的 OutlayerService。 。 。 .

版本与发布记录

@defuse-protocol/outlayer-sdk 共发布 3 个版本,首次发布于 2026/08/27;过去 12 个月发布了 3 个版本。

版本发布日期距今
0.6.0latest2026/09/291 个月前
0.5.12026/08/282 个月前
0.0.02026/08/272 个月前

关于 @defuse-protocol/outlayer-sdk 的常见问题

@defuse-protocol/outlayer-sdk 是什么?

用于外层服务的 TypeScript gRPC SDK

如何安装 @defuse-protocol/outlayer-sdk?

在项目目录运行 npm install @defuse-protocol/outlayer-sdk,或使用 pnpm add / yarn add / bun add。

@defuse-protocol/outlayer-sdk 支持 TypeScript 吗?

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

@defuse-protocol/outlayer-sdk 支持 ESM 还是 CommonJS?

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

@defuse-protocol/outlayer-sdk 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@defuse-protocol/outlayer-sdk 可以商用吗?

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

@defuse-protocol/outlayer-sdk 的下载量有多少?

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

@defuse-protocol/outlayer-sdk 还在维护吗?

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