|
|
|
@ -8,6 +8,7 @@ import { InjectedCustomProvider } from '../providers/injected-custom-provider' |
|
|
|
|
import * as packageJson from '../../../../../package.json' |
|
|
|
|
import { EventManager } from '@remix-project/remix-lib' |
|
|
|
|
import type { Blockchain } from '../../blockchain/blockchain' |
|
|
|
|
import { ProviderConfig } from '@remix-ui/environment-explorer' |
|
|
|
|
import type { CompilerArtefacts } from '@remix-project/core-plugin' |
|
|
|
|
import { ForkedVMStateProvider } from '../providers/vm-provider' |
|
|
|
|
import { Recorder } from '../tabs/runTab/model/recorder' |
|
|
|
@ -179,7 +180,7 @@ export class RunTab extends ViewPlugin { |
|
|
|
|
'foundry-provider': ['assets/img/foundry.png'] |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const addProvider = async (position, name, displayName, isInjected, isVM, isForkedState, fork = '', dataId = '', title = '', forkedVM = false) => { |
|
|
|
|
const addProvider = async (position: number, name: string, displayName: string, providerConfig: ProviderConfig, fork = '', dataId = '', title = '') => { |
|
|
|
|
await this.call('blockchain', 'addProvider', { |
|
|
|
|
position, |
|
|
|
|
options: {}, |
|
|
|
@ -189,10 +190,7 @@ export class RunTab extends ViewPlugin { |
|
|
|
|
description: descriptions[name] || displayName, |
|
|
|
|
logos: logos[name], |
|
|
|
|
fork, |
|
|
|
|
isInjected, |
|
|
|
|
isForkedVM: forkedVM, |
|
|
|
|
isVM, |
|
|
|
|
isForkedState, |
|
|
|
|
config: providerConfig, |
|
|
|
|
title, |
|
|
|
|
init: async function () { |
|
|
|
|
const options = await udapp.call(name, 'init') |
|
|
|
@ -208,13 +206,13 @@ export class RunTab extends ViewPlugin { |
|
|
|
|
const addCustomInjectedProvider = async (position, event, name, displayName, networkId, urls, nativeCurrency?) => { |
|
|
|
|
// name = `${name} through ${event.detail.info.name}`
|
|
|
|
|
await this.engine.register([new InjectedCustomProvider(event.detail.provider, name, displayName, networkId, urls, nativeCurrency)]) |
|
|
|
|
await addProvider(position, name, displayName + ' - ' + event.detail.info.name, true, false, false) |
|
|
|
|
await addProvider(position, name, displayName + ' - ' + event.detail.info.name, { isInjected: true, isVM: false, isRpcForkedState: false }) |
|
|
|
|
} |
|
|
|
|
const registerInjectedProvider = async (event) => { |
|
|
|
|
const name = 'injected-' + event.detail.info.name |
|
|
|
|
const displayName = 'Injected Provider - ' + event.detail.info.name |
|
|
|
|
await this.engine.register([new InjectedProviderDefault(event.detail.provider, name)]) |
|
|
|
|
await addProvider(0, name, displayName, true, false, false) |
|
|
|
|
await addProvider(0, name, displayName, { isInjected: true, isVM: false, isRpcForkedState: false }) |
|
|
|
|
|
|
|
|
|
if (event.detail.info.name === 'MetaMask') { |
|
|
|
|
await addCustomInjectedProvider(7, event, 'injected-metamask-optimism', 'L2 - Optimism', '0xa', ['https://mainnet.optimism.io']) |
|
|
|
@ -251,14 +249,14 @@ export class RunTab extends ViewPlugin { |
|
|
|
|
|
|
|
|
|
// VM
|
|
|
|
|
const titleVM = 'Execution environment is local to Remix. Data is only saved to browser memory and will vanish upon reload.' |
|
|
|
|
await addProvider(1, 'vm-cancun', 'Remix VM (Cancun)', false, true, false, 'cancun', 'settingsVMCancunMode', titleVM) |
|
|
|
|
await addProvider(50, 'vm-shanghai', 'Remix VM (Shanghai)', false, true, false, 'shanghai', 'settingsVMShanghaiMode', titleVM) |
|
|
|
|
await addProvider(51, 'vm-paris', 'Remix VM (Paris)', false, true, false, 'paris', 'settingsVMParisMode', titleVM) |
|
|
|
|
await addProvider(52, 'vm-london', 'Remix VM (London)', false, true, false, 'london', 'settingsVMLondonMode', titleVM) |
|
|
|
|
await addProvider(53, 'vm-berlin', 'Remix VM (Berlin)', false, true, false, 'berlin', 'settingsVMBerlinMode', titleVM) |
|
|
|
|
await addProvider(2, 'vm-mainnet-fork', 'Remix VM - Mainnet fork', false, true, false, 'cancun', 'settingsVMMainnetMode', titleVM, true) |
|
|
|
|
await addProvider(3, 'vm-sepolia-fork', 'Remix VM - Sepolia fork', false, true, false, 'cancun', 'settingsVMSepoliaMode', titleVM, true) |
|
|
|
|
await addProvider(4, 'vm-custom-fork', 'Remix VM - Custom fork', false, true, false, '', 'settingsVMCustomMode', titleVM, true) |
|
|
|
|
await addProvider(1, 'vm-cancun', 'Remix VM (Cancun)', { isInjected: false, isVM: true, isRpcForkedState: false, statePath: '.states/vm-cancun/state.json' }, 'cancun', 'settingsVMCancunMode', titleVM) |
|
|
|
|
await addProvider(50, 'vm-shanghai', 'Remix VM (Shanghai)', { isInjected: false, isVM: true, isRpcForkedState: false, statePath: '.states/vm-shanghai/state.json' }, 'shanghai', 'settingsVMShanghaiMode', titleVM) |
|
|
|
|
await addProvider(51, 'vm-paris', 'Remix VM (Paris)', { isInjected: false, isVM: true, isRpcForkedState: false, statePath: '.states/vm-paris/state.json' }, 'paris', 'settingsVMParisMode', titleVM) |
|
|
|
|
await addProvider(52, 'vm-london', 'Remix VM (London)', { isInjected: false, isVM: true, isRpcForkedState: false, statePath: '.states/vm-london/state.json' }, 'london', 'settingsVMLondonMode', titleVM) |
|
|
|
|
await addProvider(53, 'vm-berlin', 'Remix VM (Berlin)', { isInjected: false, isVM: true, isRpcForkedState: false, statePath: '.states/vm-berlin/state.json' }, 'berlin', 'settingsVMBerlinMode', titleVM) |
|
|
|
|
await addProvider(2, 'vm-mainnet-fork', 'Remix VM - Mainnet fork', { isInjected: false, isVM: true, isRpcForkedState: true }, 'cancun', 'settingsVMMainnetMode', titleVM) |
|
|
|
|
await addProvider(3, 'vm-sepolia-fork', 'Remix VM - Sepolia fork', { isInjected: false, isVM: true, isRpcForkedState: true }, 'cancun', 'settingsVMSepoliaMode', titleVM) |
|
|
|
|
await addProvider(4, 'vm-custom-fork', 'Remix VM - Custom fork', { isInjected: false, isVM: true, isRpcForkedState: true }, '', 'settingsVMCustomMode', titleVM) |
|
|
|
|
|
|
|
|
|
// Forked VM States
|
|
|
|
|
const addFVSProvider = async(stateFilePath, pos) => { |
|
|
|
@ -280,7 +278,7 @@ export class RunTab extends ViewPlugin { |
|
|
|
|
version: packageJson.version |
|
|
|
|
}, this.blockchain, stateDetail.forkName) |
|
|
|
|
this.engine.register(fvsProvider) |
|
|
|
|
await addProvider(pos, providerName, stateDetail.stateName, false, false, true, stateDetail.forkName) |
|
|
|
|
await addProvider(pos, providerName, stateDetail.stateName, { isInjected: false, isVM: true, isRpcForkedState: false, isVMStateForked: true, statePath: `.states/forked_states/${stateDetail.stateName}.json` }, stateDetail.forkName) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
this.on('filePanel', 'workspaceInitializationCompleted', async () => { |
|
|
|
@ -302,13 +300,13 @@ export class RunTab extends ViewPlugin { |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
// wallet connect
|
|
|
|
|
await addProvider(6, 'walletconnect', 'WalletConnect', false, false, false) |
|
|
|
|
await addProvider(6, 'walletconnect', 'WalletConnect', { isInjected: false, isVM: false, isRpcForkedState: false }) |
|
|
|
|
|
|
|
|
|
// external provider
|
|
|
|
|
await addProvider(10, 'basic-http-provider', 'Custom - External Http Provider', false, false, false) |
|
|
|
|
await addProvider(20, 'hardhat-provider', 'Dev - Hardhat Provider', false, false, false) |
|
|
|
|
await addProvider(21, 'ganache-provider', 'Dev - Ganache Provider', false, false, false) |
|
|
|
|
await addProvider(22, 'foundry-provider', 'Dev - Foundry Provider', false, false, false) |
|
|
|
|
await addProvider(10, 'basic-http-provider', 'Custom - External Http Provider', { isInjected: false, isVM: false, isRpcForkedState: false }) |
|
|
|
|
await addProvider(20, 'hardhat-provider', 'Dev - Hardhat Provider', { isInjected: false, isVM: false, isRpcForkedState: false }) |
|
|
|
|
await addProvider(21, 'ganache-provider', 'Dev - Ganache Provider', { isInjected: false, isVM: false, isRpcForkedState: false }) |
|
|
|
|
await addProvider(22, 'foundry-provider', 'Dev - Foundry Provider', { isInjected: false, isVM: false, isRpcForkedState: false }) |
|
|
|
|
|
|
|
|
|
// register injected providers
|
|
|
|
|
|
|
|
|
|