-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: add tnc to token #89
Merged
Merged
Conversation
This file contains 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
tomt1664
approved these changes
Sep 9, 2024
tomt1664
added a commit
that referenced
this pull request
Sep 12, 2024
* Changing React application structure to handle concurrency * Changing React application structure to handle concurrency * Changing React application structure to handle concurrency * add token server * fixes * Remove thunks * Improve backup transactions database and view * Improve GUI * Fix some warnings * Fix some warnings * Improve update function * Improve GUI * Remove DB transaction to avoid race condition * config * config * add token server * Update tokens.md * Update Token struct * Add WASM packages * Improve UI * Change react-app config file * chore: add changes to get locofy-ui working * chore: add key to wizard * chore: add deposit process ui * chore: add token ui logic * chore: huge locofy ai changes, remove old code as wasn't scalable, learned new locofy formats * chore: fix up icons * chore: hook token info card and deposit page * chore: update token card UI * chore: add more validation to deposit process, and modal windows * chore: update deposit pages * add expiry time * fix * fix * chore: finish the tab ui logic * chore: add changes to deposit, hook up live methods to the deposit process, add loading spinners and validation * add key check * fix serialisation * chore: add token insertion into wallet object, various other changes, wasm error in deposit 2 * chore: fix wallet load code * chore: add back in validation for wizard page 2, cleanup the main header panel ui * chore: refactor, add a logged in wallet hook, add validation to wallet page 1 * chore: show seed key in wizard states * chore: fix error if coins / activities is null * Modify Token struct * chore: fix error message ordering in wizard page * chore: move order of destructure variable in main page * chore: fix coin item, display some info to user about their statecoin * chore: add changes to main header panel, add up btc values * chore: fix deposit addresses * chore: change to testnet server, add withdraw ui components * chore: fix more withdrawal logic, fix bug in deposit 3 page * chore: do not show withdrawn coins * chore: add send page and logic * chore: fix receive page * chore: fix activities table * chore: fix some navigation errors and settings page errors * Add Settings property to wallet * chore: add password encrypted db wallets, add error message handling for it, remove certain coins from UI * chore: add backup from file/load into db * chore: add changes to main load wallet * chore: get latest password * chore: change settings page * chore: remove manage transactions from settings page as will be in modal * chore: add settings ui hooked with redux state and notifications * chore: add the reloading of wallets within load wallet page * chore: remove debugging, add check on wizard for encrypted wallets instead of live wallets * chore: fix loading from backup file to include backup tx * chore: add more responsive main bar page, and add modal ui * chore: fix coin modal and help page * chore: remove amount * chore: downgrade sql * chore: enable debug mode * chore: replace icon of app * chore: huge fix for resources in wallet * chore: add build * chore: add dev branch * chore: fix clearnet config issues, start a build * chore: change actions * chore: remove mainnet * chore: remove mainnet * chore: change github actions * chore: change app icon * chore: change app icon * chore: remove unused files * version: update to 0.1.1 * DB file path * Update atomic_transfer.md * Update atomic_transfer.md typo * Update atomic_transfer.md Fixed typo * Update atomic_transfer.md * Update protocol.md * Update transfer_sender_sequence.md * Update transfer_receiver_sequence.md * Update transfer_sender_sequence.md * Update transfer_receiver_sequence.md * Update protocol.md * Add ChaCha20-Poly1305 encryption scheme This commit adds ChaCha20-Poly1305 algorithm to be used to encrypt any enclave data instead of using the SGX built-in functions. This way, the data can be decrypted on another machine as long the same encryption key be used. SGX functions are still used to seal and unseal the encryption key. * Add password to add-mnemonic call * Add Dockerfiles to SGX SIM mode * Add docker files to the server * Update protocol.md * Update README.md * Update deposit_sequence.md * Update transfer_sender_sequence.md * Update transfer_receiver_sequence.md * Add docker files to the enclave - HW mode * Remove r2 and blind commitments * Change HRP to 'ml' and 'tml' * Add address validation and remove standalone rust client * Update WASM and rename lib * Update atomic_transfer.md * Update atomic_transfer.md * Add UniFFI * Re-add nodejs client * Add kotlin client * Use TransferReceiverPostResponsePayload * Add Atomic transfer * Use statechain_info to verify transfers * Add automatic seed generation and replication * Update react-app package.json * Increase the maximum amount of time to spend waiting for a connection to 30s * Allow coin to be withdrawn if in IN_TRANSFER status * Fix minor errors regarding IN_TRANSFER status * Update Kotlin client * fix: server config with env for mercury & token server * feat: add docker build for github actions * feat: add dev branch to yaml * fix: token server port * fix: expose port in dockerfile for token-server * fix: move Rocket.toml from sub folder to parent folder * fix: add tls feature to sqlx * fix: route for endpoint /info * feat: add explorer * feat: add keylist cronjob * fix: version for docker images in ci/cd * fix: add dev2 branch to ci/cd * fix: import error with token server * fix: mercury server start cmd * fix: start cmd for mercury server * debug: mercury server dockerfile * fix: config for mercury and token server * fix: mercury server dockerfile * fix: dockerfile for mercury server * Fix the mainnet address conversion * Add address reuse functionality * Create rust client lib * Create nodejs client lib * Update ECIES package and restructure project folders * Add a new test file that uses the nodejs lib * Fix docker error preventing Mercury server from starting * Move signature validation from rust client lib to Mercury lib * Refactor `clients/libs/rust/src/transfer_receiver.rs`. No change in behavior * Use `validateSignatureScheme` in `clients/libs/nodejs/transfer_receive.js` * Use `validateSignatureScheme` in `clients/apps/kotlin/TransferReceive.kt` * Add web client lib * Add `max_fee_rate` setting to rust lib * Add `max_fee_rate` setting to nodejs lib * Create client_guide.md * Add `max_fee_rate` setting to web lib * Update client_guide.md * Update client_guide.md * Update client_guide.md * Add `max_fee_rate` setting to Kotlin client * Add multiple enclave support * Remove outdated react-app * Handle fee rate < 0 in broadcast command * Feat/fee unit * Add integration tests on regtest mode ------- Co-authored-by: DhananjayPurohit <[email protected]> * Add Lightning Latch atomic transfer * Improve transfer message verification * Add basic Rust integration tests * Add `batchtimeout` to `/info/config` * fix: directory for Rocket.toml * feat: add tests for coin expiry * fix: add test for transfer-sender that make coin expired by sending * fix: assertion for broadcast tx * fix: add dev3 for integration tests * Add TB02 - Transfer Address Reuse * Add TM01 - Sender Double Spends * chore: remove dev3 branch from integration tests * Add TA01 - 'signSecond not called' and return the pubnonce if the challenge is null * Refactor transfer-receive to make it non-blocking * Refactor transfer-receive in nodeJS library to make it non-blocking * Adjust tests to the new transferReceive function * Add web lib tests * Fix minor error in nodeJS transfer-receive * Add lightning latch functions to the nodeJS client * Add Rust lightning latch test * Add nodeJs lightning latch test * Feat/tests for atomic swap (#72) --------- Co-authored-by: S. Santos <[email protected]> * Add lightning latch functions to web client * Improve nodeJS API parameters * Change fee rate to f64 instead of u64 * fix: ci build on main branch only (#78) * Handle multiple deposit transactions * Add multiple deposit support to the nodeJS client * Update test_basic_workflow2 to support duplicated deposits * Update web client to support multiple deposits * Automate web client testing * Add Vitest to web client tests * Update Dockerfile (#81) * Update Dockerfile * Create Rocket2.toml * Update Dockerfile * Revert "Update Dockerfile (#81)" (#83) This reverts commit e37b627. * Add GET `/transfer/paymenthash/<batch_id>` * Add payment hash verification to nodeJS client * Fix/dockerfile token server (#85) * fix: token server dockerfile * fix: build release for token server * fix: upgrade sqlx version * Add payment hash verification to web client * Add log crate to the server * fix: The pre-image is now only revealed if the transfer is unlocked. * Set getrandom version * Add rust-toolchain file to wasm project * feat: add LND containers for testing (#77) * feat: add LND containers for testing * fix: lightning latch test run on actions * fix: install mocha * fix: wallet names * feat: add test to get preimage before batch unlock * feat: add test for sender recover coin after batch timeout * fix: increase test timeout * feat: wallet creation on lnd nodes * feat: wallet creation on lnd nodes * fix: wallet creation on start of lnd * fix: wallet unlock flag * debug: lnd node logs * fix: add sleep for lnd to sync with latest block * fix: upgrade lnd version * fix: zmq flags in bitcoind config * fix: port for node second to listen * feat: add script to open channel * feat: add fn to generate invoice * fix: test failure * feat: add test to steal hold invoice amount * fix: await for hold invoice payment * fix: import error * fix: upgrade docker image version in actions * fix: install docker compose * fix: container name * fix: network name * fix: add assertion for invoice payment failure * feat: add test for sender sends coin without batch_id * feat: add fn for invoice verification against payment hash * feat: add test for invoice verification fix: walletname for invoice verification test fix: payment hash for invoice verification test * feat: setup web client tests on actions * feat: setup esplora for actions fix: esplora and node server for web client fix: host for node server for web client fix: dir for node server for web client fix: volume for esplora and node server fix: node server volume fix: explora volume mount fix: bitcoin cli commands for esplora fix: host for node server debug: esplora and node server requests debug: host for esplora debug: containers fix: node server exit debug: node server logs fix: node server restart debug: esplora logs fix: restart policy for esplora debug: node server start command fix: add npm install before node start fix: install and start cmd for node server * feat: add dockerfile for node server fix: dir with node server build fix: dockerfile for node server fix: setup script for web client tests fix: step for script execution for web client fix: add npm install in script for web client debug: post request for node server fix: post request for node server * feat: add wallet creation for esplora fix: order for running script for web client fix: add step to generate block on esplora fix: host for esplora debug: get request for esplora fix: permission error fix: permission issue for data_bitcoin_regtest folder fix: web client tests order * feat: add test for atomic swap for web client * feat: add test for coin steal in atomic swap for web client * feat: add test for lightning latch * feat: add test for invoice for lightning latch * Fix/dockerfile token server (#85) * fix: token server dockerfile * fix: build release for token server * fix: upgrade sqlx version * Add payment hash verification to web client * Add log crate to the server * fix: The pre-image is now only revealed if the transfer is unlocked. * fix: import error * feat: add endpoints for invoice ops on node server fix: invoice generation from node server * feat: add test for invoice handling for lightning latch fix: import error fix: verifyInvoice fn fix: add bolt11 as package fix: bolt11 import error * feat: add endpoint for decode invoice fix: invoice from post request fix: invoice payment hash debug: invoice decode fix: payment hash in invoice generation debug: invoice verification fix: extract hash from decoded invoice fix: long running test due to hold invoice fix: payment hashes fix: web client tests running order fix: verify invoice test * refactor: verify invoice test --------- Co-authored-by: S. Santos <[email protected]> * Update Cargo.toml * fix: upgrade sqlx version * Update sqlx and toolchain * Change transaction sequence to 0 * Receiver now compares the backup transaction locktime with the current block height * Validate backup transaction signatures using SIGHASH_ALL * Validate transaction version * Validate transaction output size * Add blockheight in web library receive functionality * Receiver constructs backup transactions for verification * Add tx and locktime checks * Version number * Update Cargo.toml * Add server version number to /info/config * feat: add tnc to token (#89) * feat: add tnc to token * feat: add endpoint for tnc acceptance * fix: token init for tnc acceptance * fix: dir for tnc.html * Update tnc.html (#92) * chore: remove nodejs tests * Update tnc.html --------- Co-authored-by: Tom Trevethan <[email protected]> * Connection string secret as separate ENV. * Change the PubKeyInfo struct to show creation date * feat: add tnc to explorer page (#99) * feat: add tnc to explorer page * feat: add server version to explorer page * version number --------- Co-authored-by: S. Santos <[email protected]> Co-authored-by: Thomas Trevethan <[email protected]> Co-authored-by: rk16449 <[email protected]> Co-authored-by: rk16449 <[email protected]> Co-authored-by: Nicholas Gregory <[email protected]> Co-authored-by: DhananjayPurohit <[email protected]> Co-authored-by: S. Santos <[email protected]>
tomt1664
added a commit
that referenced
this pull request
Oct 4, 2024
* Remove thunks * Improve backup transactions database and view * Improve GUI * Fix some warnings * Fix some warnings * Improve update function * Improve GUI * Remove DB transaction to avoid race condition * config * config * add token server * Update tokens.md * Update Token struct * Add WASM packages * Improve UI * Change react-app config file * chore: add changes to get locofy-ui working * chore: add key to wizard * chore: add deposit process ui * chore: add token ui logic * chore: huge locofy ai changes, remove old code as wasn't scalable, learned new locofy formats * chore: fix up icons * chore: hook token info card and deposit page * chore: update token card UI * chore: add more validation to deposit process, and modal windows * chore: update deposit pages * add expiry time * fix * fix * chore: finish the tab ui logic * chore: add changes to deposit, hook up live methods to the deposit process, add loading spinners and validation * add key check * fix serialisation * chore: add token insertion into wallet object, various other changes, wasm error in deposit 2 * chore: fix wallet load code * chore: add back in validation for wizard page 2, cleanup the main header panel ui * chore: refactor, add a logged in wallet hook, add validation to wallet page 1 * chore: show seed key in wizard states * chore: fix error if coins / activities is null * Modify Token struct * chore: fix error message ordering in wizard page * chore: move order of destructure variable in main page * chore: fix coin item, display some info to user about their statecoin * chore: add changes to main header panel, add up btc values * chore: fix deposit addresses * chore: change to testnet server, add withdraw ui components * chore: fix more withdrawal logic, fix bug in deposit 3 page * chore: do not show withdrawn coins * chore: add send page and logic * chore: fix receive page * chore: fix activities table * chore: fix some navigation errors and settings page errors * Add Settings property to wallet * chore: add password encrypted db wallets, add error message handling for it, remove certain coins from UI * chore: add backup from file/load into db * chore: add changes to main load wallet * chore: get latest password * chore: change settings page * chore: remove manage transactions from settings page as will be in modal * chore: add settings ui hooked with redux state and notifications * chore: add the reloading of wallets within load wallet page * chore: remove debugging, add check on wizard for encrypted wallets instead of live wallets * chore: fix loading from backup file to include backup tx * chore: add more responsive main bar page, and add modal ui * chore: fix coin modal and help page * chore: remove amount * chore: downgrade sql * chore: enable debug mode * chore: replace icon of app * chore: huge fix for resources in wallet * chore: add build * chore: add dev branch * chore: fix clearnet config issues, start a build * chore: change actions * chore: remove mainnet * chore: remove mainnet * chore: change github actions * chore: change app icon * chore: change app icon * chore: remove unused files * version: update to 0.1.1 * DB file path * Update atomic_transfer.md * Update atomic_transfer.md typo * Update atomic_transfer.md Fixed typo * Update atomic_transfer.md * Update protocol.md * Update transfer_sender_sequence.md * Update transfer_receiver_sequence.md * Update transfer_sender_sequence.md * Update transfer_receiver_sequence.md * Update protocol.md * Add ChaCha20-Poly1305 encryption scheme This commit adds ChaCha20-Poly1305 algorithm to be used to encrypt any enclave data instead of using the SGX built-in functions. This way, the data can be decrypted on another machine as long the same encryption key be used. SGX functions are still used to seal and unseal the encryption key. * Add password to add-mnemonic call * Add Dockerfiles to SGX SIM mode * Add docker files to the server * Update protocol.md * Update README.md * Update deposit_sequence.md * Update transfer_sender_sequence.md * Update transfer_receiver_sequence.md * Add docker files to the enclave - HW mode * Remove r2 and blind commitments * Change HRP to 'ml' and 'tml' * Add address validation and remove standalone rust client * Update WASM and rename lib * Update atomic_transfer.md * Update atomic_transfer.md * Add UniFFI * Re-add nodejs client * Add kotlin client * Use TransferReceiverPostResponsePayload * Add Atomic transfer * Use statechain_info to verify transfers * Add automatic seed generation and replication * Update react-app package.json * Increase the maximum amount of time to spend waiting for a connection to 30s * Allow coin to be withdrawn if in IN_TRANSFER status * Fix minor errors regarding IN_TRANSFER status * Update Kotlin client * fix: server config with env for mercury & token server * feat: add docker build for github actions * feat: add dev branch to yaml * fix: token server port * fix: expose port in dockerfile for token-server * fix: move Rocket.toml from sub folder to parent folder * fix: add tls feature to sqlx * fix: route for endpoint /info * feat: add explorer * feat: add keylist cronjob * fix: version for docker images in ci/cd * fix: add dev2 branch to ci/cd * fix: import error with token server * fix: mercury server start cmd * fix: start cmd for mercury server * debug: mercury server dockerfile * fix: config for mercury and token server * fix: mercury server dockerfile * fix: dockerfile for mercury server * Fix the mainnet address conversion * Add address reuse functionality * Create rust client lib * Create nodejs client lib * Update ECIES package and restructure project folders * Add a new test file that uses the nodejs lib * Fix docker error preventing Mercury server from starting * Move signature validation from rust client lib to Mercury lib * Refactor `clients/libs/rust/src/transfer_receiver.rs`. No change in behavior * Use `validateSignatureScheme` in `clients/libs/nodejs/transfer_receive.js` * Use `validateSignatureScheme` in `clients/apps/kotlin/TransferReceive.kt` * Add web client lib * Add `max_fee_rate` setting to rust lib * Add `max_fee_rate` setting to nodejs lib * Create client_guide.md * Add `max_fee_rate` setting to web lib * Update client_guide.md * Update client_guide.md * Update client_guide.md * Add `max_fee_rate` setting to Kotlin client * Add multiple enclave support * Remove outdated react-app * Handle fee rate < 0 in broadcast command * Feat/fee unit * Add integration tests on regtest mode ------- Co-authored-by: DhananjayPurohit <[email protected]> * Add Lightning Latch atomic transfer * Improve transfer message verification * Add basic Rust integration tests * Add `batchtimeout` to `/info/config` * fix: directory for Rocket.toml * feat: add tests for coin expiry * fix: add test for transfer-sender that make coin expired by sending * fix: assertion for broadcast tx * fix: add dev3 for integration tests * Add TB02 - Transfer Address Reuse * Add TM01 - Sender Double Spends * chore: remove dev3 branch from integration tests * Add TA01 - 'signSecond not called' and return the pubnonce if the challenge is null * Refactor transfer-receive to make it non-blocking * Refactor transfer-receive in nodeJS library to make it non-blocking * Adjust tests to the new transferReceive function * Add web lib tests * Fix minor error in nodeJS transfer-receive * Add lightning latch functions to the nodeJS client * Add Rust lightning latch test * Add nodeJs lightning latch test * Feat/tests for atomic swap (#72) --------- Co-authored-by: S. Santos <[email protected]> * Add lightning latch functions to web client * Improve nodeJS API parameters * Change fee rate to f64 instead of u64 * fix: ci build on main branch only (#78) * Handle multiple deposit transactions * Add multiple deposit support to the nodeJS client * Update test_basic_workflow2 to support duplicated deposits * Update web client to support multiple deposits * Automate web client testing * Add Vitest to web client tests * Update Dockerfile (#81) * Update Dockerfile * Create Rocket2.toml * Update Dockerfile * Revert "Update Dockerfile (#81)" (#83) This reverts commit e37b627. * Add GET `/transfer/paymenthash/<batch_id>` * Add payment hash verification to nodeJS client * Fix/dockerfile token server (#85) * fix: token server dockerfile * fix: build release for token server * fix: upgrade sqlx version * Add payment hash verification to web client * Add log crate to the server * fix: The pre-image is now only revealed if the transfer is unlocked. * Set getrandom version * Add rust-toolchain file to wasm project * feat: add LND containers for testing (#77) * feat: add LND containers for testing * fix: lightning latch test run on actions * fix: install mocha * fix: wallet names * feat: add test to get preimage before batch unlock * feat: add test for sender recover coin after batch timeout * fix: increase test timeout * feat: wallet creation on lnd nodes * feat: wallet creation on lnd nodes * fix: wallet creation on start of lnd * fix: wallet unlock flag * debug: lnd node logs * fix: add sleep for lnd to sync with latest block * fix: upgrade lnd version * fix: zmq flags in bitcoind config * fix: port for node second to listen * feat: add script to open channel * feat: add fn to generate invoice * fix: test failure * feat: add test to steal hold invoice amount * fix: await for hold invoice payment * fix: import error * fix: upgrade docker image version in actions * fix: install docker compose * fix: container name * fix: network name * fix: add assertion for invoice payment failure * feat: add test for sender sends coin without batch_id * feat: add fn for invoice verification against payment hash * feat: add test for invoice verification fix: walletname for invoice verification test fix: payment hash for invoice verification test * feat: setup web client tests on actions * feat: setup esplora for actions fix: esplora and node server for web client fix: host for node server for web client fix: dir for node server for web client fix: volume for esplora and node server fix: node server volume fix: explora volume mount fix: bitcoin cli commands for esplora fix: host for node server debug: esplora and node server requests debug: host for esplora debug: containers fix: node server exit debug: node server logs fix: node server restart debug: esplora logs fix: restart policy for esplora debug: node server start command fix: add npm install before node start fix: install and start cmd for node server * feat: add dockerfile for node server fix: dir with node server build fix: dockerfile for node server fix: setup script for web client tests fix: step for script execution for web client fix: add npm install in script for web client debug: post request for node server fix: post request for node server * feat: add wallet creation for esplora fix: order for running script for web client fix: add step to generate block on esplora fix: host for esplora debug: get request for esplora fix: permission error fix: permission issue for data_bitcoin_regtest folder fix: web client tests order * feat: add test for atomic swap for web client * feat: add test for coin steal in atomic swap for web client * feat: add test for lightning latch * feat: add test for invoice for lightning latch * Fix/dockerfile token server (#85) * fix: token server dockerfile * fix: build release for token server * fix: upgrade sqlx version * Add payment hash verification to web client * Add log crate to the server * fix: The pre-image is now only revealed if the transfer is unlocked. * fix: import error * feat: add endpoints for invoice ops on node server fix: invoice generation from node server * feat: add test for invoice handling for lightning latch fix: import error fix: verifyInvoice fn fix: add bolt11 as package fix: bolt11 import error * feat: add endpoint for decode invoice fix: invoice from post request fix: invoice payment hash debug: invoice decode fix: payment hash in invoice generation debug: invoice verification fix: extract hash from decoded invoice fix: long running test due to hold invoice fix: payment hashes fix: web client tests running order fix: verify invoice test * refactor: verify invoice test --------- Co-authored-by: S. Santos <[email protected]> * Update Cargo.toml * fix: upgrade sqlx version * Update sqlx and toolchain * Change transaction sequence to 0 * Receiver now compares the backup transaction locktime with the current block height * Validate backup transaction signatures using SIGHASH_ALL * Validate transaction version * Validate transaction output size * Add blockheight in web library receive functionality * Receiver constructs backup transactions for verification * Add tx and locktime checks * Version number * Update Cargo.toml * Add server version number to /info/config * feat: add tnc to token (#89) * feat: add tnc to token * feat: add endpoint for tnc acceptance * fix: token init for tnc acceptance * fix: dir for tnc.html * Update tnc.html (#92) * chore: remove nodejs tests * Update tnc.html --------- Co-authored-by: Tom Trevethan <[email protected]> * Connection string secret as separate ENV. * Change the PubKeyInfo struct to show creation date * feat: add tnc to explorer page (#99) * feat: add tnc to explorer page * feat: add server version to explorer page * version number * Update env var * Allow `token_server::endpoints::token::{RTLQuery, RTLInvoice}` to capture arbitrary additional fields * Update Cargo.toml * Update token.rs --------- Co-authored-by: S. Santos <[email protected]> Co-authored-by: Thomas Trevethan <[email protected]> Co-authored-by: rk16449 <[email protected]> Co-authored-by: rk16449 <[email protected]> Co-authored-by: Nicholas Gregory <[email protected]> Co-authored-by: DhananjayPurohit <[email protected]> Co-authored-by: S. Santos <[email protected]>
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.
No description provided.