@facta-dte/api

中文文档
0.6.0发布于 2026/11/15MITTypeScriptES Module零依赖构建来源已验证近 30 天下载 4408

萨尔瓦多Facta电子发票API(DTE)的TypeScript客户端.

中文使用文档
文档目录18 节
  1. 运行时间支持
  2. 快开始
  3. 全权证书和配置
  4. 参考钟
  5. 公共客户面
  6. 安全发放和恢复
  7. 单独准备和签署
  8. DTE 类型和财政有效载荷
  9. 目录和目的地快照
  10. Archivo DTE(接收器得到的)
  11. 错误
  12. 实例和检查
  13. AI 编码代理的代理技能
  14. 指南
  15. 文件语文
  16. 公众现场测试报告
  17. 可执行的工作流程实例和存储失败
  18. 发布自动化

@facta-dte/api — 类型脚本 SDK

Facta电子税务文件API的官方TypeScript和JavaScript客户端. 它使用服务器作为财政授权:SDK发送DTE数据,处理证书和重试,并可以归档所发行的字节以进行重启安全恢复.

读取 西班牙语读取全数 方法参考 记录每种公用方法的论据、返回值、所需范围、副作用、错误、重复和恢复行为。 这个 公布的API合同 hTTP 字段和响应仍然具有权威性.

软件包和源 : 无 @facta-dte/api • 妇女 公共 GitHub 仓库。 。 。 .

版本选择 : 此源检出已放行 0.6.0,稳定版本(npm) latest) (中文(简体) ). 这个 npm 登记 对已出版的版本和发行标记具有权威性。 确认您已安装的已发布版本在使用前包含一个方法; 以装入的检出来验证纯源能力 .

端点选择 : FACTA_PRODUCTION_BASE_URL 指定默认使用的生产终点。 使用 baseUrl: FACTA_STAGING_BASE_URL 选择装配,或提供自定义终点。 官方的 PHP SDK 也可以在 facta-dte/api。 。 。 .

官方SDK为TypeScript/JavaScript和PHP提供. 直接的HTTP示例并不代表已发布的SDK.

许可证 : 麻省理工学院. 见 自由主义。 。 。 .

运行时间支持

SDK根条目在Node.js 22+,Deno,和Bun中工作,不急于导入文件系统模块. 这个 @facta-dte/api/node 条目添加仅节点加密文件档案和配置文件加载. 奉献 @facta-dte/api/file-archive 条目也是节点.

便携式客户端依赖标准 fetch网络加密, AbortSignal,以及 crypto.randomUUID。每个请求使用配置的 API 端点;a facta_test_ 键在同一端点选择Hacienda的测试环境。 客户端默认使用生产 URL; 测试中转权限 baseUrl: FACTA_STAGING_BASE_URL (单位:千美元)https://eobxzotnqzgtpuqvmpkc.supabase.co/functions/v1/api-v1带有 facta_test_ 启动应用程序的密钥 .

快开始

# Verify published versions and tags, then install the approved stable release:
npm view @facta-dte/api version dist-tags
pnpm add @facta-dte/api
# Optionally install a prerelease, when one is published:
pnpm add @facta-dte/api@next
import { Facta, type DteRequest } from "@facta-dte/api";

const facta = new Facta({
  apiKey: process.env.FACTA_API_KEY!,
  signKey: process.env.FACTA_SIGN_KEY!,
});

const sale: DteRequest = {
  tipoDte: "01",
  items: [{ descripcion: "Sample item", cantidad: 1, precioUni: 10 }],
};
const result = await facta.issue(sale, { idempotencyKey: "order-1042" });

tipoDte, (中文(简体) ), codigoGeneracion,所有其他财政电线字段保留 Facta API 定义的名称和值。 公共类型Script标识为英语;财政有效载荷属性不翻译.

一个 IssueResult 是一个受歧视的工会。 检查 result.estado数字 : "sellado" 表示Hacienda归还了封条; "contingencia" 意味着Facta接受并签署了DTE,但需要和解. 在回应不确定后,不要提交带有新等同键的销售.

全权证书和配置

选项目的
apiKey需求 facta_test_… 或者说 facta_live_… 键。 密钥选择了Hacienda环境.
signKey所需经费 issue, (中文(简体) ), prepare + 键 sign, (中文(简体) ), invalidate,以及 registerReturn只在签字行动时发送.
unlockKey可选 factauk_… 键用于解密同步目的捆绑。 从未送去API.
baseUrl可选 API 主机. Facta公开API URL的默认值.
timeoutMs请求超时,默认为60,000 ms,包括响应-body读取.
region职能区域 x-region 因此,请求运行在数据库旁边。 默认: 从 /v1/status (倒计时) us-west-2 年龄较大的APIs). 一个字符串覆盖, false 禁用; 还有 config.region 编辑 FACTA_API_REGION 环境变量. await facta.region() 返回; diagnose() 报告服务区.
maxRetries对明确可重试的运输/服务故障重试限制;默认为 3.
fetch可选获取自有运行时间或测试的执行 .
clock存档时间戳和S3签名的参考时钟 : true (违约,公众) https://clock.factadte.com/, URL,或 false 为设备时钟。 校准了懒散 从未失败 归档方法( E)issueAndArchive, (中文(简体) ), recoverOperation, (中文(简体) ), invalidateAndArchive, (中文(简体) ), replicateArchive)等一个过程的第一次校正:在正常情况下,在正常情况下,在服务无法到达时,大约为6 s (2 s 3 s 超时);后来的调用在当地回答. 故障后,SDK倒回了设备时钟.
clockFetch可选抓取只用于校正时钟 .
config可选版本的 scalar 配置 (FactaConfigV1) (中文(简体) ).
runtime可选的默认归档、无效归档、远程目的地和打印传输( E)FactaRuntimeConfigV1) (中文(简体) ).

配置值不包括证书. 平面后遗症选项覆盖匹配的版本配置值 。 见 节点指南 或者说 德诺向导 用于运行时间设置和环境权限.

参考钟

文档自己的日期和时间由Facta的服务器设定,从未由这个SDK设定. SDK的时钟对两个本地事物有关系: S3相容上传上的SigV4签名(S3拒绝从自己时间算起15分多签的请求, RequestTimeTooSkewed)和存档记录中的时间戳. new Facta({ apiKey }) 保留一个 NTP 风格的参考时钟(facta.clock: 三分校正样品,最初使用,然后单调时钟回答局部,并只有当其不确定性超过500毫秒时再重新校正 nextSyncAfterMs 或当设备时间跳出。 与 S3 目标共享 createS3ArtifactDestination({ ..., clock: facta.clock ?? false })没有它,目的地就有自己的。 一个无法到达的时钟服务倒回了设备时钟. 见 时钟指南。 。 。 .

公共客户面

这个 Facta 客户端披露以下英语方法:

  • 状况和诊断: status, (中文(简体) ), diagnose, (中文(简体) ), getContract, (中文(简体) ), getStorageStatus。 。 。 .
  • 目的地和目录如下: syncDestinations, (中文(简体) ), listCustomers, (中文(简体) ), getCustomer, (中文(简体) ), searchCustomers, (中文(简体) ), listProducts, (中文(简体) ), getProduct, (中文(简体) ), searchProducts。 。 。 .
  • Catalog 写作( 平面文本目录, 范围) catalog:write: createCustomer, (中文(简体) ), updateCustomer, (中文(简体) ), deactivateCustomer, (中文(简体) ), createProduct, (中文(简体) ), updateProduct, (中文(简体) ), deactivateProduct。每个目录模式下的读取通过 API;服务器解析 customerId 编号 : productId见 目录编写指南。 。 。 .
  • 目录更改和webhooks( 镜片) catalog:read: listCatalogChanges, (中文(简体) ), createWebhook, (中文(简体) ), listWebhooks, (中文(简体) ), getWebhook, (中文(简体) ), updateWebhook, (中文(简体) ), deleteWebhook, (中文(简体) ), rotateWebhookSecret, (中文(简体) ), testWebhook,以及接收方 verifyWebhook 编号 : constructWebhookEvent 编号 : signWebhook。记录一次读取一次 revision;通过它作为 ifMatch 改为 updateCustomer 编号 : updateProduct见 网络用户指南。 。 。 .
  • 草稿(范围) draft: createDraft, (中文(简体) ), listDrafts, (中文(简体) ), getDraft, (中文(简体) ), getDraftByKey, (中文(简体) ), updateDraft (单位:千美元)version 以 If-Match, (中文(简体) ), cancelDraft 财务报告和审定财务报表 issueDraft:给公司人员留一张发票,由其审查并签发. 一个拼错的字段又回来了 draft.unknownFields (草案中没有)。 见 指南草案。 。 。 .
  • DTE 生命周期 : issue, (中文(简体) ), prepare, (中文(简体) ), sign, (中文(简体) ), getDocumentStatus, (中文(简体) ), listDocuments, (中文(简体) ), invalidate, (中文(简体) ), registerReturn, (中文(简体) ), listHolding, (中文(简体) ), downloadDocument, (中文(简体) ), getDocumentCopies, (中文(简体) ), retryDocumentStorage。 。 。 .
  • 临时副本和确认(新): listUnconfirmedDocuments, (中文(简体) ), confirmDocumentStorage, (中文(简体) ), storeAndConfirmUnconfirmedFacta 在您报告存储的文件2天后删除其临时加密副本,或者在封存后30天,如果没有人这样做;公司所有人从第1天起就被邮寄。 见 临时副本。 。 。 .
  • 永久档案: issueAndArchive, (中文(简体) ), recoverOperation, (中文(简体) ), listPendingOperations, (中文(简体) ), invalidateAndArchive, (中文(简体) ), recoverInvalidation, (中文(简体) ), listPendingInvalidations, (中文(简体) ), replicateArchive, (中文(简体) ), diagnoseDestinations。 。 。 .
  • 通过电子邮件和WhatsApp发送: issue(request, { deliver }), (中文(简体) ), deliverEmail, (中文(简体) ), deliverWhatsApp, (中文(简体) ), getDelivery, (中文(简体) ), waitForDelivery. 发布从不等待交付;每个频道是一个单独的请求,带有5分钟的符号,故障报告为状态.
  • 本地打印 : print。 。 。 .

全数 方法参考 描述每种方法的输入,返回类型,证书范围,网络/局部效果,出错,以及重试或恢复行为.

安全发放和恢复

每个能够保留财政控制号的操作都需要一个稳定的 idempotencyKey。在超时后,用相同的请求重用相同的密钥;用该密钥更改的请求被拒绝. AbortSignal 停止本地等待/ 重复, 但无法证明服务器已经接受的请求已被取消 .

对于必须在进程重新启动后幸存的应用程序,使用 issueAndArchive 有坚固的档案, operationId,以及 idempotencyKey数字 :

import { Facta, type DteRequest } from "@facta-dte/api";
import { FileInvoiceArchive } from "@facta-dte/api/node";

const archive = await FileInvoiceArchive.open({
  directory: "./private-invoices",
  passphrase: process.env.FACTA_ARCHIVE_PASSPHRASE!,
});
const facta = new Facta({
  apiKey: process.env.FACTA_API_KEY!,
  signKey: process.env.FACTA_SIGN_KEY!,
  runtime: { archive },
});

const sale: DteRequest = {
  tipoDte: "01",
  items: [{ descripcion: "Sample item", cantidad: 1, precioUni: 10 }],
};
const result = await facta.issueAndArchive(sale, {
  includeTicket: false,
  operationId: "order-1042",
  idempotencyKey: "order-1042",
});
if (result.archive.state !== "complete") {
  // Fiscal success and archival status are separate. Keep the operation ID.
  await facta.recoverOperation("order-1042");
}

issueAndArchive 在财政请求之前存储不可更改的已解决的请求和操作身份。 它将服务器返回的确切签名的JSON和PDF存档,从JSON那里取出JWS,并且可选地要求只从支持它的API那里取出收据PDF. 使用 includeTicket: false 将 JSON、PDF 和 JWS 归档,而不要求票。 默认启用出票归档,需要配置 API kind=ticket PDF支持. 恢复在提出任何财政要求之前,先核实终点、API的关键身份、发行人和环境。 没有这种身份的遗留日记仍然可以检查,但不能自动重放.

存档是敏感数据 . FileInvoiceArchive 使用认证的加密和限制性本地文件权限;其密码口号必须独立于API,签名,以及金库证书. 将备份和保留置于应用程序的控制之下。 读取 存储适配器 用于远程复制适配器和调节.

单独准备和签署

使用 prepare 财务报告和审定财务报表 sign 只有在人或批准制度在签署之前必须审查犬科文件时:

const prepared = await facta.prepare(sale, { idempotencyKey: "order-1042:prepare" });
// Review prepared.documento and prepared.totales without changing them.
const result = await facta.sign(prepared, { idempotencyKey: "order-1042:sign" });

准备保留一个控制号。 准备好的文件和标志必须不加修改地传递给 sign页:1. prepare 没有使用 signKey时 sign 已经 两种路由都需要一等键,API 范围按 API 键,而不是按路由: 对每一步使用不同的键(绝不重复使用) prepare 键 sign,API拒绝使用 idempotency_key_reuse) (中文(简体) ). 见 编写/签名指南。 。 。 .

DTE 类型和财政有效载荷

导出类型Script 类型包括 DteRequest, (中文(简体) ), IssueResult, (中文(简体) ), PreparedDte, (中文(简体) ), DocumentStatus, (中文(简体) ), InvalidationRequest, (中文(简体) ), InvalidationResult, (中文(简体) ), DteType, (中文(简体) ), Recipient, (中文(简体) ), Address, (中文(简体) ), LineItem, (中文(简体) ), Totals,以及 DtePageDTE 请求类型构成一个按不变键的联盟 tipoDte 字段,覆盖 "01", (中文(简体) ), "03", (中文(简体) ), "05", (中文(简体) ), "06", (中文(简体) ), "11",以及 "14"。 。 。 .

该类型系统帮助构建有效载荷,但并不取代服务器侧税验证. SDK没有当地的增值税引擎,也不推断财政总额. 对于目录支持的价格,项目的增值税基础必须与DTE类型相匹配;提供明确的 precioUni 在文档的预期基础 推翻目录价格.

目录和目的地快照

syncDestinations() 使用 unlockKey。它不创建或更新服务器记录,也不将文物写入存储目的地。 由于0.6没有目录快照: customerId 编号 : productId 由服务器解决,目录读取名为 API.

issue() 从不写到存储 。 与 unlockKey 和已发表的快照, issueAndArchive() 财务报告和审定财务报表 recoverOperation() 并复制合法的 JSON 和 PDF 到您的同步目的地 在 Facta 的峡谷 DTE/…/YYYY/MM/<numeroControl> 路径( 选择退出) replicate: false),报告他们写给Facta的每份副本(一份报告,不是一份核实),以及表面问题作为非投掷 warnings。见 每个模式都做什么。 。 。 .

SDK本身不发送任何信息:电子邮件和WhatsApp的发送由API在您标记频道后进行. 它不在当地签署,不选择签署证书,也不取代API的财政合同.

Archivo DTE(接收器得到的)

密封结果携带 archivoDte: Archivo DTE 准确的 UTF-8 文本,即签名文件加 firmaElectronica (JWS,字节换字节)和 selloRecibido。这是给客户或会计师的文件。 在尚未加封的紧急情况下,没有封条. archivoJson 不变(所储存的原件, {codigoGeneracion, ambiente, jws});继续归档.

import { archivoDteOf } from "@facta-dte/api";

const result = await facta.issue(sale);
if (result.estado === "sellado") {
  // `archivoDte` when the API serves it; otherwise built from documento + jws + selloRecibido.
  const archivo = archivoDteOf(result);
}
const file = await facta.downloadDocument(code, "json");               // Archivo DTE (default)
const original = await facta.downloadDocument(code, "json", { raw: true }); // stored bytes
console.log(file.jsonFormat, original.jsonFormat);                     // "archivo-dte" "raw"

downloadDocument(code, "json") 现在默认返回 Archivo DTE 并报告 jsonFormat 从 X-Facta-Json-Format 页眉; { raw: true } 返回存储的正本,并且只对 json。没有封条的文档答案 409 not_sealed; 使用 raw: true 为它的原作。 反应接收和下载按钮将Archivo DTE作为“Descargar JSON ” ;“JSON 原创( raw ) ” rawJson prop,服务器处理器只有在 capabilities.rawJson 实值 true。本地复制品和复制品仍然保存着它们之前所储存的.

错误

经认证的 API 失败使用 FactaError,有一个稳定 code, HTTP 软件 status保险 details, (中文(简体) ), isRejection选择 spent 控制数字信息。 分会 code,而不是本地化消息文本。 本地验证可能投出 TypeError 或者说 RangeError;归档和存储适配器可以抛出自己打出的错误. 类似证书的值会从 API 错误细节中校正 .

只用相同的同能键重试同一请求. operation_outcome_unknown 并且归档完整性失败需要检查或核对;它们不授权发布替换的DTE。 这个 方法参考 包括每项公共行动的成果和恢复指导,以及 错误目录 列出每个错误代码及其 HTTP 状态、 重试行为和要做什么 .

实例和检查

输入的示例 examples/. 该套件的测试套件使用德诺. pack:check 建立节点无害环境管理捆绑和申报,将包装入一个临时目录,然后对照所包装的产出检查新鲜节点和德诺消费者.

pnpm test
pnpm pack:check

AI 编码代理的代理技能

skills/facta-dte-api/ 是一种可安装的代理技能( e)SKILL.md + 引用 + 类型检查的启动模板),它教给一个编码代理如何将这个SDK和Facta DTE HTTP API正确整合:密钥,DTE类型,一能性,应急性,文件和交付,出错和生产核对表. 安装和下载指令(英文和西班牙文): 技能/README.md。 。 。 . pnpm skill:pack 正在建设 dist/facta-dte-api-skill.zip。 。 。 .

指南

每个向导在 guides/英文和西班牙文。 两种反应指南只有英语.

专题联合国西班牙语Name
方法参考:每一种公共方法页:1参考文献
节点集成节点.md节点s.md
德诺融合(单位:千美元)(单位:千美元)
错误目录: 每个代码, HTTP 状态, 重试错误 md错误.s.md
目 录(续)专有能力.md一能性.es.md
待发文件:清单和重试,不印发两次待决文件. md待定文档.es.md
准备,审查,然后签署备注备注
Archivo DTE(接收器得到的)数据数据
通过电子邮件和WhatsApp发送交货交付.es.md
支付,全球折扣descuentoGlobal),非税线(noGravado),出口,预扣所得税支付-出口-retta.md支付-出口-retanta.es.md
回返(Evento de Redrono)返回活动md返回活动
诊断, diagnoseDestinations诊断诊断
区域定位区域区域.s.md
调试时间时间 . md时间 . s. md
参考钟参考时间:参考点.s.md
读取目录和 id 分辨率目录. md目录.es.md
Catalog 写作( 客户和产品)目录- write.md目录- write.es.md
目录更改和网络选择网络用户网络用户
草稿草案草案
存储适配器存储适应器. md储存适应器
临时副本和确认书临时拷贝临时副本.s.md
紧急保障紧急情况紧急情况
无头浏览器客户端( E)@facta-dte/api/browser(中文(简体) )浏览器. md浏览器.es.md
React 的签名窗口反应.md—— 说
签名窗口: 服务器侧和存储反应-服务器.md—— 说

文件语文

该存放处保存西班牙文文件 README.es.md英文指南 方法参考 并引导。 每个指南都与西班牙对应的链接.

公众现场测试报告

分组直播工作流程只发布公关和工作中的验证表 总结。 它核实签发的测试发票,在JSON和PDF上签字以保存 和一个加密的临时归档,然后删除归档。 从不上传 * 发票文件或出版发行人/客户识别码、生成码, 控制号、原始API错误或断言有效载荷.

文档查询和列出接收器元数据在Facta应用程序中加密、导入或恢复的文档,而API没有公司密钥,则可能无效。 SDK 保存为无效; 当前目录客户无法建立历史接收器 . unlockKey 只打开已公布的目录/目的地快照, 而不是历史发票接收符.

整个运行现场工作流程要求,对于BYOS的设置,其所有者公布的目的地快照在签发测试发票之前打开。 已准备好的只管理设置不需要 BYOS 的快照 。 无法获取的快照失败了运行; 库的发布与遗留状态响应的兼容性不会放弃此集成门 .

可执行的工作流程实例和存储失败

运出 工作流程实例 涵盖管理下的排放, 管理加加密本地/ BYOS 副本, 重新启动恢复, 目录引用, 58毫米车票,指定检验无效和老服务器诊断. 这个 6个DTE请求实例 输入固定模板 : 替换接收方占位符,并提供适当封存的发行方 实时使用前的注释参考。 进口货物不从事财政工作.

安装 @facta-dte/api,将示例复制到您的项目中,并呼叫 明确导出函数。 举个小例子:

node --experimental-strip-types --input-type=module -e "import { main } from './examples/hola-factura.ts'; await main();"
deno eval "import { main } from './examples/hola-factura.ts'; await main();"

设置测试 API 密钥, 明确 API URL并稳定 ERP_ORDER_ID 先说 失踪 配置在发行前停止最小示例. pack:check 编译 所有已运出实例并针对合成固定装置执行功能 在节点/德诺使用已打包的软件包。 这证明了实例兼容性; 实际的财政先决条件仍然是单独的验证门.

错误的存储收据并不能抵消财政上的成功: storageErrorCode 实值 storage_contract_invalid,而无效的收据被省略。 文件 归档持续了这一状况,并包括在待定的作业中,直到 修理提供有效收据。 永远不要用新的财政身份重新尝试. 目前的存储能力有缺陷的阻断诊断;没有更古老的路径 仍明确不详。 有管理的只有准备使BYOS同步 在签名和请求目录引用时保留其检查.

中转直播套房需要有管理的准备,核实耐用JSON/PDF 准确的内含字节的收据 从管理下的存储器读回来, 重放原始的一能键,只修复发票和检查 储存会计保持不变。 它只发布固定的结果标签. 车票/有效证和6个财政变体仍需明确指定 固定装置及其在实际支持索赔之前的财政先决条件.

使用 downloadDocument(generationCode, "pdf", { source: "managed" }) 需要管理好的 JSON/PDF 副本而无需背书。 本地出票请求拒绝此选项; 一个旧服务器, 没有源文件返回 storage_unsupported。默认下载顺序不变.

发布自动化

维护者从 publish.yml GitHub 动作工作流程 Facta-DTE/facta-api-sdk 使用 npm 信任出版(OIDC),不保存 npm 发布符. 受信任的出版商必须允许 npm publish。 。 。 . A 类 v<package-version> 标记触发测试、包装消费者验证和 出版物。 标记的承诺必须属于 main 匹配 package.json。 。 。 . 使用稳定版本 latest;预放出使用其预放出标记.

合并并验证释放 main,然后按下新版本标签。 别动 或尝试重印已出版的版本。 工作流程 直接发布; 没有单独的 npm 阶段- 包装批准步骤 .

版本与发布记录

@facta-dte/api 共发布 16 个版本,首次发布于 2026/10/04;过去 12 个月发布了 16 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.6.0latest2026/11/15今天
0.6.0-next.4next2026/11/0214 天前
0.6.0-next.32026/10/3017 天前
0.6.0-next.22026/10/2917 天前
0.6.0-next.12026/10/2918 天前
0.5.32026/10/2125 天前

其他发布通道:beta → 0.1.0-beta.1,next → 0.6.0-next.4。

关于 @facta-dte/api 的常见问题

@facta-dte/api 是什么?

萨尔瓦多Facta电子发票API(DTE)的TypeScript客户端.

如何安装 @facta-dte/api?

在项目目录运行 npm install @facta-dte/api,或使用 pnpm add / yarn add / bun add。

@facta-dte/api 支持 TypeScript 吗?

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

@facta-dte/api 支持 ESM 还是 CommonJS?

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

@facta-dte/api 需要什么版本的 Node.js?

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

@facta-dte/api 可以商用吗?

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

@facta-dte/api 的下载量有多少?

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

@facta-dte/api 还在维护吗?

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