From 197353e058658230a5a6348f63e725e6043fc64e Mon Sep 17 00:00:00 2001 From: droak Date: Tue, 24 Sep 2024 12:51:31 +0900 Subject: [PATCH] generated rpc pb --- buf.gen.yaml | 9 +- buf.yaml | 17 +- packages/network/src/proto/messages_pb.ts | 25 +- packages/node/package.json | 1 + packages/node/src/proto/rpc.proto | 22 +- packages/node/src/proto/rpc_pb.ts | 448 ++++++++++++++++++++++ packages/object/src/proto/object.proto | 3 + packages/object/src/proto/object_pb.ts | 19 +- 8 files changed, 504 insertions(+), 40 deletions(-) create mode 100644 packages/node/src/proto/rpc_pb.ts diff --git a/buf.gen.yaml b/buf.gen.yaml index ef1e78bf..d315954e 100644 --- a/buf.gen.yaml +++ b/buf.gen.yaml @@ -2,9 +2,14 @@ version: v2 managed: enabled: true plugins: - - local: ./node_modules/ts-proto/protoc-gen-ts_proto - strategy: directory + - remote: buf.build/community/stephenh-ts-proto out: ./packages opt: - esModuleInterop=true - fileSuffix=_pb +inputs: + - directory: ./packages + exclude_paths: + - packages/node/node_modules + - packages/network/node_modules + - packages/object/node_modules diff --git a/buf.yaml b/buf.yaml index bb492421..4681760f 100644 --- a/buf.yaml +++ b/buf.yaml @@ -1,14 +1,11 @@ version: v2 modules: - - path: packages - - includes: - - packages/network - - packages/object - - excludes: - - node_modules + - path: packages/node + excludes: + - packages/node/node_modules + - path: packages/network + excludes: - packages/network/node_modules + - path: packages/object + excludes: - packages/object/node_modules - - examples/canvas/node_modules - - examples/chat/node_modules -deps: - - buf.build/googleapis/googleapis diff --git a/packages/network/src/proto/messages_pb.ts b/packages/network/src/proto/messages_pb.ts index 086d3358..faa1c3b6 100644 --- a/packages/network/src/proto/messages_pb.ts +++ b/packages/network/src/proto/messages_pb.ts @@ -1,6 +1,6 @@ // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v2.0.3 +// protoc-gen-ts_proto v2.2.0 // protoc unknown // source: network/src/proto/messages.proto @@ -103,7 +103,7 @@ function createBaseVertex(): Vertex { return { hash: "", nodeId: "", operation: undefined, dependencies: [] }; } -export const Vertex = { +export const Vertex: MessageFns = { encode(message: Vertex, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.hash !== "") { writer.uint32(10).string(message.hash); @@ -211,7 +211,7 @@ function createBaseVertex_Operation(): Vertex_Operation { return { type: "", value: undefined }; } -export const Vertex_Operation = { +export const Vertex_Operation: MessageFns = { encode(message: Vertex_Operation, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.type !== "") { writer.uint32(10).string(message.type); @@ -285,7 +285,7 @@ function createBaseMessage(): Message { return { sender: "", type: 0, data: new Uint8Array(0) }; } -export const Message = { +export const Message: MessageFns = { encode(message: Message, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.sender !== "") { writer.uint32(10).string(message.sender); @@ -374,7 +374,7 @@ function createBaseUpdate(): Update { return { objectId: "", vertices: [] }; } -export const Update = { +export const Update: MessageFns = { encode(message: Update, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.objectId !== "") { writer.uint32(10).string(message.objectId); @@ -448,7 +448,7 @@ function createBaseSync(): Sync { return { objectId: "", vertexHashes: [] }; } -export const Sync = { +export const Sync: MessageFns = { encode(message: Sync, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.objectId !== "") { writer.uint32(10).string(message.objectId); @@ -524,7 +524,7 @@ function createBaseSyncAccept(): SyncAccept { return { objectId: "", requested: [], requesting: [] }; } -export const SyncAccept = { +export const SyncAccept: MessageFns = { encode(message: SyncAccept, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.objectId !== "") { writer.uint32(10).string(message.objectId); @@ -617,7 +617,7 @@ function createBaseSyncReject(): SyncReject { return {}; } -export const SyncReject = { +export const SyncReject: MessageFns = { encode(_: SyncReject, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { return writer; }, @@ -696,3 +696,12 @@ export type Exact = P extends Builtin ? P function isSet(value: any): boolean { return value !== null && value !== undefined; } + +export interface MessageFns { + encode(message: T, writer?: BinaryWriter): BinaryWriter; + decode(input: BinaryReader | Uint8Array, length?: number): T; + fromJSON(object: any): T; + toJSON(message: T): unknown; + create, I>>(base?: I): T; + fromPartial, I>>(object: I): T; +} diff --git a/packages/node/package.json b/packages/node/package.json index 062dc5c7..d7debcf4 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -29,6 +29,7 @@ "test": "vitest" }, "devDependencies": { + "@bufbuild/protobuf": "^2.0.0", "@types/node": "^22.5.4", "tsx": "4.19.0", "typescript": "^5.5.4", diff --git a/packages/node/src/proto/rpc.proto b/packages/node/src/proto/rpc.proto index a3ba5406..ba38f154 100644 --- a/packages/node/src/proto/rpc.proto +++ b/packages/node/src/proto/rpc.proto @@ -1,18 +1,10 @@ syntax = "proto3"; package topology.rpc; -import "google/api/http.proto"; -import "google/api/annotations.proto"; service Rpc { - rpc subscribeCro (SubscribeCroRequest ) returns (SubscribeCroResponse ) { - option (google.api.http).get = "/topopology/cro/subscribe/{cro_id}"; - }; - rpc unsubscribeCro (UnsubscribeCroRequest ) returns (UnsubscribeCroRequest ) { - option (google.api.http).get = "/topopology/cro/subscribe/{cro_id}"; - }; - rpc getCroHashGraph (GetCroHashGraphRequest ) returns (GetCroHashGraphResponse ) { - option (google.api.http).get = "/topopology/cro/subscribe/{cro_id}"; - }; + rpc subscribeCro (SubscribeCroRequest ) returns (SubscribeCroResponse ); + rpc unsubscribeCro (UnsubscribeCroRequest ) returns (UnsubscribeCroRequest ); + rpc getCroHashGraph (GetCroHashGraphRequest ) returns (GetCroHashGraphResponse ); } message SubscribeCroRequest { @@ -21,7 +13,7 @@ message SubscribeCroRequest { message SubscribeCroResponse { // can return error codes if different than 0 - int return_code = 1; + int32 return_code = 1; } message UnsubscribeCroRequest { @@ -30,14 +22,14 @@ message UnsubscribeCroRequest { message UnsubscribeCroResponse { // can return error codes if different than 0 - int return_code = 1; + int32 return_code = 1; } -message getCroHashGraphRequest { +message GetCroHashGraphRequest { string cro_id = 1; } -message getCroHashGraphResponse { +message GetCroHashGraphResponse { // linearized vertices hashes repeated string vertices_hashes = 1; } diff --git a/packages/node/src/proto/rpc_pb.ts b/packages/node/src/proto/rpc_pb.ts new file mode 100644 index 00000000..c967b8e7 --- /dev/null +++ b/packages/node/src/proto/rpc_pb.ts @@ -0,0 +1,448 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v2.2.0 +// protoc unknown +// source: node/src/proto/rpc.proto + +/* eslint-disable */ +import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; + +export const protobufPackage = "topology.rpc"; + +export interface SubscribeCroRequest { + croId: string; +} + +export interface SubscribeCroResponse { + /** can return error codes if different than 0 */ + returnCode: number; +} + +export interface UnsubscribeCroRequest { + croId: string; +} + +export interface UnsubscribeCroResponse { + /** can return error codes if different than 0 */ + returnCode: number; +} + +export interface GetCroHashGraphRequest { + croId: string; +} + +export interface GetCroHashGraphResponse { + /** linearized vertices hashes */ + verticesHashes: string[]; +} + +function createBaseSubscribeCroRequest(): SubscribeCroRequest { + return { croId: "" }; +} + +export const SubscribeCroRequest: MessageFns = { + encode(message: SubscribeCroRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.croId !== "") { + writer.uint32(10).string(message.croId); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): SubscribeCroRequest { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseSubscribeCroRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.croId = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): SubscribeCroRequest { + return { croId: isSet(object.croId) ? globalThis.String(object.croId) : "" }; + }, + + toJSON(message: SubscribeCroRequest): unknown { + const obj: any = {}; + if (message.croId !== "") { + obj.croId = message.croId; + } + return obj; + }, + + create, I>>(base?: I): SubscribeCroRequest { + return SubscribeCroRequest.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): SubscribeCroRequest { + const message = createBaseSubscribeCroRequest(); + message.croId = object.croId ?? ""; + return message; + }, +}; + +function createBaseSubscribeCroResponse(): SubscribeCroResponse { + return { returnCode: 0 }; +} + +export const SubscribeCroResponse: MessageFns = { + encode(message: SubscribeCroResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.returnCode !== 0) { + writer.uint32(8).int32(message.returnCode); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): SubscribeCroResponse { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseSubscribeCroResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.returnCode = reader.int32(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): SubscribeCroResponse { + return { returnCode: isSet(object.returnCode) ? globalThis.Number(object.returnCode) : 0 }; + }, + + toJSON(message: SubscribeCroResponse): unknown { + const obj: any = {}; + if (message.returnCode !== 0) { + obj.returnCode = Math.round(message.returnCode); + } + return obj; + }, + + create, I>>(base?: I): SubscribeCroResponse { + return SubscribeCroResponse.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): SubscribeCroResponse { + const message = createBaseSubscribeCroResponse(); + message.returnCode = object.returnCode ?? 0; + return message; + }, +}; + +function createBaseUnsubscribeCroRequest(): UnsubscribeCroRequest { + return { croId: "" }; +} + +export const UnsubscribeCroRequest: MessageFns = { + encode(message: UnsubscribeCroRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.croId !== "") { + writer.uint32(10).string(message.croId); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): UnsubscribeCroRequest { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseUnsubscribeCroRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.croId = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): UnsubscribeCroRequest { + return { croId: isSet(object.croId) ? globalThis.String(object.croId) : "" }; + }, + + toJSON(message: UnsubscribeCroRequest): unknown { + const obj: any = {}; + if (message.croId !== "") { + obj.croId = message.croId; + } + return obj; + }, + + create, I>>(base?: I): UnsubscribeCroRequest { + return UnsubscribeCroRequest.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): UnsubscribeCroRequest { + const message = createBaseUnsubscribeCroRequest(); + message.croId = object.croId ?? ""; + return message; + }, +}; + +function createBaseUnsubscribeCroResponse(): UnsubscribeCroResponse { + return { returnCode: 0 }; +} + +export const UnsubscribeCroResponse: MessageFns = { + encode(message: UnsubscribeCroResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.returnCode !== 0) { + writer.uint32(8).int32(message.returnCode); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): UnsubscribeCroResponse { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseUnsubscribeCroResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.returnCode = reader.int32(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): UnsubscribeCroResponse { + return { returnCode: isSet(object.returnCode) ? globalThis.Number(object.returnCode) : 0 }; + }, + + toJSON(message: UnsubscribeCroResponse): unknown { + const obj: any = {}; + if (message.returnCode !== 0) { + obj.returnCode = Math.round(message.returnCode); + } + return obj; + }, + + create, I>>(base?: I): UnsubscribeCroResponse { + return UnsubscribeCroResponse.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): UnsubscribeCroResponse { + const message = createBaseUnsubscribeCroResponse(); + message.returnCode = object.returnCode ?? 0; + return message; + }, +}; + +function createBaseGetCroHashGraphRequest(): GetCroHashGraphRequest { + return { croId: "" }; +} + +export const GetCroHashGraphRequest: MessageFns = { + encode(message: GetCroHashGraphRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.croId !== "") { + writer.uint32(10).string(message.croId); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): GetCroHashGraphRequest { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGetCroHashGraphRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.croId = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): GetCroHashGraphRequest { + return { croId: isSet(object.croId) ? globalThis.String(object.croId) : "" }; + }, + + toJSON(message: GetCroHashGraphRequest): unknown { + const obj: any = {}; + if (message.croId !== "") { + obj.croId = message.croId; + } + return obj; + }, + + create, I>>(base?: I): GetCroHashGraphRequest { + return GetCroHashGraphRequest.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): GetCroHashGraphRequest { + const message = createBaseGetCroHashGraphRequest(); + message.croId = object.croId ?? ""; + return message; + }, +}; + +function createBaseGetCroHashGraphResponse(): GetCroHashGraphResponse { + return { verticesHashes: [] }; +} + +export const GetCroHashGraphResponse: MessageFns = { + encode(message: GetCroHashGraphResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + for (const v of message.verticesHashes) { + writer.uint32(10).string(v!); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): GetCroHashGraphResponse { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGetCroHashGraphResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.verticesHashes.push(reader.string()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): GetCroHashGraphResponse { + return { + verticesHashes: globalThis.Array.isArray(object?.verticesHashes) + ? object.verticesHashes.map((e: any) => globalThis.String(e)) + : [], + }; + }, + + toJSON(message: GetCroHashGraphResponse): unknown { + const obj: any = {}; + if (message.verticesHashes?.length) { + obj.verticesHashes = message.verticesHashes; + } + return obj; + }, + + create, I>>(base?: I): GetCroHashGraphResponse { + return GetCroHashGraphResponse.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): GetCroHashGraphResponse { + const message = createBaseGetCroHashGraphResponse(); + message.verticesHashes = object.verticesHashes?.map((e) => e) || []; + return message; + }, +}; + +export interface Rpc { + subscribeCro(request: SubscribeCroRequest): Promise; + unsubscribeCro(request: UnsubscribeCroRequest): Promise; + getCroHashGraph(request: GetCroHashGraphRequest): Promise; +} + +export const RpcServiceName = "topology.rpc.Rpc"; +export class RpcClientImpl implements Rpc { + private readonly rpc: Rpc; + private readonly service: string; + constructor(rpc: Rpc, opts?: { service?: string }) { + this.service = opts?.service || RpcServiceName; + this.rpc = rpc; + this.subscribeCro = this.subscribeCro.bind(this); + this.unsubscribeCro = this.unsubscribeCro.bind(this); + this.getCroHashGraph = this.getCroHashGraph.bind(this); + } + subscribeCro(request: SubscribeCroRequest): Promise { + const data = SubscribeCroRequest.encode(request).finish(); + const promise = this.rpc.request(this.service, "subscribeCro", data); + return promise.then((data) => SubscribeCroResponse.decode(new BinaryReader(data))); + } + + unsubscribeCro(request: UnsubscribeCroRequest): Promise { + const data = UnsubscribeCroRequest.encode(request).finish(); + const promise = this.rpc.request(this.service, "unsubscribeCro", data); + return promise.then((data) => UnsubscribeCroRequest.decode(new BinaryReader(data))); + } + + getCroHashGraph(request: GetCroHashGraphRequest): Promise { + const data = GetCroHashGraphRequest.encode(request).finish(); + const promise = this.rpc.request(this.service, "getCroHashGraph", data); + return promise.then((data) => GetCroHashGraphResponse.decode(new BinaryReader(data))); + } +} + +interface Rpc { + request(service: string, method: string, data: Uint8Array): Promise; +} + +type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; + +export type DeepPartial = T extends Builtin ? T + : T extends globalThis.Array ? globalThis.Array> + : T extends ReadonlyArray ? ReadonlyArray> + : T extends {} ? { [K in keyof T]?: DeepPartial } + : Partial; + +type KeysOfUnion = T extends T ? keyof T : never; +export type Exact = P extends Builtin ? P + : P & { [K in keyof P]: Exact } & { [K in Exclude>]: never }; + +function isSet(value: any): boolean { + return value !== null && value !== undefined; +} + +export interface MessageFns { + encode(message: T, writer?: BinaryWriter): BinaryWriter; + decode(input: BinaryReader | Uint8Array, length?: number): T; + fromJSON(object: any): T; + toJSON(message: T): unknown; + create, I>>(base?: I): T; + fromPartial, I>>(object: I): T; +} diff --git a/packages/object/src/proto/object.proto b/packages/object/src/proto/object.proto index 0e37776f..6d9c1a21 100644 --- a/packages/object/src/proto/object.proto +++ b/packages/object/src/proto/object.proto @@ -1,5 +1,8 @@ syntax = "proto3"; package topology.object; + +option go_package = "ts-topology/packages/object"; + import "google/protobuf/struct.proto"; // Supposed to be the RIBLT stuff diff --git a/packages/object/src/proto/object_pb.ts b/packages/object/src/proto/object_pb.ts index abda1053..f253c101 100644 --- a/packages/object/src/proto/object_pb.ts +++ b/packages/object/src/proto/object_pb.ts @@ -1,8 +1,8 @@ // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v2.0.3 +// protoc-gen-ts_proto v2.2.0 // protoc unknown -// source: crdt/node_modules/@topology-foundation/object/src/proto/object.proto +// source: blueprints/node_modules/@topology-foundation/object/src/proto/object.proto /* eslint-disable */ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; @@ -34,7 +34,7 @@ function createBaseVertex(): Vertex { return { hash: "", nodeId: "", operation: undefined, dependencies: [] }; } -export const Vertex = { +export const Vertex: MessageFns = { encode(message: Vertex, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.hash !== "") { writer.uint32(10).string(message.hash); @@ -142,7 +142,7 @@ function createBaseVertex_Operation(): Vertex_Operation { return { type: "", value: undefined }; } -export const Vertex_Operation = { +export const Vertex_Operation: MessageFns = { encode(message: Vertex_Operation, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.type !== "") { writer.uint32(10).string(message.type); @@ -216,7 +216,7 @@ function createBaseTopologyObjectBase(): TopologyObjectBase { return { id: "", abi: undefined, bytecode: undefined, vertices: [] }; } -export const TopologyObjectBase = { +export const TopologyObjectBase: MessageFns = { encode(message: TopologyObjectBase, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.id !== "") { writer.uint32(10).string(message.id); @@ -356,3 +356,12 @@ export type Exact = P extends Builtin ? P function isSet(value: any): boolean { return value !== null && value !== undefined; } + +export interface MessageFns { + encode(message: T, writer?: BinaryWriter): BinaryWriter; + decode(input: BinaryReader | Uint8Array, length?: number): T; + fromJSON(object: any): T; + toJSON(message: T): unknown; + create, I>>(base?: I): T; + fromPartial, I>>(object: I): T; +}