UNPKG

@tevm/compiler

Version:
1 lines 22.3 kB
{"version":3,"sources":["../src/utils/invariant.js","../src/utils/resolvePromise.js","../src/compiler/compileContracts.js","../src/resolveArtifacts.js","../src/compiler/compileContractsSync.js","../src/resolveArtifactsSync.js"],"names":["Effect","resolve","solc","runPromise","moduleFactory","solcCompile","runSync"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Asserts an invariant in a typesafe way\n * @param {boolean} condition - The condition to assert\n * @param {string} message - The message to display if the condition is false\n * @throws {Error} Throws an error if the condition is false\n */\nexport function invariant(condition, message) {\n\tif (!condition) {\n\t\tthrow new Error(message)\n\t}\n}\n","import { Effect } from 'effect'\nimport resolve from 'resolve'\n\n/**\n * import resolve from 'resolve wrapped in an effect\n * @param {string} filePath\n * @param {string} basedir\n * @param {import(\"../types.js\").FileAccessObject} fao\n * @param {import(\"../types.js\").Logger} logger\n * @returns {Effect.Effect<string, Error, never>}\n */\nexport const resolveEffect = (filePath, basedir, fao, logger) => {\n\treturn Effect.async((resume) => {\n\t\tresolve(\n\t\t\tfilePath,\n\t\t\t{\n\t\t\t\tbasedir,\n\t\t\t\treadFile: (file, cb) => {\n\t\t\t\t\tfao\n\t\t\t\t\t\t.readFile(file, 'utf8')\n\t\t\t\t\t\t.then((fileContent) => {\n\t\t\t\t\t\t\tcb(null, fileContent)\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch((e) => {\n\t\t\t\t\t\t\tlogger.error(e)\n\t\t\t\t\t\t\tlogger.error('Error reading file')\n\t\t\t\t\t\t\tcb(e)\n\t\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tisFile: async (file, cb) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tcb(null, await fao.exists(file))\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tcb(/** @type Error */ (e))\n\t\t\t\t\t\tlogger.error(/** @type any */ (e))\n\t\t\t\t\t\tlogger.error(`Error checking if isFile ${file}`)\n\t\t\t\t\t\tresume(Effect.fail(/** @type Error */ (e))) // resume with a failure effect when error occurs\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t\t(err, res) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tlogger.error(/** @type any */ (err))\n\t\t\t\t\tlogger.error(`There was an error resolving ${filePath}`)\n\t\t\t\t\tresume(Effect.fail(err)) // resume with a failure effect when error occurs\n\t\t\t\t} else {\n\t\t\t\t\tresume(Effect.succeed(/** @type string */ (res))) // resume with a success effect when the operation succeeds\n\t\t\t\t}\n\t\t\t},\n\t\t)\n\t})\n}\n","import { moduleFactory } from '@tevm/resolutions'\nimport { solcCompile } from '@tevm/solc'\nimport { Effect } from 'effect'\nimport { runPromise } from 'effect/Effect'\nimport { invariant, resolveEffect } from '../utils/index.js'\n\n/**\n * Compile the Solidity contract and return its ABI.\n *\n * @template TIncludeAsts\n * @template TIncludeBytecode\n * @param {string} filePath\n * @param {string} basedir\n * @param {import('@tevm/config').ResolvedCompilerConfig} config\n * @param {TIncludeAsts} includeAst\n * @param {TIncludeBytecode} includeBytecode\n * @param {import('../types.js').FileAccessObject} fao\n * @param {import('../types.js').Logger} logger\n * @param {any} solc\n * @returns {Promise<import('../types.js').CompiledContracts<TIncludeAsts>>}\n * @example\n * const { artifacts, modules } = await compileContract(\n * './contracts/MyContract.sol',\n * __dirname,\n * config,\n * true,\n * await import('fs'),\n * logger,\n * )\n */\nexport const compileContract = async (filePath, basedir, config, includeAst, includeBytecode, fao, logger, solc) => {\n\tconst moduleMap = await runPromise(\n\t\tmoduleFactory(\n\t\t\tfilePath,\n\t\t\tawait fao\n\t\t\t\t.readFile(await Effect.runPromise(resolveEffect(filePath, basedir, fao, logger)), 'utf8')\n\t\t\t\t.then((code) => {\n\t\t\t\t\treturn code\n\t\t\t\t}),\n\t\t\tconfig.remappings,\n\t\t\tconfig.libs,\n\t\t\tfao,\n\t\t\tfalse,\n\t\t),\n\t)\n\tconst entryModule = moduleMap.get(filePath)\n\tinvariant(entryModule, 'Entry module should exist')\n\n\t/**\n\t * @type {Object.<string, import('../types.js').ModuleInfo>}\n\t */\n\tconst modules = {}\n\n\tconst stack = [entryModule]\n\twhile (stack.length !== 0) {\n\t\tconst m = stack.pop()\n\t\tinvariant(m, 'Module should exist')\n\t\tif (m.id in modules) {\n\t\t\tcontinue\n\t\t}\n\t\tmodules[m.id] = m\n\t\tconst resolutions = m.importedIds.map((id) => /** @type {import(\"../types.js\").ModuleInfo}*/ (moduleMap.get(id)))\n\t\tfor (const dep of resolutions) {\n\t\t\tstack.push(dep)\n\t\t}\n\t}\n\n\tconst sources = Object.fromEntries(\n\t\tObject.entries(modules).map(([id, module]) => {\n\t\t\treturn [\n\t\t\t\tid,\n\t\t\t\t{\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t/** @type {string} */\n\t\t\t\t\t\t(module.code),\n\t\t\t\t},\n\t\t\t]\n\t\t}),\n\t)\n\n\tconst emptyString = ''\n\t/**\n\t * @type {['evm.bytecode.object', 'evm.deployedBytecode.object']}\n\t */\n\tconst evmBytecode = ['evm.bytecode.object', 'evm.deployedBytecode.object']\n\t/**\n\t * @type {import('@tevm/solc').SolcInputDescription}\n\t */\n\tconst input = {\n\t\tlanguage: 'Solidity',\n\t\tsources,\n\t\tsettings: {\n\t\t\toutputSelection: {\n\t\t\t\t'*': {\n\t\t\t\t\t'*': ['abi', 'userdoc', ...(includeBytecode ? evmBytecode : [])],\n\t\t\t\t\t...(includeAst ? { [emptyString]: ['ast'] } : {}),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\t/**\n\t * @type {import('@tevm/solc').SolcOutput}\n\t */\n\tconst output = solcCompile(solc, input)\n\n\tconst warnings = output?.errors?.filter(({ type }) => type === 'Warning')\n\tconst isErrors = (output?.errors?.length ?? 0) > (warnings?.length ?? 0)\n\n\tif (isErrors) {\n\t\tlogger.error('Compilation errors:')\n\t\tlogger.error(/** @type {any} */ (output?.errors))\n\t\tthrow new Error('Compilation failed')\n\t}\n\tif (warnings?.length) {\n\t\tlogger.warn(/** @type {any} */ (warnings))\n\t\tlogger.warn('Compilation warnings:')\n\t}\n\n\tif (includeAst) {\n\t\tconst asts = Object.fromEntries(\n\t\t\tObject.entries(output.sources).map(([id, source]) => {\n\t\t\t\treturn [id, source.ast]\n\t\t\t}),\n\t\t)\n\t\treturn {\n\t\t\tartifacts: output.contracts[entryModule.id],\n\t\t\tmodules: /** @type {any} */ (modules),\n\t\t\tasts: /** @type {any} */ (asts),\n\t\t\tsolcInput: input,\n\t\t\tsolcOutput: output,\n\t\t}\n\t}\n\treturn {\n\t\tartifacts: output.contracts[entryModule.id],\n\t\tmodules: /** @type {any} */ (modules),\n\t\tasts: /** @type {any} */ (undefined),\n\t\tsolcInput: input,\n\t\tsolcOutput: output,\n\t}\n}\n","import { compileContract } from './compiler/compileContracts.js'\n\n/**\n * Resolves artifacts with solc asyncronously\n * @type {import('./types.js').ResolveArtifacts}\n */\nexport const resolveArtifacts = async (solFile, basedir, logger, config, includeAst, includeBytecode, fao, solc) => {\n\tif (!solFile.endsWith('.sol')) {\n\t\tthrow new Error('Not a solidity file')\n\t}\n\tconst { artifacts, modules, asts, solcInput, solcOutput } = await compileContract(\n\t\tsolFile,\n\t\tbasedir,\n\t\tconfig,\n\t\tincludeAst,\n\t\tincludeBytecode,\n\t\tfao,\n\t\tlogger,\n\t\tsolc,\n\t)\n\n\tif (!artifacts) {\n\t\tlogger.error(`Compilation failed for ${solFile}`)\n\t\tthrow new Error('Compilation failed')\n\t}\n\n\treturn {\n\t\tartifacts: Object.fromEntries(\n\t\t\tObject.entries(artifacts).map(([contractName, contract]) => {\n\t\t\t\treturn [\n\t\t\t\t\tcontractName,\n\t\t\t\t\t{\n\t\t\t\t\t\tcontractName,\n\t\t\t\t\t\tabi: contract.abi,\n\t\t\t\t\t\tuserdoc: contract.userdoc,\n\t\t\t\t\t\tevm: contract.evm,\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t}),\n\t\t),\n\t\tmodules,\n\t\tasts,\n\t\tsolcInput,\n\t\tsolcOutput,\n\t}\n}\n","import { moduleFactory } from '@tevm/resolutions'\nimport { solcCompile } from '@tevm/solc'\nimport { runSync } from 'effect/Effect'\nimport resolve from 'resolve'\nimport { invariant } from '../utils/invariant.js'\n\n/**\n * Compile the Solidity contract and return its ABI.\n *\n * @template TIncludeAsts\n * @template TIncludeBytecode\n * @param {string} filePath\n * @param {string} basedir\n * @param {import('@tevm/config').ResolvedCompilerConfig} config\n * @param {TIncludeAsts} includeAst\n * @param {TIncludeBytecode} includeBytecode\n * @param {import('../types.js').FileAccessObject} fao\n * @param {import('../types.js').Logger} logger\n * @param {any} solc\n * @returns {import('../types.js').CompiledContracts}\n * @example\n * const { artifacts, modules } = compileContractSync(\n * './contracts/MyContract.sol',\n * __dirname,\n * config,\n * true,\n * await import('fs'),\n * logger,\n * )\n */\nexport function compileContractSync(filePath, basedir, config, includeAst, includeBytecode, fao, logger, solc) {\n\tconst moduleMap = runSync(\n\t\tmoduleFactory(\n\t\t\tfilePath,\n\t\t\tfao.readFileSync(\n\t\t\t\tresolve.sync(filePath, {\n\t\t\t\t\tbasedir,\n\t\t\t\t\treadFileSync: (file) => fao.readFileSync(file, 'utf8'),\n\t\t\t\t\tisFile: fao.existsSync,\n\t\t\t\t}),\n\t\t\t\t'utf8',\n\t\t\t),\n\t\t\tconfig.remappings,\n\t\t\tconfig.libs,\n\t\t\tfao,\n\t\t\ttrue,\n\t\t),\n\t)\n\tconst entryModule = moduleMap.get(filePath)\n\tinvariant(entryModule, 'Entry module should exist')\n\n\t/** @type {Record<string, import('../types.js').ModuleInfo>} */\n\tconst modules = {}\n\n\tconst stack = [entryModule]\n\twhile (stack.length !== 0) {\n\t\tconst m = stack.pop()\n\t\tinvariant(m, 'Module should exist')\n\t\tif (m.id in modules) {\n\t\t\tcontinue\n\t\t}\n\t\tmodules[m.id] = m\n\t\tfor (const dep of m.importedIds) {\n\t\t\tstack.push(/** @type {import(\"../types.js\").ModuleInfo} */ (moduleMap.get(dep)))\n\t\t}\n\t}\n\n\tconst sources = Object.fromEntries(\n\t\tObject.entries(modules).map(([id, module]) => {\n\t\t\tconst code =\n\t\t\t\t/** @type {string} */\n\t\t\t\t(module.code)\n\t\t\treturn [id, { content: code }]\n\t\t}),\n\t)\n\n\t/**\n\t * @type {['evm.bytecode.object', 'evm.deployedBytecode.object']}\n\t */\n\tconst evmBytecode = ['evm.bytecode.object', 'evm.deployedBytecode.object']\n\t/**\n\t * @type {import('@tevm/solc').SolcInputDescription}\n\t */\n\tconst solcInput = {\n\t\tlanguage: 'Solidity',\n\t\tsources,\n\t\tsettings: {\n\t\t\toutputSelection: {\n\t\t\t\t'*': {\n\t\t\t\t\t'*': [\n\t\t\t\t\t\t'abi',\n\t\t\t\t\t\t'userdoc',\n\t\t\t\t\t\t...(includeBytecode ? evmBytecode : []),\n\t\t\t\t\t\t...(includeAst\n\t\t\t\t\t\t\t? /** @type {['evm.deployedBytecode.sourceMap', 'evm.bytecode.sourceMap', 'metadata']}*/ ([\n\t\t\t\t\t\t\t\t\t'evm.deployedBytecode.sourceMap', // Source map for deployed code\n\t\t\t\t\t\t\t\t\t'evm.bytecode.sourceMap', // Source map for creation code\n\t\t\t\t\t\t\t\t\t'metadata', // Additional metadata for debugging\n\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t: []),\n\t\t\t\t\t],\n\t\t\t\t\t...(includeAst ? { '': ['ast'] } : {}),\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\t/**\n\t * @type {import('@tevm/solc').SolcOutput}\n\t */\n\tconst solcOutput = solcCompile(solc, solcInput)\n\n\tconst warnings = solcOutput?.errors?.filter(({ type }) => type === 'Warning')\n\tconst isErrors = (solcOutput?.errors?.length ?? 0) > (warnings?.length ?? 0)\n\n\tif (isErrors) {\n\t\tlogger.error('Compilation errors:', /** @type {any}*/ (solcOutput?.errors))\n\t\tconsole.log(solcOutput.errors)\n\t\tthrow new Error('Compilation failed')\n\t}\n\tif (warnings?.length) {\n\t\tlogger.warn('Compilation warnings:', /** @type {any}*/ (solcOutput?.errors))\n\t}\n\n\tif (includeAst) {\n\t\tconst asts = Object.fromEntries(\n\t\t\tObject.entries(solcOutput.sources).map(([id, source]) => {\n\t\t\t\treturn [id, source.ast]\n\t\t\t}),\n\t\t)\n\t\treturn {\n\t\t\tartifacts: solcOutput.contracts[entryModule.id],\n\t\t\tmodules,\n\t\t\tasts,\n\t\t\tsolcInput,\n\t\t\tsolcOutput: solcOutput,\n\t\t}\n\t}\n\treturn {\n\t\tartifacts: solcOutput.contracts[entryModule.id],\n\t\tmodules,\n\t\tasts: undefined,\n\t\tsolcInput: solcInput,\n\t\tsolcOutput: solcOutput,\n\t}\n}\n","import { compileContractSync } from './compiler/compileContractsSync.js'\n\n/**\n * @type {import('./types.js').ResolveArtifactsSync}\n */\nexport const resolveArtifactsSync = (solFile, basedir, logger, config, includeAst, includeBytecode, fao, solc) => {\n\tif (!solFile.endsWith('.sol')) {\n\t\tthrow new Error('Not a solidity file')\n\t}\n\tconst { artifacts, modules, asts, solcInput, solcOutput } = compileContractSync(\n\t\tsolFile,\n\t\tbasedir,\n\t\tconfig,\n\t\tincludeAst,\n\t\tincludeBytecode,\n\t\tfao,\n\t\tlogger,\n\t\tsolc,\n\t)\n\tif (!artifacts) {\n\t\tlogger.error(`Compilation failed for ${solFile}`)\n\t\tthrow new Error('Compilation failed')\n\t}\n\n\treturn {\n\t\tartifacts: Object.fromEntries(\n\t\t\tObject.entries(artifacts).map(([contractName, contract]) => {\n\t\t\t\treturn [\n\t\t\t\t\tcontractName,\n\t\t\t\t\t{\n\t\t\t\t\t\tcontractName,\n\t\t\t\t\t\tabi: contract.abi,\n\t\t\t\t\t\tuserdoc: contract.userdoc,\n\t\t\t\t\t\tevm: contract.evm,\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t}),\n\t\t),\n\t\tmodules,\n\t\tasts,\n\t\tsolcInput,\n\t\tsolcOutput,\n\t}\n}\n"]}