@nmtjs/protocol 0.15.0-beta.35 → 0.15.0-beta.37

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 (93) hide show
  1. package/LICENSE.md +1 -1
  2. package/README.md +1 -1
  3. package/dist/client/events.d.ts +15 -0
  4. package/dist/client/events.js +28 -0
  5. package/dist/client/format.d.ts +13 -18
  6. package/dist/client/format.js +0 -1
  7. package/dist/client/index.d.ts +1 -4
  8. package/dist/client/index.js +4 -7
  9. package/dist/client/protocol.d.ts +138 -102
  10. package/dist/client/protocol.js +336 -7
  11. package/dist/client/stream.d.ts +19 -37
  12. package/dist/client/stream.js +46 -138
  13. package/dist/common/binary.d.ts +6 -5
  14. package/dist/common/binary.js +9 -22
  15. package/dist/common/blob.d.ts +8 -15
  16. package/dist/common/blob.js +30 -55
  17. package/dist/common/enums.d.ts +7 -17
  18. package/dist/common/enums.js +14 -34
  19. package/dist/common/index.d.ts +0 -2
  20. package/dist/common/index.js +4 -7
  21. package/dist/common/types.d.ts +24 -5
  22. package/dist/common/types.js +0 -1
  23. package/dist/server/api.d.ts +33 -0
  24. package/dist/server/api.js +7 -0
  25. package/dist/server/connection.d.ts +25 -0
  26. package/dist/server/connection.js +22 -0
  27. package/dist/server/constants.d.ts +4 -0
  28. package/dist/server/constants.js +2 -0
  29. package/dist/server/format.d.ts +23 -17
  30. package/dist/server/format.js +8 -13
  31. package/dist/server/index.d.ts +6 -4
  32. package/dist/server/index.js +11 -9
  33. package/dist/server/injectables.d.ts +14 -0
  34. package/dist/server/injectables.js +22 -0
  35. package/dist/server/protocol.d.ts +114 -88
  36. package/dist/server/protocol.js +354 -5
  37. package/dist/server/registry.d.ts +3 -0
  38. package/dist/server/registry.js +3 -0
  39. package/dist/server/stream.d.ts +0 -5
  40. package/dist/server/stream.js +2 -31
  41. package/dist/server/transport.d.ts +23 -0
  42. package/dist/server/transport.js +3 -0
  43. package/dist/server/types.d.ts +8 -29
  44. package/dist/server/types.js +0 -1
  45. package/dist/server/utils.d.ts +6 -3
  46. package/dist/server/utils.js +4 -5
  47. package/package.json +24 -17
  48. package/dist/client/format.js.map +0 -1
  49. package/dist/client/index.js.map +0 -1
  50. package/dist/client/protocol.js.map +0 -1
  51. package/dist/client/stream.js.map +0 -1
  52. package/dist/client/versions/v1.d.ts +0 -108
  53. package/dist/client/versions/v1.js +0 -128
  54. package/dist/client/versions/v1.js.map +0 -1
  55. package/dist/common/binary.js.map +0 -1
  56. package/dist/common/blob.js.map +0 -1
  57. package/dist/common/constants.d.ts +0 -2
  58. package/dist/common/constants.js +0 -2
  59. package/dist/common/constants.js.map +0 -1
  60. package/dist/common/enums.js.map +0 -1
  61. package/dist/common/index.js.map +0 -1
  62. package/dist/common/types.js.map +0 -1
  63. package/dist/common/utils.d.ts +0 -2
  64. package/dist/common/utils.js +0 -7
  65. package/dist/common/utils.js.map +0 -1
  66. package/dist/server/format.js.map +0 -1
  67. package/dist/server/index.js.map +0 -1
  68. package/dist/server/protocol.js.map +0 -1
  69. package/dist/server/stream.js.map +0 -1
  70. package/dist/server/types.js.map +0 -1
  71. package/dist/server/utils.js.map +0 -1
  72. package/dist/server/versions/v1.d.ts +0 -77
  73. package/dist/server/versions/v1.js +0 -119
  74. package/dist/server/versions/v1.js.map +0 -1
  75. package/src/client/format.ts +0 -49
  76. package/src/client/index.ts +0 -8
  77. package/src/client/protocol.ts +0 -107
  78. package/src/client/stream.ts +0 -222
  79. package/src/client/versions/v1.ts +0 -205
  80. package/src/common/binary.ts +0 -70
  81. package/src/common/blob.ts +0 -94
  82. package/src/common/constants.ts +0 -2
  83. package/src/common/enums.ts +0 -62
  84. package/src/common/index.ts +0 -6
  85. package/src/common/types.ts +0 -18
  86. package/src/common/utils.ts +0 -12
  87. package/src/server/format.ts +0 -117
  88. package/src/server/index.ts +0 -10
  89. package/src/server/protocol.ts +0 -97
  90. package/src/server/stream.ts +0 -72
  91. package/src/server/types.ts +0 -42
  92. package/src/server/utils.ts +0 -22
  93. package/src/server/versions/v1.ts +0 -198
package/LICENSE.md CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2025 Denys Ilchyshyn
1
+ Copyright (c) 2024 Denis Ilchyshyn
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4
4
 
package/README.md CHANGED
@@ -6,4 +6,4 @@
6
6
  - binary data streaming and event subscriptions
7
7
  - contract-based API
8
8
  - end-to-end type safety
9
- - CPU-intensive task execution on separate workers
9
+ - CPU-intensive task execution on separate workers
@@ -0,0 +1,15 @@
1
+ import type { Callback } from '@nmtjs/common';
2
+ export type EventMap = {
3
+ [K: string]: any[];
4
+ };
5
+ /**
6
+ * Very simple node-like event emitter wrapper around EventTarget
7
+ */
8
+ export declare class EventEmitter<Events extends EventMap = EventMap, EventName extends Extract<keyof Events, string> = Extract<keyof Events, string>> {
9
+ #private;
10
+ static once<T extends EventEmitter, E extends T extends EventEmitter<any, infer Event> ? Event : never>(ee: T, event: E): Promise<unknown>;
11
+ on<E extends EventName>(event: E | (Object & string), listener: (...args: Events[E]) => void, options?: AddEventListenerOptions): () => void;
12
+ once<E extends EventName>(event: E | (Object & string), listener: (...args: Events[E]) => void, options?: AddEventListenerOptions): () => void;
13
+ off(event: EventName | (Object & string), listener: Callback): void;
14
+ emit<E extends EventName | (Object & string)>(event: E, ...args: E extends EventName ? Events[E] : any[]): boolean;
15
+ }
@@ -0,0 +1,28 @@
1
+ // TODO: add errors and promise rejections handling
2
+ /**
3
+ * Very simple node-like event emitter wrapper around EventTarget
4
+ */
5
+ export class EventEmitter {
6
+ static once(ee, event) {
7
+ return new Promise((resolve) => ee.once(event, resolve));
8
+ }
9
+ #target = new EventTarget();
10
+ #listeners = new Map();
11
+ on(event, listener, options) {
12
+ const wrapper = (event) => listener(...event.detail);
13
+ this.#listeners.set(listener, wrapper);
14
+ this.#target.addEventListener(event, wrapper, { ...options, once: false });
15
+ return () => this.#target.removeEventListener(event, wrapper);
16
+ }
17
+ once(event, listener, options) {
18
+ return this.on(event, listener, { ...options, once: true });
19
+ }
20
+ off(event, listener) {
21
+ const wrapper = this.#listeners.get(listener);
22
+ if (wrapper)
23
+ this.#target.removeEventListener(event, wrapper);
24
+ }
25
+ emit(event, ...args) {
26
+ return this.#target.dispatchEvent(new CustomEvent(event, { detail: args }));
27
+ }
28
+ }
@@ -1,26 +1,21 @@
1
- import type { ProtocolBlob } from '../common/blob.ts';
2
- import type { DecodeRPCContext } from '../common/types.ts';
1
+ import type { DecodeRPCContext, EncodeRPCContext, ProtocolRPC, ProtocolRPCResponse } from '../common/types.ts';
3
2
  import type { ProtocolClientBlobStream, ProtocolServerBlobStream } from './stream.ts';
4
- export interface EncodeRPCContext<T = any> {
5
- addStream: (blob: ProtocolBlob) => T;
6
- }
7
- export type ProtocolRPCEncode = ArrayBufferView;
3
+ export type ProtocolRPCEncode = {
4
+ buffer: ArrayBuffer;
5
+ streams: Record<number, ProtocolClientBlobStream>;
6
+ };
8
7
  export interface BaseClientDecoder {
9
- decode(buffer: ArrayBufferView): unknown;
10
- decodeRPC(buffer: ArrayBufferView, context: DecodeRPCContext<(options?: {
11
- signal?: AbortSignal;
12
- }) => ProtocolServerBlobStream>): unknown;
8
+ decode(buffer: ArrayBuffer): any;
9
+ decodeRPC(buffer: ArrayBuffer, context: DecodeRPCContext<ProtocolServerBlobStream>): ProtocolRPCResponse<ProtocolServerBlobStream>;
13
10
  }
14
11
  export interface BaseClientEncoder {
15
- encode(data: unknown): ArrayBufferView;
16
- encodeRPC(data: unknown, context: EncodeRPCContext<ProtocolClientBlobStream>): ProtocolRPCEncode;
12
+ encode(data: any): ArrayBuffer;
13
+ encodeRPC(rpc: ProtocolRPC, context: EncodeRPCContext<ProtocolClientBlobStream>): ProtocolRPCEncode;
17
14
  }
18
15
  export declare abstract class BaseClientFormat implements BaseClientDecoder, BaseClientEncoder {
19
16
  abstract contentType: string;
20
- abstract encode(data: unknown): ArrayBufferView;
21
- abstract encodeRPC(data: unknown, context: EncodeRPCContext): ProtocolRPCEncode;
22
- abstract decode(buffer: ArrayBufferView): unknown;
23
- abstract decodeRPC(buffer: ArrayBufferView, context: DecodeRPCContext<(options?: {
24
- signal?: AbortSignal;
25
- }) => ProtocolServerBlobStream>): unknown;
17
+ abstract encode(data: any): ArrayBuffer;
18
+ abstract encodeRPC(rpc: ProtocolRPC, context: EncodeRPCContext<ProtocolClientBlobStream>): ProtocolRPCEncode;
19
+ abstract decode(buffer: ArrayBuffer): any;
20
+ abstract decodeRPC(buffer: ArrayBuffer, context: DecodeRPCContext<ProtocolServerBlobStream>): ProtocolRPCResponse<ProtocolServerBlobStream>;
26
21
  }
@@ -1,3 +1,2 @@
1
1
  export class BaseClientFormat {
2
2
  }
3
- //# sourceMappingURL=format.js.map
@@ -1,7 +1,4 @@
1
+ export * from './events.ts';
1
2
  export * from './format.ts';
2
3
  export * from './protocol.ts';
3
4
  export * from './stream.ts';
4
- import { ProtocolVersion1 } from './versions/v1.ts';
5
- export declare const versions: {
6
- 1: ProtocolVersion1;
7
- };
@@ -1,7 +1,4 @@
1
- export * from './format.js';
2
- export * from './protocol.js';
3
- export * from './stream.js';
4
- import { ProtocolVersion } from '../common/enums.js';
5
- import { ProtocolVersion1 } from './versions/v1.js';
6
- export const versions = { [ProtocolVersion.v1]: new ProtocolVersion1() };
7
- //# sourceMappingURL=index.js.map
1
+ export * from "./events.js";
2
+ export * from "./format.js";
3
+ export * from "./protocol.js";
4
+ export * from "./stream.js";
@@ -1,105 +1,10 @@
1
- import type { ProtocolBlob, ProtocolBlobMetadata } from '../common/blob.ts';
2
- import type { ClientMessageType, ProtocolVersion, ServerMessageType } from '../common/enums.ts';
3
- import type { BaseProtocolError, EncodeRPCStreams } from '../common/types.ts';
4
- import type { BaseClientDecoder, BaseClientEncoder } from './format.ts';
5
- import type { ProtocolClientBlobStream, ProtocolServerBlobStream } from './stream.ts';
6
- export type MessageContext = {
7
- decoder: BaseClientDecoder;
8
- encoder: BaseClientEncoder;
9
- addClientStream: (blob: ProtocolBlob) => ProtocolClientBlobStream;
10
- addServerStream: (streamId: number, metadata: ProtocolBlobMetadata) => (options?: {
11
- signal?: AbortSignal;
12
- }) => ProtocolServerBlobStream;
13
- transport: {
14
- send: (buffer: ArrayBufferView) => void;
15
- };
16
- streamId: () => number;
17
- };
18
- export type ClientMessageTypePayload = {
19
- [ClientMessageType.Rpc]: {
20
- callId: number;
21
- procedure: string;
22
- payload: any;
23
- };
24
- [ClientMessageType.RpcAbort]: {
25
- callId: number;
26
- reason?: string;
27
- };
28
- [ClientMessageType.RpcPull]: {
29
- callId: number;
30
- };
31
- [ClientMessageType.ClientStreamPush]: {
32
- streamId: number;
33
- chunk: ArrayBufferView;
34
- };
35
- [ClientMessageType.ClientStreamEnd]: {
36
- streamId: number;
37
- };
38
- [ClientMessageType.ClientStreamAbort]: {
39
- streamId: number;
40
- reason?: string;
41
- };
42
- [ClientMessageType.ServerStreamPull]: {
43
- streamId: number;
44
- size: number;
45
- };
46
- [ClientMessageType.ServerStreamAbort]: {
47
- streamId: number;
48
- reason?: string;
49
- };
50
- };
51
- export type ServerMessageTypePayload = {
52
- [ServerMessageType.RpcResponse]: {
53
- callId: number;
54
- result?: any;
55
- error?: BaseProtocolError;
56
- streams?: EncodeRPCStreams;
57
- };
58
- [ServerMessageType.RpcStreamResponse]: {
59
- callId: number;
60
- error?: BaseProtocolError;
61
- };
62
- [ServerMessageType.RpcStreamChunk]: {
63
- callId: number;
64
- chunk: ArrayBufferView;
65
- };
66
- [ServerMessageType.RpcStreamEnd]: {
67
- callId: number;
68
- };
69
- [ServerMessageType.RpcStreamAbort]: {
70
- callId: number;
71
- reason?: string;
72
- };
73
- [ServerMessageType.ServerStreamAbort]: {
74
- streamId: number;
75
- reason?: string;
76
- };
77
- [ServerMessageType.ServerStreamEnd]: {
78
- streamId: number;
79
- };
80
- [ServerMessageType.ServerStreamPush]: {
81
- streamId: number;
82
- chunk: ArrayBufferView;
83
- };
84
- [ServerMessageType.ClientStreamAbort]: {
85
- streamId: number;
86
- reason?: string;
87
- };
88
- [ServerMessageType.ClientStreamPull]: {
89
- streamId: number;
90
- size: number;
91
- };
92
- };
93
- export declare abstract class ProtocolVersionInterface {
94
- abstract version: ProtocolVersion;
95
- abstract decodeMessage(context: MessageContext, buffer: ArrayBufferView): {
96
- [K in keyof ServerMessageTypePayload]: {
97
- type: K;
98
- } & ServerMessageTypePayload[K];
99
- }[keyof ServerMessageTypePayload];
100
- abstract encodeMessage<T extends ClientMessageType>(context: MessageContext, messageType: T, payload: ClientMessageTypePayload[T]): any;
101
- protected encode(...chunks: (ArrayBuffer | ArrayBufferView)[]): Uint8Array<ArrayBuffer>;
102
- }
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';
103
8
  export declare class ProtocolError extends Error implements BaseProtocolError {
104
9
  code: string;
105
10
  data?: any;
@@ -112,3 +17,134 @@ export declare class ProtocolError extends Error implements BaseProtocolError {
112
17
  data: any;
113
18
  };
114
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
+ }