Compare commits
28 Commits
Author | SHA1 | Date | |
---|---|---|---|
fba724741b | |||
854cc93644 | |||
ec7fa07855 | |||
b34e88123d | |||
b680ab8c23 | |||
f0547b33d3 | |||
20c5b115d8 | |||
c3801ecd53 | |||
51f03a45b6 | |||
ed8879a4c8 | |||
806970c701 | |||
9638f74440 | |||
b538c4fbdb | |||
1d3dc08e39 | |||
56f59bf640 | |||
268df991c4 | |||
b3d8dd1573 | |||
0fb36ea928 | |||
10148f7c50 | |||
274bf30973 | |||
e3ff1c3c4b | |||
446a9d1723 | |||
a749f91a8f | |||
8ea6db7b7f | |||
715ee43bcc | |||
c314b4e86f | |||
5824d34764 | |||
5eb9035dfe |
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@api.global/typedrequest-interfaces",
|
||||
"version": "3.0.4",
|
||||
"version": "3.0.18",
|
||||
"private": false,
|
||||
"description": "interfaces for making typed requests",
|
||||
"main": "dist_ts/index.js",
|
||||
|
@ -3,6 +3,6 @@
|
||||
*/
|
||||
export const commitinfo = {
|
||||
name: '@api.global/typedrequest-interfaces',
|
||||
version: '3.0.4',
|
||||
version: '3.0.18',
|
||||
description: 'interfaces for making typed requests'
|
||||
}
|
||||
|
91
ts/index.ts
91
ts/index.ts
@ -17,7 +17,7 @@ export interface ITypedRequest {
|
||||
*/
|
||||
localData?: {
|
||||
firstTypedrouter?: any;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* server data that is added for dealing with the request server side. Will be omitted when sending the response
|
||||
@ -76,19 +76,78 @@ export interface ITag {
|
||||
|
||||
export type implementsTag<T, U extends T> = {};
|
||||
|
||||
export interface IStreamRequest extends implementsTR<
|
||||
ITypedRequest,
|
||||
IStreamRequest
|
||||
> {
|
||||
method: '##VirtualStream##';
|
||||
request: {
|
||||
streamId: string;
|
||||
streamChunk: any;
|
||||
close: boolean;
|
||||
};
|
||||
response: {
|
||||
streamId: string;
|
||||
streamChunk: any;
|
||||
close: boolean;
|
||||
};
|
||||
|
||||
// stream stuff
|
||||
export interface IVirtualStream<T = ArrayBufferLike> {
|
||||
// Properties
|
||||
side: 'requesting' | 'responding';
|
||||
streamId: string;
|
||||
sendMethod: any;
|
||||
typedrouter: any;
|
||||
|
||||
// Methods
|
||||
handleStreamTr(streamTrArg: IStreamRequest): Promise<IStreamRequest>;
|
||||
cleanup(): Promise<void>;
|
||||
sendData(dataArg: T): Promise<void>;
|
||||
fetchData(): Promise<T>;
|
||||
readFromWebstream(readableStreamArg: ReadableStream<T>): Promise<void>;
|
||||
writeToWebstream(wwritableStreamArg: WritableStream<T>): Promise<void>; // Consider defining a more specific type for webStream if possible
|
||||
}
|
||||
|
||||
export interface IUnifiedStreamDataPackage {
|
||||
/**
|
||||
* the stream id, so Virtual Streams can talk to each other
|
||||
*/
|
||||
streamId: string;
|
||||
|
||||
/**
|
||||
* stream data is sent in cycles. This id is used to match the request and response
|
||||
*/
|
||||
cycleId: string;
|
||||
cycle: 'request' | 'response';
|
||||
|
||||
/**
|
||||
* the main purpose of the data package
|
||||
* start: indicates the start of a stream
|
||||
* chunk: indicates a binary chunk of data
|
||||
* read: indicates the introduction to send data
|
||||
* end: indicates the end of a stream
|
||||
* feedback: indicates a feedback message
|
||||
*/
|
||||
mainPurpose: 'start' | 'chunk' | 'read' | 'end' | 'feedback' | 'keepAlive';
|
||||
|
||||
/**
|
||||
* the data package
|
||||
*/
|
||||
chunkData?: any;
|
||||
|
||||
/**
|
||||
* feedback message
|
||||
*/
|
||||
feedback?: {
|
||||
message?: string;
|
||||
data?: any;
|
||||
sha265?: string;
|
||||
};
|
||||
|
||||
/**
|
||||
* keepAlive boolean
|
||||
*/
|
||||
keepAlive?: boolean;
|
||||
|
||||
/**
|
||||
* is backpressure detected on the readable side?
|
||||
*/
|
||||
backpressure?: boolean;
|
||||
|
||||
/**
|
||||
* does the writable side have more data scheduled to be sent?
|
||||
*/
|
||||
next?: boolean;
|
||||
}
|
||||
|
||||
export interface IStreamRequest extends implementsTR<ITypedRequest, IStreamRequest> {
|
||||
method: '##VirtualStream##';
|
||||
request: IUnifiedStreamDataPackage;
|
||||
response: IUnifiedStreamDataPackage;
|
||||
}
|
||||
|
@ -3,9 +3,12 @@
|
||||
"experimentalDecorators": true,
|
||||
"useDefineForClassFields": false,
|
||||
"target": "ES2022",
|
||||
"module": "ES2022",
|
||||
"moduleResolution": "nodenext",
|
||||
"module": "NodeNext",
|
||||
"moduleResolution": "NodeNext",
|
||||
"esModuleInterop": true,
|
||||
"verbatimModuleSyntax": true,
|
||||
}
|
||||
"verbatimModuleSyntax": true
|
||||
},
|
||||
"exclude": [
|
||||
"dist_*/**/*.d.ts"
|
||||
]
|
||||
}
|
||||
|
Reference in New Issue
Block a user