diff --git a/libs/remix-solidity/src/compiler/compiler-input.ts b/libs/remix-solidity/src/compiler/compiler-input.ts index 8598c9dfd4..61c8ece472 100644 --- a/libs/remix-solidity/src/compiler/compiler-input.ts +++ b/libs/remix-solidity/src/compiler/compiler-input.ts @@ -17,7 +17,8 @@ export default (sources: Source, opts: CompilerInputOptions): string => { '': ['ast'], '*': ['abi', 'metadata', 'devdoc', 'userdoc', 'storageLayout', 'evm.legacyAssembly', 'evm.bytecode', 'evm.deployedBytecode', 'evm.methodIdentifiers', 'evm.gasEstimates', 'evm.assembly'] } - } + }, + remappings: opts.remappings || [] } } if (opts.evmVersion) { diff --git a/libs/remix-solidity/src/compiler/compiler.ts b/libs/remix-solidity/src/compiler/compiler.ts index 2e20b0c857..b2567ea4d5 100644 --- a/libs/remix-solidity/src/compiler/compiler.ts +++ b/libs/remix-solidity/src/compiler/compiler.ts @@ -32,6 +32,7 @@ export class Compiler { runs: 200, evmVersion: null, language: 'Solidity', + remappings: [], compilationStartTime: null, target: null, useFileConfiguration: false, @@ -213,12 +214,12 @@ export class Compiler { let input = "" try { if (source && source.sources) { - const { optimize, runs, evmVersion, language, useFileConfiguration, configFileContent } = this.state - + const { optimize, runs, evmVersion, language, remappings, useFileConfiguration, configFileContent } = this.state + console.log('remappings---->', remappings) if (useFileConfiguration) { input = compilerInputForConfigFile(source.sources, JSON.parse(configFileContent)) } else { - input = compilerInput(source.sources, { optimize, runs, evmVersion, language }) + input = compilerInput(source.sources, { optimize, runs, evmVersion, language, remappings }) } result = JSON.parse(remoteCompiler.compile(input, { import: missingInputsCallback })) @@ -331,7 +332,7 @@ export class Compiler { this.state.compileJSON = (source: SourceWithTarget, timeStamp: number) => { if (source && source.sources) { - const { optimize, runs, evmVersion, language, useFileConfiguration, configFileContent } = this.state + const { optimize, runs, evmVersion, language, remappings, useFileConfiguration, configFileContent } = this.state jobs.push({ sources: source }) let input = "" @@ -339,7 +340,7 @@ export class Compiler { if (useFileConfiguration) { input = compilerInputForConfigFile(source.sources, JSON.parse(configFileContent)) } else { - input = compilerInput(source.sources, { optimize, runs, evmVersion, language }) + input = compilerInput(source.sources, { optimize, runs, evmVersion, language, remappings }) } } catch (exception) { this.onCompilationFinished({ error: { formattedMessage: exception.message } }, [], source, "", this.state.currentVersion) diff --git a/libs/remix-solidity/src/compiler/types.ts b/libs/remix-solidity/src/compiler/types.ts index d86e7b0b74..6a6a74e7ce 100644 --- a/libs/remix-solidity/src/compiler/types.ts +++ b/libs/remix-solidity/src/compiler/types.ts @@ -147,7 +147,8 @@ export interface CompilerInputOptions { [fileName: string]: Record }, evmVersion?: EVMVersion, - language?: Language + language?: Language, + remappings?: string[] } export type EVMVersion = 'homestead' | 'tangerineWhistle' | 'spuriousDragon' | 'byzantium' | 'constantinople' | 'petersburg' | 'istanbul' | 'berlin' | 'london' | 'paris' | null @@ -168,6 +169,7 @@ export interface CompilerState { runs: number evmVersion: EVMVersion| null, language: Language, + remappings: string[] compilationStartTime: number| null, target: string | null, useFileConfiguration: boolean, diff --git a/libs/remix-ui/solidity-compiler/src/lib/compiler-container.tsx b/libs/remix-ui/solidity-compiler/src/lib/compiler-container.tsx index 579e1d7a40..8b464838e0 100644 --- a/libs/remix-ui/solidity-compiler/src/lib/compiler-container.tsx +++ b/libs/remix-ui/solidity-compiler/src/lib/compiler-container.tsx @@ -59,6 +59,7 @@ export const CompilerContainer = (props: CompilerContainerProps) => { compiledFileName: '', includeNightlies: false, language: 'Solidity', + remappings: [], evmVersion: '', createFileOnce: true })