pha-deploy 0.4.0 → 0.5.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.
- package/README.md +36 -8
- package/dist/actions/createSeries.d.ts.map +1 -1
- package/dist/actions/createSeries.js +2 -1
- package/dist/actions/createSeries.js.map +1 -1
- package/dist/actions/createToken.d.ts.map +1 -1
- package/dist/actions/createToken.js +2 -1
- package/dist/actions/createToken.js.map +1 -1
- package/dist/actions/mintFungibleToken.d.ts.map +1 -1
- package/dist/actions/mintFungibleToken.js +2 -1
- package/dist/actions/mintFungibleToken.js.map +1 -1
- package/dist/actions/mintNftToken.d.ts.map +1 -1
- package/dist/actions/mintNftToken.js +2 -1
- package/dist/actions/mintNftToken.js.map +1 -1
- package/dist/cli-contract.d.ts.map +1 -1
- package/dist/cli-contract.js +51 -2
- package/dist/cli-contract.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +3 -2
- package/dist/cli.js.map +1 -1
- package/dist/contract/compiler.d.ts +2 -2
- package/dist/contract/compiler.d.ts.map +1 -1
- package/dist/contract/compiler.js +20 -3
- package/dist/contract/compiler.js.map +1 -1
- package/dist/contract/deploy.d.ts +4 -1
- package/dist/contract/deploy.d.ts.map +1 -1
- package/dist/contract/deploy.js +102 -31
- package/dist/contract/deploy.js.map +1 -1
- package/dist/rpc/txHash.d.ts +2 -0
- package/dist/rpc/txHash.d.ts.map +1 -0
- package/dist/rpc/txHash.js +34 -0
- package/dist/rpc/txHash.js.map +1 -0
- package/package.json +1 -1
package/dist/cli-contract.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-contract.js","sourceRoot":"","sources":["../src/cli-contract.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from \"node:fs/promises\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport yargs from \"yargs/yargs\";\nimport {\n CONTRACT_COMPILER_NAME,\n MIN_SUPPORTED_PHA_TOMB_VERSION,\n buildCompileArgs,\n resolveSupportedCompiler,\n runCompiler,\n selectCompiledContractArtifacts,\n type CompileProcessResult,\n type NativeCheckMode,\n} from \"./contract/compiler\";\nimport {\n loadContractArtifactsFromManifest,\n loadContractArtifactsFromPaths,\n materializeCompiledArtifacts,\n} from \"./contract/artifacts\";\nimport { executeContractTransaction, type ContractOperation } from \"./contract/deploy\";\n\nfunction printIndentedBlock(title: string, content: string): void {\n console.log(`${title}:`);\n const trimmed = content.trimEnd();\n if (!trimmed) {\n console.log(\" (empty)\");\n return;\n }\n\n for (const line of trimmed.split(/\\r?\\n/)) {\n console.log(` ${line}`);\n }\n}\n\nfunction printCompileTranscript(result: CompileProcessResult): void {\n console.log(\"Compiler command:\");\n console.log(` ${result.command} ${result.args.join(\" \")}`);\n console.log(`Compiler cwd:`);\n console.log(` ${result.cwd}`);\n printIndentedBlock(`${CONTRACT_COMPILER_NAME} stdout`, result.stdout);\n printIndentedBlock(`${CONTRACT_COMPILER_NAME} stderr`, result.stderr);\n}\n\nfunction parseOptionalInteger(value: unknown, flagName: string): number | undefined {\n if (value === undefined) {\n return undefined;\n }\n const parsed = Number(value);\n if (!Number.isSafeInteger(parsed) || parsed <= 0) {\n throw new Error(`${flagName} must be a positive integer`);\n }\n return parsed;\n}\n\nasync function handleContractCompile(argv: {\n source: string;\n out?: string;\n contractName?: string;\n protocol?: number;\n debug?: boolean;\n nativeCheck?: NativeCheckMode;\n libpath?: string[];\n}): Promise<void> {\n const compiler = await resolveSupportedCompiler(MIN_SUPPORTED_PHA_TOMB_VERSION);\n const sourcePath = path.resolve(argv.source);\n const preferredContractName = argv.contractName?.trim() || path.basename(sourcePath, path.extname(sourcePath));\n const outputDir = path.resolve(\n argv.out ?? path.join(process.cwd(), \"dist\", \"contracts\", preferredContractName),\n );\n const tempRoot = await fs.mkdtemp(path.join(os.tmpdir(), \"pha-deploy-compile-\"));\n\n try {\n const compileArgs = buildCompileArgs({\n sourcePath,\n outputRoot: tempRoot,\n libPaths: argv.libpath,\n protocol: argv.protocol,\n debug: argv.debug,\n nativeCheck: argv.nativeCheck,\n });\n const result = await runCompiler(compiler.executablePath, compileArgs, process.cwd());\n printCompileTranscript(result);\n\n if (result.exitCode !== 0) {\n throw new Error(`${CONTRACT_COMPILER_NAME} exited with code ${result.exitCode}`);\n }\n\n const compiled = selectCompiledContractArtifacts(\n path.join(tempRoot, \"Output\"),\n preferredContractName,\n );\n const materialized = materializeCompiledArtifacts({\n compiled,\n outputDir,\n compilerName: compiler.executableName,\n compilerVersion: compiler.version,\n sourceFileName: sourcePath,\n });\n\n console.log(\"Artifacts:\");\n console.log(` contract: ${materialized.bundle.contractName}`);\n console.log(` output: ${materialized.outputDir}`);\n console.log(` manifest: ${materialized.manifestPath}`);\n console.log(` script: ${materialized.scriptPath}`);\n console.log(` abi: ${materialized.abiPath}`);\n if (materialized.debugPath) {\n console.log(` debug: ${materialized.debugPath}`);\n }\n if (materialized.asmPath) {\n console.log(` asm: ${materialized.asmPath}`);\n }\n if (materialized.scriptHexPath) {\n console.log(` script hex: ${materialized.scriptHexPath}`);\n }\n if (materialized.abiHexPath) {\n console.log(` abi hex: ${materialized.abiHexPath}`);\n }\n } finally {\n await fs.rm(tempRoot, { recursive: true, force: true });\n }\n}\n\nasync function handleContractBroadcast(\n operation: ContractOperation,\n argv: {\n rpc: string;\n nexus: string;\n chain?: string;\n wif: string;\n manifest?: string;\n contractName?: string;\n script?: string;\n abi?: string;\n debug?: string;\n gasPrice?: unknown;\n gasLimit?: unknown;\n pow?: unknown;\n payloadHex?: string;\n dryRun?: boolean;\n },\n): Promise<void> {\n const artifacts = argv.manifest\n ? loadContractArtifactsFromManifest(argv.manifest)\n : loadContractArtifactsFromPaths({\n contractName: argv.contractName ?? \"\",\n scriptPath: argv.script ?? \"\",\n abiPath: argv.abi ?? \"\",\n ...(argv.debug ? { debugPath: argv.debug } : {}),\n });\n\n const result = await executeContractTransaction({\n operation,\n rpc: argv.rpc,\n nexus: argv.nexus,\n chain: argv.chain,\n wif: argv.wif,\n bundle: artifacts.bundle,\n gasPrice: parseOptionalInteger(argv.gasPrice, \"--gas-price\"),\n gasLimit: parseOptionalInteger(argv.gasLimit, \"--gas-limit\"),\n proofOfWork: parseOptionalInteger(argv.pow, \"--pow\"),\n payloadHex: argv.payloadHex,\n dryRun: argv.dryRun,\n });\n\n console.log(\"Transaction:\");\n console.log(` operation: ${result.prepared.operation}`);\n console.log(` contract: ${result.prepared.contractName}`);\n console.log(` from: ${result.prepared.fromAddress}`);\n console.log(` script bytes: ${result.prepared.scriptBytes}`);\n console.log(` abi bytes: ${result.prepared.abiBytes}`);\n console.log(` vm script: ${result.prepared.scriptHex}`);\n console.log(` signed tx: ${result.prepared.txHex}`);\n\n if (result.dryRun) {\n console.log(\"Dry-run complete: transaction was not broadcast.\");\n return;\n }\n\n console.log(` tx hash: ${result.txHash ?? \"\"}`);\n if (!result.success) {\n throw new Error(\n `${operation} transaction failed${result.txHash ? ` (txHash: ${result.txHash})` : \"\"}`,\n );\n }\n}\n\nexport async function runContractCli(rawArgv: string[]): Promise<void> {\n const parser = yargs(rawArgv)\n .scriptName(\"pha-deploy contract\")\n .command(\n \"compile\",\n \"Compile a contract through the system-installed pha-tomb\",\n (cmd) =>\n cmd\n .option(\"source\", {\n type: \"string\",\n demandOption: true,\n describe: \"Path to the .tomb source file\",\n })\n .option(\"out\", {\n type: \"string\",\n describe: \"Output directory for the final artifact bundle\",\n })\n .option(\"contract-name\", {\n type: \"string\",\n describe: \"Expected contract artifact name when the compiler emits multiple modules\",\n })\n .option(\"protocol\", {\n type: \"number\",\n describe: \"Target protocol version passed to pha-tomb\",\n })\n .option(\"debug\", {\n type: \"boolean\",\n describe: \"Request debug artifacts from pha-tomb\",\n })\n .option(\"nativecheck\", {\n type: \"string\",\n choices: [\"off\", \"warn\", \"error\"],\n describe: \"Native/foundational interop diagnostics mode\",\n })\n .option(\"libpath\", {\n type: \"string\",\n array: true,\n describe: \"Additional library search path(s) passed to pha-tomb\",\n }),\n async (argv) => {\n await handleContractCompile({\n source: argv.source,\n out: argv.out,\n contractName: argv[\"contract-name\"],\n protocol: argv.protocol,\n debug: argv.debug,\n nativeCheck: argv.nativecheck as NativeCheckMode | undefined,\n libpath: argv.libpath,\n });\n },\n )\n .command(\n \"deploy\",\n \"Deploy a compiled contract artifact bundle\",\n (cmd) =>\n cmd\n .option(\"rpc\", { type: \"string\", demandOption: true, describe: \"RPC endpoint\" })\n .option(\"nexus\", { type: \"string\", demandOption: true, describe: \"Nexus name\" })\n .option(\"chain\", { type: \"string\", default: \"main\", describe: \"Target chain\" })\n .option(\"wif\", { type: \"string\", demandOption: true, describe: \"WIF used to sign the transaction\" })\n .option(\"manifest\", { type: \"string\", describe: \"Path to manifest.json produced by contract compile\" })\n .option(\"contract-name\", { type: \"string\", describe: \"Contract name when using direct --script/--abi inputs\" })\n .option(\"script\", { type: \"string\", describe: \"Path to compiled .pvm file when not using --manifest\" })\n .option(\"abi\", { type: \"string\", describe: \"Path to compiled .abi file when not using --manifest\" })\n .option(\"debug\", { type: \"string\", describe: \"Optional path to .debug file when not using --manifest\" })\n .option(\"gas-price\", { type: \"number\", describe: \"Gas price passed to AllowGas\" })\n .option(\"gas-limit\", { type: \"number\", describe: \"Gas limit passed to AllowGas\" })\n .option(\"pow\", { type: \"number\", describe: \"Proof-of-work difficulty for the legacy VM transaction\" })\n .option(\"payload-hex\", { type: \"string\", describe: \"Optional transaction payload as raw hex\" })\n .option(\"dry-run\", { type: \"boolean\", describe: \"Build and sign the transaction without broadcasting\" }),\n async (argv) => {\n await handleContractBroadcast(\"deploy\", {\n rpc: argv.rpc,\n nexus: argv.nexus,\n chain: argv.chain,\n wif: argv.wif,\n manifest: argv.manifest,\n contractName: argv[\"contract-name\"],\n script: argv.script,\n abi: argv.abi,\n debug: argv.debug,\n gasPrice: argv[\"gas-price\"],\n gasLimit: argv[\"gas-limit\"],\n pow: argv.pow,\n payloadHex: argv[\"payload-hex\"],\n dryRun: argv[\"dry-run\"],\n });\n },\n )\n .command(\n \"upgrade\",\n \"Upgrade an already deployed contract artifact bundle\",\n (cmd) =>\n cmd\n .option(\"rpc\", { type: \"string\", demandOption: true, describe: \"RPC endpoint\" })\n .option(\"nexus\", { type: \"string\", demandOption: true, describe: \"Nexus name\" })\n .option(\"chain\", { type: \"string\", default: \"main\", describe: \"Target chain\" })\n .option(\"wif\", { type: \"string\", demandOption: true, describe: \"WIF used to sign the transaction\" })\n .option(\"manifest\", { type: \"string\", describe: \"Path to manifest.json produced by contract compile\" })\n .option(\"contract-name\", { type: \"string\", describe: \"Contract name when using direct --script/--abi inputs\" })\n .option(\"script\", { type: \"string\", describe: \"Path to compiled .pvm file when not using --manifest\" })\n .option(\"abi\", { type: \"string\", describe: \"Path to compiled .abi file when not using --manifest\" })\n .option(\"debug\", { type: \"string\", describe: \"Optional path to .debug file when not using --manifest\" })\n .option(\"gas-price\", { type: \"number\", describe: \"Gas price passed to AllowGas\" })\n .option(\"gas-limit\", { type: \"number\", describe: \"Gas limit passed to AllowGas\" })\n .option(\"pow\", { type: \"number\", describe: \"Proof-of-work difficulty for the legacy VM transaction\" })\n .option(\"payload-hex\", { type: \"string\", describe: \"Optional transaction payload as raw hex\" })\n .option(\"dry-run\", { type: \"boolean\", describe: \"Build and sign the transaction without broadcasting\" }),\n async (argv) => {\n await handleContractBroadcast(\"upgrade\", {\n rpc: argv.rpc,\n nexus: argv.nexus,\n chain: argv.chain,\n wif: argv.wif,\n manifest: argv.manifest,\n contractName: argv[\"contract-name\"],\n script: argv.script,\n abi: argv.abi,\n debug: argv.debug,\n gasPrice: argv[\"gas-price\"],\n gasLimit: argv[\"gas-limit\"],\n pow: argv.pow,\n payloadHex: argv[\"payload-hex\"],\n dryRun: argv[\"dry-run\"],\n });\n },\n )\n .demandCommand(1)\n .strict()\n .help();\n\n await parser.parseAsync();\n}\n"]}
|
|
1
|
+
{"version":3,"file":"cli-contract.js","sourceRoot":"","sources":["../src/cli-contract.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from \"node:fs/promises\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport yargs from \"yargs/yargs\";\nimport {\n CONTRACT_COMPILER_NAME,\n MIN_SUPPORTED_PHA_TOMB_VERSION,\n buildCompileArgs,\n resolveSupportedCompiler,\n runCompiler,\n selectCompiledContractArtifacts,\n type CompileProcessResult,\n type NativeCheckMode,\n} from \"./contract/compiler\";\nimport {\n loadContractArtifactsFromManifest,\n loadContractArtifactsFromPaths,\n materializeCompiledArtifacts,\n} from \"./contract/artifacts\";\nimport { executeContractTransaction, type ContractOperation } from \"./contract/deploy\";\n\nfunction printIndentedBlock(title: string, content: string): void {\n console.log(`${title}:`);\n const trimmed = content.trimEnd();\n if (!trimmed) {\n console.log(\" (empty)\");\n return;\n }\n\n for (const line of trimmed.split(/\\r?\\n/)) {\n console.log(` ${line}`);\n }\n}\n\nfunction printCompileTranscript(result: CompileProcessResult): void {\n console.log(\"Compiler command:\");\n console.log(` ${result.command} ${result.args.join(\" \")}`);\n console.log(`Compiler cwd:`);\n console.log(` ${result.cwd}`);\n printIndentedBlock(`${CONTRACT_COMPILER_NAME} stdout`, result.stdout);\n printIndentedBlock(`${CONTRACT_COMPILER_NAME} stderr`, result.stderr);\n}\n\nfunction parseOptionalInteger(value: unknown, flagName: string): number | undefined {\n if (value === undefined) {\n return undefined;\n }\n const parsed = Number(value);\n if (!Number.isSafeInteger(parsed) || parsed <= 0) {\n throw new Error(`${flagName} must be a positive integer`);\n }\n return parsed;\n}\n\nasync function handleContractCompile(argv: {\n source: string;\n out?: string;\n contractName?: string;\n compiler?: string;\n protocol?: number;\n debug?: boolean;\n nativeCheck?: NativeCheckMode;\n libpath?: string[];\n}): Promise<void> {\n const compiler = await resolveSupportedCompiler(\n MIN_SUPPORTED_PHA_TOMB_VERSION,\n process.env.PATH ?? \"\",\n argv.compiler ?? process.env.PHA_TOMB_PATH,\n );\n const sourcePath = path.resolve(argv.source);\n const preferredContractName = argv.contractName?.trim() || path.basename(sourcePath, path.extname(sourcePath));\n const outputDir = path.resolve(\n argv.out ?? path.join(process.cwd(), \"dist\", \"contracts\", preferredContractName),\n );\n const tempRoot = await fs.mkdtemp(path.join(os.tmpdir(), \"pha-deploy-compile-\"));\n\n try {\n const compileArgs = buildCompileArgs({\n sourcePath,\n outputRoot: tempRoot,\n libPaths: argv.libpath,\n protocol: argv.protocol,\n debug: argv.debug,\n nativeCheck: argv.nativeCheck,\n });\n const result = await runCompiler(compiler.executablePath, compileArgs, process.cwd());\n printCompileTranscript(result);\n\n if (result.exitCode !== 0) {\n throw new Error(`${CONTRACT_COMPILER_NAME} exited with code ${result.exitCode}`);\n }\n\n const compiled = selectCompiledContractArtifacts(\n path.join(tempRoot, \"Output\"),\n preferredContractName,\n );\n const materialized = materializeCompiledArtifacts({\n compiled,\n outputDir,\n compilerName: compiler.executableName,\n compilerVersion: compiler.version,\n sourceFileName: sourcePath,\n });\n\n console.log(\"Artifacts:\");\n console.log(` contract: ${materialized.bundle.contractName}`);\n console.log(` output: ${materialized.outputDir}`);\n console.log(` manifest: ${materialized.manifestPath}`);\n console.log(` script: ${materialized.scriptPath}`);\n console.log(` abi: ${materialized.abiPath}`);\n if (materialized.debugPath) {\n console.log(` debug: ${materialized.debugPath}`);\n }\n if (materialized.asmPath) {\n console.log(` asm: ${materialized.asmPath}`);\n }\n if (materialized.scriptHexPath) {\n console.log(` script hex: ${materialized.scriptHexPath}`);\n }\n if (materialized.abiHexPath) {\n console.log(` abi hex: ${materialized.abiHexPath}`);\n }\n } finally {\n await fs.rm(tempRoot, { recursive: true, force: true });\n }\n}\n\nasync function handleContractBroadcast(\n operation: ContractOperation,\n argv: {\n rpc: string;\n nexus: string;\n chain?: string;\n wif: string;\n symbol?: string;\n manifest?: string;\n contractName?: string;\n script?: string;\n abi?: string;\n debug?: string;\n gasPrice?: unknown;\n gasLimit?: unknown;\n pow?: unknown;\n payloadHex?: string;\n dryRun?: boolean;\n },\n): Promise<void> {\n const artifacts = argv.manifest\n ? loadContractArtifactsFromManifest(argv.manifest)\n : loadContractArtifactsFromPaths({\n contractName: argv.contractName ?? \"\",\n scriptPath: argv.script ?? \"\",\n abiPath: argv.abi ?? \"\",\n ...(argv.debug ? { debugPath: argv.debug } : {}),\n });\n\n const result = await executeContractTransaction({\n operation,\n rpc: argv.rpc,\n nexus: argv.nexus,\n chain: argv.chain,\n wif: argv.wif,\n bundle: artifacts.bundle,\n gasPrice: parseOptionalInteger(argv.gasPrice, \"--gas-price\"),\n gasLimit: parseOptionalInteger(argv.gasLimit, \"--gas-limit\"),\n proofOfWork: parseOptionalInteger(argv.pow, \"--pow\"),\n payloadHex: argv.payloadHex,\n dryRun: argv.dryRun,\n attachSymbol: argv.symbol,\n });\n\n console.log(\"Transaction:\");\n console.log(` operation: ${result.prepared.operation}`);\n console.log(` contract: ${result.prepared.contractName}`);\n if (result.prepared.attachSymbol) {\n console.log(` symbol: ${result.prepared.attachSymbol}`);\n }\n console.log(` from: ${result.prepared.fromAddress}`);\n console.log(` script bytes: ${result.prepared.scriptBytes}`);\n console.log(` abi bytes: ${result.prepared.abiBytes}`);\n console.log(` vm script: ${result.prepared.scriptHex}`);\n console.log(` signed tx: ${result.prepared.txHex}`);\n\n if (result.dryRun) {\n console.log(\"Dry-run complete: transaction was not broadcast.\");\n return;\n }\n\n console.log(` tx hash: ${result.txHash ?? \"\"}`);\n if (result.broadcastError) {\n throw new Error(result.broadcastError);\n }\n if (!result.success) {\n throw new Error(\n `${operation} transaction failed${result.txHash ? ` (txHash: ${result.txHash})` : \"\"}`,\n );\n }\n}\n\nexport async function runContractCli(rawArgv: string[]): Promise<void> {\n const parser = yargs(rawArgv)\n .scriptName(\"pha-deploy contract\")\n .command(\n \"compile\",\n \"Compile a contract through pha-tomb from PATH or an explicit override\",\n (cmd) =>\n cmd\n .option(\"source\", {\n type: \"string\",\n demandOption: true,\n describe: \"Path to the .tomb source file\",\n })\n .option(\"compiler\", {\n type: \"string\",\n describe: \"Explicit pha-tomb executable path (overrides PHA_TOMB_PATH and PATH)\",\n })\n .option(\"out\", {\n type: \"string\",\n describe: \"Output directory for the final artifact bundle\",\n })\n .option(\"contract-name\", {\n type: \"string\",\n describe: \"Expected contract artifact name when the compiler emits multiple modules\",\n })\n .option(\"protocol\", {\n type: \"number\",\n describe: \"Target protocol version passed to pha-tomb\",\n })\n .option(\"debug\", {\n type: \"boolean\",\n describe: \"Request debug artifacts from pha-tomb\",\n })\n .option(\"nativecheck\", {\n type: \"string\",\n choices: [\"off\", \"warn\", \"error\"],\n describe: \"Native/foundational interop diagnostics mode\",\n })\n .option(\"libpath\", {\n type: \"string\",\n array: true,\n describe: \"Additional library search path(s) passed to pha-tomb\",\n }),\n async (argv) => {\n await handleContractCompile({\n source: argv.source,\n out: argv.out,\n contractName: argv[\"contract-name\"],\n compiler: argv.compiler,\n protocol: argv.protocol,\n debug: argv.debug,\n nativeCheck: argv.nativecheck as NativeCheckMode | undefined,\n libpath: argv.libpath,\n });\n },\n )\n .command(\n \"deploy\",\n \"Deploy a compiled contract artifact bundle\",\n (cmd) =>\n cmd\n .option(\"rpc\", { type: \"string\", demandOption: true, describe: \"RPC endpoint\" })\n .option(\"nexus\", { type: \"string\", demandOption: true, describe: \"Nexus name\" })\n .option(\"chain\", { type: \"string\", default: \"main\", describe: \"Target chain\" })\n .option(\"wif\", { type: \"string\", demandOption: true, describe: \"WIF used to sign the transaction\" })\n .option(\"manifest\", { type: \"string\", describe: \"Path to manifest.json produced by contract compile\" })\n .option(\"contract-name\", { type: \"string\", describe: \"Contract name when using direct --script/--abi inputs\" })\n .option(\"script\", { type: \"string\", describe: \"Path to compiled .pvm file when not using --manifest\" })\n .option(\"abi\", { type: \"string\", describe: \"Path to compiled .abi file when not using --manifest\" })\n .option(\"debug\", { type: \"string\", describe: \"Optional path to .debug file when not using --manifest\" })\n .option(\"gas-price\", { type: \"number\", describe: \"Gas price passed to AllowGas\" })\n .option(\"gas-limit\", { type: \"number\", describe: \"Gas limit passed to AllowGas\" })\n .option(\"pow\", { type: \"number\", describe: \"Proof-of-work difficulty for the legacy VM transaction\" })\n .option(\"payload-hex\", { type: \"string\", describe: \"Optional transaction payload as raw hex\" })\n .option(\"dry-run\", { type: \"boolean\", describe: \"Build and sign the transaction without broadcasting\" }),\n async (argv) => {\n await handleContractBroadcast(\"deploy\", {\n rpc: argv.rpc,\n nexus: argv.nexus,\n chain: argv.chain,\n wif: argv.wif,\n manifest: argv.manifest,\n contractName: argv[\"contract-name\"],\n script: argv.script,\n abi: argv.abi,\n debug: argv.debug,\n gasPrice: argv[\"gas-price\"],\n gasLimit: argv[\"gas-limit\"],\n pow: argv.pow,\n payloadHex: argv[\"payload-hex\"],\n dryRun: argv[\"dry-run\"],\n });\n },\n )\n .command(\n \"upgrade\",\n \"Upgrade an already deployed contract artifact bundle\",\n (cmd) =>\n cmd\n .option(\"rpc\", { type: \"string\", demandOption: true, describe: \"RPC endpoint\" })\n .option(\"nexus\", { type: \"string\", demandOption: true, describe: \"Nexus name\" })\n .option(\"chain\", { type: \"string\", default: \"main\", describe: \"Target chain\" })\n .option(\"wif\", { type: \"string\", demandOption: true, describe: \"WIF used to sign the transaction\" })\n .option(\"manifest\", { type: \"string\", describe: \"Path to manifest.json produced by contract compile\" })\n .option(\"contract-name\", { type: \"string\", describe: \"Contract name when using direct --script/--abi inputs\" })\n .option(\"script\", { type: \"string\", describe: \"Path to compiled .pvm file when not using --manifest\" })\n .option(\"abi\", { type: \"string\", describe: \"Path to compiled .abi file when not using --manifest\" })\n .option(\"debug\", { type: \"string\", describe: \"Optional path to .debug file when not using --manifest\" })\n .option(\"gas-price\", { type: \"number\", describe: \"Gas price passed to AllowGas\" })\n .option(\"gas-limit\", { type: \"number\", describe: \"Gas limit passed to AllowGas\" })\n .option(\"pow\", { type: \"number\", describe: \"Proof-of-work difficulty for the legacy VM transaction\" })\n .option(\"payload-hex\", { type: \"string\", describe: \"Optional transaction payload as raw hex\" })\n .option(\"dry-run\", { type: \"boolean\", describe: \"Build and sign the transaction without broadcasting\" }),\n async (argv) => {\n await handleContractBroadcast(\"upgrade\", {\n rpc: argv.rpc,\n nexus: argv.nexus,\n chain: argv.chain,\n wif: argv.wif,\n manifest: argv.manifest,\n contractName: argv[\"contract-name\"],\n script: argv.script,\n abi: argv.abi,\n debug: argv.debug,\n gasPrice: argv[\"gas-price\"],\n gasLimit: argv[\"gas-limit\"],\n pow: argv.pow,\n payloadHex: argv[\"payload-hex\"],\n dryRun: argv[\"dry-run\"],\n });\n },\n )\n .command(\n \"attach\",\n \"Attach a compiled contract bundle to an existing token symbol\",\n (cmd) =>\n cmd\n .option(\"rpc\", { type: \"string\", demandOption: true, describe: \"RPC endpoint\" })\n .option(\"nexus\", { type: \"string\", demandOption: true, describe: \"Nexus name\" })\n .option(\"chain\", { type: \"string\", default: \"main\", describe: \"Target chain\" })\n .option(\"wif\", { type: \"string\", demandOption: true, describe: \"WIF used to sign the transaction\" })\n .option(\"symbol\", {\n type: \"string\",\n describe: \"Existing token symbol to attach to (defaults to the bundle contract name)\",\n })\n .option(\"manifest\", { type: \"string\", describe: \"Path to manifest.json produced by contract compile\" })\n .option(\"contract-name\", { type: \"string\", describe: \"Contract name when using direct --script/--abi inputs\" })\n .option(\"script\", { type: \"string\", describe: \"Path to compiled .pvm file when not using --manifest\" })\n .option(\"abi\", { type: \"string\", describe: \"Path to compiled .abi file when not using --manifest\" })\n .option(\"debug\", { type: \"string\", describe: \"Optional path to .debug file when not using --manifest\" })\n .option(\"gas-price\", { type: \"number\", describe: \"Gas price passed to AllowGas\" })\n .option(\"gas-limit\", { type: \"number\", describe: \"Gas limit passed to AllowGas\" })\n .option(\"pow\", { type: \"number\", describe: \"Proof-of-work difficulty for the legacy VM transaction\" })\n .option(\"payload-hex\", { type: \"string\", describe: \"Optional transaction payload as raw hex\" })\n .option(\"dry-run\", { type: \"boolean\", describe: \"Build and sign the transaction without broadcasting\" }),\n async (argv) => {\n await handleContractBroadcast(\"attach\", {\n rpc: argv.rpc,\n nexus: argv.nexus,\n chain: argv.chain,\n wif: argv.wif,\n symbol: argv.symbol,\n manifest: argv.manifest,\n contractName: argv[\"contract-name\"],\n script: argv.script,\n abi: argv.abi,\n debug: argv.debug,\n gasPrice: argv[\"gas-price\"],\n gasLimit: argv[\"gas-limit\"],\n pow: argv.pow,\n payloadHex: argv[\"payload-hex\"],\n dryRun: argv[\"dry-run\"],\n });\n },\n )\n .demandCommand(1)\n .strict()\n .help();\n\n await parser.parseAsync();\n}\n"]}
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAsPA,iBAAe,IAAI,kBA+JlB;AAcD,eAAe,IAAI,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -30,16 +30,17 @@ const version_1 = require("./version");
|
|
|
30
30
|
*/
|
|
31
31
|
function printHelp() {
|
|
32
32
|
const text = `Usage:
|
|
33
|
-
pha-deploy contract <compile|deploy|upgrade> [options]
|
|
33
|
+
pha-deploy contract <compile|deploy|upgrade|attach> [options]
|
|
34
34
|
pha-deploy --create-token [options]
|
|
35
35
|
pha-deploy --create-series [options]
|
|
36
36
|
pha-deploy --mint-fungible [options]
|
|
37
37
|
pha-deploy --mint-nft [options]
|
|
38
38
|
|
|
39
39
|
Actions:
|
|
40
|
-
contract compile Compile a contract through
|
|
40
|
+
contract compile Compile a contract through pha-tomb from PATH or an explicit override
|
|
41
41
|
contract deploy Deploy a compiled contract bundle
|
|
42
42
|
contract upgrade Upgrade a compiled contract bundle
|
|
43
|
+
contract attach Attach a compiled contract bundle to an existing token
|
|
43
44
|
--create-token Create a token
|
|
44
45
|
--create-series Create a token series
|
|
45
46
|
--mint-fungible Mint fungible tokens
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\nimport { hideBin } from \"yargs/helpers\";\nimport yargs from \"yargs\";\nimport loadConfig, { Config, TokenType } from \"./config\";\nimport { inspect } from \"node:util\";\nimport { createToken, createTokenCfg } from \"./actions/createToken\";\nimport { createSeries, createSeriesCfg } from \"./actions/createSeries\";\nimport { mintFungibleToken, mintFungibleTokenCfg } from \"./actions/mintFungibleToken\";\nimport { mintNftToken, mintNftTokenCfg } from \"./actions/mintNftToken\";\nimport { PhantasmaKeys, setLogger } from \"phantasma-sdk-ts\";\nimport { runContractCli } from \"./cli-contract\";\nimport { buildVersionReport, renderVersionReport } from \"./version\";\n\n/**\n * CLI for pha-deploy.\n *\n * Modes:\n * - CLI one-shot: use flags to perform actions immediately\n * - TOML-driven: use `--config` or default `config.toml` for config values\n *\n * Actions:\n * - create-token\n * - create-series\n * - mint-fungible\n * - mint-nft\n */\n\nfunction printHelp(): void {\n const text = `Usage:\n pha-deploy contract <compile|deploy|upgrade> [options]\n pha-deploy --create-token [options]\n pha-deploy --create-series [options]\n pha-deploy --mint-fungible [options]\n pha-deploy --mint-nft [options]\n\nActions:\n contract compile Compile a contract through the system-installed pha-tomb\n contract deploy Deploy a compiled contract bundle\n contract upgrade Upgrade a compiled contract bundle\n --create-token Create a token\n --create-series Create a token series\n --mint-fungible Mint fungible tokens\n --mint-nft Mint tokens\n\nCommon flags:\n --config <path> Path to TOML config file (default: config.toml)\n --dry-run Do not broadcast transactions; just show payloads\n --rpc-log Enable SDK JSON-RPC logging (full response payloads)\n --settings-log Print resolved configuration before executing an action\n --help Show this help\n --version Show version number\n\nOverrides (replace values from config.toml when provided):\n --rpc <url> RPC endpoint (fallback: https://testnet.phantasma.info/rpc)\n --nexus <name> Chain nexus (example: mainnet or testnet)\n --wif <wif> WIF for signing\n --symbol <symbol> Token symbol\n --token-type <nft|fungible> Token type to create (default: nft)\n --token-max-supply <int> Non-negative integer; required when token-type=fungible\n --fungible-max-supply <int> Alias for --token-max-supply\n --fungible-decimals <0..255> Decimal places; required when token-type=fungible\n --carbon-token-id <int> Existing carbon token ID (for series or mint)\n --phantasma-series-id <int> Existing Phantasma series ID (required for deterministic mint)\n --mint-fungible-to <address> Recipient address for fungible mint (default: WIF owner)\n --mint-fungible-amount <int> Amount to mint (integer atomic units)\n --rom <hex> Token ROM hex (optional; for token creation)\n --token-schemas <json> JSON string with schemas (seriesMetadata, rom, ram)\n --token-metadata <json> JSON string of token metadata fields\n --series-metadata <json> JSON object or array of series metadata fields\n --nft-metadata <json> JSON object or array of NFT metadata fields\n --create-token-max-data <int> Max data for create-token tx\n --create-token-series-max-data <int> Max data for create-series tx\n --mint-token-max-data <int> Max data for mint-nft tx\n --gas-fee-base <int> Gas fee base\n --gas-fee-create-token-base <int> Gas fee base for create-token\n --gas-fee-create-token-symbol <int> Gas fee per symbol\n --gas-fee-create-token-series <int> Gas fee for create-series\n --gas-fee-multiplier <int> Gas fee multiplier\n\npha-deploy - Phantasma token deployment and minting CLI\n`;\n console.log(text);\n}\n\nfunction requireArg<T>(\n value: T,\n name: string,\n): asserts value is NonNullable<T> {\n if (value === undefined || value === null) {\n throw new Error(`${name} is required`);\n }\n}\n\n/* ----------------------------- Actions ----------------------------- */\nasync function actionCreateToken(\n cfg: Config,\n dryRun: boolean,\n logSettings: boolean,\n) {\n requireArg(cfg.rpc, \"rpc\");\n requireArg(cfg.nexus, \"nexus\");\n requireArg(cfg.wif, \"wif\");\n requireArg(cfg.symbol, \"symbol\");\n requireArg(cfg.gasFeeBase, \"gas_fee_base\");\n requireArg(cfg.gasFeeCreateTokenBase, \"gas_fee_create_token_base\");\n requireArg(cfg.gasFeeCreateTokenSymbol, \"gas_fee_create_token_symbol\");\n requireArg(cfg.gasFeeMultiplier, \"gas_fee_multiplier\");\n requireArg(cfg.createTokenMaxData, \"create_token_max_data\");\n\n const tokenType: TokenType =\n (cfg.tokenType ?? \"nft\") === \"fungible\" ? \"fungible\" : \"nft\";\n\n if (tokenType === \"fungible\") {\n requireArg(cfg.tokenMaxSupply, \"token_max_supply\");\n requireArg(cfg.fungibleDecimals, \"fungible_decimals\");\n } else {\n requireArg(cfg.tokenSchemas, \"token_schemas\");\n }\n\n await createToken(\n new createTokenCfg(\n cfg.rpc,\n cfg.nexus,\n cfg.wif,\n cfg.symbol,\n cfg.gasFeeBase,\n cfg.gasFeeCreateTokenBase,\n cfg.gasFeeCreateTokenSymbol,\n cfg.gasFeeMultiplier,\n cfg.createTokenMaxData,\n cfg.tokenSchemas,\n cfg.tokenMetadata,\n tokenType,\n cfg.tokenMaxSupply,\n cfg.fungibleDecimals,\n ),\n dryRun,\n logSettings,\n );\n}\n\nasync function actionCreateSeries(\n cfg: Config,\n dryRun: boolean,\n logSettings: boolean,\n) {\n requireArg(cfg.rpc, \"rpc\");\n requireArg(cfg.nexus, \"nexus\");\n requireArg(cfg.wif, \"wif\");\n requireArg(cfg.carbonTokenId, \"carbon_token_id\");\n requireArg(cfg.tokenSchemas, \"token_schemas\");\n requireArg(cfg.seriesMetadata, \"series_metadata\");\n requireArg(cfg.gasFeeBase, \"gas_fee_base\");\n requireArg(cfg.gasFeeCreateTokenSeries, \"gas_fee_create_token_series\");\n requireArg(cfg.gasFeeMultiplier, \"gas_fee_multiplier\");\n requireArg(cfg.createTokenSeriesMaxData, \"create_token_series_max_data\");\n\n await createSeries(\n new createSeriesCfg(\n cfg.rpc,\n cfg.nexus,\n cfg.wif,\n cfg.carbonTokenId,\n cfg.gasFeeBase,\n cfg.gasFeeCreateTokenSeries,\n cfg.gasFeeMultiplier,\n cfg.createTokenSeriesMaxData,\n cfg.tokenSchemas?.seriesMetadata,\n cfg.seriesMetadata\n ),\n dryRun,\n logSettings,\n );\n}\n\nasync function actionMintNft(\n cfg: Config,\n dryRun: boolean,\n logSettings: boolean,\n) {\n requireArg(cfg.rpc, \"rpc\");\n requireArg(cfg.nexus, \"nexus\");\n requireArg(cfg.wif, \"wif\");\n requireArg(cfg.carbonTokenId, \"carbon_token_id\");\n requireArg(cfg.phantasmaSeriesId, \"phantasma_series_id\");\n requireArg(cfg.tokenSchemas, \"token_schemas\");\n requireArg(cfg.nftMetadata, \"nft_metadata\");\n requireArg(cfg.gasFeeBase, \"gas_fee_base\");\n requireArg(cfg.gasFeeMultiplier, \"gas_fee_multiplier\");\n requireArg(cfg.mintTokenMaxData, \"mint_token_max_data\");\n\n await mintNftToken(\n new mintNftTokenCfg(\n cfg.rpc,\n cfg.nexus,\n cfg.wif,\n cfg.carbonTokenId,\n cfg.phantasmaSeriesId,\n cfg.tokenSchemas.rom,\n cfg.nftMetadata,\n cfg.gasFeeBase,\n cfg.gasFeeMultiplier,\n cfg.mintTokenMaxData,\n ),\n dryRun,\n logSettings,\n );\n}\n\nasync function actionMintFungible(\n cfg: Config,\n dryRun: boolean,\n logSettings: boolean,\n) {\n requireArg(cfg.rpc, \"rpc\");\n requireArg(cfg.nexus, \"nexus\");\n requireArg(cfg.wif, \"wif\");\n requireArg(cfg.carbonTokenId, \"carbon_token_id\");\n requireArg(cfg.mintFungibleAmount, \"mint_fungible_amount\");\n requireArg(cfg.gasFeeBase, \"gas_fee_base\");\n requireArg(cfg.gasFeeMultiplier, \"gas_fee_multiplier\");\n requireArg(cfg.mintTokenMaxData, \"mint_token_max_data\");\n\n const to =\n cfg.mintFungibleTo ?? PhantasmaKeys.fromWIF(cfg.wif).Address.toString();\n\n await mintFungibleToken(\n new mintFungibleTokenCfg(\n cfg.rpc,\n cfg.nexus,\n cfg.wif,\n cfg.carbonTokenId,\n to,\n cfg.mintFungibleAmount,\n cfg.gasFeeBase,\n cfg.gasFeeMultiplier,\n cfg.mintTokenMaxData,\n ),\n dryRun,\n logSettings,\n );\n}\n\n/* ------------------------------- Main ------------------------------- */\n\nasync function main() {\n const rawArgv = hideBin(process.argv);\n\n if (rawArgv.length === 1 && (rawArgv[0] === \"--version\" || rawArgv[0] === \"-v\")) {\n console.log(renderVersionReport(await buildVersionReport()));\n return;\n }\n\n if (rawArgv[0] === \"contract\") {\n await runContractCli(rawArgv.slice(1));\n return;\n }\n\n // Pre-parse --config and --help early so the TOML file can be loaded before the main yargs parsing.\n const pre = yargs(rawArgv)\n .option(\"config\", {\n type: \"string\",\n alias: \"c\",\n description: \"Path to TOML config file (default: config.toml)\",\n })\n .option(\"help\", {\n type: \"boolean\",\n })\n .alias(\"h\", \"help\")\n .help(false)\n .version(false)\n .parseSync();\n\n if ((pre as any).help) {\n printHelp();\n return;\n }\n\n // Minimal yargs parsing for the top-level CLI behavior\n const parser = yargs(rawArgv)\n .scriptName(\"pha-deploy\")\n .usage(\"Usage: $0 [options] [--create-token|--create-series|--mint-fungible|--mint-nft]\")\n .option(\"rpc\", { type: \"string\", describe: \"RPC endpoint\" })\n .option(\"nexus\", { type: \"string\", describe: \"Chain nexus\" })\n .option(\"wif\", { type: \"string\", describe: \"WIF for signing\" })\n .option(\"symbol\", { type: \"string\", describe: \"Token symbol\" })\n .option(\"token-type\", {\n type: \"string\",\n choices: [\"nft\", \"fungible\"],\n describe: \"Token type to create (default: nft)\",\n })\n .option(\"token-max-supply\", {\n type: \"string\",\n describe:\n \"Token max supply (optional for NFT; required when --token-type fungible)\",\n })\n .option(\"fungible-decimals\", {\n type: \"number\",\n describe:\n \"Decimal places for fungible token (required when --token-type fungible)\",\n })\n .option(\"dry-run\", {\n type: \"boolean\",\n describe: \"Do not broadcast transactions; just show payloads\",\n })\n .option(\"rpc-log\", {\n type: \"boolean\",\n describe:\n \"Enable SDK RPC logging (prints full JSON-RPC responses for debugging)\",\n })\n .option(\"settings-log\", {\n type: \"boolean\",\n describe: \"Print resolved configuration before executing an action\",\n })\n .option(\"help\", {\n type: \"boolean\",\n describe: \"Show help\",\n })\n .alias(\"h\", \"help\")\n .option(\"config\", {\n type: \"string\",\n describe:\n \"Path to TOML config file (default: config.toml). Takes precedence as the file used for defaults.\",\n })\n .option(\"create-token\", { type: \"boolean\", describe: \"Create a token\" })\n .option(\"create-series\", {\n type: \"boolean\",\n describe: \"Create a token series\",\n })\n .option(\"mint-fungible\", { type: \"boolean\", describe: \"Mint fungible tokens\" })\n .option(\"mint-nft\", { type: \"boolean\", describe: \"Mint tokens\" })\n .option(\"mint-fungible-to\", {\n type: \"string\",\n describe: \"Recipient address for fungible mint (default: WIF owner)\",\n })\n .option(\"mint-fungible-amount\", {\n type: \"string\",\n describe: \"Amount to mint (integer atomic units)\",\n })\n .version(false)\n .epilog(\"pha-deploy - Phantasma token deployment and minting CLI\");\n\n const argv = await parser.parseAsync();\n if ((argv as any).help) {\n printHelp();\n return;\n }\n\n // Load TOML configuration (if present) before doing full parsing\n const cfg = loadConfig({ configPath: pre.config ?? null });\n\n const rpcLogEnabled = Boolean((argv as any)[\"rpc-log\"]);\n const settingsLogEnabled = Boolean((argv as any)[\"settings-log\"]);\n if (rpcLogEnabled) {\n // SDK logs JSON-RPC responses as raw objects; inspect avoids [Object] output.\n setLogger({\n log: (...args: unknown[]) => {\n const formatted = args.map((arg) =>\n typeof arg === \"string\"\n ? arg\n : inspect(arg, { depth: null, colors: false }),\n );\n console.log(...formatted);\n },\n });\n } else {\n // Enforce silent SDK logs unless explicitly enabled.\n setLogger();\n }\n\n // Determine dry-run (CLI flag overrides config)\n const dryRun = Boolean((argv as any)[\"dry-run\"]) || cfg.dryRun || false;\n\n // One-shot actions: pick the first matching action\n const actions = [\"create-token\", \"create-series\", \"mint-fungible\", \"mint-nft\"];\n let foundAction = false;\n for (const action of actions) {\n if ((argv as any)[action]) {\n foundAction = true;\n switch (action) {\n case \"create-token\": {\n await actionCreateToken(cfg, dryRun, settingsLogEnabled);\n return;\n }\n case \"create-series\": {\n await actionCreateSeries(cfg, dryRun, settingsLogEnabled);\n return;\n }\n case \"mint-fungible\": {\n await actionMintFungible(cfg, dryRun, settingsLogEnabled);\n return;\n }\n case \"mint-nft\": {\n await actionMintNft(cfg, dryRun, settingsLogEnabled);\n return;\n }\n }\n }\n }\n\n // No action requested -> show help\n if (!foundAction) {\n printHelp();\n }\n}\n\n/* ----------------------------- Run Script ---------------------------- */\n\nif (require.main === module) {\n main().catch((err) => {\n console.error(\n \"Unhandled error in CLI:\",\n err && err.stack ? err.stack : err,\n );\n process.exit(2);\n });\n}\n\nexport default main;\n"]}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\nimport { hideBin } from \"yargs/helpers\";\nimport yargs from \"yargs\";\nimport loadConfig, { Config, TokenType } from \"./config\";\nimport { inspect } from \"node:util\";\nimport { createToken, createTokenCfg } from \"./actions/createToken\";\nimport { createSeries, createSeriesCfg } from \"./actions/createSeries\";\nimport { mintFungibleToken, mintFungibleTokenCfg } from \"./actions/mintFungibleToken\";\nimport { mintNftToken, mintNftTokenCfg } from \"./actions/mintNftToken\";\nimport { PhantasmaKeys, setLogger } from \"phantasma-sdk-ts\";\nimport { runContractCli } from \"./cli-contract\";\nimport { buildVersionReport, renderVersionReport } from \"./version\";\n\n/**\n * CLI for pha-deploy.\n *\n * Modes:\n * - CLI one-shot: use flags to perform actions immediately\n * - TOML-driven: use `--config` or default `config.toml` for config values\n *\n * Actions:\n * - create-token\n * - create-series\n * - mint-fungible\n * - mint-nft\n */\n\nfunction printHelp(): void {\n const text = `Usage:\n pha-deploy contract <compile|deploy|upgrade|attach> [options]\n pha-deploy --create-token [options]\n pha-deploy --create-series [options]\n pha-deploy --mint-fungible [options]\n pha-deploy --mint-nft [options]\n\nActions:\n contract compile Compile a contract through pha-tomb from PATH or an explicit override\n contract deploy Deploy a compiled contract bundle\n contract upgrade Upgrade a compiled contract bundle\n contract attach Attach a compiled contract bundle to an existing token\n --create-token Create a token\n --create-series Create a token series\n --mint-fungible Mint fungible tokens\n --mint-nft Mint tokens\n\nCommon flags:\n --config <path> Path to TOML config file (default: config.toml)\n --dry-run Do not broadcast transactions; just show payloads\n --rpc-log Enable SDK JSON-RPC logging (full response payloads)\n --settings-log Print resolved configuration before executing an action\n --help Show this help\n --version Show version number\n\nOverrides (replace values from config.toml when provided):\n --rpc <url> RPC endpoint (fallback: https://testnet.phantasma.info/rpc)\n --nexus <name> Chain nexus (example: mainnet or testnet)\n --wif <wif> WIF for signing\n --symbol <symbol> Token symbol\n --token-type <nft|fungible> Token type to create (default: nft)\n --token-max-supply <int> Non-negative integer; required when token-type=fungible\n --fungible-max-supply <int> Alias for --token-max-supply\n --fungible-decimals <0..255> Decimal places; required when token-type=fungible\n --carbon-token-id <int> Existing carbon token ID (for series or mint)\n --phantasma-series-id <int> Existing Phantasma series ID (required for deterministic mint)\n --mint-fungible-to <address> Recipient address for fungible mint (default: WIF owner)\n --mint-fungible-amount <int> Amount to mint (integer atomic units)\n --rom <hex> Token ROM hex (optional; for token creation)\n --token-schemas <json> JSON string with schemas (seriesMetadata, rom, ram)\n --token-metadata <json> JSON string of token metadata fields\n --series-metadata <json> JSON object or array of series metadata fields\n --nft-metadata <json> JSON object or array of NFT metadata fields\n --create-token-max-data <int> Max data for create-token tx\n --create-token-series-max-data <int> Max data for create-series tx\n --mint-token-max-data <int> Max data for mint-nft tx\n --gas-fee-base <int> Gas fee base\n --gas-fee-create-token-base <int> Gas fee base for create-token\n --gas-fee-create-token-symbol <int> Gas fee per symbol\n --gas-fee-create-token-series <int> Gas fee for create-series\n --gas-fee-multiplier <int> Gas fee multiplier\n\npha-deploy - Phantasma token deployment and minting CLI\n`;\n console.log(text);\n}\n\nfunction requireArg<T>(\n value: T,\n name: string,\n): asserts value is NonNullable<T> {\n if (value === undefined || value === null) {\n throw new Error(`${name} is required`);\n }\n}\n\n/* ----------------------------- Actions ----------------------------- */\nasync function actionCreateToken(\n cfg: Config,\n dryRun: boolean,\n logSettings: boolean,\n) {\n requireArg(cfg.rpc, \"rpc\");\n requireArg(cfg.nexus, \"nexus\");\n requireArg(cfg.wif, \"wif\");\n requireArg(cfg.symbol, \"symbol\");\n requireArg(cfg.gasFeeBase, \"gas_fee_base\");\n requireArg(cfg.gasFeeCreateTokenBase, \"gas_fee_create_token_base\");\n requireArg(cfg.gasFeeCreateTokenSymbol, \"gas_fee_create_token_symbol\");\n requireArg(cfg.gasFeeMultiplier, \"gas_fee_multiplier\");\n requireArg(cfg.createTokenMaxData, \"create_token_max_data\");\n\n const tokenType: TokenType =\n (cfg.tokenType ?? \"nft\") === \"fungible\" ? \"fungible\" : \"nft\";\n\n if (tokenType === \"fungible\") {\n requireArg(cfg.tokenMaxSupply, \"token_max_supply\");\n requireArg(cfg.fungibleDecimals, \"fungible_decimals\");\n } else {\n requireArg(cfg.tokenSchemas, \"token_schemas\");\n }\n\n await createToken(\n new createTokenCfg(\n cfg.rpc,\n cfg.nexus,\n cfg.wif,\n cfg.symbol,\n cfg.gasFeeBase,\n cfg.gasFeeCreateTokenBase,\n cfg.gasFeeCreateTokenSymbol,\n cfg.gasFeeMultiplier,\n cfg.createTokenMaxData,\n cfg.tokenSchemas,\n cfg.tokenMetadata,\n tokenType,\n cfg.tokenMaxSupply,\n cfg.fungibleDecimals,\n ),\n dryRun,\n logSettings,\n );\n}\n\nasync function actionCreateSeries(\n cfg: Config,\n dryRun: boolean,\n logSettings: boolean,\n) {\n requireArg(cfg.rpc, \"rpc\");\n requireArg(cfg.nexus, \"nexus\");\n requireArg(cfg.wif, \"wif\");\n requireArg(cfg.carbonTokenId, \"carbon_token_id\");\n requireArg(cfg.tokenSchemas, \"token_schemas\");\n requireArg(cfg.seriesMetadata, \"series_metadata\");\n requireArg(cfg.gasFeeBase, \"gas_fee_base\");\n requireArg(cfg.gasFeeCreateTokenSeries, \"gas_fee_create_token_series\");\n requireArg(cfg.gasFeeMultiplier, \"gas_fee_multiplier\");\n requireArg(cfg.createTokenSeriesMaxData, \"create_token_series_max_data\");\n\n await createSeries(\n new createSeriesCfg(\n cfg.rpc,\n cfg.nexus,\n cfg.wif,\n cfg.carbonTokenId,\n cfg.gasFeeBase,\n cfg.gasFeeCreateTokenSeries,\n cfg.gasFeeMultiplier,\n cfg.createTokenSeriesMaxData,\n cfg.tokenSchemas?.seriesMetadata,\n cfg.seriesMetadata\n ),\n dryRun,\n logSettings,\n );\n}\n\nasync function actionMintNft(\n cfg: Config,\n dryRun: boolean,\n logSettings: boolean,\n) {\n requireArg(cfg.rpc, \"rpc\");\n requireArg(cfg.nexus, \"nexus\");\n requireArg(cfg.wif, \"wif\");\n requireArg(cfg.carbonTokenId, \"carbon_token_id\");\n requireArg(cfg.phantasmaSeriesId, \"phantasma_series_id\");\n requireArg(cfg.tokenSchemas, \"token_schemas\");\n requireArg(cfg.nftMetadata, \"nft_metadata\");\n requireArg(cfg.gasFeeBase, \"gas_fee_base\");\n requireArg(cfg.gasFeeMultiplier, \"gas_fee_multiplier\");\n requireArg(cfg.mintTokenMaxData, \"mint_token_max_data\");\n\n await mintNftToken(\n new mintNftTokenCfg(\n cfg.rpc,\n cfg.nexus,\n cfg.wif,\n cfg.carbonTokenId,\n cfg.phantasmaSeriesId,\n cfg.tokenSchemas.rom,\n cfg.nftMetadata,\n cfg.gasFeeBase,\n cfg.gasFeeMultiplier,\n cfg.mintTokenMaxData,\n ),\n dryRun,\n logSettings,\n );\n}\n\nasync function actionMintFungible(\n cfg: Config,\n dryRun: boolean,\n logSettings: boolean,\n) {\n requireArg(cfg.rpc, \"rpc\");\n requireArg(cfg.nexus, \"nexus\");\n requireArg(cfg.wif, \"wif\");\n requireArg(cfg.carbonTokenId, \"carbon_token_id\");\n requireArg(cfg.mintFungibleAmount, \"mint_fungible_amount\");\n requireArg(cfg.gasFeeBase, \"gas_fee_base\");\n requireArg(cfg.gasFeeMultiplier, \"gas_fee_multiplier\");\n requireArg(cfg.mintTokenMaxData, \"mint_token_max_data\");\n\n const to =\n cfg.mintFungibleTo ?? PhantasmaKeys.fromWIF(cfg.wif).Address.toString();\n\n await mintFungibleToken(\n new mintFungibleTokenCfg(\n cfg.rpc,\n cfg.nexus,\n cfg.wif,\n cfg.carbonTokenId,\n to,\n cfg.mintFungibleAmount,\n cfg.gasFeeBase,\n cfg.gasFeeMultiplier,\n cfg.mintTokenMaxData,\n ),\n dryRun,\n logSettings,\n );\n}\n\n/* ------------------------------- Main ------------------------------- */\n\nasync function main() {\n const rawArgv = hideBin(process.argv);\n\n if (rawArgv.length === 1 && (rawArgv[0] === \"--version\" || rawArgv[0] === \"-v\")) {\n console.log(renderVersionReport(await buildVersionReport()));\n return;\n }\n\n if (rawArgv[0] === \"contract\") {\n await runContractCli(rawArgv.slice(1));\n return;\n }\n\n // Pre-parse --config and --help early so the TOML file can be loaded before the main yargs parsing.\n const pre = yargs(rawArgv)\n .option(\"config\", {\n type: \"string\",\n alias: \"c\",\n description: \"Path to TOML config file (default: config.toml)\",\n })\n .option(\"help\", {\n type: \"boolean\",\n })\n .alias(\"h\", \"help\")\n .help(false)\n .version(false)\n .parseSync();\n\n if ((pre as any).help) {\n printHelp();\n return;\n }\n\n // Minimal yargs parsing for the top-level CLI behavior\n const parser = yargs(rawArgv)\n .scriptName(\"pha-deploy\")\n .usage(\"Usage: $0 [options] [--create-token|--create-series|--mint-fungible|--mint-nft]\")\n .option(\"rpc\", { type: \"string\", describe: \"RPC endpoint\" })\n .option(\"nexus\", { type: \"string\", describe: \"Chain nexus\" })\n .option(\"wif\", { type: \"string\", describe: \"WIF for signing\" })\n .option(\"symbol\", { type: \"string\", describe: \"Token symbol\" })\n .option(\"token-type\", {\n type: \"string\",\n choices: [\"nft\", \"fungible\"],\n describe: \"Token type to create (default: nft)\",\n })\n .option(\"token-max-supply\", {\n type: \"string\",\n describe:\n \"Token max supply (optional for NFT; required when --token-type fungible)\",\n })\n .option(\"fungible-decimals\", {\n type: \"number\",\n describe:\n \"Decimal places for fungible token (required when --token-type fungible)\",\n })\n .option(\"dry-run\", {\n type: \"boolean\",\n describe: \"Do not broadcast transactions; just show payloads\",\n })\n .option(\"rpc-log\", {\n type: \"boolean\",\n describe:\n \"Enable SDK RPC logging (prints full JSON-RPC responses for debugging)\",\n })\n .option(\"settings-log\", {\n type: \"boolean\",\n describe: \"Print resolved configuration before executing an action\",\n })\n .option(\"help\", {\n type: \"boolean\",\n describe: \"Show help\",\n })\n .alias(\"h\", \"help\")\n .option(\"config\", {\n type: \"string\",\n describe:\n \"Path to TOML config file (default: config.toml). Takes precedence as the file used for defaults.\",\n })\n .option(\"create-token\", { type: \"boolean\", describe: \"Create a token\" })\n .option(\"create-series\", {\n type: \"boolean\",\n describe: \"Create a token series\",\n })\n .option(\"mint-fungible\", { type: \"boolean\", describe: \"Mint fungible tokens\" })\n .option(\"mint-nft\", { type: \"boolean\", describe: \"Mint tokens\" })\n .option(\"mint-fungible-to\", {\n type: \"string\",\n describe: \"Recipient address for fungible mint (default: WIF owner)\",\n })\n .option(\"mint-fungible-amount\", {\n type: \"string\",\n describe: \"Amount to mint (integer atomic units)\",\n })\n .version(false)\n .epilog(\"pha-deploy - Phantasma token deployment and minting CLI\");\n\n const argv = await parser.parseAsync();\n if ((argv as any).help) {\n printHelp();\n return;\n }\n\n // Load TOML configuration (if present) before doing full parsing\n const cfg = loadConfig({ configPath: pre.config ?? null });\n\n const rpcLogEnabled = Boolean((argv as any)[\"rpc-log\"]);\n const settingsLogEnabled = Boolean((argv as any)[\"settings-log\"]);\n if (rpcLogEnabled) {\n // SDK logs JSON-RPC responses as raw objects; inspect avoids [Object] output.\n setLogger({\n log: (...args: unknown[]) => {\n const formatted = args.map((arg) =>\n typeof arg === \"string\"\n ? arg\n : inspect(arg, { depth: null, colors: false }),\n );\n console.log(...formatted);\n },\n });\n } else {\n // Enforce silent SDK logs unless explicitly enabled.\n setLogger();\n }\n\n // Determine dry-run (CLI flag overrides config)\n const dryRun = Boolean((argv as any)[\"dry-run\"]) || cfg.dryRun || false;\n\n // One-shot actions: pick the first matching action\n const actions = [\"create-token\", \"create-series\", \"mint-fungible\", \"mint-nft\"];\n let foundAction = false;\n for (const action of actions) {\n if ((argv as any)[action]) {\n foundAction = true;\n switch (action) {\n case \"create-token\": {\n await actionCreateToken(cfg, dryRun, settingsLogEnabled);\n return;\n }\n case \"create-series\": {\n await actionCreateSeries(cfg, dryRun, settingsLogEnabled);\n return;\n }\n case \"mint-fungible\": {\n await actionMintFungible(cfg, dryRun, settingsLogEnabled);\n return;\n }\n case \"mint-nft\": {\n await actionMintNft(cfg, dryRun, settingsLogEnabled);\n return;\n }\n }\n }\n }\n\n // No action requested -> show help\n if (!foundAction) {\n printHelp();\n }\n}\n\n/* ----------------------------- Run Script ---------------------------- */\n\nif (require.main === module) {\n main().catch((err) => {\n console.error(\n \"Unhandled error in CLI:\",\n err && err.stack ? err.stack : err,\n );\n process.exit(2);\n });\n}\n\nexport default main;\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const CONTRACT_COMPILER_NAME = "pha-tomb";
|
|
2
|
-
export declare const MIN_SUPPORTED_PHA_TOMB_VERSION = "2.
|
|
2
|
+
export declare const MIN_SUPPORTED_PHA_TOMB_VERSION = "2.1.0";
|
|
3
3
|
export type NativeCheckMode = "off" | "warn" | "error";
|
|
4
4
|
export interface InstalledCompiler {
|
|
5
5
|
executableName: string;
|
|
@@ -36,7 +36,7 @@ export declare function isSemverGte(actual: string, minimum: string): boolean;
|
|
|
36
36
|
export declare function findExecutableInPath(executableName: string, envPath?: string, platform?: NodeJS.Platform): string | null;
|
|
37
37
|
export declare function queryCompilerVersion(executablePath: string): Promise<string>;
|
|
38
38
|
export declare function findInstalledCompiler(envPath?: string): Promise<InstalledCompiler | null>;
|
|
39
|
-
export declare function resolveSupportedCompiler(minimumVersion?: string, envPath?: string): Promise<InstalledCompiler>;
|
|
39
|
+
export declare function resolveSupportedCompiler(minimumVersion?: string, envPath?: string, explicitPath?: string): Promise<InstalledCompiler>;
|
|
40
40
|
export declare function buildCompileArgs(options: CompileArgsOptions): string[];
|
|
41
41
|
export declare function runCompiler(executablePath: string, args: string[], cwd: string): Promise<CompileProcessResult>;
|
|
42
42
|
export declare function selectCompiledContractArtifacts(compilerOutputDir: string, requestedContractName?: string): CompiledContractArtifacts;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/contract/compiler.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,sBAAsB,aAAa,CAAC;AACjD,eAAO,MAAM,8BAA8B,UAAU,CAAC;AAEtD,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAEvD,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED,MAAM,WAAW,yBAAyB;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAeD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAgBpE;AAED,wBAAgB,oBAAoB,CAClC,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE,MAA+B,EACxC,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,MAAM,GAAG,IAAI,CAoBf;AAsCD,wBAAsB,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBlF;AAED,wBAAsB,qBAAqB,CACzC,OAAO,GAAE,MAA+B,GACvC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAWnC;
|
|
1
|
+
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/contract/compiler.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,sBAAsB,aAAa,CAAC;AACjD,eAAO,MAAM,8BAA8B,UAAU,CAAC;AAEtD,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAEvD,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED,MAAM,WAAW,yBAAyB;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAeD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAgBpE;AAED,wBAAgB,oBAAoB,CAClC,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE,MAA+B,EACxC,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,MAAM,GAAG,IAAI,CAoBf;AAsCD,wBAAsB,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBlF;AAED,wBAAsB,qBAAqB,CACzC,OAAO,GAAE,MAA+B,GACvC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAWnC;AAiBD,wBAAsB,wBAAwB,CAC5C,cAAc,GAAE,MAAuC,EACvD,OAAO,GAAE,MAA+B,EACxC,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,iBAAiB,CAAC,CAgB5B;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAoBtE;AAED,wBAAsB,WAAW,CAC/B,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,oBAAoB,CAAC,CAE/B;AAED,wBAAgB,+BAA+B,CAC7C,iBAAiB,EAAE,MAAM,EACzB,qBAAqB,CAAC,EAAE,MAAM,GAC7B,yBAAyB,CA8D3B"}
|
|
@@ -16,7 +16,7 @@ const node_fs_1 = __importDefault(require("node:fs"));
|
|
|
16
16
|
const node_path_1 = __importDefault(require("node:path"));
|
|
17
17
|
const node_child_process_1 = require("node:child_process");
|
|
18
18
|
exports.CONTRACT_COMPILER_NAME = "pha-tomb";
|
|
19
|
-
exports.MIN_SUPPORTED_PHA_TOMB_VERSION = "2.
|
|
19
|
+
exports.MIN_SUPPORTED_PHA_TOMB_VERSION = "2.1.0";
|
|
20
20
|
function parseSemver(version) {
|
|
21
21
|
const match = version.trim().match(/^(\d+)\.(\d+)\.(\d+)/);
|
|
22
22
|
if (!match) {
|
|
@@ -116,8 +116,25 @@ async function findInstalledCompiler(envPath = process.env.PATH ?? "") {
|
|
|
116
116
|
version: await queryCompilerVersion(executablePath),
|
|
117
117
|
};
|
|
118
118
|
}
|
|
119
|
-
async function
|
|
120
|
-
const
|
|
119
|
+
async function resolveExplicitCompiler(executablePath) {
|
|
120
|
+
const normalizedPath = node_path_1.default.resolve(executablePath.trim());
|
|
121
|
+
try {
|
|
122
|
+
node_fs_1.default.accessSync(normalizedPath, node_fs_1.default.constants.X_OK);
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
throw new Error(`${exports.CONTRACT_COMPILER_NAME} is not executable: ${normalizedPath}`);
|
|
126
|
+
}
|
|
127
|
+
return {
|
|
128
|
+
executableName: node_path_1.default.basename(normalizedPath),
|
|
129
|
+
executablePath: normalizedPath,
|
|
130
|
+
version: await queryCompilerVersion(normalizedPath),
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
async function resolveSupportedCompiler(minimumVersion = exports.MIN_SUPPORTED_PHA_TOMB_VERSION, envPath = process.env.PATH ?? "", explicitPath) {
|
|
134
|
+
const requestedPath = explicitPath?.trim();
|
|
135
|
+
const compiler = requestedPath
|
|
136
|
+
? await resolveExplicitCompiler(requestedPath)
|
|
137
|
+
: await findInstalledCompiler(envPath);
|
|
121
138
|
if (!compiler) {
|
|
122
139
|
throw new Error(`${exports.CONTRACT_COMPILER_NAME} was not found in PATH`);
|
|
123
140
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/contract/compiler.ts"],"names":[],"mappings":";;;;;;AAyDA,kCAgBC;AAED,oDAwBC;AAsCD,oDAkBC;AAED,sDAaC;AAED,4DAgBC;AAED,4CAoBC;AAED,kCAMC;AAED,0EAiEC;AA7RD,sDAAyB;AACzB,0DAA6B;AAC7B,2DAA2C;AAE9B,QAAA,sBAAsB,GAAG,UAAU,CAAC;AACpC,QAAA,8BAA8B,GAAG,OAAO,CAAC;AAuCtD,SAAS,WAAW,CAAC,OAAe;IAClC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC3D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,iCAAiC,OAAO,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO;QACL,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACjB,CAAC;AACJ,CAAC;AAED,SAAgB,WAAW,CAAC,MAAc,EAAE,OAAe;IACzD,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAE1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACV,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,oBAAoB,CAClC,cAAsB,EACtB,UAAkB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EACxC,WAA4B,OAAO,CAAC,QAAQ;IAE5C,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,mBAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClE,MAAM,cAAc,GAClB,QAAQ,KAAK,OAAO;QAClB,CAAC,CAAC,CAAC,cAAc,EAAE,GAAG,cAAc,MAAM,EAAE,GAAG,cAAc,MAAM,EAAE,GAAG,cAAc,MAAM,CAAC;QAC7F,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IAEvB,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QAChC,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;YAC3C,MAAM,aAAa,GAAG,mBAAI,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;YACtD,IAAI,CAAC;gBACH,iBAAE,CAAC,UAAU,CAAC,aAAa,EAAE,iBAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAChD,OAAO,aAAa,CAAC;YACvB,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,OAAe,EACf,IAAc,EACd,GAAW;IAEX,OAAO,MAAM,IAAI,OAAO,CAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACjE,MAAM,KAAK,GAAG,IAAA,0BAAK,EAAC,OAAO,EAAE,IAAI,EAAE;YACjC,GAAG;YACH,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACxC,MAAM,IAAI,KAAK,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACxC,MAAM,IAAI,KAAK,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,OAAO,CAAC;gBACN,OAAO;gBACP,IAAI;gBACJ,GAAG;gBACH,MAAM;gBACN,MAAM;gBACN,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC;aACrB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,oBAAoB,CAAC,cAAsB;IAC/D,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,cAAc,EAAE,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACrF,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,GAAG,8BAAsB,+BAA+B,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,gBAAgB,EAAE,CAC/I,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM;SAC9B,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEnC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,GAAG,8BAAsB,+BAA+B,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAEM,KAAK,UAAU,qBAAqB,CACzC,UAAkB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;IAExC,MAAM,cAAc,GAAG,oBAAoB,CAAC,8BAAsB,EAAE,OAAO,CAAC,CAAC;IAC7E,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,cAAc,EAAE,8BAAsB;QACtC,cAAc;QACd,OAAO,EAAE,MAAM,oBAAoB,CAAC,cAAc,CAAC;KACpD,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,wBAAwB,CAC5C,iBAAyB,sCAA8B,EACvD,UAAkB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;IAExC,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACtD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,GAAG,8BAAsB,wBAAwB,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CACb,GAAG,8BAAsB,IAAI,QAAQ,CAAC,OAAO,2CAA2C,cAAc,EAAE,CACzG,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAgB,gBAAgB,CAAC,OAA2B;IAC1D,MAAM,IAAI,GAAa;QACrB,UAAU,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;KAC7C,CAAC;IAEF,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,WAAW,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IACD,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,eAAe,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC;AACd,CAAC;AAEM,KAAK,UAAU,WAAW,CAC/B,cAAsB,EACtB,IAAc,EACd,GAAW;IAEX,OAAO,MAAM,iBAAiB,CAAC,cAAc,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AAC5D,CAAC;AAED,SAAgB,+BAA+B,CAC7C,iBAAyB,EACzB,qBAA8B;IAE9B,MAAM,mBAAmB,GAAG,mBAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC5D,IAAI,CAAC,iBAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,6CAA6C,mBAAmB,EAAE,CAAC,CAAC;IACtF,CAAC;IAED,MAAM,OAAO,GAAG,iBAAE,CAAC,WAAW,CAAC,mBAAmB,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,OAAO;SACrB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SAChE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;SAC1B,IAAI,EAAE,CAAC;IAEV,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,sCAAsC,mBAAmB,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,aAAa,GAAG,qBAAqB,EAAE,IAAI,EAAE,CAAC;IACpD,IAAI,gBAAgB,GAAkB,IAAI,CAAC;IAC3C,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,aAAa,GAAG,GAAG,aAAa,MAAM,CAAC;QAC7C,IAAI,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACrC,gBAAgB,GAAG,aAAa,CAAC;QACnC,CAAC;IACH,CAAC;IAED,IAAI,CAAC,gBAAgB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/C,gBAAgB,GAAG,mBAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClF,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CACb,uBAAuB,aAAa,4DAA4D,UAAU,EAAE,CAC7G,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,KAAK,CACb,oFAAoF,UAAU,EAAE,CACjG,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,mBAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,gBAAgB,MAAM,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAG,mBAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,gBAAgB,MAAM,CAAC,CAAC;IAC1E,IAAI,CAAC,iBAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,yCAAyC,gBAAgB,MAAM,OAAO,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,MAAc,EAAsB,EAAE;QAC1D,MAAM,SAAS,GAAG,mBAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,gBAAgB,GAAG,MAAM,EAAE,CAAC,CAAC;QACjF,OAAO,iBAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1D,CAAC,CAAC;IAEF,OAAO;QACL,YAAY,EAAE,gBAAgB;QAC9B,iBAAiB,EAAE,mBAAmB;QACtC,UAAU;QACV,OAAO;QACP,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC;QACjC,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC;QAC7B,aAAa,EAAE,YAAY,CAAC,UAAU,CAAC;QACvC,UAAU,EAAE,YAAY,CAAC,UAAU,CAAC;KACrC,CAAC;AACJ,CAAC","sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { spawn } from \"node:child_process\";\n\nexport const CONTRACT_COMPILER_NAME = \"pha-tomb\";\nexport const MIN_SUPPORTED_PHA_TOMB_VERSION = \"2.0.0\";\n\nexport type NativeCheckMode = \"off\" | \"warn\" | \"error\";\n\nexport interface InstalledCompiler {\n executableName: string;\n executablePath: string;\n version: string;\n}\n\nexport interface CompileProcessResult {\n command: string;\n args: string[];\n cwd: string;\n stdout: string;\n stderr: string;\n exitCode: number;\n}\n\nexport interface CompileArgsOptions {\n sourcePath: string;\n outputRoot: string;\n libPaths?: string[];\n protocol?: number;\n debug?: boolean;\n nativeCheck?: NativeCheckMode;\n}\n\nexport interface CompiledContractArtifacts {\n contractName: string;\n compilerOutputDir: string;\n scriptPath: string;\n abiPath: string;\n debugPath?: string;\n asmPath?: string;\n scriptHexPath?: string;\n abiHexPath?: string;\n}\n\nfunction parseSemver(version: string): [number, number, number] {\n const match = version.trim().match(/^(\\d+)\\.(\\d+)\\.(\\d+)/);\n if (!match) {\n throw new Error(`Unsupported semantic version: ${version}`);\n }\n\n return [\n Number(match[1]),\n Number(match[2]),\n Number(match[3]),\n ];\n}\n\nexport function isSemverGte(actual: string, minimum: string): boolean {\n const actualParts = parseSemver(actual);\n const minimumParts = parseSemver(minimum);\n\n for (let i = 0; i < actualParts.length; i += 1) {\n const a = actualParts[i] ?? 0;\n const b = minimumParts[i] ?? 0;\n if (a > b) {\n return true;\n }\n if (a < b) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function findExecutableInPath(\n executableName: string,\n envPath: string = process.env.PATH ?? \"\",\n platform: NodeJS.Platform = process.platform,\n): string | null {\n const pathEntries = envPath.split(path.delimiter).filter(Boolean);\n const candidateNames =\n platform === \"win32\"\n ? [executableName, `${executableName}.exe`, `${executableName}.cmd`, `${executableName}.bat`]\n : [executableName];\n\n for (const entry of pathEntries) {\n for (const candidateName of candidateNames) {\n const candidatePath = path.join(entry, candidateName);\n try {\n fs.accessSync(candidatePath, fs.constants.X_OK);\n return candidatePath;\n } catch {\n continue;\n }\n }\n }\n\n return null;\n}\n\nasync function runCommandCapture(\n command: string,\n args: string[],\n cwd: string,\n): Promise<CompileProcessResult> {\n return await new Promise<CompileProcessResult>((resolve, reject) => {\n const child = spawn(command, args, {\n cwd,\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n });\n\n let stdout = \"\";\n let stderr = \"\";\n\n child.stdout.setEncoding(\"utf8\");\n child.stderr.setEncoding(\"utf8\");\n child.stdout.on(\"data\", (chunk: string) => {\n stdout += chunk;\n });\n child.stderr.on(\"data\", (chunk: string) => {\n stderr += chunk;\n });\n child.on(\"error\", reject);\n child.on(\"close\", (code) => {\n resolve({\n command,\n args,\n cwd,\n stdout,\n stderr,\n exitCode: code ?? -1,\n });\n });\n });\n}\n\nexport async function queryCompilerVersion(executablePath: string): Promise<string> {\n const result = await runCommandCapture(executablePath, [\"--version\"], process.cwd());\n if (result.exitCode !== 0) {\n throw new Error(\n `${CONTRACT_COMPILER_NAME} --version exited with code ${result.exitCode}: ${result.stderr.trim() || result.stdout.trim() || \"no diagnostics\"}`,\n );\n }\n\n const versionLine = result.stdout\n .split(/\\r?\\n/)\n .map((line) => line.trim())\n .find((line) => line.length > 0);\n\n if (!versionLine) {\n throw new Error(`${CONTRACT_COMPILER_NAME} --version returned no output`);\n }\n\n return versionLine;\n}\n\nexport async function findInstalledCompiler(\n envPath: string = process.env.PATH ?? \"\",\n): Promise<InstalledCompiler | null> {\n const executablePath = findExecutableInPath(CONTRACT_COMPILER_NAME, envPath);\n if (!executablePath) {\n return null;\n }\n\n return {\n executableName: CONTRACT_COMPILER_NAME,\n executablePath,\n version: await queryCompilerVersion(executablePath),\n };\n}\n\nexport async function resolveSupportedCompiler(\n minimumVersion: string = MIN_SUPPORTED_PHA_TOMB_VERSION,\n envPath: string = process.env.PATH ?? \"\",\n): Promise<InstalledCompiler> {\n const compiler = await findInstalledCompiler(envPath);\n if (!compiler) {\n throw new Error(`${CONTRACT_COMPILER_NAME} was not found in PATH`);\n }\n\n if (!isSemverGte(compiler.version, minimumVersion)) {\n throw new Error(\n `${CONTRACT_COMPILER_NAME} ${compiler.version} is below the minimum supported version ${minimumVersion}`,\n );\n }\n\n return compiler;\n}\n\nexport function buildCompileArgs(options: CompileArgsOptions): string[] {\n const args: string[] = [\n `output:${path.resolve(options.outputRoot)}`,\n ];\n\n if (options.protocol !== undefined) {\n args.push(`protocol:${options.protocol}`);\n }\n for (const libPath of options.libPaths ?? []) {\n args.push(`libpath:${path.resolve(libPath)}`);\n }\n if (options.debug) {\n args.push(\"debug\");\n }\n if (options.nativeCheck) {\n args.push(`nativecheck:${options.nativeCheck}`);\n }\n\n args.push(path.resolve(options.sourcePath));\n return args;\n}\n\nexport async function runCompiler(\n executablePath: string,\n args: string[],\n cwd: string,\n): Promise<CompileProcessResult> {\n return await runCommandCapture(executablePath, args, cwd);\n}\n\nexport function selectCompiledContractArtifacts(\n compilerOutputDir: string,\n requestedContractName?: string,\n): CompiledContractArtifacts {\n const normalizedOutputDir = path.resolve(compilerOutputDir);\n if (!fs.existsSync(normalizedOutputDir)) {\n throw new Error(`Compiler output directory does not exist: ${normalizedOutputDir}`);\n }\n\n const entries = fs.readdirSync(normalizedOutputDir, { withFileTypes: true });\n const pvmFiles = entries\n .filter((entry) => entry.isFile() && entry.name.endsWith(\".pvm\"))\n .map((entry) => entry.name)\n .sort();\n\n if (pvmFiles.length === 0) {\n throw new Error(`No .pvm artifacts were produced in ${normalizedOutputDir}`);\n }\n\n const requestedName = requestedContractName?.trim();\n let selectedBaseName: string | null = null;\n if (requestedName) {\n const requestedFile = `${requestedName}.pvm`;\n if (pvmFiles.includes(requestedFile)) {\n selectedBaseName = requestedName;\n }\n }\n\n if (!selectedBaseName && pvmFiles.length === 1) {\n selectedBaseName = path.basename(pvmFiles[0], \".pvm\");\n }\n\n if (!selectedBaseName) {\n const candidates = pvmFiles.map((file) => path.basename(file, \".pvm\")).join(\", \");\n if (requestedName) {\n throw new Error(\n `Requested contract '${requestedName}' was not found in compiler output. Available artifacts: ${candidates}`,\n );\n }\n throw new Error(\n `Compiler produced multiple .pvm artifacts. Use --contract-name to select one of: ${candidates}`,\n );\n }\n\n const scriptPath = path.join(normalizedOutputDir, `${selectedBaseName}.pvm`);\n const abiPath = path.join(normalizedOutputDir, `${selectedBaseName}.abi`);\n if (!fs.existsSync(abiPath)) {\n throw new Error(`ABI artifact is missing for contract '${selectedBaseName}': ${abiPath}`);\n }\n\n const optionalFile = (suffix: string): string | undefined => {\n const candidate = path.join(normalizedOutputDir, `${selectedBaseName}${suffix}`);\n return fs.existsSync(candidate) ? candidate : undefined;\n };\n\n return {\n contractName: selectedBaseName,\n compilerOutputDir: normalizedOutputDir,\n scriptPath,\n abiPath,\n debugPath: optionalFile(\".debug\"),\n asmPath: optionalFile(\".asm\"),\n scriptHexPath: optionalFile(\".pvm.hex\"),\n abiHexPath: optionalFile(\".abi.hex\"),\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/contract/compiler.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { spawn } from \"node:child_process\";\n\nexport const CONTRACT_COMPILER_NAME = \"pha-tomb\";\nexport const MIN_SUPPORTED_PHA_TOMB_VERSION = \"2.1.0\";\n\nexport type NativeCheckMode = \"off\" | \"warn\" | \"error\";\n\nexport interface InstalledCompiler {\n executableName: string;\n executablePath: string;\n version: string;\n}\n\nexport interface CompileProcessResult {\n command: string;\n args: string[];\n cwd: string;\n stdout: string;\n stderr: string;\n exitCode: number;\n}\n\nexport interface CompileArgsOptions {\n sourcePath: string;\n outputRoot: string;\n libPaths?: string[];\n protocol?: number;\n debug?: boolean;\n nativeCheck?: NativeCheckMode;\n}\n\nexport interface CompiledContractArtifacts {\n contractName: string;\n compilerOutputDir: string;\n scriptPath: string;\n abiPath: string;\n debugPath?: string;\n asmPath?: string;\n scriptHexPath?: string;\n abiHexPath?: string;\n}\n\nfunction parseSemver(version: string): [number, number, number] {\n const match = version.trim().match(/^(\\d+)\\.(\\d+)\\.(\\d+)/);\n if (!match) {\n throw new Error(`Unsupported semantic version: ${version}`);\n }\n\n return [\n Number(match[1]),\n Number(match[2]),\n Number(match[3]),\n ];\n}\n\nexport function isSemverGte(actual: string, minimum: string): boolean {\n const actualParts = parseSemver(actual);\n const minimumParts = parseSemver(minimum);\n\n for (let i = 0; i < actualParts.length; i += 1) {\n const a = actualParts[i] ?? 0;\n const b = minimumParts[i] ?? 0;\n if (a > b) {\n return true;\n }\n if (a < b) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function findExecutableInPath(\n executableName: string,\n envPath: string = process.env.PATH ?? \"\",\n platform: NodeJS.Platform = process.platform,\n): string | null {\n const pathEntries = envPath.split(path.delimiter).filter(Boolean);\n const candidateNames =\n platform === \"win32\"\n ? [executableName, `${executableName}.exe`, `${executableName}.cmd`, `${executableName}.bat`]\n : [executableName];\n\n for (const entry of pathEntries) {\n for (const candidateName of candidateNames) {\n const candidatePath = path.join(entry, candidateName);\n try {\n fs.accessSync(candidatePath, fs.constants.X_OK);\n return candidatePath;\n } catch {\n continue;\n }\n }\n }\n\n return null;\n}\n\nasync function runCommandCapture(\n command: string,\n args: string[],\n cwd: string,\n): Promise<CompileProcessResult> {\n return await new Promise<CompileProcessResult>((resolve, reject) => {\n const child = spawn(command, args, {\n cwd,\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n });\n\n let stdout = \"\";\n let stderr = \"\";\n\n child.stdout.setEncoding(\"utf8\");\n child.stderr.setEncoding(\"utf8\");\n child.stdout.on(\"data\", (chunk: string) => {\n stdout += chunk;\n });\n child.stderr.on(\"data\", (chunk: string) => {\n stderr += chunk;\n });\n child.on(\"error\", reject);\n child.on(\"close\", (code) => {\n resolve({\n command,\n args,\n cwd,\n stdout,\n stderr,\n exitCode: code ?? -1,\n });\n });\n });\n}\n\nexport async function queryCompilerVersion(executablePath: string): Promise<string> {\n const result = await runCommandCapture(executablePath, [\"--version\"], process.cwd());\n if (result.exitCode !== 0) {\n throw new Error(\n `${CONTRACT_COMPILER_NAME} --version exited with code ${result.exitCode}: ${result.stderr.trim() || result.stdout.trim() || \"no diagnostics\"}`,\n );\n }\n\n const versionLine = result.stdout\n .split(/\\r?\\n/)\n .map((line) => line.trim())\n .find((line) => line.length > 0);\n\n if (!versionLine) {\n throw new Error(`${CONTRACT_COMPILER_NAME} --version returned no output`);\n }\n\n return versionLine;\n}\n\nexport async function findInstalledCompiler(\n envPath: string = process.env.PATH ?? \"\",\n): Promise<InstalledCompiler | null> {\n const executablePath = findExecutableInPath(CONTRACT_COMPILER_NAME, envPath);\n if (!executablePath) {\n return null;\n }\n\n return {\n executableName: CONTRACT_COMPILER_NAME,\n executablePath,\n version: await queryCompilerVersion(executablePath),\n };\n}\n\nasync function resolveExplicitCompiler(executablePath: string): Promise<InstalledCompiler> {\n const normalizedPath = path.resolve(executablePath.trim());\n try {\n fs.accessSync(normalizedPath, fs.constants.X_OK);\n } catch {\n throw new Error(`${CONTRACT_COMPILER_NAME} is not executable: ${normalizedPath}`);\n }\n\n return {\n executableName: path.basename(normalizedPath),\n executablePath: normalizedPath,\n version: await queryCompilerVersion(normalizedPath),\n };\n}\n\nexport async function resolveSupportedCompiler(\n minimumVersion: string = MIN_SUPPORTED_PHA_TOMB_VERSION,\n envPath: string = process.env.PATH ?? \"\",\n explicitPath?: string,\n): Promise<InstalledCompiler> {\n const requestedPath = explicitPath?.trim();\n const compiler = requestedPath\n ? await resolveExplicitCompiler(requestedPath)\n : await findInstalledCompiler(envPath);\n if (!compiler) {\n throw new Error(`${CONTRACT_COMPILER_NAME} was not found in PATH`);\n }\n\n if (!isSemverGte(compiler.version, minimumVersion)) {\n throw new Error(\n `${CONTRACT_COMPILER_NAME} ${compiler.version} is below the minimum supported version ${minimumVersion}`,\n );\n }\n\n return compiler;\n}\n\nexport function buildCompileArgs(options: CompileArgsOptions): string[] {\n const args: string[] = [\n `output:${path.resolve(options.outputRoot)}`,\n ];\n\n if (options.protocol !== undefined) {\n args.push(`protocol:${options.protocol}`);\n }\n for (const libPath of options.libPaths ?? []) {\n args.push(`libpath:${path.resolve(libPath)}`);\n }\n if (options.debug) {\n args.push(\"debug\");\n }\n if (options.nativeCheck) {\n args.push(`nativecheck:${options.nativeCheck}`);\n }\n\n args.push(path.resolve(options.sourcePath));\n return args;\n}\n\nexport async function runCompiler(\n executablePath: string,\n args: string[],\n cwd: string,\n): Promise<CompileProcessResult> {\n return await runCommandCapture(executablePath, args, cwd);\n}\n\nexport function selectCompiledContractArtifacts(\n compilerOutputDir: string,\n requestedContractName?: string,\n): CompiledContractArtifacts {\n const normalizedOutputDir = path.resolve(compilerOutputDir);\n if (!fs.existsSync(normalizedOutputDir)) {\n throw new Error(`Compiler output directory does not exist: ${normalizedOutputDir}`);\n }\n\n const entries = fs.readdirSync(normalizedOutputDir, { withFileTypes: true });\n const pvmFiles = entries\n .filter((entry) => entry.isFile() && entry.name.endsWith(\".pvm\"))\n .map((entry) => entry.name)\n .sort();\n\n if (pvmFiles.length === 0) {\n throw new Error(`No .pvm artifacts were produced in ${normalizedOutputDir}`);\n }\n\n const requestedName = requestedContractName?.trim();\n let selectedBaseName: string | null = null;\n if (requestedName) {\n const requestedFile = `${requestedName}.pvm`;\n if (pvmFiles.includes(requestedFile)) {\n selectedBaseName = requestedName;\n }\n }\n\n if (!selectedBaseName && pvmFiles.length === 1) {\n selectedBaseName = path.basename(pvmFiles[0], \".pvm\");\n }\n\n if (!selectedBaseName) {\n const candidates = pvmFiles.map((file) => path.basename(file, \".pvm\")).join(\", \");\n if (requestedName) {\n throw new Error(\n `Requested contract '${requestedName}' was not found in compiler output. Available artifacts: ${candidates}`,\n );\n }\n throw new Error(\n `Compiler produced multiple .pvm artifacts. Use --contract-name to select one of: ${candidates}`,\n );\n }\n\n const scriptPath = path.join(normalizedOutputDir, `${selectedBaseName}.pvm`);\n const abiPath = path.join(normalizedOutputDir, `${selectedBaseName}.abi`);\n if (!fs.existsSync(abiPath)) {\n throw new Error(`ABI artifact is missing for contract '${selectedBaseName}': ${abiPath}`);\n }\n\n const optionalFile = (suffix: string): string | undefined => {\n const candidate = path.join(normalizedOutputDir, `${selectedBaseName}${suffix}`);\n return fs.existsSync(candidate) ? candidate : undefined;\n };\n\n return {\n contractName: selectedBaseName,\n compilerOutputDir: normalizedOutputDir,\n scriptPath,\n abiPath,\n debugPath: optionalFile(\".debug\"),\n asmPath: optionalFile(\".asm\"),\n scriptHexPath: optionalFile(\".pvm.hex\"),\n abiHexPath: optionalFile(\".abi.hex\"),\n };\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ContractArtifactBundle } from "phantasma-sdk-ts";
|
|
2
|
-
export type ContractOperation = "deploy" | "upgrade";
|
|
2
|
+
export type ContractOperation = "deploy" | "upgrade" | "attach";
|
|
3
3
|
export interface PreparedContractTransaction {
|
|
4
4
|
operation: ContractOperation;
|
|
5
5
|
contractName: string;
|
|
@@ -8,6 +8,7 @@ export interface PreparedContractTransaction {
|
|
|
8
8
|
txHex: string;
|
|
9
9
|
scriptBytes: number;
|
|
10
10
|
abiBytes: number;
|
|
11
|
+
attachSymbol?: string;
|
|
11
12
|
}
|
|
12
13
|
export interface ExecuteContractTransactionOptions {
|
|
13
14
|
operation: ContractOperation;
|
|
@@ -21,6 +22,7 @@ export interface ExecuteContractTransactionOptions {
|
|
|
21
22
|
proofOfWork?: number;
|
|
22
23
|
payloadHex?: string;
|
|
23
24
|
dryRun?: boolean;
|
|
25
|
+
attachSymbol?: string;
|
|
24
26
|
}
|
|
25
27
|
export interface ExecuteContractTransactionResult {
|
|
26
28
|
prepared: PreparedContractTransaction;
|
|
@@ -28,6 +30,7 @@ export interface ExecuteContractTransactionResult {
|
|
|
28
30
|
txHash?: string;
|
|
29
31
|
success?: boolean;
|
|
30
32
|
result?: string;
|
|
33
|
+
broadcastError?: string;
|
|
31
34
|
}
|
|
32
35
|
export declare function prepareContractTransaction(options: ExecuteContractTransactionOptions): PreparedContractTransaction;
|
|
33
36
|
export declare function executeContractTransaction(options: ExecuteContractTransactionOptions): Promise<ExecuteContractTransactionResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/contract/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/contract/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EAOvB,MAAM,kBAAkB,CAAC;AAI1B,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEhE,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,iBAAiB,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iCAAiC;IAChD,SAAS,EAAE,iBAAiB,CAAC;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,sBAAsB,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,EAAE,2BAA2B,CAAC;IACtC,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AA2FD,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,iCAAiC,GACzC,2BAA2B,CAwE7B;AAED,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,iCAAiC,GACzC,OAAO,CAAC,gCAAgC,CAAC,CAkC3C"}
|
package/dist/contract/deploy.js
CHANGED
|
@@ -4,39 +4,97 @@ exports.prepareContractTransaction = prepareContractTransaction;
|
|
|
4
4
|
exports.executeContractTransaction = executeContractTransaction;
|
|
5
5
|
const phantasma_sdk_ts_1 = require("phantasma-sdk-ts");
|
|
6
6
|
const waitForTx_1 = require("../actions/waitForTx");
|
|
7
|
+
const txHash_1 = require("../rpc/txHash");
|
|
8
|
+
function normalizeAttachSymbol(requestedSymbol, bundle) {
|
|
9
|
+
const attachSymbol = (requestedSymbol ?? bundle.contractName).trim();
|
|
10
|
+
if (!attachSymbol) {
|
|
11
|
+
throw new Error("attach symbol cannot be empty");
|
|
12
|
+
}
|
|
13
|
+
return attachSymbol;
|
|
14
|
+
}
|
|
15
|
+
function normalizeLifecycleGas(value, fallback, label) {
|
|
16
|
+
const numeric = value ?? fallback;
|
|
17
|
+
if (!Number.isSafeInteger(numeric) || numeric <= 0) {
|
|
18
|
+
throw new Error(`${label} must be a positive safe integer`);
|
|
19
|
+
}
|
|
20
|
+
return numeric;
|
|
21
|
+
}
|
|
22
|
+
function buildAttachScript(bundle, fromAddress, attachSymbol, gasPrice, gasLimit) {
|
|
23
|
+
// Attach must go through Nexus interop because it binds an already-created native token to a VM
|
|
24
|
+
// bundle. Runtime.DeployContract/UpgradeContract target a different lifecycle.
|
|
25
|
+
const resolvedGasPrice = normalizeLifecycleGas(gasPrice, phantasma_sdk_ts_1.ContractTxHelper.DefaultGasPrice, "gasPrice");
|
|
26
|
+
const resolvedGasLimit = normalizeLifecycleGas(gasLimit, phantasma_sdk_ts_1.ContractTxHelper.DefaultGasLimit, "gasLimit");
|
|
27
|
+
const nullAddress = new phantasma_sdk_ts_1.ScriptBuilder().NullAddress;
|
|
28
|
+
return new phantasma_sdk_ts_1.ScriptBuilder()
|
|
29
|
+
.BeginScript()
|
|
30
|
+
.AllowGas(fromAddress, nullAddress, resolvedGasPrice, resolvedGasLimit)
|
|
31
|
+
.CallInterop("Nexus.AttachTokenContract", [
|
|
32
|
+
fromAddress,
|
|
33
|
+
attachSymbol,
|
|
34
|
+
bundle.script,
|
|
35
|
+
bundle.abi,
|
|
36
|
+
])
|
|
37
|
+
.SpendGas(fromAddress)
|
|
38
|
+
.EndScript();
|
|
39
|
+
}
|
|
40
|
+
function buildAndSignTransaction(options, keys, scriptHex) {
|
|
41
|
+
const nexus = options.nexus.trim();
|
|
42
|
+
const chain = (options.chain ?? "main").trim();
|
|
43
|
+
if (!nexus) {
|
|
44
|
+
throw new Error("nexus cannot be empty");
|
|
45
|
+
}
|
|
46
|
+
if (!chain) {
|
|
47
|
+
throw new Error("chain cannot be empty");
|
|
48
|
+
}
|
|
49
|
+
const payloadHex = options.payloadHex?.trim() ?? "";
|
|
50
|
+
const tx = new phantasma_sdk_ts_1.Transaction(nexus, chain, scriptHex, new Date(Date.now() + 5 * 60 * 1000), payloadHex);
|
|
51
|
+
const proofOfWork = options.proofOfWork ?? phantasma_sdk_ts_1.ProofOfWork.Minimal;
|
|
52
|
+
if (proofOfWork > 0) {
|
|
53
|
+
tx.mineTransaction(proofOfWork);
|
|
54
|
+
}
|
|
55
|
+
tx.signWithKeys(keys);
|
|
56
|
+
return tx.ToStringEncoded(true).toUpperCase();
|
|
57
|
+
}
|
|
7
58
|
function prepareContractTransaction(options) {
|
|
8
59
|
const keys = phantasma_sdk_ts_1.PhantasmaKeys.fromWIF(options.wif);
|
|
9
60
|
const fromAddress = keys.Address.Text;
|
|
10
|
-
const
|
|
11
|
-
?
|
|
12
|
-
:
|
|
13
|
-
const
|
|
14
|
-
?
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
61
|
+
const attachSymbol = options.operation === "attach"
|
|
62
|
+
? normalizeAttachSymbol(options.attachSymbol, options.bundle)
|
|
63
|
+
: undefined;
|
|
64
|
+
const scriptHex = options.operation === "attach"
|
|
65
|
+
? buildAttachScript(options.bundle, fromAddress, attachSymbol, options.gasPrice, options.gasLimit)
|
|
66
|
+
: options.operation === "deploy"
|
|
67
|
+
? phantasma_sdk_ts_1.ContractTxHelper.buildDeployScriptFromBundle(options.bundle, fromAddress, options.gasPrice, options.gasLimit)
|
|
68
|
+
: phantasma_sdk_ts_1.ContractTxHelper.buildUpgradeScriptFromBundle(options.bundle, fromAddress, options.gasPrice, options.gasLimit);
|
|
69
|
+
const txHex = options.operation === "attach"
|
|
70
|
+
? buildAndSignTransaction(options, keys, scriptHex)
|
|
71
|
+
: options.operation === "deploy"
|
|
72
|
+
? phantasma_sdk_ts_1.ContractTxHelper.buildDeployTransactionAndEncode({
|
|
73
|
+
nexus: options.nexus,
|
|
74
|
+
chain: options.chain,
|
|
75
|
+
signer: keys,
|
|
76
|
+
from: fromAddress,
|
|
77
|
+
contractName: options.bundle.contractName,
|
|
78
|
+
script: options.bundle.script,
|
|
79
|
+
abi: options.bundle.abi,
|
|
80
|
+
gasPrice: options.gasPrice,
|
|
81
|
+
gasLimit: options.gasLimit,
|
|
82
|
+
proofOfWork: options.proofOfWork,
|
|
83
|
+
payloadHex: options.payloadHex,
|
|
84
|
+
})
|
|
85
|
+
: phantasma_sdk_ts_1.ContractTxHelper.buildUpgradeTransactionAndEncode({
|
|
86
|
+
nexus: options.nexus,
|
|
87
|
+
chain: options.chain,
|
|
88
|
+
signer: keys,
|
|
89
|
+
from: fromAddress,
|
|
90
|
+
contractName: options.bundle.contractName,
|
|
91
|
+
script: options.bundle.script,
|
|
92
|
+
abi: options.bundle.abi,
|
|
93
|
+
gasPrice: options.gasPrice,
|
|
94
|
+
gasLimit: options.gasLimit,
|
|
95
|
+
proofOfWork: options.proofOfWork,
|
|
96
|
+
payloadHex: options.payloadHex,
|
|
97
|
+
});
|
|
40
98
|
return {
|
|
41
99
|
operation: options.operation,
|
|
42
100
|
contractName: options.bundle.contractName,
|
|
@@ -45,6 +103,7 @@ function prepareContractTransaction(options) {
|
|
|
45
103
|
txHex,
|
|
46
104
|
scriptBytes: options.bundle.script.length,
|
|
47
105
|
abiBytes: options.bundle.abi.length,
|
|
106
|
+
...(attachSymbol ? { attachSymbol } : {}),
|
|
48
107
|
};
|
|
49
108
|
}
|
|
50
109
|
async function executeContractTransaction(options) {
|
|
@@ -56,7 +115,19 @@ async function executeContractTransaction(options) {
|
|
|
56
115
|
};
|
|
57
116
|
}
|
|
58
117
|
const rpc = new phantasma_sdk_ts_1.PhantasmaAPI(options.rpc, null, options.nexus);
|
|
59
|
-
|
|
118
|
+
let txHash;
|
|
119
|
+
try {
|
|
120
|
+
txHash = (0, txHash_1.requireRpcTxHash)(await rpc.sendRawTransaction(prepared.txHex), `${options.operation} transaction`);
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
return {
|
|
124
|
+
prepared,
|
|
125
|
+
dryRun: false,
|
|
126
|
+
success: false,
|
|
127
|
+
result: "",
|
|
128
|
+
broadcastError: err instanceof Error ? err.message : String(err),
|
|
129
|
+
};
|
|
130
|
+
}
|
|
60
131
|
const waitResult = await (0, waitForTx_1.waitForTx)(rpc, txHash);
|
|
61
132
|
return {
|
|
62
133
|
prepared,
|