starpc 0.4.3 → 0.4.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.
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './rpcstream.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './rpcstream.js';
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
|
-
import {
|
|
2
|
+
import { RpcStreamPacket } from './rpcstream.pb.js';
|
|
3
3
|
import { Server } from '../srpc/server.js';
|
|
4
4
|
import { OpenStreamFunc, Stream } from '../srpc/stream.js';
|
|
5
5
|
import { Pushable } from 'it-pushable';
|
|
6
6
|
import { Source, Sink } from 'it-stream-types';
|
|
7
|
-
export declare type RpcStreamCaller = (request: Observable<
|
|
7
|
+
export declare type RpcStreamCaller = (request: Observable<RpcStreamPacket>) => Observable<RpcStreamPacket>;
|
|
8
8
|
export declare function buildRpcStreamOpenStream(componentId: string, caller: RpcStreamCaller): OpenStreamFunc;
|
|
9
9
|
export declare type RpcStreamGetter = (componentId: string) => Promise<Server>;
|
|
10
|
-
export declare function handleRpcStream(stream: Observable<
|
|
10
|
+
export declare function handleRpcStream(stream: Observable<RpcStreamPacket>, getter: RpcStreamGetter): AsyncIterable<RpcStreamPacket>;
|
|
11
11
|
export declare class RpcStream implements Stream {
|
|
12
12
|
readonly source: Source<Uint8Array>;
|
|
13
13
|
readonly sink: Sink<Uint8Array>;
|
|
14
14
|
private readonly _packetSink;
|
|
15
15
|
private readonly _source;
|
|
16
|
-
constructor(packetSink: Pushable<
|
|
16
|
+
constructor(packetSink: Pushable<RpcStreamPacket>, packetSource: Observable<RpcStreamPacket>);
|
|
17
17
|
private _createSink;
|
|
18
|
-
private
|
|
18
|
+
private _subscribeRpcStreamPacketSource;
|
|
19
19
|
}
|
|
@@ -35,12 +35,12 @@ export async function* handleRpcStream(stream, getter) {
|
|
|
35
35
|
});
|
|
36
36
|
});
|
|
37
37
|
// read the init packet
|
|
38
|
-
const
|
|
39
|
-
if (
|
|
38
|
+
const initRpcStreamPacket = await initPromise;
|
|
39
|
+
if (initRpcStreamPacket?.body?.$case !== 'init') {
|
|
40
40
|
throw new Error('expected init packet');
|
|
41
41
|
}
|
|
42
42
|
// lookup the server for the component id.
|
|
43
|
-
const server = await getter(
|
|
43
|
+
const server = await getter(initRpcStreamPacket.body.init.componentId);
|
|
44
44
|
// build the outgoing packet sink & the packet source
|
|
45
45
|
const packetSink = pushable({ objectMode: true });
|
|
46
46
|
// handle the stream
|
|
@@ -59,7 +59,7 @@ export class RpcStream {
|
|
|
59
59
|
const source = pushable({ objectMode: true });
|
|
60
60
|
this.source = source;
|
|
61
61
|
this._source = source;
|
|
62
|
-
this.
|
|
62
|
+
this._subscribeRpcStreamPacketSource(packetSource);
|
|
63
63
|
}
|
|
64
64
|
// _createSink initializes the sink field.
|
|
65
65
|
_createSink() {
|
|
@@ -77,8 +77,8 @@ export class RpcStream {
|
|
|
77
77
|
}
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
|
-
//
|
|
81
|
-
|
|
80
|
+
// _subscribeRpcStreamPacketSource starts the subscription to the response data.
|
|
81
|
+
_subscribeRpcStreamPacketSource(packetSource) {
|
|
82
82
|
packetSource.subscribe({
|
|
83
83
|
next: (value) => {
|
|
84
84
|
if (value?.body?.$case === 'data') {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import Long from 'long';
|
|
2
2
|
import * as _m0 from 'protobufjs/minimal';
|
|
3
3
|
export declare const protobufPackage = "rpcstream";
|
|
4
|
-
/**
|
|
5
|
-
export interface
|
|
4
|
+
/** RpcStreamPacket is a packet encapsulating data for a RPC stream. */
|
|
5
|
+
export interface RpcStreamPacket {
|
|
6
6
|
body?: {
|
|
7
7
|
$case: 'init';
|
|
8
8
|
init: RpcStreamInit;
|
|
@@ -16,11 +16,11 @@ export interface RpcStreamInit {
|
|
|
16
16
|
/** ComponentId is the identifier of the component making the request. */
|
|
17
17
|
componentId: string;
|
|
18
18
|
}
|
|
19
|
-
export declare const
|
|
20
|
-
encode(message:
|
|
21
|
-
decode(input: _m0.Reader | Uint8Array, length?: number):
|
|
22
|
-
fromJSON(object: any):
|
|
23
|
-
toJSON(message:
|
|
19
|
+
export declare const RpcStreamPacket: {
|
|
20
|
+
encode(message: RpcStreamPacket, writer?: _m0.Writer): _m0.Writer;
|
|
21
|
+
decode(input: _m0.Reader | Uint8Array, length?: number): RpcStreamPacket;
|
|
22
|
+
fromJSON(object: any): RpcStreamPacket;
|
|
23
|
+
toJSON(message: RpcStreamPacket): unknown;
|
|
24
24
|
fromPartial<I extends {
|
|
25
25
|
body?: ({
|
|
26
26
|
init?: {
|
|
@@ -55,7 +55,7 @@ export declare const Packet: {
|
|
|
55
55
|
data?: Uint8Array | undefined;
|
|
56
56
|
$case: "data";
|
|
57
57
|
} & Record<Exclude<keyof I["body"], "$case" | "data">, never>) | undefined;
|
|
58
|
-
} & Record<Exclude<keyof I, "body">, never>>(object: I):
|
|
58
|
+
} & Record<Exclude<keyof I, "body">, never>>(object: I): RpcStreamPacket;
|
|
59
59
|
};
|
|
60
60
|
export declare const RpcStreamInit: {
|
|
61
61
|
encode(message: RpcStreamInit, writer?: _m0.Writer): _m0.Writer;
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
import Long from 'long';
|
|
3
3
|
import * as _m0 from 'protobufjs/minimal';
|
|
4
4
|
export const protobufPackage = 'rpcstream';
|
|
5
|
-
function
|
|
5
|
+
function createBaseRpcStreamPacket() {
|
|
6
6
|
return { body: undefined };
|
|
7
7
|
}
|
|
8
|
-
export const
|
|
8
|
+
export const RpcStreamPacket = {
|
|
9
9
|
encode(message, writer = _m0.Writer.create()) {
|
|
10
10
|
if (message.body?.$case === 'init') {
|
|
11
11
|
RpcStreamInit.encode(message.body.init, writer.uint32(10).fork()).ldelim();
|
|
@@ -18,7 +18,7 @@ export const Packet = {
|
|
|
18
18
|
decode(input, length) {
|
|
19
19
|
const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
|
|
20
20
|
let end = length === undefined ? reader.len : reader.pos + length;
|
|
21
|
-
const message =
|
|
21
|
+
const message = createBaseRpcStreamPacket();
|
|
22
22
|
while (reader.pos < end) {
|
|
23
23
|
const tag = reader.uint32();
|
|
24
24
|
switch (tag >>> 3) {
|
|
@@ -61,7 +61,7 @@ export const Packet = {
|
|
|
61
61
|
return obj;
|
|
62
62
|
},
|
|
63
63
|
fromPartial(object) {
|
|
64
|
-
const message =
|
|
64
|
+
const message = createBaseRpcStreamPacket();
|
|
65
65
|
if (object.body?.$case === 'init' &&
|
|
66
66
|
object.body?.init !== undefined &&
|
|
67
67
|
object.body?.init !== null) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "starpc",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.5",
|
|
4
4
|
"description": "Streaming protobuf RPC service protocol over any two-way channel.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": {
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
"url": "http://github.com/paralin"
|
|
16
16
|
}
|
|
17
17
|
],
|
|
18
|
-
"main": "./dist/
|
|
19
|
-
"types": "./dist/
|
|
18
|
+
"main": "./dist/index.js",
|
|
19
|
+
"types": "./dist/index.d.ts",
|
|
20
20
|
"files": [
|
|
21
21
|
"!**/*.tsbuildinfo",
|
|
22
22
|
"Makefile",
|