@alienplaft/manager-api (英语)
开发者友好型和型号安全型 SDK 专门适应杠杆 @alienplaft/manager-api (英语) API (英语).
[大 这个SDK还没有准备好用于生产. 为完成设置,请遵循您在《公约》 工作空间。在 > 发布到软件包管理器之前删除本节.
内容提要
外星管理人API:用于外星应用的控制平面. 管理部署、发布、命令和遥测.
目录
SDK 安装
[TIP] 要完成将您的 SDK 发布到 npm 和其他您必须 运行您的第一代动作。 。 。 .
SDK可以安装其中之一 无, (中文(简体) ), 小时, (中文(简体) ), 包头 或者说 线条 软件包管理器.
国家预防机制
npm add <UNSET>
菲律宾
pnpm add <UNSET>
阿宝
bun add <UNSET>
雅伦
yarn add <UNSET>
[注] 此软件包仅作为ES模块(ESM)发布. 用于应用 常见JS, 使用
await import()以导入和使用此软件包.
所需资源
对于支持的 JavaScript 运行时间, 请参考 运行时间.md。 。 。 .
SDK 示例使用法
示例
import { AlienManager } from "@alienplatform/manager-api";
const alienManager = new AlienManager({
serverURL: "https://api.example.com",
bearer: process.env["ALIEN_MANAGER_BEARER"] ?? "",
});
async function run() {
const result = await alienManager.health.health();
console.log(result);
}
run();
认证
常客安全计划
这个SDK在全球支持以下安全计划:
| 名称 | 类型 | 计划 | 环境变量 |
|---|---|---|---|
bearer | 网页 | HTTP 缓冲器 | ALIEN_MANAGER_BEARER |
用 API 认证 bearer 初始化 SDK 客户端实例时必须设置参数 。 例如:
import { AlienManager } from "@alienplatform/manager-api";
const alienManager = new AlienManager({
serverURL: "https://api.example.com",
bearer: process.env["ALIEN_MANAGER_BEARER"] ?? "",
});
async function run() {
const result = await alienManager.health.health();
console.log(result);
}
run();
现有资源和业务
可用方法
约束
图标
- 创建命令 - 创建一个新的命令
- 获取命令状态 - 获取命令状态
- 获得命令/ 打印 - 从KV获得指令有效载荷(参数和响应)
- 存储命令 - 将命令有效载荷数据(参数和/或反应)直接储存到KV中.
- 提交回复 - 提交部署后的答复
- 上传完成 - 将上传标为完整
部署小组
- 列表 部署组
- 创建部署组 - 这个文件中的每个处理器都会运行
auth::require_auth(&state, &headers)然后线程&subject输入DeploymentStore电话——见 特征文件DeploymentStore供会议使用. - 获得部署组
- 创建部署组
部署
- 列表 调动
- 创建部署 - 这个文件中的每个处理器都会运行
auth::require_auth(&state, &headers)然后线程&subject输入DeploymentStore打电话 嵌入器 上游 API 的代理可以使用主题bearer_token页:1 过关;单租房的冲动忽略了它. 看医生的特质 [DeploymentStore完全的公约. - 获得部署
- 签名部署
- 获得部署源
- 部署频道
- 删除部署
- 获得部署信息
- 获得部署日志
- 部署
- 设置配额警告 覆盖 - 只保存设置;重试失败的部署仍然是明确的操作.
- 调动
- 重试
- 获得部署
- 导入部署状态
- 获得部署目标
卫生
租赁
经理
释放
- 列表 管理器释放频道
- 创建管理器释放频道
- 删除管理器释放频道
- 列表发布 - 说吧
GET /v1/releases- 输入:工作空间/项目负责人(或认证) 用户)。 出站:呼叫者无记名(通过). 返回仅释放 呼叫者可以阅读. - 创建释放
- 获取 Latest 释放
- 获取释放
- 推动管理者释放
堆栈导入
- 堆栈导入 - 说吧
POST /v1/stack/import——入驻:部署组载人.
同步
- 初始化 - 说吧
POST /v1/initialize- 入境:部署小组无人员(典型), 或工作空间持有人,负责自办操作员的工作流程。 新部署 创建通过DeploymentStore::create_deployment(caller, …)这样 嵌入到上游 API 的代理服务器将行写入 dg 中 工作空间 不是经理的. - 代理同步 - 说吧
POST /v1/sync——入驻:部署随从. 代理驱动同步 路径;caller: &Subject被线接入商店 所以嵌入者看到 特工自己的范围. - 获取 - 说吧
POST /v1/sync/acquire- 进入:工作空间/ dg/部署人员.caller: &Subject被串入DeploymentStore::acquire这样 嵌入器可以授权与入境的呼叫者范围相对. - 对齐 - 说吧
POST /v1/sync/reconcile进入:工作空间/ dg/部署 无名氏.caller: &Subject被串入DeploymentStore::reconcile。 。 。 . - 释放 - 说吧
POST /v1/sync/release- 进入:工作空间/ dg/部署人员.caller: &Subject被串入DeploymentStore::release。 。 。 . - 更新 - 延长购置的部署租约,不写部署状态.
键
默认
呜
独立职能
上述所有方法都作为独立功能提供。 这些 函数是用于在浏览器中运行的应用程序的理想功能,没有服务器 运行时间或应用程序捆绑大小为主的其他环境 关心。 当使用捆绑器构建您的应用程序时, 全部未使用 功能将被从最后的捆绑中排除,或者被树切除.
要了解更多独立函数, 请检查 职能.md。 。 。 .
现有的独立职能
bindingsResolveBindingcommandsCreateCommand- 创建一个新的命令commandsGetCommandPayload- 从KV获得指令有效载荷(参数和响应)commandsGetCommandStatus- 获取命令状态commandsStoreCommandPayload- 将命令有效载荷数据(参数和/或反应)直接储存到KV中.commandsSubmitResponse- 提交部署后的答复commandsUploadComplete- 将上传标为完整deploymentGroupsCreateDeploymentGroup- 这个文件中的每个处理器都会运行auth::require_auth(&state, &headers)然后线程&subject输入DeploymentStore电话——见 特征文件DeploymentStore供会议使用.deploymentGroupsCreateDeploymentGroupTokendeploymentGroupsGetDeploymentGroupdeploymentGroupsListDeploymentGroupsdeploymentsCreateDeployment- 这个文件中的每个处理器都会运行auth::require_auth(&state, &headers)然后线程&subject输入DeploymentStore打电话 嵌入器 上游 API 的代理可以使用主题bearer_token页:1 过关;单租房的冲动忽略了它. 看医生的特质 [DeploymentStore完全的公约.deploymentsDeleteDeploymentdeploymentsGetDeploymentdeploymentsGetDeploymentBundleSourcesdeploymentsGetDeploymentInfodeploymentsGetDeploymentLogsdeploymentsGetDeploymentRoutingdeploymentsGetDeploymentTargetdeploymentsImportDeploymentStatusdeploymentsListDeploymentsdeploymentsRedeploydeploymentsRetryDeploymentdeploymentsSetDeploymentChanneldeploymentsSetDeploymentPindeploymentsSetQuotaWarningOverrides- 只保存设置;重试失败的部署仍然是明确的操作.deploymentsSignDeploymentBundlehealthHealthleasesAcquireLeases- 获得投票部署租约leasesReleaseLease- 发放租约managerManagerInforeleasesCreateManagerReleaseChannelreleasesCreateReleasereleasesDeleteManagerReleaseChannelreleasesGetLatestReleasereleasesGetReleasereleasesListManagerReleaseChannelsreleasesListReleases- 说吧GET /v1/releases- 输入:工作空间/项目负责人(或认证) 用户)。 出站:呼叫者无记名(通过). 返回仅释放 呼叫者可以阅读.releasesPromoteManagerReleasestackImportStackImport- 说吧POST /v1/stack/import——入驻:部署组载人.syncAcquire- 说吧POST /v1/sync/acquire- 进入:工作空间/ dg/部署人员.caller: &Subject被串入DeploymentStore::acquire这样 嵌入器可以授权与入境的呼叫者范围相对.syncAgentSync- 说吧POST /v1/sync——入驻:部署随从. 代理驱动同步 路径;caller: &Subject被线接入商店 所以嵌入者看到 特工自己的范围.syncInitialize- 说吧POST /v1/initialize- 入境:部署小组无人员(典型), 或工作空间持有人,负责自办操作员的工作流程。 新部署 创建通过DeploymentStore::create_deployment(caller, …)这样 嵌入到上游 API 的代理服务器将行写入 dg 中 工作空间 不是经理的.syncReconcile- 说吧POST /v1/sync/reconcile进入:工作空间/ dg/部署 无名氏.caller: &Subject被串入DeploymentStore::reconcile。 。 。 .syncRelease- 说吧POST /v1/sync/release- 进入:工作空间/ dg/部署人员.caller: &Subject被串入DeploymentStore::release。 。 。 .syncRenew- 延长购置的部署租约,不写部署状态.tokensCreateToken- 说吧POST /v1/tokens——创建范围标志(仅限管理员).tokensDeleteTokentokensListTokensvaultDeleteSecretvaultGetSecretvaultSetSecretwhoamiWhoami
检索
此 SDK 中的一些端点支持重试. 如果在没有任何配置的情况下使用SDK,则会回落到API提供的默认重试策略. 然而,默认的重试策略可以在一次操作的基础上被推翻,或者在整个SDK中被推翻.
更改单个 API 调用默认重试策略, 只需为调用提供重试 Config 对象 :
import { AlienManager } from "@alienplatform/manager-api";
const alienManager = new AlienManager({
serverURL: "https://api.example.com",
bearer: process.env["ALIEN_MANAGER_BEARER"] ?? "",
});
async function run() {
const result = await alienManager.health.health({
retries: {
strategy: "backoff",
backoff: {
initialInterval: 1,
maxInterval: 50,
exponent: 1.1,
maxElapsedTime: 100,
},
retryConnectionErrors: false,
},
});
console.log(result);
}
run();
如果您想要覆盖所有支持重试的操作的默认重试策略, 您可以在 SDK 初始化时提供重试Config :
import { AlienManager } from "@alienplatform/manager-api";
const alienManager = new AlienManager({
serverURL: "https://api.example.com",
retryConfig: {
strategy: "backoff",
backoff: {
initialInterval: 1,
maxInterval: 50,
exponent: 1.1,
maxElapsedTime: 100,
},
retryConnectionErrors: false,
},
bearer: process.env["ALIEN_MANAGER_BEARER"] ?? "",
});
async function run() {
const result = await alienManager.health.health();
console.log(result);
}
run();
处理错误
AlienManagerError 是所有 HTTP 错误响应的基础类。 其属性如下:
| 财产 | 类型 | 说明 |
|---|---|---|
error.message | string | 错误消息 |
error.statusCode | number | HTTP 响应状态代码 eg 404 |
error.headers | Headers | HTTP 响应头 |
error.body | string | HTTP 躯体. 如果没有尸体返回, 则可以是空字符串 . |
error.rawResponse | Response | 原始 HTTP 响应 |
error.data$ | 可选的 一些错误可能包含结构化数据. 参见错误类。 。 。 . |
示例
import { AlienManager } from "@alienplatform/manager-api";
import * as errors from "@alienplatform/manager-api/models/errors";
const alienManager = new AlienManager({
serverURL: "https://api.example.com",
bearer: process.env["ALIEN_MANAGER_BEARER"] ?? "",
});
async function run() {
try {
const result = await alienManager.bindings.resolveBinding({
deploymentId: "<id>",
});
console.log(result);
} catch (error) {
// The base class for HTTP error responses
if (error instanceof errors.AlienManagerError) {
console.log(error.message);
console.log(error.statusCode);
console.log(error.body);
console.log(error.headers);
// Depending on the method different errors may be thrown
if (error instanceof errors.AlienError) {
console.log(error.data$.code); // string
console.log(error.data$.context); // any
console.log(error.data$.hint); // string
console.log(error.data$.httpStatusCode); // number
console.log(error.data$.internal); // boolean
}
}
}
}
run();
错误分类
主错误 :
AlienManagerError: HTTP 错误响应的基础类.
少常见错误(8)
网络错误 :
ConnectionError: HTTP 客户端无法向服务器提出请求.RequestTimeoutError: HTTP 请求由于中止信号而超时.RequestAbortedError:HTTP请求被客户端中止.InvalidRequestError: 用于创建请求的任何输入无效.UnexpectedClientError:无法识别或出乎意料的错误.
继承从 AlienManagerError数字 :
ErrorResponse: API端点错误响应包. 适用于53个方法中的8个AlienError: Canonical 错误容器,它提供了一种结构化的方法来用丰富的元数据来表示错误,包括错误代码,人可读信息,上下文,以及用于错误传播的链路能力. 这种结构设计既可机器读取又便于用户使用,支持API响应的序列化和分布式系统中的详细错误报告. 适用于53个方法中的2个ResponseValidationError:从服务器返回的数据和SDK期望的结构之间的类型不匹配. 见error.rawValue原值和error.pretty()用于格式化良好的多行字符串.
* 检查 方法文档 以查看该错误是否适用.
自定义 HTTP 客户端
TypeScript SDK 使用一个 HTTPClient 将本地人包裹起来
获取 API这个
客户端是薄薄的包装 fetch 并且提供连接钩子的能力
围绕可用于修改请求或处理的请求生命周期
错误和反应.
这个 HTTPClient 构造器使用可选 fetcher 参数可以是
用于整合第三方 HTTP 客户端或用于编写测试以嘲弄
hTTP 客户端并输入固定设备.
以下示例说明如何使用 "beforeRequest" 要添加的钩子
自定义标题和请求的超时及如何使用 "requestError" 钩子
记录错误 :
import { AlienManager } from "@alienplatform/manager-api";
import { HTTPClient } from "@alienplatform/manager-api/lib/http";
const httpClient = new HTTPClient({
// fetcher takes a function that has the same signature as native `fetch`.
fetcher: (request) => {
return fetch(request);
}
});
httpClient.addHook("beforeRequest", (request) => {
const nextRequest = new Request(request, {
signal: request.signal || AbortSignal.timeout(5000)
});
nextRequest.headers.set("x-custom-header", "custom value");
return nextRequest;
});
httpClient.addHook("requestError", (error, request) => {
console.group("Request Error");
console.log("Reason:", `${error}`);
console.log("Endpoint:", `${request.method} ${request.url}`);
console.groupEnd();
});
const sdk = new AlienManager({ httpClient: httpClient });
调试
您可以为 SDK 请求和响应设置 SDK 以发送调试日志 .
你可以通过一个匹配的日志 console'作为 SDK 选项的接口.
[尖叫声] 注意调试日志会揭示一些秘密, 如标题中的 API 令牌, 打印到控制台或文件中的日志信息 。 建议只在本地开发期间使用这一特征,而不能用于生产.
import { AlienManager } from "@alienplatform/manager-api";
const sdk = new AlienManager({ debugLogger: console });
通过设置环境变量也可以启用默认调试日志 ALIEN_MANAGER_DEBUG 真实的.
发展
成熟度
这个SDK是在β中,在版本之间可能会有断裂的更改,而没有主要的版本更新. 因此,我们建议使用 到特定软件包版本。 这样,您可以每次安装同一版本而不中断更改,除非您是故意的 正在寻找最新版本.
捐款
虽然我们重视对SDK的开源贡献,但这个库是程序生成的. 任何加入内部文件的手动修改都会被覆盖到下一代上. 我们期待着听到你的反馈。 随便你开个公关 或一个有概念证明的问题 我们会尽力把它纳入未来的发行.