## Why is this change needed?
Following the instructions to setup a repository resulted in errors.
This change:
- Adds CMake to setup instructions
- Requires Rust 1.77.0 locally since 1.78.0+ cause build errors
- Requires Rust 1.77.0 in CI for parity
- Requires Node 20+ locally for parity with CI
- Updates some README text for clarity
## Merge Checklist
_Choose all relevant options below by adding an `x` now or at any time
before submitting for review_
- [x] PR title adheres to the [conventional
commits](https://www.conventionalcommits.org/en/v1.0.0/) standard
- [ ] PR has a
[changeset](https://github.com/farcasterxyz/hub-monorepo/blob/main/CONTRIBUTING.md#35-adding-changesets)
- [x] PR has been tagged with a change label(s) (i.e. documentation,
feature, bugfix, or chore)
- [ ] PR includes
[documentation](https://github.com/farcasterxyz/hub-monorepo/blob/main/CONTRIBUTING.md#32-writing-docs)
if necessary.
<!-- start pr-codex -->
---
## PR-Codex overview
The focus of this PR is to update Node.js, Rust toolchains, and CI
configurations, ensuring consistency across environments. Additionally,
it enhances documentation clarity and fixes environment issues.
### Detailed summary
- Updated Node.js to version 20.11
- Updated Rust toolchain to version 1.77.0 for consistency
- Aligned CI configurations with local and Docker image setups
- Improved README.md for better understanding
- Fixed environment issue with running `yarn test` in shuttle
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your
question}`
<!-- end pr-codex -->
## Why is this change needed?
Upgrade husky dev dependency to v9
## Merge Checklist
- [x] PR title adheres to the [conventional
commits](https://www.conventionalcommits.org/en/v1.0.0/) standard
- [ ] PR has a
[changeset](https://github.com/farcasterxyz/hub-monorepo/blob/main/CONTRIBUTING.md#35-adding-changesets)
- [x] PR has been tagged with a change label(s) (i.e. documentation,
feature, bugfix, or chore)
- [ ] PR includes
[documentation](https://github.com/farcasterxyz/hub-monorepo/blob/main/CONTRIBUTING.md#32-writing-docs)
if necessary.
<!-- start pr-codex -->
---
## PR-Codex overview
This PR updates `husky` and `iconv-lite` dependencies, changes `husky`
version to `9.0.0`, and simplifies the `prepare` script.
### Detailed summary
- Updated `husky` dependency to version `9.0.11`
- Updated `iconv-lite` dependency to version `0.4.24`
- Simplified `prepare` script in `package.json` to just `"husky"`
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your
question}`
<!-- end pr-codex -->
## Motivation
We accidentally lost the code that was fixing up bad protoc js file
generation for hub-web. Bring it back and fix compilation.
## Change Summary
Describe the changes being made in 1-2 concise sentences.
## Merge Checklist
_Choose all relevant options below by adding an `x` now or at any time
before submitting for review_
- [x] PR title adheres to the [conventional
commits](https://www.conventionalcommits.org/en/v1.0.0/) standard
- [x] PR has a
[changeset](https://github.com/farcasterxyz/hub-monorepo/blob/main/CONTRIBUTING.md#35-adding-changesets)
- [x] PR has been tagged with a change label(s) (i.e. documentation,
feature, bugfix, or chore)
- [ ] PR includes
[documentation](https://github.com/farcasterxyz/hub-monorepo/blob/main/CONTRIBUTING.md#32-writing-docs)
if necessary.
- [x] All [commits have been
signed](https://github.com/farcasterxyz/hub-monorepo/blob/main/CONTRIBUTING.md#22-signing-commits)
## Additional Context
If this is a relatively large or complex change, provide more details
here that will help reviewers
<!-- start pr-codex -->
---
## PR-Codex overview
This PR updates the `hub-web` package to fix the `grpcWeb` import and
replaces `grpc` with `grpcWeb` in the codebase.
### Detailed summary
- Updated `hub-web` package to fix `grpcWeb` import
- Replaced `grpc` with `grpcWeb` in the codebase for consistency
> The following files were skipped due to too many changes:
`packages/hub-web/src/generated/rpc.ts`
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your
question}`
<!-- end pr-codex -->
## Motivation
Gossip MessageBundles instead of individual messages
## Change Summary
- The feature is in, but it is not turned on yet. It can be % rolled out
via network config
## Merge Checklist
_Choose all relevant options below by adding an `x` now or at any time
before submitting for review_
- [X] PR title adheres to the [conventional
commits](https://www.conventionalcommits.org/en/v1.0.0/) standard
- [X] PR has a
[changeset](https://github.com/farcasterxyz/hub-monorepo/blob/main/CONTRIBUTING.md#35-adding-changesets)
- [X] PR has been tagged with a change label(s) (i.e. documentation,
feature, bugfix, or chore)
- [ ] PR includes
[documentation](https://github.com/farcasterxyz/hub-monorepo/blob/main/CONTRIBUTING.md#32-writing-docs)
if necessary.
- [X] All [commits have been
signed](https://github.com/farcasterxyz/hub-monorepo/blob/main/CONTRIBUTING.md#22-signing-commits)
<!-- start pr-codex -->
---
## PR-Codex overview
This PR introduces gossip MessageBundles, adds `mergeMany` method,
refactors message handling, and updates network configuration handling.
### Detailed summary
- Added gossip `MessageBundle` in `gossip.proto`
- Implemented `mergeMany` method in Rust functions
- Refactored message handling in various files
- Updated network configuration handling
> The following files were skipped due to too many changes:
`apps/hubble/src/network/p2p/bundleCreator.ts`,
`apps/hubble/src/storage/stores/rustStoreBase.ts`,
`apps/hubble/src/addon/src/store/store.rs`,
`apps/hubble/src/network/p2p/gossipNode.ts`,
`apps/hubble/src/storage/stores/castStore.test.ts`,
`apps/hubble/src/storage/engine/index.test.ts`,
`apps/hubble/src/test/e2e/hubbleNetwork.test.ts`,
`apps/hubble/src/network/p2p/bundleCreator.test.ts`,
`packages/hub-web/src/generated/gossip.ts`,
`packages/hub-nodejs/src/generated/gossip.ts`,
`packages/core/src/protobufs/generated/gossip.ts`,
`apps/hubble/src/storage/stores/castStoreBundle.test.ts`,
`apps/hubble/src/test/e2e/gossipNetworkBundle.test.ts`,
`apps/hubble/src/storage/engine/index.ts`,
`apps/hubble/src/network/p2p/gossipNodeWorker.ts`,
`apps/hubble/src/network/utils/networkConfig.test.ts`,
`apps/hubble/src/hubble.ts`
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your
question}`
<!-- end pr-codex -->
## Motivation
Ensure consistent formatting of rust files.
## Change Summary
Run `yarn lint:rust` to format all the rust files
## Merge Checklist
_Choose all relevant options below by adding an `x` now or at any time
before submitting for review_
- [X] PR title adheres to the [conventional
commits](https://www.conventionalcommits.org/en/v1.0.0/) standard
- [X] PR has a
[changeset](https://github.com/farcasterxyz/hub-monorepo/blob/main/CONTRIBUTING.md#35-adding-changesets)
- [X] PR has been tagged with a change label(s) (i.e. documentation,
feature, bugfix, or chore)
- [X] PR includes
[documentation](https://github.com/farcasterxyz/hub-monorepo/blob/main/CONTRIBUTING.md#32-writing-docs)
if necessary.
- [X] All [commits have been
signed](https://github.com/farcasterxyz/hub-monorepo/blob/main/CONTRIBUTING.md#22-signing-commits)
<!-- start pr-codex -->
---
## PR-Codex overview
This PR adds a Rust code formatter check before Git commit, updates
linting scripts, and refactors code in the `LinkStore` module.
### Detailed summary
- Added Rustfmt check before Git commit
- Updated linting scripts in `package.json`
- Refactored code in the `LinkStore` module
> The following files were skipped due to too many changes:
`apps/hubble/src/addon/src/store/link_store.rs`
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your
question}`
<!-- end pr-codex -->
Currently, if you call `getInfo` the version falls back to `1.0.0`,
which is confusing since users want to know which version of the hub
they are communicating with.
The reason this happens is because the `npm_package_version` environment
variable trick only works if you run via `npm`/`yarn`. Since we don't
want those as PID 1 (it interferes with signal processing) we build and
run directly with the `node` executable.
To get this to work, we create a symlink to `package.json` in the `src`
directory so that we can still reference the version specified in that
file.
This required some adjustments to have TypeScript not error (including
upgrading Jest), but should now work.
* fix: relative path on hubble docs not resolving to contributing.md
* add: initial table structure of the docs
* remove: link on first column
* add: docs/Ed25519Signer.md
* fix: wrong links in Ed25519Signer.md
* fix: wrong link again
* add: constructor to ed25519signer.md
* add docs/Eip712Signer.md
* update: replace ambiguous description with TODO
* update: code example on readme
* add: a comment about neverthrow
* add: js docs to interact with hub
* update: wrong import on docs
* remove: make Data and Amp functions
* update: clarify the eddsa private key part
* update: move signer docs to readme
* update: readme table
* fix: wrong path
* add: docs for eip signer but in js
* remove: ambiguous descriptions
* add: doc generation with TypeDoc
* add: docs for ed25519 signer
* update: build first before running docs
* update: only use packages/js for typedoc entrypoint
* remove: function name in tsdoc comments
* update: move examples up for clarity
* add: typedoc.json
* add: description for properties of signers
* update: link to classes in readme
* update: move make message explanation above
* remove: ambiguous description in readme
* add: a line in contributing.md about generating docs for packages/*
* remove: old docs
* update: recompiled docs and add plugin on typedoc.json
* add: description to sign verification
Co-authored-by: Anthony D'Addeo <tony@tavour.com>
* update: use yarn instead of npm
Co-authored-by: Anthony D'Addeo <tony@tavour.com>
* update: disable typedoc source
* update: contributing.md packages/* to packages/js
* update: TODO to TODO DOCS
* fix: eip712 signer not rendering properly
* add: docs to message builders
* add: docs to client
---------
Co-authored-by: Anthony D'Addeo <tony@tavour.com>
Our previous attempts to fix the build in 50cfacd5 and 1c932091 didn't
work because we had a locally cached layer which lead to an older
version of Turbo being used, which didn't suffer from this bug.
The workaround (for now) is to pin to 1.7.0 explicitly when installing
`turbo` in the Docker build step (which previously wasn't using the
version listed in `package.json`).
We need this update to fix an issue with our builds that occurs on
GitHub Actions only (cannot repro locally).
Based on [this
issue](https://github.com/vercel/turbo/issues/3570#issuecomment-1413350084),
this should be fixed in 1.7.3, but since that release is not available,
we'll use the canary for now.
* feat: configure turborepo to run tasks
* refactor: set up app/ workspace
* fix: move tsconfig up and inherit
* fix: update turborepo
* refactor: extract flatbuffers to package
* fix: ci by using symlink instead of yalc
* refactor: extract eslint config
* ci: add manypkg to catch package issues
* security: remove manypkg due to yarn audit fail
* fix: misc changes
* refactor: move config into hub
* fix: export as module
* remove: manypkg postinstall
* feat: add RevokeSignerJob class and queue signer revocation from hub
* remove commented out line in test
* split job queue and scheduler into separate classes
* revert ethEventsProvider little endian change
* cleanup revokeSignerJob test
* ignore generated flatbuffer files with jest
* upgrade: typescript to 4.9
* upgrade: minor versions for tsx, prettier, jest, lint-staged, eslint, pino
* upgrade: minor versions for flatbuffers, undici
* upgrade: patch versions for husky, node and jest types
* upgrade: major version of neverthrow
* upgrade: grpc minor version
* feat: initial grpc commit
* refactor RPC cast service into own file
* add failure test to rpc castservice
* remove out-of-date test suite
* resolve merge conflicts
* refactor rpc, engine, validation to results and hubErrors
* fix: lint warnings
* fix server.ts for new hub error codes
* use HubError now that stores throw them
* improve engine test coverage
* feat: trie snapshots
* feat: implement differential sync for messages
* Handle reaction race condition and syncing id registry events
* cleanup and add more tests
* fix: add more tests around syncing and fix uncovered bugs
* Address review comments. Minor cleanup.
* move TrieNode to own file and additional cleanup/review comments