Repository navigation
build(deps): bump @exadev/eslint-config to 3.0.0 - #354
Merged
Merged
Conversation
exadevConfig() takes its options object alone in 3.0.0, so every eslint.config.ts spreads its result inside defineConfig and lists its own blocks after it. The conformance rule block is scoped to TypeScript files: unscoped, it applied to JSON files, where the typescript-eslint plugin is not registered.
The golden vector files are ignored by eslint: generate.ts writes them and CI diffs them against a fresh generation, so their key order and layout belong to the generator. The tampered advert vectors return an altered copy instead of mutating the signed one, the verify suite is renamed verify.unit.test.ts for the test-kind rule, tsconfig options are sorted, and trailing comments move above the code they describe. Concurrency: none introduced.
Trailing comments move above the code they describe, consecutive line comments become block comments and statements are separated as the shared configuration requires. - The successor certificates are minted together. Concurrency: independent and side-effect-free. Each start is derived from the last stored certificate and a mint is a key generation with no shared state, so the order the mints run in is not observable. - The WebTransport server start returns its bound port instead of writing a variable it read before awaiting the bind. - Frame polling in tests uses vi.waitFor, and the self-signed certificate override is a stubbed environment variable reset in a finally block.
Trailing comments move above the code they describe, consecutive line comments become block comments and statements are separated as the shared configuration requires. The fake socket stream in a test is drained by recursion. No concurrency change.
Trailing comments move above the code they describe, consecutive line comments become block comments and statements are separated as the shared configuration requires. - Offer sections are walked one after another, in offer order, through a small sequential helper. Sequential: each section produces or consumes on the mediasoup transport and registers what it made, so a failing section stops the ones after it, nothing registers once join has thrown, and map insertion order stays section order. - Track maps are sent to the other participants in roster order, stopping at the first failure as the loop did. Sequential. - The negotiation id moves off the mutated roster entry into a WeakMap keyed by the entry, so an offer still being authorised when its participant is removed cannot hand its id to the same device added again. A test pins that. - A test clears its backend reference before awaiting the teardown.
Trailing comments move above the code they describe, consecutive line comments become block comments and statements are separated as the shared configuration requires. The rules that want positional parameter lists folded into options objects are not applied to the modules that export those lists: every module under src is a subpath export except those named in INTERNAL_MODULES, so changing them needs a major release. They are exempted per file in eslint.config.ts, with the reason beside the exemption. Internal functions are changed. Concurrency, each item classified: - Narrowing checks, token conditions and revocation entries are tested through a shared helper strictly one after another and stop at the first offender. Sequential. - Directory stats are read together. Independent and side-effect-free: reads of different paths, mapped in readdir order. - Data-sync entries are read one key at a time, stopping at the first hole and never touching later keys, and written in ascending sequence with the head last. Sequential. - Gossip adverts are verified together, in a session and in the relay hub. Independent and side-effect-free: verifyPeerAdvert derives a device id and checks a signature and never throws. Directory, registration and callbacks run afterwards in frame order. - The relay hub forwards to its peers one connection at a time over the live set. Sequential. - Notice log entries are read and verified in log order, so the first failure in log order is the one reported. Sequential. - Advertised addresses are dialled in order by recursion, and byte stream chunks are read with for await. Sequential. - The bulk sender still awaits its first ack inside the stream loop, so the turns between a chunk being sent and the next wait being registered are unchanged (an ack or a connection end with nothing waiting is dropped); later acks are awaited by recursion, and the final digest read fetches persisted chunks one at a time. Sequential. Other internal changes: the highest received counter is advanced with Math.max after the decrypt resolves, the direction key inputs, the shard to serve and the keygen round are passed as objects, and the delegation-chain walker keeps its position in one value. Polling loops in tests use recursion or vi.waitFor and ordered steps go through a small sequencing helper.
Trailing comments move above the code they describe, consecutive line comments become block comments and statements are separated as the shared configuration requires. The console is a private app, so its own signatures change where the rules ask: sendRoomMessage, requestToJoin, mintRoomInviteGrant and useRoomMessaging take their optional arguments as objects. Concurrency, each item classified: - The grant, message and name stores read their values together. Independent and side-effect-free: reads of distinct keys, processed afterwards in key order. - Revocation entries are verified and recorded together. Independent: each is verified on its own and recorded under its token id, whose entries are unordered by contract, and the unreadable list keeps key order. - The held request permission is chosen by judging candidates one at a time in order and stopping at the first valid one, so later candidates are never judged. Sequential. - Conversations are restored one room at a time, so the rooms before one whose list fails are already restored, and rekey keys are written in ascending epoch order. Sequential. - The announcement stream is read in order into one array. The IndexedDB and WebRTC adapters no longer assign to properties of their parameters, and test helpers take optional arguments as objects.
Mearman
force-pushed
the
chore/eslint-config-3
branch
from
October 10, 2026 09:16
1990c7d to
f077f83
Compare
Mearman
marked this pull request as ready for review
October 10, 2026 09:23
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bumps
@exadev/eslint-configto 3.0.0 ints/, its five packages andconformance/.exadevConfig()now takes only its options, so eacheslint.config.tsspreads its result insidedefineConfigand lists its own blocks after it. The conformance config exported the call directly, so it now goes throughdefineConfig; its rules-only block is scoped to TypeScript files, because unscoped it applied to JSON files where the typescript-eslint plugin is not registered.The packages were on 2.18 (conformance on 2.12), so most of the diff is the rules added since, not the major bump. There is one commit per package after the bump, each leaving that package's lint clean; the bump commit itself cannot (it only moves the configs and the dependency). Each package commit message says which await changes are concurrent (and why that is safe) and which stay sequential.
No published signature changes. The
max-paramsandprefer-options-object-paramrules would needwire-mesh-core's exported parameter lists folded into options objects, which is a breaking release, so those modules are exempted per file ints/packages/core/eslint.config.tswith the reason beside the exemption. Internal functions and the private web-console app were changed instead.The conformance golden vectors are ignored by eslint:
generate.tswrites them and CI diffs them against a fresh generation.verify.test.tsis nowverify.unit.test.tsfor the test-kind rule.Local runs of the CI commands (lint, typecheck, build, generated-file checks, tests) for
ts/andconformance/pass.Refs ExaDev/eslint-config#129