@nomicfoundation/edr 0.12.0-next.9 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/coverage.sol +38 -0
  2. package/dist/src/ts/coverage.d.ts +6 -0
  3. package/dist/src/ts/coverage.d.ts.map +1 -0
  4. package/dist/src/ts/coverage.js +51 -0
  5. package/dist/src/ts/coverage.js.map +1 -0
  6. package/index.d.ts +267 -27
  7. package/index.js +5 -2
  8. package/package.json +21 -19
  9. package/src/account.rs +0 -124
  10. package/src/block.rs +0 -28
  11. package/src/call_override.rs +0 -116
  12. package/src/cast.rs +0 -165
  13. package/src/chains/generic.rs +0 -58
  14. package/src/chains/l1.rs +0 -268
  15. package/src/chains/op.rs +0 -424
  16. package/src/chains.rs +0 -7
  17. package/src/config.rs +0 -700
  18. package/src/context.rs +0 -447
  19. package/src/contract_decoder.rs +0 -57
  20. package/src/debug_trace.rs +0 -40
  21. package/src/gas_report.rs +0 -92
  22. package/src/instrument.rs +0 -109
  23. package/src/lib.rs +0 -50
  24. package/src/log.rs +0 -28
  25. package/src/logger.rs +0 -120
  26. package/src/mock/time.rs +0 -134
  27. package/src/mock.rs +0 -71
  28. package/src/precompile.rs +0 -50
  29. package/src/provider/factory.rs +0 -22
  30. package/src/provider/response.rs +0 -73
  31. package/src/provider.rs +0 -162
  32. package/src/result.rs +0 -212
  33. package/src/scenarios.rs +0 -53
  34. package/src/serde.rs +0 -57
  35. package/src/solidity_tests/artifact.rs +0 -184
  36. package/src/solidity_tests/config.rs +0 -793
  37. package/src/solidity_tests/factory.rs +0 -22
  38. package/src/solidity_tests/l1.rs +0 -68
  39. package/src/solidity_tests/op.rs +0 -69
  40. package/src/solidity_tests/runner.rs +0 -51
  41. package/src/solidity_tests/test_results.rs +0 -736
  42. package/src/solidity_tests.rs +0 -56
  43. package/src/subscription.rs +0 -32
  44. package/src/trace/debug.rs +0 -61
  45. package/src/trace/exit.rs +0 -89
  46. package/src/trace/library_utils.rs +0 -11
  47. package/src/trace/model.rs +0 -59
  48. package/src/trace/return_data.rs +0 -96
  49. package/src/trace/solidity_stack_trace.rs +0 -869
  50. package/src/trace.rs +0 -199
  51. package/src/ts/solidity_tests.ts +0 -46
  52. package/src/withdrawal.rs +0 -49
@@ -1,22 +0,0 @@
1
- use std::sync::Arc;
2
-
3
- use edr_napi_core::solidity::SyncTestRunnerFactory;
4
- use napi_derive::napi;
5
-
6
- #[napi]
7
- pub struct SolidityTestRunnerFactory {
8
- inner: Arc<dyn SyncTestRunnerFactory>,
9
- }
10
-
11
- impl SolidityTestRunnerFactory {
12
- /// Returns a reference to the inner test runner factory.
13
- pub fn as_inner(&self) -> &Arc<dyn SyncTestRunnerFactory> {
14
- &self.inner
15
- }
16
- }
17
-
18
- impl From<Arc<dyn SyncTestRunnerFactory>> for SolidityTestRunnerFactory {
19
- fn from(inner: Arc<dyn SyncTestRunnerFactory>) -> Self {
20
- Self { inner }
21
- }
22
- }
@@ -1,68 +0,0 @@
1
- use std::{collections::BTreeMap, sync::Arc};
2
-
3
- use edr_napi_core::solidity::{
4
- config::{TestRunnerConfig, TracingConfigWithBuffers},
5
- SyncTestRunner, SyncTestRunnerFactory,
6
- };
7
- use edr_primitives::Bytes;
8
- use edr_solidity::artifacts::ArtifactId;
9
- use edr_solidity_tests::{
10
- contracts::ContractsByArtifact, decode::RevertDecoder, evm_context::L1EvmBuilder,
11
- multi_runner::TestContract, MultiContractRunner,
12
- };
13
- use napi::tokio;
14
- use napi_derive::napi;
15
-
16
- use crate::solidity_tests::{factory::SolidityTestRunnerFactory, runner::LazyContractDecoder};
17
-
18
- struct L1TestRunnerFactory;
19
-
20
- impl SyncTestRunnerFactory for L1TestRunnerFactory {
21
- fn create_test_runner(
22
- &self,
23
- runtime: tokio::runtime::Handle,
24
- config: TestRunnerConfig,
25
- contracts: BTreeMap<ArtifactId, TestContract>,
26
- known_contracts: ContractsByArtifact,
27
- libs_to_deploy: Vec<Bytes>,
28
- revert_decoder: RevertDecoder,
29
- tracing_config: TracingConfigWithBuffers,
30
- ) -> napi::Result<Box<dyn SyncTestRunner>> {
31
- let contract_decoder = LazyContractDecoder::new(tracing_config);
32
-
33
- let runner = tokio::task::block_in_place(|| {
34
- runtime
35
- .block_on(MultiContractRunner::<
36
- edr_chain_l1::BlockEnv,
37
- (),
38
- L1EvmBuilder,
39
- edr_chain_l1::HaltReason,
40
- edr_chain_l1::Hardfork,
41
- _,
42
- edr_chain_l1::InvalidTransaction,
43
- edr_chain_l1::TxEnv,
44
- >::new(
45
- config.try_into()?,
46
- contracts,
47
- known_contracts,
48
- libs_to_deploy,
49
- contract_decoder,
50
- revert_decoder,
51
- ))
52
- .map_err(|err| {
53
- napi::Error::new(
54
- napi::Status::GenericFailure,
55
- format!("Failed to create multi contract runner: {err}"),
56
- )
57
- })
58
- })?;
59
-
60
- Ok(Box::new(runner))
61
- }
62
- }
63
-
64
- #[napi(catch_unwind)]
65
- pub fn l1_solidity_test_runner_factory() -> SolidityTestRunnerFactory {
66
- let factory: Arc<dyn SyncTestRunnerFactory> = Arc::new(L1TestRunnerFactory);
67
- factory.into()
68
- }
@@ -1,69 +0,0 @@
1
- use std::{collections::BTreeMap, sync::Arc};
2
-
3
- use edr_napi_core::solidity::{
4
- config::{TestRunnerConfig, TracingConfigWithBuffers},
5
- SyncTestRunner, SyncTestRunnerFactory,
6
- };
7
- use edr_op::solidity_tests::OpEvmBuilder;
8
- use edr_primitives::Bytes;
9
- use edr_solidity::artifacts::ArtifactId;
10
- use edr_solidity_tests::{
11
- contracts::ContractsByArtifact, decode::RevertDecoder, multi_runner::TestContract,
12
- MultiContractRunner,
13
- };
14
- use napi::tokio;
15
- use napi_derive::napi;
16
-
17
- use crate::solidity_tests::{factory::SolidityTestRunnerFactory, runner::LazyContractDecoder};
18
-
19
- struct OpTestRunnerFactory;
20
-
21
- impl SyncTestRunnerFactory for OpTestRunnerFactory {
22
- fn create_test_runner(
23
- &self,
24
- runtime: tokio::runtime::Handle,
25
- config: TestRunnerConfig,
26
- contracts: BTreeMap<ArtifactId, TestContract>,
27
- known_contracts: ContractsByArtifact,
28
- libs_to_deploy: Vec<Bytes>,
29
- revert_decoder: RevertDecoder,
30
- tracing_config: TracingConfigWithBuffers,
31
- ) -> napi::Result<Box<dyn SyncTestRunner>> {
32
- let contract_decoder = LazyContractDecoder::new(tracing_config);
33
-
34
- let runner = tokio::task::block_in_place(|| {
35
- runtime
36
- .block_on(MultiContractRunner::<
37
- edr_op::BlockEnv,
38
- _,
39
- OpEvmBuilder,
40
- edr_op::HaltReason,
41
- edr_op::Hardfork,
42
- _,
43
- edr_op::transaction::InvalidTransaction,
44
- edr_op::transaction::OpTxEnv<edr_chain_l1::TxEnv>,
45
- >::new(
46
- config.try_into()?,
47
- contracts,
48
- known_contracts,
49
- libs_to_deploy,
50
- contract_decoder,
51
- revert_decoder,
52
- ))
53
- .map_err(|err| {
54
- napi::Error::new(
55
- napi::Status::GenericFailure,
56
- format!("Failed to create multi contract runner: {err}"),
57
- )
58
- })
59
- })?;
60
-
61
- Ok(Box::new(runner))
62
- }
63
- }
64
-
65
- #[napi(catch_unwind)]
66
- pub fn op_solidity_test_runner_factory() -> SolidityTestRunnerFactory {
67
- let factory: Arc<dyn SyncTestRunnerFactory> = Arc::new(OpTestRunnerFactory);
68
- factory.into()
69
- }
@@ -1,51 +0,0 @@
1
- use std::sync::{Mutex, OnceLock};
2
-
3
- use edr_evm_spec::HaltReasonTrait;
4
- use edr_napi_core::solidity::config::TracingConfigWithBuffers;
5
- use edr_solidity::{
6
- artifacts::BuildInfoConfigWithBuffers,
7
- contract_decoder::{ContractDecoder, ContractDecoderError, NestedTraceDecoder},
8
- nested_trace::NestedTrace,
9
- };
10
-
11
- /// Only parses the tracing config which is very expensive if the contract
12
- /// decoder is used.
13
- #[derive(Debug)]
14
- pub(crate) struct LazyContractDecoder {
15
- // We need the `Mutex`, because `Uint8Array` is not `Sync`
16
- tracing_config: Mutex<TracingConfigWithBuffers>,
17
- // Storing the result so that we can propagate the error
18
- contract_decoder: OnceLock<Result<ContractDecoder, ContractDecoderError>>,
19
- }
20
-
21
- impl LazyContractDecoder {
22
- pub fn new(tracing_config: TracingConfigWithBuffers) -> Self {
23
- Self {
24
- tracing_config: Mutex::new(tracing_config),
25
- contract_decoder: OnceLock::new(),
26
- }
27
- }
28
- }
29
-
30
- impl<HaltReasonT: HaltReasonTrait> NestedTraceDecoder<HaltReasonT> for LazyContractDecoder {
31
- fn try_to_decode_nested_trace(
32
- &self,
33
- nested_trace: NestedTrace<HaltReasonT>,
34
- ) -> Result<NestedTrace<HaltReasonT>, ContractDecoderError> {
35
- self.contract_decoder
36
- .get_or_init(|| {
37
- let tracing_config = self
38
- .tracing_config
39
- .lock()
40
- .expect("Can't get poisoned, because only called once");
41
- edr_solidity::artifacts::BuildInfoConfig::parse_from_buffers(
42
- BuildInfoConfigWithBuffers::from(&*tracing_config),
43
- )
44
- .map_err(|err| ContractDecoderError::Initialization(err.to_string()))
45
- .and_then(|config| ContractDecoder::new(&config))
46
- })
47
- .as_ref()
48
- .map_err(Clone::clone)
49
- .and_then(|decoder| decoder.try_to_decode_nested_trace(nested_trace))
50
- }
51
- }