mirror of
https://github.com/ajvpot/meshexplorer.git
synced 2026-08-07 00:52:45 +02:00
Fix ClickHouse int encoding; generate protobuf at build time
- adv_timestamp is a uint32 epoch in ClickHouse; type it uint32 (was string, which failed JSON encoding with "expected string, got <number>"). - ClickHouse serializes UInt64/aggregate columns (count(), message_count, packet_count, advert_count) as JSON strings. Coerce every integer field with a num() helper before building int32 proto messages, fixing intermittent "expected number (int32), got \"97\"" errors on GetChat/GetNode/etc. - Stop committing generated code: gitignore src/gen and regenerate it via a `prebuild` (buf generate) step so `npm run build` always produces it. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -39,3 +39,6 @@ yarn-error.log*
|
||||
# typescript
|
||||
*.tsbuildinfo
|
||||
next-env.d.ts
|
||||
|
||||
# generated protobuf / ConnectRPC code (produced by `npm run generate`, run on build)
|
||||
/src/gen
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
"prebuild": "buf generate --include-imports",
|
||||
"build": "next build",
|
||||
"start": "next start",
|
||||
"lint": "next lint",
|
||||
|
||||
@@ -30,7 +30,8 @@ message OriginPathPubkeyTuple {
|
||||
|
||||
// An advert grouped by packet_hash, with all the paths it was heard over.
|
||||
message Advert {
|
||||
string adv_timestamp = 1;
|
||||
// Unix epoch seconds from the meshcore advert (uint32 in ClickHouse).
|
||||
uint32 adv_timestamp = 1;
|
||||
repeated OriginPathPubkeyTuple origin_path_pubkey_tuples = 2;
|
||||
int32 advert_count = 3;
|
||||
string earliest_timestamp = 4;
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,292 +0,0 @@
|
||||
// @generated by protoc-gen-es v2.12.0 with parameter "target=ts,import_extension=none"
|
||||
// @generated from file meshexplorer/v1/chat.proto (package meshexplorer.v1, syntax proto3)
|
||||
/* eslint-disable */
|
||||
|
||||
import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
|
||||
import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
|
||||
import { file_buf_validate_validate } from "../../buf/validate/validate_pb";
|
||||
import type { Message } from "@bufbuild/protobuf";
|
||||
|
||||
/**
|
||||
* Describes the file meshexplorer/v1/chat.proto.
|
||||
*/
|
||||
export const file_meshexplorer_v1_chat: GenFile = /*@__PURE__*/
|
||||
fileDesc("ChptZXNoZXhwbG9yZXIvdjEvY2hhdC5wcm90bxIPbWVzaGV4cGxvcmVyLnYxImQKDk9yaWdpblBhdGhJbmZvEg4KBm9yaWdpbhgBIAEoCRIVCg1vcmlnaW5fcHVia2V5GAIgASgJEgwKBHBhdGgYAyABKAkSDgoGYnJva2VyGAQgASgJEg0KBXRvcGljGAUgASgJImQKDURlY3J5cHRlZENoYXQSEQoJdGltZXN0YW1wGAEgASgBEhAKCG1zZ190eXBlGAIgASgFEg4KBnNlbmRlchgDIAEoCRIMCgR0ZXh0GAQgASgJEhAKCHJhd190ZXh0GAUgASgJIqkCCgtDaGF0TWVzc2FnZRIYChBpbmdlc3RfdGltZXN0YW1wGAEgASgJEhYKDm1lc2hfdGltZXN0YW1wGAIgASgJEhQKDGNoYW5uZWxfaGFzaBgDIAEoCRILCgNtYWMYBCABKAkSGQoRZW5jcnlwdGVkX21lc3NhZ2UYBSABKAkSFQoNbWVzc2FnZV9jb3VudBgGIAEoBRI5ChBvcmlnaW5fcGF0aF9pbmZvGAcgAygLMh8ubWVzaGV4cGxvcmVyLnYxLk9yaWdpblBhdGhJbmZvEhIKCm1lc3NhZ2VfaWQYCCABKAkSNgoJZGVjcnlwdGVkGAkgASgLMh4ubWVzaGV4cGxvcmVyLnYxLkRlY3J5cHRlZENoYXRIAIgBAUIMCgpfZGVjcnlwdGVkIv4BCg5HZXRDaGF0UmVxdWVzdBIeCgVsaW1pdBgBIAEoBUIKukgHGgUY6AcoAUgAiAEBEhMKBmJlZm9yZRgCIAEoCUgBiAEBEhIKBWFmdGVyGAMgASgJSAKIAQESLgoKY2hhbm5lbF9pZBgEIAEoCUIVukgSchAyDl5bMC05QS1GYS1mXSskSAOIAQESEwoGcmVnaW9uGAUgASgJSASIAQESDwoHZGVjcnlwdBgGIAEoCBIUCgxwcml2YXRlX2tleXMYByADKAlCCAoGX2xpbWl0QgkKB19iZWZvcmVCCAoGX2FmdGVyQg0KC19jaGFubmVsX2lkQgkKB19yZWdpb24iQQoPR2V0Q2hhdFJlc3BvbnNlEi4KCG1lc3NhZ2VzGAEgAygLMhwubWVzaGV4cGxvcmVyLnYxLkNoYXRNZXNzYWdlIqICChFTdHJlYW1DaGF0UmVxdWVzdBIuCgpjaGFubmVsX2lkGAEgASgJQhW6SBJyEDIOXlswLTlBLUZhLWZdKyRIAIgBARITCgZyZWdpb24YAiABKAlIAYgBARIPCgdkZWNyeXB0GAMgASgIEhQKDHByaXZhdGVfa2V5cxgEIAMoCRImCg1wb2xsX2ludGVydmFsGAUgASgFQgq6SAcaBRiQTihkSAKIAQESIQoIbWF4X3Jvd3MYBiABKAVCCrpIBxoFGOgHKApIA4gBARIdChVza2lwX2luaXRpYWxfbWVzc2FnZXMYByABKAhCDQoLX2NoYW5uZWxfaWRCCQoHX3JlZ2lvbkIQCg5fcG9sbF9pbnRlcnZhbEILCglfbWF4X3Jvd3MyrQEKC0NoYXRTZXJ2aWNlEkwKB0dldENoYXQSHy5tZXNoZXhwbG9yZXIudjEuR2V0Q2hhdFJlcXVlc3QaIC5tZXNoZXhwbG9yZXIudjEuR2V0Q2hhdFJlc3BvbnNlElAKClN0cmVhbUNoYXQSIi5tZXNoZXhwbG9yZXIudjEuU3RyZWFtQ2hhdFJlcXVlc3QaHC5tZXNoZXhwbG9yZXIudjEuQ2hhdE1lc3NhZ2UwAWIGcHJvdG8z", [file_buf_validate_validate]);
|
||||
|
||||
/**
|
||||
* One (origin, origin_pubkey, path, broker, topic) reception tuple.
|
||||
*
|
||||
* @generated from message meshexplorer.v1.OriginPathInfo
|
||||
*/
|
||||
export type OriginPathInfo = Message<"meshexplorer.v1.OriginPathInfo"> & {
|
||||
/**
|
||||
* @generated from field: string origin = 1;
|
||||
*/
|
||||
origin: string;
|
||||
|
||||
/**
|
||||
* @generated from field: string origin_pubkey = 2;
|
||||
*/
|
||||
originPubkey: string;
|
||||
|
||||
/**
|
||||
* @generated from field: string path = 3;
|
||||
*/
|
||||
path: string;
|
||||
|
||||
/**
|
||||
* @generated from field: string broker = 4;
|
||||
*/
|
||||
broker: string;
|
||||
|
||||
/**
|
||||
* @generated from field: string topic = 5;
|
||||
*/
|
||||
topic: string;
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.OriginPathInfo.
|
||||
* Use `create(OriginPathInfoSchema)` to create a new message.
|
||||
*/
|
||||
export const OriginPathInfoSchema: GenMessage<OriginPathInfo> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_chat, 0);
|
||||
|
||||
/**
|
||||
* A parsed/decrypted public-channel message (parseMeshcoreGroupMessage).
|
||||
*
|
||||
* @generated from message meshexplorer.v1.DecryptedChat
|
||||
*/
|
||||
export type DecryptedChat = Message<"meshexplorer.v1.DecryptedChat"> & {
|
||||
/**
|
||||
* @generated from field: double timestamp = 1;
|
||||
*/
|
||||
timestamp: number;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 msg_type = 2;
|
||||
*/
|
||||
msgType: number;
|
||||
|
||||
/**
|
||||
* @generated from field: string sender = 3;
|
||||
*/
|
||||
sender: string;
|
||||
|
||||
/**
|
||||
* @generated from field: string text = 4;
|
||||
*/
|
||||
text: string;
|
||||
|
||||
/**
|
||||
* @generated from field: string raw_text = 5;
|
||||
*/
|
||||
rawText: string;
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.DecryptedChat.
|
||||
* Use `create(DecryptedChatSchema)` to create a new message.
|
||||
*/
|
||||
export const DecryptedChatSchema: GenMessage<DecryptedChat> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_chat, 1);
|
||||
|
||||
/**
|
||||
* @generated from message meshexplorer.v1.ChatMessage
|
||||
*/
|
||||
export type ChatMessage = Message<"meshexplorer.v1.ChatMessage"> & {
|
||||
/**
|
||||
* @generated from field: string ingest_timestamp = 1;
|
||||
*/
|
||||
ingestTimestamp: string;
|
||||
|
||||
/**
|
||||
* @generated from field: string mesh_timestamp = 2;
|
||||
*/
|
||||
meshTimestamp: string;
|
||||
|
||||
/**
|
||||
* @generated from field: string channel_hash = 3;
|
||||
*/
|
||||
channelHash: string;
|
||||
|
||||
/**
|
||||
* @generated from field: string mac = 4;
|
||||
*/
|
||||
mac: string;
|
||||
|
||||
/**
|
||||
* Hex-encoded ciphertext.
|
||||
*
|
||||
* @generated from field: string encrypted_message = 5;
|
||||
*/
|
||||
encryptedMessage: string;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 message_count = 6;
|
||||
*/
|
||||
messageCount: number;
|
||||
|
||||
/**
|
||||
* @generated from field: repeated meshexplorer.v1.OriginPathInfo origin_path_info = 7;
|
||||
*/
|
||||
originPathInfo: OriginPathInfo[];
|
||||
|
||||
/**
|
||||
* @generated from field: string message_id = 8;
|
||||
*/
|
||||
messageId: string;
|
||||
|
||||
/**
|
||||
* Present only when decrypt was requested and decryption succeeded.
|
||||
*
|
||||
* @generated from field: optional meshexplorer.v1.DecryptedChat decrypted = 9;
|
||||
*/
|
||||
decrypted?: DecryptedChat | undefined;
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.ChatMessage.
|
||||
* Use `create(ChatMessageSchema)` to create a new message.
|
||||
*/
|
||||
export const ChatMessageSchema: GenMessage<ChatMessage> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_chat, 2);
|
||||
|
||||
/**
|
||||
* @generated from message meshexplorer.v1.GetChatRequest
|
||||
*/
|
||||
export type GetChatRequest = Message<"meshexplorer.v1.GetChatRequest"> & {
|
||||
/**
|
||||
* @generated from field: optional int32 limit = 1;
|
||||
*/
|
||||
limit?: number | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: optional string before = 2;
|
||||
*/
|
||||
before?: string | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: optional string after = 3;
|
||||
*/
|
||||
after?: string | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: optional string channel_id = 4;
|
||||
*/
|
||||
channelId?: string | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: optional string region = 5;
|
||||
*/
|
||||
region?: string | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: bool decrypt = 6;
|
||||
*/
|
||||
decrypt: boolean;
|
||||
|
||||
/**
|
||||
* @generated from field: repeated string private_keys = 7;
|
||||
*/
|
||||
privateKeys: string[];
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.GetChatRequest.
|
||||
* Use `create(GetChatRequestSchema)` to create a new message.
|
||||
*/
|
||||
export const GetChatRequestSchema: GenMessage<GetChatRequest> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_chat, 3);
|
||||
|
||||
/**
|
||||
* @generated from message meshexplorer.v1.GetChatResponse
|
||||
*/
|
||||
export type GetChatResponse = Message<"meshexplorer.v1.GetChatResponse"> & {
|
||||
/**
|
||||
* @generated from field: repeated meshexplorer.v1.ChatMessage messages = 1;
|
||||
*/
|
||||
messages: ChatMessage[];
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.GetChatResponse.
|
||||
* Use `create(GetChatResponseSchema)` to create a new message.
|
||||
*/
|
||||
export const GetChatResponseSchema: GenMessage<GetChatResponse> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_chat, 4);
|
||||
|
||||
/**
|
||||
* @generated from message meshexplorer.v1.StreamChatRequest
|
||||
*/
|
||||
export type StreamChatRequest = Message<"meshexplorer.v1.StreamChatRequest"> & {
|
||||
/**
|
||||
* @generated from field: optional string channel_id = 1;
|
||||
*/
|
||||
channelId?: string | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: optional string region = 2;
|
||||
*/
|
||||
region?: string | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: bool decrypt = 3;
|
||||
*/
|
||||
decrypt: boolean;
|
||||
|
||||
/**
|
||||
* @generated from field: repeated string private_keys = 4;
|
||||
*/
|
||||
privateKeys: string[];
|
||||
|
||||
/**
|
||||
* Poll interval in ms (clamped 100..10000, default 1000).
|
||||
*
|
||||
* @generated from field: optional int32 poll_interval = 5;
|
||||
*/
|
||||
pollInterval?: number | undefined;
|
||||
|
||||
/**
|
||||
* Max rows per poll (clamped 10..1000, default 500).
|
||||
*
|
||||
* @generated from field: optional int32 max_rows = 6;
|
||||
*/
|
||||
maxRows?: number | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: bool skip_initial_messages = 7;
|
||||
*/
|
||||
skipInitialMessages: boolean;
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.StreamChatRequest.
|
||||
* Use `create(StreamChatRequestSchema)` to create a new message.
|
||||
*/
|
||||
export const StreamChatRequestSchema: GenMessage<StreamChatRequest> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_chat, 5);
|
||||
|
||||
/**
|
||||
* @generated from service meshexplorer.v1.ChatService
|
||||
*/
|
||||
export const ChatService: GenService<{
|
||||
/**
|
||||
* @generated from rpc meshexplorer.v1.ChatService.GetChat
|
||||
*/
|
||||
getChat: {
|
||||
methodKind: "unary";
|
||||
input: typeof GetChatRequestSchema;
|
||||
output: typeof GetChatResponseSchema;
|
||||
},
|
||||
/**
|
||||
* @generated from rpc meshexplorer.v1.ChatService.StreamChat
|
||||
*/
|
||||
streamChat: {
|
||||
methodKind: "server_streaming";
|
||||
input: typeof StreamChatRequestSchema;
|
||||
output: typeof ChatMessageSchema;
|
||||
},
|
||||
}> = /*@__PURE__*/
|
||||
serviceDesc(file_meshexplorer_v1_chat, 0);
|
||||
|
||||
@@ -1,90 +0,0 @@
|
||||
// @generated by protoc-gen-es v2.12.0 with parameter "target=ts,import_extension=none"
|
||||
// @generated from file meshexplorer/v1/common.proto (package meshexplorer.v1, syntax proto3)
|
||||
/* eslint-disable */
|
||||
|
||||
import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
|
||||
import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
|
||||
import type { Message } from "@bufbuild/protobuf";
|
||||
|
||||
/**
|
||||
* Describes the file meshexplorer/v1/common.proto.
|
||||
*/
|
||||
export const file_meshexplorer_v1_common: GenFile = /*@__PURE__*/
|
||||
fileDesc("ChxtZXNoZXhwbG9yZXIvdjEvY29tbW9uLnByb3RvEg9tZXNoZXhwbG9yZXIudjEisQIKDE5laWdoYm9yRWRnZRITCgtzb3VyY2Vfbm9kZRgBIAEoCRITCgt0YXJnZXRfbm9kZRgCIAEoCRIXCg9jb25uZWN0aW9uX3R5cGUYAyABKAkSFAoMcGFja2V0X2NvdW50GAQgASgFEhMKC3NvdXJjZV9uYW1lGAUgASgJEhcKD3NvdXJjZV9sYXRpdHVkZRgGIAEoARIYChBzb3VyY2VfbG9uZ2l0dWRlGAcgASgBEhsKE3NvdXJjZV9oYXNfbG9jYXRpb24YCCABKAUSEwoLdGFyZ2V0X25hbWUYCSABKAkSFwoPdGFyZ2V0X2xhdGl0dWRlGAogASgBEhgKEHRhcmdldF9sb25naXR1ZGUYCyABKAESGwoTdGFyZ2V0X2hhc19sb2NhdGlvbhgMIAEoBWIGcHJvdG8z");
|
||||
|
||||
/**
|
||||
* A directed edge in the neighbor graph between two located nodes.
|
||||
* Shared by MapService.GetMap (when includeNeighbors=true) and
|
||||
* NeighborsService.GetAllNeighbors. Mirrors meshcore_all_neighbor_edges.
|
||||
*
|
||||
* @generated from message meshexplorer.v1.NeighborEdge
|
||||
*/
|
||||
export type NeighborEdge = Message<"meshexplorer.v1.NeighborEdge"> & {
|
||||
/**
|
||||
* @generated from field: string source_node = 1;
|
||||
*/
|
||||
sourceNode: string;
|
||||
|
||||
/**
|
||||
* @generated from field: string target_node = 2;
|
||||
*/
|
||||
targetNode: string;
|
||||
|
||||
/**
|
||||
* @generated from field: string connection_type = 3;
|
||||
*/
|
||||
connectionType: string;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 packet_count = 4;
|
||||
*/
|
||||
packetCount: number;
|
||||
|
||||
/**
|
||||
* @generated from field: string source_name = 5;
|
||||
*/
|
||||
sourceName: string;
|
||||
|
||||
/**
|
||||
* @generated from field: double source_latitude = 6;
|
||||
*/
|
||||
sourceLatitude: number;
|
||||
|
||||
/**
|
||||
* @generated from field: double source_longitude = 7;
|
||||
*/
|
||||
sourceLongitude: number;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 source_has_location = 8;
|
||||
*/
|
||||
sourceHasLocation: number;
|
||||
|
||||
/**
|
||||
* @generated from field: string target_name = 9;
|
||||
*/
|
||||
targetName: string;
|
||||
|
||||
/**
|
||||
* @generated from field: double target_latitude = 10;
|
||||
*/
|
||||
targetLatitude: number;
|
||||
|
||||
/**
|
||||
* @generated from field: double target_longitude = 11;
|
||||
*/
|
||||
targetLongitude: number;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 target_has_location = 12;
|
||||
*/
|
||||
targetHasLocation: number;
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.NeighborEdge.
|
||||
* Use `create(NeighborEdgeSchema)` to create a new message.
|
||||
*/
|
||||
export const NeighborEdgeSchema: GenMessage<NeighborEdge> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_common, 0);
|
||||
|
||||
@@ -1,169 +0,0 @@
|
||||
// @generated by protoc-gen-es v2.12.0 with parameter "target=ts,import_extension=none"
|
||||
// @generated from file meshexplorer/v1/map.proto (package meshexplorer.v1, syntax proto3)
|
||||
/* eslint-disable */
|
||||
|
||||
import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
|
||||
import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
|
||||
import { file_buf_validate_validate } from "../../buf/validate/validate_pb";
|
||||
import type { NeighborEdge } from "./common_pb";
|
||||
import { file_meshexplorer_v1_common } from "./common_pb";
|
||||
import type { Message } from "@bufbuild/protobuf";
|
||||
|
||||
/**
|
||||
* Describes the file meshexplorer/v1/map.proto.
|
||||
*/
|
||||
export const file_meshexplorer_v1_map: GenFile = /*@__PURE__*/
|
||||
fileDesc("ChltZXNoZXhwbG9yZXIvdjEvbWFwLnByb3RvEg9tZXNoZXhwbG9yZXIudjEi0QEKDE5vZGVQb3NpdGlvbhIPCgdub2RlX2lkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIXCgpzaG9ydF9uYW1lGAMgASgJSAGIAQESEAoIbGF0aXR1ZGUYBCABKAESEQoJbG9uZ2l0dWRlGAUgASgBEhEKCWxhc3Rfc2VlbhgGIAEoCRIXCgpmaXJzdF9zZWVuGAcgASgJSAKIAQESDAoEdHlwZRgIIAEoCUIHCgVfbmFtZUINCgtfc2hvcnRfbmFtZUINCgtfZmlyc3Rfc2VlbiL5AgoNR2V0TWFwUmVxdWVzdBItCgdtaW5fbGF0GAEgASgBQhe6SBQSEhkAAAAAAIBWQCkAAAAAAIBWwEgAiAEBEi0KB21heF9sYXQYAiABKAFCF7pIFBISGQAAAAAAgFZAKQAAAAAAgFbASAGIAQESLQoHbWluX2xuZxgDIAEoAUIXukgUEhIZAAAAAACAZkApAAAAAACAZsBIAogBARItCgdtYXhfbG5nGAQgASgBQhe6SBQSEhkAAAAAAIBmQCkAAAAAAIBmwEgDiAEBEhIKCm5vZGVfdHlwZXMYBSADKAkSHwoJbGFzdF9zZWVuGAYgASgFQge6SAQaAigASASIAQESEwoGcmVnaW9uGAcgASgJSAWIAQESGQoRaW5jbHVkZV9uZWlnaGJvcnMYCCABKAhCCgoIX21pbl9sYXRCCgoIX21heF9sYXRCCgoIX21pbl9sbmdCCgoIX21heF9sbmdCDAoKX2xhc3Rfc2VlbkIJCgdfcmVnaW9uInAKDkdldE1hcFJlc3BvbnNlEiwKBW5vZGVzGAEgAygLMh0ubWVzaGV4cGxvcmVyLnYxLk5vZGVQb3NpdGlvbhIwCgluZWlnaGJvcnMYAiADKAsyHS5tZXNoZXhwbG9yZXIudjEuTmVpZ2hib3JFZGdlMlcKCk1hcFNlcnZpY2USSQoGR2V0TWFwEh4ubWVzaGV4cGxvcmVyLnYxLkdldE1hcFJlcXVlc3QaHy5tZXNoZXhwbG9yZXIudjEuR2V0TWFwUmVzcG9uc2ViBnByb3RvMw", [file_buf_validate_validate, file_meshexplorer_v1_common]);
|
||||
|
||||
/**
|
||||
* Latest known position of a node. Mirrors unified_latest_nodeinfo rows
|
||||
* returned by getNodePositions().
|
||||
*
|
||||
* @generated from message meshexplorer.v1.NodePosition
|
||||
*/
|
||||
export type NodePosition = Message<"meshexplorer.v1.NodePosition"> & {
|
||||
/**
|
||||
* @generated from field: string node_id = 1;
|
||||
*/
|
||||
nodeId: string;
|
||||
|
||||
/**
|
||||
* @generated from field: optional string name = 2;
|
||||
*/
|
||||
name?: string | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: optional string short_name = 3;
|
||||
*/
|
||||
shortName?: string | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: double latitude = 4;
|
||||
*/
|
||||
latitude: number;
|
||||
|
||||
/**
|
||||
* @generated from field: double longitude = 5;
|
||||
*/
|
||||
longitude: number;
|
||||
|
||||
/**
|
||||
* @generated from field: string last_seen = 6;
|
||||
*/
|
||||
lastSeen: string;
|
||||
|
||||
/**
|
||||
* @generated from field: optional string first_seen = 7;
|
||||
*/
|
||||
firstSeen?: string | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: string type = 8;
|
||||
*/
|
||||
type: string;
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.NodePosition.
|
||||
* Use `create(NodePositionSchema)` to create a new message.
|
||||
*/
|
||||
export const NodePositionSchema: GenMessage<NodePosition> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_map, 0);
|
||||
|
||||
/**
|
||||
* @generated from message meshexplorer.v1.GetMapRequest
|
||||
*/
|
||||
export type GetMapRequest = Message<"meshexplorer.v1.GetMapRequest"> & {
|
||||
/**
|
||||
* Bounding box (decimal degrees). Unset fields mean "unbounded" on that edge.
|
||||
*
|
||||
* @generated from field: optional double min_lat = 1;
|
||||
*/
|
||||
minLat?: number | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: optional double max_lat = 2;
|
||||
*/
|
||||
maxLat?: number | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: optional double min_lng = 3;
|
||||
*/
|
||||
minLng?: number | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: optional double max_lng = 4;
|
||||
*/
|
||||
maxLng?: number | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: repeated string node_types = 5;
|
||||
*/
|
||||
nodeTypes: string[];
|
||||
|
||||
/**
|
||||
* Only include nodes seen within this many seconds.
|
||||
*
|
||||
* @generated from field: optional int32 last_seen = 6;
|
||||
*/
|
||||
lastSeen?: number | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: optional string region = 7;
|
||||
*/
|
||||
region?: string | undefined;
|
||||
|
||||
/**
|
||||
* When true, also compute and return the neighbor edge graph.
|
||||
*
|
||||
* @generated from field: bool include_neighbors = 8;
|
||||
*/
|
||||
includeNeighbors: boolean;
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.GetMapRequest.
|
||||
* Use `create(GetMapRequestSchema)` to create a new message.
|
||||
*/
|
||||
export const GetMapRequestSchema: GenMessage<GetMapRequest> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_map, 1);
|
||||
|
||||
/**
|
||||
* @generated from message meshexplorer.v1.GetMapResponse
|
||||
*/
|
||||
export type GetMapResponse = Message<"meshexplorer.v1.GetMapResponse"> & {
|
||||
/**
|
||||
* @generated from field: repeated meshexplorer.v1.NodePosition nodes = 1;
|
||||
*/
|
||||
nodes: NodePosition[];
|
||||
|
||||
/**
|
||||
* Populated only when include_neighbors was set on the request.
|
||||
*
|
||||
* @generated from field: repeated meshexplorer.v1.NeighborEdge neighbors = 2;
|
||||
*/
|
||||
neighbors: NeighborEdge[];
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.GetMapResponse.
|
||||
* Use `create(GetMapResponseSchema)` to create a new message.
|
||||
*/
|
||||
export const GetMapResponseSchema: GenMessage<GetMapResponse> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_map, 2);
|
||||
|
||||
/**
|
||||
* @generated from service meshexplorer.v1.MapService
|
||||
*/
|
||||
export const MapService: GenService<{
|
||||
/**
|
||||
* @generated from rpc meshexplorer.v1.MapService.GetMap
|
||||
*/
|
||||
getMap: {
|
||||
methodKind: "unary";
|
||||
input: typeof GetMapRequestSchema;
|
||||
output: typeof GetMapResponseSchema;
|
||||
},
|
||||
}> = /*@__PURE__*/
|
||||
serviceDesc(file_meshexplorer_v1_map, 0);
|
||||
|
||||
@@ -1,96 +0,0 @@
|
||||
// @generated by protoc-gen-es v2.12.0 with parameter "target=ts,import_extension=none"
|
||||
// @generated from file meshexplorer/v1/neighbors.proto (package meshexplorer.v1, syntax proto3)
|
||||
/* eslint-disable */
|
||||
|
||||
import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
|
||||
import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
|
||||
import { file_buf_validate_validate } from "../../buf/validate/validate_pb";
|
||||
import type { NeighborEdge } from "./common_pb";
|
||||
import { file_meshexplorer_v1_common } from "./common_pb";
|
||||
import type { Message } from "@bufbuild/protobuf";
|
||||
|
||||
/**
|
||||
* Describes the file meshexplorer/v1/neighbors.proto.
|
||||
*/
|
||||
export const file_meshexplorer_v1_neighbors: GenFile = /*@__PURE__*/
|
||||
fileDesc("Ch9tZXNoZXhwbG9yZXIvdjEvbmVpZ2hib3JzLnByb3RvEg9tZXNoZXhwbG9yZXIudjEi5wIKFkdldEFsbE5laWdoYm9yc1JlcXVlc3QSLQoHbWluX2xhdBgBIAEoAUIXukgUEhIZAAAAAACAVkApAAAAAACAVsBIAIgBARItCgdtYXhfbGF0GAIgASgBQhe6SBQSEhkAAAAAAIBWQCkAAAAAAIBWwEgBiAEBEi0KB21pbl9sbmcYAyABKAFCF7pIFBISGQAAAAAAgGZAKQAAAAAAgGbASAKIAQESLQoHbWF4X2xuZxgEIAEoAUIXukgUEhIZAAAAAACAZkApAAAAAACAZsBIA4gBARISCgpub2RlX3R5cGVzGAUgAygJEh8KCWxhc3Rfc2VlbhgGIAEoBUIHukgEGgIoAEgEiAEBEhMKBnJlZ2lvbhgHIAEoCUgFiAEBQgoKCF9taW5fbGF0QgoKCF9tYXhfbGF0QgoKCF9taW5fbG5nQgoKCF9tYXhfbG5nQgwKCl9sYXN0X3NlZW5CCQoHX3JlZ2lvbiJLChdHZXRBbGxOZWlnaGJvcnNSZXNwb25zZRIwCgluZWlnaGJvcnMYASADKAsyHS5tZXNoZXhwbG9yZXIudjEuTmVpZ2hib3JFZGdlMngKEE5laWdoYm9yc1NlcnZpY2USZAoPR2V0QWxsTmVpZ2hib3JzEicubWVzaGV4cGxvcmVyLnYxLkdldEFsbE5laWdoYm9yc1JlcXVlc3QaKC5tZXNoZXhwbG9yZXIudjEuR2V0QWxsTmVpZ2hib3JzUmVzcG9uc2ViBnByb3RvMw", [file_buf_validate_validate, file_meshexplorer_v1_common]);
|
||||
|
||||
/**
|
||||
* @generated from message meshexplorer.v1.GetAllNeighborsRequest
|
||||
*/
|
||||
export type GetAllNeighborsRequest = Message<"meshexplorer.v1.GetAllNeighborsRequest"> & {
|
||||
/**
|
||||
* @generated from field: optional double min_lat = 1;
|
||||
*/
|
||||
minLat?: number | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: optional double max_lat = 2;
|
||||
*/
|
||||
maxLat?: number | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: optional double min_lng = 3;
|
||||
*/
|
||||
minLng?: number | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: optional double max_lng = 4;
|
||||
*/
|
||||
maxLng?: number | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: repeated string node_types = 5;
|
||||
*/
|
||||
nodeTypes: string[];
|
||||
|
||||
/**
|
||||
* @generated from field: optional int32 last_seen = 6;
|
||||
*/
|
||||
lastSeen?: number | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: optional string region = 7;
|
||||
*/
|
||||
region?: string | undefined;
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.GetAllNeighborsRequest.
|
||||
* Use `create(GetAllNeighborsRequestSchema)` to create a new message.
|
||||
*/
|
||||
export const GetAllNeighborsRequestSchema: GenMessage<GetAllNeighborsRequest> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_neighbors, 0);
|
||||
|
||||
/**
|
||||
* @generated from message meshexplorer.v1.GetAllNeighborsResponse
|
||||
*/
|
||||
export type GetAllNeighborsResponse = Message<"meshexplorer.v1.GetAllNeighborsResponse"> & {
|
||||
/**
|
||||
* @generated from field: repeated meshexplorer.v1.NeighborEdge neighbors = 1;
|
||||
*/
|
||||
neighbors: NeighborEdge[];
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.GetAllNeighborsResponse.
|
||||
* Use `create(GetAllNeighborsResponseSchema)` to create a new message.
|
||||
*/
|
||||
export const GetAllNeighborsResponseSchema: GenMessage<GetAllNeighborsResponse> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_neighbors, 1);
|
||||
|
||||
/**
|
||||
* @generated from service meshexplorer.v1.NeighborsService
|
||||
*/
|
||||
export const NeighborsService: GenService<{
|
||||
/**
|
||||
* @generated from rpc meshexplorer.v1.NeighborsService.GetAllNeighbors
|
||||
*/
|
||||
getAllNeighbors: {
|
||||
methodKind: "unary";
|
||||
input: typeof GetAllNeighborsRequestSchema;
|
||||
output: typeof GetAllNeighborsResponseSchema;
|
||||
},
|
||||
}> = /*@__PURE__*/
|
||||
serviceDesc(file_meshexplorer_v1_neighbors, 0);
|
||||
|
||||
@@ -1,654 +0,0 @@
|
||||
// @generated by protoc-gen-es v2.12.0 with parameter "target=ts,import_extension=none"
|
||||
// @generated from file meshexplorer/v1/node.proto (package meshexplorer.v1, syntax proto3)
|
||||
/* eslint-disable */
|
||||
|
||||
import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
|
||||
import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
|
||||
import { file_buf_validate_validate } from "../../buf/validate/validate_pb";
|
||||
import type { Message } from "@bufbuild/protobuf";
|
||||
|
||||
/**
|
||||
* Describes the file meshexplorer/v1/node.proto.
|
||||
*/
|
||||
export const file_meshexplorer_v1_node: GenFile = /*@__PURE__*/
|
||||
fileDesc("ChptZXNoZXhwbG9yZXIvdjEvbm9kZS5wcm90bxIPbWVzaGV4cGxvcmVyLnYxIssCCghOb2RlSW5mbxISCgpwdWJsaWNfa2V5GAEgASgJEhEKCW5vZGVfbmFtZRgCIAEoCRIVCghsYXRpdHVkZRgDIAEoAUgAiAEBEhYKCWxvbmdpdHVkZRgEIAEoAUgBiAEBEhQKDGhhc19sb2NhdGlvbhgFIAEoBRITCgtpc19yZXBlYXRlchgGIAEoBRIUCgxpc19jaGF0X25vZGUYByABKAUSFgoOaXNfcm9vbV9zZXJ2ZXIYCCABKAUSEAoIaGFzX25hbWUYCSABKAUSEwoGYnJva2VyGAogASgJSAKIAQESEgoFdG9waWMYCyABKAlIA4gBARISCgpmaXJzdF9zZWVuGAwgASgJEhEKCWxhc3Rfc2VlbhgNIAEoCUILCglfbGF0aXR1ZGVCDAoKX2xvbmdpdHVkZUIJCgdfYnJva2VyQggKBl90b3BpYyJMChVPcmlnaW5QYXRoUHVia2V5VHVwbGUSDgoGb3JpZ2luGAEgASgJEgwKBHBhdGgYAiABKAkSFQoNb3JpZ2luX3B1YmtleRgDIAEoCSLuAgoGQWR2ZXJ0EhUKDWFkdl90aW1lc3RhbXAYASABKAkSSQoZb3JpZ2luX3BhdGhfcHVia2V5X3R1cGxlcxgCIAMoCzImLm1lc2hleHBsb3Jlci52MS5PcmlnaW5QYXRoUHVia2V5VHVwbGUSFAoMYWR2ZXJ0X2NvdW50GAMgASgFEhoKEmVhcmxpZXN0X3RpbWVzdGFtcBgEIAEoCRIYChBsYXRlc3RfdGltZXN0YW1wGAUgASgJEhUKCGxhdGl0dWRlGAYgASgBSACIAQESFgoJbG9uZ2l0dWRlGAcgASgBSAGIAQESEwoLaXNfcmVwZWF0ZXIYCCABKAUSFAoMaXNfY2hhdF9ub2RlGAkgASgFEhYKDmlzX3Jvb21fc2VydmVyGAogASgFEhQKDGhhc19sb2NhdGlvbhgLIAEoBRITCgtwYWNrZXRfaGFzaBgMIAEoCUILCglfbGF0aXR1ZGVCDAoKX2xvbmdpdHVkZSJOCg9Mb2NhdGlvbkhpc3RvcnkSFgoObWVzaF90aW1lc3RhbXAYASABKAkSEAoIbGF0aXR1ZGUYAiABKAESEQoJbG9uZ2l0dWRlGAMgASgBIlcKCU1xdHRUb3BpYxINCgV0b3BpYxgBIAEoCRIOCgZicm9rZXIYAiABKAkSGAoQbGFzdF9wYWNrZXRfdGltZRgDIAEoCRIRCglpc19yZWNlbnQYBCABKAgiYAoITXF0dEluZm8SEwoLaXNfdXBsaW5rZWQYASABKAgSEwoLaGFzX3BhY2tldHMYAiABKAgSKgoGdG9waWNzGAMgAygLMhoubWVzaGV4cGxvcmVyLnYxLk1xdHRUb3BpYyJXCg5HZXROb2RlUmVxdWVzdBIbCgpwdWJsaWNfa2V5GAEgASgJQge6SARyAhAKEh4KBWxpbWl0GAIgASgFQgq6SAcaBRjoBygBSACIAQFCCAoGX2xpbWl0IvABCg9HZXROb2RlUmVzcG9uc2USJwoEbm9kZRgBIAEoCzIZLm1lc2hleHBsb3Jlci52MS5Ob2RlSW5mbxIvCg5yZWNlbnRfYWR2ZXJ0cxgCIAMoCzIXLm1lc2hleHBsb3Jlci52MS5BZHZlcnQSOgoQbG9jYXRpb25faGlzdG9yeRgDIAMoCzIgLm1lc2hleHBsb3Jlci52MS5Mb2NhdGlvbkhpc3RvcnkSJwoEbXF0dBgEIAEoCzIZLm1lc2hleHBsb3Jlci52MS5NcXR0SW5mbxITCgZyZWdpb24YBSABKAlIAIgBAUIJCgdfcmVnaW9uIvoBCghOZWlnaGJvchISCgpwdWJsaWNfa2V5GAEgASgJEhEKCW5vZGVfbmFtZRgCIAEoCRIVCghsYXRpdHVkZRgDIAEoAUgAiAEBEhYKCWxvbmdpdHVkZRgEIAEoAUgBiAEBEhQKDGhhc19sb2NhdGlvbhgFIAEoBRITCgtpc19yZXBlYXRlchgGIAEoBRIUCgxpc19jaGF0X25vZGUYByABKAUSFgoOaXNfcm9vbV9zZXJ2ZXIYCCABKAUSEAoIaGFzX25hbWUYCSABKAUSEgoKZGlyZWN0aW9ucxgKIAMoCUILCglfbGF0aXR1ZGVCDAoKX2xvbmdpdHVkZSJlChdHZXROb2RlTmVpZ2hib3JzUmVxdWVzdBIbCgpwdWJsaWNfa2V5GAEgASgJQge6SARyAhAKEh8KCWxhc3Rfc2VlbhgCIAEoBUIHukgEGgIoAEgAiAEBQgwKCl9sYXN0X3NlZW4iSAoYR2V0Tm9kZU5laWdoYm9yc1Jlc3BvbnNlEiwKCW5laWdoYm9ycxgBIAMoCzIZLm1lc2hleHBsb3Jlci52MS5OZWlnaGJvciL1AQoLU2VhcmNoUXVlcnkSGwoFcXVlcnkYASABKAlCB7pIBHICGGRIAIgBARITCgZyZWdpb24YAiABKAlIAYgBARIfCglsYXN0X3NlZW4YAyABKAVCB7pIBBoCKABIAogBARIeCgVsaW1pdBgEIAEoBUIKukgHGgUYyAEoAUgDiAEBEhIKBWV4YWN0GAUgASgISASIAQESGAoLaXNfcmVwZWF0ZXIYBiABKAhIBYgBAUIICgZfcXVlcnlCCQoHX3JlZ2lvbkIMCgpfbGFzdF9zZWVuQggKBl9saW1pdEIICgZfZXhhY3RCDgoMX2lzX3JlcGVhdGVyIrECCgxTZWFyY2hSZXN1bHQSEgoKcHVibGljX2tleRgBIAEoCRIRCglub2RlX25hbWUYAiABKAkSFQoIbGF0aXR1ZGUYAyABKAFIAIgBARIWCglsb25naXR1ZGUYBCABKAFIAYgBARIUCgxoYXNfbG9jYXRpb24YBSABKAUSEwoLaXNfcmVwZWF0ZXIYBiABKAUSFAoMaXNfY2hhdF9ub2RlGAcgASgFEhYKDmlzX3Jvb21fc2VydmVyGAggASgFEhAKCGhhc19uYW1lGAkgASgFEhMKC2ZpcnN0X2hlYXJkGAogASgJEhEKCWxhc3Rfc2VlbhgLIAEoCRIOCgZicm9rZXIYDCABKAkSDQoFdG9waWMYDSABKAlCCwoJX2xhdGl0dWRlQgwKCl9sb25naXR1ZGUiQgoQU2VhcmNoUmVzdWx0TGlzdBIuCgdyZXN1bHRzGAEgAygLMh0ubWVzaGV4cGxvcmVyLnYxLlNlYXJjaFJlc3VsdCJOChJTZWFyY2hOb2Rlc1JlcXVlc3QSOAoHcXVlcmllcxgBIAMoCzIcLm1lc2hleHBsb3Jlci52MS5TZWFyY2hRdWVyeUIJukgGkgEDEPQDIkkKE1NlYXJjaE5vZGVzUmVzcG9uc2USMgoHcmVzdWx0cxgBIAMoCzIhLm1lc2hleHBsb3Jlci52MS5TZWFyY2hSZXN1bHRMaXN0Mp4CCgtOb2RlU2VydmljZRJMCgdHZXROb2RlEh8ubWVzaGV4cGxvcmVyLnYxLkdldE5vZGVSZXF1ZXN0GiAubWVzaGV4cGxvcmVyLnYxLkdldE5vZGVSZXNwb25zZRJnChBHZXROb2RlTmVpZ2hib3JzEigubWVzaGV4cGxvcmVyLnYxLkdldE5vZGVOZWlnaGJvcnNSZXF1ZXN0GikubWVzaGV4cGxvcmVyLnYxLkdldE5vZGVOZWlnaGJvcnNSZXNwb25zZRJYCgtTZWFyY2hOb2RlcxIjLm1lc2hleHBsb3Jlci52MS5TZWFyY2hOb2Rlc1JlcXVlc3QaJC5tZXNoZXhwbG9yZXIudjEuU2VhcmNoTm9kZXNSZXNwb25zZWIGcHJvdG8z", [file_buf_validate_validate]);
|
||||
|
||||
/**
|
||||
* Basic node identity/capabilities from the latest advert (getMeshcoreNodeInfo).
|
||||
*
|
||||
* @generated from message meshexplorer.v1.NodeInfo
|
||||
*/
|
||||
export type NodeInfo = Message<"meshexplorer.v1.NodeInfo"> & {
|
||||
/**
|
||||
* @generated from field: string public_key = 1;
|
||||
*/
|
||||
publicKey: string;
|
||||
|
||||
/**
|
||||
* @generated from field: string node_name = 2;
|
||||
*/
|
||||
nodeName: string;
|
||||
|
||||
/**
|
||||
* @generated from field: optional double latitude = 3;
|
||||
*/
|
||||
latitude?: number | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: optional double longitude = 4;
|
||||
*/
|
||||
longitude?: number | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 has_location = 5;
|
||||
*/
|
||||
hasLocation: number;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 is_repeater = 6;
|
||||
*/
|
||||
isRepeater: number;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 is_chat_node = 7;
|
||||
*/
|
||||
isChatNode: number;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 is_room_server = 8;
|
||||
*/
|
||||
isRoomServer: number;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 has_name = 9;
|
||||
*/
|
||||
hasName: number;
|
||||
|
||||
/**
|
||||
* @generated from field: optional string broker = 10;
|
||||
*/
|
||||
broker?: string | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: optional string topic = 11;
|
||||
*/
|
||||
topic?: string | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: string first_seen = 12;
|
||||
*/
|
||||
firstSeen: string;
|
||||
|
||||
/**
|
||||
* @generated from field: string last_seen = 13;
|
||||
*/
|
||||
lastSeen: string;
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.NodeInfo.
|
||||
* Use `create(NodeInfoSchema)` to create a new message.
|
||||
*/
|
||||
export const NodeInfoSchema: GenMessage<NodeInfo> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_node, 0);
|
||||
|
||||
/**
|
||||
* One (origin, path, origin_pubkey) tuple from an advert's reception paths.
|
||||
*
|
||||
* @generated from message meshexplorer.v1.OriginPathPubkeyTuple
|
||||
*/
|
||||
export type OriginPathPubkeyTuple = Message<"meshexplorer.v1.OriginPathPubkeyTuple"> & {
|
||||
/**
|
||||
* @generated from field: string origin = 1;
|
||||
*/
|
||||
origin: string;
|
||||
|
||||
/**
|
||||
* @generated from field: string path = 2;
|
||||
*/
|
||||
path: string;
|
||||
|
||||
/**
|
||||
* @generated from field: string origin_pubkey = 3;
|
||||
*/
|
||||
originPubkey: string;
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.OriginPathPubkeyTuple.
|
||||
* Use `create(OriginPathPubkeyTupleSchema)` to create a new message.
|
||||
*/
|
||||
export const OriginPathPubkeyTupleSchema: GenMessage<OriginPathPubkeyTuple> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_node, 1);
|
||||
|
||||
/**
|
||||
* An advert grouped by packet_hash, with all the paths it was heard over.
|
||||
*
|
||||
* @generated from message meshexplorer.v1.Advert
|
||||
*/
|
||||
export type Advert = Message<"meshexplorer.v1.Advert"> & {
|
||||
/**
|
||||
* @generated from field: string adv_timestamp = 1;
|
||||
*/
|
||||
advTimestamp: string;
|
||||
|
||||
/**
|
||||
* @generated from field: repeated meshexplorer.v1.OriginPathPubkeyTuple origin_path_pubkey_tuples = 2;
|
||||
*/
|
||||
originPathPubkeyTuples: OriginPathPubkeyTuple[];
|
||||
|
||||
/**
|
||||
* @generated from field: int32 advert_count = 3;
|
||||
*/
|
||||
advertCount: number;
|
||||
|
||||
/**
|
||||
* @generated from field: string earliest_timestamp = 4;
|
||||
*/
|
||||
earliestTimestamp: string;
|
||||
|
||||
/**
|
||||
* @generated from field: string latest_timestamp = 5;
|
||||
*/
|
||||
latestTimestamp: string;
|
||||
|
||||
/**
|
||||
* @generated from field: optional double latitude = 6;
|
||||
*/
|
||||
latitude?: number | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: optional double longitude = 7;
|
||||
*/
|
||||
longitude?: number | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 is_repeater = 8;
|
||||
*/
|
||||
isRepeater: number;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 is_chat_node = 9;
|
||||
*/
|
||||
isChatNode: number;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 is_room_server = 10;
|
||||
*/
|
||||
isRoomServer: number;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 has_location = 11;
|
||||
*/
|
||||
hasLocation: number;
|
||||
|
||||
/**
|
||||
* @generated from field: string packet_hash = 12;
|
||||
*/
|
||||
packetHash: string;
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.Advert.
|
||||
* Use `create(AdvertSchema)` to create a new message.
|
||||
*/
|
||||
export const AdvertSchema: GenMessage<Advert> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_node, 2);
|
||||
|
||||
/**
|
||||
* @generated from message meshexplorer.v1.LocationHistory
|
||||
*/
|
||||
export type LocationHistory = Message<"meshexplorer.v1.LocationHistory"> & {
|
||||
/**
|
||||
* @generated from field: string mesh_timestamp = 1;
|
||||
*/
|
||||
meshTimestamp: string;
|
||||
|
||||
/**
|
||||
* @generated from field: double latitude = 2;
|
||||
*/
|
||||
latitude: number;
|
||||
|
||||
/**
|
||||
* @generated from field: double longitude = 3;
|
||||
*/
|
||||
longitude: number;
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.LocationHistory.
|
||||
* Use `create(LocationHistorySchema)` to create a new message.
|
||||
*/
|
||||
export const LocationHistorySchema: GenMessage<LocationHistory> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_node, 3);
|
||||
|
||||
/**
|
||||
* @generated from message meshexplorer.v1.MqttTopic
|
||||
*/
|
||||
export type MqttTopic = Message<"meshexplorer.v1.MqttTopic"> & {
|
||||
/**
|
||||
* @generated from field: string topic = 1;
|
||||
*/
|
||||
topic: string;
|
||||
|
||||
/**
|
||||
* @generated from field: string broker = 2;
|
||||
*/
|
||||
broker: string;
|
||||
|
||||
/**
|
||||
* @generated from field: string last_packet_time = 3;
|
||||
*/
|
||||
lastPacketTime: string;
|
||||
|
||||
/**
|
||||
* @generated from field: bool is_recent = 4;
|
||||
*/
|
||||
isRecent: boolean;
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.MqttTopic.
|
||||
* Use `create(MqttTopicSchema)` to create a new message.
|
||||
*/
|
||||
export const MqttTopicSchema: GenMessage<MqttTopic> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_node, 4);
|
||||
|
||||
/**
|
||||
* @generated from message meshexplorer.v1.MqttInfo
|
||||
*/
|
||||
export type MqttInfo = Message<"meshexplorer.v1.MqttInfo"> & {
|
||||
/**
|
||||
* @generated from field: bool is_uplinked = 1;
|
||||
*/
|
||||
isUplinked: boolean;
|
||||
|
||||
/**
|
||||
* @generated from field: bool has_packets = 2;
|
||||
*/
|
||||
hasPackets: boolean;
|
||||
|
||||
/**
|
||||
* @generated from field: repeated meshexplorer.v1.MqttTopic topics = 3;
|
||||
*/
|
||||
topics: MqttTopic[];
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.MqttInfo.
|
||||
* Use `create(MqttInfoSchema)` to create a new message.
|
||||
*/
|
||||
export const MqttInfoSchema: GenMessage<MqttInfo> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_node, 5);
|
||||
|
||||
/**
|
||||
* @generated from message meshexplorer.v1.GetNodeRequest
|
||||
*/
|
||||
export type GetNodeRequest = Message<"meshexplorer.v1.GetNodeRequest"> & {
|
||||
/**
|
||||
* @generated from field: string public_key = 1;
|
||||
*/
|
||||
publicKey: string;
|
||||
|
||||
/**
|
||||
* Max number of recent adverts to return (default 50).
|
||||
*
|
||||
* @generated from field: optional int32 limit = 2;
|
||||
*/
|
||||
limit?: number | undefined;
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.GetNodeRequest.
|
||||
* Use `create(GetNodeRequestSchema)` to create a new message.
|
||||
*/
|
||||
export const GetNodeRequestSchema: GenMessage<GetNodeRequest> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_node, 6);
|
||||
|
||||
/**
|
||||
* @generated from message meshexplorer.v1.GetNodeResponse
|
||||
*/
|
||||
export type GetNodeResponse = Message<"meshexplorer.v1.GetNodeResponse"> & {
|
||||
/**
|
||||
* @generated from field: meshexplorer.v1.NodeInfo node = 1;
|
||||
*/
|
||||
node?: NodeInfo | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: repeated meshexplorer.v1.Advert recent_adverts = 2;
|
||||
*/
|
||||
recentAdverts: Advert[];
|
||||
|
||||
/**
|
||||
* @generated from field: repeated meshexplorer.v1.LocationHistory location_history = 3;
|
||||
*/
|
||||
locationHistory: LocationHistory[];
|
||||
|
||||
/**
|
||||
* @generated from field: meshexplorer.v1.MqttInfo mqtt = 4;
|
||||
*/
|
||||
mqtt?: MqttInfo | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: optional string region = 5;
|
||||
*/
|
||||
region?: string | undefined;
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.GetNodeResponse.
|
||||
* Use `create(GetNodeResponseSchema)` to create a new message.
|
||||
*/
|
||||
export const GetNodeResponseSchema: GenMessage<GetNodeResponse> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_node, 7);
|
||||
|
||||
/**
|
||||
* Direct neighbor of a node (meshcore_node_direct_neighbors).
|
||||
*
|
||||
* @generated from message meshexplorer.v1.Neighbor
|
||||
*/
|
||||
export type Neighbor = Message<"meshexplorer.v1.Neighbor"> & {
|
||||
/**
|
||||
* @generated from field: string public_key = 1;
|
||||
*/
|
||||
publicKey: string;
|
||||
|
||||
/**
|
||||
* @generated from field: string node_name = 2;
|
||||
*/
|
||||
nodeName: string;
|
||||
|
||||
/**
|
||||
* @generated from field: optional double latitude = 3;
|
||||
*/
|
||||
latitude?: number | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: optional double longitude = 4;
|
||||
*/
|
||||
longitude?: number | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 has_location = 5;
|
||||
*/
|
||||
hasLocation: number;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 is_repeater = 6;
|
||||
*/
|
||||
isRepeater: number;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 is_chat_node = 7;
|
||||
*/
|
||||
isChatNode: number;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 is_room_server = 8;
|
||||
*/
|
||||
isRoomServer: number;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 has_name = 9;
|
||||
*/
|
||||
hasName: number;
|
||||
|
||||
/**
|
||||
* @generated from field: repeated string directions = 10;
|
||||
*/
|
||||
directions: string[];
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.Neighbor.
|
||||
* Use `create(NeighborSchema)` to create a new message.
|
||||
*/
|
||||
export const NeighborSchema: GenMessage<Neighbor> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_node, 8);
|
||||
|
||||
/**
|
||||
* @generated from message meshexplorer.v1.GetNodeNeighborsRequest
|
||||
*/
|
||||
export type GetNodeNeighborsRequest = Message<"meshexplorer.v1.GetNodeNeighborsRequest"> & {
|
||||
/**
|
||||
* @generated from field: string public_key = 1;
|
||||
*/
|
||||
publicKey: string;
|
||||
|
||||
/**
|
||||
* @generated from field: optional int32 last_seen = 2;
|
||||
*/
|
||||
lastSeen?: number | undefined;
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.GetNodeNeighborsRequest.
|
||||
* Use `create(GetNodeNeighborsRequestSchema)` to create a new message.
|
||||
*/
|
||||
export const GetNodeNeighborsRequestSchema: GenMessage<GetNodeNeighborsRequest> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_node, 9);
|
||||
|
||||
/**
|
||||
* @generated from message meshexplorer.v1.GetNodeNeighborsResponse
|
||||
*/
|
||||
export type GetNodeNeighborsResponse = Message<"meshexplorer.v1.GetNodeNeighborsResponse"> & {
|
||||
/**
|
||||
* @generated from field: repeated meshexplorer.v1.Neighbor neighbors = 1;
|
||||
*/
|
||||
neighbors: Neighbor[];
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.GetNodeNeighborsResponse.
|
||||
* Use `create(GetNodeNeighborsResponseSchema)` to create a new message.
|
||||
*/
|
||||
export const GetNodeNeighborsResponseSchema: GenMessage<GetNodeNeighborsResponse> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_node, 10);
|
||||
|
||||
/**
|
||||
* One search request within a (possibly batched) SearchNodes call.
|
||||
*
|
||||
* @generated from message meshexplorer.v1.SearchQuery
|
||||
*/
|
||||
export type SearchQuery = Message<"meshexplorer.v1.SearchQuery"> & {
|
||||
/**
|
||||
* @generated from field: optional string query = 1;
|
||||
*/
|
||||
query?: string | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: optional string region = 2;
|
||||
*/
|
||||
region?: string | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: optional int32 last_seen = 3;
|
||||
*/
|
||||
lastSeen?: number | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: optional int32 limit = 4;
|
||||
*/
|
||||
limit?: number | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: optional bool exact = 5;
|
||||
*/
|
||||
exact?: boolean | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: optional bool is_repeater = 6;
|
||||
*/
|
||||
isRepeater?: boolean | undefined;
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.SearchQuery.
|
||||
* Use `create(SearchQuerySchema)` to create a new message.
|
||||
*/
|
||||
export const SearchQuerySchema: GenMessage<SearchQuery> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_node, 11);
|
||||
|
||||
/**
|
||||
* @generated from message meshexplorer.v1.SearchResult
|
||||
*/
|
||||
export type SearchResult = Message<"meshexplorer.v1.SearchResult"> & {
|
||||
/**
|
||||
* @generated from field: string public_key = 1;
|
||||
*/
|
||||
publicKey: string;
|
||||
|
||||
/**
|
||||
* @generated from field: string node_name = 2;
|
||||
*/
|
||||
nodeName: string;
|
||||
|
||||
/**
|
||||
* @generated from field: optional double latitude = 3;
|
||||
*/
|
||||
latitude?: number | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: optional double longitude = 4;
|
||||
*/
|
||||
longitude?: number | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 has_location = 5;
|
||||
*/
|
||||
hasLocation: number;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 is_repeater = 6;
|
||||
*/
|
||||
isRepeater: number;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 is_chat_node = 7;
|
||||
*/
|
||||
isChatNode: number;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 is_room_server = 8;
|
||||
*/
|
||||
isRoomServer: number;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 has_name = 9;
|
||||
*/
|
||||
hasName: number;
|
||||
|
||||
/**
|
||||
* @generated from field: string first_heard = 10;
|
||||
*/
|
||||
firstHeard: string;
|
||||
|
||||
/**
|
||||
* @generated from field: string last_seen = 11;
|
||||
*/
|
||||
lastSeen: string;
|
||||
|
||||
/**
|
||||
* @generated from field: string broker = 12;
|
||||
*/
|
||||
broker: string;
|
||||
|
||||
/**
|
||||
* @generated from field: string topic = 13;
|
||||
*/
|
||||
topic: string;
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.SearchResult.
|
||||
* Use `create(SearchResultSchema)` to create a new message.
|
||||
*/
|
||||
export const SearchResultSchema: GenMessage<SearchResult> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_node, 12);
|
||||
|
||||
/**
|
||||
* Results for a single query in the batch (preserves per-query grouping).
|
||||
*
|
||||
* @generated from message meshexplorer.v1.SearchResultList
|
||||
*/
|
||||
export type SearchResultList = Message<"meshexplorer.v1.SearchResultList"> & {
|
||||
/**
|
||||
* @generated from field: repeated meshexplorer.v1.SearchResult results = 1;
|
||||
*/
|
||||
results: SearchResult[];
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.SearchResultList.
|
||||
* Use `create(SearchResultListSchema)` to create a new message.
|
||||
*/
|
||||
export const SearchResultListSchema: GenMessage<SearchResultList> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_node, 13);
|
||||
|
||||
/**
|
||||
* @generated from message meshexplorer.v1.SearchNodesRequest
|
||||
*/
|
||||
export type SearchNodesRequest = Message<"meshexplorer.v1.SearchNodesRequest"> & {
|
||||
/**
|
||||
* @generated from field: repeated meshexplorer.v1.SearchQuery queries = 1;
|
||||
*/
|
||||
queries: SearchQuery[];
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.SearchNodesRequest.
|
||||
* Use `create(SearchNodesRequestSchema)` to create a new message.
|
||||
*/
|
||||
export const SearchNodesRequestSchema: GenMessage<SearchNodesRequest> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_node, 14);
|
||||
|
||||
/**
|
||||
* @generated from message meshexplorer.v1.SearchNodesResponse
|
||||
*/
|
||||
export type SearchNodesResponse = Message<"meshexplorer.v1.SearchNodesResponse"> & {
|
||||
/**
|
||||
* One entry per input query, in the same order.
|
||||
*
|
||||
* @generated from field: repeated meshexplorer.v1.SearchResultList results = 1;
|
||||
*/
|
||||
results: SearchResultList[];
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.SearchNodesResponse.
|
||||
* Use `create(SearchNodesResponseSchema)` to create a new message.
|
||||
*/
|
||||
export const SearchNodesResponseSchema: GenMessage<SearchNodesResponse> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_node, 15);
|
||||
|
||||
/**
|
||||
* @generated from service meshexplorer.v1.NodeService
|
||||
*/
|
||||
export const NodeService: GenService<{
|
||||
/**
|
||||
* @generated from rpc meshexplorer.v1.NodeService.GetNode
|
||||
*/
|
||||
getNode: {
|
||||
methodKind: "unary";
|
||||
input: typeof GetNodeRequestSchema;
|
||||
output: typeof GetNodeResponseSchema;
|
||||
},
|
||||
/**
|
||||
* @generated from rpc meshexplorer.v1.NodeService.GetNodeNeighbors
|
||||
*/
|
||||
getNodeNeighbors: {
|
||||
methodKind: "unary";
|
||||
input: typeof GetNodeNeighborsRequestSchema;
|
||||
output: typeof GetNodeNeighborsResponseSchema;
|
||||
},
|
||||
/**
|
||||
* @generated from rpc meshexplorer.v1.NodeService.SearchNodes
|
||||
*/
|
||||
searchNodes: {
|
||||
methodKind: "unary";
|
||||
input: typeof SearchNodesRequestSchema;
|
||||
output: typeof SearchNodesResponseSchema;
|
||||
},
|
||||
}> = /*@__PURE__*/
|
||||
serviceDesc(file_meshexplorer_v1_node, 0);
|
||||
|
||||
@@ -1,154 +0,0 @@
|
||||
// @generated by protoc-gen-es v2.12.0 with parameter "target=ts,import_extension=none"
|
||||
// @generated from file meshexplorer/v1/packets.proto (package meshexplorer.v1, syntax proto3)
|
||||
/* eslint-disable */
|
||||
|
||||
import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
|
||||
import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
|
||||
import { file_buf_validate_validate } from "../../buf/validate/validate_pb";
|
||||
import type { Message } from "@bufbuild/protobuf";
|
||||
|
||||
/**
|
||||
* Describes the file meshexplorer/v1/packets.proto.
|
||||
*/
|
||||
export const file_meshexplorer_v1_packets: GenFile = /*@__PURE__*/
|
||||
fileDesc("Ch1tZXNoZXhwbG9yZXIvdjEvcGFja2V0cy5wcm90bxIPbWVzaGV4cGxvcmVyLnYxIvMBCgZQYWNrZXQSGAoQaW5nZXN0X3RpbWVzdGFtcBgBIAEoCRIWCg5tZXNoX3RpbWVzdGFtcBgCIAEoCRIOCgZicm9rZXIYAyABKAkSDQoFdG9waWMYBCABKAkSDgoGcGFja2V0GAUgASgJEhAKCHBhdGhfbGVuGAYgASgFEgwKBHBhdGgYByABKAkSEgoKcm91dGVfdHlwZRgIIAEoBRIUCgxwYXlsb2FkX3R5cGUYCSABKAUSFwoPcGF5bG9hZF92ZXJzaW9uGAogASgFEg4KBmhlYWRlchgLIAEoBRIVCg1vcmlnaW5fcHVia2V5GAwgASgJIs8CChRTdHJlYW1QYWNrZXRzUmVxdWVzdBITCgZyZWdpb24YASABKAlIAIgBARIkCgxwYXlsb2FkX3R5cGUYAiABKAVCCbpIBhoEGA8oAEgBiAEBEiIKCnJvdXRlX3R5cGUYAyABKAVCCbpIBhoEGAMoAEgCiAEBEjEKDW9yaWdpbl9wdWJrZXkYBCABKAlCFbpIEnIQMg5eWzAtOUEtRmEtZl0rJEgDiAEBEiYKDXBvbGxfaW50ZXJ2YWwYBSABKAVCCrpIBxoFGJBOKGRIBIgBARIhCghtYXhfcm93cxgGIAEoBUIKukgHGgUYkE4oCkgFiAEBQgkKB19yZWdpb25CDwoNX3BheWxvYWRfdHlwZUINCgtfcm91dGVfdHlwZUIQCg5fb3JpZ2luX3B1YmtleUIQCg5fcG9sbF9pbnRlcnZhbEILCglfbWF4X3Jvd3MyYwoOUGFja2V0c1NlcnZpY2USUQoNU3RyZWFtUGFja2V0cxIlLm1lc2hleHBsb3Jlci52MS5TdHJlYW1QYWNrZXRzUmVxdWVzdBoXLm1lc2hleHBsb3Jlci52MS5QYWNrZXQwAWIGcHJvdG8z", [file_buf_validate_validate]);
|
||||
|
||||
/**
|
||||
* A raw mesh packet (meshcore_packets), hex fields kept as hex strings.
|
||||
*
|
||||
* @generated from message meshexplorer.v1.Packet
|
||||
*/
|
||||
export type Packet = Message<"meshexplorer.v1.Packet"> & {
|
||||
/**
|
||||
* @generated from field: string ingest_timestamp = 1;
|
||||
*/
|
||||
ingestTimestamp: string;
|
||||
|
||||
/**
|
||||
* @generated from field: string mesh_timestamp = 2;
|
||||
*/
|
||||
meshTimestamp: string;
|
||||
|
||||
/**
|
||||
* @generated from field: string broker = 3;
|
||||
*/
|
||||
broker: string;
|
||||
|
||||
/**
|
||||
* @generated from field: string topic = 4;
|
||||
*/
|
||||
topic: string;
|
||||
|
||||
/**
|
||||
* @generated from field: string packet = 5;
|
||||
*/
|
||||
packet: string;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 path_len = 6;
|
||||
*/
|
||||
pathLen: number;
|
||||
|
||||
/**
|
||||
* @generated from field: string path = 7;
|
||||
*/
|
||||
path: string;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 route_type = 8;
|
||||
*/
|
||||
routeType: number;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 payload_type = 9;
|
||||
*/
|
||||
payloadType: number;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 payload_version = 10;
|
||||
*/
|
||||
payloadVersion: number;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 header = 11;
|
||||
*/
|
||||
header: number;
|
||||
|
||||
/**
|
||||
* @generated from field: string origin_pubkey = 12;
|
||||
*/
|
||||
originPubkey: string;
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.Packet.
|
||||
* Use `create(PacketSchema)` to create a new message.
|
||||
*/
|
||||
export const PacketSchema: GenMessage<Packet> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_packets, 0);
|
||||
|
||||
/**
|
||||
* @generated from message meshexplorer.v1.StreamPacketsRequest
|
||||
*/
|
||||
export type StreamPacketsRequest = Message<"meshexplorer.v1.StreamPacketsRequest"> & {
|
||||
/**
|
||||
* @generated from field: optional string region = 1;
|
||||
*/
|
||||
region?: string | undefined;
|
||||
|
||||
/**
|
||||
* Payload type filter (0..15).
|
||||
*
|
||||
* @generated from field: optional int32 payload_type = 2;
|
||||
*/
|
||||
payloadType?: number | undefined;
|
||||
|
||||
/**
|
||||
* Route type filter (0..3).
|
||||
*
|
||||
* @generated from field: optional int32 route_type = 3;
|
||||
*/
|
||||
routeType?: number | undefined;
|
||||
|
||||
/**
|
||||
* @generated from field: optional string origin_pubkey = 4;
|
||||
*/
|
||||
originPubkey?: string | undefined;
|
||||
|
||||
/**
|
||||
* Poll interval in ms (clamped 100..10000, default 500).
|
||||
*
|
||||
* @generated from field: optional int32 poll_interval = 5;
|
||||
*/
|
||||
pollInterval?: number | undefined;
|
||||
|
||||
/**
|
||||
* Max rows per poll (clamped 10..10000, default 10).
|
||||
*
|
||||
* @generated from field: optional int32 max_rows = 6;
|
||||
*/
|
||||
maxRows?: number | undefined;
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.StreamPacketsRequest.
|
||||
* Use `create(StreamPacketsRequestSchema)` to create a new message.
|
||||
*/
|
||||
export const StreamPacketsRequestSchema: GenMessage<StreamPacketsRequest> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_packets, 1);
|
||||
|
||||
/**
|
||||
* @generated from service meshexplorer.v1.PacketsService
|
||||
*/
|
||||
export const PacketsService: GenService<{
|
||||
/**
|
||||
* @generated from rpc meshexplorer.v1.PacketsService.StreamPackets
|
||||
*/
|
||||
streamPackets: {
|
||||
methodKind: "server_streaming";
|
||||
input: typeof StreamPacketsRequestSchema;
|
||||
output: typeof PacketSchema;
|
||||
},
|
||||
}> = /*@__PURE__*/
|
||||
serviceDesc(file_meshexplorer_v1_packets, 0);
|
||||
|
||||
@@ -1,224 +0,0 @@
|
||||
// @generated by protoc-gen-es v2.12.0 with parameter "target=ts,import_extension=none"
|
||||
// @generated from file meshexplorer/v1/stats.proto (package meshexplorer.v1, syntax proto3)
|
||||
/* eslint-disable */
|
||||
|
||||
import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
|
||||
import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
|
||||
import type { Message } from "@bufbuild/protobuf";
|
||||
|
||||
/**
|
||||
* Describes the file meshexplorer/v1/stats.proto.
|
||||
*/
|
||||
export const file_meshexplorer_v1_stats: GenFile = /*@__PURE__*/
|
||||
fileDesc("ChttZXNoZXhwbG9yZXIvdjEvc3RhdHMucHJvdG8SD21lc2hleHBsb3Jlci52MSIuCgxTdGF0c1JlcXVlc3QSEwoGcmVnaW9uGAEgASgJSACIAQFCCQoHX3JlZ2lvbiIsChVHZXRUb3RhbE5vZGVzUmVzcG9uc2USEwoLdG90YWxfbm9kZXMYASABKAUipgEKEE5vZGVzT3ZlclRpbWVSb3cSCwoDZGF5GAEgASgJEh8KF2N1bXVsYXRpdmVfdW5pcXVlX25vZGVzGAIgASgFEhsKE25vZGVzX3dpdGhfbG9jYXRpb24YAyABKAUSHgoWbm9kZXNfd2l0aG91dF9sb2NhdGlvbhgEIAEoBRIRCglyZXBlYXRlcnMYBSABKAUSFAoMcm9vbV9zZXJ2ZXJzGAYgASgFIksKGEdldE5vZGVzT3ZlclRpbWVSZXNwb25zZRIvCgRkYXRhGAEgAygLMiEubWVzaGV4cGxvcmVyLnYxLk5vZGVzT3ZlclRpbWVSb3ciQAoRUG9wdWxhckNoYW5uZWxSb3cSFAoMY2hhbm5lbF9oYXNoGAEgASgJEhUKDW1lc3NhZ2VfY291bnQYAiABKAUiTgoaR2V0UG9wdWxhckNoYW5uZWxzUmVzcG9uc2USMAoEZGF0YRgBIAMoCzIiLm1lc2hleHBsb3Jlci52MS5Qb3B1bGFyQ2hhbm5lbFJvdyI3ChFSZXBlYXRlclByZWZpeFJvdxIOCgZwcmVmaXgYASABKAkSEgoKbm9kZV9uYW1lcxgCIAMoCSJPChtHZXRSZXBlYXRlclByZWZpeGVzUmVzcG9uc2USMAoEZGF0YRgBIAMoCzIiLm1lc2hleHBsb3Jlci52MS5SZXBlYXRlclByZWZpeFJvdzKKAwoMU3RhdHNTZXJ2aWNlElYKDUdldFRvdGFsTm9kZXMSHS5tZXNoZXhwbG9yZXIudjEuU3RhdHNSZXF1ZXN0GiYubWVzaGV4cGxvcmVyLnYxLkdldFRvdGFsTm9kZXNSZXNwb25zZRJcChBHZXROb2Rlc092ZXJUaW1lEh0ubWVzaGV4cGxvcmVyLnYxLlN0YXRzUmVxdWVzdBopLm1lc2hleHBsb3Jlci52MS5HZXROb2Rlc092ZXJUaW1lUmVzcG9uc2USYAoSR2V0UG9wdWxhckNoYW5uZWxzEh0ubWVzaGV4cGxvcmVyLnYxLlN0YXRzUmVxdWVzdBorLm1lc2hleHBsb3Jlci52MS5HZXRQb3B1bGFyQ2hhbm5lbHNSZXNwb25zZRJiChNHZXRSZXBlYXRlclByZWZpeGVzEh0ubWVzaGV4cGxvcmVyLnYxLlN0YXRzUmVxdWVzdBosLm1lc2hleHBsb3Jlci52MS5HZXRSZXBlYXRlclByZWZpeGVzUmVzcG9uc2ViBnByb3RvMw");
|
||||
|
||||
/**
|
||||
* @generated from message meshexplorer.v1.StatsRequest
|
||||
*/
|
||||
export type StatsRequest = Message<"meshexplorer.v1.StatsRequest"> & {
|
||||
/**
|
||||
* @generated from field: optional string region = 1;
|
||||
*/
|
||||
region?: string | undefined;
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.StatsRequest.
|
||||
* Use `create(StatsRequestSchema)` to create a new message.
|
||||
*/
|
||||
export const StatsRequestSchema: GenMessage<StatsRequest> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_stats, 0);
|
||||
|
||||
/**
|
||||
* @generated from message meshexplorer.v1.GetTotalNodesResponse
|
||||
*/
|
||||
export type GetTotalNodesResponse = Message<"meshexplorer.v1.GetTotalNodesResponse"> & {
|
||||
/**
|
||||
* @generated from field: int32 total_nodes = 1;
|
||||
*/
|
||||
totalNodes: number;
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.GetTotalNodesResponse.
|
||||
* Use `create(GetTotalNodesResponseSchema)` to create a new message.
|
||||
*/
|
||||
export const GetTotalNodesResponseSchema: GenMessage<GetTotalNodesResponse> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_stats, 1);
|
||||
|
||||
/**
|
||||
* @generated from message meshexplorer.v1.NodesOverTimeRow
|
||||
*/
|
||||
export type NodesOverTimeRow = Message<"meshexplorer.v1.NodesOverTimeRow"> & {
|
||||
/**
|
||||
* @generated from field: string day = 1;
|
||||
*/
|
||||
day: string;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 cumulative_unique_nodes = 2;
|
||||
*/
|
||||
cumulativeUniqueNodes: number;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 nodes_with_location = 3;
|
||||
*/
|
||||
nodesWithLocation: number;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 nodes_without_location = 4;
|
||||
*/
|
||||
nodesWithoutLocation: number;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 repeaters = 5;
|
||||
*/
|
||||
repeaters: number;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 room_servers = 6;
|
||||
*/
|
||||
roomServers: number;
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.NodesOverTimeRow.
|
||||
* Use `create(NodesOverTimeRowSchema)` to create a new message.
|
||||
*/
|
||||
export const NodesOverTimeRowSchema: GenMessage<NodesOverTimeRow> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_stats, 2);
|
||||
|
||||
/**
|
||||
* @generated from message meshexplorer.v1.GetNodesOverTimeResponse
|
||||
*/
|
||||
export type GetNodesOverTimeResponse = Message<"meshexplorer.v1.GetNodesOverTimeResponse"> & {
|
||||
/**
|
||||
* @generated from field: repeated meshexplorer.v1.NodesOverTimeRow data = 1;
|
||||
*/
|
||||
data: NodesOverTimeRow[];
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.GetNodesOverTimeResponse.
|
||||
* Use `create(GetNodesOverTimeResponseSchema)` to create a new message.
|
||||
*/
|
||||
export const GetNodesOverTimeResponseSchema: GenMessage<GetNodesOverTimeResponse> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_stats, 3);
|
||||
|
||||
/**
|
||||
* @generated from message meshexplorer.v1.PopularChannelRow
|
||||
*/
|
||||
export type PopularChannelRow = Message<"meshexplorer.v1.PopularChannelRow"> & {
|
||||
/**
|
||||
* @generated from field: string channel_hash = 1;
|
||||
*/
|
||||
channelHash: string;
|
||||
|
||||
/**
|
||||
* @generated from field: int32 message_count = 2;
|
||||
*/
|
||||
messageCount: number;
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.PopularChannelRow.
|
||||
* Use `create(PopularChannelRowSchema)` to create a new message.
|
||||
*/
|
||||
export const PopularChannelRowSchema: GenMessage<PopularChannelRow> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_stats, 4);
|
||||
|
||||
/**
|
||||
* @generated from message meshexplorer.v1.GetPopularChannelsResponse
|
||||
*/
|
||||
export type GetPopularChannelsResponse = Message<"meshexplorer.v1.GetPopularChannelsResponse"> & {
|
||||
/**
|
||||
* @generated from field: repeated meshexplorer.v1.PopularChannelRow data = 1;
|
||||
*/
|
||||
data: PopularChannelRow[];
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.GetPopularChannelsResponse.
|
||||
* Use `create(GetPopularChannelsResponseSchema)` to create a new message.
|
||||
*/
|
||||
export const GetPopularChannelsResponseSchema: GenMessage<GetPopularChannelsResponse> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_stats, 5);
|
||||
|
||||
/**
|
||||
* @generated from message meshexplorer.v1.RepeaterPrefixRow
|
||||
*/
|
||||
export type RepeaterPrefixRow = Message<"meshexplorer.v1.RepeaterPrefixRow"> & {
|
||||
/**
|
||||
* @generated from field: string prefix = 1;
|
||||
*/
|
||||
prefix: string;
|
||||
|
||||
/**
|
||||
* @generated from field: repeated string node_names = 2;
|
||||
*/
|
||||
nodeNames: string[];
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.RepeaterPrefixRow.
|
||||
* Use `create(RepeaterPrefixRowSchema)` to create a new message.
|
||||
*/
|
||||
export const RepeaterPrefixRowSchema: GenMessage<RepeaterPrefixRow> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_stats, 6);
|
||||
|
||||
/**
|
||||
* @generated from message meshexplorer.v1.GetRepeaterPrefixesResponse
|
||||
*/
|
||||
export type GetRepeaterPrefixesResponse = Message<"meshexplorer.v1.GetRepeaterPrefixesResponse"> & {
|
||||
/**
|
||||
* @generated from field: repeated meshexplorer.v1.RepeaterPrefixRow data = 1;
|
||||
*/
|
||||
data: RepeaterPrefixRow[];
|
||||
};
|
||||
|
||||
/**
|
||||
* Describes the message meshexplorer.v1.GetRepeaterPrefixesResponse.
|
||||
* Use `create(GetRepeaterPrefixesResponseSchema)` to create a new message.
|
||||
*/
|
||||
export const GetRepeaterPrefixesResponseSchema: GenMessage<GetRepeaterPrefixesResponse> = /*@__PURE__*/
|
||||
messageDesc(file_meshexplorer_v1_stats, 7);
|
||||
|
||||
/**
|
||||
* @generated from service meshexplorer.v1.StatsService
|
||||
*/
|
||||
export const StatsService: GenService<{
|
||||
/**
|
||||
* @generated from rpc meshexplorer.v1.StatsService.GetTotalNodes
|
||||
*/
|
||||
getTotalNodes: {
|
||||
methodKind: "unary";
|
||||
input: typeof StatsRequestSchema;
|
||||
output: typeof GetTotalNodesResponseSchema;
|
||||
},
|
||||
/**
|
||||
* @generated from rpc meshexplorer.v1.StatsService.GetNodesOverTime
|
||||
*/
|
||||
getNodesOverTime: {
|
||||
methodKind: "unary";
|
||||
input: typeof StatsRequestSchema;
|
||||
output: typeof GetNodesOverTimeResponseSchema;
|
||||
},
|
||||
/**
|
||||
* @generated from rpc meshexplorer.v1.StatsService.GetPopularChannels
|
||||
*/
|
||||
getPopularChannels: {
|
||||
methodKind: "unary";
|
||||
input: typeof StatsRequestSchema;
|
||||
output: typeof GetPopularChannelsResponseSchema;
|
||||
},
|
||||
/**
|
||||
* @generated from rpc meshexplorer.v1.StatsService.GetRepeaterPrefixes
|
||||
*/
|
||||
getRepeaterPrefixes: {
|
||||
methodKind: "unary";
|
||||
input: typeof StatsRequestSchema;
|
||||
output: typeof GetRepeaterPrefixesResponseSchema;
|
||||
},
|
||||
}> = /*@__PURE__*/
|
||||
serviceDesc(file_meshexplorer_v1_stats, 0);
|
||||
|
||||
@@ -8,6 +8,7 @@ import {
|
||||
createChatMessagesStreamerConfig,
|
||||
} from "@/lib/clickhouse/streaming";
|
||||
import { decryptMeshcoreGroupMessage } from "@/lib/meshcore";
|
||||
import { num } from "./mappers";
|
||||
|
||||
const PUBLIC_MESHCORE_KEY = "izOH6cXN6mrJ5e26oRXNcg==";
|
||||
|
||||
@@ -40,7 +41,7 @@ function toChatMessage(
|
||||
channelHash: row.channel_hash,
|
||||
mac: row.mac,
|
||||
encryptedMessage: row.encrypted_message,
|
||||
messageCount: row.message_count,
|
||||
messageCount: num(row.message_count),
|
||||
originPathInfo: (row.origin_path_info ?? []).map(
|
||||
([origin, originPubkey, path, broker, topic]) => ({
|
||||
origin,
|
||||
|
||||
@@ -17,21 +17,28 @@ export interface NeighborEdgeRow {
|
||||
target_has_location: number;
|
||||
}
|
||||
|
||||
// ClickHouse serializes UInt64/Int64 and aggregate columns (count(), etc.) as
|
||||
// JSON *strings* in JSONEachRow. Coerce every integer field we feed into an
|
||||
// int32 proto field, or protobuf-es rejects the string at encode time.
|
||||
export function num(v: unknown): number {
|
||||
return Number(v ?? 0);
|
||||
}
|
||||
|
||||
/** Maps a ClickHouse neighbor-edge row to the NeighborEdge proto init shape. */
|
||||
export function toNeighborEdge(row: NeighborEdgeRow): MessageInitShape<typeof NeighborEdgeSchema> {
|
||||
return {
|
||||
sourceNode: row.source_node,
|
||||
targetNode: row.target_node,
|
||||
connectionType: row.connection_type,
|
||||
packetCount: row.packet_count,
|
||||
packetCount: num(row.packet_count),
|
||||
sourceName: row.source_name,
|
||||
sourceLatitude: row.source_latitude,
|
||||
sourceLongitude: row.source_longitude,
|
||||
sourceHasLocation: row.source_has_location,
|
||||
sourceHasLocation: num(row.source_has_location),
|
||||
targetName: row.target_name,
|
||||
targetLatitude: row.target_latitude,
|
||||
targetLongitude: row.target_longitude,
|
||||
targetHasLocation: row.target_has_location,
|
||||
targetHasLocation: num(row.target_has_location),
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ import {
|
||||
getMeshcoreNodeNeighbors,
|
||||
searchMeshcoreNodes,
|
||||
} from "@/lib/clickhouse/actions";
|
||||
import { num } from "./mappers";
|
||||
|
||||
interface SearchResultRow {
|
||||
public_key: string;
|
||||
@@ -30,11 +31,11 @@ function toSearchResult(row: SearchResultRow): MessageInitShape<typeof SearchRes
|
||||
nodeName: row.node_name,
|
||||
latitude: row.latitude ?? undefined,
|
||||
longitude: row.longitude ?? undefined,
|
||||
hasLocation: row.has_location,
|
||||
isRepeater: row.is_repeater,
|
||||
isChatNode: row.is_chat_node,
|
||||
isRoomServer: row.is_room_server,
|
||||
hasName: row.has_name,
|
||||
hasLocation: num(row.has_location),
|
||||
isRepeater: num(row.is_repeater),
|
||||
isChatNode: num(row.is_chat_node),
|
||||
isRoomServer: num(row.is_room_server),
|
||||
hasName: num(row.has_name),
|
||||
firstHeard: row.first_heard,
|
||||
lastSeen: row.last_seen,
|
||||
broker: row.broker,
|
||||
@@ -54,7 +55,7 @@ export const nodeServiceImpl: ServiceImpl<typeof NodeService> = {
|
||||
const node = nodeInfo.node;
|
||||
// recentAdverts / locationHistory come back as untyped JSON rows.
|
||||
const adverts = nodeInfo.recentAdverts as Array<{
|
||||
adv_timestamp: string;
|
||||
adv_timestamp: number;
|
||||
origin_path_pubkey_tuples: Array<[string, string, string]>;
|
||||
advert_count: number;
|
||||
earliest_timestamp: string;
|
||||
@@ -79,30 +80,30 @@ export const nodeServiceImpl: ServiceImpl<typeof NodeService> = {
|
||||
nodeName: node.node_name,
|
||||
latitude: node.latitude ?? undefined,
|
||||
longitude: node.longitude ?? undefined,
|
||||
hasLocation: node.has_location,
|
||||
isRepeater: node.is_repeater,
|
||||
isChatNode: node.is_chat_node,
|
||||
isRoomServer: node.is_room_server,
|
||||
hasName: node.has_name,
|
||||
hasLocation: num(node.has_location),
|
||||
isRepeater: num(node.is_repeater),
|
||||
isChatNode: num(node.is_chat_node),
|
||||
isRoomServer: num(node.is_room_server),
|
||||
hasName: num(node.has_name),
|
||||
broker: node.broker ?? undefined,
|
||||
topic: node.topic ?? undefined,
|
||||
firstSeen: node.first_seen,
|
||||
lastSeen: node.last_seen,
|
||||
},
|
||||
recentAdverts: adverts.map((a) => ({
|
||||
advTimestamp: a.adv_timestamp,
|
||||
advTimestamp: num(a.adv_timestamp),
|
||||
originPathPubkeyTuples: (a.origin_path_pubkey_tuples ?? []).map(
|
||||
([origin, path, originPubkey]) => ({ origin, path, originPubkey }),
|
||||
),
|
||||
advertCount: a.advert_count,
|
||||
advertCount: num(a.advert_count),
|
||||
earliestTimestamp: a.earliest_timestamp,
|
||||
latestTimestamp: a.latest_timestamp,
|
||||
latitude: a.latitude ?? undefined,
|
||||
longitude: a.longitude ?? undefined,
|
||||
isRepeater: a.is_repeater,
|
||||
isChatNode: a.is_chat_node,
|
||||
isRoomServer: a.is_room_server,
|
||||
hasLocation: a.has_location,
|
||||
isRepeater: num(a.is_repeater),
|
||||
isChatNode: num(a.is_chat_node),
|
||||
isRoomServer: num(a.is_room_server),
|
||||
hasLocation: num(a.has_location),
|
||||
packetHash: a.packet_hash,
|
||||
})),
|
||||
locationHistory: locationHistory.map((l) => ({
|
||||
@@ -135,11 +136,11 @@ export const nodeServiceImpl: ServiceImpl<typeof NodeService> = {
|
||||
nodeName: n.node_name,
|
||||
latitude: n.latitude ?? undefined,
|
||||
longitude: n.longitude ?? undefined,
|
||||
hasLocation: n.has_location,
|
||||
isRepeater: n.is_repeater,
|
||||
isChatNode: n.is_chat_node,
|
||||
isRoomServer: n.is_room_server,
|
||||
hasName: n.has_name,
|
||||
hasLocation: num(n.has_location),
|
||||
isRepeater: num(n.is_repeater),
|
||||
isChatNode: num(n.is_chat_node),
|
||||
isRoomServer: num(n.is_room_server),
|
||||
hasName: num(n.has_name),
|
||||
directions: n.directions,
|
||||
})),
|
||||
};
|
||||
|
||||
@@ -4,6 +4,7 @@ import {
|
||||
createClickHouseStreamer,
|
||||
createMeshcorePacketsStreamerConfig,
|
||||
} from "@/lib/clickhouse/streaming";
|
||||
import { num } from "./mappers";
|
||||
|
||||
interface PacketRow {
|
||||
ingest_timestamp: string;
|
||||
@@ -47,12 +48,12 @@ export const packetsServiceImpl: ServiceImpl<typeof PacketsService> = {
|
||||
broker: row.broker,
|
||||
topic: row.topic,
|
||||
packet: row.packet,
|
||||
pathLen: row.path_len,
|
||||
pathLen: num(row.path_len),
|
||||
path: row.path,
|
||||
routeType: row.route_type,
|
||||
payloadType: row.payload_type,
|
||||
payloadVersion: row.payload_version,
|
||||
header: row.header,
|
||||
routeType: num(row.route_type),
|
||||
payloadType: num(row.payload_type),
|
||||
payloadVersion: num(row.payload_version),
|
||||
header: num(row.header),
|
||||
originPubkey: row.origin_pubkey,
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user