@layerzerolabs/lz-initia-cli 3.0.3 → 3.0.5

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/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # @layerzerolabs/lz-initia-cli
2
2
 
3
+ ## 3.0.5
4
+
5
+ ### Patch Changes
6
+
7
+ - 1136853: endpoint: mainnet worldchain
8
+ - Updated dependencies [1136853]
9
+ - @layerzerolabs/lz-definitions@3.0.5
10
+ - @layerzerolabs/lz-config-types@3.0.5
11
+ - @layerzerolabs/lz-utilities@3.0.5
12
+
13
+ ## 3.0.4
14
+
15
+ ### Patch Changes
16
+
17
+ - 4b060b6: testnets
18
+ - Updated dependencies [4b060b6]
19
+ - @layerzerolabs/lz-definitions@3.0.4
20
+ - @layerzerolabs/lz-config-types@3.0.4
21
+ - @layerzerolabs/lz-utilities@3.0.4
22
+
3
23
  ## 3.0.3
4
24
 
5
25
  ### Patch Changes
package/README.md CHANGED
@@ -115,6 +115,8 @@ yarn lz-initia-cli build -m layerzero_common -n initia-sandbox-local
115
115
  # compile the contracts with a variant
116
116
  # for use cases like deploying same contract to different addresses
117
117
  yarn lz-initia-cli build -m dvn -n initia-sandbox-local --variant nethermind
118
+ # replace the module path
119
+ yarn lz-initia-cli build -m layerzero_common -n initia-sandbox-local -p path/to/layerzero-common
118
120
  # deploy the contracts
119
121
  yarn lz-initia-cli deploy -m layerzero_common -n initia-sandbox-local
120
122
  # deploy the contracts with a variant
package/dist/cli.cjs CHANGED
@@ -204,7 +204,10 @@ function getMoveContext(moduleName, lzInitiaConfig, network) {
204
204
  const toml = context[key];
205
205
  for (const addressKey of Object.keys(toml.addresses)) {
206
206
  const address = toml.addresses[addressKey];
207
- const presetAddresses = parseAddresses(lzInitiaConfig.modules[key]?.addresses, network);
207
+ const presetAddresses = {
208
+ ...parseAddresses(lzInitiaConfig.modules[key]?.addresses, network),
209
+ ...parseAddresses(lzInitiaConfig.modules[moduleName]?.addresses, network)
210
+ };
208
211
  if (address === "_") {
209
212
  if (presetAddresses[addressKey] !== void 0 && presetAddresses[addressKey] !== "") {
210
213
  toml.addresses[addressKey] = presetAddresses[addressKey];
@@ -418,13 +421,29 @@ async function build(moduleName, lzInitiaConfig, network, skipBuild = false, var
418
421
  await copyArtifacts(srcPath, outputPath);
419
422
  }
420
423
  var command2 = new extraTypings.Command();
421
- command2.name("build").description("build Initia program").addOption(extraTypings.createOption("-m, --modules <modules...>", "modules").makeOptionMandatory(true)).addOption(extraTypings.createOption("-n, --network <network>", "network").makeOptionMandatory(true)).addOption(extraTypings.createOption("-v, --variant <variant>", "variant").makeOptionMandatory(false)).addOption(extraTypings.createOption("-sb, --skip-build", "skip build").default(false)).action(async (options, cmd) => {
422
- const context = cmd.getOptionValue("__CONTEXT__");
423
- const { skipBuild, modules, network, variant } = options;
424
- for (const module of modules) {
425
- await build(module, context, network, skipBuild, variant ?? context.modules[module]?.variant);
424
+ command2.name("build").description("build Initia program").addOption(extraTypings.createOption("-m, --modules <modules...>", "modules").makeOptionMandatory(true)).addOption(
425
+ extraTypings.createOption(
426
+ "-p, --module-paths <paths...>",
427
+ "module paths of modules, use the path in lz-initia.config.ts if not specify"
428
+ ).makeOptionMandatory(false)
429
+ ).addOption(extraTypings.createOption("-n, --network <network>", "network").makeOptionMandatory(true)).addOption(extraTypings.createOption("-v, --variant <variant>", "variant").makeOptionMandatory(false)).addOption(extraTypings.createOption("-sb, --skip-build", "skip build").default(false)).action(
430
+ async (options, cmd) => {
431
+ const context = cmd.getOptionValue("__CONTEXT__");
432
+ const { skipBuild, modules, network, variant, modulePaths } = options;
433
+ if (modulePaths !== void 0) {
434
+ for (let i = 0; i < modulePaths.length; i++) {
435
+ const module = modules[i];
436
+ const moduleConfig = context.modules[module];
437
+ if (moduleConfig !== void 0) {
438
+ moduleConfig.modulePath = modulePaths[i];
439
+ }
440
+ }
441
+ }
442
+ for (const module of modules) {
443
+ await build(module, context, network, skipBuild, variant ?? context.modules[module]?.variant);
444
+ }
426
445
  }
427
- });
446
+ );
428
447
 
429
448
  // src/cli.ts
430
449
  var program = new extraTypings.Command();
package/dist/cli.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli.ts","../src/loader.ts","../src/subCommands/index.ts","../src/deploy.ts","../src/client.ts","../src/deployer.ts","../src/errors.ts","../src/move.ts","../src/subCommands/deploy.ts","../src/build.ts","../src/options.ts","../src/subCommands/build.ts"],"names":["fs","path","process","Command","$","command","AccAddress","deploymentPath","moduleName","glob","createOption"],"mappings":"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","sourcesContent":["import fs from 'fs'\nimport path from 'path'\nimport process from 'process'\n\nimport { loadConfig } from '@/loader'\nimport { Command } from '@commander-js/extra-typings'\nimport { sync as findUpSync } from 'find-up'\nimport { $ } from 'zx/core'\n\nimport { getLogger } from '@layerzerolabs/lz-utilities'\n\nimport * as subCommands from './subCommands'\n\nconst program = new Command()\n// iterate over subCommands and add them to the program\nconst logger = getLogger()\n\nprogram\n .name('lz-initia-cli')\n .description('Wrapper of Initia cli')\n .version('0.1.0')\n .action((_, command: Command) => {\n logger.info('Please specify a subcommand')\n command.help()\n })\n\nasync function checkIfInitiaInstalled(): Promise<void> {\n try {\n await $`initiad version`\n } catch (e) {\n throw new Error('Initia cli is not installed')\n }\n}\n\nfunction checkIfInitiaConfigExists(): string {\n const packagePath = findUpSync('package.json', { cwd: process.cwd() })\n if (packagePath === undefined) {\n throw new Error('package.json not found')\n }\n const configPath = path.join(path.dirname(packagePath), 'lz-initia.config.ts')\n if (!fs.existsSync(configPath)) {\n throw new Error('lz-initia.config.ts not found, please create one in the same directory as package.json')\n }\n return configPath\n}\n\nasync function main(): Promise<void> {\n await checkIfInitiaInstalled()\n const configPath = checkIfInitiaConfigExists()\n const config = loadConfig(configPath)\n Object.values(subCommands).forEach((subCommand: Command) => {\n subCommand.setOptionValue('__CONTEXT__', config)\n program.addCommand(subCommand)\n })\n await program.parseAsync()\n}\n\nmain()\n .then(() => process.exit(process.exitCode))\n .catch((error: unknown) => {\n logger.error(error)\n process.exit(1)\n })\n","import { LzInitiaConfig } from '@/types'\n\nexport function loadConfig(configPath: string): LzInitiaConfig {\n // WARNING: require('ts-node') will cause '[ERROR] Unterminated template (867:31) [plugin commonjs]' in some cases\n // this error can be eliminated by assigning the name to a variable and require that variable\n const moduleName = 'ts-node'\n const tsnode = require(moduleName) as typeof import('ts-node')\n tsnode.register({\n transpileOnly: true,\n typeCheck: false,\n })\n\n try {\n type ImportType = LzInitiaConfig | { default: LzInitiaConfig }\n const imported = require(configPath) as ImportType\n return 'default' in imported ? imported.default : imported\n } catch (e) {\n if (e !== null && typeof e === 'object' && 'code' in e && e.code === 'ERR_REQUIRE_ESM') {\n throw new Error(\n `Your project is an ESM project (you have \"type\": \"module\" set in your package.json) but your LayerZero config file uses the .js extension.`\n )\n }\n\n throw e\n }\n}\n","export { command as deploy } from './deploy'\nexport { command as build } from './build'\n","import fs from 'fs'\nimport * as crypto from 'node:crypto'\nimport path from 'path'\n\nimport { getInitiaClient } from '@/client'\nimport { getDeployer } from '@/deployer'\nimport { handleError } from '@/errors'\nimport { getMoveContext } from '@/move'\nimport { LzInitiaConfig } from '@/types'\nimport { AccAddress, MsgPublish, TxError, Wallet } from '@initia/initia.js'\nimport { glob } from 'glob'\n\nimport { EndpointVersion, Network, Stage, networkToEnv, networkToStage } from '@layerzerolabs/lz-definitions'\n\nfunction deploymentPath(pkgName: string, dest: string, network: Network, variant?: string): string {\n const deploymentPath = path.join(dest, network)\n return path.join(deploymentPath, `${pkgWithVariant(pkgName, variant)}.json`)\n}\n\nexport function saveDeployment(\n moduleName: string,\n pkgName: string,\n address: string,\n dest: string,\n network: Network,\n bytecodeHash: string,\n hash: string,\n variant?: string,\n compatibleVersions = [EndpointVersion.V1, EndpointVersion.V2]\n): void {\n const destPath = deploymentPath(pkgName, dest, network, variant)\n const deploymentDir = path.dirname(destPath)\n if (!fs.existsSync(deploymentDir)) {\n fs.mkdirSync(deploymentDir, { recursive: true })\n }\n fs.writeFileSync(\n destPath,\n JSON.stringify(\n {\n address,\n name: pkgWithVariant(pkgName, variant),\n moduleName,\n network,\n compatibleVersions,\n bytecodeHash,\n transactionHash: hash,\n },\n null,\n 2\n )\n )\n console.log(`Deployment saved to ${destPath}`)\n}\n\nfunction needDeploy(pkgName: string, dest: string, network: Network, bytecodeHash: string, variant?: string): boolean {\n if (networkToStage(network) === Stage.SANDBOX) {\n return true\n }\n const destPath = deploymentPath(pkgName, dest, network, variant)\n if (fs.existsSync(destPath)) {\n const deployment = JSON.parse(fs.readFileSync(destPath, 'utf-8')) as { bytecodeHash: string }\n return deployment.bytecodeHash !== bytecodeHash\n }\n return true\n}\n\nfunction pkgWithVariant(pkgName: string, variant?: string): string {\n return variant !== undefined && variant.length > 0 ? `${pkgName}-${variant}` : pkgName\n}\n\nfunction getBytecodesHash(bytecodes: Uint8Array[]): string {\n // sha256 hash of all bytecodes\n const hash = crypto.createHash('sha256')\n bytecodes.forEach((bytecode) => {\n hash.update(bytecode)\n })\n return hash.digest('hex')\n}\n\nexport async function deploy(\n moduleName: string,\n lzInitiaConfig: LzInitiaConfig,\n network: Network,\n variant?: string\n): Promise<void> {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n throw new Error(`module ${moduleName} not found`)\n }\n const env = networkToEnv(network, EndpointVersion.V2)\n const client = getInitiaClient(env, lzInitiaConfig)\n const deployer = getDeployer(moduleName, lzInitiaConfig, network)\n const context = getMoveContext(moduleName, lzInitiaConfig, network)\n const pkgName = lzInitiaConfig.modules[moduleName]?.alias ?? context[moduleName]!.package.name\n const moduleDir = path.join(lzInitiaConfig.artifactsPath, `${pkgWithVariant(pkgName, variant)}/bytecode_modules`)\n\n const moduleNames: string[] = glob.sync('*.mv', { cwd: moduleDir })\n const moduleBuffers = moduleNames.map((moduleName) => fs.readFileSync(path.join(moduleDir, moduleName)))\n const bytecodeHash = getBytecodesHash(moduleBuffers)\n if (!needDeploy(pkgName, lzInitiaConfig.deploymentPath, network, bytecodeHash, variant)) {\n console.warn(`Code of ${moduleName} has not changed, skipping deploy`)\n return\n }\n try {\n // TODO policy from config\n const msgs = [\n new MsgPublish(\n deployer.accAddress,\n moduleBuffers.map((codeBytes) => codeBytes.toString('base64')),\n MsgPublish.Policy.COMPATIBLE\n ),\n ]\n const wallet = new Wallet(client, deployer)\n const gasPrices =\n lzInitiaConfig.gasPrice?.[network] === undefined ? undefined : `${lzInitiaConfig.gasPrice[network]}unit`\n const signedTx = await wallet.createAndSignTx({ msgs, gasPrices })\n const tx = await client.tx.broadcast(signedTx)\n if (((tx as TxError).code as number) !== 0) {\n throw new Error(tx.raw_log)\n }\n console.log(`Deploy transaction ${tx.txhash} successfully`)\n saveDeployment(\n moduleName,\n pkgName,\n AccAddress.toHex(deployer.accAddress),\n lzInitiaConfig.deploymentPath,\n network,\n bytecodeHash,\n tx.txhash,\n variant,\n lzInitiaConfig.compatibleVersions\n )\n } catch (e: unknown) {\n if (e instanceof Error) {\n handleError(e, moduleName, context, network)\n } else {\n throw e\n }\n }\n}\n","import { LzInitiaConfig } from '@/types'\nimport { LCDClient } from '@initia/initia.js'\n\nimport { Environment } from '@layerzerolabs/lz-definitions'\n\nexport function getInitiaClient(env: Environment, config: LzInitiaConfig): LCDClient {\n const url = config.network?.[env] as string | undefined\n if (url === undefined) {\n throw new Error(`No network url for ${env} found in lz-initia.config.ts`)\n }\n const lcd = new LCDClient(url)\n return lcd\n}\n","import { loadConfig } from '@/loader'\nimport { LzInitiaConfig } from '@/types'\nimport { MnemonicKey } from '@initia/initia.js'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nexport function isInitiaAccount(account: object | undefined): account is MnemonicKey {\n return account !== undefined && account instanceof MnemonicKey\n}\n\nexport function getDeployer(moduleName: string, lzInitiaConfig: LzInitiaConfig, network: Network): MnemonicKey {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n if (lzInitiaConfig.baseModules && lzInitiaConfig.baseModules.length > 0) {\n for (const baseModule of lzInitiaConfig.baseModules) {\n const baseConfig = loadConfig(baseModule)\n try {\n return getDeployer(moduleName, baseConfig, network)\n } catch (e) {\n /* ignore */\n }\n }\n }\n throw new Error(\n `Module ${moduleName} not found. Make sure it is defined in lz-initia.config.ts and double check the key is the package name in Move.toml.`\n )\n }\n const moduleDeployer = isInitiaAccount(module.deployer) ? module.deployer : module.deployer?.[network]\n const defaultDeployer = isInitiaAccount(lzInitiaConfig.defaultDeployer)\n ? lzInitiaConfig.defaultDeployer\n : lzInitiaConfig.defaultDeployer?.[network]\n const deployer = moduleDeployer ?? defaultDeployer\n if (!deployer) {\n throw new Error(`deployer for module ${moduleName} not found`)\n }\n return deployer\n}\n","import { AxiosError, MoveContext } from '@/types'\nimport { AccAddress } from '@initia/initia.js'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nfunction isAxiosError(error: any): error is AxiosError {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return error?.response?.data?.message !== undefined\n}\n\nfunction handleDepMissingError(error: AxiosError, moduleName: string, context: MoveContext): void {\n if (error.response.data.message.includes('EPACKAGE_DEP_MISSING')) {\n throw new Error(\n `Deploy ${moduleName} failed with EPACKAGE_DEP_MISSING, make sure you have deployed the dependent module [${Object.keys(\n context\n )\n .filter((module) => module !== moduleName)\n .join(',')}]`\n )\n }\n}\n\nfunction handleAccountNotFoundError(\n error: AxiosError,\n moduleName: string,\n context: MoveContext,\n network: Network\n): void {\n const address = context[moduleName]?.addresses[moduleName]\n if (address === undefined) {\n return\n }\n if (error.response.data.message.includes(`account ${AccAddress.fromHex(address)} not found`)) {\n throw new Error(\n `${error.response.data.message}, make sure you have funded the account ${AccAddress.fromHex(address)}(${address}) on ${network}`\n )\n }\n}\n\nfunction handleSenderNotMatchError(error: AxiosError, moduleName: string): void {\n if (error.response.data.message.includes('MODULE_ADDRESS_DOES_NOT_MATCH_SENDER')) {\n throw new Error(\n `Deploy ${moduleName} failed with MODULE_ADDRESS_DOES_NOT_MATCH_SENDER, make sure you compile ${moduleName} with the deployer account address`\n )\n }\n}\n\nfunction handleOtherAxiosError(error: AxiosError): void {\n throw new Error(error.response.data.message)\n}\n\nexport function handleError(error: Error, moduleName: string, context: MoveContext, network: Network): void {\n if (isAxiosError(error)) {\n handleDepMissingError(error, moduleName, context)\n handleAccountNotFoundError(error, moduleName, context, network)\n handleSenderNotMatchError(error, moduleName)\n handleOtherAxiosError(error)\n }\n throw error\n}\n","import fs from 'fs'\nimport path from 'path'\n\nimport { getDeployer } from '@/deployer'\nimport { LzInitiaConfig, ModuleAddresses, MoveContext, MoveToml } from '@/types'\nimport { AccAddress } from '@initia/initia.js'\nimport { parse } from 'smol-toml'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nexport function getRawMoveContextByPath(modulePath: string): MoveContext {\n const tomlPath = path.join(modulePath, 'Move.toml')\n if (!fs.existsSync(tomlPath)) {\n throw new Error(`Move.toml not found in ${tomlPath}`)\n }\n const toml = parse(fs.readFileSync(tomlPath, 'utf-8')) as unknown as MoveToml\n const { dependencies } = toml\n let result: MoveContext = { [toml.package.name]: toml } satisfies MoveContext\n if (dependencies !== undefined) {\n Object.keys(dependencies)\n .filter((key) => {\n return dependencies[key]?.local !== undefined\n })\n .forEach((key) => {\n const dependency = dependencies[key] as { local: string }\n const dependencyPath = path.join(modulePath, dependency.local)\n result = { ...getRawMoveContextByPath(dependencyPath), ...result } satisfies MoveContext\n })\n }\n return result\n}\n\nexport function parseAddresses(addresses: ModuleAddresses, network: Network): { [key in string]?: string } {\n if (addresses === undefined) {\n return {}\n }\n const result: { [key in string]?: string } = {}\n for (const key of Object.keys(addresses)) {\n const value = addresses[key]\n if (typeof value === 'string') {\n result[key] = value\n } else {\n const networkAddress = value[network]\n if (networkAddress === undefined) {\n throw new Error(`${key} address not found for network ${network}`)\n }\n result[key] = networkAddress\n }\n }\n return result\n}\n\nexport function getMoveContext(moduleName: string, lzInitiaConfig: LzInitiaConfig, network: Network): MoveContext {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n throw new Error(`module ${moduleName} not found when getting Move context`)\n }\n const context = getRawMoveContextByPath(module.modulePath)\n for (const key of Object.keys(context)) {\n const toml = context[key]!\n for (const addressKey of Object.keys(toml.addresses)) {\n const address = toml.addresses[addressKey]\n const presetAddresses = parseAddresses(lzInitiaConfig.modules[key]?.addresses, network)\n if (address === '_') {\n if (presetAddresses[addressKey] !== undefined && presetAddresses[addressKey] !== '') {\n toml.addresses[addressKey] = presetAddresses[addressKey]!\n } else {\n try {\n toml.addresses[addressKey] = AccAddress.toHex(\n getDeployer(addressKey, lzInitiaConfig, network).accAddress\n )\n } catch (e) {\n if (key === moduleName) {\n throw new Error(`Fail to generate context for ${key}. ${(e as Error).toString()}`)\n } else {\n throw new Error(\n `Fail to generate context for dependent module ${key}. ${(e as Error).toString()}`\n )\n }\n }\n }\n }\n }\n }\n return context\n}\n","import { deploy } from '@/deploy'\nimport { Command, createOption } from '@commander-js/extra-typings'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nimport { LzInitiaConfig } from '../types'\n\nconst command = new Command()\n\nexport { command }\n\ncommand\n .name('deploy')\n .description('deploy Initia modules')\n .addOption(createOption('-m, --modules <modules...>', 'modules').makeOptionMandatory(true))\n .addOption(createOption('-n, --network <network>', 'network').makeOptionMandatory(true))\n .addOption(createOption('-v, --variant <variant>', 'variant').makeOptionMandatory(false))\n .action(async (options: { network: string; modules: string[]; variant?: string }, cmd: Command) => {\n const context = cmd.getOptionValue('__CONTEXT__') as LzInitiaConfig\n\n const { modules, variant, network } = options\n for (const module of modules) {\n await deploy(module, context, network as Network, variant ?? context.modules[module]?.variant)\n }\n })\n","import fs from 'fs'\nimport path from 'path'\n\nimport { getMoveContext } from '@/move'\nimport { parseOptions } from '@/options'\nimport { CmdOptions, LzInitiaConfig, MoveToml } from '@/types'\nimport { glob } from 'glob'\nimport { $, ProcessOutput } from 'zx'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\n// eslint-disable-next-line @typescript-eslint/promise-function-async\nexport function buildProcess(\n modulePath: string,\n addresses: { [key: string]: string },\n toml: MoveToml,\n customOptions: CmdOptions = {}\n): Promise<ProcessOutput> {\n const addressesParam = Object.keys(addresses)\n .map((key) => `${key}=${addresses[key]}`)\n .join(',')\n const defaultOptions = {\n '--skip-fetch-latest-git-deps': true,\n '--named-addresses': addressesParam,\n }\n const args = parseOptions(defaultOptions, customOptions)\n return $({\n cwd: modulePath,\n stdio: ['inherit', 'pipe', process.stderr],\n verbose: true,\n })`initiad move build ${args}`\n}\n\nexport async function copyArtifacts(src: string, dest: string): Promise<void> {\n // remove existing artifacts, this is necessary to avoid leaving old artifacts\n if (fs.existsSync(dest)) {\n console.log(`Removing existing artifacts at ${dest}`)\n fs.rmSync(dest, { recursive: true })\n }\n fs.mkdirSync(dest, { recursive: true })\n const moduleDir = path.join(src, 'bytecode_modules')\n const modules = glob.sync('*.mv', { cwd: moduleDir })\n for (const module of modules) {\n const destByteCodePath = path.join(dest, 'bytecode_modules')\n if (!fs.existsSync(destByteCodePath)) {\n fs.mkdirSync(destByteCodePath, { recursive: true })\n }\n await $({\n verbose: true,\n })`cp ${path.join(moduleDir, module)} ${path.join(destByteCodePath, module)}`\n }\n}\n\nexport async function build(\n moduleName: string,\n lzInitiaConfig: LzInitiaConfig,\n network: Network,\n skipBuild = false,\n variant?: string\n): Promise<void> {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n throw new Error(`module ${moduleName} not found`)\n }\n const { modulePath } = module\n const context = getMoveContext(moduleName, lzInitiaConfig, network)\n const pkgName = context[moduleName]!.package.name\n const srcPath = path.join(modulePath, 'build', pkgName)\n const outputDir = lzInitiaConfig.modules[moduleName]?.alias ?? pkgName\n const outputPath = path.join(\n lzInitiaConfig.artifactsPath,\n variant !== undefined && variant.length > 0 ? `${outputDir}-${variant}` : outputDir\n )\n let addresses: { [key: string]: string } = {}\n for (const key of Object.keys(context)) {\n const toml = context[key]!\n if (!(key in toml.addresses)) {\n throw new Error(`address not found for ${key}`)\n }\n addresses = { ...addresses, ...toml.addresses }\n }\n addresses = { ...addresses, ...context[moduleName]!.addresses }\n if (!skipBuild) {\n await buildProcess(modulePath, addresses, context[moduleName]!, {\n ...lzInitiaConfig.compileOptions,\n ...module.compileOptions,\n })\n }\n await copyArtifacts(srcPath, outputPath)\n}\n","import { CmdOptions } from '@/types'\n\nexport function parseOptions(defaultOptions: CmdOptions, customOptions: CmdOptions): string[] {\n const options: CmdOptions = { ...defaultOptions, ...customOptions }\n const res: string[] = []\n for (const key of Object.keys(options)) {\n if (typeof options[key] === 'boolean') {\n if (options[key] === true) {\n res.push(key)\n }\n } else {\n res.push(key)\n res.push(options[key] as string)\n }\n }\n return res\n}\n","import { build } from '@/build'\nimport { Command, createOption } from '@commander-js/extra-typings'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nimport { LzInitiaConfig } from '../types'\n\nconst command = new Command()\n\nexport { command }\n\ncommand\n .name('build')\n .description('build Initia program')\n .addOption(createOption('-m, --modules <modules...>', 'modules').makeOptionMandatory(true))\n .addOption(createOption('-n, --network <network>', 'network').makeOptionMandatory(true))\n .addOption(createOption('-v, --variant <variant>', 'variant').makeOptionMandatory(false))\n .addOption(createOption('-sb, --skip-build', 'skip build').default(false))\n .action(async (options: { network: string; modules: string[]; variant?: string; skipBuild: boolean }, cmd) => {\n const context = cmd.getOptionValue('__CONTEXT__') as LzInitiaConfig\n const { skipBuild, modules, network, variant } = options\n for (const module of modules) {\n await build(module, context, network as Network, skipBuild, variant ?? context.modules[module]?.variant)\n }\n })\n"]}
1
+ {"version":3,"sources":["../src/cli.ts","../src/loader.ts","../src/subCommands/index.ts","../src/deploy.ts","../src/client.ts","../src/deployer.ts","../src/errors.ts","../src/move.ts","../src/subCommands/deploy.ts","../src/build.ts","../src/options.ts","../src/subCommands/build.ts"],"names":["fs","path","process","Command","$","command","AccAddress","deploymentPath","moduleName","glob","createOption"],"mappings":"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","sourcesContent":["import fs from 'fs'\nimport path from 'path'\nimport process from 'process'\n\nimport { loadConfig } from '@/loader'\nimport { Command } from '@commander-js/extra-typings'\nimport { sync as findUpSync } from 'find-up'\nimport { $ } from 'zx/core'\n\nimport { getLogger } from '@layerzerolabs/lz-utilities'\n\nimport * as subCommands from './subCommands'\n\nconst program = new Command()\n// iterate over subCommands and add them to the program\nconst logger = getLogger()\n\nprogram\n .name('lz-initia-cli')\n .description('Wrapper of Initia cli')\n .version('0.1.0')\n .action((_, command: Command) => {\n logger.info('Please specify a subcommand')\n command.help()\n })\n\nasync function checkIfInitiaInstalled(): Promise<void> {\n try {\n await $`initiad version`\n } catch (e) {\n throw new Error('Initia cli is not installed')\n }\n}\n\nfunction checkIfInitiaConfigExists(): string {\n const packagePath = findUpSync('package.json', { cwd: process.cwd() })\n if (packagePath === undefined) {\n throw new Error('package.json not found')\n }\n const configPath = path.join(path.dirname(packagePath), 'lz-initia.config.ts')\n if (!fs.existsSync(configPath)) {\n throw new Error('lz-initia.config.ts not found, please create one in the same directory as package.json')\n }\n return configPath\n}\n\nasync function main(): Promise<void> {\n await checkIfInitiaInstalled()\n const configPath = checkIfInitiaConfigExists()\n const config = loadConfig(configPath)\n Object.values(subCommands).forEach((subCommand: Command) => {\n subCommand.setOptionValue('__CONTEXT__', config)\n program.addCommand(subCommand)\n })\n await program.parseAsync()\n}\n\nmain()\n .then(() => process.exit(process.exitCode))\n .catch((error: unknown) => {\n logger.error(error)\n process.exit(1)\n })\n","import { LzInitiaConfig } from '@/types'\n\nexport function loadConfig(configPath: string): LzInitiaConfig {\n // WARNING: require('ts-node') will cause '[ERROR] Unterminated template (867:31) [plugin commonjs]' in some cases\n // this error can be eliminated by assigning the name to a variable and require that variable\n const moduleName = 'ts-node'\n const tsnode = require(moduleName) as typeof import('ts-node')\n tsnode.register({\n transpileOnly: true,\n typeCheck: false,\n })\n\n try {\n type ImportType = LzInitiaConfig | { default: LzInitiaConfig }\n const imported = require(configPath) as ImportType\n return 'default' in imported ? imported.default : imported\n } catch (e) {\n if (e !== null && typeof e === 'object' && 'code' in e && e.code === 'ERR_REQUIRE_ESM') {\n throw new Error(\n `Your project is an ESM project (you have \"type\": \"module\" set in your package.json) but your LayerZero config file uses the .js extension.`\n )\n }\n\n throw e\n }\n}\n","export { command as deploy } from './deploy'\nexport { command as build } from './build'\n","import fs from 'fs'\nimport * as crypto from 'node:crypto'\nimport path from 'path'\n\nimport { getInitiaClient } from '@/client'\nimport { getDeployer } from '@/deployer'\nimport { handleError } from '@/errors'\nimport { getMoveContext } from '@/move'\nimport { LzInitiaConfig } from '@/types'\nimport { AccAddress, MsgPublish, TxError, Wallet } from '@initia/initia.js'\nimport { glob } from 'glob'\n\nimport { EndpointVersion, Network, Stage, networkToEnv, networkToStage } from '@layerzerolabs/lz-definitions'\n\nfunction deploymentPath(pkgName: string, dest: string, network: Network, variant?: string): string {\n const deploymentPath = path.join(dest, network)\n return path.join(deploymentPath, `${pkgWithVariant(pkgName, variant)}.json`)\n}\n\nexport function saveDeployment(\n moduleName: string,\n pkgName: string,\n address: string,\n dest: string,\n network: Network,\n bytecodeHash: string,\n hash: string,\n variant?: string,\n compatibleVersions = [EndpointVersion.V1, EndpointVersion.V2]\n): void {\n const destPath = deploymentPath(pkgName, dest, network, variant)\n const deploymentDir = path.dirname(destPath)\n if (!fs.existsSync(deploymentDir)) {\n fs.mkdirSync(deploymentDir, { recursive: true })\n }\n fs.writeFileSync(\n destPath,\n JSON.stringify(\n {\n address,\n name: pkgWithVariant(pkgName, variant),\n moduleName,\n network,\n compatibleVersions,\n bytecodeHash,\n transactionHash: hash,\n },\n null,\n 2\n )\n )\n console.log(`Deployment saved to ${destPath}`)\n}\n\nfunction needDeploy(pkgName: string, dest: string, network: Network, bytecodeHash: string, variant?: string): boolean {\n if (networkToStage(network) === Stage.SANDBOX) {\n return true\n }\n const destPath = deploymentPath(pkgName, dest, network, variant)\n if (fs.existsSync(destPath)) {\n const deployment = JSON.parse(fs.readFileSync(destPath, 'utf-8')) as { bytecodeHash: string }\n return deployment.bytecodeHash !== bytecodeHash\n }\n return true\n}\n\nfunction pkgWithVariant(pkgName: string, variant?: string): string {\n return variant !== undefined && variant.length > 0 ? `${pkgName}-${variant}` : pkgName\n}\n\nfunction getBytecodesHash(bytecodes: Uint8Array[]): string {\n // sha256 hash of all bytecodes\n const hash = crypto.createHash('sha256')\n bytecodes.forEach((bytecode) => {\n hash.update(bytecode)\n })\n return hash.digest('hex')\n}\n\nexport async function deploy(\n moduleName: string,\n lzInitiaConfig: LzInitiaConfig,\n network: Network,\n variant?: string\n): Promise<void> {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n throw new Error(`module ${moduleName} not found`)\n }\n const env = networkToEnv(network, EndpointVersion.V2)\n const client = getInitiaClient(env, lzInitiaConfig)\n const deployer = getDeployer(moduleName, lzInitiaConfig, network)\n const context = getMoveContext(moduleName, lzInitiaConfig, network)\n const pkgName = lzInitiaConfig.modules[moduleName]?.alias ?? context[moduleName]!.package.name\n const moduleDir = path.join(lzInitiaConfig.artifactsPath, `${pkgWithVariant(pkgName, variant)}/bytecode_modules`)\n\n const moduleNames: string[] = glob.sync('*.mv', { cwd: moduleDir })\n const moduleBuffers = moduleNames.map((moduleName) => fs.readFileSync(path.join(moduleDir, moduleName)))\n const bytecodeHash = getBytecodesHash(moduleBuffers)\n if (!needDeploy(pkgName, lzInitiaConfig.deploymentPath, network, bytecodeHash, variant)) {\n console.warn(`Code of ${moduleName} has not changed, skipping deploy`)\n return\n }\n try {\n // TODO policy from config\n const msgs = [\n new MsgPublish(\n deployer.accAddress,\n moduleBuffers.map((codeBytes) => codeBytes.toString('base64')),\n MsgPublish.Policy.COMPATIBLE\n ),\n ]\n const wallet = new Wallet(client, deployer)\n const gasPrices =\n lzInitiaConfig.gasPrice?.[network] === undefined ? undefined : `${lzInitiaConfig.gasPrice[network]}unit`\n const signedTx = await wallet.createAndSignTx({ msgs, gasPrices })\n const tx = await client.tx.broadcast(signedTx)\n if (((tx as TxError).code as number) !== 0) {\n throw new Error(tx.raw_log)\n }\n console.log(`Deploy transaction ${tx.txhash} successfully`)\n saveDeployment(\n moduleName,\n pkgName,\n AccAddress.toHex(deployer.accAddress),\n lzInitiaConfig.deploymentPath,\n network,\n bytecodeHash,\n tx.txhash,\n variant,\n lzInitiaConfig.compatibleVersions\n )\n } catch (e: unknown) {\n if (e instanceof Error) {\n handleError(e, moduleName, context, network)\n } else {\n throw e\n }\n }\n}\n","import { LzInitiaConfig } from '@/types'\nimport { LCDClient } from '@initia/initia.js'\n\nimport { Environment } from '@layerzerolabs/lz-definitions'\n\nexport function getInitiaClient(env: Environment, config: LzInitiaConfig): LCDClient {\n const url = config.network?.[env] as string | undefined\n if (url === undefined) {\n throw new Error(`No network url for ${env} found in lz-initia.config.ts`)\n }\n const lcd = new LCDClient(url)\n return lcd\n}\n","import { loadConfig } from '@/loader'\nimport { LzInitiaConfig } from '@/types'\nimport { MnemonicKey } from '@initia/initia.js'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nexport function isInitiaAccount(account: object | undefined): account is MnemonicKey {\n return account !== undefined && account instanceof MnemonicKey\n}\n\nexport function getDeployer(moduleName: string, lzInitiaConfig: LzInitiaConfig, network: Network): MnemonicKey {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n if (lzInitiaConfig.baseModules && lzInitiaConfig.baseModules.length > 0) {\n for (const baseModule of lzInitiaConfig.baseModules) {\n const baseConfig = loadConfig(baseModule)\n try {\n return getDeployer(moduleName, baseConfig, network)\n } catch (e) {\n /* ignore */\n }\n }\n }\n throw new Error(\n `Module ${moduleName} not found. Make sure it is defined in lz-initia.config.ts and double check the key is the package name in Move.toml.`\n )\n }\n const moduleDeployer = isInitiaAccount(module.deployer) ? module.deployer : module.deployer?.[network]\n const defaultDeployer = isInitiaAccount(lzInitiaConfig.defaultDeployer)\n ? lzInitiaConfig.defaultDeployer\n : lzInitiaConfig.defaultDeployer?.[network]\n const deployer = moduleDeployer ?? defaultDeployer\n if (!deployer) {\n throw new Error(`deployer for module ${moduleName} not found`)\n }\n return deployer\n}\n","import { AxiosError, MoveContext } from '@/types'\nimport { AccAddress } from '@initia/initia.js'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nfunction isAxiosError(error: any): error is AxiosError {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return error?.response?.data?.message !== undefined\n}\n\nfunction handleDepMissingError(error: AxiosError, moduleName: string, context: MoveContext): void {\n if (error.response.data.message.includes('EPACKAGE_DEP_MISSING')) {\n throw new Error(\n `Deploy ${moduleName} failed with EPACKAGE_DEP_MISSING, make sure you have deployed the dependent module [${Object.keys(\n context\n )\n .filter((module) => module !== moduleName)\n .join(',')}]`\n )\n }\n}\n\nfunction handleAccountNotFoundError(\n error: AxiosError,\n moduleName: string,\n context: MoveContext,\n network: Network\n): void {\n const address = context[moduleName]?.addresses[moduleName]\n if (address === undefined) {\n return\n }\n if (error.response.data.message.includes(`account ${AccAddress.fromHex(address)} not found`)) {\n throw new Error(\n `${error.response.data.message}, make sure you have funded the account ${AccAddress.fromHex(address)}(${address}) on ${network}`\n )\n }\n}\n\nfunction handleSenderNotMatchError(error: AxiosError, moduleName: string): void {\n if (error.response.data.message.includes('MODULE_ADDRESS_DOES_NOT_MATCH_SENDER')) {\n throw new Error(\n `Deploy ${moduleName} failed with MODULE_ADDRESS_DOES_NOT_MATCH_SENDER, make sure you compile ${moduleName} with the deployer account address`\n )\n }\n}\n\nfunction handleOtherAxiosError(error: AxiosError): void {\n throw new Error(error.response.data.message)\n}\n\nexport function handleError(error: Error, moduleName: string, context: MoveContext, network: Network): void {\n if (isAxiosError(error)) {\n handleDepMissingError(error, moduleName, context)\n handleAccountNotFoundError(error, moduleName, context, network)\n handleSenderNotMatchError(error, moduleName)\n handleOtherAxiosError(error)\n }\n throw error\n}\n","import fs from 'fs'\nimport path from 'path'\n\nimport { getDeployer } from '@/deployer'\nimport { LzInitiaConfig, ModuleAddresses, MoveContext, MoveToml } from '@/types'\nimport { AccAddress } from '@initia/initia.js'\nimport { parse } from 'smol-toml'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nexport function getRawMoveContextByPath(modulePath: string): MoveContext {\n const tomlPath = path.join(modulePath, 'Move.toml')\n if (!fs.existsSync(tomlPath)) {\n throw new Error(`Move.toml not found in ${tomlPath}`)\n }\n const toml = parse(fs.readFileSync(tomlPath, 'utf-8')) as unknown as MoveToml\n const { dependencies } = toml\n let result: MoveContext = { [toml.package.name]: toml } satisfies MoveContext\n if (dependencies !== undefined) {\n Object.keys(dependencies)\n .filter((key) => {\n return dependencies[key]?.local !== undefined\n })\n .forEach((key) => {\n const dependency = dependencies[key] as { local: string }\n const dependencyPath = path.join(modulePath, dependency.local)\n result = { ...getRawMoveContextByPath(dependencyPath), ...result } satisfies MoveContext\n })\n }\n return result\n}\n\nexport function parseAddresses(addresses: ModuleAddresses, network: Network): { [key in string]?: string } {\n if (addresses === undefined) {\n return {}\n }\n const result: { [key in string]?: string } = {}\n for (const key of Object.keys(addresses)) {\n const value = addresses[key]\n if (typeof value === 'string') {\n result[key] = value\n } else {\n const networkAddress = value[network]\n if (networkAddress === undefined) {\n throw new Error(`${key} address not found for network ${network}`)\n }\n result[key] = networkAddress\n }\n }\n return result\n}\n\nexport function getMoveContext(moduleName: string, lzInitiaConfig: LzInitiaConfig, network: Network): MoveContext {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n throw new Error(`module ${moduleName} not found when getting Move context`)\n }\n const context = getRawMoveContextByPath(module.modulePath)\n for (const key of Object.keys(context)) {\n const toml = context[key]!\n for (const addressKey of Object.keys(toml.addresses)) {\n const address = toml.addresses[addressKey]\n const presetAddresses = {\n ...parseAddresses(lzInitiaConfig.modules[key]?.addresses, network),\n ...parseAddresses(lzInitiaConfig.modules[moduleName]?.addresses, network),\n }\n if (address === '_') {\n if (presetAddresses[addressKey] !== undefined && presetAddresses[addressKey] !== '') {\n toml.addresses[addressKey] = presetAddresses[addressKey]!\n } else {\n try {\n toml.addresses[addressKey] = AccAddress.toHex(\n getDeployer(addressKey, lzInitiaConfig, network).accAddress\n )\n } catch (e) {\n if (key === moduleName) {\n throw new Error(`Fail to generate context for ${key}. ${(e as Error).toString()}`)\n } else {\n throw new Error(\n `Fail to generate context for dependent module ${key}. ${(e as Error).toString()}`\n )\n }\n }\n }\n }\n }\n }\n return context\n}\n","import { deploy } from '@/deploy'\nimport { Command, createOption } from '@commander-js/extra-typings'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nimport { LzInitiaConfig } from '../types'\n\nconst command = new Command()\n\nexport { command }\n\ncommand\n .name('deploy')\n .description('deploy Initia modules')\n .addOption(createOption('-m, --modules <modules...>', 'modules').makeOptionMandatory(true))\n .addOption(createOption('-n, --network <network>', 'network').makeOptionMandatory(true))\n .addOption(createOption('-v, --variant <variant>', 'variant').makeOptionMandatory(false))\n .action(async (options: { network: string; modules: string[]; variant?: string }, cmd: Command) => {\n const context = cmd.getOptionValue('__CONTEXT__') as LzInitiaConfig\n\n const { modules, variant, network } = options\n for (const module of modules) {\n await deploy(module, context, network as Network, variant ?? context.modules[module]?.variant)\n }\n })\n","import fs from 'fs'\nimport path from 'path'\n\nimport { getMoveContext } from '@/move'\nimport { parseOptions } from '@/options'\nimport { CmdOptions, LzInitiaConfig, MoveToml } from '@/types'\nimport { glob } from 'glob'\nimport { $, ProcessOutput } from 'zx'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\n// eslint-disable-next-line @typescript-eslint/promise-function-async\nexport function buildProcess(\n modulePath: string,\n addresses: { [key: string]: string },\n toml: MoveToml,\n customOptions: CmdOptions = {}\n): Promise<ProcessOutput> {\n const addressesParam = Object.keys(addresses)\n .map((key) => `${key}=${addresses[key]}`)\n .join(',')\n const defaultOptions = {\n '--skip-fetch-latest-git-deps': true,\n '--named-addresses': addressesParam,\n }\n const args = parseOptions(defaultOptions, customOptions)\n return $({\n cwd: modulePath,\n stdio: ['inherit', 'pipe', process.stderr],\n verbose: true,\n })`initiad move build ${args}`\n}\n\nexport async function copyArtifacts(src: string, dest: string): Promise<void> {\n // remove existing artifacts, this is necessary to avoid leaving old artifacts\n if (fs.existsSync(dest)) {\n console.log(`Removing existing artifacts at ${dest}`)\n fs.rmSync(dest, { recursive: true })\n }\n fs.mkdirSync(dest, { recursive: true })\n const moduleDir = path.join(src, 'bytecode_modules')\n const modules = glob.sync('*.mv', { cwd: moduleDir })\n for (const module of modules) {\n const destByteCodePath = path.join(dest, 'bytecode_modules')\n if (!fs.existsSync(destByteCodePath)) {\n fs.mkdirSync(destByteCodePath, { recursive: true })\n }\n await $({\n verbose: true,\n })`cp ${path.join(moduleDir, module)} ${path.join(destByteCodePath, module)}`\n }\n}\n\nexport async function build(\n moduleName: string,\n lzInitiaConfig: LzInitiaConfig,\n network: Network,\n skipBuild = false,\n variant?: string\n): Promise<void> {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n throw new Error(`module ${moduleName} not found`)\n }\n const { modulePath } = module\n const context = getMoveContext(moduleName, lzInitiaConfig, network)\n const pkgName = context[moduleName]!.package.name\n const srcPath = path.join(modulePath, 'build', pkgName)\n const outputDir = lzInitiaConfig.modules[moduleName]?.alias ?? pkgName\n const outputPath = path.join(\n lzInitiaConfig.artifactsPath,\n variant !== undefined && variant.length > 0 ? `${outputDir}-${variant}` : outputDir\n )\n let addresses: { [key: string]: string } = {}\n for (const key of Object.keys(context)) {\n const toml = context[key]!\n if (!(key in toml.addresses)) {\n throw new Error(`address not found for ${key}`)\n }\n addresses = { ...addresses, ...toml.addresses }\n }\n addresses = { ...addresses, ...context[moduleName]!.addresses }\n if (!skipBuild) {\n await buildProcess(modulePath, addresses, context[moduleName]!, {\n ...lzInitiaConfig.compileOptions,\n ...module.compileOptions,\n })\n }\n await copyArtifacts(srcPath, outputPath)\n}\n","import { CmdOptions } from '@/types'\n\nexport function parseOptions(defaultOptions: CmdOptions, customOptions: CmdOptions): string[] {\n const options: CmdOptions = { ...defaultOptions, ...customOptions }\n const res: string[] = []\n for (const key of Object.keys(options)) {\n if (typeof options[key] === 'boolean') {\n if (options[key] === true) {\n res.push(key)\n }\n } else {\n res.push(key)\n res.push(options[key] as string)\n }\n }\n return res\n}\n","import { build } from '@/build'\nimport { Command, createOption } from '@commander-js/extra-typings'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nimport { LzInitiaConfig } from '../types'\n\nconst command = new Command()\n\nexport { command }\n\ncommand\n .name('build')\n .description('build Initia program')\n .addOption(createOption('-m, --modules <modules...>', 'modules').makeOptionMandatory(true))\n .addOption(\n createOption(\n '-p, --module-paths <paths...>',\n 'module paths of modules, use the path in lz-initia.config.ts if not specify'\n ).makeOptionMandatory(false)\n )\n .addOption(createOption('-n, --network <network>', 'network').makeOptionMandatory(true))\n .addOption(createOption('-v, --variant <variant>', 'variant').makeOptionMandatory(false))\n .addOption(createOption('-sb, --skip-build', 'skip build').default(false))\n .action(\n async (\n options: {\n network: string\n modules: string[]\n modulePaths?: string[]\n variant?: string\n skipBuild: boolean\n },\n cmd\n ) => {\n const context = cmd.getOptionValue('__CONTEXT__') as LzInitiaConfig\n const { skipBuild, modules, network, variant, modulePaths } = options\n // replace the modulePath in context with the modulePaths from command line\n if (modulePaths !== undefined) {\n for (let i = 0; i < modulePaths.length; i++) {\n const module = modules[i]\n const moduleConfig = context.modules[module]\n if (moduleConfig !== undefined) {\n moduleConfig.modulePath = modulePaths[i]\n }\n }\n }\n for (const module of modules) {\n await build(module, context, network as Network, skipBuild, variant ?? context.modules[module]?.variant)\n }\n }\n )\n"]}
package/dist/cli.mjs CHANGED
@@ -177,7 +177,10 @@ function getMoveContext(moduleName, lzInitiaConfig, network) {
177
177
  const toml = context[key];
178
178
  for (const addressKey of Object.keys(toml.addresses)) {
179
179
  const address = toml.addresses[addressKey];
180
- const presetAddresses = parseAddresses(lzInitiaConfig.modules[key]?.addresses, network);
180
+ const presetAddresses = {
181
+ ...parseAddresses(lzInitiaConfig.modules[key]?.addresses, network),
182
+ ...parseAddresses(lzInitiaConfig.modules[moduleName]?.addresses, network)
183
+ };
181
184
  if (address === "_") {
182
185
  if (presetAddresses[addressKey] !== void 0 && presetAddresses[addressKey] !== "") {
183
186
  toml.addresses[addressKey] = presetAddresses[addressKey];
@@ -391,13 +394,29 @@ async function build(moduleName, lzInitiaConfig, network, skipBuild = false, var
391
394
  await copyArtifacts(srcPath, outputPath);
392
395
  }
393
396
  var command2 = new Command();
394
- command2.name("build").description("build Initia program").addOption(createOption("-m, --modules <modules...>", "modules").makeOptionMandatory(true)).addOption(createOption("-n, --network <network>", "network").makeOptionMandatory(true)).addOption(createOption("-v, --variant <variant>", "variant").makeOptionMandatory(false)).addOption(createOption("-sb, --skip-build", "skip build").default(false)).action(async (options, cmd) => {
395
- const context = cmd.getOptionValue("__CONTEXT__");
396
- const { skipBuild, modules, network, variant } = options;
397
- for (const module of modules) {
398
- await build(module, context, network, skipBuild, variant ?? context.modules[module]?.variant);
397
+ command2.name("build").description("build Initia program").addOption(createOption("-m, --modules <modules...>", "modules").makeOptionMandatory(true)).addOption(
398
+ createOption(
399
+ "-p, --module-paths <paths...>",
400
+ "module paths of modules, use the path in lz-initia.config.ts if not specify"
401
+ ).makeOptionMandatory(false)
402
+ ).addOption(createOption("-n, --network <network>", "network").makeOptionMandatory(true)).addOption(createOption("-v, --variant <variant>", "variant").makeOptionMandatory(false)).addOption(createOption("-sb, --skip-build", "skip build").default(false)).action(
403
+ async (options, cmd) => {
404
+ const context = cmd.getOptionValue("__CONTEXT__");
405
+ const { skipBuild, modules, network, variant, modulePaths } = options;
406
+ if (modulePaths !== void 0) {
407
+ for (let i = 0; i < modulePaths.length; i++) {
408
+ const module = modules[i];
409
+ const moduleConfig = context.modules[module];
410
+ if (moduleConfig !== void 0) {
411
+ moduleConfig.modulePath = modulePaths[i];
412
+ }
413
+ }
414
+ }
415
+ for (const module of modules) {
416
+ await build(module, context, network, skipBuild, variant ?? context.modules[module]?.variant);
417
+ }
399
418
  }
400
- });
419
+ );
401
420
 
402
421
  // src/cli.ts
403
422
  var program = new Command();
package/dist/cli.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli.ts","../src/loader.ts","../src/subCommands/index.ts","../src/deploy.ts","../src/client.ts","../src/deployer.ts","../src/errors.ts","../src/move.ts","../src/subCommands/deploy.ts","../src/build.ts","../src/options.ts","../src/subCommands/build.ts"],"names":["fs","path","process","Command","$","command","AccAddress","deploymentPath","moduleName","glob","createOption"],"mappings":"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","sourcesContent":["import fs from 'fs'\nimport path from 'path'\nimport process from 'process'\n\nimport { loadConfig } from '@/loader'\nimport { Command } from '@commander-js/extra-typings'\nimport { sync as findUpSync } from 'find-up'\nimport { $ } from 'zx/core'\n\nimport { getLogger } from '@layerzerolabs/lz-utilities'\n\nimport * as subCommands from './subCommands'\n\nconst program = new Command()\n// iterate over subCommands and add them to the program\nconst logger = getLogger()\n\nprogram\n .name('lz-initia-cli')\n .description('Wrapper of Initia cli')\n .version('0.1.0')\n .action((_, command: Command) => {\n logger.info('Please specify a subcommand')\n command.help()\n })\n\nasync function checkIfInitiaInstalled(): Promise<void> {\n try {\n await $`initiad version`\n } catch (e) {\n throw new Error('Initia cli is not installed')\n }\n}\n\nfunction checkIfInitiaConfigExists(): string {\n const packagePath = findUpSync('package.json', { cwd: process.cwd() })\n if (packagePath === undefined) {\n throw new Error('package.json not found')\n }\n const configPath = path.join(path.dirname(packagePath), 'lz-initia.config.ts')\n if (!fs.existsSync(configPath)) {\n throw new Error('lz-initia.config.ts not found, please create one in the same directory as package.json')\n }\n return configPath\n}\n\nasync function main(): Promise<void> {\n await checkIfInitiaInstalled()\n const configPath = checkIfInitiaConfigExists()\n const config = loadConfig(configPath)\n Object.values(subCommands).forEach((subCommand: Command) => {\n subCommand.setOptionValue('__CONTEXT__', config)\n program.addCommand(subCommand)\n })\n await program.parseAsync()\n}\n\nmain()\n .then(() => process.exit(process.exitCode))\n .catch((error: unknown) => {\n logger.error(error)\n process.exit(1)\n })\n","import { LzInitiaConfig } from '@/types'\n\nexport function loadConfig(configPath: string): LzInitiaConfig {\n // WARNING: require('ts-node') will cause '[ERROR] Unterminated template (867:31) [plugin commonjs]' in some cases\n // this error can be eliminated by assigning the name to a variable and require that variable\n const moduleName = 'ts-node'\n const tsnode = require(moduleName) as typeof import('ts-node')\n tsnode.register({\n transpileOnly: true,\n typeCheck: false,\n })\n\n try {\n type ImportType = LzInitiaConfig | { default: LzInitiaConfig }\n const imported = require(configPath) as ImportType\n return 'default' in imported ? imported.default : imported\n } catch (e) {\n if (e !== null && typeof e === 'object' && 'code' in e && e.code === 'ERR_REQUIRE_ESM') {\n throw new Error(\n `Your project is an ESM project (you have \"type\": \"module\" set in your package.json) but your LayerZero config file uses the .js extension.`\n )\n }\n\n throw e\n }\n}\n","export { command as deploy } from './deploy'\nexport { command as build } from './build'\n","import fs from 'fs'\nimport * as crypto from 'node:crypto'\nimport path from 'path'\n\nimport { getInitiaClient } from '@/client'\nimport { getDeployer } from '@/deployer'\nimport { handleError } from '@/errors'\nimport { getMoveContext } from '@/move'\nimport { LzInitiaConfig } from '@/types'\nimport { AccAddress, MsgPublish, TxError, Wallet } from '@initia/initia.js'\nimport { glob } from 'glob'\n\nimport { EndpointVersion, Network, Stage, networkToEnv, networkToStage } from '@layerzerolabs/lz-definitions'\n\nfunction deploymentPath(pkgName: string, dest: string, network: Network, variant?: string): string {\n const deploymentPath = path.join(dest, network)\n return path.join(deploymentPath, `${pkgWithVariant(pkgName, variant)}.json`)\n}\n\nexport function saveDeployment(\n moduleName: string,\n pkgName: string,\n address: string,\n dest: string,\n network: Network,\n bytecodeHash: string,\n hash: string,\n variant?: string,\n compatibleVersions = [EndpointVersion.V1, EndpointVersion.V2]\n): void {\n const destPath = deploymentPath(pkgName, dest, network, variant)\n const deploymentDir = path.dirname(destPath)\n if (!fs.existsSync(deploymentDir)) {\n fs.mkdirSync(deploymentDir, { recursive: true })\n }\n fs.writeFileSync(\n destPath,\n JSON.stringify(\n {\n address,\n name: pkgWithVariant(pkgName, variant),\n moduleName,\n network,\n compatibleVersions,\n bytecodeHash,\n transactionHash: hash,\n },\n null,\n 2\n )\n )\n console.log(`Deployment saved to ${destPath}`)\n}\n\nfunction needDeploy(pkgName: string, dest: string, network: Network, bytecodeHash: string, variant?: string): boolean {\n if (networkToStage(network) === Stage.SANDBOX) {\n return true\n }\n const destPath = deploymentPath(pkgName, dest, network, variant)\n if (fs.existsSync(destPath)) {\n const deployment = JSON.parse(fs.readFileSync(destPath, 'utf-8')) as { bytecodeHash: string }\n return deployment.bytecodeHash !== bytecodeHash\n }\n return true\n}\n\nfunction pkgWithVariant(pkgName: string, variant?: string): string {\n return variant !== undefined && variant.length > 0 ? `${pkgName}-${variant}` : pkgName\n}\n\nfunction getBytecodesHash(bytecodes: Uint8Array[]): string {\n // sha256 hash of all bytecodes\n const hash = crypto.createHash('sha256')\n bytecodes.forEach((bytecode) => {\n hash.update(bytecode)\n })\n return hash.digest('hex')\n}\n\nexport async function deploy(\n moduleName: string,\n lzInitiaConfig: LzInitiaConfig,\n network: Network,\n variant?: string\n): Promise<void> {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n throw new Error(`module ${moduleName} not found`)\n }\n const env = networkToEnv(network, EndpointVersion.V2)\n const client = getInitiaClient(env, lzInitiaConfig)\n const deployer = getDeployer(moduleName, lzInitiaConfig, network)\n const context = getMoveContext(moduleName, lzInitiaConfig, network)\n const pkgName = lzInitiaConfig.modules[moduleName]?.alias ?? context[moduleName]!.package.name\n const moduleDir = path.join(lzInitiaConfig.artifactsPath, `${pkgWithVariant(pkgName, variant)}/bytecode_modules`)\n\n const moduleNames: string[] = glob.sync('*.mv', { cwd: moduleDir })\n const moduleBuffers = moduleNames.map((moduleName) => fs.readFileSync(path.join(moduleDir, moduleName)))\n const bytecodeHash = getBytecodesHash(moduleBuffers)\n if (!needDeploy(pkgName, lzInitiaConfig.deploymentPath, network, bytecodeHash, variant)) {\n console.warn(`Code of ${moduleName} has not changed, skipping deploy`)\n return\n }\n try {\n // TODO policy from config\n const msgs = [\n new MsgPublish(\n deployer.accAddress,\n moduleBuffers.map((codeBytes) => codeBytes.toString('base64')),\n MsgPublish.Policy.COMPATIBLE\n ),\n ]\n const wallet = new Wallet(client, deployer)\n const gasPrices =\n lzInitiaConfig.gasPrice?.[network] === undefined ? undefined : `${lzInitiaConfig.gasPrice[network]}unit`\n const signedTx = await wallet.createAndSignTx({ msgs, gasPrices })\n const tx = await client.tx.broadcast(signedTx)\n if (((tx as TxError).code as number) !== 0) {\n throw new Error(tx.raw_log)\n }\n console.log(`Deploy transaction ${tx.txhash} successfully`)\n saveDeployment(\n moduleName,\n pkgName,\n AccAddress.toHex(deployer.accAddress),\n lzInitiaConfig.deploymentPath,\n network,\n bytecodeHash,\n tx.txhash,\n variant,\n lzInitiaConfig.compatibleVersions\n )\n } catch (e: unknown) {\n if (e instanceof Error) {\n handleError(e, moduleName, context, network)\n } else {\n throw e\n }\n }\n}\n","import { LzInitiaConfig } from '@/types'\nimport { LCDClient } from '@initia/initia.js'\n\nimport { Environment } from '@layerzerolabs/lz-definitions'\n\nexport function getInitiaClient(env: Environment, config: LzInitiaConfig): LCDClient {\n const url = config.network?.[env] as string | undefined\n if (url === undefined) {\n throw new Error(`No network url for ${env} found in lz-initia.config.ts`)\n }\n const lcd = new LCDClient(url)\n return lcd\n}\n","import { loadConfig } from '@/loader'\nimport { LzInitiaConfig } from '@/types'\nimport { MnemonicKey } from '@initia/initia.js'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nexport function isInitiaAccount(account: object | undefined): account is MnemonicKey {\n return account !== undefined && account instanceof MnemonicKey\n}\n\nexport function getDeployer(moduleName: string, lzInitiaConfig: LzInitiaConfig, network: Network): MnemonicKey {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n if (lzInitiaConfig.baseModules && lzInitiaConfig.baseModules.length > 0) {\n for (const baseModule of lzInitiaConfig.baseModules) {\n const baseConfig = loadConfig(baseModule)\n try {\n return getDeployer(moduleName, baseConfig, network)\n } catch (e) {\n /* ignore */\n }\n }\n }\n throw new Error(\n `Module ${moduleName} not found. Make sure it is defined in lz-initia.config.ts and double check the key is the package name in Move.toml.`\n )\n }\n const moduleDeployer = isInitiaAccount(module.deployer) ? module.deployer : module.deployer?.[network]\n const defaultDeployer = isInitiaAccount(lzInitiaConfig.defaultDeployer)\n ? lzInitiaConfig.defaultDeployer\n : lzInitiaConfig.defaultDeployer?.[network]\n const deployer = moduleDeployer ?? defaultDeployer\n if (!deployer) {\n throw new Error(`deployer for module ${moduleName} not found`)\n }\n return deployer\n}\n","import { AxiosError, MoveContext } from '@/types'\nimport { AccAddress } from '@initia/initia.js'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nfunction isAxiosError(error: any): error is AxiosError {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return error?.response?.data?.message !== undefined\n}\n\nfunction handleDepMissingError(error: AxiosError, moduleName: string, context: MoveContext): void {\n if (error.response.data.message.includes('EPACKAGE_DEP_MISSING')) {\n throw new Error(\n `Deploy ${moduleName} failed with EPACKAGE_DEP_MISSING, make sure you have deployed the dependent module [${Object.keys(\n context\n )\n .filter((module) => module !== moduleName)\n .join(',')}]`\n )\n }\n}\n\nfunction handleAccountNotFoundError(\n error: AxiosError,\n moduleName: string,\n context: MoveContext,\n network: Network\n): void {\n const address = context[moduleName]?.addresses[moduleName]\n if (address === undefined) {\n return\n }\n if (error.response.data.message.includes(`account ${AccAddress.fromHex(address)} not found`)) {\n throw new Error(\n `${error.response.data.message}, make sure you have funded the account ${AccAddress.fromHex(address)}(${address}) on ${network}`\n )\n }\n}\n\nfunction handleSenderNotMatchError(error: AxiosError, moduleName: string): void {\n if (error.response.data.message.includes('MODULE_ADDRESS_DOES_NOT_MATCH_SENDER')) {\n throw new Error(\n `Deploy ${moduleName} failed with MODULE_ADDRESS_DOES_NOT_MATCH_SENDER, make sure you compile ${moduleName} with the deployer account address`\n )\n }\n}\n\nfunction handleOtherAxiosError(error: AxiosError): void {\n throw new Error(error.response.data.message)\n}\n\nexport function handleError(error: Error, moduleName: string, context: MoveContext, network: Network): void {\n if (isAxiosError(error)) {\n handleDepMissingError(error, moduleName, context)\n handleAccountNotFoundError(error, moduleName, context, network)\n handleSenderNotMatchError(error, moduleName)\n handleOtherAxiosError(error)\n }\n throw error\n}\n","import fs from 'fs'\nimport path from 'path'\n\nimport { getDeployer } from '@/deployer'\nimport { LzInitiaConfig, ModuleAddresses, MoveContext, MoveToml } from '@/types'\nimport { AccAddress } from '@initia/initia.js'\nimport { parse } from 'smol-toml'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nexport function getRawMoveContextByPath(modulePath: string): MoveContext {\n const tomlPath = path.join(modulePath, 'Move.toml')\n if (!fs.existsSync(tomlPath)) {\n throw new Error(`Move.toml not found in ${tomlPath}`)\n }\n const toml = parse(fs.readFileSync(tomlPath, 'utf-8')) as unknown as MoveToml\n const { dependencies } = toml\n let result: MoveContext = { [toml.package.name]: toml } satisfies MoveContext\n if (dependencies !== undefined) {\n Object.keys(dependencies)\n .filter((key) => {\n return dependencies[key]?.local !== undefined\n })\n .forEach((key) => {\n const dependency = dependencies[key] as { local: string }\n const dependencyPath = path.join(modulePath, dependency.local)\n result = { ...getRawMoveContextByPath(dependencyPath), ...result } satisfies MoveContext\n })\n }\n return result\n}\n\nexport function parseAddresses(addresses: ModuleAddresses, network: Network): { [key in string]?: string } {\n if (addresses === undefined) {\n return {}\n }\n const result: { [key in string]?: string } = {}\n for (const key of Object.keys(addresses)) {\n const value = addresses[key]\n if (typeof value === 'string') {\n result[key] = value\n } else {\n const networkAddress = value[network]\n if (networkAddress === undefined) {\n throw new Error(`${key} address not found for network ${network}`)\n }\n result[key] = networkAddress\n }\n }\n return result\n}\n\nexport function getMoveContext(moduleName: string, lzInitiaConfig: LzInitiaConfig, network: Network): MoveContext {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n throw new Error(`module ${moduleName} not found when getting Move context`)\n }\n const context = getRawMoveContextByPath(module.modulePath)\n for (const key of Object.keys(context)) {\n const toml = context[key]!\n for (const addressKey of Object.keys(toml.addresses)) {\n const address = toml.addresses[addressKey]\n const presetAddresses = parseAddresses(lzInitiaConfig.modules[key]?.addresses, network)\n if (address === '_') {\n if (presetAddresses[addressKey] !== undefined && presetAddresses[addressKey] !== '') {\n toml.addresses[addressKey] = presetAddresses[addressKey]!\n } else {\n try {\n toml.addresses[addressKey] = AccAddress.toHex(\n getDeployer(addressKey, lzInitiaConfig, network).accAddress\n )\n } catch (e) {\n if (key === moduleName) {\n throw new Error(`Fail to generate context for ${key}. ${(e as Error).toString()}`)\n } else {\n throw new Error(\n `Fail to generate context for dependent module ${key}. ${(e as Error).toString()}`\n )\n }\n }\n }\n }\n }\n }\n return context\n}\n","import { deploy } from '@/deploy'\nimport { Command, createOption } from '@commander-js/extra-typings'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nimport { LzInitiaConfig } from '../types'\n\nconst command = new Command()\n\nexport { command }\n\ncommand\n .name('deploy')\n .description('deploy Initia modules')\n .addOption(createOption('-m, --modules <modules...>', 'modules').makeOptionMandatory(true))\n .addOption(createOption('-n, --network <network>', 'network').makeOptionMandatory(true))\n .addOption(createOption('-v, --variant <variant>', 'variant').makeOptionMandatory(false))\n .action(async (options: { network: string; modules: string[]; variant?: string }, cmd: Command) => {\n const context = cmd.getOptionValue('__CONTEXT__') as LzInitiaConfig\n\n const { modules, variant, network } = options\n for (const module of modules) {\n await deploy(module, context, network as Network, variant ?? context.modules[module]?.variant)\n }\n })\n","import fs from 'fs'\nimport path from 'path'\n\nimport { getMoveContext } from '@/move'\nimport { parseOptions } from '@/options'\nimport { CmdOptions, LzInitiaConfig, MoveToml } from '@/types'\nimport { glob } from 'glob'\nimport { $, ProcessOutput } from 'zx'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\n// eslint-disable-next-line @typescript-eslint/promise-function-async\nexport function buildProcess(\n modulePath: string,\n addresses: { [key: string]: string },\n toml: MoveToml,\n customOptions: CmdOptions = {}\n): Promise<ProcessOutput> {\n const addressesParam = Object.keys(addresses)\n .map((key) => `${key}=${addresses[key]}`)\n .join(',')\n const defaultOptions = {\n '--skip-fetch-latest-git-deps': true,\n '--named-addresses': addressesParam,\n }\n const args = parseOptions(defaultOptions, customOptions)\n return $({\n cwd: modulePath,\n stdio: ['inherit', 'pipe', process.stderr],\n verbose: true,\n })`initiad move build ${args}`\n}\n\nexport async function copyArtifacts(src: string, dest: string): Promise<void> {\n // remove existing artifacts, this is necessary to avoid leaving old artifacts\n if (fs.existsSync(dest)) {\n console.log(`Removing existing artifacts at ${dest}`)\n fs.rmSync(dest, { recursive: true })\n }\n fs.mkdirSync(dest, { recursive: true })\n const moduleDir = path.join(src, 'bytecode_modules')\n const modules = glob.sync('*.mv', { cwd: moduleDir })\n for (const module of modules) {\n const destByteCodePath = path.join(dest, 'bytecode_modules')\n if (!fs.existsSync(destByteCodePath)) {\n fs.mkdirSync(destByteCodePath, { recursive: true })\n }\n await $({\n verbose: true,\n })`cp ${path.join(moduleDir, module)} ${path.join(destByteCodePath, module)}`\n }\n}\n\nexport async function build(\n moduleName: string,\n lzInitiaConfig: LzInitiaConfig,\n network: Network,\n skipBuild = false,\n variant?: string\n): Promise<void> {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n throw new Error(`module ${moduleName} not found`)\n }\n const { modulePath } = module\n const context = getMoveContext(moduleName, lzInitiaConfig, network)\n const pkgName = context[moduleName]!.package.name\n const srcPath = path.join(modulePath, 'build', pkgName)\n const outputDir = lzInitiaConfig.modules[moduleName]?.alias ?? pkgName\n const outputPath = path.join(\n lzInitiaConfig.artifactsPath,\n variant !== undefined && variant.length > 0 ? `${outputDir}-${variant}` : outputDir\n )\n let addresses: { [key: string]: string } = {}\n for (const key of Object.keys(context)) {\n const toml = context[key]!\n if (!(key in toml.addresses)) {\n throw new Error(`address not found for ${key}`)\n }\n addresses = { ...addresses, ...toml.addresses }\n }\n addresses = { ...addresses, ...context[moduleName]!.addresses }\n if (!skipBuild) {\n await buildProcess(modulePath, addresses, context[moduleName]!, {\n ...lzInitiaConfig.compileOptions,\n ...module.compileOptions,\n })\n }\n await copyArtifacts(srcPath, outputPath)\n}\n","import { CmdOptions } from '@/types'\n\nexport function parseOptions(defaultOptions: CmdOptions, customOptions: CmdOptions): string[] {\n const options: CmdOptions = { ...defaultOptions, ...customOptions }\n const res: string[] = []\n for (const key of Object.keys(options)) {\n if (typeof options[key] === 'boolean') {\n if (options[key] === true) {\n res.push(key)\n }\n } else {\n res.push(key)\n res.push(options[key] as string)\n }\n }\n return res\n}\n","import { build } from '@/build'\nimport { Command, createOption } from '@commander-js/extra-typings'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nimport { LzInitiaConfig } from '../types'\n\nconst command = new Command()\n\nexport { command }\n\ncommand\n .name('build')\n .description('build Initia program')\n .addOption(createOption('-m, --modules <modules...>', 'modules').makeOptionMandatory(true))\n .addOption(createOption('-n, --network <network>', 'network').makeOptionMandatory(true))\n .addOption(createOption('-v, --variant <variant>', 'variant').makeOptionMandatory(false))\n .addOption(createOption('-sb, --skip-build', 'skip build').default(false))\n .action(async (options: { network: string; modules: string[]; variant?: string; skipBuild: boolean }, cmd) => {\n const context = cmd.getOptionValue('__CONTEXT__') as LzInitiaConfig\n const { skipBuild, modules, network, variant } = options\n for (const module of modules) {\n await build(module, context, network as Network, skipBuild, variant ?? context.modules[module]?.variant)\n }\n })\n"]}
1
+ {"version":3,"sources":["../src/cli.ts","../src/loader.ts","../src/subCommands/index.ts","../src/deploy.ts","../src/client.ts","../src/deployer.ts","../src/errors.ts","../src/move.ts","../src/subCommands/deploy.ts","../src/build.ts","../src/options.ts","../src/subCommands/build.ts"],"names":["fs","path","process","Command","$","command","AccAddress","deploymentPath","moduleName","glob","createOption"],"mappings":"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","sourcesContent":["import fs from 'fs'\nimport path from 'path'\nimport process from 'process'\n\nimport { loadConfig } from '@/loader'\nimport { Command } from '@commander-js/extra-typings'\nimport { sync as findUpSync } from 'find-up'\nimport { $ } from 'zx/core'\n\nimport { getLogger } from '@layerzerolabs/lz-utilities'\n\nimport * as subCommands from './subCommands'\n\nconst program = new Command()\n// iterate over subCommands and add them to the program\nconst logger = getLogger()\n\nprogram\n .name('lz-initia-cli')\n .description('Wrapper of Initia cli')\n .version('0.1.0')\n .action((_, command: Command) => {\n logger.info('Please specify a subcommand')\n command.help()\n })\n\nasync function checkIfInitiaInstalled(): Promise<void> {\n try {\n await $`initiad version`\n } catch (e) {\n throw new Error('Initia cli is not installed')\n }\n}\n\nfunction checkIfInitiaConfigExists(): string {\n const packagePath = findUpSync('package.json', { cwd: process.cwd() })\n if (packagePath === undefined) {\n throw new Error('package.json not found')\n }\n const configPath = path.join(path.dirname(packagePath), 'lz-initia.config.ts')\n if (!fs.existsSync(configPath)) {\n throw new Error('lz-initia.config.ts not found, please create one in the same directory as package.json')\n }\n return configPath\n}\n\nasync function main(): Promise<void> {\n await checkIfInitiaInstalled()\n const configPath = checkIfInitiaConfigExists()\n const config = loadConfig(configPath)\n Object.values(subCommands).forEach((subCommand: Command) => {\n subCommand.setOptionValue('__CONTEXT__', config)\n program.addCommand(subCommand)\n })\n await program.parseAsync()\n}\n\nmain()\n .then(() => process.exit(process.exitCode))\n .catch((error: unknown) => {\n logger.error(error)\n process.exit(1)\n })\n","import { LzInitiaConfig } from '@/types'\n\nexport function loadConfig(configPath: string): LzInitiaConfig {\n // WARNING: require('ts-node') will cause '[ERROR] Unterminated template (867:31) [plugin commonjs]' in some cases\n // this error can be eliminated by assigning the name to a variable and require that variable\n const moduleName = 'ts-node'\n const tsnode = require(moduleName) as typeof import('ts-node')\n tsnode.register({\n transpileOnly: true,\n typeCheck: false,\n })\n\n try {\n type ImportType = LzInitiaConfig | { default: LzInitiaConfig }\n const imported = require(configPath) as ImportType\n return 'default' in imported ? imported.default : imported\n } catch (e) {\n if (e !== null && typeof e === 'object' && 'code' in e && e.code === 'ERR_REQUIRE_ESM') {\n throw new Error(\n `Your project is an ESM project (you have \"type\": \"module\" set in your package.json) but your LayerZero config file uses the .js extension.`\n )\n }\n\n throw e\n }\n}\n","export { command as deploy } from './deploy'\nexport { command as build } from './build'\n","import fs from 'fs'\nimport * as crypto from 'node:crypto'\nimport path from 'path'\n\nimport { getInitiaClient } from '@/client'\nimport { getDeployer } from '@/deployer'\nimport { handleError } from '@/errors'\nimport { getMoveContext } from '@/move'\nimport { LzInitiaConfig } from '@/types'\nimport { AccAddress, MsgPublish, TxError, Wallet } from '@initia/initia.js'\nimport { glob } from 'glob'\n\nimport { EndpointVersion, Network, Stage, networkToEnv, networkToStage } from '@layerzerolabs/lz-definitions'\n\nfunction deploymentPath(pkgName: string, dest: string, network: Network, variant?: string): string {\n const deploymentPath = path.join(dest, network)\n return path.join(deploymentPath, `${pkgWithVariant(pkgName, variant)}.json`)\n}\n\nexport function saveDeployment(\n moduleName: string,\n pkgName: string,\n address: string,\n dest: string,\n network: Network,\n bytecodeHash: string,\n hash: string,\n variant?: string,\n compatibleVersions = [EndpointVersion.V1, EndpointVersion.V2]\n): void {\n const destPath = deploymentPath(pkgName, dest, network, variant)\n const deploymentDir = path.dirname(destPath)\n if (!fs.existsSync(deploymentDir)) {\n fs.mkdirSync(deploymentDir, { recursive: true })\n }\n fs.writeFileSync(\n destPath,\n JSON.stringify(\n {\n address,\n name: pkgWithVariant(pkgName, variant),\n moduleName,\n network,\n compatibleVersions,\n bytecodeHash,\n transactionHash: hash,\n },\n null,\n 2\n )\n )\n console.log(`Deployment saved to ${destPath}`)\n}\n\nfunction needDeploy(pkgName: string, dest: string, network: Network, bytecodeHash: string, variant?: string): boolean {\n if (networkToStage(network) === Stage.SANDBOX) {\n return true\n }\n const destPath = deploymentPath(pkgName, dest, network, variant)\n if (fs.existsSync(destPath)) {\n const deployment = JSON.parse(fs.readFileSync(destPath, 'utf-8')) as { bytecodeHash: string }\n return deployment.bytecodeHash !== bytecodeHash\n }\n return true\n}\n\nfunction pkgWithVariant(pkgName: string, variant?: string): string {\n return variant !== undefined && variant.length > 0 ? `${pkgName}-${variant}` : pkgName\n}\n\nfunction getBytecodesHash(bytecodes: Uint8Array[]): string {\n // sha256 hash of all bytecodes\n const hash = crypto.createHash('sha256')\n bytecodes.forEach((bytecode) => {\n hash.update(bytecode)\n })\n return hash.digest('hex')\n}\n\nexport async function deploy(\n moduleName: string,\n lzInitiaConfig: LzInitiaConfig,\n network: Network,\n variant?: string\n): Promise<void> {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n throw new Error(`module ${moduleName} not found`)\n }\n const env = networkToEnv(network, EndpointVersion.V2)\n const client = getInitiaClient(env, lzInitiaConfig)\n const deployer = getDeployer(moduleName, lzInitiaConfig, network)\n const context = getMoveContext(moduleName, lzInitiaConfig, network)\n const pkgName = lzInitiaConfig.modules[moduleName]?.alias ?? context[moduleName]!.package.name\n const moduleDir = path.join(lzInitiaConfig.artifactsPath, `${pkgWithVariant(pkgName, variant)}/bytecode_modules`)\n\n const moduleNames: string[] = glob.sync('*.mv', { cwd: moduleDir })\n const moduleBuffers = moduleNames.map((moduleName) => fs.readFileSync(path.join(moduleDir, moduleName)))\n const bytecodeHash = getBytecodesHash(moduleBuffers)\n if (!needDeploy(pkgName, lzInitiaConfig.deploymentPath, network, bytecodeHash, variant)) {\n console.warn(`Code of ${moduleName} has not changed, skipping deploy`)\n return\n }\n try {\n // TODO policy from config\n const msgs = [\n new MsgPublish(\n deployer.accAddress,\n moduleBuffers.map((codeBytes) => codeBytes.toString('base64')),\n MsgPublish.Policy.COMPATIBLE\n ),\n ]\n const wallet = new Wallet(client, deployer)\n const gasPrices =\n lzInitiaConfig.gasPrice?.[network] === undefined ? undefined : `${lzInitiaConfig.gasPrice[network]}unit`\n const signedTx = await wallet.createAndSignTx({ msgs, gasPrices })\n const tx = await client.tx.broadcast(signedTx)\n if (((tx as TxError).code as number) !== 0) {\n throw new Error(tx.raw_log)\n }\n console.log(`Deploy transaction ${tx.txhash} successfully`)\n saveDeployment(\n moduleName,\n pkgName,\n AccAddress.toHex(deployer.accAddress),\n lzInitiaConfig.deploymentPath,\n network,\n bytecodeHash,\n tx.txhash,\n variant,\n lzInitiaConfig.compatibleVersions\n )\n } catch (e: unknown) {\n if (e instanceof Error) {\n handleError(e, moduleName, context, network)\n } else {\n throw e\n }\n }\n}\n","import { LzInitiaConfig } from '@/types'\nimport { LCDClient } from '@initia/initia.js'\n\nimport { Environment } from '@layerzerolabs/lz-definitions'\n\nexport function getInitiaClient(env: Environment, config: LzInitiaConfig): LCDClient {\n const url = config.network?.[env] as string | undefined\n if (url === undefined) {\n throw new Error(`No network url for ${env} found in lz-initia.config.ts`)\n }\n const lcd = new LCDClient(url)\n return lcd\n}\n","import { loadConfig } from '@/loader'\nimport { LzInitiaConfig } from '@/types'\nimport { MnemonicKey } from '@initia/initia.js'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nexport function isInitiaAccount(account: object | undefined): account is MnemonicKey {\n return account !== undefined && account instanceof MnemonicKey\n}\n\nexport function getDeployer(moduleName: string, lzInitiaConfig: LzInitiaConfig, network: Network): MnemonicKey {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n if (lzInitiaConfig.baseModules && lzInitiaConfig.baseModules.length > 0) {\n for (const baseModule of lzInitiaConfig.baseModules) {\n const baseConfig = loadConfig(baseModule)\n try {\n return getDeployer(moduleName, baseConfig, network)\n } catch (e) {\n /* ignore */\n }\n }\n }\n throw new Error(\n `Module ${moduleName} not found. Make sure it is defined in lz-initia.config.ts and double check the key is the package name in Move.toml.`\n )\n }\n const moduleDeployer = isInitiaAccount(module.deployer) ? module.deployer : module.deployer?.[network]\n const defaultDeployer = isInitiaAccount(lzInitiaConfig.defaultDeployer)\n ? lzInitiaConfig.defaultDeployer\n : lzInitiaConfig.defaultDeployer?.[network]\n const deployer = moduleDeployer ?? defaultDeployer\n if (!deployer) {\n throw new Error(`deployer for module ${moduleName} not found`)\n }\n return deployer\n}\n","import { AxiosError, MoveContext } from '@/types'\nimport { AccAddress } from '@initia/initia.js'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nfunction isAxiosError(error: any): error is AxiosError {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return error?.response?.data?.message !== undefined\n}\n\nfunction handleDepMissingError(error: AxiosError, moduleName: string, context: MoveContext): void {\n if (error.response.data.message.includes('EPACKAGE_DEP_MISSING')) {\n throw new Error(\n `Deploy ${moduleName} failed with EPACKAGE_DEP_MISSING, make sure you have deployed the dependent module [${Object.keys(\n context\n )\n .filter((module) => module !== moduleName)\n .join(',')}]`\n )\n }\n}\n\nfunction handleAccountNotFoundError(\n error: AxiosError,\n moduleName: string,\n context: MoveContext,\n network: Network\n): void {\n const address = context[moduleName]?.addresses[moduleName]\n if (address === undefined) {\n return\n }\n if (error.response.data.message.includes(`account ${AccAddress.fromHex(address)} not found`)) {\n throw new Error(\n `${error.response.data.message}, make sure you have funded the account ${AccAddress.fromHex(address)}(${address}) on ${network}`\n )\n }\n}\n\nfunction handleSenderNotMatchError(error: AxiosError, moduleName: string): void {\n if (error.response.data.message.includes('MODULE_ADDRESS_DOES_NOT_MATCH_SENDER')) {\n throw new Error(\n `Deploy ${moduleName} failed with MODULE_ADDRESS_DOES_NOT_MATCH_SENDER, make sure you compile ${moduleName} with the deployer account address`\n )\n }\n}\n\nfunction handleOtherAxiosError(error: AxiosError): void {\n throw new Error(error.response.data.message)\n}\n\nexport function handleError(error: Error, moduleName: string, context: MoveContext, network: Network): void {\n if (isAxiosError(error)) {\n handleDepMissingError(error, moduleName, context)\n handleAccountNotFoundError(error, moduleName, context, network)\n handleSenderNotMatchError(error, moduleName)\n handleOtherAxiosError(error)\n }\n throw error\n}\n","import fs from 'fs'\nimport path from 'path'\n\nimport { getDeployer } from '@/deployer'\nimport { LzInitiaConfig, ModuleAddresses, MoveContext, MoveToml } from '@/types'\nimport { AccAddress } from '@initia/initia.js'\nimport { parse } from 'smol-toml'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nexport function getRawMoveContextByPath(modulePath: string): MoveContext {\n const tomlPath = path.join(modulePath, 'Move.toml')\n if (!fs.existsSync(tomlPath)) {\n throw new Error(`Move.toml not found in ${tomlPath}`)\n }\n const toml = parse(fs.readFileSync(tomlPath, 'utf-8')) as unknown as MoveToml\n const { dependencies } = toml\n let result: MoveContext = { [toml.package.name]: toml } satisfies MoveContext\n if (dependencies !== undefined) {\n Object.keys(dependencies)\n .filter((key) => {\n return dependencies[key]?.local !== undefined\n })\n .forEach((key) => {\n const dependency = dependencies[key] as { local: string }\n const dependencyPath = path.join(modulePath, dependency.local)\n result = { ...getRawMoveContextByPath(dependencyPath), ...result } satisfies MoveContext\n })\n }\n return result\n}\n\nexport function parseAddresses(addresses: ModuleAddresses, network: Network): { [key in string]?: string } {\n if (addresses === undefined) {\n return {}\n }\n const result: { [key in string]?: string } = {}\n for (const key of Object.keys(addresses)) {\n const value = addresses[key]\n if (typeof value === 'string') {\n result[key] = value\n } else {\n const networkAddress = value[network]\n if (networkAddress === undefined) {\n throw new Error(`${key} address not found for network ${network}`)\n }\n result[key] = networkAddress\n }\n }\n return result\n}\n\nexport function getMoveContext(moduleName: string, lzInitiaConfig: LzInitiaConfig, network: Network): MoveContext {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n throw new Error(`module ${moduleName} not found when getting Move context`)\n }\n const context = getRawMoveContextByPath(module.modulePath)\n for (const key of Object.keys(context)) {\n const toml = context[key]!\n for (const addressKey of Object.keys(toml.addresses)) {\n const address = toml.addresses[addressKey]\n const presetAddresses = {\n ...parseAddresses(lzInitiaConfig.modules[key]?.addresses, network),\n ...parseAddresses(lzInitiaConfig.modules[moduleName]?.addresses, network),\n }\n if (address === '_') {\n if (presetAddresses[addressKey] !== undefined && presetAddresses[addressKey] !== '') {\n toml.addresses[addressKey] = presetAddresses[addressKey]!\n } else {\n try {\n toml.addresses[addressKey] = AccAddress.toHex(\n getDeployer(addressKey, lzInitiaConfig, network).accAddress\n )\n } catch (e) {\n if (key === moduleName) {\n throw new Error(`Fail to generate context for ${key}. ${(e as Error).toString()}`)\n } else {\n throw new Error(\n `Fail to generate context for dependent module ${key}. ${(e as Error).toString()}`\n )\n }\n }\n }\n }\n }\n }\n return context\n}\n","import { deploy } from '@/deploy'\nimport { Command, createOption } from '@commander-js/extra-typings'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nimport { LzInitiaConfig } from '../types'\n\nconst command = new Command()\n\nexport { command }\n\ncommand\n .name('deploy')\n .description('deploy Initia modules')\n .addOption(createOption('-m, --modules <modules...>', 'modules').makeOptionMandatory(true))\n .addOption(createOption('-n, --network <network>', 'network').makeOptionMandatory(true))\n .addOption(createOption('-v, --variant <variant>', 'variant').makeOptionMandatory(false))\n .action(async (options: { network: string; modules: string[]; variant?: string }, cmd: Command) => {\n const context = cmd.getOptionValue('__CONTEXT__') as LzInitiaConfig\n\n const { modules, variant, network } = options\n for (const module of modules) {\n await deploy(module, context, network as Network, variant ?? context.modules[module]?.variant)\n }\n })\n","import fs from 'fs'\nimport path from 'path'\n\nimport { getMoveContext } from '@/move'\nimport { parseOptions } from '@/options'\nimport { CmdOptions, LzInitiaConfig, MoveToml } from '@/types'\nimport { glob } from 'glob'\nimport { $, ProcessOutput } from 'zx'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\n// eslint-disable-next-line @typescript-eslint/promise-function-async\nexport function buildProcess(\n modulePath: string,\n addresses: { [key: string]: string },\n toml: MoveToml,\n customOptions: CmdOptions = {}\n): Promise<ProcessOutput> {\n const addressesParam = Object.keys(addresses)\n .map((key) => `${key}=${addresses[key]}`)\n .join(',')\n const defaultOptions = {\n '--skip-fetch-latest-git-deps': true,\n '--named-addresses': addressesParam,\n }\n const args = parseOptions(defaultOptions, customOptions)\n return $({\n cwd: modulePath,\n stdio: ['inherit', 'pipe', process.stderr],\n verbose: true,\n })`initiad move build ${args}`\n}\n\nexport async function copyArtifacts(src: string, dest: string): Promise<void> {\n // remove existing artifacts, this is necessary to avoid leaving old artifacts\n if (fs.existsSync(dest)) {\n console.log(`Removing existing artifacts at ${dest}`)\n fs.rmSync(dest, { recursive: true })\n }\n fs.mkdirSync(dest, { recursive: true })\n const moduleDir = path.join(src, 'bytecode_modules')\n const modules = glob.sync('*.mv', { cwd: moduleDir })\n for (const module of modules) {\n const destByteCodePath = path.join(dest, 'bytecode_modules')\n if (!fs.existsSync(destByteCodePath)) {\n fs.mkdirSync(destByteCodePath, { recursive: true })\n }\n await $({\n verbose: true,\n })`cp ${path.join(moduleDir, module)} ${path.join(destByteCodePath, module)}`\n }\n}\n\nexport async function build(\n moduleName: string,\n lzInitiaConfig: LzInitiaConfig,\n network: Network,\n skipBuild = false,\n variant?: string\n): Promise<void> {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n throw new Error(`module ${moduleName} not found`)\n }\n const { modulePath } = module\n const context = getMoveContext(moduleName, lzInitiaConfig, network)\n const pkgName = context[moduleName]!.package.name\n const srcPath = path.join(modulePath, 'build', pkgName)\n const outputDir = lzInitiaConfig.modules[moduleName]?.alias ?? pkgName\n const outputPath = path.join(\n lzInitiaConfig.artifactsPath,\n variant !== undefined && variant.length > 0 ? `${outputDir}-${variant}` : outputDir\n )\n let addresses: { [key: string]: string } = {}\n for (const key of Object.keys(context)) {\n const toml = context[key]!\n if (!(key in toml.addresses)) {\n throw new Error(`address not found for ${key}`)\n }\n addresses = { ...addresses, ...toml.addresses }\n }\n addresses = { ...addresses, ...context[moduleName]!.addresses }\n if (!skipBuild) {\n await buildProcess(modulePath, addresses, context[moduleName]!, {\n ...lzInitiaConfig.compileOptions,\n ...module.compileOptions,\n })\n }\n await copyArtifacts(srcPath, outputPath)\n}\n","import { CmdOptions } from '@/types'\n\nexport function parseOptions(defaultOptions: CmdOptions, customOptions: CmdOptions): string[] {\n const options: CmdOptions = { ...defaultOptions, ...customOptions }\n const res: string[] = []\n for (const key of Object.keys(options)) {\n if (typeof options[key] === 'boolean') {\n if (options[key] === true) {\n res.push(key)\n }\n } else {\n res.push(key)\n res.push(options[key] as string)\n }\n }\n return res\n}\n","import { build } from '@/build'\nimport { Command, createOption } from '@commander-js/extra-typings'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nimport { LzInitiaConfig } from '../types'\n\nconst command = new Command()\n\nexport { command }\n\ncommand\n .name('build')\n .description('build Initia program')\n .addOption(createOption('-m, --modules <modules...>', 'modules').makeOptionMandatory(true))\n .addOption(\n createOption(\n '-p, --module-paths <paths...>',\n 'module paths of modules, use the path in lz-initia.config.ts if not specify'\n ).makeOptionMandatory(false)\n )\n .addOption(createOption('-n, --network <network>', 'network').makeOptionMandatory(true))\n .addOption(createOption('-v, --variant <variant>', 'variant').makeOptionMandatory(false))\n .addOption(createOption('-sb, --skip-build', 'skip build').default(false))\n .action(\n async (\n options: {\n network: string\n modules: string[]\n modulePaths?: string[]\n variant?: string\n skipBuild: boolean\n },\n cmd\n ) => {\n const context = cmd.getOptionValue('__CONTEXT__') as LzInitiaConfig\n const { skipBuild, modules, network, variant, modulePaths } = options\n // replace the modulePath in context with the modulePaths from command line\n if (modulePaths !== undefined) {\n for (let i = 0; i < modulePaths.length; i++) {\n const module = modules[i]\n const moduleConfig = context.modules[module]\n if (moduleConfig !== undefined) {\n moduleConfig.modulePath = modulePaths[i]\n }\n }\n }\n for (const module of modules) {\n await build(module, context, network as Network, skipBuild, variant ?? context.modules[module]?.variant)\n }\n }\n )\n"]}
package/dist/index.cjs CHANGED
@@ -136,7 +136,10 @@ function getMoveContext(moduleName, lzInitiaConfig, network) {
136
136
  const toml = context[key];
137
137
  for (const addressKey of Object.keys(toml.addresses)) {
138
138
  const address = toml.addresses[addressKey];
139
- const presetAddresses = parseAddresses(lzInitiaConfig.modules[key]?.addresses, network);
139
+ const presetAddresses = {
140
+ ...parseAddresses(lzInitiaConfig.modules[key]?.addresses, network),
141
+ ...parseAddresses(lzInitiaConfig.modules[moduleName]?.addresses, network)
142
+ };
140
143
  if (address === "_") {
141
144
  if (presetAddresses[addressKey] !== void 0 && presetAddresses[addressKey] !== "") {
142
145
  toml.addresses[addressKey] = presetAddresses[addressKey];
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/build.ts","../src/move.ts","../src/loader.ts","../src/deployer.ts","../src/options.ts","../src/deploy.ts","../src/client.ts","../src/errors.ts"],"names":["fs","path","AccAddress","glob","deploymentPath","moduleName"],"mappings":"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","sourcesContent":["import fs from 'fs'\nimport path from 'path'\n\nimport { getMoveContext } from '@/move'\nimport { parseOptions } from '@/options'\nimport { CmdOptions, LzInitiaConfig, MoveToml } from '@/types'\nimport { glob } from 'glob'\nimport { $, ProcessOutput } from 'zx'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\n// eslint-disable-next-line @typescript-eslint/promise-function-async\nexport function buildProcess(\n modulePath: string,\n addresses: { [key: string]: string },\n toml: MoveToml,\n customOptions: CmdOptions = {}\n): Promise<ProcessOutput> {\n const addressesParam = Object.keys(addresses)\n .map((key) => `${key}=${addresses[key]}`)\n .join(',')\n const defaultOptions = {\n '--skip-fetch-latest-git-deps': true,\n '--named-addresses': addressesParam,\n }\n const args = parseOptions(defaultOptions, customOptions)\n return $({\n cwd: modulePath,\n stdio: ['inherit', 'pipe', process.stderr],\n verbose: true,\n })`initiad move build ${args}`\n}\n\nexport async function copyArtifacts(src: string, dest: string): Promise<void> {\n // remove existing artifacts, this is necessary to avoid leaving old artifacts\n if (fs.existsSync(dest)) {\n console.log(`Removing existing artifacts at ${dest}`)\n fs.rmSync(dest, { recursive: true })\n }\n fs.mkdirSync(dest, { recursive: true })\n const moduleDir = path.join(src, 'bytecode_modules')\n const modules = glob.sync('*.mv', { cwd: moduleDir })\n for (const module of modules) {\n const destByteCodePath = path.join(dest, 'bytecode_modules')\n if (!fs.existsSync(destByteCodePath)) {\n fs.mkdirSync(destByteCodePath, { recursive: true })\n }\n await $({\n verbose: true,\n })`cp ${path.join(moduleDir, module)} ${path.join(destByteCodePath, module)}`\n }\n}\n\nexport async function build(\n moduleName: string,\n lzInitiaConfig: LzInitiaConfig,\n network: Network,\n skipBuild = false,\n variant?: string\n): Promise<void> {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n throw new Error(`module ${moduleName} not found`)\n }\n const { modulePath } = module\n const context = getMoveContext(moduleName, lzInitiaConfig, network)\n const pkgName = context[moduleName]!.package.name\n const srcPath = path.join(modulePath, 'build', pkgName)\n const outputDir = lzInitiaConfig.modules[moduleName]?.alias ?? pkgName\n const outputPath = path.join(\n lzInitiaConfig.artifactsPath,\n variant !== undefined && variant.length > 0 ? `${outputDir}-${variant}` : outputDir\n )\n let addresses: { [key: string]: string } = {}\n for (const key of Object.keys(context)) {\n const toml = context[key]!\n if (!(key in toml.addresses)) {\n throw new Error(`address not found for ${key}`)\n }\n addresses = { ...addresses, ...toml.addresses }\n }\n addresses = { ...addresses, ...context[moduleName]!.addresses }\n if (!skipBuild) {\n await buildProcess(modulePath, addresses, context[moduleName]!, {\n ...lzInitiaConfig.compileOptions,\n ...module.compileOptions,\n })\n }\n await copyArtifacts(srcPath, outputPath)\n}\n","import fs from 'fs'\nimport path from 'path'\n\nimport { getDeployer } from '@/deployer'\nimport { LzInitiaConfig, ModuleAddresses, MoveContext, MoveToml } from '@/types'\nimport { AccAddress } from '@initia/initia.js'\nimport { parse } from 'smol-toml'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nexport function getRawMoveContextByPath(modulePath: string): MoveContext {\n const tomlPath = path.join(modulePath, 'Move.toml')\n if (!fs.existsSync(tomlPath)) {\n throw new Error(`Move.toml not found in ${tomlPath}`)\n }\n const toml = parse(fs.readFileSync(tomlPath, 'utf-8')) as unknown as MoveToml\n const { dependencies } = toml\n let result: MoveContext = { [toml.package.name]: toml } satisfies MoveContext\n if (dependencies !== undefined) {\n Object.keys(dependencies)\n .filter((key) => {\n return dependencies[key]?.local !== undefined\n })\n .forEach((key) => {\n const dependency = dependencies[key] as { local: string }\n const dependencyPath = path.join(modulePath, dependency.local)\n result = { ...getRawMoveContextByPath(dependencyPath), ...result } satisfies MoveContext\n })\n }\n return result\n}\n\nexport function parseAddresses(addresses: ModuleAddresses, network: Network): { [key in string]?: string } {\n if (addresses === undefined) {\n return {}\n }\n const result: { [key in string]?: string } = {}\n for (const key of Object.keys(addresses)) {\n const value = addresses[key]\n if (typeof value === 'string') {\n result[key] = value\n } else {\n const networkAddress = value[network]\n if (networkAddress === undefined) {\n throw new Error(`${key} address not found for network ${network}`)\n }\n result[key] = networkAddress\n }\n }\n return result\n}\n\nexport function getMoveContext(moduleName: string, lzInitiaConfig: LzInitiaConfig, network: Network): MoveContext {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n throw new Error(`module ${moduleName} not found when getting Move context`)\n }\n const context = getRawMoveContextByPath(module.modulePath)\n for (const key of Object.keys(context)) {\n const toml = context[key]!\n for (const addressKey of Object.keys(toml.addresses)) {\n const address = toml.addresses[addressKey]\n const presetAddresses = parseAddresses(lzInitiaConfig.modules[key]?.addresses, network)\n if (address === '_') {\n if (presetAddresses[addressKey] !== undefined && presetAddresses[addressKey] !== '') {\n toml.addresses[addressKey] = presetAddresses[addressKey]!\n } else {\n try {\n toml.addresses[addressKey] = AccAddress.toHex(\n getDeployer(addressKey, lzInitiaConfig, network).accAddress\n )\n } catch (e) {\n if (key === moduleName) {\n throw new Error(`Fail to generate context for ${key}. ${(e as Error).toString()}`)\n } else {\n throw new Error(\n `Fail to generate context for dependent module ${key}. ${(e as Error).toString()}`\n )\n }\n }\n }\n }\n }\n }\n return context\n}\n","import { LzInitiaConfig } from '@/types'\n\nexport function loadConfig(configPath: string): LzInitiaConfig {\n // WARNING: require('ts-node') will cause '[ERROR] Unterminated template (867:31) [plugin commonjs]' in some cases\n // this error can be eliminated by assigning the name to a variable and require that variable\n const moduleName = 'ts-node'\n const tsnode = require(moduleName) as typeof import('ts-node')\n tsnode.register({\n transpileOnly: true,\n typeCheck: false,\n })\n\n try {\n type ImportType = LzInitiaConfig | { default: LzInitiaConfig }\n const imported = require(configPath) as ImportType\n return 'default' in imported ? imported.default : imported\n } catch (e) {\n if (e !== null && typeof e === 'object' && 'code' in e && e.code === 'ERR_REQUIRE_ESM') {\n throw new Error(\n `Your project is an ESM project (you have \"type\": \"module\" set in your package.json) but your LayerZero config file uses the .js extension.`\n )\n }\n\n throw e\n }\n}\n","import { loadConfig } from '@/loader'\nimport { LzInitiaConfig } from '@/types'\nimport { MnemonicKey } from '@initia/initia.js'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nexport function isInitiaAccount(account: object | undefined): account is MnemonicKey {\n return account !== undefined && account instanceof MnemonicKey\n}\n\nexport function getDeployer(moduleName: string, lzInitiaConfig: LzInitiaConfig, network: Network): MnemonicKey {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n if (lzInitiaConfig.baseModules && lzInitiaConfig.baseModules.length > 0) {\n for (const baseModule of lzInitiaConfig.baseModules) {\n const baseConfig = loadConfig(baseModule)\n try {\n return getDeployer(moduleName, baseConfig, network)\n } catch (e) {\n /* ignore */\n }\n }\n }\n throw new Error(\n `Module ${moduleName} not found. Make sure it is defined in lz-initia.config.ts and double check the key is the package name in Move.toml.`\n )\n }\n const moduleDeployer = isInitiaAccount(module.deployer) ? module.deployer : module.deployer?.[network]\n const defaultDeployer = isInitiaAccount(lzInitiaConfig.defaultDeployer)\n ? lzInitiaConfig.defaultDeployer\n : lzInitiaConfig.defaultDeployer?.[network]\n const deployer = moduleDeployer ?? defaultDeployer\n if (!deployer) {\n throw new Error(`deployer for module ${moduleName} not found`)\n }\n return deployer\n}\n","import { CmdOptions } from '@/types'\n\nexport function parseOptions(defaultOptions: CmdOptions, customOptions: CmdOptions): string[] {\n const options: CmdOptions = { ...defaultOptions, ...customOptions }\n const res: string[] = []\n for (const key of Object.keys(options)) {\n if (typeof options[key] === 'boolean') {\n if (options[key] === true) {\n res.push(key)\n }\n } else {\n res.push(key)\n res.push(options[key] as string)\n }\n }\n return res\n}\n","import fs from 'fs'\nimport * as crypto from 'node:crypto'\nimport path from 'path'\n\nimport { getInitiaClient } from '@/client'\nimport { getDeployer } from '@/deployer'\nimport { handleError } from '@/errors'\nimport { getMoveContext } from '@/move'\nimport { LzInitiaConfig } from '@/types'\nimport { AccAddress, MsgPublish, TxError, Wallet } from '@initia/initia.js'\nimport { glob } from 'glob'\n\nimport { EndpointVersion, Network, Stage, networkToEnv, networkToStage } from '@layerzerolabs/lz-definitions'\n\nfunction deploymentPath(pkgName: string, dest: string, network: Network, variant?: string): string {\n const deploymentPath = path.join(dest, network)\n return path.join(deploymentPath, `${pkgWithVariant(pkgName, variant)}.json`)\n}\n\nexport function saveDeployment(\n moduleName: string,\n pkgName: string,\n address: string,\n dest: string,\n network: Network,\n bytecodeHash: string,\n hash: string,\n variant?: string,\n compatibleVersions = [EndpointVersion.V1, EndpointVersion.V2]\n): void {\n const destPath = deploymentPath(pkgName, dest, network, variant)\n const deploymentDir = path.dirname(destPath)\n if (!fs.existsSync(deploymentDir)) {\n fs.mkdirSync(deploymentDir, { recursive: true })\n }\n fs.writeFileSync(\n destPath,\n JSON.stringify(\n {\n address,\n name: pkgWithVariant(pkgName, variant),\n moduleName,\n network,\n compatibleVersions,\n bytecodeHash,\n transactionHash: hash,\n },\n null,\n 2\n )\n )\n console.log(`Deployment saved to ${destPath}`)\n}\n\nfunction needDeploy(pkgName: string, dest: string, network: Network, bytecodeHash: string, variant?: string): boolean {\n if (networkToStage(network) === Stage.SANDBOX) {\n return true\n }\n const destPath = deploymentPath(pkgName, dest, network, variant)\n if (fs.existsSync(destPath)) {\n const deployment = JSON.parse(fs.readFileSync(destPath, 'utf-8')) as { bytecodeHash: string }\n return deployment.bytecodeHash !== bytecodeHash\n }\n return true\n}\n\nfunction pkgWithVariant(pkgName: string, variant?: string): string {\n return variant !== undefined && variant.length > 0 ? `${pkgName}-${variant}` : pkgName\n}\n\nfunction getBytecodesHash(bytecodes: Uint8Array[]): string {\n // sha256 hash of all bytecodes\n const hash = crypto.createHash('sha256')\n bytecodes.forEach((bytecode) => {\n hash.update(bytecode)\n })\n return hash.digest('hex')\n}\n\nexport async function deploy(\n moduleName: string,\n lzInitiaConfig: LzInitiaConfig,\n network: Network,\n variant?: string\n): Promise<void> {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n throw new Error(`module ${moduleName} not found`)\n }\n const env = networkToEnv(network, EndpointVersion.V2)\n const client = getInitiaClient(env, lzInitiaConfig)\n const deployer = getDeployer(moduleName, lzInitiaConfig, network)\n const context = getMoveContext(moduleName, lzInitiaConfig, network)\n const pkgName = lzInitiaConfig.modules[moduleName]?.alias ?? context[moduleName]!.package.name\n const moduleDir = path.join(lzInitiaConfig.artifactsPath, `${pkgWithVariant(pkgName, variant)}/bytecode_modules`)\n\n const moduleNames: string[] = glob.sync('*.mv', { cwd: moduleDir })\n const moduleBuffers = moduleNames.map((moduleName) => fs.readFileSync(path.join(moduleDir, moduleName)))\n const bytecodeHash = getBytecodesHash(moduleBuffers)\n if (!needDeploy(pkgName, lzInitiaConfig.deploymentPath, network, bytecodeHash, variant)) {\n console.warn(`Code of ${moduleName} has not changed, skipping deploy`)\n return\n }\n try {\n // TODO policy from config\n const msgs = [\n new MsgPublish(\n deployer.accAddress,\n moduleBuffers.map((codeBytes) => codeBytes.toString('base64')),\n MsgPublish.Policy.COMPATIBLE\n ),\n ]\n const wallet = new Wallet(client, deployer)\n const gasPrices =\n lzInitiaConfig.gasPrice?.[network] === undefined ? undefined : `${lzInitiaConfig.gasPrice[network]}unit`\n const signedTx = await wallet.createAndSignTx({ msgs, gasPrices })\n const tx = await client.tx.broadcast(signedTx)\n if (((tx as TxError).code as number) !== 0) {\n throw new Error(tx.raw_log)\n }\n console.log(`Deploy transaction ${tx.txhash} successfully`)\n saveDeployment(\n moduleName,\n pkgName,\n AccAddress.toHex(deployer.accAddress),\n lzInitiaConfig.deploymentPath,\n network,\n bytecodeHash,\n tx.txhash,\n variant,\n lzInitiaConfig.compatibleVersions\n )\n } catch (e: unknown) {\n if (e instanceof Error) {\n handleError(e, moduleName, context, network)\n } else {\n throw e\n }\n }\n}\n","import { LzInitiaConfig } from '@/types'\nimport { LCDClient } from '@initia/initia.js'\n\nimport { Environment } from '@layerzerolabs/lz-definitions'\n\nexport function getInitiaClient(env: Environment, config: LzInitiaConfig): LCDClient {\n const url = config.network?.[env] as string | undefined\n if (url === undefined) {\n throw new Error(`No network url for ${env} found in lz-initia.config.ts`)\n }\n const lcd = new LCDClient(url)\n return lcd\n}\n","import { AxiosError, MoveContext } from '@/types'\nimport { AccAddress } from '@initia/initia.js'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nfunction isAxiosError(error: any): error is AxiosError {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return error?.response?.data?.message !== undefined\n}\n\nfunction handleDepMissingError(error: AxiosError, moduleName: string, context: MoveContext): void {\n if (error.response.data.message.includes('EPACKAGE_DEP_MISSING')) {\n throw new Error(\n `Deploy ${moduleName} failed with EPACKAGE_DEP_MISSING, make sure you have deployed the dependent module [${Object.keys(\n context\n )\n .filter((module) => module !== moduleName)\n .join(',')}]`\n )\n }\n}\n\nfunction handleAccountNotFoundError(\n error: AxiosError,\n moduleName: string,\n context: MoveContext,\n network: Network\n): void {\n const address = context[moduleName]?.addresses[moduleName]\n if (address === undefined) {\n return\n }\n if (error.response.data.message.includes(`account ${AccAddress.fromHex(address)} not found`)) {\n throw new Error(\n `${error.response.data.message}, make sure you have funded the account ${AccAddress.fromHex(address)}(${address}) on ${network}`\n )\n }\n}\n\nfunction handleSenderNotMatchError(error: AxiosError, moduleName: string): void {\n if (error.response.data.message.includes('MODULE_ADDRESS_DOES_NOT_MATCH_SENDER')) {\n throw new Error(\n `Deploy ${moduleName} failed with MODULE_ADDRESS_DOES_NOT_MATCH_SENDER, make sure you compile ${moduleName} with the deployer account address`\n )\n }\n}\n\nfunction handleOtherAxiosError(error: AxiosError): void {\n throw new Error(error.response.data.message)\n}\n\nexport function handleError(error: Error, moduleName: string, context: MoveContext, network: Network): void {\n if (isAxiosError(error)) {\n handleDepMissingError(error, moduleName, context)\n handleAccountNotFoundError(error, moduleName, context, network)\n handleSenderNotMatchError(error, moduleName)\n handleOtherAxiosError(error)\n }\n throw error\n}\n"]}
1
+ {"version":3,"sources":["../src/build.ts","../src/move.ts","../src/loader.ts","../src/deployer.ts","../src/options.ts","../src/deploy.ts","../src/client.ts","../src/errors.ts"],"names":["fs","path","AccAddress","glob","deploymentPath","moduleName"],"mappings":"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","sourcesContent":["import fs from 'fs'\nimport path from 'path'\n\nimport { getMoveContext } from '@/move'\nimport { parseOptions } from '@/options'\nimport { CmdOptions, LzInitiaConfig, MoveToml } from '@/types'\nimport { glob } from 'glob'\nimport { $, ProcessOutput } from 'zx'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\n// eslint-disable-next-line @typescript-eslint/promise-function-async\nexport function buildProcess(\n modulePath: string,\n addresses: { [key: string]: string },\n toml: MoveToml,\n customOptions: CmdOptions = {}\n): Promise<ProcessOutput> {\n const addressesParam = Object.keys(addresses)\n .map((key) => `${key}=${addresses[key]}`)\n .join(',')\n const defaultOptions = {\n '--skip-fetch-latest-git-deps': true,\n '--named-addresses': addressesParam,\n }\n const args = parseOptions(defaultOptions, customOptions)\n return $({\n cwd: modulePath,\n stdio: ['inherit', 'pipe', process.stderr],\n verbose: true,\n })`initiad move build ${args}`\n}\n\nexport async function copyArtifacts(src: string, dest: string): Promise<void> {\n // remove existing artifacts, this is necessary to avoid leaving old artifacts\n if (fs.existsSync(dest)) {\n console.log(`Removing existing artifacts at ${dest}`)\n fs.rmSync(dest, { recursive: true })\n }\n fs.mkdirSync(dest, { recursive: true })\n const moduleDir = path.join(src, 'bytecode_modules')\n const modules = glob.sync('*.mv', { cwd: moduleDir })\n for (const module of modules) {\n const destByteCodePath = path.join(dest, 'bytecode_modules')\n if (!fs.existsSync(destByteCodePath)) {\n fs.mkdirSync(destByteCodePath, { recursive: true })\n }\n await $({\n verbose: true,\n })`cp ${path.join(moduleDir, module)} ${path.join(destByteCodePath, module)}`\n }\n}\n\nexport async function build(\n moduleName: string,\n lzInitiaConfig: LzInitiaConfig,\n network: Network,\n skipBuild = false,\n variant?: string\n): Promise<void> {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n throw new Error(`module ${moduleName} not found`)\n }\n const { modulePath } = module\n const context = getMoveContext(moduleName, lzInitiaConfig, network)\n const pkgName = context[moduleName]!.package.name\n const srcPath = path.join(modulePath, 'build', pkgName)\n const outputDir = lzInitiaConfig.modules[moduleName]?.alias ?? pkgName\n const outputPath = path.join(\n lzInitiaConfig.artifactsPath,\n variant !== undefined && variant.length > 0 ? `${outputDir}-${variant}` : outputDir\n )\n let addresses: { [key: string]: string } = {}\n for (const key of Object.keys(context)) {\n const toml = context[key]!\n if (!(key in toml.addresses)) {\n throw new Error(`address not found for ${key}`)\n }\n addresses = { ...addresses, ...toml.addresses }\n }\n addresses = { ...addresses, ...context[moduleName]!.addresses }\n if (!skipBuild) {\n await buildProcess(modulePath, addresses, context[moduleName]!, {\n ...lzInitiaConfig.compileOptions,\n ...module.compileOptions,\n })\n }\n await copyArtifacts(srcPath, outputPath)\n}\n","import fs from 'fs'\nimport path from 'path'\n\nimport { getDeployer } from '@/deployer'\nimport { LzInitiaConfig, ModuleAddresses, MoveContext, MoveToml } from '@/types'\nimport { AccAddress } from '@initia/initia.js'\nimport { parse } from 'smol-toml'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nexport function getRawMoveContextByPath(modulePath: string): MoveContext {\n const tomlPath = path.join(modulePath, 'Move.toml')\n if (!fs.existsSync(tomlPath)) {\n throw new Error(`Move.toml not found in ${tomlPath}`)\n }\n const toml = parse(fs.readFileSync(tomlPath, 'utf-8')) as unknown as MoveToml\n const { dependencies } = toml\n let result: MoveContext = { [toml.package.name]: toml } satisfies MoveContext\n if (dependencies !== undefined) {\n Object.keys(dependencies)\n .filter((key) => {\n return dependencies[key]?.local !== undefined\n })\n .forEach((key) => {\n const dependency = dependencies[key] as { local: string }\n const dependencyPath = path.join(modulePath, dependency.local)\n result = { ...getRawMoveContextByPath(dependencyPath), ...result } satisfies MoveContext\n })\n }\n return result\n}\n\nexport function parseAddresses(addresses: ModuleAddresses, network: Network): { [key in string]?: string } {\n if (addresses === undefined) {\n return {}\n }\n const result: { [key in string]?: string } = {}\n for (const key of Object.keys(addresses)) {\n const value = addresses[key]\n if (typeof value === 'string') {\n result[key] = value\n } else {\n const networkAddress = value[network]\n if (networkAddress === undefined) {\n throw new Error(`${key} address not found for network ${network}`)\n }\n result[key] = networkAddress\n }\n }\n return result\n}\n\nexport function getMoveContext(moduleName: string, lzInitiaConfig: LzInitiaConfig, network: Network): MoveContext {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n throw new Error(`module ${moduleName} not found when getting Move context`)\n }\n const context = getRawMoveContextByPath(module.modulePath)\n for (const key of Object.keys(context)) {\n const toml = context[key]!\n for (const addressKey of Object.keys(toml.addresses)) {\n const address = toml.addresses[addressKey]\n const presetAddresses = {\n ...parseAddresses(lzInitiaConfig.modules[key]?.addresses, network),\n ...parseAddresses(lzInitiaConfig.modules[moduleName]?.addresses, network),\n }\n if (address === '_') {\n if (presetAddresses[addressKey] !== undefined && presetAddresses[addressKey] !== '') {\n toml.addresses[addressKey] = presetAddresses[addressKey]!\n } else {\n try {\n toml.addresses[addressKey] = AccAddress.toHex(\n getDeployer(addressKey, lzInitiaConfig, network).accAddress\n )\n } catch (e) {\n if (key === moduleName) {\n throw new Error(`Fail to generate context for ${key}. ${(e as Error).toString()}`)\n } else {\n throw new Error(\n `Fail to generate context for dependent module ${key}. ${(e as Error).toString()}`\n )\n }\n }\n }\n }\n }\n }\n return context\n}\n","import { LzInitiaConfig } from '@/types'\n\nexport function loadConfig(configPath: string): LzInitiaConfig {\n // WARNING: require('ts-node') will cause '[ERROR] Unterminated template (867:31) [plugin commonjs]' in some cases\n // this error can be eliminated by assigning the name to a variable and require that variable\n const moduleName = 'ts-node'\n const tsnode = require(moduleName) as typeof import('ts-node')\n tsnode.register({\n transpileOnly: true,\n typeCheck: false,\n })\n\n try {\n type ImportType = LzInitiaConfig | { default: LzInitiaConfig }\n const imported = require(configPath) as ImportType\n return 'default' in imported ? imported.default : imported\n } catch (e) {\n if (e !== null && typeof e === 'object' && 'code' in e && e.code === 'ERR_REQUIRE_ESM') {\n throw new Error(\n `Your project is an ESM project (you have \"type\": \"module\" set in your package.json) but your LayerZero config file uses the .js extension.`\n )\n }\n\n throw e\n }\n}\n","import { loadConfig } from '@/loader'\nimport { LzInitiaConfig } from '@/types'\nimport { MnemonicKey } from '@initia/initia.js'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nexport function isInitiaAccount(account: object | undefined): account is MnemonicKey {\n return account !== undefined && account instanceof MnemonicKey\n}\n\nexport function getDeployer(moduleName: string, lzInitiaConfig: LzInitiaConfig, network: Network): MnemonicKey {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n if (lzInitiaConfig.baseModules && lzInitiaConfig.baseModules.length > 0) {\n for (const baseModule of lzInitiaConfig.baseModules) {\n const baseConfig = loadConfig(baseModule)\n try {\n return getDeployer(moduleName, baseConfig, network)\n } catch (e) {\n /* ignore */\n }\n }\n }\n throw new Error(\n `Module ${moduleName} not found. Make sure it is defined in lz-initia.config.ts and double check the key is the package name in Move.toml.`\n )\n }\n const moduleDeployer = isInitiaAccount(module.deployer) ? module.deployer : module.deployer?.[network]\n const defaultDeployer = isInitiaAccount(lzInitiaConfig.defaultDeployer)\n ? lzInitiaConfig.defaultDeployer\n : lzInitiaConfig.defaultDeployer?.[network]\n const deployer = moduleDeployer ?? defaultDeployer\n if (!deployer) {\n throw new Error(`deployer for module ${moduleName} not found`)\n }\n return deployer\n}\n","import { CmdOptions } from '@/types'\n\nexport function parseOptions(defaultOptions: CmdOptions, customOptions: CmdOptions): string[] {\n const options: CmdOptions = { ...defaultOptions, ...customOptions }\n const res: string[] = []\n for (const key of Object.keys(options)) {\n if (typeof options[key] === 'boolean') {\n if (options[key] === true) {\n res.push(key)\n }\n } else {\n res.push(key)\n res.push(options[key] as string)\n }\n }\n return res\n}\n","import fs from 'fs'\nimport * as crypto from 'node:crypto'\nimport path from 'path'\n\nimport { getInitiaClient } from '@/client'\nimport { getDeployer } from '@/deployer'\nimport { handleError } from '@/errors'\nimport { getMoveContext } from '@/move'\nimport { LzInitiaConfig } from '@/types'\nimport { AccAddress, MsgPublish, TxError, Wallet } from '@initia/initia.js'\nimport { glob } from 'glob'\n\nimport { EndpointVersion, Network, Stage, networkToEnv, networkToStage } from '@layerzerolabs/lz-definitions'\n\nfunction deploymentPath(pkgName: string, dest: string, network: Network, variant?: string): string {\n const deploymentPath = path.join(dest, network)\n return path.join(deploymentPath, `${pkgWithVariant(pkgName, variant)}.json`)\n}\n\nexport function saveDeployment(\n moduleName: string,\n pkgName: string,\n address: string,\n dest: string,\n network: Network,\n bytecodeHash: string,\n hash: string,\n variant?: string,\n compatibleVersions = [EndpointVersion.V1, EndpointVersion.V2]\n): void {\n const destPath = deploymentPath(pkgName, dest, network, variant)\n const deploymentDir = path.dirname(destPath)\n if (!fs.existsSync(deploymentDir)) {\n fs.mkdirSync(deploymentDir, { recursive: true })\n }\n fs.writeFileSync(\n destPath,\n JSON.stringify(\n {\n address,\n name: pkgWithVariant(pkgName, variant),\n moduleName,\n network,\n compatibleVersions,\n bytecodeHash,\n transactionHash: hash,\n },\n null,\n 2\n )\n )\n console.log(`Deployment saved to ${destPath}`)\n}\n\nfunction needDeploy(pkgName: string, dest: string, network: Network, bytecodeHash: string, variant?: string): boolean {\n if (networkToStage(network) === Stage.SANDBOX) {\n return true\n }\n const destPath = deploymentPath(pkgName, dest, network, variant)\n if (fs.existsSync(destPath)) {\n const deployment = JSON.parse(fs.readFileSync(destPath, 'utf-8')) as { bytecodeHash: string }\n return deployment.bytecodeHash !== bytecodeHash\n }\n return true\n}\n\nfunction pkgWithVariant(pkgName: string, variant?: string): string {\n return variant !== undefined && variant.length > 0 ? `${pkgName}-${variant}` : pkgName\n}\n\nfunction getBytecodesHash(bytecodes: Uint8Array[]): string {\n // sha256 hash of all bytecodes\n const hash = crypto.createHash('sha256')\n bytecodes.forEach((bytecode) => {\n hash.update(bytecode)\n })\n return hash.digest('hex')\n}\n\nexport async function deploy(\n moduleName: string,\n lzInitiaConfig: LzInitiaConfig,\n network: Network,\n variant?: string\n): Promise<void> {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n throw new Error(`module ${moduleName} not found`)\n }\n const env = networkToEnv(network, EndpointVersion.V2)\n const client = getInitiaClient(env, lzInitiaConfig)\n const deployer = getDeployer(moduleName, lzInitiaConfig, network)\n const context = getMoveContext(moduleName, lzInitiaConfig, network)\n const pkgName = lzInitiaConfig.modules[moduleName]?.alias ?? context[moduleName]!.package.name\n const moduleDir = path.join(lzInitiaConfig.artifactsPath, `${pkgWithVariant(pkgName, variant)}/bytecode_modules`)\n\n const moduleNames: string[] = glob.sync('*.mv', { cwd: moduleDir })\n const moduleBuffers = moduleNames.map((moduleName) => fs.readFileSync(path.join(moduleDir, moduleName)))\n const bytecodeHash = getBytecodesHash(moduleBuffers)\n if (!needDeploy(pkgName, lzInitiaConfig.deploymentPath, network, bytecodeHash, variant)) {\n console.warn(`Code of ${moduleName} has not changed, skipping deploy`)\n return\n }\n try {\n // TODO policy from config\n const msgs = [\n new MsgPublish(\n deployer.accAddress,\n moduleBuffers.map((codeBytes) => codeBytes.toString('base64')),\n MsgPublish.Policy.COMPATIBLE\n ),\n ]\n const wallet = new Wallet(client, deployer)\n const gasPrices =\n lzInitiaConfig.gasPrice?.[network] === undefined ? undefined : `${lzInitiaConfig.gasPrice[network]}unit`\n const signedTx = await wallet.createAndSignTx({ msgs, gasPrices })\n const tx = await client.tx.broadcast(signedTx)\n if (((tx as TxError).code as number) !== 0) {\n throw new Error(tx.raw_log)\n }\n console.log(`Deploy transaction ${tx.txhash} successfully`)\n saveDeployment(\n moduleName,\n pkgName,\n AccAddress.toHex(deployer.accAddress),\n lzInitiaConfig.deploymentPath,\n network,\n bytecodeHash,\n tx.txhash,\n variant,\n lzInitiaConfig.compatibleVersions\n )\n } catch (e: unknown) {\n if (e instanceof Error) {\n handleError(e, moduleName, context, network)\n } else {\n throw e\n }\n }\n}\n","import { LzInitiaConfig } from '@/types'\nimport { LCDClient } from '@initia/initia.js'\n\nimport { Environment } from '@layerzerolabs/lz-definitions'\n\nexport function getInitiaClient(env: Environment, config: LzInitiaConfig): LCDClient {\n const url = config.network?.[env] as string | undefined\n if (url === undefined) {\n throw new Error(`No network url for ${env} found in lz-initia.config.ts`)\n }\n const lcd = new LCDClient(url)\n return lcd\n}\n","import { AxiosError, MoveContext } from '@/types'\nimport { AccAddress } from '@initia/initia.js'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nfunction isAxiosError(error: any): error is AxiosError {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return error?.response?.data?.message !== undefined\n}\n\nfunction handleDepMissingError(error: AxiosError, moduleName: string, context: MoveContext): void {\n if (error.response.data.message.includes('EPACKAGE_DEP_MISSING')) {\n throw new Error(\n `Deploy ${moduleName} failed with EPACKAGE_DEP_MISSING, make sure you have deployed the dependent module [${Object.keys(\n context\n )\n .filter((module) => module !== moduleName)\n .join(',')}]`\n )\n }\n}\n\nfunction handleAccountNotFoundError(\n error: AxiosError,\n moduleName: string,\n context: MoveContext,\n network: Network\n): void {\n const address = context[moduleName]?.addresses[moduleName]\n if (address === undefined) {\n return\n }\n if (error.response.data.message.includes(`account ${AccAddress.fromHex(address)} not found`)) {\n throw new Error(\n `${error.response.data.message}, make sure you have funded the account ${AccAddress.fromHex(address)}(${address}) on ${network}`\n )\n }\n}\n\nfunction handleSenderNotMatchError(error: AxiosError, moduleName: string): void {\n if (error.response.data.message.includes('MODULE_ADDRESS_DOES_NOT_MATCH_SENDER')) {\n throw new Error(\n `Deploy ${moduleName} failed with MODULE_ADDRESS_DOES_NOT_MATCH_SENDER, make sure you compile ${moduleName} with the deployer account address`\n )\n }\n}\n\nfunction handleOtherAxiosError(error: AxiosError): void {\n throw new Error(error.response.data.message)\n}\n\nexport function handleError(error: Error, moduleName: string, context: MoveContext, network: Network): void {\n if (isAxiosError(error)) {\n handleDepMissingError(error, moduleName, context)\n handleAccountNotFoundError(error, moduleName, context, network)\n handleSenderNotMatchError(error, moduleName)\n handleOtherAxiosError(error)\n }\n throw error\n}\n"]}
package/dist/index.mjs CHANGED
@@ -110,7 +110,10 @@ function getMoveContext(moduleName, lzInitiaConfig, network) {
110
110
  const toml = context[key];
111
111
  for (const addressKey of Object.keys(toml.addresses)) {
112
112
  const address = toml.addresses[addressKey];
113
- const presetAddresses = parseAddresses(lzInitiaConfig.modules[key]?.addresses, network);
113
+ const presetAddresses = {
114
+ ...parseAddresses(lzInitiaConfig.modules[key]?.addresses, network),
115
+ ...parseAddresses(lzInitiaConfig.modules[moduleName]?.addresses, network)
116
+ };
114
117
  if (address === "_") {
115
118
  if (presetAddresses[addressKey] !== void 0 && presetAddresses[addressKey] !== "") {
116
119
  toml.addresses[addressKey] = presetAddresses[addressKey];
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/build.ts","../src/move.ts","../src/loader.ts","../src/deployer.ts","../src/options.ts","../src/deploy.ts","../src/client.ts","../src/errors.ts"],"names":["fs","path","AccAddress","glob","deploymentPath","moduleName"],"mappings":"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","sourcesContent":["import fs from 'fs'\nimport path from 'path'\n\nimport { getMoveContext } from '@/move'\nimport { parseOptions } from '@/options'\nimport { CmdOptions, LzInitiaConfig, MoveToml } from '@/types'\nimport { glob } from 'glob'\nimport { $, ProcessOutput } from 'zx'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\n// eslint-disable-next-line @typescript-eslint/promise-function-async\nexport function buildProcess(\n modulePath: string,\n addresses: { [key: string]: string },\n toml: MoveToml,\n customOptions: CmdOptions = {}\n): Promise<ProcessOutput> {\n const addressesParam = Object.keys(addresses)\n .map((key) => `${key}=${addresses[key]}`)\n .join(',')\n const defaultOptions = {\n '--skip-fetch-latest-git-deps': true,\n '--named-addresses': addressesParam,\n }\n const args = parseOptions(defaultOptions, customOptions)\n return $({\n cwd: modulePath,\n stdio: ['inherit', 'pipe', process.stderr],\n verbose: true,\n })`initiad move build ${args}`\n}\n\nexport async function copyArtifacts(src: string, dest: string): Promise<void> {\n // remove existing artifacts, this is necessary to avoid leaving old artifacts\n if (fs.existsSync(dest)) {\n console.log(`Removing existing artifacts at ${dest}`)\n fs.rmSync(dest, { recursive: true })\n }\n fs.mkdirSync(dest, { recursive: true })\n const moduleDir = path.join(src, 'bytecode_modules')\n const modules = glob.sync('*.mv', { cwd: moduleDir })\n for (const module of modules) {\n const destByteCodePath = path.join(dest, 'bytecode_modules')\n if (!fs.existsSync(destByteCodePath)) {\n fs.mkdirSync(destByteCodePath, { recursive: true })\n }\n await $({\n verbose: true,\n })`cp ${path.join(moduleDir, module)} ${path.join(destByteCodePath, module)}`\n }\n}\n\nexport async function build(\n moduleName: string,\n lzInitiaConfig: LzInitiaConfig,\n network: Network,\n skipBuild = false,\n variant?: string\n): Promise<void> {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n throw new Error(`module ${moduleName} not found`)\n }\n const { modulePath } = module\n const context = getMoveContext(moduleName, lzInitiaConfig, network)\n const pkgName = context[moduleName]!.package.name\n const srcPath = path.join(modulePath, 'build', pkgName)\n const outputDir = lzInitiaConfig.modules[moduleName]?.alias ?? pkgName\n const outputPath = path.join(\n lzInitiaConfig.artifactsPath,\n variant !== undefined && variant.length > 0 ? `${outputDir}-${variant}` : outputDir\n )\n let addresses: { [key: string]: string } = {}\n for (const key of Object.keys(context)) {\n const toml = context[key]!\n if (!(key in toml.addresses)) {\n throw new Error(`address not found for ${key}`)\n }\n addresses = { ...addresses, ...toml.addresses }\n }\n addresses = { ...addresses, ...context[moduleName]!.addresses }\n if (!skipBuild) {\n await buildProcess(modulePath, addresses, context[moduleName]!, {\n ...lzInitiaConfig.compileOptions,\n ...module.compileOptions,\n })\n }\n await copyArtifacts(srcPath, outputPath)\n}\n","import fs from 'fs'\nimport path from 'path'\n\nimport { getDeployer } from '@/deployer'\nimport { LzInitiaConfig, ModuleAddresses, MoveContext, MoveToml } from '@/types'\nimport { AccAddress } from '@initia/initia.js'\nimport { parse } from 'smol-toml'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nexport function getRawMoveContextByPath(modulePath: string): MoveContext {\n const tomlPath = path.join(modulePath, 'Move.toml')\n if (!fs.existsSync(tomlPath)) {\n throw new Error(`Move.toml not found in ${tomlPath}`)\n }\n const toml = parse(fs.readFileSync(tomlPath, 'utf-8')) as unknown as MoveToml\n const { dependencies } = toml\n let result: MoveContext = { [toml.package.name]: toml } satisfies MoveContext\n if (dependencies !== undefined) {\n Object.keys(dependencies)\n .filter((key) => {\n return dependencies[key]?.local !== undefined\n })\n .forEach((key) => {\n const dependency = dependencies[key] as { local: string }\n const dependencyPath = path.join(modulePath, dependency.local)\n result = { ...getRawMoveContextByPath(dependencyPath), ...result } satisfies MoveContext\n })\n }\n return result\n}\n\nexport function parseAddresses(addresses: ModuleAddresses, network: Network): { [key in string]?: string } {\n if (addresses === undefined) {\n return {}\n }\n const result: { [key in string]?: string } = {}\n for (const key of Object.keys(addresses)) {\n const value = addresses[key]\n if (typeof value === 'string') {\n result[key] = value\n } else {\n const networkAddress = value[network]\n if (networkAddress === undefined) {\n throw new Error(`${key} address not found for network ${network}`)\n }\n result[key] = networkAddress\n }\n }\n return result\n}\n\nexport function getMoveContext(moduleName: string, lzInitiaConfig: LzInitiaConfig, network: Network): MoveContext {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n throw new Error(`module ${moduleName} not found when getting Move context`)\n }\n const context = getRawMoveContextByPath(module.modulePath)\n for (const key of Object.keys(context)) {\n const toml = context[key]!\n for (const addressKey of Object.keys(toml.addresses)) {\n const address = toml.addresses[addressKey]\n const presetAddresses = parseAddresses(lzInitiaConfig.modules[key]?.addresses, network)\n if (address === '_') {\n if (presetAddresses[addressKey] !== undefined && presetAddresses[addressKey] !== '') {\n toml.addresses[addressKey] = presetAddresses[addressKey]!\n } else {\n try {\n toml.addresses[addressKey] = AccAddress.toHex(\n getDeployer(addressKey, lzInitiaConfig, network).accAddress\n )\n } catch (e) {\n if (key === moduleName) {\n throw new Error(`Fail to generate context for ${key}. ${(e as Error).toString()}`)\n } else {\n throw new Error(\n `Fail to generate context for dependent module ${key}. ${(e as Error).toString()}`\n )\n }\n }\n }\n }\n }\n }\n return context\n}\n","import { LzInitiaConfig } from '@/types'\n\nexport function loadConfig(configPath: string): LzInitiaConfig {\n // WARNING: require('ts-node') will cause '[ERROR] Unterminated template (867:31) [plugin commonjs]' in some cases\n // this error can be eliminated by assigning the name to a variable and require that variable\n const moduleName = 'ts-node'\n const tsnode = require(moduleName) as typeof import('ts-node')\n tsnode.register({\n transpileOnly: true,\n typeCheck: false,\n })\n\n try {\n type ImportType = LzInitiaConfig | { default: LzInitiaConfig }\n const imported = require(configPath) as ImportType\n return 'default' in imported ? imported.default : imported\n } catch (e) {\n if (e !== null && typeof e === 'object' && 'code' in e && e.code === 'ERR_REQUIRE_ESM') {\n throw new Error(\n `Your project is an ESM project (you have \"type\": \"module\" set in your package.json) but your LayerZero config file uses the .js extension.`\n )\n }\n\n throw e\n }\n}\n","import { loadConfig } from '@/loader'\nimport { LzInitiaConfig } from '@/types'\nimport { MnemonicKey } from '@initia/initia.js'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nexport function isInitiaAccount(account: object | undefined): account is MnemonicKey {\n return account !== undefined && account instanceof MnemonicKey\n}\n\nexport function getDeployer(moduleName: string, lzInitiaConfig: LzInitiaConfig, network: Network): MnemonicKey {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n if (lzInitiaConfig.baseModules && lzInitiaConfig.baseModules.length > 0) {\n for (const baseModule of lzInitiaConfig.baseModules) {\n const baseConfig = loadConfig(baseModule)\n try {\n return getDeployer(moduleName, baseConfig, network)\n } catch (e) {\n /* ignore */\n }\n }\n }\n throw new Error(\n `Module ${moduleName} not found. Make sure it is defined in lz-initia.config.ts and double check the key is the package name in Move.toml.`\n )\n }\n const moduleDeployer = isInitiaAccount(module.deployer) ? module.deployer : module.deployer?.[network]\n const defaultDeployer = isInitiaAccount(lzInitiaConfig.defaultDeployer)\n ? lzInitiaConfig.defaultDeployer\n : lzInitiaConfig.defaultDeployer?.[network]\n const deployer = moduleDeployer ?? defaultDeployer\n if (!deployer) {\n throw new Error(`deployer for module ${moduleName} not found`)\n }\n return deployer\n}\n","import { CmdOptions } from '@/types'\n\nexport function parseOptions(defaultOptions: CmdOptions, customOptions: CmdOptions): string[] {\n const options: CmdOptions = { ...defaultOptions, ...customOptions }\n const res: string[] = []\n for (const key of Object.keys(options)) {\n if (typeof options[key] === 'boolean') {\n if (options[key] === true) {\n res.push(key)\n }\n } else {\n res.push(key)\n res.push(options[key] as string)\n }\n }\n return res\n}\n","import fs from 'fs'\nimport * as crypto from 'node:crypto'\nimport path from 'path'\n\nimport { getInitiaClient } from '@/client'\nimport { getDeployer } from '@/deployer'\nimport { handleError } from '@/errors'\nimport { getMoveContext } from '@/move'\nimport { LzInitiaConfig } from '@/types'\nimport { AccAddress, MsgPublish, TxError, Wallet } from '@initia/initia.js'\nimport { glob } from 'glob'\n\nimport { EndpointVersion, Network, Stage, networkToEnv, networkToStage } from '@layerzerolabs/lz-definitions'\n\nfunction deploymentPath(pkgName: string, dest: string, network: Network, variant?: string): string {\n const deploymentPath = path.join(dest, network)\n return path.join(deploymentPath, `${pkgWithVariant(pkgName, variant)}.json`)\n}\n\nexport function saveDeployment(\n moduleName: string,\n pkgName: string,\n address: string,\n dest: string,\n network: Network,\n bytecodeHash: string,\n hash: string,\n variant?: string,\n compatibleVersions = [EndpointVersion.V1, EndpointVersion.V2]\n): void {\n const destPath = deploymentPath(pkgName, dest, network, variant)\n const deploymentDir = path.dirname(destPath)\n if (!fs.existsSync(deploymentDir)) {\n fs.mkdirSync(deploymentDir, { recursive: true })\n }\n fs.writeFileSync(\n destPath,\n JSON.stringify(\n {\n address,\n name: pkgWithVariant(pkgName, variant),\n moduleName,\n network,\n compatibleVersions,\n bytecodeHash,\n transactionHash: hash,\n },\n null,\n 2\n )\n )\n console.log(`Deployment saved to ${destPath}`)\n}\n\nfunction needDeploy(pkgName: string, dest: string, network: Network, bytecodeHash: string, variant?: string): boolean {\n if (networkToStage(network) === Stage.SANDBOX) {\n return true\n }\n const destPath = deploymentPath(pkgName, dest, network, variant)\n if (fs.existsSync(destPath)) {\n const deployment = JSON.parse(fs.readFileSync(destPath, 'utf-8')) as { bytecodeHash: string }\n return deployment.bytecodeHash !== bytecodeHash\n }\n return true\n}\n\nfunction pkgWithVariant(pkgName: string, variant?: string): string {\n return variant !== undefined && variant.length > 0 ? `${pkgName}-${variant}` : pkgName\n}\n\nfunction getBytecodesHash(bytecodes: Uint8Array[]): string {\n // sha256 hash of all bytecodes\n const hash = crypto.createHash('sha256')\n bytecodes.forEach((bytecode) => {\n hash.update(bytecode)\n })\n return hash.digest('hex')\n}\n\nexport async function deploy(\n moduleName: string,\n lzInitiaConfig: LzInitiaConfig,\n network: Network,\n variant?: string\n): Promise<void> {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n throw new Error(`module ${moduleName} not found`)\n }\n const env = networkToEnv(network, EndpointVersion.V2)\n const client = getInitiaClient(env, lzInitiaConfig)\n const deployer = getDeployer(moduleName, lzInitiaConfig, network)\n const context = getMoveContext(moduleName, lzInitiaConfig, network)\n const pkgName = lzInitiaConfig.modules[moduleName]?.alias ?? context[moduleName]!.package.name\n const moduleDir = path.join(lzInitiaConfig.artifactsPath, `${pkgWithVariant(pkgName, variant)}/bytecode_modules`)\n\n const moduleNames: string[] = glob.sync('*.mv', { cwd: moduleDir })\n const moduleBuffers = moduleNames.map((moduleName) => fs.readFileSync(path.join(moduleDir, moduleName)))\n const bytecodeHash = getBytecodesHash(moduleBuffers)\n if (!needDeploy(pkgName, lzInitiaConfig.deploymentPath, network, bytecodeHash, variant)) {\n console.warn(`Code of ${moduleName} has not changed, skipping deploy`)\n return\n }\n try {\n // TODO policy from config\n const msgs = [\n new MsgPublish(\n deployer.accAddress,\n moduleBuffers.map((codeBytes) => codeBytes.toString('base64')),\n MsgPublish.Policy.COMPATIBLE\n ),\n ]\n const wallet = new Wallet(client, deployer)\n const gasPrices =\n lzInitiaConfig.gasPrice?.[network] === undefined ? undefined : `${lzInitiaConfig.gasPrice[network]}unit`\n const signedTx = await wallet.createAndSignTx({ msgs, gasPrices })\n const tx = await client.tx.broadcast(signedTx)\n if (((tx as TxError).code as number) !== 0) {\n throw new Error(tx.raw_log)\n }\n console.log(`Deploy transaction ${tx.txhash} successfully`)\n saveDeployment(\n moduleName,\n pkgName,\n AccAddress.toHex(deployer.accAddress),\n lzInitiaConfig.deploymentPath,\n network,\n bytecodeHash,\n tx.txhash,\n variant,\n lzInitiaConfig.compatibleVersions\n )\n } catch (e: unknown) {\n if (e instanceof Error) {\n handleError(e, moduleName, context, network)\n } else {\n throw e\n }\n }\n}\n","import { LzInitiaConfig } from '@/types'\nimport { LCDClient } from '@initia/initia.js'\n\nimport { Environment } from '@layerzerolabs/lz-definitions'\n\nexport function getInitiaClient(env: Environment, config: LzInitiaConfig): LCDClient {\n const url = config.network?.[env] as string | undefined\n if (url === undefined) {\n throw new Error(`No network url for ${env} found in lz-initia.config.ts`)\n }\n const lcd = new LCDClient(url)\n return lcd\n}\n","import { AxiosError, MoveContext } from '@/types'\nimport { AccAddress } from '@initia/initia.js'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nfunction isAxiosError(error: any): error is AxiosError {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return error?.response?.data?.message !== undefined\n}\n\nfunction handleDepMissingError(error: AxiosError, moduleName: string, context: MoveContext): void {\n if (error.response.data.message.includes('EPACKAGE_DEP_MISSING')) {\n throw new Error(\n `Deploy ${moduleName} failed with EPACKAGE_DEP_MISSING, make sure you have deployed the dependent module [${Object.keys(\n context\n )\n .filter((module) => module !== moduleName)\n .join(',')}]`\n )\n }\n}\n\nfunction handleAccountNotFoundError(\n error: AxiosError,\n moduleName: string,\n context: MoveContext,\n network: Network\n): void {\n const address = context[moduleName]?.addresses[moduleName]\n if (address === undefined) {\n return\n }\n if (error.response.data.message.includes(`account ${AccAddress.fromHex(address)} not found`)) {\n throw new Error(\n `${error.response.data.message}, make sure you have funded the account ${AccAddress.fromHex(address)}(${address}) on ${network}`\n )\n }\n}\n\nfunction handleSenderNotMatchError(error: AxiosError, moduleName: string): void {\n if (error.response.data.message.includes('MODULE_ADDRESS_DOES_NOT_MATCH_SENDER')) {\n throw new Error(\n `Deploy ${moduleName} failed with MODULE_ADDRESS_DOES_NOT_MATCH_SENDER, make sure you compile ${moduleName} with the deployer account address`\n )\n }\n}\n\nfunction handleOtherAxiosError(error: AxiosError): void {\n throw new Error(error.response.data.message)\n}\n\nexport function handleError(error: Error, moduleName: string, context: MoveContext, network: Network): void {\n if (isAxiosError(error)) {\n handleDepMissingError(error, moduleName, context)\n handleAccountNotFoundError(error, moduleName, context, network)\n handleSenderNotMatchError(error, moduleName)\n handleOtherAxiosError(error)\n }\n throw error\n}\n"]}
1
+ {"version":3,"sources":["../src/build.ts","../src/move.ts","../src/loader.ts","../src/deployer.ts","../src/options.ts","../src/deploy.ts","../src/client.ts","../src/errors.ts"],"names":["fs","path","AccAddress","glob","deploymentPath","moduleName"],"mappings":"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","sourcesContent":["import fs from 'fs'\nimport path from 'path'\n\nimport { getMoveContext } from '@/move'\nimport { parseOptions } from '@/options'\nimport { CmdOptions, LzInitiaConfig, MoveToml } from '@/types'\nimport { glob } from 'glob'\nimport { $, ProcessOutput } from 'zx'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\n// eslint-disable-next-line @typescript-eslint/promise-function-async\nexport function buildProcess(\n modulePath: string,\n addresses: { [key: string]: string },\n toml: MoveToml,\n customOptions: CmdOptions = {}\n): Promise<ProcessOutput> {\n const addressesParam = Object.keys(addresses)\n .map((key) => `${key}=${addresses[key]}`)\n .join(',')\n const defaultOptions = {\n '--skip-fetch-latest-git-deps': true,\n '--named-addresses': addressesParam,\n }\n const args = parseOptions(defaultOptions, customOptions)\n return $({\n cwd: modulePath,\n stdio: ['inherit', 'pipe', process.stderr],\n verbose: true,\n })`initiad move build ${args}`\n}\n\nexport async function copyArtifacts(src: string, dest: string): Promise<void> {\n // remove existing artifacts, this is necessary to avoid leaving old artifacts\n if (fs.existsSync(dest)) {\n console.log(`Removing existing artifacts at ${dest}`)\n fs.rmSync(dest, { recursive: true })\n }\n fs.mkdirSync(dest, { recursive: true })\n const moduleDir = path.join(src, 'bytecode_modules')\n const modules = glob.sync('*.mv', { cwd: moduleDir })\n for (const module of modules) {\n const destByteCodePath = path.join(dest, 'bytecode_modules')\n if (!fs.existsSync(destByteCodePath)) {\n fs.mkdirSync(destByteCodePath, { recursive: true })\n }\n await $({\n verbose: true,\n })`cp ${path.join(moduleDir, module)} ${path.join(destByteCodePath, module)}`\n }\n}\n\nexport async function build(\n moduleName: string,\n lzInitiaConfig: LzInitiaConfig,\n network: Network,\n skipBuild = false,\n variant?: string\n): Promise<void> {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n throw new Error(`module ${moduleName} not found`)\n }\n const { modulePath } = module\n const context = getMoveContext(moduleName, lzInitiaConfig, network)\n const pkgName = context[moduleName]!.package.name\n const srcPath = path.join(modulePath, 'build', pkgName)\n const outputDir = lzInitiaConfig.modules[moduleName]?.alias ?? pkgName\n const outputPath = path.join(\n lzInitiaConfig.artifactsPath,\n variant !== undefined && variant.length > 0 ? `${outputDir}-${variant}` : outputDir\n )\n let addresses: { [key: string]: string } = {}\n for (const key of Object.keys(context)) {\n const toml = context[key]!\n if (!(key in toml.addresses)) {\n throw new Error(`address not found for ${key}`)\n }\n addresses = { ...addresses, ...toml.addresses }\n }\n addresses = { ...addresses, ...context[moduleName]!.addresses }\n if (!skipBuild) {\n await buildProcess(modulePath, addresses, context[moduleName]!, {\n ...lzInitiaConfig.compileOptions,\n ...module.compileOptions,\n })\n }\n await copyArtifacts(srcPath, outputPath)\n}\n","import fs from 'fs'\nimport path from 'path'\n\nimport { getDeployer } from '@/deployer'\nimport { LzInitiaConfig, ModuleAddresses, MoveContext, MoveToml } from '@/types'\nimport { AccAddress } from '@initia/initia.js'\nimport { parse } from 'smol-toml'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nexport function getRawMoveContextByPath(modulePath: string): MoveContext {\n const tomlPath = path.join(modulePath, 'Move.toml')\n if (!fs.existsSync(tomlPath)) {\n throw new Error(`Move.toml not found in ${tomlPath}`)\n }\n const toml = parse(fs.readFileSync(tomlPath, 'utf-8')) as unknown as MoveToml\n const { dependencies } = toml\n let result: MoveContext = { [toml.package.name]: toml } satisfies MoveContext\n if (dependencies !== undefined) {\n Object.keys(dependencies)\n .filter((key) => {\n return dependencies[key]?.local !== undefined\n })\n .forEach((key) => {\n const dependency = dependencies[key] as { local: string }\n const dependencyPath = path.join(modulePath, dependency.local)\n result = { ...getRawMoveContextByPath(dependencyPath), ...result } satisfies MoveContext\n })\n }\n return result\n}\n\nexport function parseAddresses(addresses: ModuleAddresses, network: Network): { [key in string]?: string } {\n if (addresses === undefined) {\n return {}\n }\n const result: { [key in string]?: string } = {}\n for (const key of Object.keys(addresses)) {\n const value = addresses[key]\n if (typeof value === 'string') {\n result[key] = value\n } else {\n const networkAddress = value[network]\n if (networkAddress === undefined) {\n throw new Error(`${key} address not found for network ${network}`)\n }\n result[key] = networkAddress\n }\n }\n return result\n}\n\nexport function getMoveContext(moduleName: string, lzInitiaConfig: LzInitiaConfig, network: Network): MoveContext {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n throw new Error(`module ${moduleName} not found when getting Move context`)\n }\n const context = getRawMoveContextByPath(module.modulePath)\n for (const key of Object.keys(context)) {\n const toml = context[key]!\n for (const addressKey of Object.keys(toml.addresses)) {\n const address = toml.addresses[addressKey]\n const presetAddresses = {\n ...parseAddresses(lzInitiaConfig.modules[key]?.addresses, network),\n ...parseAddresses(lzInitiaConfig.modules[moduleName]?.addresses, network),\n }\n if (address === '_') {\n if (presetAddresses[addressKey] !== undefined && presetAddresses[addressKey] !== '') {\n toml.addresses[addressKey] = presetAddresses[addressKey]!\n } else {\n try {\n toml.addresses[addressKey] = AccAddress.toHex(\n getDeployer(addressKey, lzInitiaConfig, network).accAddress\n )\n } catch (e) {\n if (key === moduleName) {\n throw new Error(`Fail to generate context for ${key}. ${(e as Error).toString()}`)\n } else {\n throw new Error(\n `Fail to generate context for dependent module ${key}. ${(e as Error).toString()}`\n )\n }\n }\n }\n }\n }\n }\n return context\n}\n","import { LzInitiaConfig } from '@/types'\n\nexport function loadConfig(configPath: string): LzInitiaConfig {\n // WARNING: require('ts-node') will cause '[ERROR] Unterminated template (867:31) [plugin commonjs]' in some cases\n // this error can be eliminated by assigning the name to a variable and require that variable\n const moduleName = 'ts-node'\n const tsnode = require(moduleName) as typeof import('ts-node')\n tsnode.register({\n transpileOnly: true,\n typeCheck: false,\n })\n\n try {\n type ImportType = LzInitiaConfig | { default: LzInitiaConfig }\n const imported = require(configPath) as ImportType\n return 'default' in imported ? imported.default : imported\n } catch (e) {\n if (e !== null && typeof e === 'object' && 'code' in e && e.code === 'ERR_REQUIRE_ESM') {\n throw new Error(\n `Your project is an ESM project (you have \"type\": \"module\" set in your package.json) but your LayerZero config file uses the .js extension.`\n )\n }\n\n throw e\n }\n}\n","import { loadConfig } from '@/loader'\nimport { LzInitiaConfig } from '@/types'\nimport { MnemonicKey } from '@initia/initia.js'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nexport function isInitiaAccount(account: object | undefined): account is MnemonicKey {\n return account !== undefined && account instanceof MnemonicKey\n}\n\nexport function getDeployer(moduleName: string, lzInitiaConfig: LzInitiaConfig, network: Network): MnemonicKey {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n if (lzInitiaConfig.baseModules && lzInitiaConfig.baseModules.length > 0) {\n for (const baseModule of lzInitiaConfig.baseModules) {\n const baseConfig = loadConfig(baseModule)\n try {\n return getDeployer(moduleName, baseConfig, network)\n } catch (e) {\n /* ignore */\n }\n }\n }\n throw new Error(\n `Module ${moduleName} not found. Make sure it is defined in lz-initia.config.ts and double check the key is the package name in Move.toml.`\n )\n }\n const moduleDeployer = isInitiaAccount(module.deployer) ? module.deployer : module.deployer?.[network]\n const defaultDeployer = isInitiaAccount(lzInitiaConfig.defaultDeployer)\n ? lzInitiaConfig.defaultDeployer\n : lzInitiaConfig.defaultDeployer?.[network]\n const deployer = moduleDeployer ?? defaultDeployer\n if (!deployer) {\n throw new Error(`deployer for module ${moduleName} not found`)\n }\n return deployer\n}\n","import { CmdOptions } from '@/types'\n\nexport function parseOptions(defaultOptions: CmdOptions, customOptions: CmdOptions): string[] {\n const options: CmdOptions = { ...defaultOptions, ...customOptions }\n const res: string[] = []\n for (const key of Object.keys(options)) {\n if (typeof options[key] === 'boolean') {\n if (options[key] === true) {\n res.push(key)\n }\n } else {\n res.push(key)\n res.push(options[key] as string)\n }\n }\n return res\n}\n","import fs from 'fs'\nimport * as crypto from 'node:crypto'\nimport path from 'path'\n\nimport { getInitiaClient } from '@/client'\nimport { getDeployer } from '@/deployer'\nimport { handleError } from '@/errors'\nimport { getMoveContext } from '@/move'\nimport { LzInitiaConfig } from '@/types'\nimport { AccAddress, MsgPublish, TxError, Wallet } from '@initia/initia.js'\nimport { glob } from 'glob'\n\nimport { EndpointVersion, Network, Stage, networkToEnv, networkToStage } from '@layerzerolabs/lz-definitions'\n\nfunction deploymentPath(pkgName: string, dest: string, network: Network, variant?: string): string {\n const deploymentPath = path.join(dest, network)\n return path.join(deploymentPath, `${pkgWithVariant(pkgName, variant)}.json`)\n}\n\nexport function saveDeployment(\n moduleName: string,\n pkgName: string,\n address: string,\n dest: string,\n network: Network,\n bytecodeHash: string,\n hash: string,\n variant?: string,\n compatibleVersions = [EndpointVersion.V1, EndpointVersion.V2]\n): void {\n const destPath = deploymentPath(pkgName, dest, network, variant)\n const deploymentDir = path.dirname(destPath)\n if (!fs.existsSync(deploymentDir)) {\n fs.mkdirSync(deploymentDir, { recursive: true })\n }\n fs.writeFileSync(\n destPath,\n JSON.stringify(\n {\n address,\n name: pkgWithVariant(pkgName, variant),\n moduleName,\n network,\n compatibleVersions,\n bytecodeHash,\n transactionHash: hash,\n },\n null,\n 2\n )\n )\n console.log(`Deployment saved to ${destPath}`)\n}\n\nfunction needDeploy(pkgName: string, dest: string, network: Network, bytecodeHash: string, variant?: string): boolean {\n if (networkToStage(network) === Stage.SANDBOX) {\n return true\n }\n const destPath = deploymentPath(pkgName, dest, network, variant)\n if (fs.existsSync(destPath)) {\n const deployment = JSON.parse(fs.readFileSync(destPath, 'utf-8')) as { bytecodeHash: string }\n return deployment.bytecodeHash !== bytecodeHash\n }\n return true\n}\n\nfunction pkgWithVariant(pkgName: string, variant?: string): string {\n return variant !== undefined && variant.length > 0 ? `${pkgName}-${variant}` : pkgName\n}\n\nfunction getBytecodesHash(bytecodes: Uint8Array[]): string {\n // sha256 hash of all bytecodes\n const hash = crypto.createHash('sha256')\n bytecodes.forEach((bytecode) => {\n hash.update(bytecode)\n })\n return hash.digest('hex')\n}\n\nexport async function deploy(\n moduleName: string,\n lzInitiaConfig: LzInitiaConfig,\n network: Network,\n variant?: string\n): Promise<void> {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n throw new Error(`module ${moduleName} not found`)\n }\n const env = networkToEnv(network, EndpointVersion.V2)\n const client = getInitiaClient(env, lzInitiaConfig)\n const deployer = getDeployer(moduleName, lzInitiaConfig, network)\n const context = getMoveContext(moduleName, lzInitiaConfig, network)\n const pkgName = lzInitiaConfig.modules[moduleName]?.alias ?? context[moduleName]!.package.name\n const moduleDir = path.join(lzInitiaConfig.artifactsPath, `${pkgWithVariant(pkgName, variant)}/bytecode_modules`)\n\n const moduleNames: string[] = glob.sync('*.mv', { cwd: moduleDir })\n const moduleBuffers = moduleNames.map((moduleName) => fs.readFileSync(path.join(moduleDir, moduleName)))\n const bytecodeHash = getBytecodesHash(moduleBuffers)\n if (!needDeploy(pkgName, lzInitiaConfig.deploymentPath, network, bytecodeHash, variant)) {\n console.warn(`Code of ${moduleName} has not changed, skipping deploy`)\n return\n }\n try {\n // TODO policy from config\n const msgs = [\n new MsgPublish(\n deployer.accAddress,\n moduleBuffers.map((codeBytes) => codeBytes.toString('base64')),\n MsgPublish.Policy.COMPATIBLE\n ),\n ]\n const wallet = new Wallet(client, deployer)\n const gasPrices =\n lzInitiaConfig.gasPrice?.[network] === undefined ? undefined : `${lzInitiaConfig.gasPrice[network]}unit`\n const signedTx = await wallet.createAndSignTx({ msgs, gasPrices })\n const tx = await client.tx.broadcast(signedTx)\n if (((tx as TxError).code as number) !== 0) {\n throw new Error(tx.raw_log)\n }\n console.log(`Deploy transaction ${tx.txhash} successfully`)\n saveDeployment(\n moduleName,\n pkgName,\n AccAddress.toHex(deployer.accAddress),\n lzInitiaConfig.deploymentPath,\n network,\n bytecodeHash,\n tx.txhash,\n variant,\n lzInitiaConfig.compatibleVersions\n )\n } catch (e: unknown) {\n if (e instanceof Error) {\n handleError(e, moduleName, context, network)\n } else {\n throw e\n }\n }\n}\n","import { LzInitiaConfig } from '@/types'\nimport { LCDClient } from '@initia/initia.js'\n\nimport { Environment } from '@layerzerolabs/lz-definitions'\n\nexport function getInitiaClient(env: Environment, config: LzInitiaConfig): LCDClient {\n const url = config.network?.[env] as string | undefined\n if (url === undefined) {\n throw new Error(`No network url for ${env} found in lz-initia.config.ts`)\n }\n const lcd = new LCDClient(url)\n return lcd\n}\n","import { AxiosError, MoveContext } from '@/types'\nimport { AccAddress } from '@initia/initia.js'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nfunction isAxiosError(error: any): error is AxiosError {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return error?.response?.data?.message !== undefined\n}\n\nfunction handleDepMissingError(error: AxiosError, moduleName: string, context: MoveContext): void {\n if (error.response.data.message.includes('EPACKAGE_DEP_MISSING')) {\n throw new Error(\n `Deploy ${moduleName} failed with EPACKAGE_DEP_MISSING, make sure you have deployed the dependent module [${Object.keys(\n context\n )\n .filter((module) => module !== moduleName)\n .join(',')}]`\n )\n }\n}\n\nfunction handleAccountNotFoundError(\n error: AxiosError,\n moduleName: string,\n context: MoveContext,\n network: Network\n): void {\n const address = context[moduleName]?.addresses[moduleName]\n if (address === undefined) {\n return\n }\n if (error.response.data.message.includes(`account ${AccAddress.fromHex(address)} not found`)) {\n throw new Error(\n `${error.response.data.message}, make sure you have funded the account ${AccAddress.fromHex(address)}(${address}) on ${network}`\n )\n }\n}\n\nfunction handleSenderNotMatchError(error: AxiosError, moduleName: string): void {\n if (error.response.data.message.includes('MODULE_ADDRESS_DOES_NOT_MATCH_SENDER')) {\n throw new Error(\n `Deploy ${moduleName} failed with MODULE_ADDRESS_DOES_NOT_MATCH_SENDER, make sure you compile ${moduleName} with the deployer account address`\n )\n }\n}\n\nfunction handleOtherAxiosError(error: AxiosError): void {\n throw new Error(error.response.data.message)\n}\n\nexport function handleError(error: Error, moduleName: string, context: MoveContext, network: Network): void {\n if (isAxiosError(error)) {\n handleDepMissingError(error, moduleName, context)\n handleAccountNotFoundError(error, moduleName, context, network)\n handleSenderNotMatchError(error, moduleName)\n handleOtherAxiosError(error)\n }\n throw error\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@layerzerolabs/lz-initia-cli",
3
- "version": "3.0.3",
3
+ "version": "3.0.5",
4
4
  "license": "BUSL-1.1",
5
5
  "exports": {
6
6
  ".": {
@@ -25,9 +25,9 @@
25
25
  "dependencies": {
26
26
  "@commander-js/extra-typings": "^12.1.0",
27
27
  "@initia/initia.js": "^0.2.11",
28
- "@layerzerolabs/lz-config-types": "^3.0.3",
29
- "@layerzerolabs/lz-definitions": "^3.0.3",
30
- "@layerzerolabs/lz-utilities": "^3.0.3",
28
+ "@layerzerolabs/lz-config-types": "^3.0.5",
29
+ "@layerzerolabs/lz-definitions": "^3.0.5",
30
+ "@layerzerolabs/lz-utilities": "^3.0.5",
31
31
  "commander": "^12.1.0",
32
32
  "find-up": "^5.0.0",
33
33
  "glob": "^10.3.10",
@@ -36,9 +36,9 @@
36
36
  },
37
37
  "devDependencies": {
38
38
  "@jest/globals": "^29.7.0",
39
- "@layerzerolabs/ops-utilities": "^3.0.3",
40
- "@layerzerolabs/tsup-config-next": "^3.0.3",
41
- "@layerzerolabs/typescript-config-next": "^3.0.3",
39
+ "@layerzerolabs/ops-utilities": "^3.0.5",
40
+ "@layerzerolabs/tsup-config-next": "^3.0.5",
41
+ "@layerzerolabs/typescript-config-next": "^3.0.5",
42
42
  "@types/jest": "^29.5.10",
43
43
  "jest": "^29.7.0",
44
44
  "rimraf": "^5.0.5",