@nmtjs/protocol 0.16.0-beta.4 → 0.16.0-beta.5
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.
- package/dist/client/format.d.ts +4 -4
- package/dist/client/format.js.map +1 -1
- package/dist/client/protocol.d.ts +3 -3
- package/dist/client/protocol.js.map +1 -1
- package/dist/client/stream.d.ts +0 -3
- package/dist/common/blob.d.ts +3 -0
- package/dist/common/blob.js +28 -0
- package/dist/common/blob.js.map +1 -1
- package/dist/common/types.d.ts +1 -3
- package/dist/server/format.d.ts +3 -4
- package/dist/server/format.js.map +1 -1
- package/dist/server/types.d.ts +1 -13
- package/package.json +9 -9
- package/src/client/format.ts +4 -7
- package/src/client/protocol.ts +7 -6
- package/src/client/stream.ts +0 -5
- package/src/common/blob.ts +38 -0
- package/src/common/types.ts +1 -3
- package/src/server/format.ts +6 -4
- package/src/server/types.ts +1 -16
package/dist/client/format.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import type { ProtocolBlob } from '../common/blob.ts';
|
|
1
|
+
import type { ProtocolBlob, ProtocolBlobInterface } from '../common/blob.ts';
|
|
2
2
|
import type { DecodeRPCContext } from '../common/types.ts';
|
|
3
|
-
import type { ProtocolClientBlobStream
|
|
3
|
+
import type { ProtocolClientBlobStream } from './stream.ts';
|
|
4
4
|
export interface EncodeRPCContext<T = any> {
|
|
5
5
|
addStream: (blob: ProtocolBlob) => T;
|
|
6
6
|
}
|
|
7
7
|
export type ProtocolRPCEncode = ArrayBufferView;
|
|
8
8
|
export interface BaseClientDecoder {
|
|
9
9
|
decode(buffer: ArrayBufferView): unknown;
|
|
10
|
-
decodeRPC(buffer: ArrayBufferView, context: DecodeRPCContext<
|
|
10
|
+
decodeRPC(buffer: ArrayBufferView, context: DecodeRPCContext<ProtocolBlobInterface>): unknown;
|
|
11
11
|
}
|
|
12
12
|
export interface BaseClientEncoder {
|
|
13
13
|
encode(data: unknown): ArrayBufferView;
|
|
@@ -18,5 +18,5 @@ export declare abstract class BaseClientFormat implements BaseClientDecoder, Bas
|
|
|
18
18
|
abstract encode(data: unknown): ArrayBufferView;
|
|
19
19
|
abstract encodeRPC(data: unknown, context: EncodeRPCContext): ProtocolRPCEncode;
|
|
20
20
|
abstract decode(buffer: ArrayBufferView): unknown;
|
|
21
|
-
abstract decodeRPC(buffer: ArrayBufferView, context: DecodeRPCContext<
|
|
21
|
+
abstract decodeRPC(buffer: ArrayBufferView, context: DecodeRPCContext<ProtocolBlobInterface>): unknown;
|
|
22
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/client/format.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/client/format.ts"],"names":[],"mappings":"AA0BA,MAAM,OAAgB,gBAAgB;CAerC"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import type { ProtocolBlob, ProtocolBlobMetadata } from '../common/blob.ts';
|
|
1
|
+
import type { ProtocolBlob, ProtocolBlobInterface, ProtocolBlobMetadata } from '../common/blob.ts';
|
|
2
2
|
import type { ClientMessageType, ProtocolVersion, ServerMessageType } from '../common/enums.ts';
|
|
3
3
|
import type { BaseProtocolError, EncodeRPCStreams } from '../common/types.ts';
|
|
4
4
|
import type { BaseClientDecoder, BaseClientEncoder } from './format.ts';
|
|
5
|
-
import type { ProtocolClientBlobStream
|
|
5
|
+
import type { ProtocolClientBlobStream } from './stream.ts';
|
|
6
6
|
export type MessageContext = {
|
|
7
7
|
decoder: BaseClientDecoder;
|
|
8
8
|
encoder: BaseClientEncoder;
|
|
9
9
|
addClientStream: (blob: ProtocolBlob) => ProtocolClientBlobStream;
|
|
10
|
-
addServerStream: (streamId: number, metadata: ProtocolBlobMetadata) =>
|
|
10
|
+
addServerStream: (streamId: number, metadata: ProtocolBlobMetadata) => ProtocolBlobInterface;
|
|
11
11
|
transport: {
|
|
12
12
|
send: (buffer: ArrayBufferView) => void;
|
|
13
13
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/client/protocol.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/client/protocol.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAuD5C,MAAM,OAAgB,wBAAwB;IAgBlC,MAAM,CAAC,GAAG,MAAyC,EAAE;QAC7D,OAAO,MAAM,CAAC,GAAG,MAAM,CAAC,CAAA;IAAA,CACzB;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,KAAK;IACtC,IAAI,CAAQ;IACZ,IAAI,CAAM;IAEV,YAAY,IAAY,EAAE,OAAgB,EAAE,IAAU,EAAE;QACtD,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAAA,CACjB;IAED,IAAI,OAAO,GAAG;QACZ,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE,CAAA;IAAA,CACvC;IAED,QAAQ,GAAG;QACT,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAA;IAAA,CACtC;IAED,MAAM,GAAG;QACP,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAA;IAAA,CACF;CACF"}
|
package/dist/client/stream.d.ts
CHANGED
package/dist/common/blob.d.ts
CHANGED
|
@@ -6,8 +6,11 @@ export type ProtocolBlobMetadata = {
|
|
|
6
6
|
};
|
|
7
7
|
export interface ProtocolBlobInterface {
|
|
8
8
|
readonly metadata: ProtocolBlobMetadata;
|
|
9
|
+
readonly streamId?: number;
|
|
9
10
|
readonly [kBlobKey]: any;
|
|
10
11
|
}
|
|
12
|
+
export declare const createProtocolBlobReference: (streamId: number, metadata: ProtocolBlobMetadata) => ProtocolBlobInterface;
|
|
13
|
+
export declare const getProtocolBlobStreamId: (blob: ProtocolBlobInterface) => number;
|
|
11
14
|
export declare class ProtocolBlob implements ProtocolBlobInterface {
|
|
12
15
|
[kBlobKey]: true;
|
|
13
16
|
readonly source: any;
|
package/dist/common/blob.js
CHANGED
|
@@ -1,4 +1,32 @@
|
|
|
1
1
|
import { kBlobKey } from './constants.js';
|
|
2
|
+
export const createProtocolBlobReference = (streamId, metadata) => {
|
|
3
|
+
return Object.defineProperties({}, {
|
|
4
|
+
metadata: {
|
|
5
|
+
configurable: false,
|
|
6
|
+
enumerable: true,
|
|
7
|
+
writable: false,
|
|
8
|
+
value: metadata,
|
|
9
|
+
},
|
|
10
|
+
streamId: {
|
|
11
|
+
configurable: false,
|
|
12
|
+
enumerable: false,
|
|
13
|
+
writable: false,
|
|
14
|
+
value: streamId,
|
|
15
|
+
},
|
|
16
|
+
[kBlobKey]: {
|
|
17
|
+
configurable: false,
|
|
18
|
+
enumerable: false,
|
|
19
|
+
writable: false,
|
|
20
|
+
value: true,
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
export const getProtocolBlobStreamId = (blob) => {
|
|
25
|
+
if (typeof blob.streamId !== 'number') {
|
|
26
|
+
throw new Error('Blob does not reference a protocol stream');
|
|
27
|
+
}
|
|
28
|
+
return blob.streamId;
|
|
29
|
+
};
|
|
2
30
|
export class ProtocolBlob {
|
|
3
31
|
[kBlobKey] = true;
|
|
4
32
|
source;
|
package/dist/common/blob.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blob.js","sourceRoot":"","sources":["../../src/common/blob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"blob.js","sourceRoot":"","sources":["../../src/common/blob.ts"],"names":[],"mappings":"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"}
|
package/dist/common/types.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { ProtocolBlobMetadata } from './blob.ts';
|
|
2
|
-
type Stream = any;
|
|
3
2
|
export interface BaseProtocolError {
|
|
4
3
|
code: string;
|
|
5
4
|
message: string;
|
|
@@ -8,7 +7,6 @@ export interface BaseProtocolError {
|
|
|
8
7
|
export type ProtocolRPCPayload = unknown;
|
|
9
8
|
export type ProtocolRPCResponse = unknown;
|
|
10
9
|
export type EncodeRPCStreams = Record<number, ProtocolBlobMetadata>;
|
|
11
|
-
export interface DecodeRPCContext<T =
|
|
10
|
+
export interface DecodeRPCContext<T = unknown> {
|
|
12
11
|
addStream: (id: number, metadata: ProtocolBlobMetadata) => T;
|
|
13
12
|
}
|
|
14
|
-
export {};
|
package/dist/server/format.d.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import type { Pattern } from '@nmtjs/common';
|
|
2
|
-
import type { ProtocolBlobMetadata } from '../common/blob.ts';
|
|
2
|
+
import type { ProtocolBlobInterface, ProtocolBlobMetadata } from '../common/blob.ts';
|
|
3
3
|
import type { DecodeRPCContext, EncodeRPCStreams, ProtocolRPCPayload } from '../common/types.ts';
|
|
4
|
-
import type { ProtocolClientStream } from './stream.ts';
|
|
5
4
|
export interface BaseServerDecoder {
|
|
6
5
|
accept: Pattern[];
|
|
7
6
|
decode(buffer: ArrayBufferView): unknown;
|
|
8
|
-
decodeRPC(buffer: ArrayBufferView, context: DecodeRPCContext<
|
|
7
|
+
decodeRPC(buffer: ArrayBufferView, context: DecodeRPCContext<ProtocolBlobInterface>): ProtocolRPCPayload;
|
|
9
8
|
}
|
|
10
9
|
export interface BaseServerEncoder {
|
|
11
10
|
contentType: string;
|
|
@@ -20,7 +19,7 @@ export declare abstract class BaseServerFormat implements BaseServerDecoder, Bas
|
|
|
20
19
|
abstract encodeRPC(data: unknown, streams: EncodeRPCStreams): ArrayBufferView;
|
|
21
20
|
abstract encodeBlob(streamId: number, metadata: ProtocolBlobMetadata): unknown;
|
|
22
21
|
abstract decode(buffer: ArrayBufferView): any;
|
|
23
|
-
abstract decodeRPC(buffer: ArrayBufferView, context: DecodeRPCContext<
|
|
22
|
+
abstract decodeRPC(buffer: ArrayBufferView, context: DecodeRPCContext<ProtocolBlobInterface>): ProtocolRPCPayload;
|
|
24
23
|
}
|
|
25
24
|
export declare const parseContentTypes: (types: string) => string[];
|
|
26
25
|
export declare class ProtocolFormats {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/server/format.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/server/format.ts"],"names":[],"mappings":"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"}
|
package/dist/server/types.d.ts
CHANGED
|
@@ -1,13 +1,6 @@
|
|
|
1
|
-
import type { PlainType } from '@nmtjs/type';
|
|
2
1
|
import type { ProtocolBlobInterface, ProtocolBlobMetadata } from '../common/blob.ts';
|
|
3
|
-
import type { kBlobKey } from '../common/constants.ts';
|
|
4
2
|
import type { BaseServerDecoder, BaseServerEncoder } from './format.ts';
|
|
5
3
|
import type { ProtocolVersionInterface } from './protocol.ts';
|
|
6
|
-
import type { ProtocolClientStream } from './stream.ts';
|
|
7
|
-
export type ClientStreamConsumer = (() => ProtocolClientStream) & {
|
|
8
|
-
readonly [kBlobKey]: any;
|
|
9
|
-
readonly metadata: ProtocolBlobMetadata;
|
|
10
|
-
};
|
|
11
4
|
export type MessageContext = {
|
|
12
5
|
protocol: ProtocolVersionInterface;
|
|
13
6
|
connectionId: string;
|
|
@@ -18,7 +11,7 @@ export type MessageContext = {
|
|
|
18
11
|
streamId: number;
|
|
19
12
|
metadata: ProtocolBlobMetadata;
|
|
20
13
|
callId: number;
|
|
21
|
-
}) =>
|
|
14
|
+
}) => ProtocolBlobInterface;
|
|
22
15
|
transport: {
|
|
23
16
|
send?: (connectionId: string, buffer: ArrayBufferView) => boolean | null;
|
|
24
17
|
};
|
|
@@ -27,8 +20,3 @@ export type ResolveFormatParams = {
|
|
|
27
20
|
contentType?: string | null;
|
|
28
21
|
accept?: string | null;
|
|
29
22
|
};
|
|
30
|
-
export type InputType<T> = T extends ProtocolBlobInterface ? ClientStreamConsumer : T extends {
|
|
31
|
-
[PlainType]?: true;
|
|
32
|
-
} ? {
|
|
33
|
-
[K in keyof Omit<T, PlainType>]: InputType<T[K]>;
|
|
34
|
-
} : T;
|
package/package.json
CHANGED
|
@@ -21,18 +21,18 @@
|
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"hookable": "6.1.0",
|
|
24
|
-
"@nmtjs/common": "0.16.0-beta.
|
|
25
|
-
"@nmtjs/contract": "0.16.0-beta.
|
|
26
|
-
"@nmtjs/type": "0.16.0-beta.
|
|
24
|
+
"@nmtjs/common": "0.16.0-beta.5",
|
|
25
|
+
"@nmtjs/contract": "0.16.0-beta.5",
|
|
26
|
+
"@nmtjs/type": "0.16.0-beta.5"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
|
-
"@nmtjs/core": "0.16.0-beta.
|
|
29
|
+
"@nmtjs/core": "0.16.0-beta.5"
|
|
30
30
|
},
|
|
31
31
|
"peerDependencies": {
|
|
32
|
-
"@nmtjs/
|
|
33
|
-
"@nmtjs/
|
|
34
|
-
"@nmtjs/
|
|
35
|
-
"@nmtjs/
|
|
32
|
+
"@nmtjs/common": "0.16.0-beta.5",
|
|
33
|
+
"@nmtjs/contract": "0.16.0-beta.5",
|
|
34
|
+
"@nmtjs/core": "0.16.0-beta.5",
|
|
35
|
+
"@nmtjs/type": "0.16.0-beta.5"
|
|
36
36
|
},
|
|
37
37
|
"files": [
|
|
38
38
|
"dist",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"LICENSE.md",
|
|
41
41
|
"README.md"
|
|
42
42
|
],
|
|
43
|
-
"version": "0.16.0-beta.
|
|
43
|
+
"version": "0.16.0-beta.5",
|
|
44
44
|
"scripts": {
|
|
45
45
|
"clean-build": "rm -rf ./dist"
|
|
46
46
|
}
|
package/src/client/format.ts
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import type { ProtocolBlob } from '../common/blob.ts'
|
|
1
|
+
import type { ProtocolBlob, ProtocolBlobInterface } from '../common/blob.ts'
|
|
2
2
|
import type { DecodeRPCContext } from '../common/types.ts'
|
|
3
|
-
import type {
|
|
4
|
-
ProtocolClientBlobStream,
|
|
5
|
-
ProtocolServerBlobConsumer,
|
|
6
|
-
} from './stream.ts'
|
|
3
|
+
import type { ProtocolClientBlobStream } from './stream.ts'
|
|
7
4
|
|
|
8
5
|
export interface EncodeRPCContext<T = any> {
|
|
9
6
|
addStream: (blob: ProtocolBlob) => T
|
|
@@ -15,7 +12,7 @@ export interface BaseClientDecoder {
|
|
|
15
12
|
decode(buffer: ArrayBufferView): unknown
|
|
16
13
|
decodeRPC(
|
|
17
14
|
buffer: ArrayBufferView,
|
|
18
|
-
context: DecodeRPCContext<
|
|
15
|
+
context: DecodeRPCContext<ProtocolBlobInterface>,
|
|
19
16
|
): unknown
|
|
20
17
|
}
|
|
21
18
|
|
|
@@ -40,6 +37,6 @@ export abstract class BaseClientFormat
|
|
|
40
37
|
abstract decode(buffer: ArrayBufferView): unknown
|
|
41
38
|
abstract decodeRPC(
|
|
42
39
|
buffer: ArrayBufferView,
|
|
43
|
-
context: DecodeRPCContext<
|
|
40
|
+
context: DecodeRPCContext<ProtocolBlobInterface>,
|
|
44
41
|
): unknown
|
|
45
42
|
}
|
package/src/client/protocol.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type {
|
|
2
|
+
ProtocolBlob,
|
|
3
|
+
ProtocolBlobInterface,
|
|
4
|
+
ProtocolBlobMetadata,
|
|
5
|
+
} from '../common/blob.ts'
|
|
2
6
|
import type {
|
|
3
7
|
ClientMessageType,
|
|
4
8
|
ProtocolVersion,
|
|
@@ -6,10 +10,7 @@ import type {
|
|
|
6
10
|
} from '../common/enums.ts'
|
|
7
11
|
import type { BaseProtocolError, EncodeRPCStreams } from '../common/types.ts'
|
|
8
12
|
import type { BaseClientDecoder, BaseClientEncoder } from './format.ts'
|
|
9
|
-
import type {
|
|
10
|
-
ProtocolClientBlobStream,
|
|
11
|
-
ProtocolServerBlobConsumer,
|
|
12
|
-
} from './stream.ts'
|
|
13
|
+
import type { ProtocolClientBlobStream } from './stream.ts'
|
|
13
14
|
import { concat } from '../common/binary.ts'
|
|
14
15
|
|
|
15
16
|
export type MessageContext = {
|
|
@@ -19,7 +20,7 @@ export type MessageContext = {
|
|
|
19
20
|
addServerStream: (
|
|
20
21
|
streamId: number,
|
|
21
22
|
metadata: ProtocolBlobMetadata,
|
|
22
|
-
) =>
|
|
23
|
+
) => ProtocolBlobInterface
|
|
23
24
|
transport: { send: (buffer: ArrayBufferView) => void }
|
|
24
25
|
streamId: () => number
|
|
25
26
|
}
|
package/src/client/stream.ts
CHANGED
package/src/common/blob.ts
CHANGED
|
@@ -8,9 +8,47 @@ export type ProtocolBlobMetadata = {
|
|
|
8
8
|
|
|
9
9
|
export interface ProtocolBlobInterface {
|
|
10
10
|
readonly metadata: ProtocolBlobMetadata
|
|
11
|
+
readonly streamId?: number
|
|
11
12
|
readonly [kBlobKey]: any
|
|
12
13
|
}
|
|
13
14
|
|
|
15
|
+
export const createProtocolBlobReference = (
|
|
16
|
+
streamId: number,
|
|
17
|
+
metadata: ProtocolBlobMetadata,
|
|
18
|
+
): ProtocolBlobInterface => {
|
|
19
|
+
return Object.defineProperties(
|
|
20
|
+
{},
|
|
21
|
+
{
|
|
22
|
+
metadata: {
|
|
23
|
+
configurable: false,
|
|
24
|
+
enumerable: true,
|
|
25
|
+
writable: false,
|
|
26
|
+
value: metadata,
|
|
27
|
+
},
|
|
28
|
+
streamId: {
|
|
29
|
+
configurable: false,
|
|
30
|
+
enumerable: false,
|
|
31
|
+
writable: false,
|
|
32
|
+
value: streamId,
|
|
33
|
+
},
|
|
34
|
+
[kBlobKey]: {
|
|
35
|
+
configurable: false,
|
|
36
|
+
enumerable: false,
|
|
37
|
+
writable: false,
|
|
38
|
+
value: true,
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
) as ProtocolBlobInterface
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export const getProtocolBlobStreamId = (blob: ProtocolBlobInterface) => {
|
|
45
|
+
if (typeof blob.streamId !== 'number') {
|
|
46
|
+
throw new Error('Blob does not reference a protocol stream')
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return blob.streamId
|
|
50
|
+
}
|
|
51
|
+
|
|
14
52
|
export class ProtocolBlob implements ProtocolBlobInterface {
|
|
15
53
|
[kBlobKey]: true = true
|
|
16
54
|
|
package/src/common/types.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import type { ProtocolBlobMetadata } from './blob.ts'
|
|
2
2
|
|
|
3
|
-
type Stream = any
|
|
4
|
-
|
|
5
3
|
export interface BaseProtocolError {
|
|
6
4
|
code: string
|
|
7
5
|
message: string
|
|
@@ -13,6 +11,6 @@ export type ProtocolRPCResponse = unknown
|
|
|
13
11
|
|
|
14
12
|
export type EncodeRPCStreams = Record<number, ProtocolBlobMetadata>
|
|
15
13
|
|
|
16
|
-
export interface DecodeRPCContext<T =
|
|
14
|
+
export interface DecodeRPCContext<T = unknown> {
|
|
17
15
|
addStream: (id: number, metadata: ProtocolBlobMetadata) => T
|
|
18
16
|
}
|
package/src/server/format.ts
CHANGED
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
import type { Pattern } from '@nmtjs/common'
|
|
2
2
|
import { match } from '@nmtjs/common'
|
|
3
3
|
|
|
4
|
-
import type {
|
|
4
|
+
import type {
|
|
5
|
+
ProtocolBlobInterface,
|
|
6
|
+
ProtocolBlobMetadata,
|
|
7
|
+
} from '../common/blob.ts'
|
|
5
8
|
import type {
|
|
6
9
|
DecodeRPCContext,
|
|
7
10
|
EncodeRPCStreams,
|
|
8
11
|
ProtocolRPCPayload,
|
|
9
12
|
} from '../common/types.ts'
|
|
10
|
-
import type { ProtocolClientStream } from './stream.ts'
|
|
11
13
|
|
|
12
14
|
export interface BaseServerDecoder {
|
|
13
15
|
accept: Pattern[]
|
|
14
16
|
decode(buffer: ArrayBufferView): unknown
|
|
15
17
|
decodeRPC(
|
|
16
18
|
buffer: ArrayBufferView,
|
|
17
|
-
context: DecodeRPCContext<
|
|
19
|
+
context: DecodeRPCContext<ProtocolBlobInterface>,
|
|
18
20
|
): ProtocolRPCPayload
|
|
19
21
|
}
|
|
20
22
|
|
|
@@ -37,7 +39,7 @@ export abstract class BaseServerFormat
|
|
|
37
39
|
abstract decode(buffer: ArrayBufferView): any
|
|
38
40
|
abstract decodeRPC(
|
|
39
41
|
buffer: ArrayBufferView,
|
|
40
|
-
context: DecodeRPCContext<
|
|
42
|
+
context: DecodeRPCContext<ProtocolBlobInterface>,
|
|
41
43
|
): ProtocolRPCPayload
|
|
42
44
|
}
|
|
43
45
|
|
package/src/server/types.ts
CHANGED
|
@@ -1,18 +1,9 @@
|
|
|
1
|
-
import type { PlainType } from '@nmtjs/type'
|
|
2
|
-
|
|
3
1
|
import type {
|
|
4
2
|
ProtocolBlobInterface,
|
|
5
3
|
ProtocolBlobMetadata,
|
|
6
4
|
} from '../common/blob.ts'
|
|
7
|
-
import type { kBlobKey } from '../common/constants.ts'
|
|
8
5
|
import type { BaseServerDecoder, BaseServerEncoder } from './format.ts'
|
|
9
6
|
import type { ProtocolVersionInterface } from './protocol.ts'
|
|
10
|
-
import type { ProtocolClientStream } from './stream.ts'
|
|
11
|
-
|
|
12
|
-
export type ClientStreamConsumer = (() => ProtocolClientStream) & {
|
|
13
|
-
readonly [kBlobKey]: any
|
|
14
|
-
readonly metadata: ProtocolBlobMetadata
|
|
15
|
-
}
|
|
16
7
|
|
|
17
8
|
export type MessageContext = {
|
|
18
9
|
protocol: ProtocolVersionInterface
|
|
@@ -24,7 +15,7 @@ export type MessageContext = {
|
|
|
24
15
|
streamId: number
|
|
25
16
|
metadata: ProtocolBlobMetadata
|
|
26
17
|
callId: number
|
|
27
|
-
}) =>
|
|
18
|
+
}) => ProtocolBlobInterface
|
|
28
19
|
transport: {
|
|
29
20
|
send?: (connectionId: string, buffer: ArrayBufferView) => boolean | null
|
|
30
21
|
}
|
|
@@ -34,9 +25,3 @@ export type ResolveFormatParams = {
|
|
|
34
25
|
contentType?: string | null
|
|
35
26
|
accept?: string | null
|
|
36
27
|
}
|
|
37
|
-
|
|
38
|
-
export type InputType<T> = T extends ProtocolBlobInterface
|
|
39
|
-
? ClientStreamConsumer
|
|
40
|
-
: T extends { [PlainType]?: true }
|
|
41
|
-
? { [K in keyof Omit<T, PlainType>]: InputType<T[K]> }
|
|
42
|
-
: T
|