diff --git a/.github/renovate.json b/.github/renovate.json index 98e0f97..7495b8c 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -7,7 +7,6 @@ "workarounds:all" ], "branchConcurrentLimit": 0, - "ignorePaths": ["hack"], "packageRules": [ { "matchManagers": ["gomod"], diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 64dedbb..624bf0f 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -4,6 +4,7 @@ on: push: branches: [ "main" ] pull_request: + # The branches below must be a subset of the branches above branches: [ "main" ] schedule: - cron: '41 13 * * 6' @@ -25,7 +26,7 @@ jobs: matrix: language: [ 'go', 'javascript' ] go: ['1.22'] - node: [21.x] + node: [22.x] # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support @@ -38,6 +39,16 @@ jobs: with: go-version: ${{ matrix.go }} + - name: Cache Go modules + uses: actions/cache/restore@v4 + with: + path: | + ~/.cache/go-build + ~/go/pkg/mod + key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-go- + - name: Setup Node.JS ${{ matrix.node }} uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: @@ -45,12 +56,13 @@ jobs: cache: 'yarn' - name: Initialize CodeQL - uses: github/codeql-action/init@ccf74c947955fd1cf117aef6a0e4e66191ef6f61 # v3.25.4 + uses: github/codeql-action/init@b7cec7526559c32f1616476ff32d17ba4c59b2d6 # v3.25.5 with: languages: ${{ matrix.language }} + - name: Autobuild - uses: github/codeql-action/autobuild@ccf74c947955fd1cf117aef6a0e4e66191ef6f61 # v3.25.4 + uses: github/codeql-action/autobuild@b7cec7526559c32f1616476ff32d17ba4c59b2d6 # v3.25.5 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@ccf74c947955fd1cf117aef6a0e4e66191ef6f61 # v3.25.4 + uses: github/codeql-action/analyze@b7cec7526559c32f1616476ff32d17ba4c59b2d6 # v3.25.5 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 4aebf4a..ab9b1da 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -12,37 +12,66 @@ permissions: contents: read jobs: - integration: + tests: runs-on: ubuntu-latest strategy: matrix: go: ['1.22'] - node: [21.x] + node: [22.x] timeout-minutes: 10 steps: - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + - name: Setup Go ${{ matrix.go }} uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version: ${{ matrix.go }} + + - name: Cache Go modules + uses: actions/cache@v4 + with: + path: | + ~/.cache/go-build + ~/go/pkg/mod + key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-go- + - name: Setup Node.JS ${{ matrix.node }} uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: ${{ matrix.node }} cache: 'yarn' + - name: Yarn install run: yarn install - # - name: Depcheck - # run: yarn run deps + + - name: Cache tools + uses: actions/cache@v4 + with: + path: | + ./hack/bin + key: ${{ runner.os }}-aptre-tools-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-aptre-tools- + - name: Build Javascript run: yarn run build - - name: Lint Javascript - run: yarn run lint:js + + - name: Test Go + run: make test + - name: Test Js run: yarn test:js + + - name: Lint Js + run: yarn run lint:js + - name: Lint Go run: yarn run lint:go - - name: Test Go - run: make test - - name: Test integration of Go and TypeScript - run: yarn integration + + - name: Test integration + run: yarn run integration + + - name: Depcheck Js + run: yarn run deps diff --git a/e2e/mock/mock.pb.go b/e2e/mock/mock.pb.go index d40b7a2..7056f10 100644 --- a/e2e/mock/mock.pb.go +++ b/e2e/mock/mock.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-go-lite. DO NOT EDIT. -// protoc-gen-go-lite version: v0.6.5-0.20240516053737-24f165191893 +// protoc-gen-go-lite version: v0.6.5 // source: github.com/aperturerobotics/starpc/e2e/mock/mock.proto package e2e_mock diff --git a/e2e/mock/mock.pb.ts b/e2e/mock/mock.pb.ts index 06c5a55..acf0fe1 100644 --- a/e2e/mock/mock.pb.ts +++ b/e2e/mock/mock.pb.ts @@ -2,10 +2,10 @@ // @generated from file github.com/aperturerobotics/starpc/e2e/mock/mock.proto (package e2e.mock, syntax proto3) /* eslint-disable */ -import type { MessageType, PartialFieldInfo } from "@aptre/protobuf-es-lite"; -import { createMessageType, Message, ScalarType } from "@aptre/protobuf-es-lite"; +import type { MessageType, PartialFieldInfo } from '@aptre/protobuf-es-lite' +import { createMessageType, Message, ScalarType } from '@aptre/protobuf-es-lite' -export const protobufPackage = "e2e.mock"; +export const protobufPackage = 'e2e.mock' /** * MockMsg is the mock message body. @@ -16,16 +16,14 @@ export type MockMsg = Message<{ /** * @generated from field: string body = 1; */ - body?: string; - -}>; + body?: string +}> // MockMsg contains the message type declaration for MockMsg. export const MockMsg: MessageType = createMessageType({ - typeName: "e2e.mock.MockMsg", - fields: [ - { no: 1, name: "body", kind: "scalar", T: ScalarType.STRING }, - ] as readonly PartialFieldInfo[], - packedByDefault: true, -}); - + typeName: 'e2e.mock.MockMsg', + fields: [ + { no: 1, name: 'body', kind: 'scalar', T: ScalarType.STRING }, + ] as readonly PartialFieldInfo[], + packedByDefault: true, +}) diff --git a/e2e/mock/mock_srpc.pb.ts b/e2e/mock/mock_srpc.pb.ts index 7beb33e..cad7128 100644 --- a/e2e/mock/mock_srpc.pb.ts +++ b/e2e/mock/mock_srpc.pb.ts @@ -2,9 +2,9 @@ // @generated from file github.com/aperturerobotics/starpc/e2e/mock/mock.proto (package e2e.mock, syntax proto3) /* eslint-disable */ -import { MockMsg } from "./mock.pb.js"; -import { Message, MethodKind } from "@aptre/protobuf-es-lite"; -import { ProtoRpc } from "starpc"; +import { MockMsg } from './mock.pb.js' +import { Message, MethodKind } from '@aptre/protobuf-es-lite' +import { ProtoRpc } from 'starpc' /** * Mock service mocks some RPCs for the e2e tests. @@ -12,7 +12,7 @@ import { ProtoRpc } from "starpc"; * @generated from service e2e.mock.Mock */ export const MockDefinition = { - typeName: "e2e.mock.Mock", + typeName: 'e2e.mock.Mock', methods: { /** * MockRequest runs a mock unary request. @@ -20,13 +20,13 @@ export const MockDefinition = { * @generated from rpc e2e.mock.Mock.MockRequest */ MockRequest: { - name: "MockRequest", + name: 'MockRequest', I: MockMsg, O: MockMsg, kind: MethodKind.Unary, }, - } -} as const; + }, +} as const /** * Mock service mocks some RPCs for the e2e tests. @@ -40,10 +40,9 @@ export interface Mock { * @generated from rpc e2e.mock.Mock.MockRequest */ MockRequest( -request: Message, abortSignal?: AbortSignal -): -Promise> - + request: Message, + abortSignal?: AbortSignal, + ): Promise> } export const MockServiceName = MockDefinition.typeName @@ -62,9 +61,9 @@ export class MockClient implements Mock { * @generated from rpc e2e.mock.Mock.MockRequest */ async MockRequest( -request: Message, abortSignal?: AbortSignal -): -Promise> { + request: Message, + abortSignal?: AbortSignal, + ): Promise> { const requestMsg = MockMsg.create(request) const result = await this.rpc.request( this.service, @@ -74,5 +73,4 @@ Promise> { ) return MockMsg.fromBinary(result) } - } diff --git a/echo/echo.pb.go b/echo/echo.pb.go index 8caba8c..efdb9fc 100644 --- a/echo/echo.pb.go +++ b/echo/echo.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-go-lite. DO NOT EDIT. -// protoc-gen-go-lite version: v0.6.5-0.20240516053737-24f165191893 +// protoc-gen-go-lite version: v0.6.5 // source: github.com/aperturerobotics/starpc/echo/echo.proto package echo diff --git a/echo/echo.pb.ts b/echo/echo.pb.ts index 5203129..88a1215 100644 --- a/echo/echo.pb.ts +++ b/echo/echo.pb.ts @@ -2,10 +2,10 @@ // @generated from file github.com/aperturerobotics/starpc/echo/echo.proto (package echo, syntax proto3) /* eslint-disable */ -import type { MessageType, PartialFieldInfo } from "@aptre/protobuf-es-lite"; -import { createMessageType, Message, ScalarType } from "@aptre/protobuf-es-lite"; +import type { MessageType, PartialFieldInfo } from '@aptre/protobuf-es-lite' +import { createMessageType, Message, ScalarType } from '@aptre/protobuf-es-lite' -export const protobufPackage = "echo"; +export const protobufPackage = 'echo' /** * EchoMsg is the message body for Echo. @@ -16,16 +16,14 @@ export type EchoMsg = Message<{ /** * @generated from field: string body = 1; */ - body?: string; - -}>; + body?: string +}> // EchoMsg contains the message type declaration for EchoMsg. export const EchoMsg: MessageType = createMessageType({ - typeName: "echo.EchoMsg", - fields: [ - { no: 1, name: "body", kind: "scalar", T: ScalarType.STRING }, - ] as readonly PartialFieldInfo[], - packedByDefault: true, -}); - + typeName: 'echo.EchoMsg', + fields: [ + { no: 1, name: 'body', kind: 'scalar', T: ScalarType.STRING }, + ] as readonly PartialFieldInfo[], + packedByDefault: true, +}) diff --git a/package.json b/package.json index 24ab98f..faa794f 100644 --- a/package.json +++ b/package.json @@ -111,6 +111,6 @@ "ws": "^8.17.0" }, "resolutions": { - "@aptre/protobuf-es-lite": "0.4.3" + "@aptre/protobuf-es-lite": "0.4.4" } } diff --git a/rpcstream/rpcstream.pb.go b/rpcstream/rpcstream.pb.go index dca4753..3b44f62 100644 --- a/rpcstream/rpcstream.pb.go +++ b/rpcstream/rpcstream.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-go-lite. DO NOT EDIT. -// protoc-gen-go-lite version: v0.6.5-0.20240516053737-24f165191893 +// protoc-gen-go-lite version: v0.6.5 // source: github.com/aperturerobotics/starpc/rpcstream/rpcstream.proto package rpcstream diff --git a/rpcstream/rpcstream.pb.ts b/rpcstream/rpcstream.pb.ts index f033382..d3c1447 100644 --- a/rpcstream/rpcstream.pb.ts +++ b/rpcstream/rpcstream.pb.ts @@ -2,10 +2,10 @@ // @generated from file github.com/aperturerobotics/starpc/rpcstream/rpcstream.proto (package rpcstream, syntax proto3) /* eslint-disable */ -import type { MessageType, PartialFieldInfo } from "@aptre/protobuf-es-lite"; -import { createMessageType, Message, ScalarType } from "@aptre/protobuf-es-lite"; +import type { MessageType, PartialFieldInfo } from '@aptre/protobuf-es-lite' +import { createMessageType, Message, ScalarType } from '@aptre/protobuf-es-lite' -export const protobufPackage = "rpcstream"; +export const protobufPackage = 'rpcstream' /** * RpcStreamInit is the first message in a RPC stream. @@ -18,18 +18,17 @@ export type RpcStreamInit = Message<{ * * @generated from field: string component_id = 1; */ - componentId?: string; - -}>; + componentId?: string +}> // RpcStreamInit contains the message type declaration for RpcStreamInit. export const RpcStreamInit: MessageType = createMessageType({ - typeName: "rpcstream.RpcStreamInit", - fields: [ - { no: 1, name: "component_id", kind: "scalar", T: ScalarType.STRING }, - ] as readonly PartialFieldInfo[], - packedByDefault: true, -}); + typeName: 'rpcstream.RpcStreamInit', + fields: [ + { no: 1, name: 'component_id', kind: 'scalar', T: ScalarType.STRING }, + ] as readonly PartialFieldInfo[], + packedByDefault: true, +}) /** * RpcAck is the ack message in a RPC stream. @@ -42,18 +41,17 @@ export type RpcAck = Message<{ * * @generated from field: string error = 1; */ - error?: string; - -}>; + error?: string +}> // RpcAck contains the message type declaration for RpcAck. export const RpcAck: MessageType = createMessageType({ - typeName: "rpcstream.RpcAck", - fields: [ - { no: 1, name: "error", kind: "scalar", T: ScalarType.STRING }, - ] as readonly PartialFieldInfo[], - packedByDefault: true, -}); + typeName: 'rpcstream.RpcAck', + fields: [ + { no: 1, name: 'error', kind: 'scalar', T: ScalarType.STRING }, + ] as readonly PartialFieldInfo[], + packedByDefault: true, +}) /** * RpcStreamPacket is a packet encapsulating data for a RPC stream. @@ -61,51 +59,58 @@ export const RpcAck: MessageType = createMessageType({ * @generated from message rpcstream.RpcStreamPacket */ export type RpcStreamPacket = Message<{ - /** * @generated from oneof rpcstream.RpcStreamPacket.body */ - body?: { - value?: undefined, - case: undefined - } | { - /** - * Init is the first packet in the stream. - * Sent by the initiator. - * - * @generated from field: rpcstream.RpcStreamInit init = 1; - */ - value: RpcStreamInit; - case: "init"; - } | { - /** - * Ack is sent in response to Init. - * Sent by the server. - * - * @generated from field: rpcstream.RpcAck ack = 2; - */ - value: RpcAck; - case: "ack"; - } | { - /** - * Data is the encapsulated data packet. - * - * @generated from field: bytes data = 3; - */ - value: Uint8Array; - case: "data"; - }; - -}>; + body?: + | { + value?: undefined + case: undefined + } + | { + /** + * Init is the first packet in the stream. + * Sent by the initiator. + * + * @generated from field: rpcstream.RpcStreamInit init = 1; + */ + value: RpcStreamInit + case: 'init' + } + | { + /** + * Ack is sent in response to Init. + * Sent by the server. + * + * @generated from field: rpcstream.RpcAck ack = 2; + */ + value: RpcAck + case: 'ack' + } + | { + /** + * Data is the encapsulated data packet. + * + * @generated from field: bytes data = 3; + */ + value: Uint8Array + case: 'data' + } +}> // RpcStreamPacket contains the message type declaration for RpcStreamPacket. export const RpcStreamPacket: MessageType = createMessageType({ - typeName: "rpcstream.RpcStreamPacket", - fields: [ - { no: 1, name: "init", kind: "message", T: () => RpcStreamInit, oneof: "body" }, - { no: 2, name: "ack", kind: "message", T: () => RpcAck, oneof: "body" }, - { no: 3, name: "data", kind: "scalar", T: ScalarType.BYTES, oneof: "body" }, - ] as readonly PartialFieldInfo[], - packedByDefault: true, -}); - + typeName: 'rpcstream.RpcStreamPacket', + fields: [ + { + no: 1, + name: 'init', + kind: 'message', + T: () => RpcStreamInit, + oneof: 'body', + }, + { no: 2, name: 'ack', kind: 'message', T: () => RpcAck, oneof: 'body' }, + { no: 3, name: 'data', kind: 'scalar', T: ScalarType.BYTES, oneof: 'body' }, + ] as readonly PartialFieldInfo[], + packedByDefault: true, +}) diff --git a/srpc/rpcproto.pb.go b/srpc/rpcproto.pb.go index ebeb51f..3c9491c 100644 --- a/srpc/rpcproto.pb.go +++ b/srpc/rpcproto.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-go-lite. DO NOT EDIT. -// protoc-gen-go-lite version: v0.6.5-0.20240516053737-24f165191893 +// protoc-gen-go-lite version: v0.6.5 // source: github.com/aperturerobotics/starpc/srpc/rpcproto.proto package srpc diff --git a/srpc/rpcproto.pb.ts b/srpc/rpcproto.pb.ts index e1782a3..3254a77 100644 --- a/srpc/rpcproto.pb.ts +++ b/srpc/rpcproto.pb.ts @@ -2,10 +2,10 @@ // @generated from file github.com/aperturerobotics/starpc/srpc/rpcproto.proto (package srpc, syntax proto3) /* eslint-disable */ -import type { MessageType, PartialFieldInfo } from "@aptre/protobuf-es-lite"; -import { createMessageType, Message, ScalarType } from "@aptre/protobuf-es-lite"; +import type { MessageType, PartialFieldInfo } from '@aptre/protobuf-es-lite' +import { createMessageType, Message, ScalarType } from '@aptre/protobuf-es-lite' -export const protobufPackage = "srpc"; +export const protobufPackage = 'srpc' /** * CallStart requests starting a new RPC call. @@ -19,41 +19,40 @@ export type CallStart = Message<{ * * @generated from field: string rpc_service = 1; */ - rpcService?: string; + rpcService?: string /** * RpcMethod is the RPC method to call. * Must be set. * * @generated from field: string rpc_method = 2; */ - rpcMethod?: string; + rpcMethod?: string /** * Data contains the request or the first message in the stream. * Optional if streaming. * * @generated from field: bytes data = 3; */ - data?: Uint8Array; + data?: Uint8Array /** * DataIsZero indicates Data is set with an empty message. * * @generated from field: bool data_is_zero = 4; */ - dataIsZero?: boolean; - -}>; + dataIsZero?: boolean +}> // CallStart contains the message type declaration for CallStart. export const CallStart: MessageType = createMessageType({ - typeName: "srpc.CallStart", - fields: [ - { no: 1, name: "rpc_service", kind: "scalar", T: ScalarType.STRING }, - { no: 2, name: "rpc_method", kind: "scalar", T: ScalarType.STRING }, - { no: 3, name: "data", kind: "scalar", T: ScalarType.BYTES }, - { no: 4, name: "data_is_zero", kind: "scalar", T: ScalarType.BOOL }, - ] as readonly PartialFieldInfo[], - packedByDefault: true, -}); + typeName: 'srpc.CallStart', + fields: [ + { no: 1, name: 'rpc_service', kind: 'scalar', T: ScalarType.STRING }, + { no: 2, name: 'rpc_method', kind: 'scalar', T: ScalarType.STRING }, + { no: 3, name: 'data', kind: 'scalar', T: ScalarType.BYTES }, + { no: 4, name: 'data_is_zero', kind: 'scalar', T: ScalarType.BOOL }, + ] as readonly PartialFieldInfo[], + packedByDefault: true, +}) /** * CallData contains a message in a streaming RPC sequence. @@ -66,40 +65,39 @@ export type CallData = Message<{ * * @generated from field: bytes data = 1; */ - data?: Uint8Array; + data?: Uint8Array /** * DataIsZero indicates Data is set with an empty message. * * @generated from field: bool data_is_zero = 2; */ - dataIsZero?: boolean; + dataIsZero?: boolean /** * Complete indicates the RPC call is completed. * * @generated from field: bool complete = 3; */ - complete?: boolean; + complete?: boolean /** * Error contains any error that caused the RPC to fail. * If set, implies complete=true. * * @generated from field: string error = 4; */ - error?: string; - -}>; + error?: string +}> // CallData contains the message type declaration for CallData. export const CallData: MessageType = createMessageType({ - typeName: "srpc.CallData", - fields: [ - { no: 1, name: "data", kind: "scalar", T: ScalarType.BYTES }, - { no: 2, name: "data_is_zero", kind: "scalar", T: ScalarType.BOOL }, - { no: 3, name: "complete", kind: "scalar", T: ScalarType.BOOL }, - { no: 4, name: "error", kind: "scalar", T: ScalarType.STRING }, - ] as readonly PartialFieldInfo[], - packedByDefault: true, -}); + typeName: 'srpc.CallData', + fields: [ + { no: 1, name: 'data', kind: 'scalar', T: ScalarType.BYTES }, + { no: 2, name: 'data_is_zero', kind: 'scalar', T: ScalarType.BOOL }, + { no: 3, name: 'complete', kind: 'scalar', T: ScalarType.BOOL }, + { no: 4, name: 'error', kind: 'scalar', T: ScalarType.STRING }, + ] as readonly PartialFieldInfo[], + packedByDefault: true, +}) /** * Packet is a message sent over a srpc packet connection. @@ -107,51 +105,70 @@ export const CallData: MessageType = createMessageType({ * @generated from message srpc.Packet */ export type Packet = Message<{ - /** * Body is the packet body. * * @generated from oneof srpc.Packet.body */ - body?: { - value?: undefined, - case: undefined - } | { - /** - * CallStart initiates a new call. - * - * @generated from field: srpc.CallStart call_start = 1; - */ - value: CallStart; - case: "callStart"; - } | { - /** - * CallData is a message in a streaming RPC sequence. - * - * @generated from field: srpc.CallData call_data = 2; - */ - value: CallData; - case: "callData"; - } | { - /** - * CallCancel cancels the call. - * - * @generated from field: bool call_cancel = 3; - */ - value: boolean; - case: "callCancel"; - }; - -}>; + body?: + | { + value?: undefined + case: undefined + } + | { + /** + * CallStart initiates a new call. + * + * @generated from field: srpc.CallStart call_start = 1; + */ + value: CallStart + case: 'callStart' + } + | { + /** + * CallData is a message in a streaming RPC sequence. + * + * @generated from field: srpc.CallData call_data = 2; + */ + value: CallData + case: 'callData' + } + | { + /** + * CallCancel cancels the call. + * + * @generated from field: bool call_cancel = 3; + */ + value: boolean + case: 'callCancel' + } +}> // Packet contains the message type declaration for Packet. export const Packet: MessageType = createMessageType({ - typeName: "srpc.Packet", - fields: [ - { no: 1, name: "call_start", kind: "message", T: () => CallStart, oneof: "body" }, - { no: 2, name: "call_data", kind: "message", T: () => CallData, oneof: "body" }, - { no: 3, name: "call_cancel", kind: "scalar", T: ScalarType.BOOL, oneof: "body" }, - ] as readonly PartialFieldInfo[], - packedByDefault: true, -}); - + typeName: 'srpc.Packet', + fields: [ + { + no: 1, + name: 'call_start', + kind: 'message', + T: () => CallStart, + oneof: 'body', + }, + { + no: 2, + name: 'call_data', + kind: 'message', + T: () => CallData, + oneof: 'body', + }, + { + no: 3, + name: 'call_cancel', + kind: 'scalar', + T: ScalarType.BOOL, + oneof: 'body', + }, + ] as readonly PartialFieldInfo[], + packedByDefault: true, +}) diff --git a/yarn.lock b/yarn.lock index 6fdbf8c..925bbdd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13,15 +13,7 @@ uint8arrays "^5.0.0" ws "^8.4.0" -"@aptre/protobuf-es-lite@0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@aptre/protobuf-es-lite/-/protobuf-es-lite-0.4.3.tgz#1839154a24ac19fb9f4f3bdb4fb0eccd9abdfebc" - integrity sha512-qiWodq4qZ6hAbgzMKHCGjaMoQr/Zj0gn8MGkZq6Pf9T93zEuafl0EijDblqRawmU7Ow9Ogzg/kq6G5bUWGvcpQ== - dependencies: - "@typescript/vfs" "^1.5.0" - lz-string "^1.5.0" - -"@aptre/protobuf-es-lite@^0.4.4": +"@aptre/protobuf-es-lite@0.4.4", "@aptre/protobuf-es-lite@^0.4.4": version "0.4.4" resolved "https://registry.yarnpkg.com/@aptre/protobuf-es-lite/-/protobuf-es-lite-0.4.4.tgz#2c5a305bd984a197c4b0fa57a5d23165ddac6535" integrity sha512-fw5ukLnaK0b27oFir5vxucL/g7cv7Dv7298rBWNH2VcFVkYmr1dDJTAWpoSPc9OvJbGFX5rvdg0b8pRn5ZM0FA==