From 0228b1bbc0becf0eeaa788f84845790238492423 Mon Sep 17 00:00:00 2001 From: Sacha Froment Date: Tue, 29 Oct 2024 03:15:22 +0100 Subject: [PATCH 01/19] fix: double vertex only declare once (#205) Signed-off-by: Sacha Froment Co-authored-by: droak --- buf.gen.yaml | 6 +- buf.yaml | 14 +- package.json | 4 +- packages/network/src/index.ts | 2 +- packages/network/src/node.ts | 2 +- .../src/proto/google/protobuf}/struct_pb.ts | 64 ++- packages/network/src/proto/messages.proto | 47 --- .../src/proto/topology/network/messages.proto | 38 ++ .../topology/network/messages_grpc_pb.js | 1 + .../{ => topology/network}/messages_pb.ts | 250 ++---------- .../src/proto/topology/object}/object_pb.ts | 51 ++- packages/node/src/handlers.ts | 4 +- packages/object/src/hashgraph/index.ts | 5 +- packages/object/src/index.ts | 4 +- .../src/proto/google/protobuf}/struct_pb.ts | 64 ++- .../proto/{ => topology/object}/object.proto | 1 + .../proto/topology/object/object_grpc_pb.js | 1 + .../src/proto/topology/object/object_pb.ts | 377 ++++++++++++++++++ 18 files changed, 609 insertions(+), 326 deletions(-) rename packages/{object/src/proto => network/src/proto/google/protobuf}/struct_pb.ts (92%) delete mode 100644 packages/network/src/proto/messages.proto create mode 100644 packages/network/src/proto/topology/network/messages.proto create mode 100644 packages/network/src/proto/topology/network/messages_grpc_pb.js rename packages/network/src/proto/{ => topology/network}/messages_pb.ts (69%) rename packages/{object/src/proto => network/src/proto/topology/object}/object_pb.ts (91%) rename packages/{network/src/proto => object/src/proto/google/protobuf}/struct_pb.ts (92%) rename packages/object/src/proto/{ => topology/object}/object.proto (99%) create mode 100644 packages/object/src/proto/topology/object/object_grpc_pb.js create mode 100644 packages/object/src/proto/topology/object/object_pb.ts diff --git a/buf.gen.yaml b/buf.gen.yaml index 9d37ce63..ef940fe0 100644 --- a/buf.gen.yaml +++ b/buf.gen.yaml @@ -3,18 +3,18 @@ managed: enabled: true plugins: - local: ./node_modules/ts-proto/protoc-gen-ts_proto - out: ./packages + out: . opt: - esModuleInterop=true - fileSuffix=_pb - ts_proto_opt=outputServices=grpc-js - remote: buf.build/grpc/node - out: ./packages + out: . opt: - ts_proto_opt=esModuleInterop=true inputs: - directory: ./packages exclude_paths: - - packages/node/node_modules + - packages/node - packages/network/node_modules - packages/object/node_modules diff --git a/buf.yaml b/buf.yaml index 2b850d0c..3b4484ca 100644 --- a/buf.yaml +++ b/buf.yaml @@ -1,11 +1,7 @@ version: v2 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 + - path: packages/object/src/proto + name: buf.build/topology/object + + - path: packages/network/src/proto + name: buf.build/topology/network diff --git a/package.json b/package.json index 6bac12b6..75d1f01f 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,9 @@ "clean": "pnpm --filter '@topology-foundation/*' clean", "docs": "typedoc", "postinstall": "pnpm --filter '@topology-foundation/*' build", - "proto-gen": "buf generate", + "proto-gen": "pnpm proto-gen:object && pnpm proto-gen:network", + "proto-gen:object": "buf generate packages/object/src/proto -o packages/object/src/proto", + "proto-gen:network": "buf generate packages/network/src/proto -o packages/network/src/proto", "release": "release-it", "test": "vitest" }, diff --git a/packages/network/src/index.ts b/packages/network/src/index.ts index c550a43d..961baf83 100644 --- a/packages/network/src/index.ts +++ b/packages/network/src/index.ts @@ -1,2 +1,2 @@ export * from "./node.js"; -export * as NetworkPb from "./proto/messages_pb.js"; +export * as NetworkPb from "./proto/topology/network/messages_pb.js"; diff --git a/packages/network/src/node.ts b/packages/network/src/node.ts index 3ac8ead7..998d9345 100644 --- a/packages/network/src/node.ts +++ b/packages/network/src/node.ts @@ -29,7 +29,7 @@ import { webTransport } from "@libp2p/webtransport"; import { multiaddr } from "@multiformats/multiaddr"; import { type Libp2p, createLibp2p } from "libp2p"; import { fromString as uint8ArrayFromString } from "uint8arrays/from-string"; -import { Message } from "./proto/messages_pb.js"; +import { Message } from "./proto/topology/network/messages_pb.js"; import { uint8ArrayToStream } from "./stream.js"; export * from "./stream.js"; diff --git a/packages/object/src/proto/struct_pb.ts b/packages/network/src/proto/google/protobuf/struct_pb.ts similarity index 92% rename from packages/object/src/proto/struct_pb.ts rename to packages/network/src/proto/google/protobuf/struct_pb.ts index d03c7af8..a9703110 100644 --- a/packages/object/src/proto/struct_pb.ts +++ b/packages/network/src/proto/google/protobuf/struct_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.5 // protoc unknown // source: google/protobuf/struct.proto @@ -110,7 +110,7 @@ function createBaseStruct(): Struct { return { fields: {} }; } -export const Struct = { +export const Struct: MessageFns & StructWrapperFns = { encode(message: Struct, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { Object.entries(message.fields).forEach(([key, value]) => { if (value !== undefined) { @@ -127,7 +127,7 @@ export const Struct = { while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { - case 1: + case 1: { if (tag !== 10) { break; } @@ -137,6 +137,7 @@ export const Struct = { message.fields[entry1.key] = entry1.value; } continue; + } } if ((tag & 7) === 4 || tag === 0) { break; @@ -214,7 +215,7 @@ function createBaseStruct_FieldsEntry(): Struct_FieldsEntry { return { key: "", value: undefined }; } -export const Struct_FieldsEntry = { +export const Struct_FieldsEntry: MessageFns = { encode(message: Struct_FieldsEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.key !== "") { writer.uint32(10).string(message.key); @@ -232,20 +233,22 @@ export const Struct_FieldsEntry = { while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { - case 1: + case 1: { if (tag !== 10) { break; } message.key = reader.string(); continue; - case 2: + } + case 2: { if (tag !== 18) { break; } message.value = Value.unwrap(Value.decode(reader, reader.uint32())); continue; + } } if ((tag & 7) === 4 || tag === 0) { break; @@ -295,7 +298,7 @@ function createBaseValue(): Value { }; } -export const Value = { +export const Value: MessageFns & AnyValueWrapperFns = { encode(message: Value, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.nullValue !== undefined) { writer.uint32(8).int32(message.nullValue); @@ -325,48 +328,54 @@ export const Value = { while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { - case 1: + case 1: { if (tag !== 8) { break; } message.nullValue = reader.int32() as any; continue; - case 2: + } + case 2: { if (tag !== 17) { break; } message.numberValue = reader.double(); continue; - case 3: + } + case 3: { if (tag !== 26) { break; } message.stringValue = reader.string(); continue; - case 4: + } + case 4: { if (tag !== 32) { break; } message.boolValue = reader.bool(); continue; - case 5: + } + case 5: { if (tag !== 42) { break; } message.structValue = Struct.unwrap(Struct.decode(reader, reader.uint32())); continue; - case 6: + } + case 6: { if (tag !== 50) { break; } message.listValue = ListValue.unwrap(ListValue.decode(reader, reader.uint32())); continue; + } } if ((tag & 7) === 4 || tag === 0) { break; @@ -466,7 +475,7 @@ function createBaseListValue(): ListValue { return { values: [] }; } -export const ListValue = { +export const ListValue: MessageFns & ListValueWrapperFns = { encode(message: ListValue, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { for (const v of message.values) { Value.encode(Value.wrap(v!), writer.uint32(10).fork()).join(); @@ -481,13 +490,14 @@ export const ListValue = { while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { - case 1: + case 1: { if (tag !== 10) { break; } message.values.push(Value.unwrap(Value.decode(reader, reader.uint32()))); continue; + } } if ((tag & 7) === 4 || tag === 0) { break; @@ -552,3 +562,27 @@ function isObject(value: any): boolean { 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; +} + +export interface StructWrapperFns { + wrap(object: { [key: string]: any } | undefined): Struct; + unwrap(message: Struct): { [key: string]: any }; +} + +export interface AnyValueWrapperFns { + wrap(value: any): Value; + unwrap(message: any): string | number | boolean | Object | null | Array | undefined; +} + +export interface ListValueWrapperFns { + wrap(array: Array | undefined): ListValue; + unwrap(message: ListValue): Array; +} diff --git a/packages/network/src/proto/messages.proto b/packages/network/src/proto/messages.proto deleted file mode 100644 index 23cb9d74..00000000 --- a/packages/network/src/proto/messages.proto +++ /dev/null @@ -1,47 +0,0 @@ -syntax = "proto3"; -package topology.network; -import "google/protobuf/struct.proto"; - -// Supposed to be the RIBLT stuff -message Vertex { - message Operation { - string type = 1; - google.protobuf.Value value = 2; - } - string hash = 1; - string nodeId = 2; - Operation operation = 3; - repeated string dependencies = 4; -}; - -message Message { - enum MessageType { - UPDATE = 0; - SYNC = 1; - SYNC_ACCEPT = 2; - SYNC_REJECT = 3; - CUSTOM = 4; - } - - string sender = 1; - MessageType type = 2; - bytes data = 3; -} - -message Update { - string objectId = 1; - repeated Vertex vertices = 2; -} - -message Sync { - string objectId = 1; - repeated string vertex_hashes = 2; -} - -message SyncAccept { - string objectId = 1; - repeated Vertex requested = 2; - repeated string requesting = 3; -} - -message SyncReject { } diff --git a/packages/network/src/proto/topology/network/messages.proto b/packages/network/src/proto/topology/network/messages.proto new file mode 100644 index 00000000..521b436a --- /dev/null +++ b/packages/network/src/proto/topology/network/messages.proto @@ -0,0 +1,38 @@ +syntax = "proto3"; +package topology.network; + +import "google/protobuf/struct.proto"; +import "topology/object/object.proto"; + + +message Message { + enum MessageType { + UPDATE = 0; + SYNC = 1; + SYNC_ACCEPT = 2; + SYNC_REJECT = 3; + CUSTOM = 4; + } + + string sender = 1; + MessageType type = 2; + bytes data = 3; +} + +message Update { + string objectId = 1; + repeated topology.object.Vertex vertices = 2; +} + +message Sync { + string objectId = 1; + repeated string vertex_hashes = 2; +} + +message SyncAccept { + string objectId = 1; + repeated topology.object.Vertex requested = 2; + repeated string requesting = 3; +} + +message SyncReject {} diff --git a/packages/network/src/proto/topology/network/messages_grpc_pb.js b/packages/network/src/proto/topology/network/messages_grpc_pb.js new file mode 100644 index 00000000..97b3a246 --- /dev/null +++ b/packages/network/src/proto/topology/network/messages_grpc_pb.js @@ -0,0 +1 @@ +// GENERATED CODE -- NO SERVICES IN PROTO \ No newline at end of file diff --git a/packages/network/src/proto/messages_pb.ts b/packages/network/src/proto/topology/network/messages_pb.ts similarity index 69% rename from packages/network/src/proto/messages_pb.ts rename to packages/network/src/proto/topology/network/messages_pb.ts index 086d3358..1be595de 100644 --- a/packages/network/src/proto/messages_pb.ts +++ b/packages/network/src/proto/topology/network/messages_pb.ts @@ -1,28 +1,15 @@ // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v2.0.3 +// protoc-gen-ts_proto v2.2.5 // protoc unknown -// source: network/src/proto/messages.proto +// source: topology/network/messages.proto /* eslint-disable */ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; -import { Value } from "./struct_pb.js"; +import { Vertex } from "../object/object_pb.js"; export const protobufPackage = "topology.network"; -/** Supposed to be the RIBLT stuff */ -export interface Vertex { - hash: string; - nodeId: string; - operation: Vertex_Operation | undefined; - dependencies: string[]; -} - -export interface Vertex_Operation { - type: string; - value: any | undefined; -} - export interface Message { sender: string; type: Message_MessageType; @@ -99,193 +86,11 @@ export interface SyncAccept { export interface SyncReject { } -function createBaseVertex(): Vertex { - return { hash: "", nodeId: "", operation: undefined, dependencies: [] }; -} - -export const Vertex = { - encode(message: Vertex, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - if (message.hash !== "") { - writer.uint32(10).string(message.hash); - } - if (message.nodeId !== "") { - writer.uint32(18).string(message.nodeId); - } - if (message.operation !== undefined) { - Vertex_Operation.encode(message.operation, writer.uint32(26).fork()).join(); - } - for (const v of message.dependencies) { - writer.uint32(34).string(v!); - } - return writer; - }, - - decode(input: BinaryReader | Uint8Array, length?: number): Vertex { - const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseVertex(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.hash = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.nodeId = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.operation = Vertex_Operation.decode(reader, reader.uint32()); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.dependencies.push(reader.string()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skip(tag & 7); - } - return message; - }, - - fromJSON(object: any): Vertex { - return { - hash: isSet(object.hash) ? globalThis.String(object.hash) : "", - nodeId: isSet(object.nodeId) ? globalThis.String(object.nodeId) : "", - operation: isSet(object.operation) ? Vertex_Operation.fromJSON(object.operation) : undefined, - dependencies: globalThis.Array.isArray(object?.dependencies) - ? object.dependencies.map((e: any) => globalThis.String(e)) - : [], - }; - }, - - toJSON(message: Vertex): unknown { - const obj: any = {}; - if (message.hash !== "") { - obj.hash = message.hash; - } - if (message.nodeId !== "") { - obj.nodeId = message.nodeId; - } - if (message.operation !== undefined) { - obj.operation = Vertex_Operation.toJSON(message.operation); - } - if (message.dependencies?.length) { - obj.dependencies = message.dependencies; - } - return obj; - }, - - create, I>>(base?: I): Vertex { - return Vertex.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): Vertex { - const message = createBaseVertex(); - message.hash = object.hash ?? ""; - message.nodeId = object.nodeId ?? ""; - message.operation = (object.operation !== undefined && object.operation !== null) - ? Vertex_Operation.fromPartial(object.operation) - : undefined; - message.dependencies = object.dependencies?.map((e) => e) || []; - return message; - }, -}; - -function createBaseVertex_Operation(): Vertex_Operation { - return { type: "", value: undefined }; -} - -export const Vertex_Operation = { - encode(message: Vertex_Operation, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - if (message.type !== "") { - writer.uint32(10).string(message.type); - } - if (message.value !== undefined) { - Value.encode(Value.wrap(message.value), writer.uint32(18).fork()).join(); - } - return writer; - }, - - decode(input: BinaryReader | Uint8Array, length?: number): Vertex_Operation { - const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseVertex_Operation(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.type = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.value = Value.unwrap(Value.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skip(tag & 7); - } - return message; - }, - - fromJSON(object: any): Vertex_Operation { - return { - type: isSet(object.type) ? globalThis.String(object.type) : "", - value: isSet(object?.value) ? object.value : undefined, - }; - }, - - toJSON(message: Vertex_Operation): unknown { - const obj: any = {}; - if (message.type !== "") { - obj.type = message.type; - } - if (message.value !== undefined) { - obj.value = message.value; - } - return obj; - }, - - create, I>>(base?: I): Vertex_Operation { - return Vertex_Operation.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): Vertex_Operation { - const message = createBaseVertex_Operation(); - message.type = object.type ?? ""; - message.value = object.value ?? undefined; - return message; - }, -}; - 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); @@ -306,27 +111,30 @@ export const Message = { while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { - case 1: + case 1: { if (tag !== 10) { break; } message.sender = reader.string(); continue; - case 2: + } + case 2: { if (tag !== 16) { break; } message.type = reader.int32() as any; continue; - case 3: + } + case 3: { if (tag !== 26) { break; } message.data = reader.bytes(); continue; + } } if ((tag & 7) === 4 || tag === 0) { break; @@ -374,7 +182,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); @@ -392,20 +200,22 @@ export const Update = { while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { - case 1: + case 1: { if (tag !== 10) { break; } message.objectId = reader.string(); continue; - case 2: + } + case 2: { if (tag !== 18) { break; } message.vertices.push(Vertex.decode(reader, reader.uint32())); continue; + } } if ((tag & 7) === 4 || tag === 0) { break; @@ -448,7 +258,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); @@ -466,20 +276,22 @@ export const Sync = { while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { - case 1: + case 1: { if (tag !== 10) { break; } message.objectId = reader.string(); continue; - case 2: + } + case 2: { if (tag !== 18) { break; } message.vertexHashes.push(reader.string()); continue; + } } if ((tag & 7) === 4 || tag === 0) { break; @@ -524,7 +336,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); @@ -545,27 +357,30 @@ export const SyncAccept = { while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { - case 1: + case 1: { if (tag !== 10) { break; } message.objectId = reader.string(); continue; - case 2: + } + case 2: { if (tag !== 18) { break; } message.requested.push(Vertex.decode(reader, reader.uint32())); continue; - case 3: + } + case 3: { if (tag !== 26) { break; } message.requesting.push(reader.string()); continue; + } } if ((tag & 7) === 4 || tag === 0) { break; @@ -617,7 +432,7 @@ function createBaseSyncReject(): SyncReject { return {}; } -export const SyncReject = { +export const SyncReject: MessageFns = { encode(_: SyncReject, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { return writer; }, @@ -696,3 +511,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/object/src/proto/object_pb.ts b/packages/network/src/proto/topology/object/object_pb.ts similarity index 91% rename from packages/object/src/proto/object_pb.ts rename to packages/network/src/proto/topology/object/object_pb.ts index 0166d10c..e73d21e0 100644 --- a/packages/object/src/proto/object_pb.ts +++ b/packages/network/src/proto/topology/object/object_pb.ts @@ -1,12 +1,12 @@ // Code generated by protoc-gen-ts_proto. DO NOT EDIT. // versions: -// protoc-gen-ts_proto v2.0.3 +// protoc-gen-ts_proto v2.2.5 // protoc unknown -// source: blueprints/node_modules/@topology-foundation/object/src/proto/object.proto +// source: topology/object/object.proto /* eslint-disable */ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; -import { Value } from "./struct_pb.js"; +import { Value } from "../../google/protobuf/struct_pb.js"; export const protobufPackage = "topology.object"; @@ -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); @@ -58,34 +58,38 @@ export const Vertex = { while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { - case 1: + case 1: { if (tag !== 10) { break; } message.hash = reader.string(); continue; - case 2: + } + case 2: { if (tag !== 18) { break; } message.nodeId = reader.string(); continue; - case 3: + } + case 3: { if (tag !== 26) { break; } message.operation = Vertex_Operation.decode(reader, reader.uint32()); continue; - case 4: + } + case 4: { if (tag !== 34) { break; } message.dependencies.push(reader.string()); continue; + } } if ((tag & 7) === 4 || tag === 0) { break; @@ -142,7 +146,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); @@ -160,20 +164,22 @@ export const Vertex_Operation = { while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { - case 1: + case 1: { if (tag !== 10) { break; } message.type = reader.string(); continue; - case 2: + } + case 2: { if (tag !== 18) { break; } message.value = Value.unwrap(Value.decode(reader, reader.uint32())); continue; + } } if ((tag & 7) === 4 || tag === 0) { break; @@ -216,7 +222,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); @@ -240,34 +246,38 @@ export const TopologyObjectBase = { while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { - case 1: + case 1: { if (tag !== 10) { break; } message.id = reader.string(); continue; - case 2: + } + case 2: { if (tag !== 18) { break; } message.abi = reader.string(); continue; - case 3: + } + case 3: { if (tag !== 26) { break; } message.bytecode = reader.bytes(); continue; - case 4: + } + case 4: { if (tag !== 34) { break; } message.vertices.push(Vertex.decode(reader, reader.uint32())); continue; + } } if ((tag & 7) === 4 || tag === 0) { break; @@ -356,3 +366,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/src/handlers.ts b/packages/node/src/handlers.ts index afdd3f80..560d87fb 100644 --- a/packages/node/src/handlers.ts +++ b/packages/node/src/handlers.ts @@ -115,7 +115,7 @@ function syncHandler( return; } - const requested: Set = new Set(object.vertices); + const requested: Set = new Set(object.vertices); const requesting: string[] = []; for (const h of syncMessage.vertexHashes) { const vertex = object.vertices.find((v) => v.hash === h); @@ -178,7 +178,7 @@ function syncAcceptHandler( } // send missing vertices - const requested: NetworkPb.Vertex[] = []; + const requested: ObjectPb.Vertex[] = []; for (const h of syncAcceptMessage.requesting) { const vertex = object.vertices.find((v) => v.hash === h); if (vertex) { diff --git a/packages/object/src/hashgraph/index.ts b/packages/object/src/hashgraph/index.ts index 760b0064..8c49534b 100644 --- a/packages/object/src/hashgraph/index.ts +++ b/packages/object/src/hashgraph/index.ts @@ -1,7 +1,10 @@ import * as crypto from "node:crypto"; import { linearizeMultiple } from "../linearize/multipleSemantics.js"; import { linearizePair } from "../linearize/pairSemantics.js"; -import { Vertex_Operation as Operation, Vertex } from "../proto/object_pb.js"; +import { + Vertex_Operation as Operation, + Vertex, +} from "../proto/topology/object/object_pb.js"; import { BitSet } from "./bitset.js"; // Reexporting the Vertex and Operation types from the protobuf file diff --git a/packages/object/src/index.ts b/packages/object/src/index.ts index 91de19fd..baf19fd8 100644 --- a/packages/object/src/index.ts +++ b/packages/object/src/index.ts @@ -6,9 +6,9 @@ import { type SemanticsType, type Vertex, } from "./hashgraph/index.js"; -import * as ObjectPb from "./proto/object_pb.js"; +import * as ObjectPb from "./proto/topology/object/object_pb.js"; -export * as ObjectPb from "./proto/object_pb.js"; +export * as ObjectPb from "./proto/topology/object/object_pb.js"; export * from "./hashgraph/index.js"; export interface CRO { diff --git a/packages/network/src/proto/struct_pb.ts b/packages/object/src/proto/google/protobuf/struct_pb.ts similarity index 92% rename from packages/network/src/proto/struct_pb.ts rename to packages/object/src/proto/google/protobuf/struct_pb.ts index d03c7af8..a9703110 100644 --- a/packages/network/src/proto/struct_pb.ts +++ b/packages/object/src/proto/google/protobuf/struct_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.5 // protoc unknown // source: google/protobuf/struct.proto @@ -110,7 +110,7 @@ function createBaseStruct(): Struct { return { fields: {} }; } -export const Struct = { +export const Struct: MessageFns & StructWrapperFns = { encode(message: Struct, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { Object.entries(message.fields).forEach(([key, value]) => { if (value !== undefined) { @@ -127,7 +127,7 @@ export const Struct = { while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { - case 1: + case 1: { if (tag !== 10) { break; } @@ -137,6 +137,7 @@ export const Struct = { message.fields[entry1.key] = entry1.value; } continue; + } } if ((tag & 7) === 4 || tag === 0) { break; @@ -214,7 +215,7 @@ function createBaseStruct_FieldsEntry(): Struct_FieldsEntry { return { key: "", value: undefined }; } -export const Struct_FieldsEntry = { +export const Struct_FieldsEntry: MessageFns = { encode(message: Struct_FieldsEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.key !== "") { writer.uint32(10).string(message.key); @@ -232,20 +233,22 @@ export const Struct_FieldsEntry = { while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { - case 1: + case 1: { if (tag !== 10) { break; } message.key = reader.string(); continue; - case 2: + } + case 2: { if (tag !== 18) { break; } message.value = Value.unwrap(Value.decode(reader, reader.uint32())); continue; + } } if ((tag & 7) === 4 || tag === 0) { break; @@ -295,7 +298,7 @@ function createBaseValue(): Value { }; } -export const Value = { +export const Value: MessageFns & AnyValueWrapperFns = { encode(message: Value, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { if (message.nullValue !== undefined) { writer.uint32(8).int32(message.nullValue); @@ -325,48 +328,54 @@ export const Value = { while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { - case 1: + case 1: { if (tag !== 8) { break; } message.nullValue = reader.int32() as any; continue; - case 2: + } + case 2: { if (tag !== 17) { break; } message.numberValue = reader.double(); continue; - case 3: + } + case 3: { if (tag !== 26) { break; } message.stringValue = reader.string(); continue; - case 4: + } + case 4: { if (tag !== 32) { break; } message.boolValue = reader.bool(); continue; - case 5: + } + case 5: { if (tag !== 42) { break; } message.structValue = Struct.unwrap(Struct.decode(reader, reader.uint32())); continue; - case 6: + } + case 6: { if (tag !== 50) { break; } message.listValue = ListValue.unwrap(ListValue.decode(reader, reader.uint32())); continue; + } } if ((tag & 7) === 4 || tag === 0) { break; @@ -466,7 +475,7 @@ function createBaseListValue(): ListValue { return { values: [] }; } -export const ListValue = { +export const ListValue: MessageFns & ListValueWrapperFns = { encode(message: ListValue, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { for (const v of message.values) { Value.encode(Value.wrap(v!), writer.uint32(10).fork()).join(); @@ -481,13 +490,14 @@ export const ListValue = { while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { - case 1: + case 1: { if (tag !== 10) { break; } message.values.push(Value.unwrap(Value.decode(reader, reader.uint32()))); continue; + } } if ((tag & 7) === 4 || tag === 0) { break; @@ -552,3 +562,27 @@ function isObject(value: any): boolean { 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; +} + +export interface StructWrapperFns { + wrap(object: { [key: string]: any } | undefined): Struct; + unwrap(message: Struct): { [key: string]: any }; +} + +export interface AnyValueWrapperFns { + wrap(value: any): Value; + unwrap(message: any): string | number | boolean | Object | null | Array | undefined; +} + +export interface ListValueWrapperFns { + wrap(array: Array | undefined): ListValue; + unwrap(message: ListValue): Array; +} diff --git a/packages/object/src/proto/object.proto b/packages/object/src/proto/topology/object/object.proto similarity index 99% rename from packages/object/src/proto/object.proto rename to packages/object/src/proto/topology/object/object.proto index 6d9c1a21..0f561065 100644 --- a/packages/object/src/proto/object.proto +++ b/packages/object/src/proto/topology/object/object.proto @@ -1,4 +1,5 @@ syntax = "proto3"; + package topology.object; option go_package = "ts-topology/packages/object"; diff --git a/packages/object/src/proto/topology/object/object_grpc_pb.js b/packages/object/src/proto/topology/object/object_grpc_pb.js new file mode 100644 index 00000000..97b3a246 --- /dev/null +++ b/packages/object/src/proto/topology/object/object_grpc_pb.js @@ -0,0 +1 @@ +// GENERATED CODE -- NO SERVICES IN PROTO \ No newline at end of file diff --git a/packages/object/src/proto/topology/object/object_pb.ts b/packages/object/src/proto/topology/object/object_pb.ts new file mode 100644 index 00000000..e73d21e0 --- /dev/null +++ b/packages/object/src/proto/topology/object/object_pb.ts @@ -0,0 +1,377 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v2.2.5 +// protoc unknown +// source: topology/object/object.proto + +/* eslint-disable */ +import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; +import { Value } from "../../google/protobuf/struct_pb.js"; + +export const protobufPackage = "topology.object"; + +/** Supposed to be the RIBLT stuff */ +export interface Vertex { + hash: string; + nodeId: string; + operation: Vertex_Operation | undefined; + dependencies: string[]; +} + +export interface Vertex_Operation { + type: string; + value: any | undefined; +} + +export interface TopologyObjectBase { + id: string; + abi?: string | undefined; + bytecode?: Uint8Array | undefined; + vertices: Vertex[]; +} + +function createBaseVertex(): Vertex { + return { hash: "", nodeId: "", operation: undefined, dependencies: [] }; +} + +export const Vertex: MessageFns = { + encode(message: Vertex, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.hash !== "") { + writer.uint32(10).string(message.hash); + } + if (message.nodeId !== "") { + writer.uint32(18).string(message.nodeId); + } + if (message.operation !== undefined) { + Vertex_Operation.encode(message.operation, writer.uint32(26).fork()).join(); + } + for (const v of message.dependencies) { + writer.uint32(34).string(v!); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): Vertex { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseVertex(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + message.hash = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.nodeId = reader.string(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + + message.operation = Vertex_Operation.decode(reader, reader.uint32()); + continue; + } + case 4: { + if (tag !== 34) { + break; + } + + message.dependencies.push(reader.string()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): Vertex { + return { + hash: isSet(object.hash) ? globalThis.String(object.hash) : "", + nodeId: isSet(object.nodeId) ? globalThis.String(object.nodeId) : "", + operation: isSet(object.operation) ? Vertex_Operation.fromJSON(object.operation) : undefined, + dependencies: globalThis.Array.isArray(object?.dependencies) + ? object.dependencies.map((e: any) => globalThis.String(e)) + : [], + }; + }, + + toJSON(message: Vertex): unknown { + const obj: any = {}; + if (message.hash !== "") { + obj.hash = message.hash; + } + if (message.nodeId !== "") { + obj.nodeId = message.nodeId; + } + if (message.operation !== undefined) { + obj.operation = Vertex_Operation.toJSON(message.operation); + } + if (message.dependencies?.length) { + obj.dependencies = message.dependencies; + } + return obj; + }, + + create, I>>(base?: I): Vertex { + return Vertex.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): Vertex { + const message = createBaseVertex(); + message.hash = object.hash ?? ""; + message.nodeId = object.nodeId ?? ""; + message.operation = (object.operation !== undefined && object.operation !== null) + ? Vertex_Operation.fromPartial(object.operation) + : undefined; + message.dependencies = object.dependencies?.map((e) => e) || []; + return message; + }, +}; + +function createBaseVertex_Operation(): Vertex_Operation { + return { type: "", value: undefined }; +} + +export const Vertex_Operation: MessageFns = { + encode(message: Vertex_Operation, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.type !== "") { + writer.uint32(10).string(message.type); + } + if (message.value !== undefined) { + Value.encode(Value.wrap(message.value), writer.uint32(18).fork()).join(); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): Vertex_Operation { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseVertex_Operation(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + message.type = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.value = Value.unwrap(Value.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): Vertex_Operation { + return { + type: isSet(object.type) ? globalThis.String(object.type) : "", + value: isSet(object?.value) ? object.value : undefined, + }; + }, + + toJSON(message: Vertex_Operation): unknown { + const obj: any = {}; + if (message.type !== "") { + obj.type = message.type; + } + if (message.value !== undefined) { + obj.value = message.value; + } + return obj; + }, + + create, I>>(base?: I): Vertex_Operation { + return Vertex_Operation.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): Vertex_Operation { + const message = createBaseVertex_Operation(); + message.type = object.type ?? ""; + message.value = object.value ?? undefined; + return message; + }, +}; + +function createBaseTopologyObjectBase(): TopologyObjectBase { + return { id: "", abi: undefined, bytecode: undefined, vertices: [] }; +} + +export const TopologyObjectBase: MessageFns = { + encode(message: TopologyObjectBase, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.id !== "") { + writer.uint32(10).string(message.id); + } + if (message.abi !== undefined) { + writer.uint32(18).string(message.abi); + } + if (message.bytecode !== undefined) { + writer.uint32(26).bytes(message.bytecode); + } + for (const v of message.vertices) { + Vertex.encode(v!, writer.uint32(34).fork()).join(); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): TopologyObjectBase { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseTopologyObjectBase(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + message.id = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.abi = reader.string(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + + message.bytecode = reader.bytes(); + continue; + } + case 4: { + if (tag !== 34) { + break; + } + + message.vertices.push(Vertex.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): TopologyObjectBase { + return { + id: isSet(object.id) ? globalThis.String(object.id) : "", + abi: isSet(object.abi) ? globalThis.String(object.abi) : undefined, + bytecode: isSet(object.bytecode) ? bytesFromBase64(object.bytecode) : undefined, + vertices: globalThis.Array.isArray(object?.vertices) ? object.vertices.map((e: any) => Vertex.fromJSON(e)) : [], + }; + }, + + toJSON(message: TopologyObjectBase): unknown { + const obj: any = {}; + if (message.id !== "") { + obj.id = message.id; + } + if (message.abi !== undefined) { + obj.abi = message.abi; + } + if (message.bytecode !== undefined) { + obj.bytecode = base64FromBytes(message.bytecode); + } + if (message.vertices?.length) { + obj.vertices = message.vertices.map((e) => Vertex.toJSON(e)); + } + return obj; + }, + + create, I>>(base?: I): TopologyObjectBase { + return TopologyObjectBase.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>(object: I): TopologyObjectBase { + const message = createBaseTopologyObjectBase(); + message.id = object.id ?? ""; + message.abi = object.abi ?? undefined; + message.bytecode = object.bytecode ?? undefined; + message.vertices = object.vertices?.map((e) => Vertex.fromPartial(e)) || []; + return message; + }, +}; + +function bytesFromBase64(b64: string): Uint8Array { + if ((globalThis as any).Buffer) { + return Uint8Array.from(globalThis.Buffer.from(b64, "base64")); + } else { + const bin = globalThis.atob(b64); + const arr = new Uint8Array(bin.length); + for (let i = 0; i < bin.length; ++i) { + arr[i] = bin.charCodeAt(i); + } + return arr; + } +} + +function base64FromBytes(arr: Uint8Array): string { + if ((globalThis as any).Buffer) { + return globalThis.Buffer.from(arr).toString("base64"); + } else { + const bin: string[] = []; + arr.forEach((byte) => { + bin.push(globalThis.String.fromCharCode(byte)); + }); + return globalThis.btoa(bin.join("")); + } +} + +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; +} From a74fa9fac3fb2fcf62a4f9b139afa6a36d748aac Mon Sep 17 00:00:00 2001 From: Oak Date: Tue, 29 Oct 2024 07:21:03 +0000 Subject: [PATCH 02/19] ci: add buf registry deploy on the ci (#216) --- .github/workflows/buf-registry.yml | 14 ++++++++++++++ .github/workflows/release.yml | 8 ++++++++ 2 files changed, 22 insertions(+) create mode 100644 .github/workflows/buf-registry.yml diff --git a/.github/workflows/buf-registry.yml b/.github/workflows/buf-registry.yml new file mode 100644 index 00000000..3d5b3294 --- /dev/null +++ b/.github/workflows/buf-registry.yml @@ -0,0 +1,14 @@ +name: Publish buf files +on: + workflow_call: +permissions: + contents: read +jobs: + buf: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: bufbuild/buf-action@v1 + with: + token: ${{ secrets.BUF_TOKEN }} + tpr_comment: false diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 044cc9a5..6ba85cdf 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -11,6 +11,14 @@ jobs: packages: write uses: ./.github/workflows/npm-publish.yml + publish_buf_registry: + name: Publish buf files + permissions: + contents: read + needs: + - npm_publish + uses: ./.github/workflows/buf-registry.yml + build_docker_images: name: Build Docker Images permissions: From 12d8c3135a992c69dedf1e6d10821972745d1c97 Mon Sep 17 00:00:00 2001 From: droak Date: Tue, 29 Oct 2024 16:21:57 +0900 Subject: [PATCH 03/19] chore: release v0.2.1-0 --- examples/canvas/package.json | 10 +-- examples/chat/package.json | 10 +-- examples/grid/package.json | 8 +- examples/local-bootstrap/package.json | 10 +-- package.json | 112 +++++++++++++------------- packages/blueprints/package.json | 4 +- packages/network/package.json | 2 +- packages/node/package.json | 8 +- packages/object/package.json | 2 +- 9 files changed, 83 insertions(+), 83 deletions(-) diff --git a/examples/canvas/package.json b/examples/canvas/package.json index 203e962c..d08680b8 100644 --- a/examples/canvas/package.json +++ b/examples/canvas/package.json @@ -1,6 +1,6 @@ { "name": "ts-topology-examples-canvas", - "version": "0.2.0", + "version": "0.2.1-0", "license": "MIT", "scripts": { "build": "vite build", @@ -9,10 +9,10 @@ "start": "ts-node ./src/index.ts" }, "dependencies": { - "@topology-foundation/blueprints": "0.2.0", - "@topology-foundation/network": "0.2.0", - "@topology-foundation/node": "0.2.0", - "@topology-foundation/object": "0.2.0", + "@topology-foundation/blueprints": "0.2.1-0", + "@topology-foundation/network": "0.2.1-0", + "@topology-foundation/node": "0.2.1-0", + "@topology-foundation/object": "0.2.1-0", "crypto-browserify": "^3.12.0", "process": "^0.11.10", "stream-browserify": "^3.0.0", diff --git a/examples/chat/package.json b/examples/chat/package.json index 1d4e5edf..05ef8f89 100644 --- a/examples/chat/package.json +++ b/examples/chat/package.json @@ -1,6 +1,6 @@ { "name": "topology-example-chat", - "version": "0.2.0", + "version": "0.2.1-0", "description": "Topology Protocol Chat Example", "main": "src/index.ts", "repository": "https://github.com/topology-foundation/ts-topology.git", @@ -13,10 +13,10 @@ "start": "ts-node ./src/index.ts" }, "dependencies": { - "@topology-foundation/blueprints": "0.2.0", - "@topology-foundation/network": "0.2.0", - "@topology-foundation/node": "0.2.0", - "@topology-foundation/object": "0.2.0", + "@topology-foundation/blueprints": "0.2.1-0", + "@topology-foundation/network": "0.2.1-0", + "@topology-foundation/node": "0.2.1-0", + "@topology-foundation/object": "0.2.1-0", "assemblyscript": "^0.27.29", "crypto-browserify": "^3.12.0", "process": "^0.11.10", diff --git a/examples/grid/package.json b/examples/grid/package.json index 3b675214..964b03f3 100644 --- a/examples/grid/package.json +++ b/examples/grid/package.json @@ -1,6 +1,6 @@ { "name": "topology-example-grid", - "version": "0.2.0", + "version": "0.2.1-0", "description": "Topology Protocol Grid Exmaple", "main": "src/index.ts", "repository": "https://github.com/topology-foundation/ts-topology.git", @@ -13,9 +13,9 @@ "start": "ts-node ./src/index.ts" }, "dependencies": { - "@topology-foundation/network": "0.2.0", - "@topology-foundation/node": "0.2.0", - "@topology-foundation/object": "0.2.0", + "@topology-foundation/network": "0.2.1-0", + "@topology-foundation/node": "0.2.1-0", + "@topology-foundation/object": "0.2.1-0", "assemblyscript": "^0.27.29", "crypto-browserify": "^3.12.0", "memfs": "^4.11.1", diff --git a/examples/local-bootstrap/package.json b/examples/local-bootstrap/package.json index 785d82b6..62ab5226 100644 --- a/examples/local-bootstrap/package.json +++ b/examples/local-bootstrap/package.json @@ -1,6 +1,6 @@ { "name": "topology-example-localdev", - "version": "0.2.0", + "version": "0.2.1-0", "description": "Topology Protocol Local Dev Example", "main": "src/index.ts", "repository": "https://github.com/topology-foundation/ts-topology.git", @@ -13,10 +13,10 @@ "start": "ts-node ./src/index.ts" }, "dependencies": { - "@topology-foundation/blueprints": "0.2.0", - "@topology-foundation/network": "0.2.0", - "@topology-foundation/node": "0.2.0", - "@topology-foundation/object": "0.2.0", + "@topology-foundation/blueprints": "0.2.1-0", + "@topology-foundation/network": "0.2.1-0", + "@topology-foundation/node": "0.2.1-0", + "@topology-foundation/object": "0.2.1-0", "assemblyscript": "^0.27.29", "crypto-browserify": "^3.12.0", "process": "^0.11.10", diff --git a/package.json b/package.json index 75d1f01f..1bf57b18 100644 --- a/package.json +++ b/package.json @@ -1,58 +1,58 @@ { - "name": "ts-topology", - "description": "The official TypeScript implementation of Topology Protocol", - "version": "0.2.0", - "license": "MIT", - "homepage": "https://topology.gg/", - "repository": { - "type": "git", - "url": "git+https://github.com/topology-foundation/ts-topology.git" - }, - "bugs": { - "url": "https://github.com/topology-foundation/ts-topology/issues" - }, - "workspaces": [ - "packages/*", - "examples/*" - ], - "scripts": { - "bench": "vitest bench", - "biome-check": "biome check", - "clean": "pnpm --filter '@topology-foundation/*' clean", - "docs": "typedoc", - "postinstall": "pnpm --filter '@topology-foundation/*' build", - "proto-gen": "pnpm proto-gen:object && pnpm proto-gen:network", - "proto-gen:object": "buf generate packages/object/src/proto -o packages/object/src/proto", - "proto-gen:network": "buf generate packages/network/src/proto -o packages/network/src/proto", - "release": "release-it", - "test": "vitest" - }, - "devDependencies": { - "@biomejs/biome": "^1.8.3", - "@release-it-plugins/workspaces": "^4.2.0", - "@types/node": "^22.5.4", - "assemblyscript": "^0.27.29", - "release-it": "^17.6.0", - "ts-proto": "^2.2.4", - "typedoc": "^0.26.6", - "typescript": "^5.5.4", - "vite": "^5.4.9", - "vite-tsconfig-paths": "^5.0.1", - "vitest": "^2.1.1" - }, - "private": true, - "release-it": { - "plugins": { - "@release-it-plugins/workspaces": { - "publish": false - } - }, - "npm": false, - "git": { - "commitMessage": "chore: release v${version}" - }, - "github": { - "release": true - } - } + "name": "ts-topology", + "description": "The official TypeScript implementation of Topology Protocol", + "version": "0.2.1-0", + "license": "MIT", + "homepage": "https://topology.gg/", + "repository": { + "type": "git", + "url": "git+https://github.com/topology-foundation/ts-topology.git" + }, + "bugs": { + "url": "https://github.com/topology-foundation/ts-topology/issues" + }, + "workspaces": [ + "packages/*", + "examples/*" + ], + "scripts": { + "bench": "vitest bench", + "biome-check": "biome check", + "clean": "pnpm --filter '@topology-foundation/*' clean", + "docs": "typedoc", + "postinstall": "pnpm --filter '@topology-foundation/*' build", + "proto-gen": "pnpm proto-gen:object && pnpm proto-gen:network", + "proto-gen:object": "buf generate packages/object/src/proto -o packages/object/src/proto", + "proto-gen:network": "buf generate packages/network/src/proto -o packages/network/src/proto", + "release": "release-it", + "test": "vitest" + }, + "devDependencies": { + "@biomejs/biome": "^1.8.3", + "@release-it-plugins/workspaces": "^4.2.0", + "@types/node": "^22.5.4", + "assemblyscript": "^0.27.29", + "release-it": "^17.6.0", + "ts-proto": "^2.2.4", + "typedoc": "^0.26.6", + "typescript": "^5.5.4", + "vite": "^5.4.9", + "vite-tsconfig-paths": "^5.0.1", + "vitest": "^2.1.1" + }, + "private": true, + "release-it": { + "plugins": { + "@release-it-plugins/workspaces": { + "publish": false + } + }, + "npm": false, + "git": { + "commitMessage": "chore: release v${version}" + }, + "github": { + "release": true + } + } } diff --git a/packages/blueprints/package.json b/packages/blueprints/package.json index 8204c5c2..f337c6b8 100644 --- a/packages/blueprints/package.json +++ b/packages/blueprints/package.json @@ -1,6 +1,6 @@ { "name": "@topology-foundation/blueprints", - "version": "0.2.0", + "version": "0.2.1-0", "license": "MIT", "repository": { "type": "git", @@ -34,7 +34,7 @@ "test": "vitest" }, "devDependencies": { - "@topology-foundation/object": "0.2.0", + "@topology-foundation/object": "0.2.1-0", "assemblyscript": "^0.27.29" }, "dependencies": { diff --git a/packages/network/package.json b/packages/network/package.json index f013867c..785ce6ba 100644 --- a/packages/network/package.json +++ b/packages/network/package.json @@ -1,6 +1,6 @@ { "name": "@topology-foundation/network", - "version": "0.2.0", + "version": "0.2.1-0", "license": "MIT", "repository": { "type": "git", diff --git a/packages/node/package.json b/packages/node/package.json index 5f5aef44..00da6915 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -1,6 +1,6 @@ { "name": "@topology-foundation/node", - "version": "0.2.0", + "version": "0.2.1-0", "license": "MIT", "repository": { "type": "git", @@ -39,9 +39,9 @@ "@chainsafe/libp2p-gossipsub": "^14.1.0", "@grpc/grpc-js": "^1.12.2", "@libp2p/interface": "^2.1.3", - "@topology-foundation/blueprints": "0.2.0", - "@topology-foundation/network": "0.2.0", - "@topology-foundation/object": "0.2.0", + "@topology-foundation/blueprints": "0.2.1-0", + "@topology-foundation/network": "0.2.1-0", + "@topology-foundation/object": "0.2.1-0", "commander": "^12.1.0", "google-protobuf": "^3.21.2" } diff --git a/packages/object/package.json b/packages/object/package.json index 0daf3eb5..91b25b78 100644 --- a/packages/object/package.json +++ b/packages/object/package.json @@ -1,6 +1,6 @@ { "name": "@topology-foundation/object", - "version": "0.2.0", + "version": "0.2.1-0", "license": "MIT", "repository": { "type": "git", From 25e8f24273b9ecf99348702a67b1ec14898094ac Mon Sep 17 00:00:00 2001 From: Ly Dinh Minh Man <85622996+winprn@users.noreply.github.com> Date: Tue, 29 Oct 2024 15:39:44 +0700 Subject: [PATCH 04/19] feat: logging package (#206) --- packages/logger/README.md | 31 +++++++++++++ packages/logger/package.json | 33 ++++++++++++++ packages/logger/src/index.ts | 28 ++++++++++++ packages/logger/tsconfig.json | 7 +++ packages/logger/typedoc.json | 6 +++ packages/network/package.json | 1 + packages/network/src/node.ts | 47 +++++++++---------- packages/network/tsconfig.json | 5 +++ packages/node/package.json | 1 + packages/node/src/rpc/index.ts | 8 +++- packages/node/src/version.ts | 2 +- packages/node/tsconfig.json | 3 ++ packages/object/package.json | 1 + packages/object/src/wasm/compiler.ts | 11 +++-- packages/object/tsconfig.json | 5 +++ pnpm-lock.yaml | 67 ++++++++++++++++++++-------- 16 files changed, 205 insertions(+), 51 deletions(-) create mode 100644 packages/logger/README.md create mode 100644 packages/logger/package.json create mode 100644 packages/logger/src/index.ts create mode 100644 packages/logger/tsconfig.json create mode 100644 packages/logger/typedoc.json diff --git a/packages/logger/README.md b/packages/logger/README.md new file mode 100644 index 00000000..fe1439e4 --- /dev/null +++ b/packages/logger/README.md @@ -0,0 +1,31 @@ +# Topology Logger + +This package makes it easy to log messages in a structured way. + +## Usage + +This package is intended to be used as a dependency for the Topology Protocol. However, you can use it as a standalone package. For that, you can install it using: + +```bash +# yarn +yarn add @topology-foundation/logger + +# npm +npm install @topology-foundation/logger +``` + +### Build + +To build the package, you can run: + +```bash +yarn build +``` + +### Tests + +To run the tests, you can run: + +```bash +yarn test +``` diff --git a/packages/logger/package.json b/packages/logger/package.json new file mode 100644 index 00000000..f2f02f27 --- /dev/null +++ b/packages/logger/package.json @@ -0,0 +1,33 @@ +{ + "name": "@topology-foundation/logger", + "version": "0.2.1-0", + "license": "MIT", + "repository": { + "type": "git", + "url": "git+https://github.com/topology-foundation/ts-topology.git" + }, + "type": "module", + "types": "./dist/src/index.d.ts", + "files": [ + "src", + "dist", + "!dist/test", + "!**/*.tsbuildinfo" + ], + "exports": { + ".": { + "types": "./dist/src/index.d.ts", + "import": "./dist/src/index.js" + } + }, + "scripts": { + "build": "tsc -b", + "clean": "rm -rf dist/ node_modules/", + "prepack": "tsc -b", + "test": "vitest" + }, + "dependencies": { + "loglevel": "^1.9.2", + "loglevel-plugin-prefix": "^0.8.4" + } +} diff --git a/packages/logger/src/index.ts b/packages/logger/src/index.ts new file mode 100644 index 00000000..4d93a4a5 --- /dev/null +++ b/packages/logger/src/index.ts @@ -0,0 +1,28 @@ +import loglevel from "loglevel"; +import prefix from "loglevel-plugin-prefix"; + +export interface LoggerOptions { + level?: loglevel.LogLevelDesc; +} + +export class Logger { + private log: loglevel.Logger; + // biome-ignore lint/suspicious/noExplicitAny: Do this to allow any method to be called on the logger + [key: string]: any; + + constructor(context: string, config?: LoggerOptions) { + this.log = loglevel.getLogger(context); + this.log.setLevel(config?.level || "info"); + prefix.reg(loglevel); + prefix.apply(this.log, { + template: "%n", + }); + + for (const method of Object.keys(this.log)) { + const logMethod = this.log[method as keyof loglevel.Logger]; + if (typeof logMethod === "function") { + this[method as string] = logMethod.bind(this.log); + } + } + } +} diff --git a/packages/logger/tsconfig.json b/packages/logger/tsconfig.json new file mode 100644 index 00000000..9cc8b37c --- /dev/null +++ b/packages/logger/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "dist" + }, + "include": ["src/**/*.ts"] +} diff --git a/packages/logger/typedoc.json b/packages/logger/typedoc.json new file mode 100644 index 00000000..c9c65c9c --- /dev/null +++ b/packages/logger/typedoc.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://typedoc.org/schema.json", + "includeVersion": true, + "entryPoints": ["src/index.ts"], + "readme": "README.md" +} diff --git a/packages/network/package.json b/packages/network/package.json index 785ce6ba..d9bea10d 100644 --- a/packages/network/package.json +++ b/packages/network/package.json @@ -49,6 +49,7 @@ "@libp2p/websockets": "^9.0.7", "@libp2p/webtransport": "^5.0.9", "@multiformats/multiaddr": "^12.3.1", + "@topology-foundation/logger": "^0.2.1-0", "it-length-prefixed": "^9.1.0", "it-map": "^3.1.1", "it-pipe": "^3.0.1", diff --git a/packages/network/src/node.ts b/packages/network/src/node.ts index 998d9345..b2464438 100644 --- a/packages/network/src/node.ts +++ b/packages/network/src/node.ts @@ -27,6 +27,7 @@ import { webSockets } from "@libp2p/websockets"; import * as filters from "@libp2p/websockets/filters"; import { webTransport } from "@libp2p/webtransport"; import { multiaddr } from "@multiformats/multiaddr"; +import { Logger, type LoggerOptions } from "@topology-foundation/logger"; import { type Libp2p, createLibp2p } from "libp2p"; import { fromString as uint8ArrayFromString } from "uint8arrays/from-string"; import { Message } from "./proto/topology/network/messages_pb.js"; @@ -34,6 +35,8 @@ import { uint8ArrayToStream } from "./stream.js"; export * from "./stream.js"; +let log: Logger; + // snake_casing to match the JSON config export interface TopologyNetworkNodeConfig { addresses?: string[]; @@ -41,6 +44,7 @@ export interface TopologyNetworkNodeConfig { bootstrap_peers?: string[]; browser_metrics?: boolean; private_key_seed?: string; + log_config?: LoggerOptions; } export class TopologyNetworkNode { @@ -52,6 +56,7 @@ export class TopologyNetworkNode { constructor(config?: TopologyNetworkNodeConfig) { this._config = config; + log = new Logger("topology::network", config?.log_config); } async start() { @@ -134,62 +139,52 @@ export class TopologyNetworkNode { this._pubsub = this._node.services.pubsub as PubSub; this.peerId = this._node.peerId.toString(); - console.log( - "topology::network::start: Successfuly started topology network w/ peer_id", + log.info( + "::start: Successfuly started topology network w/ peer_id", this.peerId, ); this._node.addEventListener("peer:connect", (e) => - console.log("::start::peer::connect", e.detail), + log.info("::start::peer::connect", e.detail), ); this._node.addEventListener("peer:discovery", (e) => { // current bug in v11.0.0 requires manual dial (https://github.com/libp2p/js-libp2p-pubsub-peer-discovery/issues/149) for (const ma of e.detail.multiaddrs) { this._node?.dial(ma); } - console.log("::start::peer::discovery", e.detail); + log.info("::start::peer::discovery", e.detail); }); this._node.addEventListener("peer:identify", (e) => - console.log("::start::peer::identify", e.detail), + log.info("::start::peer::identify", e.detail), ); } subscribe(topic: string) { if (!this._node) { - console.error( - "topology::network::subscribe: Node not initialized, please run .start()", - ); + log.error("::subscribe: Node not initialized, please run .start()"); return; } try { this._pubsub?.subscribe(topic); this._pubsub?.getPeers(); - console.log( - "topology::network::subscribe: Successfuly subscribed the topic", - topic, - ); + log.info("::subscribe: Successfuly subscribed the topic", topic); } catch (e) { - console.error("topology::network::subscribe:", e); + log.error("::subscribe:", e); } } unsubscribe(topic: string) { if (!this._node) { - console.error( - "topology::network::unsubscribe: Node not initialized, please run .start()", - ); + log.error("::unsubscribe: Node not initialized, please run .start()"); return; } try { this._pubsub?.unsubscribe(topic); - console.log( - "topology::network::unsubscribe: Successfuly unsubscribed the topic", - topic, - ); + log.info("::unsubscribe: Successfuly unsubscribed the topic", topic); } catch (e) { - console.error("topology::network::unsubscribe:", e); + log.error("::unsubscribe:", e); } } @@ -210,12 +205,12 @@ export class TopologyNetworkNode { const messageBuffer = Message.encode(message).finish(); await this._pubsub?.publish(topic, messageBuffer); - console.log( - "topology::network::broadcastMessage: Successfuly broadcasted message to topic", + log.info( + "::broadcastMessage: Successfuly broadcasted message to topic", topic, ); } catch (e) { - console.error("topology::network::broadcastMessage:", e); + log.error("::broadcastMessage:", e); } } @@ -226,7 +221,7 @@ export class TopologyNetworkNode { const messageBuffer = Message.encode(message).finish(); uint8ArrayToStream(stream, messageBuffer); } catch (e) { - console.error("topology::network::sendMessage:", e); + log.error("::sendMessage:", e); } } @@ -245,7 +240,7 @@ export class TopologyNetworkNode { const messageBuffer = Message.encode(message).finish(); uint8ArrayToStream(stream, messageBuffer); } catch (e) { - console.error("topology::network::sendMessageRandomTopicPeer:", e); + log.error("::sendMessageRandomTopicPeer:", e); } } diff --git a/packages/network/tsconfig.json b/packages/network/tsconfig.json index 9cc8b37c..48e3023f 100644 --- a/packages/network/tsconfig.json +++ b/packages/network/tsconfig.json @@ -3,5 +3,10 @@ "compilerOptions": { "outDir": "dist" }, + "references": [ + { + "path": "../logger" + } + ], "include": ["src/**/*.ts"] } diff --git a/packages/node/package.json b/packages/node/package.json index 00da6915..72d32d89 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -42,6 +42,7 @@ "@topology-foundation/blueprints": "0.2.1-0", "@topology-foundation/network": "0.2.1-0", "@topology-foundation/object": "0.2.1-0", + "@topology-foundation/logger": "0.2.1-0", "commander": "^12.1.0", "google-protobuf": "^3.21.2" } diff --git a/packages/node/src/rpc/index.ts b/packages/node/src/rpc/index.ts index 228d353a..30c58a19 100644 --- a/packages/node/src/rpc/index.ts +++ b/packages/node/src/rpc/index.ts @@ -1,6 +1,7 @@ import * as grpc from "@grpc/grpc-js"; import type { ServerUnaryCall, sendUnaryData } from "@grpc/grpc-js"; +import { Logger } from "@topology-foundation/logger"; import type { TopologyNode } from "../index.js"; import { TopologyRpcService } from "../proto/rpc_grpc_pb.js"; import type { @@ -13,6 +14,11 @@ import type { } from "../proto/rpc_pb.js"; export function init(node: TopologyNode) { + const log = new Logger( + "topology::rpc", + node.config?.network_config?.log_config, + ); + function subscribeCro( call: ServerUnaryCall, callback: sendUnaryData, @@ -80,7 +86,7 @@ export function init(node: TopologyNode) { "0.0.0.0:6969", grpc.ServerCredentials.createInsecure(), (_error, _port) => { - console.log("running grpc in port:", _port); + log.info("running grpc in port:", _port); }, ); } diff --git a/packages/node/src/version.ts b/packages/node/src/version.ts index edbab618..47452519 100644 --- a/packages/node/src/version.ts +++ b/packages/node/src/version.ts @@ -1 +1 @@ -export const VERSION = "0.2.0"; +export const VERSION = "0.2.1-0"; diff --git a/packages/node/tsconfig.json b/packages/node/tsconfig.json index 44104cf7..5d24764d 100644 --- a/packages/node/tsconfig.json +++ b/packages/node/tsconfig.json @@ -13,6 +13,9 @@ }, { "path": "../object" + }, + { + "path": "../logger" } ], "include": ["src/**/*.ts", "src/**/*.js"] diff --git a/packages/object/package.json b/packages/object/package.json index 91b25b78..b445967d 100644 --- a/packages/object/package.json +++ b/packages/object/package.json @@ -33,6 +33,7 @@ }, "dependencies": { "@bufbuild/protobuf": "^2.0.0", + "@topology-foundation/logger": "^0.2.1-0", "ts-proto": "^2.2.4" } } diff --git a/packages/object/src/wasm/compiler.ts b/packages/object/src/wasm/compiler.ts index d8482a2b..343fd4a2 100644 --- a/packages/object/src/wasm/compiler.ts +++ b/packages/object/src/wasm/compiler.ts @@ -3,10 +3,13 @@ - ABI */ import * as fs from "node:fs"; +import { Logger } from "@topology-foundation/logger"; import asc from "assemblyscript/asc"; export async function compileWasm(path: string) { - console.log("Compiling", path); + const log = new Logger("topology::wasm", { level: "info" }); + + log.info("Compiling", path); const { error, stderr } = await asc.main( [path, "--bindings=esm", "--outFile=/tmp/dist.wasm"], { @@ -29,8 +32,8 @@ export async function compileWasm(path: string) { ); if (error) { - console.log(`Compilation failed: ${error}`); - console.log(stderr.toString()); + log.info(`Compilation failed: ${error}`); + log.info(stderr.toString()); return new Uint8Array(); } @@ -39,6 +42,6 @@ export async function compileWasm(path: string) { fs.readFileSync("/tmp/dist.wasm"), ); // fs.unlinkSync('dist/tmp.wasm'); - console.log("Compilation successful", bytecode); + log.info("Compilation successful", bytecode); return bytecode; } diff --git a/packages/object/tsconfig.json b/packages/object/tsconfig.json index 9cc8b37c..48e3023f 100644 --- a/packages/object/tsconfig.json +++ b/packages/object/tsconfig.json @@ -3,5 +3,10 @@ "compilerOptions": { "outDir": "dist" }, + "references": [ + { + "path": "../logger" + } + ], "include": ["src/**/*.ts"] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a0daff27..b7fc9d38 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -45,16 +45,16 @@ importers: examples/canvas: dependencies: '@topology-foundation/blueprints': - specifier: 0.2.0 + specifier: 0.2.1-0 version: link:../../packages/blueprints '@topology-foundation/network': - specifier: 0.2.0 + specifier: 0.2.1-0 version: link:../../packages/network '@topology-foundation/node': - specifier: 0.2.0 + specifier: 0.2.1-0 version: link:../../packages/node '@topology-foundation/object': - specifier: 0.2.0 + specifier: 0.2.1-0 version: link:../../packages/object crypto-browserify: specifier: ^3.12.0 @@ -91,16 +91,16 @@ importers: examples/chat: dependencies: '@topology-foundation/blueprints': - specifier: 0.2.0 + specifier: 0.2.1-0 version: link:../../packages/blueprints '@topology-foundation/network': - specifier: 0.2.0 + specifier: 0.2.1-0 version: link:../../packages/network '@topology-foundation/node': - specifier: 0.2.0 + specifier: 0.2.1-0 version: link:../../packages/node '@topology-foundation/object': - specifier: 0.2.0 + specifier: 0.2.1-0 version: link:../../packages/object assemblyscript: specifier: ^0.27.29 @@ -143,13 +143,13 @@ importers: examples/grid: dependencies: '@topology-foundation/network': - specifier: 0.2.0 + specifier: 0.2.1-0 version: link:../../packages/network '@topology-foundation/node': - specifier: 0.2.0 + specifier: 0.2.1-0 version: link:../../packages/node '@topology-foundation/object': - specifier: 0.2.0 + specifier: 0.2.1-0 version: link:../../packages/object assemblyscript: specifier: ^0.27.29 @@ -198,16 +198,16 @@ importers: examples/local-bootstrap: dependencies: '@topology-foundation/blueprints': - specifier: 0.2.0 + specifier: 0.2.1-0 version: link:../../packages/blueprints '@topology-foundation/network': - specifier: 0.2.0 + specifier: 0.2.1-0 version: link:../../packages/network '@topology-foundation/node': - specifier: 0.2.0 + specifier: 0.2.1-0 version: link:../../packages/node '@topology-foundation/object': - specifier: 0.2.0 + specifier: 0.2.1-0 version: link:../../packages/object assemblyscript: specifier: ^0.27.29 @@ -254,12 +254,21 @@ importers: version: 4.1.2 devDependencies: '@topology-foundation/object': - specifier: 0.2.0 + specifier: 0.2.1-0 version: link:../object assemblyscript: specifier: ^0.27.29 version: 0.27.30 + packages/logger: + dependencies: + loglevel: + specifier: ^1.9.2 + version: 1.9.2 + loglevel-plugin-prefix: + specifier: ^0.8.4 + version: 0.8.4 + packages/network: dependencies: '@bufbuild/protobuf': @@ -316,6 +325,9 @@ importers: '@multiformats/multiaddr': specifier: ^12.3.1 version: 12.3.1 + '@topology-foundation/logger': + specifier: ^0.2.1-0 + version: link:../logger it-length-prefixed: specifier: ^9.1.0 version: 9.1.0 @@ -354,13 +366,16 @@ importers: specifier: ^2.1.3 version: 2.1.3 '@topology-foundation/blueprints': - specifier: 0.2.0 + specifier: 0.2.1-0 version: link:../blueprints + '@topology-foundation/logger': + specifier: 0.2.1-0 + version: link:../logger '@topology-foundation/network': - specifier: 0.2.0 + specifier: 0.2.1-0 version: link:../network '@topology-foundation/object': - specifier: 0.2.0 + specifier: 0.2.1-0 version: link:../object commander: specifier: ^12.1.0 @@ -390,6 +405,9 @@ importers: '@bufbuild/protobuf': specifier: ^2.0.0 version: 2.2.0 + '@topology-foundation/logger': + specifier: ^0.2.1-0 + version: link:../logger ts-proto: specifier: ^2.2.4 version: 2.2.5 @@ -3766,6 +3784,13 @@ packages: resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} engines: {node: '>=18'} + loglevel-plugin-prefix@0.8.4: + resolution: {integrity: sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==} + + loglevel@1.9.2: + resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==} + engines: {node: '>= 0.6.0'} + long@5.2.3: resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} @@ -9487,6 +9512,10 @@ snapshots: chalk: 5.3.0 is-unicode-supported: 1.3.0 + loglevel-plugin-prefix@0.8.4: {} + + loglevel@1.9.2: {} + long@5.2.3: {} loose-envify@1.4.0: From 8b1313eeb9ebbcdc66671ae1aa5aa70425798a23 Mon Sep 17 00:00:00 2001 From: droak Date: Tue, 29 Oct 2024 17:49:05 +0900 Subject: [PATCH 05/19] chore: run dependabot daily and just update for major versions --- .github/dependabot.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 42adb447..c9d56d71 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -8,4 +8,8 @@ updates: - package-ecosystem: "npm" directory: "/" schedule: - interval: "weekly" + interval: daily + ignore: + - dependency-name: "*" + # ignore patch and minor + update-types: [version-update:semver-patch, version-update:semver-minor] From c74e3c7a5aa11d6ad0d9cfb0b7c596e96b334079 Mon Sep 17 00:00:00 2001 From: droak Date: Wed, 30 Oct 2024 02:32:09 +0900 Subject: [PATCH 06/19] chore: add codeowners file --- CODEOWNERS | 1 + 1 file changed, 1 insertion(+) create mode 100644 CODEOWNERS diff --git a/CODEOWNERS b/CODEOWNERS new file mode 100644 index 00000000..0c299f88 --- /dev/null +++ b/CODEOWNERS @@ -0,0 +1 @@ +* @d-roak @JanLewDev @trungnotchung @winprn @hoangquocvietuet From c59081a4738ea19b2015c11e216227430da55402 Mon Sep 17 00:00:00 2001 From: Oak Date: Tue, 29 Oct 2024 17:35:01 +0000 Subject: [PATCH 07/19] chore: add el to codeowners --- CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CODEOWNERS b/CODEOWNERS index 0c299f88..6c0fb776 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1 +1 @@ -* @d-roak @JanLewDev @trungnotchung @winprn @hoangquocvietuet +* @d-roak @JanLewDev @elielnfinic @trungnotchung @winprn @hoangquocvietuet From 3dee126acd9780763f2a9965942b8da5e7dd26d0 Mon Sep 17 00:00:00 2001 From: Oak Date: Wed, 30 Oct 2024 06:23:55 +0000 Subject: [PATCH 08/19] refactor: change node proto and add it to the registry (#224) --- buf.yaml | 3 +++ packages/node/src/proto/{ => topology/node}/rpc.proto | 0 packages/node/src/proto/{ => topology/node}/rpc_grpc_pb.js | 0 packages/node/src/proto/{ => topology/node}/rpc_pb.ts | 0 packages/node/src/rpc/index.ts | 4 ++-- 5 files changed, 5 insertions(+), 2 deletions(-) rename packages/node/src/proto/{ => topology/node}/rpc.proto (100%) rename packages/node/src/proto/{ => topology/node}/rpc_grpc_pb.js (100%) rename packages/node/src/proto/{ => topology/node}/rpc_pb.ts (100%) diff --git a/buf.yaml b/buf.yaml index 3b4484ca..61b5f343 100644 --- a/buf.yaml +++ b/buf.yaml @@ -1,5 +1,8 @@ version: v2 modules: + - path: packages/node/src/proto + name: buf.build/topology/node + - path: packages/object/src/proto name: buf.build/topology/object diff --git a/packages/node/src/proto/rpc.proto b/packages/node/src/proto/topology/node/rpc.proto similarity index 100% rename from packages/node/src/proto/rpc.proto rename to packages/node/src/proto/topology/node/rpc.proto diff --git a/packages/node/src/proto/rpc_grpc_pb.js b/packages/node/src/proto/topology/node/rpc_grpc_pb.js similarity index 100% rename from packages/node/src/proto/rpc_grpc_pb.js rename to packages/node/src/proto/topology/node/rpc_grpc_pb.js diff --git a/packages/node/src/proto/rpc_pb.ts b/packages/node/src/proto/topology/node/rpc_pb.ts similarity index 100% rename from packages/node/src/proto/rpc_pb.ts rename to packages/node/src/proto/topology/node/rpc_pb.ts diff --git a/packages/node/src/rpc/index.ts b/packages/node/src/rpc/index.ts index 30c58a19..480eac2d 100644 --- a/packages/node/src/rpc/index.ts +++ b/packages/node/src/rpc/index.ts @@ -3,7 +3,7 @@ import * as grpc from "@grpc/grpc-js"; import type { ServerUnaryCall, sendUnaryData } from "@grpc/grpc-js"; import { Logger } from "@topology-foundation/logger"; import type { TopologyNode } from "../index.js"; -import { TopologyRpcService } from "../proto/rpc_grpc_pb.js"; +import { TopologyRpcService } from "../proto/topology/node/rpc_grpc_pb.js"; import type { GetCroHashGraphRequest, GetCroHashGraphResponse, @@ -11,7 +11,7 @@ import type { SubscribeCroResponse, UnsubscribeCroRequest, UnsubscribeCroResponse, -} from "../proto/rpc_pb.js"; +} from "../proto/topology/node/rpc_pb.js"; export function init(node: TopologyNode) { const log = new Logger( From cbca52667b359f55b7e5d72aeddad4cb0689e243 Mon Sep 17 00:00:00 2001 From: Oak Date: Wed, 30 Oct 2024 12:41:11 +0000 Subject: [PATCH 09/19] ci: buf registry publish (#223) --- .github/workflows/buf-registry.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/buf-registry.yml b/.github/workflows/buf-registry.yml index 3d5b3294..5079d0e5 100644 --- a/.github/workflows/buf-registry.yml +++ b/.github/workflows/buf-registry.yml @@ -11,4 +11,6 @@ jobs: - uses: bufbuild/buf-action@v1 with: token: ${{ secrets.BUF_TOKEN }} - tpr_comment: false + pr_comment: false + lint: false + push: true From 0ddcac8ffab40523a75afcf02c3d94997a2f148e Mon Sep 17 00:00:00 2001 From: Oak Date: Wed, 30 Oct 2024 12:51:30 +0000 Subject: [PATCH 10/19] ci: buf registry (#225) --- .../src/proto/topology/network/messages.proto | 1 - .../node/src/proto/topology/node/rpc.proto | 24 +++++++-------- .../src/proto/topology/object/object.proto | 30 +++++++++---------- 3 files changed, 27 insertions(+), 28 deletions(-) diff --git a/packages/network/src/proto/topology/network/messages.proto b/packages/network/src/proto/topology/network/messages.proto index 521b436a..de339256 100644 --- a/packages/network/src/proto/topology/network/messages.proto +++ b/packages/network/src/proto/topology/network/messages.proto @@ -4,7 +4,6 @@ package topology.network; import "google/protobuf/struct.proto"; import "topology/object/object.proto"; - message Message { enum MessageType { UPDATE = 0; diff --git a/packages/node/src/proto/topology/node/rpc.proto b/packages/node/src/proto/topology/node/rpc.proto index 65f70a67..b4dfa92c 100644 --- a/packages/node/src/proto/topology/node/rpc.proto +++ b/packages/node/src/proto/topology/node/rpc.proto @@ -2,34 +2,34 @@ syntax = "proto3"; package topology.node; service TopologyRpc { - rpc subscribeCro (SubscribeCroRequest ) returns (SubscribeCroResponse ); - rpc unsubscribeCro (UnsubscribeCroRequest ) returns (UnsubscribeCroResponse ); - rpc getCroHashGraph (GetCroHashGraphRequest ) returns (GetCroHashGraphResponse ); + rpc subscribeCro(SubscribeCroRequest) returns (SubscribeCroResponse); + rpc unsubscribeCro(UnsubscribeCroRequest) returns (UnsubscribeCroResponse); + rpc getCroHashGraph(GetCroHashGraphRequest) returns (GetCroHashGraphResponse); } message SubscribeCroRequest { - string cro_id = 1; + string cro_id = 1; } message SubscribeCroResponse { - // can return error codes if different than 0 - int32 return_code = 1; + // can return error codes if different than 0 + int32 return_code = 1; } message UnsubscribeCroRequest { - string cro_id = 1; + string cro_id = 1; } message UnsubscribeCroResponse { - // can return error codes if different than 0 - int32 return_code = 1; + // can return error codes if different than 0 + int32 return_code = 1; } message GetCroHashGraphRequest { - string cro_id = 1; + string cro_id = 1; } message GetCroHashGraphResponse { - // linearized vertices hashes - repeated string vertices_hashes = 1; + // linearized vertices hashes + repeated string vertices_hashes = 1; } diff --git a/packages/object/src/proto/topology/object/object.proto b/packages/object/src/proto/topology/object/object.proto index 0f561065..db9d6c2b 100644 --- a/packages/object/src/proto/topology/object/object.proto +++ b/packages/object/src/proto/topology/object/object.proto @@ -2,25 +2,25 @@ syntax = "proto3"; package topology.object; -option go_package = "ts-topology/packages/object"; - import "google/protobuf/struct.proto"; +option go_package = "ts-topology/packages/object"; + // Supposed to be the RIBLT stuff message Vertex { - message Operation { - string type = 1; - google.protobuf.Value value = 2; - } - string hash = 1; - string nodeId = 2; - Operation operation = 3; - repeated string dependencies = 4; -}; + message Operation { + string type = 1; + google.protobuf.Value value = 2; + } + string hash = 1; + string nodeId = 2; + Operation operation = 3; + repeated string dependencies = 4; +} message TopologyObjectBase { - string id = 1; - optional string abi = 2; - optional bytes bytecode = 3; - repeated Vertex vertices = 4; + string id = 1; + optional string abi = 2; + optional bytes bytecode = 3; + repeated Vertex vertices = 4; } From 8df13ebc017c5b34634210d1c086827727192762 Mon Sep 17 00:00:00 2001 From: droak Date: Wed, 30 Oct 2024 21:51:57 +0900 Subject: [PATCH 11/19] chore: release v0.2.1-1 --- examples/canvas/package.json | 10 +-- examples/chat/package.json | 10 +-- examples/grid/package.json | 8 +- examples/local-bootstrap/package.json | 10 +-- package.json | 106 +++++++++++++------------- packages/blueprints/package.json | 4 +- packages/logger/package.json | 2 +- packages/network/package.json | 4 +- packages/node/package.json | 10 +-- packages/object/package.json | 4 +- 10 files changed, 84 insertions(+), 84 deletions(-) diff --git a/examples/canvas/package.json b/examples/canvas/package.json index d08680b8..65c64c20 100644 --- a/examples/canvas/package.json +++ b/examples/canvas/package.json @@ -1,6 +1,6 @@ { "name": "ts-topology-examples-canvas", - "version": "0.2.1-0", + "version": "0.2.1-1", "license": "MIT", "scripts": { "build": "vite build", @@ -9,10 +9,10 @@ "start": "ts-node ./src/index.ts" }, "dependencies": { - "@topology-foundation/blueprints": "0.2.1-0", - "@topology-foundation/network": "0.2.1-0", - "@topology-foundation/node": "0.2.1-0", - "@topology-foundation/object": "0.2.1-0", + "@topology-foundation/blueprints": "0.2.1-1", + "@topology-foundation/network": "0.2.1-1", + "@topology-foundation/node": "0.2.1-1", + "@topology-foundation/object": "0.2.1-1", "crypto-browserify": "^3.12.0", "process": "^0.11.10", "stream-browserify": "^3.0.0", diff --git a/examples/chat/package.json b/examples/chat/package.json index 05ef8f89..cb8a3a54 100644 --- a/examples/chat/package.json +++ b/examples/chat/package.json @@ -1,6 +1,6 @@ { "name": "topology-example-chat", - "version": "0.2.1-0", + "version": "0.2.1-1", "description": "Topology Protocol Chat Example", "main": "src/index.ts", "repository": "https://github.com/topology-foundation/ts-topology.git", @@ -13,10 +13,10 @@ "start": "ts-node ./src/index.ts" }, "dependencies": { - "@topology-foundation/blueprints": "0.2.1-0", - "@topology-foundation/network": "0.2.1-0", - "@topology-foundation/node": "0.2.1-0", - "@topology-foundation/object": "0.2.1-0", + "@topology-foundation/blueprints": "0.2.1-1", + "@topology-foundation/network": "0.2.1-1", + "@topology-foundation/node": "0.2.1-1", + "@topology-foundation/object": "0.2.1-1", "assemblyscript": "^0.27.29", "crypto-browserify": "^3.12.0", "process": "^0.11.10", diff --git a/examples/grid/package.json b/examples/grid/package.json index 964b03f3..a8bb91cc 100644 --- a/examples/grid/package.json +++ b/examples/grid/package.json @@ -1,6 +1,6 @@ { "name": "topology-example-grid", - "version": "0.2.1-0", + "version": "0.2.1-1", "description": "Topology Protocol Grid Exmaple", "main": "src/index.ts", "repository": "https://github.com/topology-foundation/ts-topology.git", @@ -13,9 +13,9 @@ "start": "ts-node ./src/index.ts" }, "dependencies": { - "@topology-foundation/network": "0.2.1-0", - "@topology-foundation/node": "0.2.1-0", - "@topology-foundation/object": "0.2.1-0", + "@topology-foundation/network": "0.2.1-1", + "@topology-foundation/node": "0.2.1-1", + "@topology-foundation/object": "0.2.1-1", "assemblyscript": "^0.27.29", "crypto-browserify": "^3.12.0", "memfs": "^4.11.1", diff --git a/examples/local-bootstrap/package.json b/examples/local-bootstrap/package.json index 62ab5226..2628dcfd 100644 --- a/examples/local-bootstrap/package.json +++ b/examples/local-bootstrap/package.json @@ -1,6 +1,6 @@ { "name": "topology-example-localdev", - "version": "0.2.1-0", + "version": "0.2.1-1", "description": "Topology Protocol Local Dev Example", "main": "src/index.ts", "repository": "https://github.com/topology-foundation/ts-topology.git", @@ -13,10 +13,10 @@ "start": "ts-node ./src/index.ts" }, "dependencies": { - "@topology-foundation/blueprints": "0.2.1-0", - "@topology-foundation/network": "0.2.1-0", - "@topology-foundation/node": "0.2.1-0", - "@topology-foundation/object": "0.2.1-0", + "@topology-foundation/blueprints": "0.2.1-1", + "@topology-foundation/network": "0.2.1-1", + "@topology-foundation/node": "0.2.1-1", + "@topology-foundation/object": "0.2.1-1", "assemblyscript": "^0.27.29", "crypto-browserify": "^3.12.0", "process": "^0.11.10", diff --git a/package.json b/package.json index 1bf57b18..eabb1dbd 100644 --- a/package.json +++ b/package.json @@ -1,58 +1,58 @@ { - "name": "ts-topology", - "description": "The official TypeScript implementation of Topology Protocol", - "version": "0.2.1-0", - "license": "MIT", - "homepage": "https://topology.gg/", - "repository": { - "type": "git", - "url": "git+https://github.com/topology-foundation/ts-topology.git" - }, - "bugs": { - "url": "https://github.com/topology-foundation/ts-topology/issues" - }, - "workspaces": [ - "packages/*", - "examples/*" - ], - "scripts": { - "bench": "vitest bench", - "biome-check": "biome check", - "clean": "pnpm --filter '@topology-foundation/*' clean", - "docs": "typedoc", - "postinstall": "pnpm --filter '@topology-foundation/*' build", - "proto-gen": "pnpm proto-gen:object && pnpm proto-gen:network", - "proto-gen:object": "buf generate packages/object/src/proto -o packages/object/src/proto", - "proto-gen:network": "buf generate packages/network/src/proto -o packages/network/src/proto", - "release": "release-it", - "test": "vitest" - }, - "devDependencies": { - "@biomejs/biome": "^1.8.3", - "@release-it-plugins/workspaces": "^4.2.0", - "@types/node": "^22.5.4", - "assemblyscript": "^0.27.29", - "release-it": "^17.6.0", - "ts-proto": "^2.2.4", - "typedoc": "^0.26.6", - "typescript": "^5.5.4", - "vite": "^5.4.9", - "vite-tsconfig-paths": "^5.0.1", - "vitest": "^2.1.1" - }, - "private": true, - "release-it": { - "plugins": { - "@release-it-plugins/workspaces": { - "publish": false - } + "name": "ts-topology", + "description": "The official TypeScript implementation of Topology Protocol", + "version": "0.2.1-1", + "license": "MIT", + "homepage": "https://topology.gg/", + "repository": { + "type": "git", + "url": "git+https://github.com/topology-foundation/ts-topology.git" }, - "npm": false, - "git": { - "commitMessage": "chore: release v${version}" + "bugs": { + "url": "https://github.com/topology-foundation/ts-topology/issues" }, - "github": { - "release": true + "workspaces": [ + "packages/*", + "examples/*" + ], + "scripts": { + "bench": "vitest bench", + "biome-check": "biome check", + "clean": "pnpm --filter '@topology-foundation/*' clean", + "docs": "typedoc", + "postinstall": "pnpm --filter '@topology-foundation/*' build", + "proto-gen": "pnpm proto-gen:object && pnpm proto-gen:network", + "proto-gen:object": "buf generate packages/object/src/proto -o packages/object/src/proto", + "proto-gen:network": "buf generate packages/network/src/proto -o packages/network/src/proto", + "release": "release-it", + "test": "vitest" + }, + "devDependencies": { + "@biomejs/biome": "^1.8.3", + "@release-it-plugins/workspaces": "^4.2.0", + "@types/node": "^22.5.4", + "assemblyscript": "^0.27.29", + "release-it": "^17.6.0", + "ts-proto": "^2.2.4", + "typedoc": "^0.26.6", + "typescript": "^5.5.4", + "vite": "^5.4.9", + "vite-tsconfig-paths": "^5.0.1", + "vitest": "^2.1.1" + }, + "private": true, + "release-it": { + "plugins": { + "@release-it-plugins/workspaces": { + "publish": false + } + }, + "npm": false, + "git": { + "commitMessage": "chore: release v${version}" + }, + "github": { + "release": true + } } - } } diff --git a/packages/blueprints/package.json b/packages/blueprints/package.json index f337c6b8..843d6325 100644 --- a/packages/blueprints/package.json +++ b/packages/blueprints/package.json @@ -1,6 +1,6 @@ { "name": "@topology-foundation/blueprints", - "version": "0.2.1-0", + "version": "0.2.1-1", "license": "MIT", "repository": { "type": "git", @@ -34,7 +34,7 @@ "test": "vitest" }, "devDependencies": { - "@topology-foundation/object": "0.2.1-0", + "@topology-foundation/object": "0.2.1-1", "assemblyscript": "^0.27.29" }, "dependencies": { diff --git a/packages/logger/package.json b/packages/logger/package.json index f2f02f27..ac7cd37d 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -1,6 +1,6 @@ { "name": "@topology-foundation/logger", - "version": "0.2.1-0", + "version": "0.2.1-1", "license": "MIT", "repository": { "type": "git", diff --git a/packages/network/package.json b/packages/network/package.json index d9bea10d..a558c13a 100644 --- a/packages/network/package.json +++ b/packages/network/package.json @@ -1,6 +1,6 @@ { "name": "@topology-foundation/network", - "version": "0.2.1-0", + "version": "0.2.1-1", "license": "MIT", "repository": { "type": "git", @@ -49,7 +49,7 @@ "@libp2p/websockets": "^9.0.7", "@libp2p/webtransport": "^5.0.9", "@multiformats/multiaddr": "^12.3.1", - "@topology-foundation/logger": "^0.2.1-0", + "@topology-foundation/logger": "^0.2.1-1", "it-length-prefixed": "^9.1.0", "it-map": "^3.1.1", "it-pipe": "^3.0.1", diff --git a/packages/node/package.json b/packages/node/package.json index 72d32d89..56bca653 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -1,6 +1,6 @@ { "name": "@topology-foundation/node", - "version": "0.2.1-0", + "version": "0.2.1-1", "license": "MIT", "repository": { "type": "git", @@ -39,10 +39,10 @@ "@chainsafe/libp2p-gossipsub": "^14.1.0", "@grpc/grpc-js": "^1.12.2", "@libp2p/interface": "^2.1.3", - "@topology-foundation/blueprints": "0.2.1-0", - "@topology-foundation/network": "0.2.1-0", - "@topology-foundation/object": "0.2.1-0", - "@topology-foundation/logger": "0.2.1-0", + "@topology-foundation/blueprints": "0.2.1-1", + "@topology-foundation/network": "0.2.1-1", + "@topology-foundation/object": "0.2.1-1", + "@topology-foundation/logger": "0.2.1-1", "commander": "^12.1.0", "google-protobuf": "^3.21.2" } diff --git a/packages/object/package.json b/packages/object/package.json index b445967d..55a9bfe4 100644 --- a/packages/object/package.json +++ b/packages/object/package.json @@ -1,6 +1,6 @@ { "name": "@topology-foundation/object", - "version": "0.2.1-0", + "version": "0.2.1-1", "license": "MIT", "repository": { "type": "git", @@ -33,7 +33,7 @@ }, "dependencies": { "@bufbuild/protobuf": "^2.0.0", - "@topology-foundation/logger": "^0.2.1-0", + "@topology-foundation/logger": "^0.2.1-1", "ts-proto": "^2.2.4" } } From a083b4d72e54f3d05b9d5ffa9ffcdbcd65ddbc3e Mon Sep 17 00:00:00 2001 From: droak Date: Wed, 30 Oct 2024 22:11:19 +0900 Subject: [PATCH 12/19] fix: run manually the commands for buf --- .github/workflows/buf-registry.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/buf-registry.yml b/.github/workflows/buf-registry.yml index 5079d0e5..3d3672f0 100644 --- a/.github/workflows/buf-registry.yml +++ b/.github/workflows/buf-registry.yml @@ -13,4 +13,6 @@ jobs: token: ${{ secrets.BUF_TOKEN }} pr_comment: false lint: false - push: true + - run: | + echo ${{ secrets.BUF_TOKEN }} | buf registry login --username ${{ secrets.BUF_USER }} --token-stdin + buf push --error-format github-actions --exclude-unnamed --git-metadata --create From 8a49c46c21d5b5e93ca1a01f95fd2adbd76bb205 Mon Sep 17 00:00:00 2001 From: droak Date: Wed, 30 Oct 2024 22:13:11 +0900 Subject: [PATCH 13/19] chore: release v0.2.1-2 --- examples/canvas/package.json | 10 +++--- examples/chat/package.json | 10 +++--- examples/grid/package.json | 8 ++--- examples/local-bootstrap/package.json | 10 +++--- package.json | 2 +- packages/blueprints/package.json | 4 +-- packages/logger/package.json | 2 +- packages/network/package.json | 4 +-- packages/node/package.json | 10 +++--- packages/node/src/version.ts | 2 +- packages/object/package.json | 4 +-- pnpm-lock.yaml | 44 +++++++++++++-------------- 12 files changed, 55 insertions(+), 55 deletions(-) diff --git a/examples/canvas/package.json b/examples/canvas/package.json index 65c64c20..705a7abd 100644 --- a/examples/canvas/package.json +++ b/examples/canvas/package.json @@ -1,6 +1,6 @@ { "name": "ts-topology-examples-canvas", - "version": "0.2.1-1", + "version": "0.2.1-2", "license": "MIT", "scripts": { "build": "vite build", @@ -9,10 +9,10 @@ "start": "ts-node ./src/index.ts" }, "dependencies": { - "@topology-foundation/blueprints": "0.2.1-1", - "@topology-foundation/network": "0.2.1-1", - "@topology-foundation/node": "0.2.1-1", - "@topology-foundation/object": "0.2.1-1", + "@topology-foundation/blueprints": "0.2.1-2", + "@topology-foundation/network": "0.2.1-2", + "@topology-foundation/node": "0.2.1-2", + "@topology-foundation/object": "0.2.1-2", "crypto-browserify": "^3.12.0", "process": "^0.11.10", "stream-browserify": "^3.0.0", diff --git a/examples/chat/package.json b/examples/chat/package.json index cb8a3a54..1b3c184b 100644 --- a/examples/chat/package.json +++ b/examples/chat/package.json @@ -1,6 +1,6 @@ { "name": "topology-example-chat", - "version": "0.2.1-1", + "version": "0.2.1-2", "description": "Topology Protocol Chat Example", "main": "src/index.ts", "repository": "https://github.com/topology-foundation/ts-topology.git", @@ -13,10 +13,10 @@ "start": "ts-node ./src/index.ts" }, "dependencies": { - "@topology-foundation/blueprints": "0.2.1-1", - "@topology-foundation/network": "0.2.1-1", - "@topology-foundation/node": "0.2.1-1", - "@topology-foundation/object": "0.2.1-1", + "@topology-foundation/blueprints": "0.2.1-2", + "@topology-foundation/network": "0.2.1-2", + "@topology-foundation/node": "0.2.1-2", + "@topology-foundation/object": "0.2.1-2", "assemblyscript": "^0.27.29", "crypto-browserify": "^3.12.0", "process": "^0.11.10", diff --git a/examples/grid/package.json b/examples/grid/package.json index a8bb91cc..8f209a77 100644 --- a/examples/grid/package.json +++ b/examples/grid/package.json @@ -1,6 +1,6 @@ { "name": "topology-example-grid", - "version": "0.2.1-1", + "version": "0.2.1-2", "description": "Topology Protocol Grid Exmaple", "main": "src/index.ts", "repository": "https://github.com/topology-foundation/ts-topology.git", @@ -13,9 +13,9 @@ "start": "ts-node ./src/index.ts" }, "dependencies": { - "@topology-foundation/network": "0.2.1-1", - "@topology-foundation/node": "0.2.1-1", - "@topology-foundation/object": "0.2.1-1", + "@topology-foundation/network": "0.2.1-2", + "@topology-foundation/node": "0.2.1-2", + "@topology-foundation/object": "0.2.1-2", "assemblyscript": "^0.27.29", "crypto-browserify": "^3.12.0", "memfs": "^4.11.1", diff --git a/examples/local-bootstrap/package.json b/examples/local-bootstrap/package.json index 2628dcfd..514afae3 100644 --- a/examples/local-bootstrap/package.json +++ b/examples/local-bootstrap/package.json @@ -1,6 +1,6 @@ { "name": "topology-example-localdev", - "version": "0.2.1-1", + "version": "0.2.1-2", "description": "Topology Protocol Local Dev Example", "main": "src/index.ts", "repository": "https://github.com/topology-foundation/ts-topology.git", @@ -13,10 +13,10 @@ "start": "ts-node ./src/index.ts" }, "dependencies": { - "@topology-foundation/blueprints": "0.2.1-1", - "@topology-foundation/network": "0.2.1-1", - "@topology-foundation/node": "0.2.1-1", - "@topology-foundation/object": "0.2.1-1", + "@topology-foundation/blueprints": "0.2.1-2", + "@topology-foundation/network": "0.2.1-2", + "@topology-foundation/node": "0.2.1-2", + "@topology-foundation/object": "0.2.1-2", "assemblyscript": "^0.27.29", "crypto-browserify": "^3.12.0", "process": "^0.11.10", diff --git a/package.json b/package.json index eabb1dbd..c648a7c6 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ts-topology", "description": "The official TypeScript implementation of Topology Protocol", - "version": "0.2.1-1", + "version": "0.2.1-2", "license": "MIT", "homepage": "https://topology.gg/", "repository": { diff --git a/packages/blueprints/package.json b/packages/blueprints/package.json index 843d6325..5fe7f16e 100644 --- a/packages/blueprints/package.json +++ b/packages/blueprints/package.json @@ -1,6 +1,6 @@ { "name": "@topology-foundation/blueprints", - "version": "0.2.1-1", + "version": "0.2.1-2", "license": "MIT", "repository": { "type": "git", @@ -34,7 +34,7 @@ "test": "vitest" }, "devDependencies": { - "@topology-foundation/object": "0.2.1-1", + "@topology-foundation/object": "0.2.1-2", "assemblyscript": "^0.27.29" }, "dependencies": { diff --git a/packages/logger/package.json b/packages/logger/package.json index ac7cd37d..522fb980 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -1,6 +1,6 @@ { "name": "@topology-foundation/logger", - "version": "0.2.1-1", + "version": "0.2.1-2", "license": "MIT", "repository": { "type": "git", diff --git a/packages/network/package.json b/packages/network/package.json index a558c13a..bc4611bd 100644 --- a/packages/network/package.json +++ b/packages/network/package.json @@ -1,6 +1,6 @@ { "name": "@topology-foundation/network", - "version": "0.2.1-1", + "version": "0.2.1-2", "license": "MIT", "repository": { "type": "git", @@ -49,7 +49,7 @@ "@libp2p/websockets": "^9.0.7", "@libp2p/webtransport": "^5.0.9", "@multiformats/multiaddr": "^12.3.1", - "@topology-foundation/logger": "^0.2.1-1", + "@topology-foundation/logger": "^0.2.1-2", "it-length-prefixed": "^9.1.0", "it-map": "^3.1.1", "it-pipe": "^3.0.1", diff --git a/packages/node/package.json b/packages/node/package.json index 56bca653..419fae38 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -1,6 +1,6 @@ { "name": "@topology-foundation/node", - "version": "0.2.1-1", + "version": "0.2.1-2", "license": "MIT", "repository": { "type": "git", @@ -39,10 +39,10 @@ "@chainsafe/libp2p-gossipsub": "^14.1.0", "@grpc/grpc-js": "^1.12.2", "@libp2p/interface": "^2.1.3", - "@topology-foundation/blueprints": "0.2.1-1", - "@topology-foundation/network": "0.2.1-1", - "@topology-foundation/object": "0.2.1-1", - "@topology-foundation/logger": "0.2.1-1", + "@topology-foundation/blueprints": "0.2.1-2", + "@topology-foundation/network": "0.2.1-2", + "@topology-foundation/object": "0.2.1-2", + "@topology-foundation/logger": "0.2.1-2", "commander": "^12.1.0", "google-protobuf": "^3.21.2" } diff --git a/packages/node/src/version.ts b/packages/node/src/version.ts index 47452519..ce20705c 100644 --- a/packages/node/src/version.ts +++ b/packages/node/src/version.ts @@ -1 +1 @@ -export const VERSION = "0.2.1-0"; +export const VERSION = "0.2.1-1"; diff --git a/packages/object/package.json b/packages/object/package.json index 55a9bfe4..9141cdd1 100644 --- a/packages/object/package.json +++ b/packages/object/package.json @@ -1,6 +1,6 @@ { "name": "@topology-foundation/object", - "version": "0.2.1-1", + "version": "0.2.1-2", "license": "MIT", "repository": { "type": "git", @@ -33,7 +33,7 @@ }, "dependencies": { "@bufbuild/protobuf": "^2.0.0", - "@topology-foundation/logger": "^0.2.1-1", + "@topology-foundation/logger": "^0.2.1-2", "ts-proto": "^2.2.4" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b7fc9d38..d0e55d9a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -45,16 +45,16 @@ importers: examples/canvas: dependencies: '@topology-foundation/blueprints': - specifier: 0.2.1-0 + specifier: 0.2.1-1 version: link:../../packages/blueprints '@topology-foundation/network': - specifier: 0.2.1-0 + specifier: 0.2.1-1 version: link:../../packages/network '@topology-foundation/node': - specifier: 0.2.1-0 + specifier: 0.2.1-1 version: link:../../packages/node '@topology-foundation/object': - specifier: 0.2.1-0 + specifier: 0.2.1-1 version: link:../../packages/object crypto-browserify: specifier: ^3.12.0 @@ -91,16 +91,16 @@ importers: examples/chat: dependencies: '@topology-foundation/blueprints': - specifier: 0.2.1-0 + specifier: 0.2.1-1 version: link:../../packages/blueprints '@topology-foundation/network': - specifier: 0.2.1-0 + specifier: 0.2.1-1 version: link:../../packages/network '@topology-foundation/node': - specifier: 0.2.1-0 + specifier: 0.2.1-1 version: link:../../packages/node '@topology-foundation/object': - specifier: 0.2.1-0 + specifier: 0.2.1-1 version: link:../../packages/object assemblyscript: specifier: ^0.27.29 @@ -143,13 +143,13 @@ importers: examples/grid: dependencies: '@topology-foundation/network': - specifier: 0.2.1-0 + specifier: 0.2.1-1 version: link:../../packages/network '@topology-foundation/node': - specifier: 0.2.1-0 + specifier: 0.2.1-1 version: link:../../packages/node '@topology-foundation/object': - specifier: 0.2.1-0 + specifier: 0.2.1-1 version: link:../../packages/object assemblyscript: specifier: ^0.27.29 @@ -198,16 +198,16 @@ importers: examples/local-bootstrap: dependencies: '@topology-foundation/blueprints': - specifier: 0.2.1-0 + specifier: 0.2.1-1 version: link:../../packages/blueprints '@topology-foundation/network': - specifier: 0.2.1-0 + specifier: 0.2.1-1 version: link:../../packages/network '@topology-foundation/node': - specifier: 0.2.1-0 + specifier: 0.2.1-1 version: link:../../packages/node '@topology-foundation/object': - specifier: 0.2.1-0 + specifier: 0.2.1-1 version: link:../../packages/object assemblyscript: specifier: ^0.27.29 @@ -254,7 +254,7 @@ importers: version: 4.1.2 devDependencies: '@topology-foundation/object': - specifier: 0.2.1-0 + specifier: 0.2.1-1 version: link:../object assemblyscript: specifier: ^0.27.29 @@ -326,7 +326,7 @@ importers: specifier: ^12.3.1 version: 12.3.1 '@topology-foundation/logger': - specifier: ^0.2.1-0 + specifier: ^0.2.1-1 version: link:../logger it-length-prefixed: specifier: ^9.1.0 @@ -366,16 +366,16 @@ importers: specifier: ^2.1.3 version: 2.1.3 '@topology-foundation/blueprints': - specifier: 0.2.1-0 + specifier: 0.2.1-1 version: link:../blueprints '@topology-foundation/logger': - specifier: 0.2.1-0 + specifier: 0.2.1-1 version: link:../logger '@topology-foundation/network': - specifier: 0.2.1-0 + specifier: 0.2.1-1 version: link:../network '@topology-foundation/object': - specifier: 0.2.1-0 + specifier: 0.2.1-1 version: link:../object commander: specifier: ^12.1.0 @@ -406,7 +406,7 @@ importers: specifier: ^2.0.0 version: 2.2.0 '@topology-foundation/logger': - specifier: ^0.2.1-0 + specifier: ^0.2.1-1 version: link:../logger ts-proto: specifier: ^2.2.4 From 9dde1a9a79b0086586cf2bd2e5f092d2c7c33b5b Mon Sep 17 00:00:00 2001 From: droak Date: Wed, 30 Oct 2024 22:15:12 +0900 Subject: [PATCH 14/19] fix: drop username from the command --- .github/workflows/buf-registry.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/buf-registry.yml b/.github/workflows/buf-registry.yml index 3d3672f0..2842776e 100644 --- a/.github/workflows/buf-registry.yml +++ b/.github/workflows/buf-registry.yml @@ -14,5 +14,5 @@ jobs: pr_comment: false lint: false - run: | - echo ${{ secrets.BUF_TOKEN }} | buf registry login --username ${{ secrets.BUF_USER }} --token-stdin + echo ${{ secrets.BUF_TOKEN }} | buf registry login --token-stdin buf push --error-format github-actions --exclude-unnamed --git-metadata --create From 4fb2e8b0de46de40948df322dc7938510465049b Mon Sep 17 00:00:00 2001 From: droak Date: Wed, 30 Oct 2024 22:15:32 +0900 Subject: [PATCH 15/19] chore: release v0.2.1-3 --- examples/canvas/package.json | 10 +++--- examples/chat/package.json | 10 +++--- examples/grid/package.json | 8 ++--- examples/local-bootstrap/package.json | 10 +++--- package.json | 2 +- packages/blueprints/package.json | 4 +-- packages/logger/package.json | 2 +- packages/network/package.json | 4 +-- packages/node/package.json | 10 +++--- packages/node/src/version.ts | 2 +- packages/object/package.json | 4 +-- pnpm-lock.yaml | 44 +++++++++++++-------------- 12 files changed, 55 insertions(+), 55 deletions(-) diff --git a/examples/canvas/package.json b/examples/canvas/package.json index 705a7abd..92f9a3d6 100644 --- a/examples/canvas/package.json +++ b/examples/canvas/package.json @@ -1,6 +1,6 @@ { "name": "ts-topology-examples-canvas", - "version": "0.2.1-2", + "version": "0.2.1-3", "license": "MIT", "scripts": { "build": "vite build", @@ -9,10 +9,10 @@ "start": "ts-node ./src/index.ts" }, "dependencies": { - "@topology-foundation/blueprints": "0.2.1-2", - "@topology-foundation/network": "0.2.1-2", - "@topology-foundation/node": "0.2.1-2", - "@topology-foundation/object": "0.2.1-2", + "@topology-foundation/blueprints": "0.2.1-3", + "@topology-foundation/network": "0.2.1-3", + "@topology-foundation/node": "0.2.1-3", + "@topology-foundation/object": "0.2.1-3", "crypto-browserify": "^3.12.0", "process": "^0.11.10", "stream-browserify": "^3.0.0", diff --git a/examples/chat/package.json b/examples/chat/package.json index 1b3c184b..37982ad7 100644 --- a/examples/chat/package.json +++ b/examples/chat/package.json @@ -1,6 +1,6 @@ { "name": "topology-example-chat", - "version": "0.2.1-2", + "version": "0.2.1-3", "description": "Topology Protocol Chat Example", "main": "src/index.ts", "repository": "https://github.com/topology-foundation/ts-topology.git", @@ -13,10 +13,10 @@ "start": "ts-node ./src/index.ts" }, "dependencies": { - "@topology-foundation/blueprints": "0.2.1-2", - "@topology-foundation/network": "0.2.1-2", - "@topology-foundation/node": "0.2.1-2", - "@topology-foundation/object": "0.2.1-2", + "@topology-foundation/blueprints": "0.2.1-3", + "@topology-foundation/network": "0.2.1-3", + "@topology-foundation/node": "0.2.1-3", + "@topology-foundation/object": "0.2.1-3", "assemblyscript": "^0.27.29", "crypto-browserify": "^3.12.0", "process": "^0.11.10", diff --git a/examples/grid/package.json b/examples/grid/package.json index 8f209a77..a6b3fddf 100644 --- a/examples/grid/package.json +++ b/examples/grid/package.json @@ -1,6 +1,6 @@ { "name": "topology-example-grid", - "version": "0.2.1-2", + "version": "0.2.1-3", "description": "Topology Protocol Grid Exmaple", "main": "src/index.ts", "repository": "https://github.com/topology-foundation/ts-topology.git", @@ -13,9 +13,9 @@ "start": "ts-node ./src/index.ts" }, "dependencies": { - "@topology-foundation/network": "0.2.1-2", - "@topology-foundation/node": "0.2.1-2", - "@topology-foundation/object": "0.2.1-2", + "@topology-foundation/network": "0.2.1-3", + "@topology-foundation/node": "0.2.1-3", + "@topology-foundation/object": "0.2.1-3", "assemblyscript": "^0.27.29", "crypto-browserify": "^3.12.0", "memfs": "^4.11.1", diff --git a/examples/local-bootstrap/package.json b/examples/local-bootstrap/package.json index 514afae3..4a14e617 100644 --- a/examples/local-bootstrap/package.json +++ b/examples/local-bootstrap/package.json @@ -1,6 +1,6 @@ { "name": "topology-example-localdev", - "version": "0.2.1-2", + "version": "0.2.1-3", "description": "Topology Protocol Local Dev Example", "main": "src/index.ts", "repository": "https://github.com/topology-foundation/ts-topology.git", @@ -13,10 +13,10 @@ "start": "ts-node ./src/index.ts" }, "dependencies": { - "@topology-foundation/blueprints": "0.2.1-2", - "@topology-foundation/network": "0.2.1-2", - "@topology-foundation/node": "0.2.1-2", - "@topology-foundation/object": "0.2.1-2", + "@topology-foundation/blueprints": "0.2.1-3", + "@topology-foundation/network": "0.2.1-3", + "@topology-foundation/node": "0.2.1-3", + "@topology-foundation/object": "0.2.1-3", "assemblyscript": "^0.27.29", "crypto-browserify": "^3.12.0", "process": "^0.11.10", diff --git a/package.json b/package.json index c648a7c6..4983a795 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ts-topology", "description": "The official TypeScript implementation of Topology Protocol", - "version": "0.2.1-2", + "version": "0.2.1-3", "license": "MIT", "homepage": "https://topology.gg/", "repository": { diff --git a/packages/blueprints/package.json b/packages/blueprints/package.json index 5fe7f16e..1eed0721 100644 --- a/packages/blueprints/package.json +++ b/packages/blueprints/package.json @@ -1,6 +1,6 @@ { "name": "@topology-foundation/blueprints", - "version": "0.2.1-2", + "version": "0.2.1-3", "license": "MIT", "repository": { "type": "git", @@ -34,7 +34,7 @@ "test": "vitest" }, "devDependencies": { - "@topology-foundation/object": "0.2.1-2", + "@topology-foundation/object": "0.2.1-3", "assemblyscript": "^0.27.29" }, "dependencies": { diff --git a/packages/logger/package.json b/packages/logger/package.json index 522fb980..c3d0b247 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -1,6 +1,6 @@ { "name": "@topology-foundation/logger", - "version": "0.2.1-2", + "version": "0.2.1-3", "license": "MIT", "repository": { "type": "git", diff --git a/packages/network/package.json b/packages/network/package.json index bc4611bd..ffa466d9 100644 --- a/packages/network/package.json +++ b/packages/network/package.json @@ -1,6 +1,6 @@ { "name": "@topology-foundation/network", - "version": "0.2.1-2", + "version": "0.2.1-3", "license": "MIT", "repository": { "type": "git", @@ -49,7 +49,7 @@ "@libp2p/websockets": "^9.0.7", "@libp2p/webtransport": "^5.0.9", "@multiformats/multiaddr": "^12.3.1", - "@topology-foundation/logger": "^0.2.1-2", + "@topology-foundation/logger": "^0.2.1-3", "it-length-prefixed": "^9.1.0", "it-map": "^3.1.1", "it-pipe": "^3.0.1", diff --git a/packages/node/package.json b/packages/node/package.json index 419fae38..2408de44 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -1,6 +1,6 @@ { "name": "@topology-foundation/node", - "version": "0.2.1-2", + "version": "0.2.1-3", "license": "MIT", "repository": { "type": "git", @@ -39,10 +39,10 @@ "@chainsafe/libp2p-gossipsub": "^14.1.0", "@grpc/grpc-js": "^1.12.2", "@libp2p/interface": "^2.1.3", - "@topology-foundation/blueprints": "0.2.1-2", - "@topology-foundation/network": "0.2.1-2", - "@topology-foundation/object": "0.2.1-2", - "@topology-foundation/logger": "0.2.1-2", + "@topology-foundation/blueprints": "0.2.1-3", + "@topology-foundation/network": "0.2.1-3", + "@topology-foundation/object": "0.2.1-3", + "@topology-foundation/logger": "0.2.1-3", "commander": "^12.1.0", "google-protobuf": "^3.21.2" } diff --git a/packages/node/src/version.ts b/packages/node/src/version.ts index ce20705c..6df5c447 100644 --- a/packages/node/src/version.ts +++ b/packages/node/src/version.ts @@ -1 +1 @@ -export const VERSION = "0.2.1-1"; +export const VERSION = "0.2.1-2"; diff --git a/packages/object/package.json b/packages/object/package.json index 9141cdd1..43fb92eb 100644 --- a/packages/object/package.json +++ b/packages/object/package.json @@ -1,6 +1,6 @@ { "name": "@topology-foundation/object", - "version": "0.2.1-2", + "version": "0.2.1-3", "license": "MIT", "repository": { "type": "git", @@ -33,7 +33,7 @@ }, "dependencies": { "@bufbuild/protobuf": "^2.0.0", - "@topology-foundation/logger": "^0.2.1-2", + "@topology-foundation/logger": "^0.2.1-3", "ts-proto": "^2.2.4" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d0e55d9a..a41a3d71 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -45,16 +45,16 @@ importers: examples/canvas: dependencies: '@topology-foundation/blueprints': - specifier: 0.2.1-1 + specifier: 0.2.1-2 version: link:../../packages/blueprints '@topology-foundation/network': - specifier: 0.2.1-1 + specifier: 0.2.1-2 version: link:../../packages/network '@topology-foundation/node': - specifier: 0.2.1-1 + specifier: 0.2.1-2 version: link:../../packages/node '@topology-foundation/object': - specifier: 0.2.1-1 + specifier: 0.2.1-2 version: link:../../packages/object crypto-browserify: specifier: ^3.12.0 @@ -91,16 +91,16 @@ importers: examples/chat: dependencies: '@topology-foundation/blueprints': - specifier: 0.2.1-1 + specifier: 0.2.1-2 version: link:../../packages/blueprints '@topology-foundation/network': - specifier: 0.2.1-1 + specifier: 0.2.1-2 version: link:../../packages/network '@topology-foundation/node': - specifier: 0.2.1-1 + specifier: 0.2.1-2 version: link:../../packages/node '@topology-foundation/object': - specifier: 0.2.1-1 + specifier: 0.2.1-2 version: link:../../packages/object assemblyscript: specifier: ^0.27.29 @@ -143,13 +143,13 @@ importers: examples/grid: dependencies: '@topology-foundation/network': - specifier: 0.2.1-1 + specifier: 0.2.1-2 version: link:../../packages/network '@topology-foundation/node': - specifier: 0.2.1-1 + specifier: 0.2.1-2 version: link:../../packages/node '@topology-foundation/object': - specifier: 0.2.1-1 + specifier: 0.2.1-2 version: link:../../packages/object assemblyscript: specifier: ^0.27.29 @@ -198,16 +198,16 @@ importers: examples/local-bootstrap: dependencies: '@topology-foundation/blueprints': - specifier: 0.2.1-1 + specifier: 0.2.1-2 version: link:../../packages/blueprints '@topology-foundation/network': - specifier: 0.2.1-1 + specifier: 0.2.1-2 version: link:../../packages/network '@topology-foundation/node': - specifier: 0.2.1-1 + specifier: 0.2.1-2 version: link:../../packages/node '@topology-foundation/object': - specifier: 0.2.1-1 + specifier: 0.2.1-2 version: link:../../packages/object assemblyscript: specifier: ^0.27.29 @@ -254,7 +254,7 @@ importers: version: 4.1.2 devDependencies: '@topology-foundation/object': - specifier: 0.2.1-1 + specifier: 0.2.1-2 version: link:../object assemblyscript: specifier: ^0.27.29 @@ -326,7 +326,7 @@ importers: specifier: ^12.3.1 version: 12.3.1 '@topology-foundation/logger': - specifier: ^0.2.1-1 + specifier: ^0.2.1-2 version: link:../logger it-length-prefixed: specifier: ^9.1.0 @@ -366,16 +366,16 @@ importers: specifier: ^2.1.3 version: 2.1.3 '@topology-foundation/blueprints': - specifier: 0.2.1-1 + specifier: 0.2.1-2 version: link:../blueprints '@topology-foundation/logger': - specifier: 0.2.1-1 + specifier: 0.2.1-2 version: link:../logger '@topology-foundation/network': - specifier: 0.2.1-1 + specifier: 0.2.1-2 version: link:../network '@topology-foundation/object': - specifier: 0.2.1-1 + specifier: 0.2.1-2 version: link:../object commander: specifier: ^12.1.0 @@ -406,7 +406,7 @@ importers: specifier: ^2.0.0 version: 2.2.0 '@topology-foundation/logger': - specifier: ^0.2.1-1 + specifier: ^0.2.1-2 version: link:../logger ts-proto: specifier: ^2.2.4 From d4a75825826a4dc44e0fad84fa100bdd2ef8507e Mon Sep 17 00:00:00 2001 From: droak Date: Wed, 30 Oct 2024 22:24:26 +0900 Subject: [PATCH 16/19] ci: inherit secrets from workflow --- .github/workflows/buf-registry.yml | 4 +--- .github/workflows/release.yml | 1 + 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/buf-registry.yml b/.github/workflows/buf-registry.yml index 2842776e..5079d0e5 100644 --- a/.github/workflows/buf-registry.yml +++ b/.github/workflows/buf-registry.yml @@ -13,6 +13,4 @@ jobs: token: ${{ secrets.BUF_TOKEN }} pr_comment: false lint: false - - run: | - echo ${{ secrets.BUF_TOKEN }} | buf registry login --token-stdin - buf push --error-format github-actions --exclude-unnamed --git-metadata --create + push: true diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6ba85cdf..a1881c81 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -13,6 +13,7 @@ jobs: publish_buf_registry: name: Publish buf files + secrets: inherit permissions: contents: read needs: From 2732d31e13a7eb9af781f581d9cbc9750e3315c5 Mon Sep 17 00:00:00 2001 From: droak Date: Wed, 30 Oct 2024 22:24:59 +0900 Subject: [PATCH 17/19] chore: release v0.2.1-4 --- examples/canvas/package.json | 10 +++--- examples/chat/package.json | 10 +++--- examples/grid/package.json | 8 ++--- examples/local-bootstrap/package.json | 10 +++--- package.json | 2 +- packages/blueprints/package.json | 4 +-- packages/logger/package.json | 2 +- packages/network/package.json | 4 +-- packages/node/package.json | 10 +++--- packages/node/src/version.ts | 2 +- packages/object/package.json | 4 +-- pnpm-lock.yaml | 44 +++++++++++++-------------- 12 files changed, 55 insertions(+), 55 deletions(-) diff --git a/examples/canvas/package.json b/examples/canvas/package.json index 92f9a3d6..b842d07b 100644 --- a/examples/canvas/package.json +++ b/examples/canvas/package.json @@ -1,6 +1,6 @@ { "name": "ts-topology-examples-canvas", - "version": "0.2.1-3", + "version": "0.2.1-4", "license": "MIT", "scripts": { "build": "vite build", @@ -9,10 +9,10 @@ "start": "ts-node ./src/index.ts" }, "dependencies": { - "@topology-foundation/blueprints": "0.2.1-3", - "@topology-foundation/network": "0.2.1-3", - "@topology-foundation/node": "0.2.1-3", - "@topology-foundation/object": "0.2.1-3", + "@topology-foundation/blueprints": "0.2.1-4", + "@topology-foundation/network": "0.2.1-4", + "@topology-foundation/node": "0.2.1-4", + "@topology-foundation/object": "0.2.1-4", "crypto-browserify": "^3.12.0", "process": "^0.11.10", "stream-browserify": "^3.0.0", diff --git a/examples/chat/package.json b/examples/chat/package.json index 37982ad7..5c4686e2 100644 --- a/examples/chat/package.json +++ b/examples/chat/package.json @@ -1,6 +1,6 @@ { "name": "topology-example-chat", - "version": "0.2.1-3", + "version": "0.2.1-4", "description": "Topology Protocol Chat Example", "main": "src/index.ts", "repository": "https://github.com/topology-foundation/ts-topology.git", @@ -13,10 +13,10 @@ "start": "ts-node ./src/index.ts" }, "dependencies": { - "@topology-foundation/blueprints": "0.2.1-3", - "@topology-foundation/network": "0.2.1-3", - "@topology-foundation/node": "0.2.1-3", - "@topology-foundation/object": "0.2.1-3", + "@topology-foundation/blueprints": "0.2.1-4", + "@topology-foundation/network": "0.2.1-4", + "@topology-foundation/node": "0.2.1-4", + "@topology-foundation/object": "0.2.1-4", "assemblyscript": "^0.27.29", "crypto-browserify": "^3.12.0", "process": "^0.11.10", diff --git a/examples/grid/package.json b/examples/grid/package.json index a6b3fddf..9d82ef26 100644 --- a/examples/grid/package.json +++ b/examples/grid/package.json @@ -1,6 +1,6 @@ { "name": "topology-example-grid", - "version": "0.2.1-3", + "version": "0.2.1-4", "description": "Topology Protocol Grid Exmaple", "main": "src/index.ts", "repository": "https://github.com/topology-foundation/ts-topology.git", @@ -13,9 +13,9 @@ "start": "ts-node ./src/index.ts" }, "dependencies": { - "@topology-foundation/network": "0.2.1-3", - "@topology-foundation/node": "0.2.1-3", - "@topology-foundation/object": "0.2.1-3", + "@topology-foundation/network": "0.2.1-4", + "@topology-foundation/node": "0.2.1-4", + "@topology-foundation/object": "0.2.1-4", "assemblyscript": "^0.27.29", "crypto-browserify": "^3.12.0", "memfs": "^4.11.1", diff --git a/examples/local-bootstrap/package.json b/examples/local-bootstrap/package.json index 4a14e617..a86c3e20 100644 --- a/examples/local-bootstrap/package.json +++ b/examples/local-bootstrap/package.json @@ -1,6 +1,6 @@ { "name": "topology-example-localdev", - "version": "0.2.1-3", + "version": "0.2.1-4", "description": "Topology Protocol Local Dev Example", "main": "src/index.ts", "repository": "https://github.com/topology-foundation/ts-topology.git", @@ -13,10 +13,10 @@ "start": "ts-node ./src/index.ts" }, "dependencies": { - "@topology-foundation/blueprints": "0.2.1-3", - "@topology-foundation/network": "0.2.1-3", - "@topology-foundation/node": "0.2.1-3", - "@topology-foundation/object": "0.2.1-3", + "@topology-foundation/blueprints": "0.2.1-4", + "@topology-foundation/network": "0.2.1-4", + "@topology-foundation/node": "0.2.1-4", + "@topology-foundation/object": "0.2.1-4", "assemblyscript": "^0.27.29", "crypto-browserify": "^3.12.0", "process": "^0.11.10", diff --git a/package.json b/package.json index 4983a795..fb3cac75 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ts-topology", "description": "The official TypeScript implementation of Topology Protocol", - "version": "0.2.1-3", + "version": "0.2.1-4", "license": "MIT", "homepage": "https://topology.gg/", "repository": { diff --git a/packages/blueprints/package.json b/packages/blueprints/package.json index 1eed0721..0956e297 100644 --- a/packages/blueprints/package.json +++ b/packages/blueprints/package.json @@ -1,6 +1,6 @@ { "name": "@topology-foundation/blueprints", - "version": "0.2.1-3", + "version": "0.2.1-4", "license": "MIT", "repository": { "type": "git", @@ -34,7 +34,7 @@ "test": "vitest" }, "devDependencies": { - "@topology-foundation/object": "0.2.1-3", + "@topology-foundation/object": "0.2.1-4", "assemblyscript": "^0.27.29" }, "dependencies": { diff --git a/packages/logger/package.json b/packages/logger/package.json index c3d0b247..350197a3 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -1,6 +1,6 @@ { "name": "@topology-foundation/logger", - "version": "0.2.1-3", + "version": "0.2.1-4", "license": "MIT", "repository": { "type": "git", diff --git a/packages/network/package.json b/packages/network/package.json index ffa466d9..ecdeae67 100644 --- a/packages/network/package.json +++ b/packages/network/package.json @@ -1,6 +1,6 @@ { "name": "@topology-foundation/network", - "version": "0.2.1-3", + "version": "0.2.1-4", "license": "MIT", "repository": { "type": "git", @@ -49,7 +49,7 @@ "@libp2p/websockets": "^9.0.7", "@libp2p/webtransport": "^5.0.9", "@multiformats/multiaddr": "^12.3.1", - "@topology-foundation/logger": "^0.2.1-3", + "@topology-foundation/logger": "^0.2.1-4", "it-length-prefixed": "^9.1.0", "it-map": "^3.1.1", "it-pipe": "^3.0.1", diff --git a/packages/node/package.json b/packages/node/package.json index 2408de44..2427bc18 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -1,6 +1,6 @@ { "name": "@topology-foundation/node", - "version": "0.2.1-3", + "version": "0.2.1-4", "license": "MIT", "repository": { "type": "git", @@ -39,10 +39,10 @@ "@chainsafe/libp2p-gossipsub": "^14.1.0", "@grpc/grpc-js": "^1.12.2", "@libp2p/interface": "^2.1.3", - "@topology-foundation/blueprints": "0.2.1-3", - "@topology-foundation/network": "0.2.1-3", - "@topology-foundation/object": "0.2.1-3", - "@topology-foundation/logger": "0.2.1-3", + "@topology-foundation/blueprints": "0.2.1-4", + "@topology-foundation/network": "0.2.1-4", + "@topology-foundation/object": "0.2.1-4", + "@topology-foundation/logger": "0.2.1-4", "commander": "^12.1.0", "google-protobuf": "^3.21.2" } diff --git a/packages/node/src/version.ts b/packages/node/src/version.ts index 6df5c447..2c9a3df9 100644 --- a/packages/node/src/version.ts +++ b/packages/node/src/version.ts @@ -1 +1 @@ -export const VERSION = "0.2.1-2"; +export const VERSION = "0.2.1-3"; diff --git a/packages/object/package.json b/packages/object/package.json index 43fb92eb..1987d451 100644 --- a/packages/object/package.json +++ b/packages/object/package.json @@ -1,6 +1,6 @@ { "name": "@topology-foundation/object", - "version": "0.2.1-3", + "version": "0.2.1-4", "license": "MIT", "repository": { "type": "git", @@ -33,7 +33,7 @@ }, "dependencies": { "@bufbuild/protobuf": "^2.0.0", - "@topology-foundation/logger": "^0.2.1-3", + "@topology-foundation/logger": "^0.2.1-4", "ts-proto": "^2.2.4" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a41a3d71..a582a596 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -45,16 +45,16 @@ importers: examples/canvas: dependencies: '@topology-foundation/blueprints': - specifier: 0.2.1-2 + specifier: 0.2.1-3 version: link:../../packages/blueprints '@topology-foundation/network': - specifier: 0.2.1-2 + specifier: 0.2.1-3 version: link:../../packages/network '@topology-foundation/node': - specifier: 0.2.1-2 + specifier: 0.2.1-3 version: link:../../packages/node '@topology-foundation/object': - specifier: 0.2.1-2 + specifier: 0.2.1-3 version: link:../../packages/object crypto-browserify: specifier: ^3.12.0 @@ -91,16 +91,16 @@ importers: examples/chat: dependencies: '@topology-foundation/blueprints': - specifier: 0.2.1-2 + specifier: 0.2.1-3 version: link:../../packages/blueprints '@topology-foundation/network': - specifier: 0.2.1-2 + specifier: 0.2.1-3 version: link:../../packages/network '@topology-foundation/node': - specifier: 0.2.1-2 + specifier: 0.2.1-3 version: link:../../packages/node '@topology-foundation/object': - specifier: 0.2.1-2 + specifier: 0.2.1-3 version: link:../../packages/object assemblyscript: specifier: ^0.27.29 @@ -143,13 +143,13 @@ importers: examples/grid: dependencies: '@topology-foundation/network': - specifier: 0.2.1-2 + specifier: 0.2.1-3 version: link:../../packages/network '@topology-foundation/node': - specifier: 0.2.1-2 + specifier: 0.2.1-3 version: link:../../packages/node '@topology-foundation/object': - specifier: 0.2.1-2 + specifier: 0.2.1-3 version: link:../../packages/object assemblyscript: specifier: ^0.27.29 @@ -198,16 +198,16 @@ importers: examples/local-bootstrap: dependencies: '@topology-foundation/blueprints': - specifier: 0.2.1-2 + specifier: 0.2.1-3 version: link:../../packages/blueprints '@topology-foundation/network': - specifier: 0.2.1-2 + specifier: 0.2.1-3 version: link:../../packages/network '@topology-foundation/node': - specifier: 0.2.1-2 + specifier: 0.2.1-3 version: link:../../packages/node '@topology-foundation/object': - specifier: 0.2.1-2 + specifier: 0.2.1-3 version: link:../../packages/object assemblyscript: specifier: ^0.27.29 @@ -254,7 +254,7 @@ importers: version: 4.1.2 devDependencies: '@topology-foundation/object': - specifier: 0.2.1-2 + specifier: 0.2.1-3 version: link:../object assemblyscript: specifier: ^0.27.29 @@ -326,7 +326,7 @@ importers: specifier: ^12.3.1 version: 12.3.1 '@topology-foundation/logger': - specifier: ^0.2.1-2 + specifier: ^0.2.1-3 version: link:../logger it-length-prefixed: specifier: ^9.1.0 @@ -366,16 +366,16 @@ importers: specifier: ^2.1.3 version: 2.1.3 '@topology-foundation/blueprints': - specifier: 0.2.1-2 + specifier: 0.2.1-3 version: link:../blueprints '@topology-foundation/logger': - specifier: 0.2.1-2 + specifier: 0.2.1-3 version: link:../logger '@topology-foundation/network': - specifier: 0.2.1-2 + specifier: 0.2.1-3 version: link:../network '@topology-foundation/object': - specifier: 0.2.1-2 + specifier: 0.2.1-3 version: link:../object commander: specifier: ^12.1.0 @@ -406,7 +406,7 @@ importers: specifier: ^2.0.0 version: 2.2.0 '@topology-foundation/logger': - specifier: ^0.2.1-2 + specifier: ^0.2.1-3 version: link:../logger ts-proto: specifier: ^2.2.4 From fe9d26784e6a0460a0abe7fe9ec6097e6d52b64e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ph=E1=BA=A1m=20Xu=C3=A2n=20Trung?= <66519569+trungnotchung@users.noreply.github.com> Date: Fri, 1 Nov 2024 10:52:19 +0700 Subject: [PATCH 18/19] #213 integrate dotenv for environment variable management (#215) Co-authored-by: Ly Dinh Minh Man <85622996+winprn@users.noreply.github.com> Co-authored-by: droak --- .gitignore | 1 + packages/node/.env.example | 4 +++ packages/node/package.json | 1 + packages/node/src/config.ts | 39 ++++++++++++++++++++++++++ packages/node/src/run.ts | 10 +++---- packages/node/src/version.ts | 2 +- pnpm-lock.yaml | 53 +++++++++++++++++++++--------------- 7 files changed, 81 insertions(+), 29 deletions(-) create mode 100644 packages/node/.env.example create mode 100644 packages/node/src/config.ts diff --git a/.gitignore b/.gitignore index 9f22aa2a..c1165b44 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.env dist/ docs/ diff --git a/packages/node/.env.example b/packages/node/.env.example new file mode 100644 index 00000000..78860d76 --- /dev/null +++ b/packages/node/.env.example @@ -0,0 +1,4 @@ +ADDRESSES=/ip4/0.0.0.0/tcp/50000/ws,/ip4/0.0.0.0/tcp/50001 +BOOTSTRAP=true +BOOTSTRAP_PEERS=/dns4/relay.droak.sh/tcp/443/wss/p2p/Qma3GsJmB47xYuyahPZPSadh1avvxfyYQwk8R3UnFrQ6aP +PRIVATE_KEY_SEED=example \ No newline at end of file diff --git a/packages/node/package.json b/packages/node/package.json index 2427bc18..f7db895e 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -39,6 +39,7 @@ "@chainsafe/libp2p-gossipsub": "^14.1.0", "@grpc/grpc-js": "^1.12.2", "@libp2p/interface": "^2.1.3", + "dotenv": "^16.4.5", "@topology-foundation/blueprints": "0.2.1-4", "@topology-foundation/network": "0.2.1-4", "@topology-foundation/object": "0.2.1-4", diff --git a/packages/node/src/config.ts b/packages/node/src/config.ts new file mode 100644 index 00000000..f982e9da --- /dev/null +++ b/packages/node/src/config.ts @@ -0,0 +1,39 @@ +import fs from "node:fs"; +import * as dotenv from "dotenv"; +import type { TopologyNodeConfig } from "./index.js"; + +export function loadConfig( + configPath?: string | undefined, +): TopologyNodeConfig | undefined { + let config: TopologyNodeConfig | undefined; + + if (configPath) { + config = JSON.parse(fs.readFileSync(configPath, "utf8")); + return config; + } + + const result = dotenv.config(); + if (!result.error) { + config = {}; + config.network_config = { + addresses: process.env.ADDRESSES + ? process.env.ADDRESSES.split(",") + : undefined, + bootstrap: process.env.BOOTSTRAP + ? process.env.BOOTSTRAP === "true" + : undefined, + bootstrap_peers: process.env.BOOTSTRAP_PEERS + ? process.env.BOOTSTRAP_PEERS.split(",") + : undefined, + browser_metrics: process.env.BROWSER_METRICS + ? process.env.BROWSER_METRICS === "true" + : undefined, + private_key_seed: process.env.PRIVATE_KEY_SEED + ? process.env.PRIVATE_KEY_SEED + : undefined, + }; + return config; + } + + return config; +} diff --git a/packages/node/src/run.ts b/packages/node/src/run.ts index 4f1c8fd9..7de50daa 100644 --- a/packages/node/src/run.ts +++ b/packages/node/src/run.ts @@ -1,15 +1,13 @@ -import fs from "node:fs"; import { program } from "./cli/index.js"; -import { TopologyNode, type TopologyNodeConfig } from "./index.js"; +import { loadConfig } from "./config.js"; +import { TopologyNode } from "./index.js"; +import type { TopologyNodeConfig } from "./index.js"; import { init as rpc_init } from "./rpc/index.js"; const run = async () => { program.parse(process.argv); const opts = program.opts(); - let config: TopologyNodeConfig | undefined; - if (opts.config) { - config = JSON.parse(fs.readFileSync(opts.config, "utf8")); - } + const config: TopologyNodeConfig | undefined = loadConfig(opts.config); const node = new TopologyNode(config); await node.start(); diff --git a/packages/node/src/version.ts b/packages/node/src/version.ts index 2c9a3df9..bb1d4545 100644 --- a/packages/node/src/version.ts +++ b/packages/node/src/version.ts @@ -1 +1 @@ -export const VERSION = "0.2.1-3"; +export const VERSION = "0.2.1-4"; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a582a596..d3cd3a6b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -45,16 +45,16 @@ importers: examples/canvas: dependencies: '@topology-foundation/blueprints': - specifier: 0.2.1-3 + specifier: 0.2.1-4 version: link:../../packages/blueprints '@topology-foundation/network': - specifier: 0.2.1-3 + specifier: 0.2.1-4 version: link:../../packages/network '@topology-foundation/node': - specifier: 0.2.1-3 + specifier: 0.2.1-4 version: link:../../packages/node '@topology-foundation/object': - specifier: 0.2.1-3 + specifier: 0.2.1-4 version: link:../../packages/object crypto-browserify: specifier: ^3.12.0 @@ -91,16 +91,16 @@ importers: examples/chat: dependencies: '@topology-foundation/blueprints': - specifier: 0.2.1-3 + specifier: 0.2.1-4 version: link:../../packages/blueprints '@topology-foundation/network': - specifier: 0.2.1-3 + specifier: 0.2.1-4 version: link:../../packages/network '@topology-foundation/node': - specifier: 0.2.1-3 + specifier: 0.2.1-4 version: link:../../packages/node '@topology-foundation/object': - specifier: 0.2.1-3 + specifier: 0.2.1-4 version: link:../../packages/object assemblyscript: specifier: ^0.27.29 @@ -143,13 +143,13 @@ importers: examples/grid: dependencies: '@topology-foundation/network': - specifier: 0.2.1-3 + specifier: 0.2.1-4 version: link:../../packages/network '@topology-foundation/node': - specifier: 0.2.1-3 + specifier: 0.2.1-4 version: link:../../packages/node '@topology-foundation/object': - specifier: 0.2.1-3 + specifier: 0.2.1-4 version: link:../../packages/object assemblyscript: specifier: ^0.27.29 @@ -198,16 +198,16 @@ importers: examples/local-bootstrap: dependencies: '@topology-foundation/blueprints': - specifier: 0.2.1-3 + specifier: 0.2.1-4 version: link:../../packages/blueprints '@topology-foundation/network': - specifier: 0.2.1-3 + specifier: 0.2.1-4 version: link:../../packages/network '@topology-foundation/node': - specifier: 0.2.1-3 + specifier: 0.2.1-4 version: link:../../packages/node '@topology-foundation/object': - specifier: 0.2.1-3 + specifier: 0.2.1-4 version: link:../../packages/object assemblyscript: specifier: ^0.27.29 @@ -254,7 +254,7 @@ importers: version: 4.1.2 devDependencies: '@topology-foundation/object': - specifier: 0.2.1-3 + specifier: 0.2.1-4 version: link:../object assemblyscript: specifier: ^0.27.29 @@ -326,7 +326,7 @@ importers: specifier: ^12.3.1 version: 12.3.1 '@topology-foundation/logger': - specifier: ^0.2.1-3 + specifier: ^0.2.1-4 version: link:../logger it-length-prefixed: specifier: ^9.1.0 @@ -366,20 +366,23 @@ importers: specifier: ^2.1.3 version: 2.1.3 '@topology-foundation/blueprints': - specifier: 0.2.1-3 + specifier: 0.2.1-4 version: link:../blueprints '@topology-foundation/logger': - specifier: 0.2.1-3 + specifier: 0.2.1-4 version: link:../logger '@topology-foundation/network': - specifier: 0.2.1-3 + specifier: 0.2.1-4 version: link:../network '@topology-foundation/object': - specifier: 0.2.1-3 + specifier: 0.2.1-4 version: link:../object commander: specifier: ^12.1.0 version: 12.1.0 + dotenv: + specifier: ^16.4.5 + version: 16.4.5 google-protobuf: specifier: ^3.21.2 version: 3.21.4 @@ -406,7 +409,7 @@ importers: specifier: ^2.0.0 version: 2.2.0 '@topology-foundation/logger': - specifier: ^0.2.1-3 + specifier: ^0.2.1-4 version: link:../logger ts-proto: specifier: ^2.2.4 @@ -2899,6 +2902,10 @@ packages: resolution: {integrity: sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==} engines: {node: '>=18'} + dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} + dprint-node@1.0.8: resolution: {integrity: sha512-iVKnUtYfGrYcW1ZAlfR/F59cUVL8QIhWoBJoSjkkdua/dkWIgjZfiLMeTjiB06X0ZLkQ0M2C1VbUj/CxkIf1zg==} @@ -8502,6 +8509,8 @@ snapshots: dependencies: type-fest: 4.26.1 + dotenv@16.4.5: {} + dprint-node@1.0.8: dependencies: detect-libc: 1.0.3 From a89a50f1ccd8da3f1775519631a3b8db799e0981 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ho=C3=A0ng=20Qu=E1=BB=91c=20Vi=E1=BB=87t?= Date: Fri, 1 Nov 2024 14:38:54 +0700 Subject: [PATCH 19/19] feat: fix root hash, add DAG testcases, DFS function (#220) --- packages/object/src/hashgraph/index.ts | 92 +- packages/object/tests/hashgraph.test.ts | 138 ++- pnpm-lock.yaml | 1105 ++++++++++++----------- 3 files changed, 727 insertions(+), 608 deletions(-) diff --git a/packages/object/src/hashgraph/index.ts b/packages/object/src/hashgraph/index.ts index 8c49534b..ba269009 100644 --- a/packages/object/src/hashgraph/index.ts +++ b/packages/object/src/hashgraph/index.ts @@ -1,4 +1,5 @@ import * as crypto from "node:crypto"; +import { Logger } from "@topology-foundation/logger"; import { linearizeMultiple } from "../linearize/multipleSemantics.js"; import { linearizePair } from "../linearize/pairSemantics.js"; import { @@ -7,11 +8,19 @@ import { } from "../proto/topology/object/object_pb.js"; import { BitSet } from "./bitset.js"; +const log: Logger = new Logger("hashgraph"); + // Reexporting the Vertex and Operation types from the protobuf file export { Vertex, Operation }; export type Hash = string; +export enum DepthFirstSearchState { + UNVISITED = 0, + VISITING = 1, + VISITED = 2, +} + export enum OperationType { NOP = "-1", } @@ -51,7 +60,7 @@ export class HashGraph { ) */ static readonly rootHash: Hash = - "ee075937c2a6c8ccf8d94fb2a130c596d3dbcc32910b6e744ad55c3e41b41ad6"; + "02465e287e3d086f12c6edd856953ca5ad0f01d6707bf8e410b4a601314c1ca5"; private arePredecessorsFresh = false; private reachablePredecessors: Map = new Map(); private topoSortedIndex: Map = new Map(); @@ -67,7 +76,6 @@ export class HashGraph { this.resolveConflicts = resolveConflicts; this.semanticsType = semanticsType; - // Create and add the NOP root vertex const rootVertex: Vertex = { hash: HashGraph.rootHash, nodeId: "", @@ -110,8 +118,6 @@ export class HashGraph { return vertex; } - // Time complexity: O(d), where d is the number of dependencies - // Space complexity: O(d) addVertex(operation: Operation, deps: Hash[], nodeId: string): Hash { const hash = computeHash(nodeId, operation, deps); if (this.vertices.has(hash)) { @@ -149,26 +155,43 @@ export class HashGraph { return hash; } - // Time complexity: O(V + E), Space complexity: O(V) - topologicalSort(updateBitsets = false): Hash[] { + depthFirstSearch(visited: Map = new Map()): Hash[] { const result: Hash[] = []; - const visited = new Set(); - this.reachablePredecessors.clear(); - this.topoSortedIndex.clear(); - + for (const vertex of this.getAllVertices()) { + visited.set(vertex.hash, DepthFirstSearchState.UNVISITED); + } const visit = (hash: Hash) => { - if (visited.has(hash)) return; - - visited.add(hash); + visited.set(hash, DepthFirstSearchState.VISITING); const children = this.forwardEdges.get(hash) || []; for (const child of children) { - visit(child); + if (visited.get(child) === DepthFirstSearchState.VISITING) { + log.error("::hashgraph::DFS: Cycle detected"); + return; + } + if (visited.get(child) === undefined) { + log.error("::hashgraph::DFS: Undefined child"); + return; + } + if (visited.get(child) === DepthFirstSearchState.UNVISITED) { + visit(child); + } } + result.push(hash); + visited.set(hash, DepthFirstSearchState.VISITED); }; - // Start with the root vertex + visit(HashGraph.rootHash); + + return result; + } + + topologicalSort(updateBitsets = false): Hash[] { + this.reachablePredecessors.clear(); + this.topoSortedIndex.clear(); + + const result = this.depthFirstSearch(); result.reverse(); if (!updateBitsets) return result; @@ -210,7 +233,6 @@ export class HashGraph { } } - // Amortised time complexity: O(1), Amortised space complexity: O(1) areCausallyRelatedUsingBitsets(hash1: Hash, hash2: Hash): boolean { if (!this.arePredecessorsFresh) { this.topologicalSort(true); @@ -258,6 +280,40 @@ export class HashGraph { return false; } + selfCheckConstraints(): boolean { + const degree = new Map(); + for (const vertex of this.getAllVertices()) { + const hash = vertex.hash; + degree.set(hash, 0); + } + for (const [_, children] of this.forwardEdges) { + for (const child of children) { + degree.set(child, (degree.get(child) || 0) + 1); + } + } + for (const vertex of this.getAllVertices()) { + const hash = vertex.hash; + if (degree.get(hash) !== vertex.dependencies.length) { + return false; + } + if (vertex.dependencies.length === 0) { + if (hash !== HashGraph.rootHash) { + return false; + } + } + } + + const visited = new Map(); + this.depthFirstSearch(visited); + for (const vertex of this.getAllVertices()) { + if (!visited.has(vertex.hash)) { + return false; + } + } + + return true; + } + areCausallyRelatedUsingBFS(hash1: Hash, hash2: Hash): boolean { return ( this._areCausallyRelatedUsingBFS(hash1, hash2) || @@ -269,23 +325,19 @@ export class HashGraph { return Array.from(this.frontier); } - // Time complexity: O(1), Space complexity: O(1) getDependencies(vertexHash: Hash): Hash[] { return Array.from(this.vertices.get(vertexHash)?.dependencies || []); } - // Time complexity: O(1), Space complexity: O(1) getVertex(hash: Hash): Vertex | undefined { return this.vertices.get(hash); } - // Time complexity: O(V), Space complexity: O(V) getAllVertices(): Vertex[] { return Array.from(this.vertices.values()); } } -// Time complexity: O(1), Space complexity: O(1) function computeHash( nodeId: string, operation: Operation, diff --git a/packages/object/tests/hashgraph.test.ts b/packages/object/tests/hashgraph.test.ts index b1fde2f6..764d149a 100644 --- a/packages/object/tests/hashgraph.test.ts +++ b/packages/object/tests/hashgraph.test.ts @@ -3,6 +3,68 @@ import { AddWinsSet } from "../../blueprints/src/AddWinsSet/index.js"; import { PseudoRandomWinsSet } from "../../blueprints/src/PseudoRandomWinsSet/index.js"; import { type Operation, OperationType, TopologyObject } from "../src/index.js"; +describe("HashGraph construction tests", () => { + let obj1: TopologyObject; + let obj2: TopologyObject; + + beforeEach(async () => { + obj1 = new TopologyObject("peer1", new AddWinsSet()); + obj2 = new TopologyObject("peer2", new AddWinsSet()); + }); + + test("Test: HashGraph should be DAG compatibility", () => { + /* - V1:ADD(1) + root / + \ - V2:ADD(2) + */ + const cro1 = obj1.cro as AddWinsSet; + const cro2 = obj2.cro as AddWinsSet; + + cro1.add(1); + cro2.add(2); + + obj2.merge(obj1.hashGraph.getAllVertices()); + + expect(obj2.hashGraph.selfCheckConstraints()).toBe(true); + + const linearOps = obj2.hashGraph.linearizeOperations(); + expect(linearOps).toEqual([ + { type: "add", value: 1 }, + { type: "add", value: 2 }, + ]); + }); + + test("Test: HashGraph has 2 root vertices", () => { + /* + root - V1:ADD(1) + fakeRoot - V2:ADD(1) + */ + const cro1 = obj1.cro as AddWinsSet; + cro1.add(1); + // add fake root + const hash = obj1.hashGraph.addVertex( + { + type: "root", + value: null, + }, + [], + "", + ); + obj1.hashGraph.addVertex( + { + type: "add", + value: 1, + }, + [hash], + "", + ); + expect(obj1.hashGraph.selfCheckConstraints()).toBe(false); + + const linearOps = obj1.hashGraph.linearizeOperations(); + expect(linearOps).toEqual([{ type: "add", value: 1 }]); + }); +}); + describe("HashGraph for AddWinSet tests", () => { let obj1: TopologyObject; let obj2: TopologyObject; @@ -16,8 +78,8 @@ describe("HashGraph for AddWinSet tests", () => { test("Test: Add Two Vertices", () => { /* - V1:NOP <- V2:ADD(1) <- V2:REMOVE(1) - */ + V1:NOP <- V2:ADD(1) <- V2:REMOVE(1) + */ const cro1 = obj1.cro as AddWinsSet; cro1.add(1); @@ -33,10 +95,10 @@ describe("HashGraph for AddWinSet tests", () => { test("Test: Add Two Concurrent Vertices With Same Value", () => { /* - _ V2:REMOVE(1) - V1:ADD(1) / - \ _ V3:ADD(1) - */ + _ V2:REMOVE(1) + V1:ADD(1) / + \ _ V3:ADD(1) + */ const cro1 = obj1.cro as AddWinsSet; const cro2 = obj2.cro as AddWinsSet; @@ -61,10 +123,10 @@ describe("HashGraph for AddWinSet tests", () => { test("Test: Add Two Concurrent Vertices With Different Values", () => { /* - _ V2:REMOVE(1) - V1:ADD(1) / - \ _ V3:ADD(2) - */ + _ V2:REMOVE(1) + V1:ADD(1) / + \ _ V3:ADD(2) + */ const cro1 = obj1.cro as AddWinsSet; const cro2 = obj2.cro as AddWinsSet; @@ -91,10 +153,10 @@ describe("HashGraph for AddWinSet tests", () => { test("Test: Tricky Case", () => { /* - ___ V2:REMOVE(1) <- V4:ADD(10) - V1:ADD(1) / - \ ___ V3:ADD(1) <- V5:REMOVE(5) - */ + ___ V2:REMOVE(1) <- V4:ADD(10) + V1:ADD(1) / + \ ___ V3:ADD(1) <- V5:REMOVE(5) + */ const cro1 = obj1.cro as AddWinsSet; const cro2 = obj2.cro as AddWinsSet; @@ -125,10 +187,10 @@ describe("HashGraph for AddWinSet tests", () => { test("Test: Yuta Papa's Case", () => { /* - ___ V2:REMOVE(1) <- V4:ADD(2) - V1:ADD(1) / - \ ___ V3:REMOVE(2) <- V5:ADD(1) - */ + ___ V2:REMOVE(1) <- V4:ADD(2) + V1:ADD(1) / + \ ___ V3:REMOVE(2) <- V5:ADD(1) + */ const cro1 = obj1.cro as AddWinsSet; const cro2 = obj2.cro as AddWinsSet; @@ -157,14 +219,14 @@ describe("HashGraph for AddWinSet tests", () => { test("Test: Mega Complex Case", () => { /* - __ V6:ADD(3) - / - ___ V2:ADD(1) <-- V3:RM(2) <-- V7:RM(1) <-- V8:RM(3) - / ______________/ - V1:ADD(1)/ / - \ / - \ ___ V4:RM(2) <-- V5:ADD(2) <-- V9:RM(1) - */ + __ V6:ADD(3) + / + ___ V2:ADD(1) <-- V3:RM(2) <-- V7:RM(1) <-- V8:RM(3) + / ______________/ + V1:ADD(1)/ / + \ / + \ ___ V4:RM(2) <-- V5:ADD(2) <-- V9:RM(1) + */ const cro1 = obj1.cro as AddWinsSet; const cro2 = obj2.cro as AddWinsSet; @@ -212,14 +274,14 @@ describe("HashGraph for AddWinSet tests", () => { test("Test: Mega Complex Case 1", () => { /* - __ V5:ADD(3) - / - ___ V2:ADD(1) <-- V3:RM(2) <-- V6:RM(1) <-- V8:RM(3) - / ^ - V1:ADD(1)/ \ - \ \ - \ ___ V4:RM(2) <-------------------- V7:ADD(2) <-- V9:RM(1) - */ + __ V5:ADD(3) + / + ___ V2:ADD(1) <-- V3:RM(2) <-- V6:RM(1) <-- V8:RM(3) + / ^ + V1:ADD(1)/ \ + \ \ + \ ___ V4:RM(2) <-------------------- V7:ADD(2) <-- V9:RM(1) + */ const cro1 = obj1.cro as AddWinsSet; const cro2 = obj2.cro as AddWinsSet; @@ -269,10 +331,10 @@ describe("HashGraph for AddWinSet tests", () => { test("Test: Joao's latest brain teaser", () => { /* - __ V2:Add(2) <------------\ - V1:Add(1) / \ - V5:RM(2) - \__ V3:RM(2) <- V4:RM(2) <--/ - */ + __ V2:Add(2) <------------\ + V1:Add(1) / \ - V5:RM(2) + \__ V3:RM(2) <- V4:RM(2) <--/ + */ const cro1 = obj1.cro as AddWinsSet; const cro2 = obj2.cro as AddWinsSet; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d3cd3a6b..44e6ca9d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,7 +16,7 @@ importers: version: 4.2.0(release-it@17.10.0(typescript@5.6.3)) '@types/node': specifier: ^22.5.4 - version: 22.8.1 + version: 22.8.4 assemblyscript: specifier: ^0.27.29 version: 0.27.30 @@ -34,13 +34,13 @@ importers: version: 5.6.3 vite: specifier: ^5.4.9 - version: 5.4.10(@types/node@22.8.1)(terser@5.36.0) + version: 5.4.10(@types/node@22.8.4)(terser@5.36.0) vite-tsconfig-paths: specifier: ^5.0.1 - version: 5.0.1(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(terser@5.36.0)) + version: 5.0.1(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.4)(terser@5.36.0)) vitest: specifier: ^2.1.1 - version: 2.1.3(@types/node@22.8.1)(terser@5.36.0) + version: 2.1.4(@types/node@22.8.4)(terser@5.36.0) examples/canvas: dependencies: @@ -67,14 +67,14 @@ importers: version: 3.0.0 ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@22.8.1)(typescript@5.6.3) + version: 10.9.2(@types/node@22.8.4)(typescript@5.6.3) vm-browserify: specifier: ^1.1.2 version: 1.1.2 devDependencies: '@types/node': specifier: ^22.5.4 - version: 22.8.1 + version: 22.8.4 ts-loader: specifier: ^9.3.1 version: 9.5.1(typescript@5.6.3)(webpack@5.95.0) @@ -83,10 +83,10 @@ importers: version: 5.6.3 vite: specifier: ^5.4.9 - version: 5.4.10(@types/node@22.8.1)(terser@5.36.0) + version: 5.4.10(@types/node@22.8.4)(terser@5.36.0) vite-plugin-node-polyfills: specifier: ^0.22.0 - version: 0.22.0(rollup@4.24.2)(vite@5.4.10(@types/node@22.8.1)(terser@5.36.0)) + version: 0.22.0(rollup@4.24.3)(vite@5.4.10(@types/node@22.8.4)(terser@5.36.0)) examples/chat: dependencies: @@ -116,7 +116,7 @@ importers: version: 3.0.0 ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@22.8.1)(typescript@5.6.3) + version: 10.9.2(@types/node@22.8.4)(typescript@5.6.3) uint8arrays: specifier: ^5.1.0 version: 5.1.0 @@ -126,7 +126,7 @@ importers: devDependencies: '@types/node': specifier: ^22.5.4 - version: 22.8.1 + version: 22.8.4 ts-loader: specifier: ^9.5.1 version: 9.5.1(typescript@5.6.3)(webpack@5.95.0) @@ -135,10 +135,10 @@ importers: version: 5.6.3 vite: specifier: ^5.4.9 - version: 5.4.10(@types/node@22.8.1)(terser@5.36.0) + version: 5.4.10(@types/node@22.8.4)(terser@5.36.0) vite-plugin-node-polyfills: specifier: ^0.22.0 - version: 0.22.0(rollup@4.24.2)(vite@5.4.10(@types/node@22.8.1)(terser@5.36.0)) + version: 0.22.0(rollup@4.24.3)(vite@5.4.10(@types/node@22.8.4)(terser@5.36.0)) examples/grid: dependencies: @@ -165,13 +165,13 @@ importers: version: 0.11.10 react-spring: specifier: ^9.7.4 - version: 9.7.4(@react-three/fiber@8.17.10(react-dom@18.3.1(react@18.3.1))(react-native@0.76.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)(three@0.169.0))(konva@9.3.16)(react-dom@18.3.1(react@18.3.1))(react-konva@18.2.10(konva@9.3.16)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.76.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react-zdog@1.2.2)(react@18.3.1)(three@0.169.0)(zdog@1.1.3) + version: 9.7.4(@react-three/fiber@8.17.10(react-dom@18.3.1(react@18.3.1))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)(three@0.169.0))(konva@9.3.16)(react-dom@18.3.1(react@18.3.1))(react-konva@18.2.10(konva@9.3.16)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react-zdog@1.2.2)(react@18.3.1)(three@0.169.0)(zdog@1.1.3) stream-browserify: specifier: ^3.0.0 version: 3.0.0 ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@22.8.1)(typescript@5.6.3) + version: 10.9.2(@types/node@22.8.4)(typescript@5.6.3) uint8arrays: specifier: ^5.1.0 version: 5.1.0 @@ -181,7 +181,7 @@ importers: devDependencies: '@types/node': specifier: ^22.5.4 - version: 22.8.1 + version: 22.8.4 ts-loader: specifier: ^9.5.1 version: 9.5.1(typescript@5.6.3)(webpack@5.95.0) @@ -190,10 +190,10 @@ importers: version: 5.6.3 vite: specifier: ^5.4.9 - version: 5.4.10(@types/node@22.8.1)(terser@5.36.0) + version: 5.4.10(@types/node@22.8.4)(terser@5.36.0) vite-plugin-node-polyfills: specifier: ^0.22.0 - version: 0.22.0(rollup@4.24.2)(vite@5.4.10(@types/node@22.8.1)(terser@5.36.0)) + version: 0.22.0(rollup@4.24.3)(vite@5.4.10(@types/node@22.8.4)(terser@5.36.0)) examples/local-bootstrap: dependencies: @@ -223,7 +223,7 @@ importers: version: 3.0.0 ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@22.8.1)(typescript@5.6.3) + version: 10.9.2(@types/node@22.8.4)(typescript@5.6.3) uint8arrays: specifier: ^5.1.0 version: 5.1.0 @@ -233,7 +233,7 @@ importers: devDependencies: '@types/node': specifier: ^22.5.4 - version: 22.8.1 + version: 22.8.4 ts-loader: specifier: ^9.5.1 version: 9.5.1(typescript@5.6.3)(webpack@5.95.0) @@ -242,10 +242,10 @@ importers: version: 5.6.3 vite: specifier: ^5.4.6 - version: 5.4.10(@types/node@22.8.1)(terser@5.36.0) + version: 5.4.10(@types/node@22.8.4)(terser@5.36.0) vite-plugin-node-polyfills: specifier: ^0.22.0 - version: 0.22.0(rollup@4.24.2)(vite@5.4.10(@types/node@22.8.1)(terser@5.36.0)) + version: 0.22.0(rollup@4.24.3)(vite@5.4.10(@types/node@22.8.4)(terser@5.36.0)) packages/blueprints: dependencies: @@ -273,7 +273,7 @@ importers: dependencies: '@bufbuild/protobuf': specifier: ^2.0.0 - version: 2.2.0 + version: 2.2.1 '@chainsafe/libp2p-gossipsub': specifier: ^14.1.0 version: 14.1.0 @@ -285,43 +285,43 @@ importers: version: 7.0.1 '@libp2p/autonat': specifier: ^2.0.6 - version: 2.0.9 + version: 2.0.10 '@libp2p/bootstrap': specifier: ^11.0.6 - version: 11.0.9 + version: 11.0.10 '@libp2p/circuit-relay-v2': specifier: ^2.1.2 version: 2.1.5 '@libp2p/crypto': specifier: ^5.0.5 - version: 5.0.5 + version: 5.0.6 '@libp2p/dcutr': specifier: ^2.0.6 - version: 2.0.9 + version: 2.0.10 '@libp2p/devtools-metrics': specifier: ^1.1.5 - version: 1.1.7 + version: 1.1.8 '@libp2p/identify': specifier: ^3.0.6 - version: 3.0.9 + version: 3.0.10 '@libp2p/mdns': specifier: ^11.0.8 - version: 11.0.9 + version: 11.0.10 '@libp2p/peer-id': specifier: ^5.0.4 - version: 5.0.6 + version: 5.0.7 '@libp2p/pubsub-peer-discovery': specifier: ^11.0.0 version: 11.0.0 '@libp2p/webrtc': specifier: ^5.0.9 - version: 5.0.14(react-native@0.76.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)) + version: 5.0.16(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)) '@libp2p/websockets': specifier: ^9.0.7 - version: 9.0.9 + version: 9.0.11 '@libp2p/webtransport': specifier: ^5.0.9 - version: 5.0.14 + version: 5.0.16 '@multiformats/multiaddr': specifier: ^12.3.1 version: 12.3.1 @@ -339,7 +339,7 @@ importers: version: 3.0.1 libp2p: specifier: ^2.1.6 - version: 2.1.10 + version: 2.2.1 ts-proto: specifier: ^2.2.4 version: 2.2.5 @@ -349,10 +349,10 @@ importers: devDependencies: '@libp2p/interface': specifier: ^2.1.3 - version: 2.1.3 + version: 2.2.0 react-native-webrtc: specifier: ^124.0.3 - version: 124.0.4(react-native@0.76.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)) + version: 124.0.4(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)) packages/node: dependencies: @@ -364,7 +364,7 @@ importers: version: 1.12.2 '@libp2p/interface': specifier: ^2.1.3 - version: 2.1.3 + version: 2.2.0 '@topology-foundation/blueprints': specifier: 0.2.1-4 version: link:../blueprints @@ -389,10 +389,10 @@ importers: devDependencies: '@bufbuild/protobuf': specifier: ^2.0.0 - version: 2.2.0 + version: 2.2.1 '@types/node': specifier: ^22.5.4 - version: 22.8.1 + version: 22.8.4 tsx: specifier: 4.19.1 version: 4.19.1 @@ -401,13 +401,13 @@ importers: version: 5.6.3 vitest: specifier: ^2.1.1 - version: 2.1.3(@types/node@22.8.1)(terser@5.36.0) + version: 2.1.4(@types/node@22.8.4)(terser@5.36.0) packages/object: dependencies: '@bufbuild/protobuf': specifier: ^2.0.0 - version: 2.2.0 + version: 2.2.1 '@topology-foundation/logger': specifier: ^0.2.1-4 version: link:../logger @@ -425,20 +425,20 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@babel/code-frame@7.26.0': - resolution: {integrity: sha512-INCKxTtbXtcNbUZ3YXutwMpEleqttcswhAdee7dhuoVrD2cnuc3PqtERBtxkX5nziX9vnBL8WXmSGwv8CuPV6g==} + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.26.0': - resolution: {integrity: sha512-qETICbZSLe7uXv9VE8T/RWOdIE5qqyTucOt4zLYMafj2MRO271VGgLd4RACJMeBO37UPWhXiKMBk7YlJ0fOzQA==} + '@babel/compat-data@7.26.2': + resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==} engines: {node: '>=6.9.0'} '@babel/core@7.26.0': resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} engines: {node: '>=6.9.0'} - '@babel/generator@7.26.0': - resolution: {integrity: sha512-/AIkAmInnWwgEAJGQr9vY0c66Mj6kjkE2ZPB1PurTRaRAh3U+J45sAQMjQDJdh4WbR3l0x5xkimXBKyBXXAu2w==} + '@babel/generator@7.26.2': + resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.25.9': @@ -532,8 +532,8 @@ packages: resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.26.1': - resolution: {integrity: sha512-reoQYNiAJreZNsJzyrDNzFQ+IQ5JFiIzAHJg9bn94S3l+4++J7RsIhNMoB+lgP/9tpmiAQqspv+xfdxTSzREOw==} + '@babel/parser@7.26.2': + resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} engines: {node: '>=6.0.0'} hasBin: true @@ -1160,8 +1160,8 @@ packages: cpu: [x64] os: [win32] - '@bufbuild/protobuf@2.2.0': - resolution: {integrity: sha512-+imAQkHf7U/Rwvu0wk1XWgsP3WnpCWmK7B48f0XqSNzgk64+grljTKC7pnO/xBiEMUziF7vKRfbBnOQhg126qQ==} + '@bufbuild/protobuf@2.2.1': + resolution: {integrity: sha512-gdWzq7eX017a1kZCU/bP/sbk4e0GZ6idjsXOcMrQwODCb/rx985fHJJ8+hCu79KpuG7PfZh7bo3BBjPH37JuZw==} '@chainsafe/as-chacha20poly1305@0.1.0': resolution: {integrity: sha512-BpNcL8/lji/GM3+vZ/bgRWqJ1q5kwvTFmGPk7pxm/QQZDbaMI98waOHjEymTjq2JmdD/INdNBFOVSyJofXg7ew==} @@ -1571,74 +1571,74 @@ packages: '@leichtgewicht/ip-codec@2.0.5': resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} - '@libp2p/autonat@2.0.9': - resolution: {integrity: sha512-ukmQsglb3+UVUuyYdFDXFf8KeWQNPPptOVSbbT+gsP/P90JApIt6hpApD0S5EY2Xrfui8+gKuCdbxr6G2JnCFg==} + '@libp2p/autonat@2.0.10': + resolution: {integrity: sha512-zLE4ZPuGhONHA/BMefEcc70Qz2Qp0xmK1tMVXr4dJNi2BnQ/1N4b3UwEoJbnzwjT2ClbJdCrO95Ab8qb9vgaeA==} - '@libp2p/bootstrap@11.0.9': - resolution: {integrity: sha512-0c//fq1LkYW/2CFxXTz0Z8/hisGl38Zk7LaYePJe41E6F69Bh0akDvG7rAVPGwTutw3rv0Pj2W2MsSl8woZAyA==} + '@libp2p/bootstrap@11.0.10': + resolution: {integrity: sha512-9LQ4R76lBXMgkdiYIeEIaYxmtxmFvgkuV0LVuFL4RPQ9dZ3+rv4TK+KzDQHOfhuTFtYI1ZX2M9FME2iCApC5Gw==} '@libp2p/circuit-relay-v2@2.1.5': resolution: {integrity: sha512-7uJicxChosVPcj7r9xmeI2Z318sgOk2VclagPWjTFCZSMdSHPtou8G4i0CJEoWAI+Afpxuz0h8aPb90MpVbWCA==} - '@libp2p/crypto@5.0.5': - resolution: {integrity: sha512-bs3PpSQS59I/YD2RnwcPv88pF/vB6GH2rw4jqb/0xm60LfRuSm0tNoCrJMuyG2pFz89WuKM+0BpnEWQi4alwCg==} + '@libp2p/crypto@5.0.6': + resolution: {integrity: sha512-5mD/riNxUuSOerk3aPXUUMN96lwZsrU33lp97ySfffloh2WhLZcjVJszibBgIP7DP5nqmSOWY9++rqrBuYHvnQ==} - '@libp2p/dcutr@2.0.9': - resolution: {integrity: sha512-W1D5f71XF4t4OfbilpwhirP3nyo1k1iwFTT+0Qs6lxZc2AJMvbgwLpy8vWSbeue2mUwcFaRhPraVDp42vcUO8g==} + '@libp2p/dcutr@2.0.10': + resolution: {integrity: sha512-q8xVutr9x7NValkLZav7oGolvrzeHhV01rJuyyIu8aOK3Buq1VZynSRjHS41k+hK6eaQyBYL4cJHV9rXp7tgKQ==} - '@libp2p/devtools-metrics@1.1.7': - resolution: {integrity: sha512-XkxM3KE5NhFpfapU7GdBitNY2FdHrnyrQTYS60Nbh1qkWC9/49cJFzifH338ffstO3KqC1FS3xng0AgTTeppoQ==} + '@libp2p/devtools-metrics@1.1.8': + resolution: {integrity: sha512-e8zs2SaC9n6JxXJ8EJ5uqm039wwQRdC1sviPpsIu7NGiDCdWkEYNE/tXD8QbiFoKtDOq53SF0ifIweHW/d8cuA==} - '@libp2p/identify@3.0.9': - resolution: {integrity: sha512-VJjYDoOmgjw0i6xIMQxeG4B+ejzhTXkvSQ1orAhjm/aPlX542kcgAQmR9ZXiPT9OYROliNe6i4bS1MepDkO6sg==} + '@libp2p/identify@3.0.10': + resolution: {integrity: sha512-IeFUojzx90j0M7/WjxLHnoaPKG5AksRQrIzLkpJtMeBL+TA9rMLW1n2HM8SD3EGsHV1vDTlkx0e0PHbFVtTnnA==} - '@libp2p/interface-internal@2.0.9': - resolution: {integrity: sha512-imXoOdKvvaQJLcmkv2ffVY9CyNbktsY2cN7aGRg8Dr1t9C7c/EDhSEfWcRQkxMAVib4jy/KnyL6JZKv5gWPu3g==} + '@libp2p/interface-internal@2.0.10': + resolution: {integrity: sha512-LRnn6w5rtvMQlEukihDI5NhSZXZj7ITFT1Hbo3Dn3HGo1oxZe7oWh7ERc5LwZw835QHGzFKZYerBFKdqxoWsFQ==} - '@libp2p/interface@2.1.3': - resolution: {integrity: sha512-t1i2LWcnTGJEr7fDMslA8wYwBzJP81QKBlrBHoGhXxqqpRQa9035roCh/Akuw5RUgjKE47/ezjuzo90aWsJB8g==} + '@libp2p/interface@2.2.0': + resolution: {integrity: sha512-Pn3P5ixDggBjDyuULT0GvwdgD3JA426OqZ0e521mI7ysS+/M9Z9fp4Qcy8JrkJ45bLmIi9cgrNrefuU/Zu+bAQ==} - '@libp2p/logger@5.1.2': - resolution: {integrity: sha512-To14ikSC+fnNXO+GkZB/Vj+kOGbdGcdpHdAMxvAWjm69ILDreGUlcDVotnAKVtN2bPAHL3Z0XzqDyKeRI6j73A==} + '@libp2p/logger@5.1.3': + resolution: {integrity: sha512-NUVWEWGbXlBDgDE5ntdm51+ZICmaKYI8mor6KrlPeB1WXDyIFxRWIBw6uzt+HgprQJWzLTojeUEGv6OPsj95Dg==} - '@libp2p/mdns@11.0.9': - resolution: {integrity: sha512-frV2Y4p712WdzneBK8ZcG1ax/JXcKEV92I2rw7OOxyzLriSZA1TTG07ZaQoVo01rgN7scJQj30+XRf8xWVFrhA==} + '@libp2p/mdns@11.0.10': + resolution: {integrity: sha512-9U/byQsGmTC6Vqc+DaIsFPpIWBlh7CHT24PSg4CvUHC8CrypHADlTEGUxQjP5KTW1i50ZR1hkGlQZUC592RQxw==} - '@libp2p/multistream-select@6.0.7': - resolution: {integrity: sha512-37CE4aKUlETR6FT/9yb3DXp0xMLSsz2k0Qh061IPO2WZDswwjcU8qm/ADWqEtwsvOldfoAF7pTH4FaXktC5cEw==} + '@libp2p/multistream-select@6.0.8': + resolution: {integrity: sha512-CSgTXvuw5ObZs/EIa4mtynsYEO+BxyZTNz3AEgjsPyZKxLJ9usrZ8lGxn4sK4g65CKcTI2mVJBmh0duz+sXxBw==} - '@libp2p/peer-collections@6.0.9': - resolution: {integrity: sha512-SQ83XUrxPoBdIezCntbXlhNxeNEqBfu/JznquoKFLVCfoTQm0251F1tApys3liGX4l1VJaLGLhLNd6dAmDRTyQ==} + '@libp2p/peer-collections@6.0.10': + resolution: {integrity: sha512-KQQiBZ2Y3+wvxjfIWbUCL0suCRVn5ylLuQ2r+OGXLA7LtgRw1RLQnUHHFVoY+CE9pvfIfamwTFlkZhWtvi271w==} - '@libp2p/peer-id@5.0.6': - resolution: {integrity: sha512-gWzWm/z9dsCxL9TiOPd4VmS0V3GKMSvPWGLuNEvSA2j8+aqTzZ7jjQrF/SJtAJygD0h5jxvUnC1q05YaQUsTNA==} + '@libp2p/peer-id@5.0.7': + resolution: {integrity: sha512-ecF0Mu4Nxy8IHUMBYVNIEihjUlx52DM+X3CIfBItvGqvnhrUSkJJjkska2dJX3yf2J8wufzCT3jCg4NZWmndYg==} - '@libp2p/peer-record@8.0.9': - resolution: {integrity: sha512-Ixiha//G7oCzQXSXHyXhv4Xp4qzVGSZLKUWmgUuLpqnlHrVXcqPLmPx0vkOik3ndIGriYGj5Hi7zAfCG0BN4oQ==} + '@libp2p/peer-record@8.0.10': + resolution: {integrity: sha512-k5A5YFhx7xGgFjiFWp0j8Cbw5kUYLJoBY9I3YTIHrieusLUUkMtUkYeuWeagNL1JYcXr06gguoIaYBRNCMQAow==} - '@libp2p/peer-store@11.0.9': - resolution: {integrity: sha512-gBuSXihGtxD2r/KylgcaVm0fv0hy30j74mWcmMokpwqwLH2aLReGN9QelubmXtH2cnaRafD66QutuHNORIgRlg==} + '@libp2p/peer-store@11.0.10': + resolution: {integrity: sha512-yUkIAKrk2XAJt01SVOvxpsaT/FZ9ju7j67TJhvh0NUon/dMYSQKVHwykK8SI/dxZi/7cDslSKIbIKv7eU5ZUTQ==} '@libp2p/pubsub-peer-discovery@11.0.0': resolution: {integrity: sha512-QlknUb2SCbmWScWzv2TS1tJIErYzr2HJoA93ZKYAlz5Dsfr9P1I17HvvlOIt/Q2PFp1aMOJOOF5mNsFV5kU73w==} - '@libp2p/pubsub@10.0.9': - resolution: {integrity: sha512-8f6anvHz2BT3jvMrbkb3P1jlYluk6/0CiBM+9dO9JgItdANmF3uJk7FxZjOTmJAipxxnd7Gglno47AA3xnEEng==} + '@libp2p/pubsub@10.0.10': + resolution: {integrity: sha512-LMEcMa2aVs3V8kUQUmWYEMf0WvkteJ6EJOnR+cxFj+icsE4LZCqAG7zoZNUJeiVW6UDLmv1qolWWQayHrslKTw==} - '@libp2p/simple-metrics@1.2.5': - resolution: {integrity: sha512-aOf0NqEQAyJQ55JMWpsYvl+olvSqFF6R0NkzSuK2TVvauGQ5PIqz48hBzZvmxp0JQpFgV8Ma7ECq6Vsg/Uvs8Q==} + '@libp2p/simple-metrics@1.2.6': + resolution: {integrity: sha512-BCyL9DGRqP7FV+KlA2NfTFnz7DeZh8DV84g/d7EsdzLdDycXgHL0aZ5zS51eQ+B6ad1nrP1OESRdgC4a/pmYpg==} - '@libp2p/utils@6.1.2': - resolution: {integrity: sha512-zjzjcLz2UlX29I5xM8dJ+7IEYJ6zE91RMYf2O4lLKQue/JYUjtCyPdlX6lDG7KhgDyoyB+buN6PVutWlFQteLg==} + '@libp2p/utils@6.1.3': + resolution: {integrity: sha512-n1D6phOXGkqE3tuvmZwm5gaHKcGanlKwCWEBlrZqx9SSCyd5U5C58BcyQ8YH5/nb4kYMI7HyjomfQAVs2S2R9Q==} - '@libp2p/webrtc@5.0.14': - resolution: {integrity: sha512-srGqy36SqyIxU1mvkOmIlkHflOsnxkise3fD54YuPkrzToH2be1X/NUJ39xViv/JL6V5hu29LJXXp674jfeEpw==} + '@libp2p/webrtc@5.0.16': + resolution: {integrity: sha512-+o82zclk0d8HVGfI1pNiypCvhC0boubRVIJ/5+JSyUbZFpTNDelBb6DziI7s6NPVn0OnNvlfS6xWO3cetw9qag==} - '@libp2p/websockets@9.0.9': - resolution: {integrity: sha512-8Y3WR80H3mBTkHrVqrP7CqHjiCPEH2ZThHkHq6OY/BhT7CcISWl9mtTcfalQ92JSnMP4VgHd/IwAzSPlFXVe2g==} + '@libp2p/websockets@9.0.11': + resolution: {integrity: sha512-GoX323NMnbOwPu4Cq49XD9AwKLJfOr/R4H5b21ZCpgPIryVGmKUUzS8tWVdBu8RlWcRwCqz7rTUGZ95TKJeVwQ==} - '@libp2p/webtransport@5.0.14': - resolution: {integrity: sha512-m46mMOsCUybofa4W6YGCcs9C34AlbMNcb4l8BOR8ZUecwNP37/RnbZEUyyWIiVbygeaLk3GZ8xlTnezzOslbqA==} + '@libp2p/webtransport@5.0.16': + resolution: {integrity: sha512-0CRugE+RlqhDasn/bFq45PjiyBLNnBeTSAfwVI9sYBV0irPh1Fg8nNunxNIXkIfCptnB9UlxKS1Ho2vwwEscdg==} '@multiformats/dns@1.0.6': resolution: {integrity: sha512-nt/5UqjMPtyvkG9BQYdJ4GfLK3nMqGpFZOzf4hAmIa0sJh2LlS9YKXZ4FgwBDsaHvzZqR/rUFIywIc7pkHNNuw==} @@ -1646,11 +1646,11 @@ packages: '@multiformats/mafmt@12.1.6': resolution: {integrity: sha512-tlJRfL21X+AKn9b5i5VnaTD6bNttpSpcqwKVmDmSHLwxoz97fAHaepqFOk/l1fIu94nImIXneNbhsJx/RQNIww==} - '@multiformats/multiaddr-matcher@1.3.0': - resolution: {integrity: sha512-D0zKDNwLp279uEjPEVQCWej3X+ugcV93JqQ7OQzve4NiML/C7pZoYefoM+Exb25VZd+6agdIshxs+4D7E5jIhg==} + '@multiformats/multiaddr-matcher@1.4.0': + resolution: {integrity: sha512-Riu+JbTolhzAEgZH3xexLKVn2Oe+xUEPCNHuURqKcE9Pa3RxwsuhldykUWmbsDifXOV4TJCc1LGADFHmpS1y5w==} - '@multiformats/multiaddr-to-uri@10.1.1': - resolution: {integrity: sha512-8GlXnFmLq3KXXMaGCqOBf8Zd5suTY7p8SlwPrgpdL0LzxG+PjiH2k8QcPEk9JFVjfOgY1XfPYSn3mAiliC4tZw==} + '@multiformats/multiaddr-to-uri@10.1.2': + resolution: {integrity: sha512-6sicfYRjJlHJn4bwsQancs8kXncWU4dDN/+V9sMVTYp9hi8ovWgVkK75AbAv4SfhztmmI+oufVUncQ1n+SukKQ==} '@multiformats/multiaddr@12.3.1': resolution: {integrity: sha512-yoGODQY4nIj41ENJClucS8FtBoe8w682bzbKldEQr9lSlfdHqAsRC+vpJAOBpiMwPps1tHua4kxrDmvprdhoDQ==} @@ -1772,28 +1772,28 @@ packages: '@protobufjs/utf8@1.1.0': resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - '@react-native/assets-registry@0.76.0': - resolution: {integrity: sha512-U8KLV+PC/cRIiDpb1VbeGuEfKq2riZZtNVLp1UOyKWfPbWWu8j6Fr95w7j+nglp41z70iBeF2OmCiVnRvtNklA==} + '@react-native/assets-registry@0.76.1': + resolution: {integrity: sha512-1mcDjyvC4Z+XYtY+Abl6pW9P49l/9HJmRChX7EHF1SoXe7zPAPBoAqeZsJNtf8dhJR3u/eGvapr1yJq8T/psEg==} engines: {node: '>=18'} - '@react-native/babel-plugin-codegen@0.76.0': - resolution: {integrity: sha512-HOi45pqlZnCTeR4jJ/zK0FB12r08CI9O70uBjVUqmzvHIrWmL5FaEFp6BPVFOjjXtUsl3JZ2Mle7WpsAP2PQBA==} + '@react-native/babel-plugin-codegen@0.76.1': + resolution: {integrity: sha512-V9bGLyEdAF39nvn4L5gaJcPX1SvCHPJhaT3qfpVGvCnl7WPhdRyCq++WsN8HXlpo6WOAf6//oruLnLdl3RNM4Q==} engines: {node: '>=18'} - '@react-native/babel-preset@0.76.0': - resolution: {integrity: sha512-HgQt4MyuWLcnrIglXn7GNPPVwtzZ4ffX+SUisdhmPtJCHuP8AOU3HsgOKLhqVfEGWTBlE4kbWoTmmLU87IJaOw==} + '@react-native/babel-preset@0.76.1': + resolution: {integrity: sha512-b6YRmA13CmVuTQKHRen/Q0glHwmZFZoEDs+MJ1NL0UNHq9V5ytvdwTW1ntkmjtXuTnPMzkwYvumJBN9UTZjkBA==} engines: {node: '>=18'} peerDependencies: '@babel/core': '*' - '@react-native/codegen@0.76.0': - resolution: {integrity: sha512-x0zzK1rb7ZSIAeHRcRSjRo+VtLROjln1IKnQSPLEZEdyQfWNXqgiMk59E5hW7KE6I05upqfbf85PRAb5WndXdw==} + '@react-native/codegen@0.76.1': + resolution: {integrity: sha512-7lE0hk2qq27wVeK5eF654v7XsKoRa7ficrfSwIDEDZ1aLB2xgUzLrsq+glSAP9EuzT6ycHhtD3QyqI+TqnlS/A==} engines: {node: '>=18'} peerDependencies: '@babel/preset-env': ^7.1.6 - '@react-native/community-cli-plugin@0.76.0': - resolution: {integrity: sha512-JFU5kmo+lUf5vOsieJ/dGS71Z2+qV3leXbKW6p8cn5aVfupVmtz/uYcFVdGzEGIGJ3juorYOZjpG8Qz91FrUZw==} + '@react-native/community-cli-plugin@0.76.1': + resolution: {integrity: sha512-dECc1LuleMQDX/WK2oJInrYCpHb3OFBJxYkhPOAXb9HiktMWRA9T93qqpTDshmtLdYqvxeO9AM5eeoSL412WnQ==} engines: {node: '>=18'} peerDependencies: '@react-native-community/cli-server-api': '*' @@ -1801,33 +1801,33 @@ packages: '@react-native-community/cli-server-api': optional: true - '@react-native/debugger-frontend@0.76.0': - resolution: {integrity: sha512-v4J22ZN1/7BQYhYvnZYi2pzd87MmTCEnxtTiktaUOhmx3YSF47LGo1Q2UfUE5YOzoRftiJTXDKvzDbI/hqAzgg==} + '@react-native/debugger-frontend@0.76.1': + resolution: {integrity: sha512-0gExx7GR8o2ctGfjIZ9+x54iFbg0eP6+kMYzRA6AcgmFAmMGLADMmjtObCN0CqGeZyWtdVVqcv5mAwRwmMlNWA==} engines: {node: '>=18'} - '@react-native/dev-middleware@0.76.0': - resolution: {integrity: sha512-XvSnCDwCghWCVNtGpoF30xgA1EzxvlGsEyhJCUe0uLMDaaVxr/ZkgD3nZ+/l4cEm1qlrlcAZoGctnUgrzHiTaA==} + '@react-native/dev-middleware@0.76.1': + resolution: {integrity: sha512-htaFSN2dwI0CinsMxjRuvIVdSDN6d6TDPeOJczM1bdAYalZX1M58knTKs5LJDComW5tleOCAg5lS5tIeFlM9+Q==} engines: {node: '>=18'} - '@react-native/gradle-plugin@0.76.0': - resolution: {integrity: sha512-MhsAahV/Ju0Md1x79ljaDsNzzFY02TsDqxSfOS8vc4trZuM0imFf7VEBitOydNDTf9NqzAqJ9p8j7OSuxUEvLg==} + '@react-native/gradle-plugin@0.76.1': + resolution: {integrity: sha512-X7rNFltPa9QYxvYrQGaSCw7U57C+y+DwspXf4AnLZj0bQm9tL6UYpijh5vE3VmPcHn76/RNU2bpFjVvWg6gjqw==} engines: {node: '>=18'} - '@react-native/js-polyfills@0.76.0': - resolution: {integrity: sha512-0UzEqvg85Bn0BpgNG80wzbiWvNypwdl64sbRs/sEvIDjzgq/tM+u3KoneSD5tP72BCydAqXFfepff3FZgImfbA==} + '@react-native/js-polyfills@0.76.1': + resolution: {integrity: sha512-HO3fzJ0FnrnQGmxdXxh2lcGGAMfaX9h1Pg1Zh38MkVw35/KnZHxHqxg6cruze6iWwZdfqSoIcQoalmMuAHby7Q==} engines: {node: '>=18'} - '@react-native/metro-babel-transformer@0.76.0': - resolution: {integrity: sha512-aq0MrjaOxDitSqQbttBcOt+5tjemCabhEX2gGthy8cNeZokBa2raoHQInDo9iBBN1ePKDCwKGypyC8zKA5dksQ==} + '@react-native/metro-babel-transformer@0.76.1': + resolution: {integrity: sha512-LUAKqgsrioXS2a+pE0jak8sutTbLo3T34KWv7mdVUZ5lUACpqkIql1EFtIQlWjIcR4oZE480CkPbRHBI681tkQ==} engines: {node: '>=18'} peerDependencies: '@babel/core': '*' - '@react-native/normalize-colors@0.76.0': - resolution: {integrity: sha512-r+pjeIhzehb+bJUUUrztOQb+n6J9DeaLbF6waLgiHa5mFOiwP/4/iWS68inSZnnBtmXHkN2IYiMXzExx8hieWA==} + '@react-native/normalize-colors@0.76.1': + resolution: {integrity: sha512-/+CUk/wGWIdXbJYVLw/q6Fs8Z0x91zzfXIbNiZUdSW1TNEDmytkF371H8a1/Nx3nWa1RqCMVsaZHCG4zqxeDvg==} - '@react-native/virtualized-lists@0.76.0': - resolution: {integrity: sha512-WT3Xi1+ikmWWdbrv3xnl8wYxobj1+N5JfiOQx7o/tiGUCx8m12pf5tlutXByH2m7X8bAZ+BBcRuu1vwt7XaRhQ==} + '@react-native/virtualized-lists@0.76.1': + resolution: {integrity: sha512-uWJfv0FC3zmlYORr0Sa17ngbAaw6K9yw4MAkBZyFeTM+W6AJRvTVyR1Mes/MU+vIyGFChnTcyaQrQz8jWqADOA==} engines: {node: '>=18'} peerDependencies: '@types/react': ^18.2.6 @@ -1941,107 +1941,107 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.24.2': - resolution: {integrity: sha512-ufoveNTKDg9t/b7nqI3lwbCG/9IJMhADBNjjz/Jn6LxIZxD7T5L8l2uO/wD99945F1Oo8FvgbbZJRguyk/BdzA==} + '@rollup/rollup-android-arm-eabi@4.24.3': + resolution: {integrity: sha512-ufb2CH2KfBWPJok95frEZZ82LtDl0A6QKTa8MoM+cWwDZvVGl5/jNb79pIhRvAalUu+7LD91VYR0nwRD799HkQ==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.24.2': - resolution: {integrity: sha512-iZoYCiJz3Uek4NI0J06/ZxUgwAfNzqltK0MptPDO4OR0a88R4h0DSELMsflS6ibMCJ4PnLvq8f7O1d7WexUvIA==} + '@rollup/rollup-android-arm64@4.24.3': + resolution: {integrity: sha512-iAHpft/eQk9vkWIV5t22V77d90CRofgR2006UiCjHcHJFVI1E0oBkQIAbz+pLtthFw3hWEmVB4ilxGyBf48i2Q==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.24.2': - resolution: {integrity: sha512-/UhrIxobHYCBfhi5paTkUDQ0w+jckjRZDZ1kcBL132WeHZQ6+S5v9jQPVGLVrLbNUebdIRpIt00lQ+4Z7ys4Rg==} + '@rollup/rollup-darwin-arm64@4.24.3': + resolution: {integrity: sha512-QPW2YmkWLlvqmOa2OwrfqLJqkHm7kJCIMq9kOz40Zo9Ipi40kf9ONG5Sz76zszrmIZZ4hgRIkez69YnTHgEz1w==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.24.2': - resolution: {integrity: sha512-1F/jrfhxJtWILusgx63WeTvGTwE4vmsT9+e/z7cZLKU8sBMddwqw3UV5ERfOV+H1FuRK3YREZ46J4Gy0aP3qDA==} + '@rollup/rollup-darwin-x64@4.24.3': + resolution: {integrity: sha512-KO0pN5x3+uZm1ZXeIfDqwcvnQ9UEGN8JX5ufhmgH5Lz4ujjZMAnxQygZAVGemFWn+ZZC0FQopruV4lqmGMshow==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.24.2': - resolution: {integrity: sha512-1YWOpFcGuC6iGAS4EI+o3BV2/6S0H+m9kFOIlyFtp4xIX5rjSnL3AwbTBxROX0c8yWtiWM7ZI6mEPTI7VkSpZw==} + '@rollup/rollup-freebsd-arm64@4.24.3': + resolution: {integrity: sha512-CsC+ZdIiZCZbBI+aRlWpYJMSWvVssPuWqrDy/zi9YfnatKKSLFCe6fjna1grHuo/nVaHG+kiglpRhyBQYRTK4A==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.24.2': - resolution: {integrity: sha512-3qAqTewYrCdnOD9Gl9yvPoAoFAVmPJsBvleabvx4bnu1Kt6DrB2OALeRVag7BdWGWLhP1yooeMLEi6r2nYSOjg==} + '@rollup/rollup-freebsd-x64@4.24.3': + resolution: {integrity: sha512-F0nqiLThcfKvRQhZEzMIXOQG4EeX61im61VYL1jo4eBxv4aZRmpin6crnBJQ/nWnCsjH5F6J3W6Stdm0mBNqBg==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.24.2': - resolution: {integrity: sha512-ArdGtPHjLqWkqQuoVQ6a5UC5ebdX8INPuJuJNWRe0RGa/YNhVvxeWmCTFQ7LdmNCSUzVZzxAvUznKaYx645Rig==} + '@rollup/rollup-linux-arm-gnueabihf@4.24.3': + resolution: {integrity: sha512-KRSFHyE/RdxQ1CSeOIBVIAxStFC/hnBgVcaiCkQaVC+EYDtTe4X7z5tBkFyRoBgUGtB6Xg6t9t2kulnX6wJc6A==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.24.2': - resolution: {integrity: sha512-B6UHHeNnnih8xH6wRKB0mOcJGvjZTww1FV59HqJoTJ5da9LCG6R4SEBt6uPqzlawv1LoEXSS0d4fBlHNWl6iYw==} + '@rollup/rollup-linux-arm-musleabihf@4.24.3': + resolution: {integrity: sha512-h6Q8MT+e05zP5BxEKz0vi0DhthLdrNEnspdLzkoFqGwnmOzakEHSlXfVyA4HJ322QtFy7biUAVFPvIDEDQa6rw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.24.2': - resolution: {integrity: sha512-kr3gqzczJjSAncwOS6i7fpb4dlqcvLidqrX5hpGBIM1wtt0QEVtf4wFaAwVv8QygFU8iWUMYEoJZWuWxyua4GQ==} + '@rollup/rollup-linux-arm64-gnu@4.24.3': + resolution: {integrity: sha512-fKElSyXhXIJ9pqiYRqisfirIo2Z5pTTve5K438URf08fsypXrEkVmShkSfM8GJ1aUyvjakT+fn2W7Czlpd/0FQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.24.2': - resolution: {integrity: sha512-TDdHLKCWgPuq9vQcmyLrhg/bgbOvIQ8rtWQK7MRxJ9nvaxKx38NvY7/Lo6cYuEnNHqf6rMqnivOIPIQt6H2AoA==} + '@rollup/rollup-linux-arm64-musl@4.24.3': + resolution: {integrity: sha512-YlddZSUk8G0px9/+V9PVilVDC6ydMz7WquxozToozSnfFK6wa6ne1ATUjUvjin09jp34p84milxlY5ikueoenw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.24.2': - resolution: {integrity: sha512-xv9vS648T3X4AxFFZGWeB5Dou8ilsv4VVqJ0+loOIgDO20zIhYfDLkk5xoQiej2RiSQkld9ijF/fhLeonrz2mw==} + '@rollup/rollup-linux-powerpc64le-gnu@4.24.3': + resolution: {integrity: sha512-yNaWw+GAO8JjVx3s3cMeG5Esz1cKVzz8PkTJSfYzE5u7A+NvGmbVFEHP+BikTIyYWuz0+DX9kaA3pH9Sqxp69g==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.24.2': - resolution: {integrity: sha512-tbtXwnofRoTt223WUZYiUnbxhGAOVul/3StZ947U4A5NNjnQJV5irKMm76G0LGItWs6y+SCjUn/Q0WaMLkEskg==} + '@rollup/rollup-linux-riscv64-gnu@4.24.3': + resolution: {integrity: sha512-lWKNQfsbpv14ZCtM/HkjCTm4oWTKTfxPmr7iPfp3AHSqyoTz5AgLemYkWLwOBWc+XxBbrU9SCokZP0WlBZM9lA==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.24.2': - resolution: {integrity: sha512-gc97UebApwdsSNT3q79glOSPdfwgwj5ELuiyuiMY3pEWMxeVqLGKfpDFoum4ujivzxn6veUPzkGuSYoh5deQ2Q==} + '@rollup/rollup-linux-s390x-gnu@4.24.3': + resolution: {integrity: sha512-HoojGXTC2CgCcq0Woc/dn12wQUlkNyfH0I1ABK4Ni9YXyFQa86Fkt2Q0nqgLfbhkyfQ6003i3qQk9pLh/SpAYw==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.24.2': - resolution: {integrity: sha512-jOG/0nXb3z+EM6SioY8RofqqmZ+9NKYvJ6QQaa9Mvd3RQxlH68/jcB/lpyVt4lCiqr04IyaC34NzhUqcXbB5FQ==} + '@rollup/rollup-linux-x64-gnu@4.24.3': + resolution: {integrity: sha512-mnEOh4iE4USSccBOtcrjF5nj+5/zm6NcNhbSEfR3Ot0pxBwvEn5QVUXcuOwwPkapDtGZ6pT02xLoPaNv06w7KQ==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.24.2': - resolution: {integrity: sha512-XAo7cJec80NWx9LlZFEJQxqKOMz/lX3geWs2iNT5CHIERLFfd90f3RYLLjiCBm1IMaQ4VOX/lTC9lWfzzQm14Q==} + '@rollup/rollup-linux-x64-musl@4.24.3': + resolution: {integrity: sha512-rMTzawBPimBQkG9NKpNHvquIUTQPzrnPxPbCY1Xt+mFkW7pshvyIS5kYgcf74goxXOQk0CP3EoOC1zcEezKXhw==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.24.2': - resolution: {integrity: sha512-A+JAs4+EhsTjnPQvo9XY/DC0ztaws3vfqzrMNMKlwQXuniBKOIIvAAI8M0fBYiTCxQnElYu7mLk7JrhlQ+HeOw==} + '@rollup/rollup-win32-arm64-msvc@4.24.3': + resolution: {integrity: sha512-2lg1CE305xNvnH3SyiKwPVsTVLCg4TmNCF1z7PSHX2uZY2VbUpdkgAllVoISD7JO7zu+YynpWNSKAtOrX3AiuA==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.24.2': - resolution: {integrity: sha512-ZhcrakbqA1SCiJRMKSU64AZcYzlZ/9M5LaYil9QWxx9vLnkQ9Vnkve17Qn4SjlipqIIBFKjBES6Zxhnvh0EAEw==} + '@rollup/rollup-win32-ia32-msvc@4.24.3': + resolution: {integrity: sha512-9SjYp1sPyxJsPWuhOCX6F4jUMXGbVVd5obVpoVEi8ClZqo52ViZewA6eFz85y8ezuOA+uJMP5A5zo6Oz4S5rVQ==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.24.2': - resolution: {integrity: sha512-2mLH46K1u3r6uwc95hU+OR9q/ggYMpnS7pSp83Ece1HUQgF9Nh/QwTK5rcgbFnV9j+08yBrU5sA/P0RK2MSBNA==} + '@rollup/rollup-win32-x64-msvc@4.24.3': + resolution: {integrity: sha512-HGZgRFFYrMrP3TJlq58nR1xy8zHKId25vhmm5S9jETEfDf6xybPxsavFTJaufe2zgOGYJBskGlj49CwtEuFhWQ==} cpu: [x64] os: [win32] - '@shikijs/core@1.22.1': - resolution: {integrity: sha512-bqAhT/Ri5ixV4oYsvJNH8UJjpjbINWlWyXY6tBTsP4OmD6XnFv43nRJ+lTdxd2rmG5pgam/x+zGR6kLRXrpEKA==} + '@shikijs/core@1.22.2': + resolution: {integrity: sha512-bvIQcd8BEeR1yFvOYv6HDiyta2FFVePbzeowf5pPS1avczrPK+cjmaxxh0nx5QzbON7+Sv0sQfQVciO7bN72sg==} - '@shikijs/engine-javascript@1.22.1': - resolution: {integrity: sha512-540pyoy0LWe4jj2BVbgELwOFu1uFvRI7lg4hdsExrSXA9x7gqfzZ/Nnh4RfX86aDAgJ647gx4TCmRwACbnQSvw==} + '@shikijs/engine-javascript@1.22.2': + resolution: {integrity: sha512-iOvql09ql6m+3d1vtvP8fLCVCK7BQD1pJFmHIECsujB0V32BJ0Ab6hxk1ewVSMFA58FI0pR2Had9BKZdyQrxTw==} - '@shikijs/engine-oniguruma@1.22.1': - resolution: {integrity: sha512-L+1Vmd+a2kk8HtogUFymQS6BjUfJnzcWoUp1BUgxoDiklbKSMvrsMuLZGevTOP1m0rEjgnC5MsDmsr8lX1lC+Q==} + '@shikijs/engine-oniguruma@1.22.2': + resolution: {integrity: sha512-GIZPAGzQOy56mGvWMoZRPggn0dTlBf1gutV5TdceLCZlFNqWmuc7u+CzD0Gd9vQUTgLbrt0KLzz6FNprqYAxlA==} - '@shikijs/types@1.22.1': - resolution: {integrity: sha512-+45f8mu/Hxqs6Kyhfm98Nld5n7Q7lwhjU8UtdQwrOPs7BnM4VAb929O3IQ2ce+4D7SlNFlZGd8CnKRSnwbQreQ==} + '@shikijs/types@1.22.2': + resolution: {integrity: sha512-NCWDa6LGZqTuzjsGfXOBWfjS/fDIbDdmVDug+7ykVe1IKT4c1gakrvlfFYp5NhAXH/lyqLM8wsAPo5wNy73Feg==} '@shikijs/vscode-textmate@9.3.0': resolution: {integrity: sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==} @@ -2144,8 +2144,8 @@ packages: '@types/node-forge@1.3.11': resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - '@types/node@22.8.1': - resolution: {integrity: sha512-k6Gi8Yyo8EtrNtkHXutUu2corfDf9su95VYVP10aGYMMROM6SAItZi0w1XszA6RtWTHSVp5OeFof37w0IEqCQg==} + '@types/node@22.8.4': + resolution: {integrity: sha512-SpNNxkftTJOPk0oN+y2bIqurEXHTA2AOZ3EJDDKeJ5VzkvvORSvmQXGQarcOzWV1ac7DCaPBEdMDxBsM+d8jWw==} '@types/prop-types@15.7.13': resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} @@ -2183,14 +2183,13 @@ packages: '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - '@vitest/expect@2.1.3': - resolution: {integrity: sha512-SNBoPubeCJhZ48agjXruCI57DvxcsivVDdWz+SSsmjTT4QN/DfHk3zB/xKsJqMs26bLZ/pNRLnCf0j679i0uWQ==} + '@vitest/expect@2.1.4': + resolution: {integrity: sha512-DOETT0Oh1avie/D/o2sgMHGrzYUFFo3zqESB2Hn70z6QB1HrS2IQ9z5DfyTqU8sg4Bpu13zZe9V4+UTNQlUeQA==} - '@vitest/mocker@2.1.3': - resolution: {integrity: sha512-eSpdY/eJDuOvuTA3ASzCjdithHa+GIF1L4PqtEELl6Qa3XafdMLBpBlZCIUCX2J+Q6sNmjmxtosAG62fK4BlqQ==} + '@vitest/mocker@2.1.4': + resolution: {integrity: sha512-Ky/O1Lc0QBbutJdW0rqLeFNbuLEyS+mIPiNdlVlp2/yhJ0SbyYqObS5IHdhferJud8MbbwMnexg4jordE5cCoQ==} peerDependencies: - '@vitest/spy': 2.1.3 - msw: ^2.3.5 + msw: ^2.4.9 vite: ^5.0.0 peerDependenciesMeta: msw: @@ -2198,20 +2197,20 @@ packages: vite: optional: true - '@vitest/pretty-format@2.1.3': - resolution: {integrity: sha512-XH1XdtoLZCpqV59KRbPrIhFCOO0hErxrQCMcvnQete3Vibb9UeIOX02uFPfVn3Z9ZXsq78etlfyhnkmIZSzIwQ==} + '@vitest/pretty-format@2.1.4': + resolution: {integrity: sha512-L95zIAkEuTDbUX1IsjRl+vyBSLh3PwLLgKpghl37aCK9Jvw0iP+wKwIFhfjdUtA2myLgjrG6VU6JCFLv8q/3Ww==} - '@vitest/runner@2.1.3': - resolution: {integrity: sha512-JGzpWqmFJ4fq5ZKHtVO3Xuy1iF2rHGV4d/pdzgkYHm1+gOzNZtqjvyiaDGJytRyMU54qkxpNzCx+PErzJ1/JqQ==} + '@vitest/runner@2.1.4': + resolution: {integrity: sha512-sKRautINI9XICAMl2bjxQM8VfCMTB0EbsBc/EDFA57V6UQevEKY/TOPOF5nzcvCALltiLfXWbq4MaAwWx/YxIA==} - '@vitest/snapshot@2.1.3': - resolution: {integrity: sha512-qWC2mWc7VAXmjAkEKxrScWHWFyCQx/cmiZtuGqMi+WwqQJ2iURsVY4ZfAK6dVo6K2smKRU6l3BPwqEBvhnpQGg==} + '@vitest/snapshot@2.1.4': + resolution: {integrity: sha512-3Kab14fn/5QZRog5BPj6Rs8dc4B+mim27XaKWFWHWA87R56AKjHTGcBFKpvZKDzC4u5Wd0w/qKsUIio3KzWW4Q==} - '@vitest/spy@2.1.3': - resolution: {integrity: sha512-Nb2UzbcUswzeSP7JksMDaqsI43Sj5+Kry6ry6jQJT4b5gAK+NS9NED6mDb8FlMRCX8m5guaHCDZmqYMMWRy5nQ==} + '@vitest/spy@2.1.4': + resolution: {integrity: sha512-4JOxa+UAizJgpZfaCPKK2smq9d8mmjZVPMt2kOsg/R8QkoRzydHH1qHxIYNvr1zlEaFj4SXiaaJWxq/LPLKaLg==} - '@vitest/utils@2.1.3': - resolution: {integrity: sha512-xpiVfDSg1RrYT0tX6czgerkpcKFmFOF/gCr30+Mve5V2kewCy4Prn1/NDMSRwaSmT7PRaOF83wu+bEtsY1wrvA==} + '@vitest/utils@2.1.4': + resolution: {integrity: sha512-MXDnZn0Awl2S86PSNIim5PWXgIAx8CIkzu35mBdSApUip6RFOGXBCf3YFyeEu8n1IHk4bWD46DeYFu9mQlFIRg==} '@webassemblyjs/ast@1.12.1': resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} @@ -2571,8 +2570,8 @@ packages: resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} engines: {node: '>=16'} - caniuse-lite@1.0.30001673: - resolution: {integrity: sha512-WTrjUCSMp3LYX0nE12ECkV0a+e6LC85E0Auz75555/qr78Oc8YWhEPNfDd6SHdtlCMSzqtuXY0uyEMNRcsKpKw==} + caniuse-lite@1.0.30001675: + resolution: {integrity: sha512-/wV1bQwPrkLiQMjaJF5yUMVM/VdRPOCU8QZ+PmG6uW6DvYSrNY1bpwHI/3mOcUosLaJCzYDi5o91IQB51ft6cg==} case-anything@2.1.13: resolution: {integrity: sha512-zlOQ80VrQ2Ue+ymH5OuM/DlDq64mEm+B9UTdHULv5osUMD6HalNTblf2b1u/m6QecjsnOkBpqVZ+XPwIVsy7Ng==} @@ -2714,8 +2713,8 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - core-js-compat@3.38.1: - resolution: {integrity: sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==} + core-js-compat@3.39.0: + resolution: {integrity: sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==} core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -2912,8 +2911,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.47: - resolution: {integrity: sha512-zS5Yer0MOYw4rtK2iq43cJagHZ8sXN0jDHDKzB+86gSBSAI4v07S97mcq+Gs2vclAxSh1j7vOAHxSVgduiiuVQ==} + electron-to-chromium@1.5.49: + resolution: {integrity: sha512-ZXfs1Of8fDb6z7WEYZjXpgIRF6MEu8JdeGA0A40aZq6OQbS+eJpnnV49epZRna2DU/YsEjSQuGtQPPtvt6J65A==} elliptic@6.6.0: resolution: {integrity: sha512-dpwoQcLc/2WLQvJvLRHKZ+f9FgOdjnq11rurqwekGQygGPsYSK29OMMD2WalatiqQ+XGFDglTNixpPfI+lpaAA==} @@ -3069,6 +3068,10 @@ packages: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} + expect-type@1.1.0: + resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} + engines: {node: '>=12.0.0'} + exponential-backoff@3.1.1: resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} @@ -3119,8 +3122,8 @@ packages: flow-enums-runtime@0.0.6: resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} - flow-parser@0.250.0: - resolution: {integrity: sha512-8mkLh/CotlvqA9vCyQMbhJoPx2upEg9oKxARAayz8zQ58wCdABnTZy6U4xhMHvHvbTUFgZQk4uH2cglOCOel5A==} + flow-parser@0.251.1: + resolution: {integrity: sha512-8ZuLqJPlL/T9K3zFdr1m88Lx8JOoJluTTdyvN4uH5NT9zoIIFqbCDoXVhkHh022k2lhuAyFF27cu0BYKh5SmDA==} engines: {node: '>=0.4.0'} for-each@0.3.3: @@ -3728,8 +3731,8 @@ packages: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} - libp2p@2.1.10: - resolution: {integrity: sha512-uiSNXse7Hphoy+SBllRZi2wuPyNcOsOT3MGm7zwT2cepT+OofpUd4g1AgKlQqmQnW4YSMQTtOgMxFpaBligtbA==} + libp2p@2.2.1: + resolution: {integrity: sha512-xxmaCAfpOKCgYuxLzA87RZBf2lzA2DwuLUB7kFB3MHw6FbGGeb10YEUaM4V/XCgIDDZs4DOCgXnKOMqN+BhjRw==} lighthouse-logger@1.4.2: resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} @@ -4031,8 +4034,8 @@ packages: resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} hasBin: true - multiformats@13.3.0: - resolution: {integrity: sha512-CBiqvsufgmpo01VT5ze94O+uc+Pbf6f/sThlvWss0sBZmAOu6GQn5usrYV2sf2mr17FWYc0rO8c/CNe2T90QAA==} + multiformats@13.3.1: + resolution: {integrity: sha512-QxowxTNwJ3r5RMctoGA5p13w5RbRT2QDkoM+yFlqfLiioBp78nhDjnRLvmSBI9+KAqN4VdgOVWM9c0CHd86m3g==} murmurhash3js-revisited@3.0.0: resolution: {integrity: sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g==} @@ -4047,8 +4050,8 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - nanoid@5.0.7: - resolution: {integrity: sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==} + nanoid@5.0.8: + resolution: {integrity: sha512-TcJPw+9RV9dibz1hHUzlLVy8N4X9TnwirAjrU08Juo6BNKggzVfP2ZJ/3ZUSq15Xl5i85i+Z89XBO90pB2PghQ==} engines: {node: ^18 || >=20} hasBin: true @@ -4503,8 +4506,8 @@ packages: peerDependencies: react-native: '>=0.60.0' - react-native@0.76.0: - resolution: {integrity: sha512-isbLzmY7fhhLdN/oss4jlRHeDmEShuTYsp1Zq93UM0/JssQK4g+2Ub4mHdhxDFm2LN+0ryBgVJK1nO7l93cfsA==} + react-native@0.76.1: + resolution: {integrity: sha512-z4KnbrnnAvloRs9NGnah3u6/LK3IbtNMrvByxa3ifigbMlsMY4WPRYV9lvt/hH4Mzt8bfuI+utnOxFyJTTq3lg==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -4666,8 +4669,8 @@ packages: ripemd160@2.0.2: resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} - rollup@4.24.2: - resolution: {integrity: sha512-do/DFGq5g6rdDhdpPq5qb2ecoczeK6y+2UAjdJ5trjQJj5f1AiVdLRWRc9A9/fFukfvJRgM0UXzxBIYMovm5ww==} + rollup@4.24.3: + resolution: {integrity: sha512-HBW896xR5HGmoksbi3JBDtmVzWiPAYqp7wip50hjQ67JbDz61nyoMPdqu1DvVW9asYb2M65Z20ZHsyJCMqMyDg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -4773,8 +4776,8 @@ packages: engines: {node: '>=4'} hasBin: true - shiki@1.22.1: - resolution: {integrity: sha512-PbJ6XxrWLMwB2rm3qdjIHNm3zq4SfFnOx0B3rEoi4AN8AUngsdyZ1tRe5slMPtn6jQkbUURLNZPpLR7Do3k78g==} + shiki@1.22.2: + resolution: {integrity: sha512-3IZau0NdGKXhH2bBlUk4w1IHNxPh6A5B2sUpyY+8utLu2j/h1QpFkAaUA1bAMxOWWGtTWcAh531vnS4NJKS/lA==} side-channel@1.0.6: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} @@ -5244,8 +5247,8 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vite-node@2.1.3: - resolution: {integrity: sha512-I1JadzO+xYX887S39Do+paRePCKoiDrWRRjp9kkG5he0t7RXNvPAJPCQSJqbGN4uCrFFeS3Kj3sLqY8NMYBEdA==} + vite-node@2.1.4: + resolution: {integrity: sha512-kqa9v+oi4HwkG6g8ufRnb5AeplcRw8jUF6/7/Qz1qRQOXHImG8YnLbB+LLszENwFnoBl9xIf9nVdCFzNd7GQEg==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -5293,15 +5296,15 @@ packages: terser: optional: true - vitest@2.1.3: - resolution: {integrity: sha512-Zrxbg/WiIvUP2uEzelDNTXmEMJXuzJ1kCpbDvaKByFA9MNeO95V+7r/3ti0qzJzrxdyuUw5VduN7k+D3VmVOSA==} + vitest@2.1.4: + resolution: {integrity: sha512-eDjxbVAJw1UJJCHr5xr/xM86Zx+YxIEXGAR+bmnEID7z9qWfoxpHw0zdobz+TQAFOLT+nEXz3+gx6nUJ7RgmlQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 2.1.3 - '@vitest/ui': 2.1.3 + '@vitest/browser': 2.1.4 + '@vitest/ui': 2.1.4 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -5515,23 +5518,23 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@babel/code-frame@7.26.0': + '@babel/code-frame@7.26.2': dependencies: '@babel/helper-validator-identifier': 7.25.9 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.26.0': {} + '@babel/compat-data@7.26.2': {} '@babel/core@7.26.0': dependencies: '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.26.0 - '@babel/generator': 7.26.0 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 '@babel/helper-compilation-targets': 7.25.9 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) '@babel/helpers': 7.26.0 - '@babel/parser': 7.26.1 + '@babel/parser': 7.26.2 '@babel/template': 7.25.9 '@babel/traverse': 7.25.9 '@babel/types': 7.26.0 @@ -5543,9 +5546,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.26.0': + '@babel/generator@7.26.2': dependencies: - '@babel/parser': 7.26.1 + '@babel/parser': 7.26.2 '@babel/types': 7.26.0 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 @@ -5564,7 +5567,7 @@ snapshots: '@babel/helper-compilation-targets@7.25.9': dependencies: - '@babel/compat-data': 7.26.0 + '@babel/compat-data': 7.26.2 '@babel/helper-validator-option': 7.25.9 browserslist: 4.24.2 lru-cache: 5.1.1 @@ -5681,7 +5684,7 @@ snapshots: '@babel/template': 7.25.9 '@babel/types': 7.26.0 - '@babel/parser@7.26.1': + '@babel/parser@7.26.2': dependencies: '@babel/types': 7.26.0 @@ -6243,7 +6246,7 @@ snapshots: '@babel/preset-env@7.26.0(@babel/core@7.26.0)': dependencies: - '@babel/compat-data': 7.26.0 + '@babel/compat-data': 7.26.2 '@babel/core': 7.26.0 '@babel/helper-compilation-targets': 7.25.9 '@babel/helper-plugin-utils': 7.25.9 @@ -6311,7 +6314,7 @@ snapshots: babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.26.0) babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0) babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.26.0) - core-js-compat: 3.38.1 + core-js-compat: 3.39.0 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -6356,15 +6359,15 @@ snapshots: '@babel/template@7.25.9': dependencies: - '@babel/code-frame': 7.26.0 - '@babel/parser': 7.26.1 + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.2 '@babel/types': 7.26.0 '@babel/traverse@7.25.9': dependencies: - '@babel/code-frame': 7.26.0 - '@babel/generator': 7.26.0 - '@babel/parser': 7.26.1 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 '@babel/template': 7.25.9 '@babel/types': 7.26.0 debug: 4.3.7 @@ -6412,7 +6415,7 @@ snapshots: '@biomejs/cli-win32-x64@1.9.4': optional: true - '@bufbuild/protobuf@2.2.0': {} + '@bufbuild/protobuf@2.2.1': {} '@chainsafe/as-chacha20poly1305@0.1.0': {} @@ -6422,17 +6425,17 @@ snapshots: '@chainsafe/libp2p-gossipsub@14.1.0': dependencies: - '@libp2p/crypto': 5.0.5 - '@libp2p/interface': 2.1.3 - '@libp2p/interface-internal': 2.0.9 - '@libp2p/peer-id': 5.0.6 - '@libp2p/pubsub': 10.0.9 + '@libp2p/crypto': 5.0.6 + '@libp2p/interface': 2.2.0 + '@libp2p/interface-internal': 2.0.10 + '@libp2p/peer-id': 5.0.7 + '@libp2p/pubsub': 10.0.10 '@multiformats/multiaddr': 12.3.1 denque: 2.1.0 it-length-prefixed: 9.1.0 it-pipe: 3.0.1 it-pushable: 3.2.3 - multiformats: 13.3.0 + multiformats: 13.3.1 protons-runtime: 5.5.0 uint8arraylist: 2.4.8 uint8arrays: 5.1.0 @@ -6441,9 +6444,9 @@ snapshots: dependencies: '@chainsafe/as-chacha20poly1305': 0.1.0 '@chainsafe/as-sha256': 0.4.2 - '@libp2p/crypto': 5.0.5 - '@libp2p/interface': 2.1.3 - '@libp2p/peer-id': 5.0.6 + '@libp2p/crypto': 5.0.6 + '@libp2p/interface': 2.2.0 + '@libp2p/peer-id': 5.0.7 '@noble/ciphers': 0.6.0 '@noble/curves': 1.6.0 '@noble/hashes': 1.5.0 @@ -6459,8 +6462,8 @@ snapshots: '@chainsafe/libp2p-yamux@7.0.1': dependencies: - '@libp2p/interface': 2.1.3 - '@libp2p/utils': 6.1.2 + '@libp2p/interface': 2.2.0 + '@libp2p/utils': 6.1.3 get-iterator: 2.0.1 it-foreach: 2.1.1 it-pushable: 3.2.3 @@ -6652,14 +6655,14 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.8.1 + '@types/node': 22.8.4 jest-mock: 29.7.0 '@jest/fake-timers@29.7.0': dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 22.8.1 + '@types/node': 22.8.4 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -6693,7 +6696,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.8.1 + '@types/node': 22.8.4 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -6744,45 +6747,45 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@libp2p/autonat@2.0.9': + '@libp2p/autonat@2.0.10': dependencies: - '@libp2p/interface': 2.1.3 - '@libp2p/interface-internal': 2.0.9 - '@libp2p/peer-id': 5.0.6 - '@libp2p/utils': 6.1.2 + '@libp2p/interface': 2.2.0 + '@libp2p/interface-internal': 2.0.10 + '@libp2p/peer-id': 5.0.7 + '@libp2p/utils': 6.1.3 '@multiformats/multiaddr': 12.3.1 it-first: 3.0.6 it-length-prefixed: 9.1.0 it-map: 3.1.1 it-parallel: 3.0.8 it-pipe: 3.0.1 - multiformats: 13.3.0 + multiformats: 13.3.1 protons-runtime: 5.5.0 uint8arraylist: 2.4.8 - '@libp2p/bootstrap@11.0.9': + '@libp2p/bootstrap@11.0.10': dependencies: - '@libp2p/interface': 2.1.3 - '@libp2p/interface-internal': 2.0.9 - '@libp2p/peer-id': 5.0.6 + '@libp2p/interface': 2.2.0 + '@libp2p/interface-internal': 2.0.10 + '@libp2p/peer-id': 5.0.7 '@multiformats/mafmt': 12.1.6 '@multiformats/multiaddr': 12.3.1 '@libp2p/circuit-relay-v2@2.1.5': dependencies: - '@libp2p/crypto': 5.0.5 - '@libp2p/interface': 2.1.3 - '@libp2p/interface-internal': 2.0.9 - '@libp2p/peer-collections': 6.0.9 - '@libp2p/peer-id': 5.0.6 - '@libp2p/peer-record': 8.0.9 - '@libp2p/utils': 6.1.2 + '@libp2p/crypto': 5.0.6 + '@libp2p/interface': 2.2.0 + '@libp2p/interface-internal': 2.0.10 + '@libp2p/peer-collections': 6.0.10 + '@libp2p/peer-id': 5.0.7 + '@libp2p/peer-record': 8.0.10 + '@libp2p/utils': 6.1.3 '@multiformats/multiaddr': 12.3.1 - '@multiformats/multiaddr-matcher': 1.3.0 + '@multiformats/multiaddr-matcher': 1.4.0 any-signal: 4.1.1 it-protobuf-stream: 1.1.5 it-stream-types: 2.0.2 - multiformats: 13.3.0 + multiformats: 13.3.1 progress-events: 1.0.1 protons-runtime: 5.5.0 race-signal: 1.1.0 @@ -6790,54 +6793,54 @@ snapshots: uint8arraylist: 2.4.8 uint8arrays: 5.1.0 - '@libp2p/crypto@5.0.5': + '@libp2p/crypto@5.0.6': dependencies: - '@libp2p/interface': 2.1.3 + '@libp2p/interface': 2.2.0 '@noble/curves': 1.6.0 '@noble/hashes': 1.5.0 asn1js: 3.0.5 - multiformats: 13.3.0 + multiformats: 13.3.1 protons-runtime: 5.5.0 uint8arraylist: 2.4.8 uint8arrays: 5.1.0 - '@libp2p/dcutr@2.0.9': + '@libp2p/dcutr@2.0.10': dependencies: - '@libp2p/interface': 2.1.3 - '@libp2p/interface-internal': 2.0.9 - '@libp2p/utils': 6.1.2 + '@libp2p/interface': 2.2.0 + '@libp2p/interface-internal': 2.0.10 + '@libp2p/utils': 6.1.3 '@multiformats/multiaddr': 12.3.1 - '@multiformats/multiaddr-matcher': 1.3.0 + '@multiformats/multiaddr-matcher': 1.4.0 delay: 6.0.0 it-protobuf-stream: 1.1.5 protons-runtime: 5.5.0 uint8arraylist: 2.4.8 - '@libp2p/devtools-metrics@1.1.7': + '@libp2p/devtools-metrics@1.1.8': dependencies: - '@libp2p/interface': 2.1.3 - '@libp2p/interface-internal': 2.0.9 - '@libp2p/logger': 5.1.2 - '@libp2p/peer-id': 5.0.6 - '@libp2p/simple-metrics': 1.2.5 + '@libp2p/interface': 2.2.0 + '@libp2p/interface-internal': 2.0.10 + '@libp2p/logger': 5.1.3 + '@libp2p/peer-id': 5.0.7 + '@libp2p/simple-metrics': 1.2.6 '@multiformats/multiaddr': 12.3.1 cborg: 4.2.6 it-pipe: 3.0.1 it-pushable: 3.2.3 it-rpc: 1.0.2 - multiformats: 13.3.0 + multiformats: 13.3.1 progress-events: 1.0.1 - '@libp2p/identify@3.0.9': + '@libp2p/identify@3.0.10': dependencies: - '@libp2p/crypto': 5.0.5 - '@libp2p/interface': 2.1.3 - '@libp2p/interface-internal': 2.0.9 - '@libp2p/peer-id': 5.0.6 - '@libp2p/peer-record': 8.0.9 - '@libp2p/utils': 6.1.2 + '@libp2p/crypto': 5.0.6 + '@libp2p/interface': 2.2.0 + '@libp2p/interface-internal': 2.0.10 + '@libp2p/peer-id': 5.0.7 + '@libp2p/peer-record': 8.0.10 + '@libp2p/utils': 6.1.3 '@multiformats/multiaddr': 12.3.1 - '@multiformats/multiaddr-matcher': 1.3.0 + '@multiformats/multiaddr-matcher': 1.4.0 it-drain: 3.0.7 it-parallel: 3.0.8 it-protobuf-stream: 1.1.5 @@ -6846,45 +6849,45 @@ snapshots: uint8arrays: 5.1.0 wherearewe: 2.0.1 - '@libp2p/interface-internal@2.0.9': + '@libp2p/interface-internal@2.0.10': dependencies: - '@libp2p/interface': 2.1.3 - '@libp2p/peer-collections': 6.0.9 + '@libp2p/interface': 2.2.0 + '@libp2p/peer-collections': 6.0.10 '@multiformats/multiaddr': 12.3.1 progress-events: 1.0.1 uint8arraylist: 2.4.8 - '@libp2p/interface@2.1.3': + '@libp2p/interface@2.2.0': dependencies: '@multiformats/multiaddr': 12.3.1 it-pushable: 3.2.3 it-stream-types: 2.0.2 - multiformats: 13.3.0 + multiformats: 13.3.1 progress-events: 1.0.1 uint8arraylist: 2.4.8 - '@libp2p/logger@5.1.2': + '@libp2p/logger@5.1.3': dependencies: - '@libp2p/interface': 2.1.3 + '@libp2p/interface': 2.2.0 '@multiformats/multiaddr': 12.3.1 interface-datastore: 8.3.1 - multiformats: 13.3.0 + multiformats: 13.3.1 weald: 1.0.4 - '@libp2p/mdns@11.0.9': + '@libp2p/mdns@11.0.10': dependencies: - '@libp2p/interface': 2.1.3 - '@libp2p/interface-internal': 2.0.9 - '@libp2p/peer-id': 5.0.6 - '@libp2p/utils': 6.1.2 + '@libp2p/interface': 2.2.0 + '@libp2p/interface-internal': 2.0.10 + '@libp2p/peer-id': 5.0.7 + '@libp2p/utils': 6.1.3 '@multiformats/multiaddr': 12.3.1 '@types/multicast-dns': 7.2.4 dns-packet: 5.6.1 multicast-dns: 7.2.5 - '@libp2p/multistream-select@6.0.7': + '@libp2p/multistream-select@6.0.8': dependencies: - '@libp2p/interface': 2.1.3 + '@libp2p/interface': 2.2.0 it-length-prefixed: 9.1.0 it-length-prefixed-stream: 1.2.0 it-stream-types: 2.0.2 @@ -6894,90 +6897,89 @@ snapshots: uint8arraylist: 2.4.8 uint8arrays: 5.1.0 - '@libp2p/peer-collections@6.0.9': + '@libp2p/peer-collections@6.0.10': dependencies: - '@libp2p/interface': 2.1.3 - '@libp2p/peer-id': 5.0.6 - '@libp2p/utils': 6.1.2 - multiformats: 13.3.0 + '@libp2p/interface': 2.2.0 + '@libp2p/peer-id': 5.0.7 + '@libp2p/utils': 6.1.3 + multiformats: 13.3.1 - '@libp2p/peer-id@5.0.6': + '@libp2p/peer-id@5.0.7': dependencies: - '@libp2p/crypto': 5.0.5 - '@libp2p/interface': 2.1.3 - multiformats: 13.3.0 + '@libp2p/crypto': 5.0.6 + '@libp2p/interface': 2.2.0 + multiformats: 13.3.1 uint8arrays: 5.1.0 - '@libp2p/peer-record@8.0.9': + '@libp2p/peer-record@8.0.10': dependencies: - '@libp2p/crypto': 5.0.5 - '@libp2p/interface': 2.1.3 - '@libp2p/peer-id': 5.0.6 - '@libp2p/utils': 6.1.2 + '@libp2p/crypto': 5.0.6 + '@libp2p/interface': 2.2.0 + '@libp2p/peer-id': 5.0.7 + '@libp2p/utils': 6.1.3 '@multiformats/multiaddr': 12.3.1 - multiformats: 13.3.0 + multiformats: 13.3.1 protons-runtime: 5.5.0 uint8-varint: 2.0.4 uint8arraylist: 2.4.8 uint8arrays: 5.1.0 - '@libp2p/peer-store@11.0.9': + '@libp2p/peer-store@11.0.10': dependencies: - '@libp2p/crypto': 5.0.5 - '@libp2p/interface': 2.1.3 - '@libp2p/peer-collections': 6.0.9 - '@libp2p/peer-id': 5.0.6 - '@libp2p/peer-record': 8.0.9 + '@libp2p/crypto': 5.0.6 + '@libp2p/interface': 2.2.0 + '@libp2p/peer-id': 5.0.7 + '@libp2p/peer-record': 8.0.10 '@multiformats/multiaddr': 12.3.1 interface-datastore: 8.3.1 it-all: 3.0.6 mortice: 3.0.6 - multiformats: 13.3.0 + multiformats: 13.3.1 protons-runtime: 5.5.0 uint8arraylist: 2.4.8 uint8arrays: 5.1.0 '@libp2p/pubsub-peer-discovery@11.0.0': dependencies: - '@libp2p/crypto': 5.0.5 - '@libp2p/interface': 2.1.3 - '@libp2p/interface-internal': 2.0.9 - '@libp2p/peer-id': 5.0.6 + '@libp2p/crypto': 5.0.6 + '@libp2p/interface': 2.2.0 + '@libp2p/interface-internal': 2.0.10 + '@libp2p/peer-id': 5.0.7 '@multiformats/multiaddr': 12.3.1 protons-runtime: 5.5.0 uint8arraylist: 2.4.8 uint8arrays: 5.1.0 - '@libp2p/pubsub@10.0.9': + '@libp2p/pubsub@10.0.10': dependencies: - '@libp2p/crypto': 5.0.5 - '@libp2p/interface': 2.1.3 - '@libp2p/interface-internal': 2.0.9 - '@libp2p/peer-collections': 6.0.9 - '@libp2p/peer-id': 5.0.6 - '@libp2p/utils': 6.1.2 + '@libp2p/crypto': 5.0.6 + '@libp2p/interface': 2.2.0 + '@libp2p/interface-internal': 2.0.10 + '@libp2p/peer-collections': 6.0.10 + '@libp2p/peer-id': 5.0.7 + '@libp2p/utils': 6.1.3 it-length-prefixed: 9.1.0 it-pipe: 3.0.1 it-pushable: 3.2.3 - multiformats: 13.3.0 + multiformats: 13.3.1 p-queue: 8.0.1 uint8arraylist: 2.4.8 uint8arrays: 5.1.0 - '@libp2p/simple-metrics@1.2.5': + '@libp2p/simple-metrics@1.2.6': dependencies: - '@libp2p/interface': 2.1.3 - '@libp2p/logger': 5.1.2 + '@libp2p/interface': 2.2.0 + '@libp2p/logger': 5.1.3 it-foreach: 2.1.1 it-stream-types: 2.0.2 tdigest: 0.1.2 - '@libp2p/utils@6.1.2': + '@libp2p/utils@6.1.3': dependencies: '@chainsafe/is-ip': 2.0.2 - '@libp2p/crypto': 5.0.5 - '@libp2p/interface': 2.1.3 - '@libp2p/logger': 5.1.2 + '@libp2p/crypto': 5.0.6 + '@libp2p/interface': 2.2.0 + '@libp2p/logger': 5.1.3 '@multiformats/multiaddr': 12.3.1 '@sindresorhus/fnv1a': 3.1.0 '@types/murmurhash3js-revisited': 3.0.3 @@ -6997,22 +6999,22 @@ snapshots: uint8arraylist: 2.4.8 uint8arrays: 5.1.0 - '@libp2p/webrtc@5.0.14(react-native@0.76.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))': + '@libp2p/webrtc@5.0.16(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))': dependencies: '@chainsafe/libp2p-noise': 16.0.0 - '@libp2p/interface': 2.1.3 - '@libp2p/interface-internal': 2.0.9 - '@libp2p/peer-id': 5.0.6 - '@libp2p/utils': 6.1.2 + '@libp2p/interface': 2.2.0 + '@libp2p/interface-internal': 2.0.10 + '@libp2p/peer-id': 5.0.7 + '@libp2p/utils': 6.1.3 '@multiformats/mafmt': 12.1.6 '@multiformats/multiaddr': 12.3.1 - '@multiformats/multiaddr-matcher': 1.3.0 + '@multiformats/multiaddr-matcher': 1.4.0 detect-browser: 5.3.0 it-length-prefixed: 9.1.0 it-protobuf-stream: 1.1.5 it-pushable: 3.2.3 it-stream-types: 2.0.2 - multiformats: 13.3.0 + multiformats: 13.3.1 node-datachannel: 0.11.0 p-defer: 4.0.1 p-event: 6.0.1 @@ -7020,7 +7022,7 @@ snapshots: progress-events: 1.0.1 protons-runtime: 5.5.0 race-signal: 1.1.0 - react-native-webrtc: 124.0.4(react-native@0.76.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)) + react-native-webrtc: 124.0.4(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)) uint8-varint: 2.0.4 uint8arraylist: 2.4.8 uint8arrays: 5.1.0 @@ -7028,13 +7030,13 @@ snapshots: - react-native - supports-color - '@libp2p/websockets@9.0.9': + '@libp2p/websockets@9.0.11': dependencies: - '@libp2p/interface': 2.1.3 - '@libp2p/utils': 6.1.2 - '@multiformats/mafmt': 12.1.6 + '@libp2p/interface': 2.2.0 + '@libp2p/utils': 6.1.3 '@multiformats/multiaddr': 12.3.1 - '@multiformats/multiaddr-to-uri': 10.1.1 + '@multiformats/multiaddr-matcher': 1.4.0 + '@multiformats/multiaddr-to-uri': 10.1.2 '@types/ws': 8.5.12 it-ws: 6.1.5 p-defer: 4.0.1 @@ -7046,16 +7048,16 @@ snapshots: - bufferutil - utf-8-validate - '@libp2p/webtransport@5.0.14': + '@libp2p/webtransport@5.0.16': dependencies: '@chainsafe/libp2p-noise': 16.0.0 - '@libp2p/interface': 2.1.3 - '@libp2p/peer-id': 5.0.6 - '@libp2p/utils': 6.1.2 + '@libp2p/interface': 2.2.0 + '@libp2p/peer-id': 5.0.7 + '@libp2p/utils': 6.1.3 '@multiformats/multiaddr': 12.3.1 - '@multiformats/multiaddr-matcher': 1.3.0 + '@multiformats/multiaddr-matcher': 1.4.0 it-stream-types: 2.0.2 - multiformats: 13.3.0 + multiformats: 13.3.1 progress-events: 1.0.1 race-signal: 1.1.0 uint8arraylist: 2.4.8 @@ -7075,13 +7077,13 @@ snapshots: dependencies: '@multiformats/multiaddr': 12.3.1 - '@multiformats/multiaddr-matcher@1.3.0': + '@multiformats/multiaddr-matcher@1.4.0': dependencies: '@chainsafe/is-ip': 2.0.2 '@multiformats/multiaddr': 12.3.1 - multiformats: 13.3.0 + multiformats: 13.3.1 - '@multiformats/multiaddr-to-uri@10.1.1': + '@multiformats/multiaddr-to-uri@10.1.2': dependencies: '@multiformats/multiaddr': 12.3.1 @@ -7090,7 +7092,7 @@ snapshots: '@chainsafe/is-ip': 2.0.2 '@chainsafe/netmask': 2.0.0 '@multiformats/dns': 1.0.6 - multiformats: 13.3.0 + multiformats: 13.3.1 uint8-varint: 2.0.4 uint8arrays: 5.1.0 @@ -7212,16 +7214,16 @@ snapshots: '@protobufjs/utf8@1.1.0': {} - '@react-native/assets-registry@0.76.0': {} + '@react-native/assets-registry@0.76.1': {} - '@react-native/babel-plugin-codegen@0.76.0(@babel/preset-env@7.26.0(@babel/core@7.26.0))': + '@react-native/babel-plugin-codegen@0.76.1(@babel/preset-env@7.26.0(@babel/core@7.26.0))': dependencies: - '@react-native/codegen': 0.76.0(@babel/preset-env@7.26.0(@babel/core@7.26.0)) + '@react-native/codegen': 0.76.1(@babel/preset-env@7.26.0(@babel/core@7.26.0)) transitivePeerDependencies: - '@babel/preset-env' - supports-color - '@react-native/babel-preset@0.76.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))': + '@react-native/babel-preset@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))': dependencies: '@babel/core': 7.26.0 '@babel/plugin-proposal-export-default-from': 7.25.9(@babel/core@7.26.0) @@ -7264,7 +7266,7 @@ snapshots: '@babel/plugin-transform-typescript': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.0) '@babel/template': 7.25.9 - '@react-native/babel-plugin-codegen': 0.76.0(@babel/preset-env@7.26.0(@babel/core@7.26.0)) + '@react-native/babel-plugin-codegen': 0.76.1(@babel/preset-env@7.26.0(@babel/core@7.26.0)) babel-plugin-syntax-hermes-parser: 0.23.1 babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.26.0) react-refresh: 0.14.2 @@ -7272,9 +7274,9 @@ snapshots: - '@babel/preset-env' - supports-color - '@react-native/codegen@0.76.0(@babel/preset-env@7.26.0(@babel/core@7.26.0))': + '@react-native/codegen@0.76.1(@babel/preset-env@7.26.0(@babel/core@7.26.0))': dependencies: - '@babel/parser': 7.26.1 + '@babel/parser': 7.26.2 '@babel/preset-env': 7.26.0(@babel/core@7.26.0) glob: 7.2.3 hermes-parser: 0.23.1 @@ -7286,10 +7288,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@react-native/community-cli-plugin@0.76.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))': + '@react-native/community-cli-plugin@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))': dependencies: - '@react-native/dev-middleware': 0.76.0 - '@react-native/metro-babel-transformer': 0.76.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)) + '@react-native/dev-middleware': 0.76.1 + '@react-native/metro-babel-transformer': 0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)) chalk: 4.1.2 execa: 5.1.1 invariant: 2.2.4 @@ -7306,12 +7308,12 @@ snapshots: - supports-color - utf-8-validate - '@react-native/debugger-frontend@0.76.0': {} + '@react-native/debugger-frontend@0.76.1': {} - '@react-native/dev-middleware@0.76.0': + '@react-native/dev-middleware@0.76.1': dependencies: '@isaacs/ttlcache': 1.4.1 - '@react-native/debugger-frontend': 0.76.0 + '@react-native/debugger-frontend': 0.76.1 chrome-launcher: 0.15.2 chromium-edge-launcher: 0.2.0 connect: 3.7.0 @@ -7326,28 +7328,28 @@ snapshots: - supports-color - utf-8-validate - '@react-native/gradle-plugin@0.76.0': {} + '@react-native/gradle-plugin@0.76.1': {} - '@react-native/js-polyfills@0.76.0': {} + '@react-native/js-polyfills@0.76.1': {} - '@react-native/metro-babel-transformer@0.76.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))': + '@react-native/metro-babel-transformer@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))': dependencies: '@babel/core': 7.26.0 - '@react-native/babel-preset': 0.76.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)) + '@react-native/babel-preset': 0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)) hermes-parser: 0.23.1 nullthrows: 1.1.1 transitivePeerDependencies: - '@babel/preset-env' - supports-color - '@react-native/normalize-colors@0.76.0': {} + '@react-native/normalize-colors@0.76.1': {} - '@react-native/virtualized-lists@0.76.0(@types/react@18.3.12)(react-native@0.76.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': + '@react-native/virtualized-lists@0.76.1(@types/react@18.3.12)(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': dependencies: invariant: 2.2.4 nullthrows: 1.1.1 react: 18.3.1 - react-native: 0.76.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + react-native: 0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) optionalDependencies: '@types/react': 18.3.12 @@ -7374,14 +7376,14 @@ snapshots: react: 18.3.1 react-konva: 18.2.10(konva@9.3.16)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@react-spring/native@9.7.5(react-native@0.76.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': + '@react-spring/native@9.7.5(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': dependencies: '@react-spring/animated': 9.7.5(react@18.3.1) '@react-spring/core': 9.7.5(react@18.3.1) '@react-spring/shared': 9.7.5(react@18.3.1) '@react-spring/types': 9.7.5 react: 18.3.1 - react-native: 0.76.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + react-native: 0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) '@react-spring/rafz@9.7.5': {} @@ -7391,13 +7393,13 @@ snapshots: '@react-spring/types': 9.7.5 react: 18.3.1 - '@react-spring/three@9.7.5(@react-three/fiber@8.17.10(react-dom@18.3.1(react@18.3.1))(react-native@0.76.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)(three@0.169.0))(react@18.3.1)(three@0.169.0)': + '@react-spring/three@9.7.5(@react-three/fiber@8.17.10(react-dom@18.3.1(react@18.3.1))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)(three@0.169.0))(react@18.3.1)(three@0.169.0)': dependencies: '@react-spring/animated': 9.7.5(react@18.3.1) '@react-spring/core': 9.7.5(react@18.3.1) '@react-spring/shared': 9.7.5(react@18.3.1) '@react-spring/types': 9.7.5 - '@react-three/fiber': 8.17.10(react-dom@18.3.1(react@18.3.1))(react-native@0.76.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)(three@0.169.0) + '@react-three/fiber': 8.17.10(react-dom@18.3.1(react@18.3.1))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)(three@0.169.0) react: 18.3.1 three: 0.169.0 @@ -7423,7 +7425,7 @@ snapshots: react-zdog: 1.2.2 zdog: 1.1.3 - '@react-three/fiber@8.17.10(react-dom@18.3.1(react@18.3.1))(react-native@0.76.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)(three@0.169.0)': + '@react-three/fiber@8.17.10(react-dom@18.3.1(react@18.3.1))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)(three@0.169.0)': dependencies: '@babel/runtime': 7.26.0 '@types/debounce': 1.2.4 @@ -7441,7 +7443,7 @@ snapshots: zustand: 3.7.2(react@18.3.1) optionalDependencies: react-dom: 18.3.1(react@18.3.1) - react-native: 0.76.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + react-native: 0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) '@release-it-plugins/workspaces@4.2.0(release-it@17.10.0(typescript@5.6.3))': dependencies: @@ -7454,97 +7456,97 @@ snapshots: walk-sync: 2.2.0 yaml: 2.6.0 - '@rollup/plugin-inject@5.0.5(rollup@4.24.2)': + '@rollup/plugin-inject@5.0.5(rollup@4.24.3)': dependencies: - '@rollup/pluginutils': 5.1.3(rollup@4.24.2) + '@rollup/pluginutils': 5.1.3(rollup@4.24.3) estree-walker: 2.0.2 magic-string: 0.30.12 optionalDependencies: - rollup: 4.24.2 + rollup: 4.24.3 - '@rollup/pluginutils@5.1.3(rollup@4.24.2)': + '@rollup/pluginutils@5.1.3(rollup@4.24.3)': dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 4.24.2 + rollup: 4.24.3 - '@rollup/rollup-android-arm-eabi@4.24.2': + '@rollup/rollup-android-arm-eabi@4.24.3': optional: true - '@rollup/rollup-android-arm64@4.24.2': + '@rollup/rollup-android-arm64@4.24.3': optional: true - '@rollup/rollup-darwin-arm64@4.24.2': + '@rollup/rollup-darwin-arm64@4.24.3': optional: true - '@rollup/rollup-darwin-x64@4.24.2': + '@rollup/rollup-darwin-x64@4.24.3': optional: true - '@rollup/rollup-freebsd-arm64@4.24.2': + '@rollup/rollup-freebsd-arm64@4.24.3': optional: true - '@rollup/rollup-freebsd-x64@4.24.2': + '@rollup/rollup-freebsd-x64@4.24.3': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.24.2': + '@rollup/rollup-linux-arm-gnueabihf@4.24.3': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.24.2': + '@rollup/rollup-linux-arm-musleabihf@4.24.3': optional: true - '@rollup/rollup-linux-arm64-gnu@4.24.2': + '@rollup/rollup-linux-arm64-gnu@4.24.3': optional: true - '@rollup/rollup-linux-arm64-musl@4.24.2': + '@rollup/rollup-linux-arm64-musl@4.24.3': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.24.2': + '@rollup/rollup-linux-powerpc64le-gnu@4.24.3': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.24.2': + '@rollup/rollup-linux-riscv64-gnu@4.24.3': optional: true - '@rollup/rollup-linux-s390x-gnu@4.24.2': + '@rollup/rollup-linux-s390x-gnu@4.24.3': optional: true - '@rollup/rollup-linux-x64-gnu@4.24.2': + '@rollup/rollup-linux-x64-gnu@4.24.3': optional: true - '@rollup/rollup-linux-x64-musl@4.24.2': + '@rollup/rollup-linux-x64-musl@4.24.3': optional: true - '@rollup/rollup-win32-arm64-msvc@4.24.2': + '@rollup/rollup-win32-arm64-msvc@4.24.3': optional: true - '@rollup/rollup-win32-ia32-msvc@4.24.2': + '@rollup/rollup-win32-ia32-msvc@4.24.3': optional: true - '@rollup/rollup-win32-x64-msvc@4.24.2': + '@rollup/rollup-win32-x64-msvc@4.24.3': optional: true - '@shikijs/core@1.22.1': + '@shikijs/core@1.22.2': dependencies: - '@shikijs/engine-javascript': 1.22.1 - '@shikijs/engine-oniguruma': 1.22.1 - '@shikijs/types': 1.22.1 + '@shikijs/engine-javascript': 1.22.2 + '@shikijs/engine-oniguruma': 1.22.2 + '@shikijs/types': 1.22.2 '@shikijs/vscode-textmate': 9.3.0 '@types/hast': 3.0.4 hast-util-to-html: 9.0.3 - '@shikijs/engine-javascript@1.22.1': + '@shikijs/engine-javascript@1.22.2': dependencies: - '@shikijs/types': 1.22.1 + '@shikijs/types': 1.22.2 '@shikijs/vscode-textmate': 9.3.0 oniguruma-to-js: 0.4.3 - '@shikijs/engine-oniguruma@1.22.1': + '@shikijs/engine-oniguruma@1.22.2': dependencies: - '@shikijs/types': 1.22.1 + '@shikijs/types': 1.22.2 '@shikijs/vscode-textmate': 9.3.0 - '@shikijs/types@1.22.1': + '@shikijs/types@1.22.2': dependencies: '@shikijs/vscode-textmate': 9.3.0 '@types/hast': 3.0.4 @@ -7586,7 +7588,7 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.26.1 + '@babel/parser': 7.26.2 '@babel/types': 7.26.0 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 @@ -7598,7 +7600,7 @@ snapshots: '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.26.1 + '@babel/parser': 7.26.2 '@babel/types': 7.26.0 '@types/babel__traverse@7.20.6': @@ -7609,13 +7611,13 @@ snapshots: '@types/dns-packet@5.6.5': dependencies: - '@types/node': 22.8.1 + '@types/node': 22.8.4 '@types/estree@1.0.6': {} '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 22.8.1 + '@types/node': 22.8.4 '@types/hast@3.0.4': dependencies: @@ -7642,15 +7644,15 @@ snapshots: '@types/multicast-dns@7.2.4': dependencies: '@types/dns-packet': 5.6.5 - '@types/node': 22.8.1 + '@types/node': 22.8.4 '@types/murmurhash3js-revisited@3.0.3': {} '@types/node-forge@1.3.11': dependencies: - '@types/node': 22.8.1 + '@types/node': 22.8.4 - '@types/node@22.8.1': + '@types/node@22.8.4': dependencies: undici-types: 6.19.8 @@ -7679,7 +7681,7 @@ snapshots: '@types/ws@8.5.12': dependencies: - '@types/node': 22.8.1 + '@types/node': 22.8.4 '@types/yargs-parser@21.0.3': {} @@ -7689,43 +7691,43 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vitest/expect@2.1.3': + '@vitest/expect@2.1.4': dependencies: - '@vitest/spy': 2.1.3 - '@vitest/utils': 2.1.3 + '@vitest/spy': 2.1.4 + '@vitest/utils': 2.1.4 chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.3(@vitest/spy@2.1.3)(vite@5.4.10(@types/node@22.8.1)(terser@5.36.0))': + '@vitest/mocker@2.1.4(vite@5.4.10(@types/node@22.8.4)(terser@5.36.0))': dependencies: - '@vitest/spy': 2.1.3 + '@vitest/spy': 2.1.4 estree-walker: 3.0.3 magic-string: 0.30.12 optionalDependencies: - vite: 5.4.10(@types/node@22.8.1)(terser@5.36.0) + vite: 5.4.10(@types/node@22.8.4)(terser@5.36.0) - '@vitest/pretty-format@2.1.3': + '@vitest/pretty-format@2.1.4': dependencies: tinyrainbow: 1.2.0 - '@vitest/runner@2.1.3': + '@vitest/runner@2.1.4': dependencies: - '@vitest/utils': 2.1.3 + '@vitest/utils': 2.1.4 pathe: 1.1.2 - '@vitest/snapshot@2.1.3': + '@vitest/snapshot@2.1.4': dependencies: - '@vitest/pretty-format': 2.1.3 + '@vitest/pretty-format': 2.1.4 magic-string: 0.30.12 pathe: 1.1.2 - '@vitest/spy@2.1.3': + '@vitest/spy@2.1.4': dependencies: tinyspy: 3.0.2 - '@vitest/utils@2.1.3': + '@vitest/utils@2.1.4': dependencies: - '@vitest/pretty-format': 2.1.3 + '@vitest/pretty-format': 2.1.4 loupe: 3.1.2 tinyrainbow: 1.2.0 @@ -7970,7 +7972,7 @@ snapshots: babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.26.0): dependencies: - '@babel/compat-data': 7.26.0 + '@babel/compat-data': 7.26.2 '@babel/core': 7.26.0 '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0) semver: 6.3.1 @@ -7981,7 +7983,7 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0) - core-js-compat: 3.38.1 + core-js-compat: 3.39.0 transitivePeerDependencies: - supports-color @@ -8126,8 +8128,8 @@ snapshots: browserslist@4.24.2: dependencies: - caniuse-lite: 1.0.30001673 - electron-to-chromium: 1.5.47 + caniuse-lite: 1.0.30001675 + electron-to-chromium: 1.5.49 node-releases: 2.0.18 update-browserslist-db: 1.1.1(browserslist@4.24.2) @@ -8183,7 +8185,7 @@ snapshots: camelcase@8.0.0: {} - caniuse-lite@1.0.30001673: {} + caniuse-lite@1.0.30001675: {} case-anything@2.1.13: {} @@ -8218,7 +8220,7 @@ snapshots: chrome-launcher@0.15.2: dependencies: - '@types/node': 22.8.1 + '@types/node': 22.8.4 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -8229,7 +8231,7 @@ snapshots: chromium-edge-launcher@0.2.0: dependencies: - '@types/node': 22.8.1 + '@types/node': 22.8.4 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -8320,7 +8322,7 @@ snapshots: convert-source-map@2.0.0: {} - core-js-compat@3.38.1: + core-js-compat@3.39.0: dependencies: browserslist: 4.24.2 @@ -8393,7 +8395,7 @@ snapshots: datastore-core@10.0.2: dependencies: - '@libp2p/logger': 5.1.2 + '@libp2p/logger': 5.1.3 interface-datastore: 8.3.1 interface-store: 6.0.2 it-drain: 3.0.7 @@ -8517,7 +8519,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.47: {} + electron-to-chromium@1.5.49: {} elliptic@6.6.0: dependencies: @@ -8705,6 +8707,8 @@ snapshots: expand-template@2.0.3: {} + expect-type@1.1.0: {} + exponential-backoff@3.1.1: {} external-editor@3.1.0: @@ -8771,7 +8775,7 @@ snapshots: flow-enums-runtime@0.0.6: {} - flow-parser@0.250.0: {} + flow-parser@0.251.1: {} for-each@0.3.3: dependencies: @@ -9164,7 +9168,7 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: '@babel/core': 7.26.0 - '@babel/parser': 7.26.1 + '@babel/parser': 7.26.2 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -9258,7 +9262,7 @@ snapshots: it-length-prefixed: 9.1.0 it-pushable: 3.2.3 it-stream-types: 2.0.2 - nanoid: 5.0.7 + nanoid: 5.0.8 p-defer: 4.0.1 protons-runtime: 5.5.0 uint8arraylist: 2.4.8 @@ -9293,7 +9297,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.8.1 + '@types/node': 22.8.4 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -9303,7 +9307,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 22.8.1 + '@types/node': 22.8.4 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -9317,7 +9321,7 @@ snapshots: jest-message-util@29.7.0: dependencies: - '@babel/code-frame': 7.26.0 + '@babel/code-frame': 7.26.2 '@jest/types': 29.6.3 '@types/stack-utils': 2.0.3 chalk: 4.1.2 @@ -9330,7 +9334,7 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.8.1 + '@types/node': 22.8.4 jest-util: 29.7.0 jest-regex-util@29.6.3: {} @@ -9338,7 +9342,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.8.1 + '@types/node': 22.8.4 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -9355,13 +9359,13 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.8.1 + '@types/node': 22.8.4 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@29.7.0: dependencies: - '@types/node': 22.8.1 + '@types/node': 22.8.4 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -9386,7 +9390,7 @@ snapshots: jscodeshift@0.14.0(@babel/preset-env@7.26.0(@babel/core@7.26.0)): dependencies: '@babel/core': 7.26.0 - '@babel/parser': 7.26.1 + '@babel/parser': 7.26.2 '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.0) '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.26.0) '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.26.0) @@ -9397,7 +9401,7 @@ snapshots: '@babel/register': 7.25.9(@babel/core@7.26.0) babel-core: 7.0.0-bridge.0(@babel/core@7.26.0) chalk: 4.1.2 - flow-parser: 0.250.0 + flow-parser: 0.251.1 graceful-fs: 4.2.11 micromatch: 4.0.8 neo-async: 2.6.2 @@ -9436,20 +9440,20 @@ snapshots: leven@3.1.0: {} - libp2p@2.1.10: - dependencies: - '@libp2p/crypto': 5.0.5 - '@libp2p/interface': 2.1.3 - '@libp2p/interface-internal': 2.0.9 - '@libp2p/logger': 5.1.2 - '@libp2p/multistream-select': 6.0.7 - '@libp2p/peer-collections': 6.0.9 - '@libp2p/peer-id': 5.0.6 - '@libp2p/peer-store': 11.0.9 - '@libp2p/utils': 6.1.2 + libp2p@2.2.1: + dependencies: + '@libp2p/crypto': 5.0.6 + '@libp2p/interface': 2.2.0 + '@libp2p/interface-internal': 2.0.10 + '@libp2p/logger': 5.1.3 + '@libp2p/multistream-select': 6.0.8 + '@libp2p/peer-collections': 6.0.10 + '@libp2p/peer-id': 5.0.7 + '@libp2p/peer-store': 11.0.10 + '@libp2p/utils': 6.1.3 '@multiformats/dns': 1.0.6 '@multiformats/multiaddr': 12.3.1 - '@multiformats/multiaddr-matcher': 1.3.0 + '@multiformats/multiaddr-matcher': 1.4.0 any-signal: 4.1.1 datastore-core: 10.0.2 interface-datastore: 8.3.1 @@ -9457,7 +9461,7 @@ snapshots: it-merge: 3.0.5 it-parallel: 3.0.8 merge-options: 3.0.4 - multiformats: 13.3.0 + multiformats: 13.3.1 p-defer: 4.0.1 p-retry: 6.2.0 progress-events: 1.0.1 @@ -9713,7 +9717,7 @@ snapshots: metro-transform-plugins@0.81.0: dependencies: '@babel/core': 7.26.0 - '@babel/generator': 7.26.0 + '@babel/generator': 7.26.2 '@babel/template': 7.25.9 '@babel/traverse': 7.25.9 flow-enums-runtime: 0.0.6 @@ -9724,8 +9728,8 @@ snapshots: metro-transform-worker@0.81.0: dependencies: '@babel/core': 7.26.0 - '@babel/generator': 7.26.0 - '@babel/parser': 7.26.1 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 '@babel/types': 7.26.0 flow-enums-runtime: 0.0.6 metro: 0.81.0 @@ -9743,10 +9747,10 @@ snapshots: metro@0.81.0: dependencies: - '@babel/code-frame': 7.26.0 + '@babel/code-frame': 7.26.2 '@babel/core': 7.26.0 - '@babel/generator': 7.26.0 - '@babel/parser': 7.26.1 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 '@babel/template': 7.25.9 '@babel/traverse': 7.25.9 '@babel/types': 7.26.0 @@ -9874,7 +9878,7 @@ snapshots: dns-packet: 5.6.1 thunky: 1.1.0 - multiformats@13.3.0: {} + multiformats@13.3.1: {} murmurhash3js-revisited@3.0.0: {} @@ -9882,7 +9886,7 @@ snapshots: nanoid@3.3.7: {} - nanoid@5.0.7: {} + nanoid@5.0.8: {} napi-build-utils@1.0.2: {} @@ -10148,7 +10152,7 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.26.0 + '@babel/code-frame': 7.26.2 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -10270,7 +10274,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 22.8.1 + '@types/node': 22.8.4 long: 5.2.3 protocols@2.0.1: {} @@ -10386,25 +10390,25 @@ snapshots: react-reconciler: 0.29.2(react@18.3.1) scheduler: 0.23.2 - react-native-webrtc@124.0.4(react-native@0.76.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)): + react-native-webrtc@124.0.4(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)): dependencies: base64-js: 1.5.1 debug: 4.3.4 event-target-shim: 6.0.2 - react-native: 0.76.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + react-native: 0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) transitivePeerDependencies: - supports-color - react-native@0.76.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1): + react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1): dependencies: '@jest/create-cache-key-function': 29.7.0 - '@react-native/assets-registry': 0.76.0 - '@react-native/codegen': 0.76.0(@babel/preset-env@7.26.0(@babel/core@7.26.0)) - '@react-native/community-cli-plugin': 0.76.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)) - '@react-native/gradle-plugin': 0.76.0 - '@react-native/js-polyfills': 0.76.0 - '@react-native/normalize-colors': 0.76.0 - '@react-native/virtualized-lists': 0.76.0(@types/react@18.3.12)(react-native@0.76.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@react-native/assets-registry': 0.76.1 + '@react-native/codegen': 0.76.1(@babel/preset-env@7.26.0(@babel/core@7.26.0)) + '@react-native/community-cli-plugin': 0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)) + '@react-native/gradle-plugin': 0.76.1 + '@react-native/js-polyfills': 0.76.1 + '@react-native/normalize-colors': 0.76.1 + '@react-native/virtualized-lists': 0.76.1(@types/react@18.3.12)(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 @@ -10461,12 +10465,12 @@ snapshots: react-refresh@0.14.2: {} - react-spring@9.7.4(@react-three/fiber@8.17.10(react-dom@18.3.1(react@18.3.1))(react-native@0.76.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)(three@0.169.0))(konva@9.3.16)(react-dom@18.3.1(react@18.3.1))(react-konva@18.2.10(konva@9.3.16)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.76.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react-zdog@1.2.2)(react@18.3.1)(three@0.169.0)(zdog@1.1.3): + react-spring@9.7.4(@react-three/fiber@8.17.10(react-dom@18.3.1(react@18.3.1))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)(three@0.169.0))(konva@9.3.16)(react-dom@18.3.1(react@18.3.1))(react-konva@18.2.10(konva@9.3.16)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react-zdog@1.2.2)(react@18.3.1)(three@0.169.0)(zdog@1.1.3): dependencies: '@react-spring/core': 9.7.5(react@18.3.1) '@react-spring/konva': 9.7.5(konva@9.3.16)(react-konva@18.2.10(konva@9.3.16)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) - '@react-spring/native': 9.7.5(react-native@0.76.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) - '@react-spring/three': 9.7.5(@react-three/fiber@8.17.10(react-dom@18.3.1(react@18.3.1))(react-native@0.76.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)(three@0.169.0))(react@18.3.1)(three@0.169.0) + '@react-spring/native': 9.7.5(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@react-spring/three': 9.7.5(@react-three/fiber@8.17.10(react-dom@18.3.1(react@18.3.1))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)(three@0.169.0))(react@18.3.1)(three@0.169.0) '@react-spring/web': 9.7.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-spring/zdog': 9.7.5(react-dom@18.3.1(react@18.3.1))(react-zdog@1.2.2)(react@18.3.1)(zdog@1.1.3) react: 18.3.1 @@ -10640,28 +10644,28 @@ snapshots: hash-base: 3.0.4 inherits: 2.0.4 - rollup@4.24.2: + rollup@4.24.3: dependencies: '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.24.2 - '@rollup/rollup-android-arm64': 4.24.2 - '@rollup/rollup-darwin-arm64': 4.24.2 - '@rollup/rollup-darwin-x64': 4.24.2 - '@rollup/rollup-freebsd-arm64': 4.24.2 - '@rollup/rollup-freebsd-x64': 4.24.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.24.2 - '@rollup/rollup-linux-arm-musleabihf': 4.24.2 - '@rollup/rollup-linux-arm64-gnu': 4.24.2 - '@rollup/rollup-linux-arm64-musl': 4.24.2 - '@rollup/rollup-linux-powerpc64le-gnu': 4.24.2 - '@rollup/rollup-linux-riscv64-gnu': 4.24.2 - '@rollup/rollup-linux-s390x-gnu': 4.24.2 - '@rollup/rollup-linux-x64-gnu': 4.24.2 - '@rollup/rollup-linux-x64-musl': 4.24.2 - '@rollup/rollup-win32-arm64-msvc': 4.24.2 - '@rollup/rollup-win32-ia32-msvc': 4.24.2 - '@rollup/rollup-win32-x64-msvc': 4.24.2 + '@rollup/rollup-android-arm-eabi': 4.24.3 + '@rollup/rollup-android-arm64': 4.24.3 + '@rollup/rollup-darwin-arm64': 4.24.3 + '@rollup/rollup-darwin-x64': 4.24.3 + '@rollup/rollup-freebsd-arm64': 4.24.3 + '@rollup/rollup-freebsd-x64': 4.24.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.24.3 + '@rollup/rollup-linux-arm-musleabihf': 4.24.3 + '@rollup/rollup-linux-arm64-gnu': 4.24.3 + '@rollup/rollup-linux-arm64-musl': 4.24.3 + '@rollup/rollup-linux-powerpc64le-gnu': 4.24.3 + '@rollup/rollup-linux-riscv64-gnu': 4.24.3 + '@rollup/rollup-linux-s390x-gnu': 4.24.3 + '@rollup/rollup-linux-x64-gnu': 4.24.3 + '@rollup/rollup-linux-x64-musl': 4.24.3 + '@rollup/rollup-win32-arm64-msvc': 4.24.3 + '@rollup/rollup-win32-ia32-msvc': 4.24.3 + '@rollup/rollup-win32-x64-msvc': 4.24.3 fsevents: 2.3.3 run-applescript@7.0.0: {} @@ -10780,12 +10784,12 @@ snapshots: interpret: 1.4.0 rechoir: 0.6.2 - shiki@1.22.1: + shiki@1.22.2: dependencies: - '@shikijs/core': 1.22.1 - '@shikijs/engine-javascript': 1.22.1 - '@shikijs/engine-oniguruma': 1.22.1 - '@shikijs/types': 1.22.1 + '@shikijs/core': 1.22.2 + '@shikijs/engine-javascript': 1.22.2 + '@shikijs/engine-oniguruma': 1.22.2 + '@shikijs/types': 1.22.2 '@shikijs/vscode-textmate': 9.3.0 '@types/hast': 3.0.4 @@ -11043,14 +11047,14 @@ snapshots: typescript: 5.6.3 webpack: 5.95.0 - ts-node@10.9.2(@types/node@22.8.1)(typescript@5.6.3): + ts-node@10.9.2(@types/node@22.8.4)(typescript@5.6.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 22.8.1 + '@types/node': 22.8.4 acorn: 8.14.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -11067,11 +11071,11 @@ snapshots: ts-proto-descriptors@2.0.0: dependencies: - '@bufbuild/protobuf': 2.2.0 + '@bufbuild/protobuf': 2.2.1 ts-proto@2.2.5: dependencies: - '@bufbuild/protobuf': 2.2.0 + '@bufbuild/protobuf': 2.2.1 case-anything: 2.1.13 ts-poet: 6.9.0 ts-proto-descriptors: 2.0.0 @@ -11110,7 +11114,7 @@ snapshots: lunr: 2.3.9 markdown-it: 14.1.0 minimatch: 9.0.5 - shiki: 1.22.1 + shiki: 1.22.2 typescript: 5.6.3 yaml: 2.6.0 @@ -11129,7 +11133,7 @@ snapshots: uint8arrays@5.1.0: dependencies: - multiformats: 13.3.0 + multiformats: 13.3.1 undici-types@6.19.8: {} @@ -11236,12 +11240,12 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@2.1.3(@types/node@22.8.1)(terser@5.36.0): + vite-node@2.1.4(@types/node@22.8.4)(terser@5.36.0): dependencies: cac: 6.7.14 debug: 4.3.7 pathe: 1.1.2 - vite: 5.4.10(@types/node@22.8.1)(terser@5.36.0) + vite: 5.4.10(@types/node@22.8.4)(terser@5.36.0) transitivePeerDependencies: - '@types/node' - less @@ -11253,46 +11257,47 @@ snapshots: - supports-color - terser - vite-plugin-node-polyfills@0.22.0(rollup@4.24.2)(vite@5.4.10(@types/node@22.8.1)(terser@5.36.0)): + vite-plugin-node-polyfills@0.22.0(rollup@4.24.3)(vite@5.4.10(@types/node@22.8.4)(terser@5.36.0)): dependencies: - '@rollup/plugin-inject': 5.0.5(rollup@4.24.2) + '@rollup/plugin-inject': 5.0.5(rollup@4.24.3) node-stdlib-browser: 1.2.1 - vite: 5.4.10(@types/node@22.8.1)(terser@5.36.0) + vite: 5.4.10(@types/node@22.8.4)(terser@5.36.0) transitivePeerDependencies: - rollup - vite-tsconfig-paths@5.0.1(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(terser@5.36.0)): + vite-tsconfig-paths@5.0.1(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.4)(terser@5.36.0)): dependencies: debug: 4.3.7 globrex: 0.1.2 tsconfck: 3.1.4(typescript@5.6.3) optionalDependencies: - vite: 5.4.10(@types/node@22.8.1)(terser@5.36.0) + vite: 5.4.10(@types/node@22.8.4)(terser@5.36.0) transitivePeerDependencies: - supports-color - typescript - vite@5.4.10(@types/node@22.8.1)(terser@5.36.0): + vite@5.4.10(@types/node@22.8.4)(terser@5.36.0): dependencies: esbuild: 0.21.5 postcss: 8.4.47 - rollup: 4.24.2 + rollup: 4.24.3 optionalDependencies: - '@types/node': 22.8.1 + '@types/node': 22.8.4 fsevents: 2.3.3 terser: 5.36.0 - vitest@2.1.3(@types/node@22.8.1)(terser@5.36.0): + vitest@2.1.4(@types/node@22.8.4)(terser@5.36.0): dependencies: - '@vitest/expect': 2.1.3 - '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.10(@types/node@22.8.1)(terser@5.36.0)) - '@vitest/pretty-format': 2.1.3 - '@vitest/runner': 2.1.3 - '@vitest/snapshot': 2.1.3 - '@vitest/spy': 2.1.3 - '@vitest/utils': 2.1.3 + '@vitest/expect': 2.1.4 + '@vitest/mocker': 2.1.4(vite@5.4.10(@types/node@22.8.4)(terser@5.36.0)) + '@vitest/pretty-format': 2.1.4 + '@vitest/runner': 2.1.4 + '@vitest/snapshot': 2.1.4 + '@vitest/spy': 2.1.4 + '@vitest/utils': 2.1.4 chai: 5.1.2 debug: 4.3.7 + expect-type: 1.1.0 magic-string: 0.30.12 pathe: 1.1.2 std-env: 3.7.0 @@ -11300,11 +11305,11 @@ snapshots: tinyexec: 0.3.1 tinypool: 1.0.1 tinyrainbow: 1.2.0 - vite: 5.4.10(@types/node@22.8.1)(terser@5.36.0) - vite-node: 2.1.3(@types/node@22.8.1)(terser@5.36.0) + vite: 5.4.10(@types/node@22.8.4)(terser@5.36.0) + vite-node: 2.1.4(@types/node@22.8.4)(terser@5.36.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.8.1 + '@types/node': 22.8.4 transitivePeerDependencies: - less - lightningcss