@nmtjs/protocol 0.14.5 → 0.15.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/LICENSE.md +1 -1
  2. package/README.md +1 -1
  3. package/dist/client/index.js +3 -1
  4. package/dist/client/protocol.js +6 -336
  5. package/dist/client/stream.js +137 -46
  6. package/dist/client/versions/v1.js +127 -0
  7. package/dist/common/binary.js +21 -9
  8. package/dist/common/blob.js +54 -30
  9. package/dist/common/constants.js +1 -0
  10. package/dist/common/enums.js +24 -11
  11. package/dist/common/index.js +2 -0
  12. package/dist/common/utils.js +6 -0
  13. package/dist/server/format.js +10 -8
  14. package/dist/server/index.js +3 -6
  15. package/dist/server/protocol.js +4 -354
  16. package/dist/server/stream.js +10 -1
  17. package/dist/server/utils.js +4 -4
  18. package/dist/server/versions/v1.js +118 -0
  19. package/package.json +17 -22
  20. package/dist/client/events.d.ts +0 -15
  21. package/dist/client/events.js +0 -28
  22. package/dist/client/format.d.ts +0 -21
  23. package/dist/client/index.d.ts +0 -4
  24. package/dist/client/protocol.d.ts +0 -150
  25. package/dist/client/stream.d.ts +0 -31
  26. package/dist/common/binary.d.ts +0 -19
  27. package/dist/common/blob.d.ts +0 -22
  28. package/dist/common/enums.d.ts +0 -41
  29. package/dist/common/index.d.ts +0 -4
  30. package/dist/common/types.d.ts +0 -33
  31. package/dist/server/api.d.ts +0 -33
  32. package/dist/server/api.js +0 -7
  33. package/dist/server/connection.d.ts +0 -25
  34. package/dist/server/connection.js +0 -22
  35. package/dist/server/constants.d.ts +0 -4
  36. package/dist/server/constants.js +0 -2
  37. package/dist/server/format.d.ts +0 -40
  38. package/dist/server/index.d.ts +0 -11
  39. package/dist/server/injectables.d.ts +0 -14
  40. package/dist/server/injectables.js +0 -22
  41. package/dist/server/protocol.d.ts +0 -128
  42. package/dist/server/registry.d.ts +0 -3
  43. package/dist/server/registry.js +0 -3
  44. package/dist/server/stream.d.ts +0 -13
  45. package/dist/server/transport.d.ts +0 -23
  46. package/dist/server/transport.js +0 -3
  47. package/dist/server/types.d.ts +0 -13
  48. package/dist/server/utils.d.ts +0 -15
@@ -1,150 +0,0 @@
1
- import type { InteractivePromise, OneOf } from '@nmtjs/common';
2
- import type { ProtocolBlobMetadata } from '../common/blob.ts';
3
- import type { BaseProtocolError, ProtocolRPCResponse } from '../common/types.ts';
4
- import type { BaseClientFormat } from './format.ts';
5
- import { ClientMessageType, ServerMessageType } from '../common/enums.ts';
6
- import { EventEmitter } from './events.ts';
7
- import { ProtocolClientBlobStream, ProtocolServerBlobStream, ProtocolServerStream } from './stream.ts';
8
- export declare class ProtocolError extends Error implements BaseProtocolError {
9
- code: string;
10
- data?: any;
11
- constructor(code: string, message?: string, data?: any);
12
- get message(): string;
13
- toString(): string;
14
- toJSON(): {
15
- code: string;
16
- message: string;
17
- data: any;
18
- };
19
- }
20
- export declare class ProtocolClientStreams {
21
- #private;
22
- get(streamId: number): ProtocolClientBlobStream;
23
- add(source: ReadableStream, streamId: number, metadata: ProtocolBlobMetadata): ProtocolClientBlobStream;
24
- remove(streamId: number): void;
25
- abort(streamId: number, error?: Error): void;
26
- pull(streamId: number, size: number): Promise<ArrayBuffer | null>;
27
- end(streamId: number): void;
28
- clear(error?: Error): void;
29
- }
30
- export declare class ProtocolServerStreams<T extends ProtocolServerStream = ProtocolServerStream> {
31
- #private;
32
- has(streamId: number): boolean;
33
- get(streamId: number): T;
34
- add(streamId: number, stream: T): T;
35
- remove(streamId: number): void;
36
- abort(streamId: number): void;
37
- push(streamId: number, chunk: ArrayBuffer): Promise<void>;
38
- end(streamId: number): void;
39
- clear(error?: Error): void;
40
- }
41
- export type ProtocolTransportEventMap = {
42
- connected: [];
43
- disconnected: [reason: 'server' | 'client' | 'error'];
44
- };
45
- export interface ProtocolSendMetadata {
46
- callId?: number;
47
- streamId?: number;
48
- }
49
- export declare enum ProtocolTransportStatus {
50
- CONNECTED = "CONNECTED",
51
- DISCONNECTED = "DISCONNECTED",
52
- CONNECTING = "CONNECTING"
53
- }
54
- export declare abstract class ProtocolTransport<Options = unknown> extends EventEmitter<ProtocolTransportEventMap> {
55
- protected options?: Options | undefined;
56
- status: ProtocolTransportStatus;
57
- constructor(options?: Options | undefined);
58
- abstract connect(auth: any, transformer: ProtocolBaseTransformer): Promise<void>;
59
- abstract disconnect(): Promise<void>;
60
- abstract call(procedure: string, payload: any, options: ProtocolBaseClientCallOptions, transformer: ProtocolBaseTransformer): Promise<ProtocolClientCall>;
61
- abstract send(messageType: ClientMessageType, buffer: ArrayBuffer, metadata: ProtocolSendMetadata): Promise<void>;
62
- }
63
- export declare class ProtocolBaseTransformer {
64
- encodeRPC(_procedure: string, payload: any): any;
65
- decodeRPC(_procedure: string, payload: any): any;
66
- decodeRPCChunk(_procedure: string, payload: any): any;
67
- decodeEvent(_event: string, payload: any): any;
68
- }
69
- export type ProtocolClientCall = InteractivePromise<any> & {
70
- procedure: string;
71
- signal: AbortSignal;
72
- };
73
- export type ProtocolBaseClientOptions = {
74
- transport: ProtocolTransport;
75
- format: BaseClientFormat;
76
- transformer?: ProtocolBaseTransformer;
77
- timeout?: number;
78
- };
79
- export type ProtocolBaseClientCallOptions = {
80
- signal?: AbortSignal;
81
- timeout: number;
82
- };
83
- export declare class BaseProtocol<T extends Record<string, Record<string, any>> = Record<string, Record<string, any>>> extends EventEmitter<{
84
- [N in keyof T]: {
85
- [E in keyof T[N] as `${Extract<N, string>}/${Extract<E, string>}`]: [
86
- payload: T[N][E]
87
- ];
88
- };
89
- }[keyof T]> {
90
- readonly format: BaseClientFormat;
91
- protected readonly clientStreams: ProtocolClientStreams;
92
- protected readonly serverStreams: ProtocolServerStreams<ProtocolServerBlobStream>;
93
- protected readonly rpcStreams: ProtocolServerStreams;
94
- protected readonly calls: Map<number, ProtocolClientCall>;
95
- protected callId: number;
96
- protected streamId: number;
97
- constructor(format: BaseClientFormat);
98
- get contentType(): string;
99
- handleCallResponse(callId: number, call: ProtocolClientCall, response: OneOf<[
100
- {
101
- error: BaseProtocolError;
102
- },
103
- {
104
- result: any;
105
- stream?: any;
106
- }
107
- ]>, transformer: ProtocolBaseTransformer): void;
108
- handleRpcResponse({ callId, error, result, streams }: ProtocolRPCResponse, transformer: ProtocolBaseTransformer, stream?: ProtocolServerStream): ProtocolClientCall;
109
- handleRpcStreamResponse(response: ProtocolRPCResponse, stream: ProtocolServerStream, transformer: ProtocolBaseTransformer): ProtocolClientCall;
110
- createCall(procedure: string, options: ProtocolBaseClientCallOptions): InteractivePromise<unknown> & {
111
- procedure: string;
112
- signal: AbortSignal;
113
- };
114
- createRpc(procedure: string, payload: any, options: ProtocolBaseClientCallOptions, transformer: ProtocolBaseTransformer): {
115
- callId: number;
116
- call: InteractivePromise<unknown> & {
117
- procedure: string;
118
- signal: AbortSignal;
119
- };
120
- streams: Record<number, ProtocolClientBlobStream>;
121
- buffer: ArrayBuffer;
122
- };
123
- pushRpcStream(callId: number, chunk: any): void;
124
- endRpcStream(callId: number): void;
125
- abortRpcStream(callId: number): void;
126
- removeClientStream(streamId: number): void;
127
- pullClientStream(streamId: number, size: number): Promise<ArrayBuffer | null>;
128
- endClientStream(streamId: number): void;
129
- abortClientStream(streamId: number, error?: Error): void;
130
- addServerStream(stream: ProtocolServerBlobStream): void;
131
- removeServerStream(streamId: number): void;
132
- pushServerStream(streamId: number, chunk: ArrayBuffer): Promise<void>;
133
- endServerStream(streamId: number): void;
134
- abortServerStream(streamId: number, _error?: Error): void;
135
- emitEvent(event: string, payload: string, transformer: ProtocolBaseTransformer): void;
136
- }
137
- export declare class Protocol<T extends Record<string, Record<string, any>> = Record<string, Record<string, any>>> extends BaseProtocol<T> {
138
- handleServerMessage(buffer: ArrayBuffer, transport: ProtocolTransport, transformer: ProtocolBaseTransformer): void;
139
- protected [ServerMessageType.Event](buffer: ArrayBuffer, _transport: ProtocolTransport, transformer: ProtocolBaseTransformer): void;
140
- protected [ServerMessageType.RpcResponse](buffer: ArrayBuffer, transport: ProtocolTransport, transformer: ProtocolBaseTransformer): void;
141
- protected [ServerMessageType.RpcStreamResponse](buffer: ArrayBuffer, transport: ProtocolTransport, transformer: ProtocolBaseTransformer): void;
142
- protected [ServerMessageType.RpcStreamChunk](buffer: ArrayBuffer, _transport: ProtocolTransport, _transformer: ProtocolBaseTransformer): void;
143
- protected [ServerMessageType.RpcStreamEnd](buffer: ArrayBuffer, _transport: ProtocolTransport, _transformer: ProtocolBaseTransformer): void;
144
- protected [ServerMessageType.RpcStreamAbort](buffer: ArrayBuffer, _transport: ProtocolTransport, _transformer: ProtocolBaseTransformer): void;
145
- protected [ServerMessageType.ServerStreamPush](buffer: ArrayBuffer, transport: ProtocolTransport, _transformer: ProtocolBaseTransformer): void;
146
- protected [ServerMessageType.ServerStreamEnd](buffer: ArrayBuffer, _transport: ProtocolTransport, _transformer: ProtocolBaseTransformer): void;
147
- protected [ServerMessageType.ServerStreamAbort](buffer: ArrayBuffer, _transport: ProtocolTransport, _transformer: ProtocolBaseTransformer): void;
148
- protected [ServerMessageType.ClientStreamPull](buffer: ArrayBuffer, transport: ProtocolTransport, _transformer: ProtocolBaseTransformer): void;
149
- protected [ServerMessageType.ClientStreamAbort](buffer: ArrayBuffer, _transport: ProtocolTransport, _transformer: ProtocolBaseTransformer): void;
150
- }
@@ -1,31 +0,0 @@
1
- import type { ProtocolBlobInterface, ProtocolBlobMetadata } from '../common/blob.ts';
2
- import { BlobKey } from '../common/blob.ts';
3
- export declare class ProtocolClientBlobStream extends TransformStream<any, ArrayBuffer> implements ProtocolBlobInterface {
4
- #private;
5
- readonly source: ReadableStream;
6
- readonly id: number;
7
- readonly metadata: ProtocolBlobMetadata;
8
- readonly [BlobKey] = true;
9
- constructor(source: ReadableStream, id: number, metadata: ProtocolBlobMetadata);
10
- read(size: number): Promise<ArrayBuffer | null>;
11
- abort(error?: Error): void;
12
- end(): Promise<void>;
13
- }
14
- export interface ProtocolServerStreamInterface<T = any> {
15
- [Symbol.asyncIterator](): AsyncGenerator<T>;
16
- abort(error?: Error): void;
17
- }
18
- export declare class ProtocolServerStream<T = any> extends TransformStream<any, T> implements ProtocolServerStreamInterface<T> {
19
- #private;
20
- constructor(options?: Transformer<any, T>);
21
- [Symbol.asyncIterator](): AsyncGenerator<Awaited<T>, void, unknown>;
22
- push(chunk: T): Promise<void>;
23
- end(): Promise<void>;
24
- abort(error?: Error): Promise<void>;
25
- }
26
- export declare class ProtocolServerBlobStream extends ProtocolServerStream<ArrayBuffer> implements ProtocolBlobInterface {
27
- readonly id: number;
28
- readonly metadata: ProtocolBlobMetadata;
29
- readonly [BlobKey] = true;
30
- constructor(id: number, metadata: ProtocolBlobMetadata, options?: Transformer<any, ArrayBuffer>);
31
- }
@@ -1,19 +0,0 @@
1
- declare const utf8decoder: TextDecoder;
2
- export type BinaryTypes = {
3
- Int8: number;
4
- Int16: number;
5
- Int32: number;
6
- Uint8: number;
7
- Uint16: number;
8
- Uint32: number;
9
- Float32: number;
10
- Float64: number;
11
- BigInt64: bigint;
12
- BigUint64: bigint;
13
- };
14
- export declare const encodeNumber: <T extends keyof BinaryTypes>(value: BinaryTypes[T], type: T, littleEndian?: boolean) => ArrayBuffer;
15
- export declare const decodeNumber: <T extends keyof BinaryTypes>(buffer: ArrayBuffer, type: T, offset?: number, littleEndian?: boolean) => BinaryTypes[T];
16
- export declare const encodeText: (text: string) => ArrayBuffer;
17
- export declare const decodeText: (buffer: Parameters<typeof utf8decoder.decode>[0]) => string;
18
- export declare const concat: (...buffers: ArrayBuffer[]) => ArrayBuffer;
19
- export {};
@@ -1,22 +0,0 @@
1
- export declare const BlobKey: unique symbol;
2
- export type BlobKey = typeof BlobKey;
3
- export type ProtocolBlobMetadata = {
4
- type: string;
5
- size?: number | undefined;
6
- filename?: string | undefined;
7
- };
8
- export interface ProtocolBlobInterface {
9
- readonly metadata: ProtocolBlobMetadata;
10
- readonly [BlobKey]: true;
11
- }
12
- export declare class ProtocolBlob implements ProtocolBlobInterface {
13
- readonly [BlobKey] = true;
14
- readonly metadata: ProtocolBlobMetadata;
15
- readonly source: any;
16
- constructor(source: any, size?: number, type?: string, filename?: string);
17
- static from(source: any, metadata?: {
18
- size?: number;
19
- type?: string;
20
- filename?: string;
21
- }): ProtocolBlob;
22
- }
@@ -1,41 +0,0 @@
1
- export declare enum ClientMessageType {
2
- Rpc = 10,
3
- RpcAbort = 11,
4
- RpcStreamAbort = 12,
5
- ClientStreamPush = 20,
6
- ClientStreamEnd = 21,
7
- ClientStreamAbort = 22,
8
- ServerStreamAbort = 23,
9
- ServerStreamPull = 24
10
- }
11
- export declare enum ServerMessageType {
12
- Event = 1,
13
- RpcResponse = 10,
14
- RpcStreamResponse = 11,
15
- RpcStreamChunk = 12,
16
- RpcStreamEnd = 13,
17
- RpcStreamAbort = 14,
18
- ServerStreamPush = 20,
19
- ServerStreamEnd = 21,
20
- ServerStreamAbort = 22,
21
- ClientStreamAbort = 23,
22
- ClientStreamPull = 24
23
- }
24
- export declare enum TransportType {
25
- Bidirectional = "Bidirectional",
26
- Unidirectional = "Unidirectional"
27
- }
28
- export declare enum ErrorCode {
29
- ValidationError = "ValidationError",
30
- BadRequest = "BadRequest",
31
- NotFound = "NotFound",
32
- Forbidden = "Forbidden",
33
- Unauthorized = "Unauthorized",
34
- InternalServerError = "InternalServerError",
35
- NotAcceptable = "NotAcceptable",
36
- RequestTimeout = "RequestTimeout",
37
- GatewayTimeout = "GatewayTimeout",
38
- ServiceUnavailable = "ServiceUnavailable",
39
- ClientRequestError = "ClientRequestError",
40
- ConnectionError = "ConnectionError"
41
- }
@@ -1,4 +0,0 @@
1
- export * from './binary.ts';
2
- export * from './blob.ts';
3
- export * from './enums.ts';
4
- export * from './types.ts';
@@ -1,33 +0,0 @@
1
- import type { OneOf } from '@nmtjs/common';
2
- import type { ProtocolBlob, ProtocolBlobMetadata } from './blob.ts';
3
- type Stream = any;
4
- export interface BaseProtocolError {
5
- code: string;
6
- message: string;
7
- data?: any;
8
- }
9
- export type ProtocolRPC = {
10
- callId: number;
11
- procedure: string;
12
- payload: any;
13
- };
14
- export type ProtocolRPCResponse<T = Stream> = OneOf<[
15
- {
16
- callId: number;
17
- error: BaseProtocolError;
18
- },
19
- {
20
- callId: number;
21
- result: any;
22
- streams: Record<number, T>;
23
- }
24
- ]>;
25
- export interface EncodeRPCContext<T = Stream> {
26
- getStream: (id: number) => T;
27
- addStream: (blob: ProtocolBlob) => T;
28
- }
29
- export interface DecodeRPCContext<T = Stream> {
30
- getStream: (id: number, callId: number) => T;
31
- addStream: (id: number, callId: number, metadata: ProtocolBlobMetadata) => T;
32
- }
33
- export {};
@@ -1,33 +0,0 @@
1
- import type { Async } from '@nmtjs/common';
2
- import type { Container, Hook, MetadataStore } from '@nmtjs/core';
3
- import type { Connection } from './connection.ts';
4
- import { kIterableResponse } from './constants.ts';
5
- export type ProtocolApiCallOptions = {
6
- connection: Connection;
7
- procedure: string;
8
- container: Container;
9
- payload: any;
10
- signal: AbortSignal;
11
- validateMetadata?: (metadata: MetadataStore) => void;
12
- };
13
- export type ProtocolAnyIterable<T> = ((signal: AbortSignal) => Async<AsyncIterable<T>>) | AsyncIterable<T>;
14
- export interface ProtocolApiCallBaseResult<T = unknown> {
15
- output: T;
16
- }
17
- export interface ProtocolApiCallIterableResult<Y = unknown, O = unknown> extends ProtocolApiCallBaseResult<O> {
18
- [kIterableResponse]: true;
19
- iterable: ProtocolAnyIterable<Y>;
20
- onFinish?: () => void;
21
- }
22
- export type ProtocolApiCallResult = ProtocolApiCallBaseResult | ProtocolApiCallIterableResult;
23
- export interface ProtocolApi {
24
- call(options: ProtocolApiCallOptions): Promise<ProtocolApiCallResult>;
25
- }
26
- export declare function isIterableResult(value: ProtocolApiCallResult): value is ProtocolApiCallIterableResult;
27
- export declare function createStreamResponse<Y, O>(iterable: ProtocolAnyIterable<Y>, output?: O, onFinish?: () => void): ProtocolApiCallIterableResult<Y, O>;
28
- declare module '@nmtjs/core' {
29
- interface HookType {
30
- [Hook.OnConnect]: (connection: Connection) => any;
31
- [Hook.OnDisconnect]: (connection: Connection) => any;
32
- }
33
- }
@@ -1,7 +0,0 @@
1
- import { kIterableResponse } from "./constants.js";
2
- export function isIterableResult(value) {
3
- return value && value[kIterableResponse] === true;
4
- }
5
- export function createStreamResponse(iterable, output = undefined, onFinish) {
6
- return { [kIterableResponse]: true, iterable, output, onFinish };
7
- }
@@ -1,25 +0,0 @@
1
- import type { Container } from '@nmtjs/core';
2
- import type { BaseServerDecoder, BaseServerEncoder } from './format.ts';
3
- import type { ProtocolClientStream, ProtocolServerStream } from './stream.ts';
4
- export type ConnectionOptions<Data = unknown> = {
5
- id?: string;
6
- data: Data;
7
- };
8
- export declare class Connection<Data = unknown> {
9
- readonly id: string;
10
- readonly data: Data;
11
- constructor(options: ConnectionOptions<Data>);
12
- }
13
- export declare class ConnectionContext {
14
- streamId: number;
15
- rpcs: Map<number, AbortController>;
16
- clientStreams: Map<number, ProtocolClientStream>;
17
- serverStreams: Map<number, ProtocolServerStream>;
18
- rpcStreams: Map<number, AbortController>;
19
- container: Container;
20
- format: {
21
- encoder: BaseServerEncoder;
22
- decoder: BaseServerDecoder;
23
- };
24
- constructor(container: ConnectionContext['container'], format: ConnectionContext['format']);
25
- }
@@ -1,22 +0,0 @@
1
- import { randomUUID } from 'node:crypto';
2
- export class Connection {
3
- id;
4
- data;
5
- constructor(options) {
6
- this.id = options.id ?? randomUUID();
7
- this.data = options.data;
8
- }
9
- }
10
- export class ConnectionContext {
11
- streamId = 1;
12
- rpcs = new Map();
13
- clientStreams = new Map();
14
- serverStreams = new Map();
15
- rpcStreams = new Map();
16
- container;
17
- format;
18
- constructor(container, format) {
19
- this.container = container;
20
- this.format = format;
21
- }
22
- }
@@ -1,4 +0,0 @@
1
- export declare const kTransportPlugin: unique symbol;
2
- export type kTransportPlugin = typeof kTransportPlugin;
3
- export declare const kIterableResponse: unique symbol;
4
- export type kIterableResponse = typeof kIterableResponse;
@@ -1,2 +0,0 @@
1
- export const kTransportPlugin = Symbol.for('neemata:TransportPluginKey');
2
- export const kIterableResponse = Symbol.for('neemata:IterableResponseKey');
@@ -1,40 +0,0 @@
1
- import type { OneOf } from '@nmtjs/common';
2
- import type { Pattern } from '@nmtjs/core';
3
- import type { DecodeRPCContext, EncodeRPCContext, ProtocolRPC, ProtocolRPCResponse } from '../common/types.ts';
4
- import type { ProtocolClientStream, ProtocolServerStream } from './stream.ts';
5
- export interface BaseServerDecoder {
6
- accept: Pattern[];
7
- decode(buffer: ArrayBuffer): any;
8
- decodeRPC(buffer: ArrayBuffer, context: DecodeRPCContext<ProtocolClientStream>): ProtocolRPC;
9
- }
10
- export interface BaseServerEncoder {
11
- contentType: string;
12
- encode(data: any): ArrayBuffer;
13
- encodeRPC(rpc: OneOf<[
14
- {
15
- callId: number;
16
- error: any;
17
- },
18
- {
19
- callId: number;
20
- result: any;
21
- }
22
- ]>, context: EncodeRPCContext<ProtocolServerStream>): ArrayBuffer;
23
- }
24
- export declare abstract class BaseServerFormat implements BaseServerDecoder, BaseServerEncoder {
25
- abstract accept: Pattern[];
26
- abstract contentType: string;
27
- abstract encode(data: any): ArrayBuffer;
28
- abstract encodeRPC(rpc: ProtocolRPCResponse, context: EncodeRPCContext<ProtocolServerStream>): ArrayBuffer;
29
- abstract decode(buffer: ArrayBuffer): any;
30
- abstract decodeRPC(buffer: ArrayBuffer, context: DecodeRPCContext<ProtocolClientStream>): ProtocolRPC;
31
- }
32
- export declare const parseContentTypes: (types: string) => string[];
33
- export declare class ProtocolFormat {
34
- decoders: Map<Pattern, BaseServerDecoder>;
35
- encoders: Map<Pattern, BaseServerEncoder>;
36
- constructor(formats: BaseServerFormat[]);
37
- supportsDecoder(contentType: string, throwIfUnsupported?: boolean): BaseServerDecoder | null;
38
- supportsEncoder(contentType: string, throwIfUnsupported?: boolean): BaseServerEncoder | null;
39
- private supports;
40
- }
@@ -1,11 +0,0 @@
1
- export * from './api.ts';
2
- export * from './connection.ts';
3
- export * from './constants.ts';
4
- export * from './format.ts';
5
- export * from './injectables.ts';
6
- export * from './protocol.ts';
7
- export * from './registry.ts';
8
- export * from './stream.ts';
9
- export * from './transport.ts';
10
- export * from './types.ts';
11
- export * from './utils.ts';
@@ -1,14 +0,0 @@
1
- import { Scope } from '@nmtjs/core';
2
- import type { Connection } from './connection.ts';
3
- export declare const ProtocolInjectables: {
4
- readonly connection: import("@nmtjs/core").LazyInjectable<Connection<unknown>, Scope.Connection>;
5
- readonly connectionData: import("@nmtjs/core").LazyInjectable<any, Scope.Connection>;
6
- readonly connectionAbortSignal: import("@nmtjs/core").LazyInjectable<AbortSignal, Scope.Connection>;
7
- readonly rpcClientAbortSignal: import("@nmtjs/core").LazyInjectable<AbortSignal, Scope.Call>;
8
- readonly rpcTimeoutSignal: import("@nmtjs/core").LazyInjectable<AbortSignal, Scope.Call>;
9
- readonly rpcAbortSignal: import("@nmtjs/core").FactoryInjectable<AbortSignal, {
10
- rpcTimeoutSignal: import("@nmtjs/core").LazyInjectable<AbortSignal, Scope.Call>;
11
- rpcClientAbortSignal: import("@nmtjs/core").LazyInjectable<AbortSignal, Scope.Call>;
12
- connectionAbortSignal: import("@nmtjs/core").LazyInjectable<AbortSignal, Scope.Connection>;
13
- }, Scope.Global, AbortSignal>;
14
- };
@@ -1,22 +0,0 @@
1
- import { createFactoryInjectable, createLazyInjectable, Scope, } from '@nmtjs/core';
2
- const connection = createLazyInjectable(Scope.Connection, 'RPC connection');
3
- const connectionData = createLazyInjectable(Scope.Connection, "RPC connection's data");
4
- const connectionAbortSignal = createLazyInjectable(Scope.Connection, 'Connection abort signal');
5
- const rpcClientAbortSignal = createLazyInjectable(Scope.Call, 'RPC client abort signal');
6
- const rpcTimeoutSignal = createLazyInjectable(Scope.Call, 'RPC timeout signal');
7
- const rpcAbortSignal = createFactoryInjectable({
8
- dependencies: {
9
- rpcTimeoutSignal,
10
- rpcClientAbortSignal,
11
- connectionAbortSignal,
12
- },
13
- factory: (ctx) => AbortSignal.any(Object.values(ctx)),
14
- }, 'Any RPC abort signal');
15
- export const ProtocolInjectables = {
16
- connection,
17
- connectionData,
18
- connectionAbortSignal,
19
- rpcClientAbortSignal,
20
- rpcTimeoutSignal,
21
- rpcAbortSignal,
22
- };
@@ -1,128 +0,0 @@
1
- import type { Callback } from '@nmtjs/common';
2
- import type { AnyInjectable, Container, Logger } from '@nmtjs/core';
3
- import type { ProtocolBlob, ProtocolBlobMetadata } from '../common/blob.ts';
4
- import type { ProtocolRPC } from '../common/types.ts';
5
- import type { ProtocolApi, ProtocolApiCallOptions } from './api.ts';
6
- import type { ConnectionOptions } from './connection.ts';
7
- import type { ProtocolFormat } from './format.ts';
8
- import type { ProtocolRegistry } from './registry.ts';
9
- import type { Transport } from './transport.ts';
10
- import type { ResolveFormatParams } from './utils.ts';
11
- import { Connection, ConnectionContext } from './connection.ts';
12
- import { ProtocolClientStream, ProtocolServerStream } from './stream.ts';
13
- export declare class ProtocolError extends Error {
14
- code: string;
15
- data?: any;
16
- constructor(code: string, message?: string, data?: any);
17
- get message(): string;
18
- toString(): string;
19
- toJSON(): {
20
- code: string;
21
- message: string;
22
- data: any;
23
- };
24
- }
25
- export type ProtocolConnectionTransport = {
26
- send: Transport<any>['send'];
27
- };
28
- export declare class ProtocolConnections {
29
- #private;
30
- private readonly application;
31
- constructor(application: {
32
- logger: Logger;
33
- registry: ProtocolRegistry;
34
- format: ProtocolFormat;
35
- container: Container;
36
- });
37
- get(connectionId: string): {
38
- connection: Connection;
39
- context: ConnectionContext;
40
- transport: ProtocolConnectionTransport;
41
- };
42
- add<T>(transport: ProtocolConnectionTransport, options: ConnectionOptions<T>, params: ResolveFormatParams): Promise<{
43
- connection: Connection<T>;
44
- context: ConnectionContext;
45
- }>;
46
- remove(connectionId: string): Promise<void>;
47
- initialize(connection: Connection): Promise<void>;
48
- }
49
- export declare class ProtocolClientStreams {
50
- private readonly connections;
51
- constructor(connections: ProtocolConnections);
52
- get(connectionId: string, streamId: number): ProtocolClientStream;
53
- remove(connectionId: string, streamId: number): void;
54
- add(connectionId: string, streamId: number, metadata: ProtocolBlobMetadata, read: Callback): ProtocolClientStream;
55
- push(connectionId: string, streamId: number, chunk: ArrayBuffer): void;
56
- end(connectionId: string, streamId: number): void;
57
- abort(connectionId: string, streamId: number, error?: Error): void;
58
- }
59
- export declare class ProtocolServerStreams {
60
- private readonly connections;
61
- constructor(connections: ProtocolConnections);
62
- get(connectionId: string, streamId: number): ProtocolServerStream;
63
- add(connectionId: string, streamId: number, blob: ProtocolBlob): ProtocolServerStream;
64
- remove(connectionId: string, streamId: number): void;
65
- pull(connectionId: string, streamId: number): void;
66
- abort(connectionId: string, streamId: number, error?: Error): void;
67
- }
68
- export type ProtocolRPCOptions = {
69
- signal?: AbortSignal;
70
- provides?: [AnyInjectable, any][];
71
- validateMetadata?: ProtocolApiCallOptions['validateMetadata'];
72
- };
73
- export declare class Protocol {
74
- #private;
75
- protected readonly application: {
76
- logger: Logger;
77
- format: ProtocolFormat;
78
- container: Container;
79
- registry: ProtocolRegistry;
80
- api: ProtocolApi;
81
- };
82
- protected readonly options?: {
83
- persistConnections?: {
84
- timeout: number;
85
- };
86
- } | undefined;
87
- constructor(application: {
88
- logger: Logger;
89
- format: ProtocolFormat;
90
- container: Container;
91
- registry: ProtocolRegistry;
92
- api: ProtocolApi;
93
- }, options?: {
94
- persistConnections?: {
95
- timeout: number;
96
- };
97
- } | undefined);
98
- call(options: ProtocolApiCallOptions): Promise<import("./api.ts").ProtocolApiCallResult>;
99
- rpc(connectionId: string, rpc: ProtocolRPC, params?: ProtocolRPCOptions): Promise<void>;
100
- rpcRaw(connectionId: string, buffer: ArrayBuffer, params?: ProtocolRPCOptions): Promise<void>;
101
- rpcAbort(connectionId: string, callId: number): void;
102
- rpcAbortRaw(connectionId: string, buffer: ArrayBuffer): void;
103
- rpcStreamAbort(connectionId: string, callId: number): void;
104
- rpcStreamAbortRaw(connectionId: string, buffer: ArrayBuffer): void;
105
- notify(): void;
106
- addConnection(transport: ProtocolConnectionTransport, options: ConnectionOptions, params: ResolveFormatParams): Promise<{
107
- connection: Connection<unknown>;
108
- context: ConnectionContext;
109
- }>;
110
- removeConnection(connectionId: string): Promise<void>;
111
- getConnection(connectionId: string): {
112
- connection: Connection;
113
- context: ConnectionContext;
114
- transport: ProtocolConnectionTransport;
115
- };
116
- initializeConnection(connection: Connection): Promise<void>;
117
- getClientStream(connectionId: string, streamId: number): ProtocolClientStream;
118
- addClientStream(connectionId: string, streamId: number, metadata: ProtocolBlobMetadata, read: Callback): ProtocolClientStream;
119
- removeClientStream(connectionId: string, streamId: number): void;
120
- pushClientStream(connectionId: string, streamId: number, chunk: ArrayBuffer): void;
121
- endClientStream(connectionId: string, streamId: number): void;
122
- abortClientStream(connectionId: string, streamId: number, error?: Error): void;
123
- getServerStream(connectionId: string, streamId: number): ProtocolServerStream;
124
- addServerStream(connectionId: string, streamId: number, blob: ProtocolBlob): ProtocolServerStream;
125
- removeServerStream(connectionId: string, streamId: number): void;
126
- pullServerStream(connectionId: string, streamId: number): void;
127
- abortServerStream(connectionId: string, streamId: number, error?: Error): void;
128
- }
@@ -1,3 +0,0 @@
1
- import { Registry } from '@nmtjs/core';
2
- export declare class ProtocolRegistry extends Registry {
3
- }
@@ -1,3 +0,0 @@
1
- import { Registry } from '@nmtjs/core';
2
- export class ProtocolRegistry extends Registry {
3
- }
@@ -1,13 +0,0 @@
1
- import type { ReadableOptions } from 'node:stream';
2
- import { PassThrough } from 'node:stream';
3
- import type { ProtocolBlob, ProtocolBlobMetadata } from '../common/blob.ts';
4
- export declare class ProtocolClientStream extends PassThrough {
5
- readonly id: number;
6
- readonly metadata: ProtocolBlobMetadata;
7
- constructor(id: number, metadata: ProtocolBlobMetadata, options?: ReadableOptions);
8
- }
9
- export declare class ProtocolServerStream extends PassThrough {
10
- readonly id: number;
11
- readonly metadata: ProtocolBlobMetadata;
12
- constructor(id: number, blob: ProtocolBlob);
13
- }