@api.global/typedrequest-interfaces

中文文档
7.1.0发布于 2026/08/15MITTypeScriptES Module零依赖近 30 天下载 2.9万

已打入请求、事件、标记和运输中性VirtualStream合同.

中文使用文档
文档目录11 节
  1. 问题报告和安全
  2. 安装
  3. 使用量
  4. 设置您的工程
  5. 基本执行
  6. 处理类型事件
  7. 使用标记
  8. 虚拟流
  9. 许可证和法律资料
  10. 商标
  11. 企业信息

@ api. global/ 类型请求- 界面

已打入请求、事件、标记和运输中性VirtualStream合同.

问题报告和安全

关于报告错误、问题或安全弱点,请访问 社区. fos.global/这是所有问题报告的中央社区中心。 签署和遵守我们缴款协议并经过身份验证的开发者也可获得 代码.fos.global/ 账户直接提交 Pull 请求.

安装

要安装 @api.global/typedrequest-interfaces,您需要安装在您的系统中的节点.js。 然后,您可以在您的终端中运行以下命令,从而将此软件包添加到您的工程中:

pnpm add @api.global/typedrequest-interfaces

这将将软件包添加到您的项目依赖性中 。 确保您在您的工程目录中或者指定您的工程所在路径 .

使用量

此软件包提供打入的请求、事件、标记和运输中性 TypeScript应用程序的VirtualStream合同.

设置您的工程

首先,确保您的项目能够使用 TypeScript (ECMAScript 模块) 。 你需要一个 tsconfig.json 在工程根中至少有以下设置的文件 :

{
  "compilerOptions": {
    "target": "ESNext",
    "module": "ESNext",
    "moduleResolution": "node",
    "outDir": "./dist",
    "declaration": true,
    "esModuleInterop": true,
    "experimentalDecorators": true,
    "forceConsistentCasingInFileNames": true
  },
  "include": ["src/**/*"]
}

根据您的项目要求调整设置 。 这种配置支持了现代的JavaScript特性和TypeScript.

基本执行

要使用软件包提供的接口,请从导入到您的 TypeScript 文件开始。 下面是一个实例,说明如何使用接口定义打出的请求:

import { ITypedRequest, ITypedEvent, ITag, TVirtualStream } from '@api.global/typedrequest-interfaces';

// Example: Defining a typed request
interface MyCustomRequest extends ITypedRequest {
  method: 'MyCustomMethod';
  authInfo?: {
    jwt: string;
  };
  request: {
    someData: string;
  };
  response: {
    resultData: number;
  };
}

此片段显示如何创建自定义界面 MyCustomRequest 执行 ITypedRequest 界面。 您可以指定请求和响应数据的类型,以适应应用程序的需要.

requestInstanceId 是一个精确请求尝试的传输元数据。 每个 运输反应必须保留。 取消和单独路由响应 登记册与方法和相关性一起使用 ID 无法重试 使用陈旧的反应。 应用程序请求接口不需要声明 又来了.

处理类型事件

也可以定义并使用类似以下示例的打出的事件:

// Example: Defining a typed event
interface MyCustomEvent extends ITypedEvent<{ message: string }> {
  name: 'MyCustomEvent';
  uniqueEventId: 'Event123';
  payload: {
    message: 'Hello World';
  };
}

使用标记

标记可用于将元数据或分类信息附加到您的请求或事件上。 执行标记看起来是这样的:

// Example: Defining a tag
interface UserActionTag extends ITag {
  name: 'UserAction';
  payload: {
    userId: number;
    action: string;
  };
}

虚拟流

TVirtualStream 一种运输中性抽象的有限转让 相机帧等可打开的流. 它带有命令逻辑 Uint8Array 在一个明确的局部方向上块. 一个 send() 或者说 WritableStream.write() 映射到一个 receive() 结实或可读的队列, 即便运输在内部碎片化.

import type { ITypedRequest, TVirtualStream } from '@api.global/typedrequest-interfaces';

interface IUploadRequest extends ITypedRequest {
  method: 'upload';
  request: {
    stream: TVirtualStream<'send'>;
  };
  response: {
    stored: boolean;
  };
}

const upload = async (
  stream: TVirtualStream<'send'>,
  chunks: Uint8Array[],
) => {
  for (const chunk of chunks) {
    await stream.send(chunk);
  }
  return await stream.close();
};

共享类型请求 DTO 的方向总是请求对等方 向上转. TypedHandler 为处理器的本地视图反转一次 . 上传声明为 TVirtualStream<'send'> 因此,操作者 TVirtualStream<'receive'>。 。 。 .

接收者一次消耗一个完整的逻辑块. undefined 有风度 欧文。 排出 EOF后,接收者明确接受流;拒绝 或中止为对等可见 :

const receive = async (stream: TVirtualStream<'receive'>) => {
  while (true) {
    const chunk = await stream.receive();
    if (chunk === undefined) break;
    // Persist or process this complete logical chunk.
  }
  return await stream.accept();
};

无限制流省略 integrity 并可以持续到对等结束 他们。 有限已核实的流 声明准确的集合字节长度和 SHA-256摘要. 块边界不影响聚合文摘:

import type {
  IVirtualStreamIntegrity,
} from '@api.global/typedrequest-interfaces';

const integrity: IVirtualStreamIntegrity = {
  algorithm: 'sha256',
  byteLength: 12_345,
  digest: `sha256:${'0'.repeat(64)}`,
};

opened 如果成立失败,则拒绝. completion 以共享方式解决 接受接收,拒绝任何异常结果. closed 永远 解析 . WritableStream.close() 地图到 发送者的优雅的接近, WritableStream.abort() 要中止的地图,以及 ReadableStream.cancel() 地图到接收器拒绝。 直接 receive() 财务报告和审定财务报表 可读消费是相互排斥的;发送者 send() 可写 写入一个命令的限入队列 .

IVirtualStreamDescriptor, (中文(简体) ), IVirtualStreamTransportRegistration,以及 IVirtualStreamTransport 定义类型请求和 键入Socket. 描述式运输数据与JSON兼容但不透明 键入请求. 登记是同步的,无声的,它的同源性 处置者不进行运输 编译- 时间对向方向通过 TOppositeVirtualStreamDirection。 。 。 . 运输中转接收所需 AbortSignal 和剩余超时 运输必须停止保留中转作业,并在中断时迅速结算.

所显示的例子表明: @api.global/typedrequest-interfaces 软件包,用于构建应用程序的请求响应机制、事件处理、标记和流管理。 通过遵循 TypeScript 和 ESM 的惯例,您可以将这些接口杠杆化到 坚固的,被键入的 API 和服务中去.

这个寄存器包含根据麻省理工学院许可证许可的开源代码. 许可证副本可以在寄存器许可证文件中找到.

请注意: 麻省理工学院许可证不准许使用该项目的商品名、商标、服务标记或产品名称,除非在描述作品来源和复制NOTICE文件内容时需要合理和习惯使用.

商标

这个项目由Task Venture Capital GmbH拥有和维护。 与Task Venture Capital GmbH相关的名称和标志以及任何相关的产品或服务是Task Venture Capital GmbH或第三方的商标,不属于本文授予的麻省理工学院许可证的范围.

使用这些商标必须符合Wasure Venture Capital GmbH的商标准则或各自的第三方所有者的准则,任何使用都必须获得书面批准。 此处使用的第三方商标是其各自所有者的财产并仅以描述方式使用,例如用于实施API或类似的.

企业信息

任务风险资本股份有限公司
在德国不来梅地区法院注册的HRB 35230 HB

如欲了解任何法律查询或进一步情况,请通过电子邮件与我们联系 你好@ task.vc。 。 。 .

通过使用这个寄存器,你承认你读过这个部分,同意遵守它的条款,并且明白代码的许可并不意味着Task Venture Capital GmbH认可任何衍生作品.

版本与发布记录

@api.global/typedrequest-interfaces 共发布 27 个版本,首次发布于 2023/08/04;过去 12 个月发布了 7 个版本。

版本发布日期距今
7.1.0latest2026/08/152 个月前
7.0.02026/08/053 个月前
6.0.02026/08/053 个月前
5.1.12026/08/013 个月前
5.1.02026/08/013 个月前
5.0.02026/08/013 个月前

关于 @api.global/typedrequest-interfaces 的常见问题

@api.global/typedrequest-interfaces 是什么?

已打入请求、事件、标记和运输中性VirtualStream合同.

如何安装 @api.global/typedrequest-interfaces?

在项目目录运行 npm install @api.global/typedrequest-interfaces,或使用 pnpm add / yarn add / bun add。

@api.global/typedrequest-interfaces 支持 TypeScript 吗?

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

@api.global/typedrequest-interfaces 支持 ESM 还是 CommonJS?

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

@api.global/typedrequest-interfaces 可以商用吗?

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

@api.global/typedrequest-interfaces 的下载量有多少?

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

@api.global/typedrequest-interfaces 还在维护吗?

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