* solc flatten implementation
* upd changelog
* upd docs
* revamp flattening
* clippy
* use resolve_import method
* extract recursive flatenning into a separate func
* change content iteration for flatten
* remove redundant result
* clean up solimport
* add comment to project.flatten
* add support for ver pragma loc
* address pr comments
* uncomment the test
* improve test cov
* add handling of sdpx license identifiers
* change arg name
* match license only at the beginning of the file
* add comments
* lint
* morrre comments
* Filter for unignored warnings
* Pass compiler output to diagnostics
* Ignore SPDX and contract size warnings for tests
* Fix lint
* Skip lookups if error is not a warning
* feat(solc): add source map parser
* merge branch master
* make some types private
* chore: make id an option
* fix: support negative field values
* check parsed element
* docs: document public functions
* add mod
* feat(solc): add dependency graph
* detect version
* add into sources
* fix: canonicalize temp paths
* test: add graph tests
* chore(clippy): make clippy happy
* more wasm compat
* chore: update changelog
* wasm compat
* unused
* fix get source fill function
* Update ethers-solc/src/resolver.rs
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* perf: use solang_parser to trim down deps
* resolve graph in compile
* refactor add node function
* docs: clear up comment
* docs: typos
* fix: make all versions unique based on their major minor path version
* prepare test
* docs: add more resolve docs
* test: add lib change detection test
* test: update tests
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* chore(etherscan): allow specifying openssl or rustls
* chore(contract): allow specifying openssl or rustls
* chore(solc): allow specifying openssl or rustls
* chore: expose new rustls/openssl features at top level crate
* chore: bump tokio-tungstenite / remove dup rustls version
* chore: bump svm-rs
* fix: feature gate sha2-asm
* ci: remove --all-features from windows tests
* chore: do not enable sha2-asm by default
* fix: do not pull in svm-rs in wasm builds
* chore: use upstream svm again
* fix: make ethers-wasm workspace member
* rustfmt
* chore: allow clippy all
* chore: make ethers-wasm non default member
* ci: only clippy default members
previously if 1 file changed, it'd overwrite the existing cache on disk with just
that 1 changed file. this change reads the cache from disk and merges it with the new checksums
* fix: pass partial artifact cache to project compiler output
If the cache contains some artifacts but not all, the
project compiler output now contains the cached artifacts
in addition to the newly compiled artifacts.
* chore: update changelog
* fix: remove missing cache files before getting changed files
* fix: propagate error if reading cached artifacts fails
* feat: verify checksum before project compilation
* fix: in case of a corrupt binary, avoid calling it to check version
* fix: cache releases in the global lazy
* chore: fix linting
* fix: replace a loop with straightforward if
* chore: latest svm
* fix: changes based on review comments
* chore: use published version of svm-rs
* chore: use published version of svm-rs
The parameter is not used in any useful way currently, and it prevents us from using clean installations of SVM
which do not have an instantiated /Users/gakonst/.svm directory
* feat: add artifacts trait
* add artifactsoutput trait
* deprecated old artifactoutput
* feat: better artifacts handling
* force update
* feat: update metadata artifacts
* feat: add default to types
* feat: make useliteralcontent optional
* feat: replace ProjectCompilerOutput with struct
* docs
* add output function
* feat: add Artifact trait for reading Abi/Bytes from an artifact
* feat(solc): replace () for empty artifacts with a conditional check
As discussed with @mattsse the abstraction here might not be super clean, so we should revisit this if we do not like it
* chore: fix doctest
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
When running integration tests, the `cfg(test)` is not triggered, so we
added a `tests` feature in the code. However, we did not include it
in the actual features of the crate, so it was not getting triggered
when the `--all-features` tests were running.
* test: ensure that compilation succeeds
* feat: add helper for parsing version req from a source
* feat: detect the latest compatible solc version for a VersionReq
* default to always enabling svm/async
* test: add project with multiple contract versions
* fix: always serde-default solc gas estimates
* fix: normalize evm version in settings before compiling
* feat: auto-detect version and compile if svm+async are on
* chore: warnings
* test: add a lock to ensure that there are no file conflicts when downloading solc
* test: add tests for finding solc installations
* chore: add features to ethers-rs config
* chore: s/first/latest on finding solc version fn docs
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
* feat: add solc svm find support
* feat: add svm install
* feat: add full feature
* make home non wasm32 only
* simplify features
* make compile with wasm target
* fix: doctests
* feat(ethers-solc): deserialize bytecode as bytes
* feat(ethers-solc): add method to fetch compact contract
* feat(ethers-solc): use Abi type instead of Vec<serde_json::Value>
* test(contract): use new Solc bindings
* test(middleware): use new Solc bindings
* chore: remove solc from ethers-core
* chore: remove concurrent setup code from ethers-core
* feat(ethers-solc): add ArtifactOutput::Nothing as a no-op artifact logger
* feat: add ethers-solc to top level crate
* examples: use new solc building pattern
* chore(solc): re-use opt str impl for error code decoding
* fix abigen example
* chore: fix doctests
* chore: remove setup feature
* fix: decode string to bytes correctly
* chore: clippy lints
* feat: improved solc management
* test: add basic test
* rustfmt
* rustfmt
* feat: add support for lib paths
* test: add dapp testing data
* feat: support dapp style libs
* fix: doc test
* use SOLC_path by default
* docs: import readme
* feat: add diagnostics
* chore: cleanup
* docs: update compile docs
* style: use red for error msg
* style: simplifiy error format
* chore: add newline on successful compiler run log
* feat: allow ignoring error codes so that they do not get logged
* chore: use solc 0.6.6 to match CI Version
* fix: make constructor public in hardhat tests
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>