@ 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认可任何衍生作品.