Skip to content

Commit da0831c

Browse files
derpy-duckhendrikhofstadta5-pickleaadam-10bruce-riley
committed
Generic relayer merge rebased (#2835)
* node/accountant: defense-in-depth ensure accountant does not create messages outside its domain * node: fix near watcher tests Change-Id: I76f0863da66b14291fbaaa671b1440197dca7bcd * Update CODEOWNERS Closes #2419. * Update issue templates and add template list config (#2426) closes #2425 * Deploy base to testnet (#2422) * Deploy base to testnet * Shouldn't add testnet evmChainId to impl * Add base to rpc dump command * Oops, wrong branch! * sdk/js: bumped version to v0.9.11 * Node: Base watcher support for testnet (#2424) * Node: Base watcher support for testnet * Add a comment * Add base to rpc dump command * node/p2p: Protect P2P peers (#2344) Co-authored-by: marcus-jump, tbjump * node: Bedrock changes * Client/js: Add Base testnet support (#2423) * Client/js: Add Base testnet support * Client/js: Update sdk version * node: calculate digests using Vaa type or using message prefix * accountant: remove double keccak for submitting observations * accountant: review comments * node/tools: update dlv to v1.9.1 Change-Id: I420e905343118083b72fcffd40d461dca733ce83 * update codeowners * node: add request logging with --publicRpcLogDetail and --logPublicRpcToTelemetry (#2390) Release Notes New guardiand cli options: --publicRpcLogDetail [string] none -- no logging of gRPC requests at all minimal -- only log gRPC methods full (default) -- additionally log user-agent and gRPC request payload --logPublicRpcToTelemetry [bool] false do not send publicrpc logs to Google Cloud Logging true (default) -- (current behavior) Co-authored-by: tbjump <> * Node: Rename Arbitrum connector (#2432) * Node: Rename Arbitrum connector Change-Id: I3cb2212f923f260ae92f6bd97b747f9839495744 * Rename the class Change-Id: I9f8dd5efd3d5e058c1ed70750215144908dbafef * node: remove unused legacy code (#2441) * node: remove discord notifier Change-Id: If309974f73be35bddb3004e62ff9a0e1d06efab8 * node: remove legacy devnet features Change-Id: I6f9dac21cb44846f638996c3aa5eb8376794cd78 * Node: Circle Integration governance support (#2444) * Node: Circle Integration governance support * Fix spacing * Code review rework * Client/js: Update karura/acala testnet endpoints (#2469) * Eth: Update testnet karura/acala in truffle cfg (#2473) Change-Id: I2be913a62fcd405b4b30aa0c61da50e926592741 * node: remove unnecessary lcd dependency for acct * node: acct increase submission channel size * node: fix aptos reobservation * relayer: update docs on running a spy Having two bootstrap nodes allows an outage of the certus one guardian to not cause too much hassle with existing spy instances or new guardians restarting. Thanks @fchantada and the xLabs team for adding the dns and helping set this up. * github-actions: update go version in build.yml https://groups.google.com/g/golang-announce/c/3-TpUx48iQY * github-actions: remove unused relayer image build * node/telemetry: fix nullpointer, _privateLogEntry, tests (#2482) 1. Fix a nullpointer dereference bug caused by not cloning everything in (enc *guardianTelemetryEncoder) Clone() 2. Fix a bug that caused logs marked with _privateLogEntry to still be sent to telemetry because when a child logger is created (logger.With(zap.Bool("_privateLogEntry", true))) the extra fields will go into the encoder's buffer and will not be passed to EncodeEntry(entry zapcore.Entry, fields []zapcore.Field). This bug had no production impact because the telemetry logger was broken (see (1)) 3. make the telemetry module testable and add unit tests Co-authored-by: tbjump <> * Update CODEOWNERS * Node/Acct: Handle large batch status queries (#2491) * Node:Acct: Handle large batch status queries Change-Id: I29a8f3d88644eae1f20632318d5a497ac08720f5 * Comment change Change-Id: I1bf3fd020e2e816edb1a81de4fcb5428f7733484 * node/telemetry: Fix message encoding for Google Cloud Logging * cosmwasm: acct: fix emitter requirements * Node/Watcher/EVM: Fix TimeOfBlockByHash (#2517) * Node/Watcher/EVM: Fix TimeOfBlockByHash * Tweak log messages * Remove obsolete source file * Node/acct minor fixes (#2502) * Node/Acct: logonly should not block anything Change-Id: Ie398596fcaf296a37a9f9a447f70a12d16c5dbe9 * Node/Acct: Increase audit interval Change-Id: I90b59cb6a353d98a7eb210a6802946d082e0eda6 * Node/Watcher: Log txHash when reobs fails Change-Id: I1b0b5d9ca53097d8f766264fb225f7592bd76f5b * Remove unnecessary log message Change-Id: I838f5e19d705cb086856199e1316b6e9592ced41 * Remove reference to devnet from log msg Change-Id: Iffaf850751d742b253a03611b4f75f5af183c10e * Tweak log msg Change-Id: I98e48eed99058903a0b26c6db67bb0a06bad365b * Node: Support VAAs with large payloads (#2518) * Node: Support VAAs with large payloads Change-Id: Ie09bdc8ea0813ee90f9b686f3fe95365baa4014f * Clean up tests Change-Id: I983a40a2e7763271c8212ac18455b8b45e48fd3e * wormchain: make recipe easier to use for making release build * wormchain: dont remove v in tag name for release * accountant: separate modify_balance into separate module and check test errors * wormchain: update accountant tests * node: use new action and module for accountant modify_balance * accountant: address comments from #2513 * accountant: export governance modules from sdk to double check in contract * Node: Circle Integration governance fixes (#2507) * vaa/governance: Document other ActionIds * node: fix deserialization issue for modify_message * sdk: remove outdated comment on vaa payload size limit (#2546) * wormchain: require go version at least 1.19 * Node: Generate readiness labels programmatically (#2540) * Node: Generate readiness labels programmatically Change-Id: Ica03a7cc314b92a0521afad053ffa20f03ff6529 * Move obsolete labels into test code Change-Id: I682ec4ca2ea36be1f53b3f6d39f2da4191e2805f * Code review rework Change-Id: Idc8f17265a0b6ef357ac98707d20cc2486001520 * Redesign based on feedback * Near tests failing * Fix panic in solana * spydk: add done() * SDK/Node: Sepolia deployment (#2567) * sdk/js: bumped version to v0.9.12 * node/pkg/watchers: add doc * Node/Acct: Logging changes (#2574) * Node/Acct: Logging changes * Missed some! * Switch to using logger.With() * Still missed some. * Missed one more * Yet again * Missed a few * Don't need .With in AcctGetData * node/pkg/watchers: add RunWithScissors * Update tracking issue closes #2538 * whitepapers: First version of integrity checkers and global accountant (#2406) * whitepapers: First version of integrity checkers and global accountant * whitepapers: revise accountant whitepaper * whitepapers: updates for accountant papers * Wormhole is connected to both L1 and L2 networks, so L1 was replaced with blockchain or network where appropriate. * Change integrity checker "advantages" to "disadvantages" as that is what is trying to be explained * Explain that a pre-observation is just a concept a bit more as the actual global-accountant contract function name is `send_observations()` not `submit_preobservations()` * Removed a lot of passive voice and tries to shorten run-on sentences * Removed the integrity checkers Todo and Caveats as they are empty * Moved the Integrity Checkers `Detailed Design` section to just a terminology section, which is more appropriate for what it was. * whitepapers: accountant clarifications Addressing review feedback from: @conorpp and @hendrikhofstadt This updates the Submitting Observations to Wormchain section to use `transfer` in place of a mix of transfer and observation. This makes the text easier to understand. Additionally, it moves the `Pending` status line up one bullet point to make it more obvious. * whitepapers: accountant further clarification Last review comment from @conorpp * whitepapers: update accountant nits * whitepapers: addreses review feedback Thanks @bruce-riley --------- Co-authored-by: tbjump <unknown> Co-authored-by: Conor Patrick <conorpp94@gmail.com> Co-authored-by: Jeff Schroeder <jeffschroeder@computer.org> * Node/Gov: Fix panic in public RPC (#2601) * Node/Gov: Fix panic in public RPC * governor: mitigate nil ptr deref --------- Co-authored-by: Jeff Schroeder <jeffschroeder@computer.org> * wormchain: updates to add ibc (#2589) * aptos: pin framework deps to `mainnet_20221115` * whitepapers: add ibc generic messaging whitepaper (#2588) * whitepapers: add ibc generic messaging whitepaper * Address review comments from SEJeff * Added .md file extension * Address review comments from evan-gray * Update whitepaper number to 12 * node: enforce msg.EmitterAddress != 0 * node: revert "node/pkg/watchers: add RunWithScissors" (#2620) This reverts commit 9b8bed4. * clients/js: add worm info namespace (#2603) This PR adds a new namespace worm info, which includes commands showing static data of chain-id, contract addresses and rpc endpoints. * terra: change nft-bridge name to nft-bridge-terra (#2607) * terra: change nft-bridge name to nft-bridge-terra for compatibility with solana nft-bridge package * change nft_bridge.wasm to nft_bridge_terra.wasm in deploy script * cosmwasm: clean up unused dependencies (#2629) * Node/Gov: Split up CoinGecko queries (#2573) * Node/Gov: Split up CoinGecko queries * Fix typos * Minor logging change * Add tests * cosmwasm: bump k256 dependency to 0.11 (#2630) * cosmwasm: add test for keys_equal * cosmwasm: bump k256 from 0.9.4 to 0.11 * Update bad_signature tests to use new error messages * Node: ibc watcher (#2566) * Node: IBC watcher * Rework event parsing, add tests * Config changes * Config changes * Start converting to tendermint * More functionality * Minor test changes * Formatting changes * Code review rework * Rework event parsing * More rework * More rework * Tweak some log levels * More rework * More rework * Don't enable Terra2 over IBC * Fix issue with error reporting * More review rework * Switch from connection IDs to channel IDs * Remove unused errC from go routines * Node/Governor: Regenerate token list and floor prices (#2465) * node_update_governor_tokens_and_prices Change-Id: If4e3b31c97ad85fd59ca8743458a2eef137a946a * Node/Gov: Update token list Change-Id: I2379d43afa7777488ae3f37e6d4227b4c966deab * Add test for empty symbol back in Change-Id: I6d5f1f55c1b7865144e7accc395e484b47381ef0 * sdk/js: bump injective sdk * node: add sui watcher for devnet and testnet only * node: sei testnet support (#2660) * Sei testnet support * Set contract addresses * node/pkg/watchers: add RunWithScissors * SDK tweaks * node: revert "node/pkg/watchers: add RunWithScissors" (#2620) This reverts commit 9b8bed4. * Make Sei use IBC watcher --------- Co-authored-by: Paul Noel <panoel007@gmail.com> Co-authored-by: Paul Noel <35237584+panoel@users.noreply.github.com> * Node: RunWithScissors should not hang on error if no listener (#2649) * Node: RunwithScissors should not hang * Tests should check error text * Fix data race in tests * Add comments to explain the tests. * Cosmwasm package naming updates (#2641) * sdk: update wormhole-core to wormhole-sdk and fix lib name to be wormhole_sdk * cosmwasm: update wormhole and token bridge cosmwasm package/lib names * Fix terra2 deployment script with new artifact names * SECURITY.md: Update audit list * Node/Gov: Use component logging (#2667) * sdk/js: version bump * cosmwasm: token bridge: add new CompleteTransferResponse struct as data to complete_transfer executions (#2653) * Client/js: Sepolia and Sei support (#2738) * Client/js: Sepolia and Sei support * Change references to terra to sei * Node: Block height is always zero on Terra2 (#2762) * Node: Block height is always zero on Terra2 Change-Id: Ie504139fa3cd9fcce78dd53ca9a0cfc797f3bf30 * Remove test logging Change-Id: I273267171f7201818395f17d87592ae75f0ce5c8 * Node: Don't lock memory in testnet (#2780) * Node: Don't lock memory in testnet Change-Id: Id32ce1af82f50a947e80949a54232e11ee7c48ea * Don't lock in ram for devnet either Change-Id: I4e3817e726b535661727d05a0c5f65cd613c4900 * update CODEOWNERS * node/pkg/watcher: watcher audit change * Node: Add logging around DB writes (#2820) Change-Id: I1c0da08a39ee1ebbd4d62ccb74d550ec8fb06e0c * Node: Add Sui mainnet support (#2826) Change-Id: I6ea3e345c2e907f738fc82298d5497ce858f55fd * sui: redesign Wormhole and Token Bridge contracts * sdk/js: add Sui support Co-authored-by: Evan Gray <battledingo@gmail.com> Co-authored-by: Kevin Peters <kpeters@jumptrading.com> * sdk/js: sui get latest package from CurrentPackage * sui: update devnet addresses * ci: decrease build timeout to 20min * adding relayer directory to ethereum * setting up docker build pipeline * eth pod fixes * generic relayer contracts deploy * moving relayer contracts * Moved new code * add sdk * Move ts-script and ts-test to 'relayer' folder within their folders * forge tests pass! * Typescript files compile * delete ethers contracts * ignore ethers contracts * fixed up the deployment scripts, relay contracts deploy again * Copied contracts from trustless-generic-relayer commit 76adaedbb52fb125d00b774fc7aac9120f5b4c92 * removed mockintegration tilt deployment * copying over forge tests from trustless-generic-relayer * fixed import errors * redis tilt container runnable independent of spy_relayer * fixing more ts scripts * applied relayer scripts to evm1 and evm2 * moving relayer-engine-v2 from trustless-generic-relayer repo * relayer engine sdk temporarily imports out of ethereum folder * more deployment fixes & testing * parser and other relayer engine fixes * working end-to-end test in tilt * readd sourceProvider to DeliveryInstructionsContainer * relayer engine parses payloads with sourceProvider * truffle config fix * Mock integration script adjustments * fixed truffle build pipeline * ts import fixes & formatter * Changes to get integration tests running in tilt * dockerized relayer engine, everything runs in tilt * Tilt ignore ts-test and node_modules * Typescript SDK builds and is successfully part of typescript tests * rework generic relayer re app config * re config improvements * added consistency level to IWormholeRelayer interface * Updates prices in `RelayProvider` in batch. * Batch config functions in `RelayProvider`. * Remove `payable` from core relayer address in RelayProvider. * Make a couple of administrative functions external. * Uses batch update to configure `RelayProvider` contract. * Removes obsolete line in `RelayProviderStructs`. * Makes deployment messages slightly more friendly. * Minor cleanup. * Removes redundant default relay provider configuration. * Simplification in relay provider deploy script. * Removes redundant type in `RelayProvider` deployment script. * Fixes missing update to supported chains. * Fixes relayer contracts deployment in containers. * Reuses code in `getSigner` TS helper. * Adjusts ignores in docker image builds. * Renames category in foundry config to silence warning. * Mark utility shell scripts as executable. * added delivery address helper to interface * add docker build automation * try to name dockerfile path in ci * Generic relayer merge contract simplifications and more tests (#2627) * Improve DeliveryData test * Relay provider modify set target chain order * Fix todo comment in build script in package json * Remove safe call of isChainSupported * Revert "Remove safe call of isChainSupported" This reverts commit 99946d0. * Remove forgecoverageoutput * Fix compile error * Use the overload with no messages and just a payload * Fixed cross chain refunds and cross chain refund test * CoreRelayerMessages fixes * Remove coverage output * MessageInfo takes chainId as a parameter now * less warnings * Fix error in processor * Replace MessageInfo with VaaKey * remove target in docker workflow * Uses `foundry-rs/foundry-toolchain@v1` github action to install foundry. Fixes `ethereum-upgrade` CI job. * fix redis config * integration testing * support wallet monitor integrated with relayer-engine (#2639) * deployment fixes * minor testnet deployment to fuji and celo * save * fix dockerfile?? * dockerfile forge instll try 3 * dockerfile forge instll try 4 * dockerfile forge instll try 5 * small re config changes * update parsing * Generic relayer remove multidelivery multiforwards (#2648) * Contract changes to remove multiforward and multisend * Fix all typescript errors?! * Forge test for multiple forwrads * Fix multiforward test * Fix tilt ci (#2664) * Remove console log in contract * Scope NPM packages * Fix multiforward forge test * fixing sdk build errors * sdk ci image builds again * added relayer tests into sdk CI * added generic_relayer & redis to ci * Fix glob * install forge deps in ci sdk test container * Fix `ctx.fetchVaas` (#2668) * use commit with RE fix * re-add standard opts * format * cleanup imports and comments --------- Co-authored-by: chase-45 <chasemoran45@gmail.com> Co-authored-by: Joe Howarth <jhowarth@jumptrading.com> * GR: update codeowners * redelivery implementation (#2663) * redelivery implementation * revert test on deliverWithOverrides * remove onchain maxRefund check --------- Co-authored-by: Joe Howarth <jhowarth@jumptrading.com> * Update docker push workflow (#2740) * update docker push workflow * use make... * fixed a typechain variable naming collision (#2742) * Refund Tests + Bugfix (#2735) * WIP * WIP * Test about funds for a send * Fix forward bug in payment of relayer + Add funds correct test for forward * Remove makefile change * Attempt to fix problem that gaslimit wasn't updated * Rewrite CoreRelayer to fix bug * Remove unnecessary struct * Refund tests for send and forward failure (#2750) * Refund test for send failure * Test funds correct for a forward failure * relayer: Fix multiforward integration test + Patch MockRelayerImplementation deployment bug + Improve Forge Governance Upgrade Test (#2656) * Fix multiforward integration test by patching mockrelayerintegration bug * Fixed multiforward test, improved upgrade forge test * Fix multiforward forge test * Scope NPM packages * relayer: (forge test) Fix gas amount in testFundsCorrectForASend * relayer: fix several ci issues (#2745) * Installs forge dependencies in `eth-node` image. * changes sdk.sh to use bash * removing relayer tests from SDK image * relayer: deployment script can self-sign with multiple signers * relayer: update dockerignore --------- Co-authored-by: chase-45 <chasemoran45@gmail.com> Co-authored-by: Evan Gray <battledingo@gmail.com> Co-authored-by: Joe Howarth <jhowarth@jumptrading.com> * Relayer/upgradeable forward wrapper issue #2758 (pr #2767) * grelayer: start #2758, create2 factory, merge lib & forward wrapper, forward wrapper stored as immutable var * debug governance * fw inherits from lib * forge tests work * cleanup * fix typechain imports * fix salt * calldata packing :( * relayer: things work * relayer: moving code into corerelayerlibrary * relayer: other file changes for code moving * remove debugging statement * fixing tilt deployment scripts * relayer: relayer-engine does not start in ci * passthrough number of guardians * relayer: fix self signing script for multiple signers * relayer fix ordering of guardian key load --------- Co-authored-by: chase-45 <chasemoran45@gmail.com> Co-authored-by: chase-45 <88348425+chase-45@users.noreply.github.com> * gRelayer: Redelivery test & comment fixes (#2756) * redelivery test & comment fixes * Rewrite resend * gRelayer: (forge-test) Fix test to use new name for redelivery instruction fields --------- Co-authored-by: derpy-duck <115193320+derpy-duck@users.noreply.github.com> Co-authored-by: Joe Howarth <jhowarth@jumptrading.com> * Relayer: relayer/sdk and integration improvements (#2777) * grelayer: start #2758, create2 factory, merge lib & forward wrapper, forward wrapper stored as immutable var * debug governance * fw inherits from lib * forge tests work * cleanup * fix typechain imports * fix salt * calldata packing :( * relayer: things work * relayer: moving code into corerelayerlibrary * relayer: other file changes for code moving * remove debugging statement * fixing tilt deployment scripts * relayer: relayer-engine does not start in ci * passthrough number of guardians * relayer: fix self signing script for multiple signers * relayer fix ordering of guardian key load * relayer: deployment script & relayer engine cleanup --------- Co-authored-by: Joe Howarth <jhowarth@jumptrading.com> * gRelayer: (forge-test) test VaaHash version of VaaKey (#2763) * gRelayer: (forge-test) test VaaHash version of VaaKey * gRelayer: (forge-tests) Sender is mockrelayerintegration * gRelayer: (forge-test) Funds test for delivery failure due to revert (#2759) * Additional funds test for delivery failure * Remove console log * gRelayer: (forge-test) Consistency level test (#2761) * relayer: (forge-test) Consistency level test * Add comment for clarity * gRelayer: stable testnet deploy 4-24 (#2779) * log estimated tx cost; fix upgrade script * full chain list * deployment done * gRelayer: (forge-test) Test funds correct for cross chain refunds, su… (#2782) * gRelayer: (forge-test) Test funds correct for cross chain refunds, succeed and revert * Some comments * gRelayer: remove whitespace * gRelayer: (forge-test) No funds lost in a forward failure or a forward success (#2757) * WIP * WIP * Test about funds for a send * Fix forward bug in payment of relayer + Add funds correct test for forward * Remove makefile change * Attempt to fix problem that gaslimit wasn't updated * Rewrite CoreRelayer to fix bug * Remove unnecessary struct * Refund tests for send and forward failure (#2750) * Refund test for send failure * Test funds correct for a forward failure * No funds lost in a forward failure * Fix merge conflict * remove cosnole logs * gRelayer: redelivery tests (#2784) * gRelayer-forge-test-seperate-redelivery-override-errors-and-test-them * gRelayer: (forge-test) upgrade forge mock generic relayer to allow redeliveries, perform redelivery tests * gRelayer: (forge-test) funds correct test for redelivery * gRelayer: Make IWormholeRelayer.sol accurate (#2789) * Relayer: redelivery SDK, engine, and integration test additions (#2791) * relayer: deterministic deployment fixes * relayer: fixing some nondeterministic integration test failures * relayer: sdk, relayer engine, and integration test additons for redelivery * Update processor.ts * relayer: fixed tilt contract address --------- Co-authored-by: chase-45 <chasemoran45@gmail.com> Co-authored-by: chase-45 <88348425+chase-45@users.noreply.github.com> * gRelayer: Send, getPrice, and getPriceMultipleHops functions in SDK (#2794) * relayer: deterministic deployment fixes * relayer: fixing some nondeterministic integration test failures * Send function for SDK * gRelayer: Send, getPrice, and getPriceMultipleHops work; tested in testnet! * gRelayer: don't change config file * Fix SDK address devnet --------- Co-authored-by: chase-45 <chasemoran45@gmail.com> * relayer: forge fmt (#2798) * relayer: forge fmt * format interfaces and tests too * gRelayer: sdk status improvements (#2802) * gRelayer-SDK-stringify-improvements * gRelayer: (Contract change) modify the Delivery event * gRelayer: (SDK) get new event info * gRelayer (SDK) fixed typescript bug * gRelayer: fix sdk bug in parsing override * remove accidental file * Relayer/resend improvements (#2818) * adding target chain to redelivery instructions * relayer engine filters out redeliveries w/ invalid target chains * redelivery safe function & tilt contract addresses * remove log statement * fixing tilt contract addresses * relayer: comment pass (#2815) * gRelayer: make relayprovider calls safe (#2822) * gRelayer-make-relay-provider-calls-safe * gRelayer-remove-unnecessary-code * gRelayer: attempt 1 at getting under contract size * gRelayer: uer contract size limit * forge fmt * gRelayer: Address nits in PR * removed output files --------- Co-authored-by: tbjump <unknown> Co-authored-by: Hendrik Hofstadt <hendrik@nexantic.com> Co-authored-by: A5 Pickle <5342825+a5-pickle@users.noreply.github.com> Co-authored-by: Adam A <20446095+aadam-10@users.noreply.github.com> Co-authored-by: bruce-riley <96066700+bruce-riley@users.noreply.github.com> Co-authored-by: Kevin Peters <kpeters@jumptrading.com> Co-authored-by: marcus-jump <117692400+marcus-jump@users.noreply.github.com> Co-authored-by: Paul Noel <panoel007@gmail.com> Co-authored-by: Conor Patrick <conorpp94@gmail.com> Co-authored-by: Evan Gray <battledingo@gmail.com> Co-authored-by: tbjump <103955289+tbjump@users.noreply.github.com> Co-authored-by: Hendrik Hofstadt <1405758+hendrikhofstadt@users.noreply.github.com> Co-authored-by: Jeff Schroeder <jeffschroeder@computer.org> Co-authored-by: Evan Gray <56235822+evan-gray@users.noreply.github.com> Co-authored-by: Nikhil Suri <nikhilsuri@comcast.net> Co-authored-by: pongvin <anderle00@gmail.com> Co-authored-by: Csongor Kiss <ckiss@jumptrading.com> Co-authored-by: Paul Noel <35237584+panoel@users.noreply.github.com> Co-authored-by: Alber <arblugo@gmail.com> Co-authored-by: A5 Pickle <a5-pickle@users.noreply.github.com> Co-authored-by: heyitaki <akshath@live.com> Co-authored-by: chase-45 <chasemoran45@gmail.com> Co-authored-by: Joe Howarth <jhowarth@jumptrading.com> Co-authored-by: scnale <sebinale@gmail.com> Co-authored-by: Solano <solanoepalacio@gmail.com> Co-authored-by: chase-45 <88348425+chase-45@users.noreply.github.com>
1 parent ec96ef7 commit da0831c

31 files changed

+2870
-1
lines changed

clients/js/cmds/Yargs.ts

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import yargs from "yargs";
2+
3+
export class Yargs {
4+
yargs: typeof yargs;
5+
6+
constructor(y: typeof yargs) {
7+
this.yargs = y;
8+
}
9+
10+
addCommands = (addCommandsFn: YargsAddCommandsFn) => {
11+
this.yargs = addCommandsFn(this.yargs);
12+
return this;
13+
};
14+
15+
y = () => this.yargs;
16+
}
17+
18+
export type YargsAddCommandsFn = (y: typeof yargs) => typeof yargs;

0 commit comments

Comments
 (0)