Skip to content

Commit

Permalink
refactor: update deps, fix types, pass a logger stub to yamux
Browse files Browse the repository at this point in the history
Update dependencies and fix various breaking changes introduced by those
dependency updates:

 - Change type of Conn to Duplex<Uint8Array | Uint8ArrayList>
 - Pass a logger stub to yamux as it's now required.

The logger stub should not be necessary once these are fixed:

- ChainSafe/js-libp2p-yamux#69
- libp2p/js-libp2p#2275
- ChainSafe/js-libp2p-yamux#70

Signed-off-by: Christian Stewart <christian@aperture.us>
  • Loading branch information
paralin committed Dec 1, 2023
1 parent e507097 commit 4dadd0c
Show file tree
Hide file tree
Showing 11 changed files with 637 additions and 434 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ jobs:

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@66b90a5db151a8042fa97405c6cf843bbe433f7b # v2.22.7
uses: github/codeql-action/init@407ffafae6a767df3e0230c3df91b6443ae8df75 # v2.22.8
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
Expand All @@ -53,7 +53,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@66b90a5db151a8042fa97405c6cf843bbe433f7b # v2.22.7
uses: github/codeql-action/autobuild@407ffafae6a767df3e0230c3df91b6443ae8df75 # v2.22.8

# ℹ️ Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
Expand All @@ -66,4 +66,4 @@ jobs:
# ./location_of_script_within_repo/buildscript.sh

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@66b90a5db151a8042fa97405c6cf843bbe433f7b # v2.22.7
uses: github/codeql-action/analyze@407ffafae6a767df3e0230c3df91b6443ae8df75 # v2.22.8
2 changes: 1 addition & 1 deletion .github/workflows/dependency-review.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,4 @@ jobs:
- name: 'Checkout Repository'
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: 'Dependency Review'
uses: actions/dependency-review-action@7bbfa034e752445ea40215fff1c3bf9597993d3f # v3.1.3
uses: actions/dependency-review-action@01bc87099ba56df1e897b6874784491ea6309bc4 # v3.1.4
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,5 @@ yarn-error.log*
*.test

vendor/
debug.test
debug.test
.aider*
24 changes: 12 additions & 12 deletions e2e/mock/mock.pb.ts
Original file line number Diff line number Diff line change
Expand Up @@ -168,18 +168,18 @@ type Builtin =
export type DeepPartial<T> = T extends Builtin
? T
: T extends Long
? string | number | Long
: T extends Array<infer U>
? Array<DeepPartial<U>>
: T extends ReadonlyArray<infer U>
? ReadonlyArray<DeepPartial<U>>
: T extends { $case: string }
? { [K in keyof Omit<T, '$case'>]?: DeepPartial<T[K]> } & {
$case: T['$case']
}
: T extends {}
? { [K in keyof T]?: DeepPartial<T[K]> }
: Partial<T>
? string | number | Long
: T extends Array<infer U>
? Array<DeepPartial<U>>
: T extends ReadonlyArray<infer U>
? ReadonlyArray<DeepPartial<U>>
: T extends { $case: string }
? { [K in keyof Omit<T, '$case'>]?: DeepPartial<T[K]> } & {
$case: T['$case']
}
: T extends {}
? { [K in keyof T]?: DeepPartial<T[K]> }
: Partial<T>

type KeysOfUnion<T> = T extends T ? keyof T : never
export type Exact<P, I extends P> = P extends Builtin
Expand Down
24 changes: 12 additions & 12 deletions echo/echo.pb.ts
Original file line number Diff line number Diff line change
Expand Up @@ -303,18 +303,18 @@ type Builtin =
export type DeepPartial<T> = T extends Builtin
? T
: T extends Long
? string | number | Long
: T extends Array<infer U>
? Array<DeepPartial<U>>
: T extends ReadonlyArray<infer U>
? ReadonlyArray<DeepPartial<U>>
: T extends { $case: string }
? { [K in keyof Omit<T, '$case'>]?: DeepPartial<T[K]> } & {
$case: T['$case']
}
: T extends {}
? { [K in keyof T]?: DeepPartial<T[K]> }
: Partial<T>
? string | number | Long
: T extends Array<infer U>
? Array<DeepPartial<U>>
: T extends ReadonlyArray<infer U>
? ReadonlyArray<DeepPartial<U>>
: T extends { $case: string }
? { [K in keyof Omit<T, '$case'>]?: DeepPartial<T[K]> } & {
$case: T['$case']
}
: T extends {}
? { [K in keyof T]?: DeepPartial<T[K]> }
: Partial<T>

type KeysOfUnion<T> = T extends T ? keyof T : never
export type Exact<P, I extends P> = P extends Builtin
Expand Down
14 changes: 7 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,23 +61,23 @@
},
"devDependencies": {
"@aperturerobotics/ts-common": "^0.6.6",
"@typescript-eslint/eslint-plugin": "^6.12.0",
"@typescript-eslint/parser": "^6.12.0",
"@typescript-eslint/eslint-plugin": "^6.13.1",
"@typescript-eslint/parser": "^6.13.1",
"bufferutil": "^4.0.7",
"depcheck": "^1.4.6",
"esbuild": "^0.19.7",
"esbuild": "^0.19.8",
"eslint": "^8.54.0",
"eslint-config-prettier": "^9.0.0",
"prettier": "^3.0.3",
"rimraf": "^5.0.1",
"ts-poet": "6.6.0",
"ts-proto": "^1.158.0",
"ts-proto": "^1.165.0",
"typescript": "^5.3.2",
"utf-8-validate": "^6.0.3"
},
"dependencies": {
"@chainsafe/libp2p-yamux": "^5.0.0",
"@libp2p/interface": "^0.1.2",
"@chainsafe/libp2p-yamux": "^6.0.1",
"@libp2p/interface": "^1.0.1",
"event-iterator": "^2.0.0",
"is-promise": "^4.0.0",
"isomorphic-ws": "^5.0.0",
Expand All @@ -91,7 +91,7 @@
"memoize-one": "^6.0.0",
"patch-package": "^8.0.0",
"protobufjs": "^7.2.5",
"uint8arraylist": "^2.4.3",
"uint8arraylist": "^2.4.7",
"ws": "^8.14.2"
}
}
32 changes: 16 additions & 16 deletions rpcstream/rpcstream.pb.ts
Original file line number Diff line number Diff line change
Expand Up @@ -135,10 +135,10 @@ export const RpcStreamPacket = {
body: isSet(object.init)
? { $case: 'init', init: RpcStreamInit.fromJSON(object.init) }
: isSet(object.ack)
? { $case: 'ack', ack: RpcAck.fromJSON(object.ack) }
: isSet(object.data)
? { $case: 'data', data: bytesFromBase64(object.data) }
: undefined,
? { $case: 'ack', ack: RpcAck.fromJSON(object.ack) }
: isSet(object.data)
? { $case: 'data', data: bytesFromBase64(object.data) }
: undefined,
}
},

Expand Down Expand Up @@ -450,18 +450,18 @@ type Builtin =
export type DeepPartial<T> = T extends Builtin
? T
: T extends Long
? string | number | Long
: T extends Array<infer U>
? Array<DeepPartial<U>>
: T extends ReadonlyArray<infer U>
? ReadonlyArray<DeepPartial<U>>
: T extends { $case: string }
? { [K in keyof Omit<T, '$case'>]?: DeepPartial<T[K]> } & {
$case: T['$case']
}
: T extends {}
? { [K in keyof T]?: DeepPartial<T[K]> }
: Partial<T>
? string | number | Long
: T extends Array<infer U>
? Array<DeepPartial<U>>
: T extends ReadonlyArray<infer U>
? ReadonlyArray<DeepPartial<U>>
: T extends { $case: string }
? { [K in keyof Omit<T, '$case'>]?: DeepPartial<T[K]> } & {
$case: T['$case']
}
: T extends {}
? { [K in keyof T]?: DeepPartial<T[K]> }
: Partial<T>

type KeysOfUnion<T> = T extends T ? keyof T : never
export type Exact<P, I extends P> = P extends Builtin
Expand Down
17 changes: 9 additions & 8 deletions srpc/conn.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { yamux } from '@chainsafe/libp2p-yamux'
import type { Direction, Stream } from '@libp2p/interface/connection'
import type {
StreamMuxer,
StreamMuxerFactory,
} from '@libp2p/interface/stream-muxer'
import { pipe } from 'it-pipe'
import type { Duplex, Source } from 'it-stream-types'
import { yamux } from '@chainsafe/libp2p-yamux'
import { Uint8ArrayList } from 'uint8arraylist'
import isPromise from 'is-promise'
import { pushable, Pushable } from 'it-pushable'
Expand All @@ -18,6 +18,7 @@ import {
prependLengthPrefixTransform,
} from './packet.js'
import { buildPushableSink } from './pushable.js'
import { createDisabledComponentLogger } from './log.js'

// ConnParams are parameters that can be passed to the Conn constructor.
export interface ConnParams {
Expand Down Expand Up @@ -62,12 +63,7 @@ export function streamToSRPCStream(
// Implements the server by handling incoming streams.
// If the server is unset, rejects any incoming streams.
export class Conn
implements
Duplex<
AsyncGenerator<Uint8Array>,
Source<Uint8ArrayList | Uint8Array>,
Promise<void>
>
implements Duplex<AsyncGenerator<Uint8Array | Uint8ArrayList>>
{
// muxer is the stream muxer.
private muxer: StreamMuxer
Expand All @@ -78,7 +74,12 @@ export class Conn
if (server) {
this.server = server
}
const muxerFactory = connParams?.muxerFactory ?? yamux()()
const muxerFactory =
connParams?.muxerFactory ??
yamux()({
// https://github.com/ChainSafe/js-libp2p-yamux/issues/69
logger: createDisabledComponentLogger(),
})
this.muxer = muxerFactory.createStreamMuxer({
onIncomingStream: this.handleIncomingStream.bind(this),
direction: connParams?.direction || 'outbound',
Expand Down
25 changes: 25 additions & 0 deletions srpc/log.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import type { ComponentLogger, Logger } from '@libp2p/interface'

// https://github.com/libp2p/js-libp2p/issues/2276
// https://github.com/libp2p/js-libp2p/blob/bca8d6e689b47d85dda74082ed72e671139391de/packages/logger/src/index.ts#L86
// https://github.com/libp2p/js-libp2p/issues/2275
// https://github.com/ChainSafe/js-libp2p-yamux/issues/69
export function createDisabledLogger(namespace: string): Logger {
const logger = (): void => {}
logger.enabled = false
logger.color = ''
logger.diff = 0
logger.log = (): void => {}
logger.namespace = namespace
logger.destroy = () => true
logger.extend = () => logger
logger.debug = logger
logger.error = logger
logger.trace = logger

return logger
}

export function createDisabledComponentLogger(): ComponentLogger {
return { forComponent: createDisabledLogger }
}
32 changes: 16 additions & 16 deletions srpc/rpcproto.pb.ts
Original file line number Diff line number Diff line change
Expand Up @@ -166,10 +166,10 @@ export const Packet = {
callStart: CallStart.fromJSON(object.callStart),
}
: isSet(object.callData)
? { $case: 'callData', callData: CallData.fromJSON(object.callData) }
: isSet(object.callCancel)
? { $case: 'callCancel', callCancel: Boolean(object.callCancel) }
: undefined,
? { $case: 'callData', callData: CallData.fromJSON(object.callData) }
: isSet(object.callCancel)
? { $case: 'callCancel', callCancel: Boolean(object.callCancel) }
: undefined,
}
},

Expand Down Expand Up @@ -577,18 +577,18 @@ type Builtin =
export type DeepPartial<T> = T extends Builtin
? T
: T extends Long
? string | number | Long
: T extends Array<infer U>
? Array<DeepPartial<U>>
: T extends ReadonlyArray<infer U>
? ReadonlyArray<DeepPartial<U>>
: T extends { $case: string }
? { [K in keyof Omit<T, '$case'>]?: DeepPartial<T[K]> } & {
$case: T['$case']
}
: T extends {}
? { [K in keyof T]?: DeepPartial<T[K]> }
: Partial<T>
? string | number | Long
: T extends Array<infer U>
? Array<DeepPartial<U>>
: T extends ReadonlyArray<infer U>
? ReadonlyArray<DeepPartial<U>>
: T extends { $case: string }
? { [K in keyof Omit<T, '$case'>]?: DeepPartial<T[K]> } & {
$case: T['$case']
}
: T extends {}
? { [K in keyof T]?: DeepPartial<T[K]> }
: Partial<T>

type KeysOfUnion<T> = T extends T ? keyof T : never
export type Exact<P, I extends P> = P extends Builtin
Expand Down
Loading

0 comments on commit 4dadd0c

Please sign in to comment.