UNPKG

@tevm/compiler

Version:
1 lines 22.1 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"]}