@layerzerolabs/lz-initia-cli 3.0.22 → 3.0.23

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,15 @@
1
1
  # @layerzerolabs/lz-initia-cli
2
2
 
3
+ ## 3.0.23
4
+
5
+ ### Patch Changes
6
+
7
+ - f8c6509: bump version solana webjs
8
+ - Updated dependencies [f8c6509]
9
+ - @layerzerolabs/lz-definitions@3.0.23
10
+ - @layerzerolabs/lz-config-types@3.0.23
11
+ - @layerzerolabs/lz-utilities@3.0.23
12
+
3
13
  ## 3.0.22
4
14
 
5
15
  ### Patch Changes
package/dist/cli.cjs CHANGED
@@ -150,8 +150,8 @@ function getDeploymentPath(lzAptosConfig, network, moduleName) {
150
150
  async function checkIfObjectAddressExists(lzAptosConfig, network, address) {
151
151
  try {
152
152
  const client = getInitiaClient(lzDefinitions.networkToEnv(network, lzDefinitions.EndpointVersion.V2), lzAptosConfig);
153
- const object = await client.auth.accountInfo(address);
154
- return object !== void 0;
153
+ const module = (await client.move.modules(address))[0];
154
+ return module !== void 0;
155
155
  } catch (e) {
156
156
  return false;
157
157
  }
@@ -201,11 +201,11 @@ var createObjectAddress = (creatorAddress, seed) => {
201
201
  async function genObjectAddressForOfficial(network, lzAptosConfig, moduleName) {
202
202
  const client = getInitiaClient(lzDefinitions.networkToEnv(network, lzDefinitions.EndpointVersion.V2), lzAptosConfig);
203
203
  const deployer = getDeployer(moduleName, lzAptosConfig, network);
204
- const OBJECT_CODE_DEPLOYMENT_DOMAIN_SEPARATOR = "aptos_framework::object_code_deployment";
204
+ const OBJECT_CODE_DEPLOYMENT_DOMAIN_SEPARATOR = "initia_std::object_code_deployment";
205
205
  const account = await client.auth.accountInfo(deployer.accAddress);
206
206
  const sequenceNumber = account.getSequenceNumber();
207
207
  const firstPart = initia_js.bcs.string().serialize(OBJECT_CODE_DEPLOYMENT_DOMAIN_SEPARATOR);
208
- const secondPart = initia_js.bcs.u64().serialize(BigInt(sequenceNumber) + BigInt(1));
208
+ const secondPart = initia_js.bcs.u64().serialize(BigInt(sequenceNumber) + BigInt(2));
209
209
  const seed = new Uint8Array([...firstPart.toBytes(), ...secondPart.toBytes()]);
210
210
  const objectAddress = createObjectAddress(deployer.accAddress, seed);
211
211
  return objectAddress;
@@ -214,7 +214,7 @@ function genObjectAddressForLayerzero(network, lzAptosConfig, moduleName) {
214
214
  const deployer = getDeployer(moduleName, lzAptosConfig, network);
215
215
  const seed = getFullName(lzAptosConfig, moduleName);
216
216
  const objectAddress = createObjectAddress(deployer.accAddress, new Uint8Array(Buffer.from(seed, "utf8")));
217
- return objectAddress.toString();
217
+ return objectAddress;
218
218
  }
219
219
  async function genObjectAddress(moduleName, lzAptosConfig, network) {
220
220
  const objectDeployer = getObjectDeployerFromConfig(lzAptosConfig, network, moduleName);
@@ -375,35 +375,30 @@ function saveDeployment(deployer, moduleName, pkgName, address, dest, network, b
375
375
  );
376
376
  console.log(`Deployment saved to ${destPath}`);
377
377
  }
378
- async function checkIfModuleExistedOnChain(client, moduleNames, address) {
378
+ async function checkIfModuleExistedOnAddress(client, moduleNames, address) {
379
379
  try {
380
380
  const modules = (await client.move.modules(address))[0];
381
- return moduleNames.some(
381
+ const isExisted = moduleNames.some(
382
382
  (moduleName) => modules.map((module) => module.module_name).includes(moduleName.replace(".mv", ""))
383
383
  );
384
+ return isExisted;
384
385
  } catch (e) {
385
- try {
386
- const object = await client.auth.accountInfo(address);
387
- return object !== void 0;
388
- } catch (e2) {
389
- return false;
390
- }
386
+ return false;
391
387
  }
392
388
  }
393
- async function getDeployActionType(client, pkgName, moduleNames, dest, network, bytecodeHash, variant) {
394
- const destPath = deploymentPath(pkgName, dest, network, variant);
395
- if (fs3__default.default.existsSync(destPath)) {
396
- const deployment = JSON.parse(fs3__default.default.readFileSync(destPath, "utf-8"));
397
- const moduleExisted = await checkIfModuleExistedOnChain(client, moduleNames, deployment.address);
398
- if (moduleExisted) {
399
- if (deployment.bytecodeHash !== bytecodeHash || network.includes("local")) {
400
- return { actionType: "Upgrade" /* Upgrade */, address: deployment.address };
401
- } else {
402
- return { actionType: "Skip" /* Skip */, address: deployment.address };
389
+ async function getDeployActionType(client, pkgName, moduleNames, dest, network, bytecodeHash, deployAddress, variant) {
390
+ const moduleExisted = await checkIfModuleExistedOnAddress(client, moduleNames, deployAddress);
391
+ if (moduleExisted) {
392
+ const destPath = deploymentPath(pkgName, dest, network, variant);
393
+ if (fs3__default.default.existsSync(destPath)) {
394
+ const deployment = JSON.parse(fs3__default.default.readFileSync(destPath, "utf-8"));
395
+ if (deployment.bytecodeHash === bytecodeHash) {
396
+ return "Skip" /* Skip */;
403
397
  }
404
398
  }
399
+ return "Upgrade" /* Upgrade */;
405
400
  }
406
- return { actionType: "Deploy" /* Deploy */, address: void 0 };
401
+ return "Deploy" /* Deploy */;
407
402
  }
408
403
  function pkgWithVariant(pkgName, variant) {
409
404
  return variant !== void 0 && variant.length > 0 ? `${pkgName}-${variant}` : pkgName;
@@ -428,22 +423,22 @@ async function createAccountDeploymentTx(client, deployer, modules, lzInitiaConf
428
423
  const signedTx = await wallet.createAndSignTx({ msgs, gasPrices });
429
424
  return signedTx;
430
425
  }
431
- async function createObjectDeploymentTx(client, deployer, modules, lzInitiaConfig, network, moduleName, objectAddress) {
426
+ async function createObjectDeploymentTx(client, deployer, modules, lzInitiaConfig, network, moduleName, deployedAddress, actionType) {
432
427
  const objectDeployer = getObjectDeployerFromConfig(lzInitiaConfig, network, moduleName);
433
428
  const metadataArg = initia_js.bcs.vector(initia_js.bcs.u8()).serialize(Uint8Array.from([])).toBase64();
434
429
  const modulesArg = initia_js.bcs.vector(initia_js.bcs.vector(initia_js.bcs.u8())).serialize(modules).toBase64();
435
- const objectAddressArg = objectAddress === void 0 ? void 0 : initia_js.bcs.address().serialize(objectAddress).toBase64();
436
- let functionArguments = objectAddressArg === void 0 ? [metadataArg, modulesArg] : [metadataArg, modulesArg, objectAddressArg];
430
+ const objectAddressArg = initia_js.bcs.address().serialize(deployedAddress).toBase64();
431
+ let functionArguments = actionType === "Deploy" /* Deploy */ ? [metadataArg, modulesArg] : [metadataArg, modulesArg, objectAddressArg];
437
432
  if (objectDeployer !== InitiaObjectDeployerAddress) {
438
433
  const seed = getFullName(lzInitiaConfig, moduleName);
439
434
  const seedArg = initia_js.bcs.vector(initia_js.bcs.u8()).serialize(Uint8Array.from(Buffer.from(seed))).toBase64();
440
- functionArguments = objectAddressArg === void 0 ? [seedArg, metadataArg, modulesArg] : [metadataArg, modulesArg, objectAddressArg];
435
+ functionArguments = actionType === "Deploy" /* Deploy */ ? [seedArg, metadataArg, modulesArg] : [metadataArg, modulesArg, objectAddressArg];
441
436
  }
442
437
  const msg = new initia_js.MsgExecute(
443
438
  deployer.accAddress,
444
439
  initia_js.AccAddress.fromHex(objectDeployer),
445
440
  "object_code_deployment",
446
- objectAddress === void 0 ? `publish` : `upgrade`,
441
+ actionType === "Deploy" /* Deploy */ ? `publish` : `upgrade`,
447
442
  [],
448
443
  functionArguments
449
444
  );
@@ -455,7 +450,7 @@ async function createObjectDeploymentTx(client, deployer, modules, lzInitiaConfi
455
450
  async function deploy(moduleName, lzInitiaConfig, network, variant, deployToObject = false) {
456
451
  const module = lzInitiaConfig.modules[moduleName];
457
452
  if (!module) {
458
- throw new Error(`module ${moduleName} not found`);
453
+ throw new Error(`module ${moduleName} not found in lz-initia.config.ts`);
459
454
  }
460
455
  const env = lzDefinitions.networkToEnv(network, lzDefinitions.EndpointVersion.V2);
461
456
  const client = getInitiaClient(env, lzInitiaConfig);
@@ -466,13 +461,15 @@ async function deploy(moduleName, lzInitiaConfig, network, variant, deployToObje
466
461
  const mvNames = glob.glob.sync("*.mv", { cwd: moduleDir });
467
462
  const moduleBuffers = mvNames.map((moduleName2) => fs3__default.default.readFileSync(path4__default.default.join(moduleDir, moduleName2)));
468
463
  const bytecodeHash = getBytecodesHash(moduleBuffers);
469
- const { actionType, address: deployedAddress } = await getDeployActionType(
464
+ const deployAddress = await resolveAddress(moduleName, lzInitiaConfig, network, true);
465
+ const actionType = await getDeployActionType(
470
466
  client,
471
467
  moduleName,
472
468
  mvNames,
473
469
  lzInitiaConfig.deploymentPath,
474
470
  network,
475
471
  bytecodeHash,
472
+ deployAddress,
476
473
  variant
477
474
  );
478
475
  if (actionType === "Skip" /* Skip */) {
@@ -487,7 +484,8 @@ async function deploy(moduleName, lzInitiaConfig, network, variant, deployToObje
487
484
  lzInitiaConfig,
488
485
  network,
489
486
  moduleName,
490
- deployedAddress
487
+ deployAddress,
488
+ actionType
491
489
  ) : await createAccountDeploymentTx(client, deployer, moduleBuffers, lzInitiaConfig, network);
492
490
  const tx = await client.tx.broadcast(signedTx);
493
491
  const info = await client.tx.txInfo(tx.txhash);
@@ -500,7 +498,9 @@ async function deploy(moduleName, lzInitiaConfig, network, variant, deployToObje
500
498
  if (tx.code !== 0) {
501
499
  throw new Error(tx.raw_log);
502
500
  }
503
- console.log(`Deploy transaction ${tx.txhash} successfully`);
501
+ console.log(
502
+ `${actionType} ${moduleName} to ${deployToObject ? "Object" : "Account"}(${codeAddress}) succeeded on ${network}`
503
+ );
504
504
  saveDeployment(
505
505
  deployer,
506
506
  moduleName,
@@ -521,8 +521,32 @@ async function deploy(moduleName, lzInitiaConfig, network, variant, deployToObje
521
521
  }
522
522
  }
523
523
  }
524
+ function parseOptions(defaultOptions, customOptions) {
525
+ const options = { ...defaultOptions, ...customOptions };
526
+ const res = [];
527
+ for (const key of Object.keys(options)) {
528
+ if (typeof options[key] === "boolean") {
529
+ if (options[key] === true) {
530
+ res.push(key);
531
+ }
532
+ } else {
533
+ res.push(key);
534
+ res.push(options[key]);
535
+ }
536
+ }
537
+ return res;
538
+ }
539
+ var networkOptions = extraTypings.createOption("-n, --network <network>", "network").makeOptionMandatory(true).argParser((network) => {
540
+ const chainType = lzDefinitions.networkToChainType(network);
541
+ if (chainType !== lzDefinitions.ChainType.INITIA) {
542
+ throw new Error(
543
+ `Only support ${Object.values(lzDefinitions.InitiaChain).join(", ")}, but got chain ${lzDefinitions.networkToChain(network)}`
544
+ );
545
+ }
546
+ return network;
547
+ });
524
548
  var command = new extraTypings.Command();
525
- command.name("deploy").description("deploy Initia modules").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(
549
+ command.name("deploy").description("deploy Initia modules").addOption(extraTypings.createOption("-m, --modules <modules...>", "modules").makeOptionMandatory(true)).addOption(networkOptions).addOption(extraTypings.createOption("-v, --variant <variant>", "variant").makeOptionMandatory(false)).addOption(
526
550
  extraTypings.createOption("-dto, --deploy-to-object", "Deploy to Move Object. Default to false").makeOptionMandatory(false)
527
551
  ).action(
528
552
  async (options, cmd) => {
@@ -540,23 +564,6 @@ command.name("deploy").description("deploy Initia modules").addOption(extraTypin
540
564
  }
541
565
  }
542
566
  );
543
-
544
- // src/options.ts
545
- function parseOptions(defaultOptions, customOptions) {
546
- const options = { ...defaultOptions, ...customOptions };
547
- const res = [];
548
- for (const key of Object.keys(options)) {
549
- if (typeof options[key] === "boolean") {
550
- if (options[key] === true) {
551
- res.push(key);
552
- }
553
- } else {
554
- res.push(key);
555
- res.push(options[key]);
556
- }
557
- }
558
- return res;
559
- }
560
567
  function buildProcess(modulePath, addresses, toml, customOptions = {}) {
561
568
  const addressesParam = Object.keys(addresses).map((key) => `${key}=${addresses[key]}`).join(",");
562
569
  const defaultOptions = {
@@ -591,7 +598,7 @@ async function copyArtifacts(src, dest) {
591
598
  async function build(moduleName, lzInitiaConfig, network, skipBuild = false, variant) {
592
599
  const module = lzInitiaConfig.modules[moduleName];
593
600
  if (!module) {
594
- throw new Error(`module ${moduleName} not found`);
601
+ throw new Error(`module ${moduleName} not found in lz-initia.config.ts`);
595
602
  }
596
603
  const { modulePath } = module;
597
604
  const context = await getMoveContext(moduleName, lzInitiaConfig, network);
@@ -625,7 +632,7 @@ command2.name("build").description("build Initia program").addOption(extraTyping
625
632
  "-p, --module-paths <paths...>",
626
633
  "module paths of modules, use the path in lz-initia.config.ts if not specify"
627
634
  ).makeOptionMandatory(false)
628
- ).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(
635
+ ).addOption(networkOptions).addOption(extraTypings.createOption("-v, --variant <variant>", "variant").makeOptionMandatory(false)).addOption(extraTypings.createOption("-sb, --skip-build", "skip build").default(false)).action(
629
636
  async (options, cmd) => {
630
637
  const context = cmd.getOptionValue("__CONTEXT__");
631
638
  const { skipBuild, modules, network, variant, modulePaths } = options;
package/dist/cli.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/loader.ts","../src/subCommands/index.ts","../src/client.ts","../src/constant.ts","../src/config-parser.ts","../src/address-resolver.ts","../src/errors.ts","../src/move.ts","../src/deploy.ts","../src/subCommands/deploy.ts","../src/options.ts","../src/build.ts","../src/subCommands/build.ts","../src/cli.ts"],"names":["command","LCDClient","MnemonicKey","path","networkToEnv","EndpointVersion","deploymentPath","fs","AccAddress","bcs","ensure0x","sha3_256","parse","e","crypto","MsgPublish","Wallet","MsgExecute","glob","moduleName","Command","createOption","$","getLogger","findUpSync","process"],"mappings":"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","file":"cli.cjs","sourcesContent":["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 { 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","export const InitiaObjectDeployerAddress = '0x1'\n","import { InitiaObjectDeployerAddress } from '@/constant'\nimport { LzInitiaConfig, StringConfigByNetwork } from '@/types'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nexport function getConfigByNetwork<configType>(\n config: { [key in Network]?: configType } | configType,\n network: Network\n): configType {\n if (config === null) {\n throw new Error('Config is null')\n }\n if (typeof config === 'object') {\n return config[network as keyof typeof config] as configType\n }\n return config\n}\n\nfunction getObjectDeployer(configValue: StringConfigByNetwork, network: Network): string | undefined {\n return getConfigByNetwork<string | undefined>(configValue, network)\n}\n\nexport function getObjectDeployerFromConfig(config: LzInitiaConfig, network: Network, moduleName: string): string {\n const module = config.modules[moduleName]\n if (!module) {\n throw new Error(`module ${moduleName} not found when getting object deployer`)\n }\n const moduleObjectDeployer = getObjectDeployer(module.objectDeployer, network)\n const defaultObjectDeployer = getObjectDeployer(config.defaultObjectDeployer, network)\n // Priority: moduleObjectDeployer > defaultObjectDeployer > official deployer\n return moduleObjectDeployer ?? defaultObjectDeployer ?? InitiaObjectDeployerAddress\n}\n\nexport function getFullName(config: LzInitiaConfig, moduleName: string): string {\n const variant = config.modules[moduleName]?.variant\n return variant !== undefined && variant.length > 0 ? `${moduleName}-${variant}` : moduleName\n}\n","import fs from 'fs'\nimport path from 'path'\n\nimport { getInitiaClient } from '@/client'\nimport { getFullName, getObjectDeployerFromConfig } from '@/config-parser'\nimport { InitiaObjectDeployerAddress } from '@/constant'\nimport { loadConfig } from '@/loader'\nimport { LzInitiaConfig } from '@/types'\nimport { AccAddress, MnemonicKey, bcs } from '@initia/initia.js'\nimport { sha3_256 } from '@noble/hashes/sha3'\n\nimport { EndpointVersion, Network, networkToEnv } from '@layerzerolabs/lz-definitions'\nimport { Deployment, ensure0x } from '@layerzerolabs/lz-utilities'\n\nexport function isInitiaAccount(account: object | undefined): account is MnemonicKey {\n return account !== undefined && account instanceof MnemonicKey\n}\n\nexport function getDeployer(moduleName: string, lzAptosConfig: LzInitiaConfig, network: Network): MnemonicKey {\n const module = lzAptosConfig.modules[moduleName]\n if (!module) {\n if (lzAptosConfig.baseModules && lzAptosConfig.baseModules.length > 0) {\n for (const baseModule of lzAptosConfig.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-aptos.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(lzAptosConfig.defaultDeployer)\n ? lzAptosConfig.defaultDeployer\n : lzAptosConfig.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\nfunction getDeploymentPath(lzAptosConfig: LzInitiaConfig, network: Network, moduleName: string): string {\n return path.join(lzAptosConfig.deploymentPath, network, `${moduleName}.json`)\n}\n\nasync function checkIfObjectAddressExists(\n lzAptosConfig: LzInitiaConfig,\n network: Network,\n address: string\n): Promise<boolean> {\n try {\n const client = getInitiaClient(networkToEnv(network, EndpointVersion.V2), lzAptosConfig)\n const object = await client.auth.accountInfo(address)\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n return object !== undefined\n } catch (e) {\n return false\n }\n}\n\nfunction getObjectAddressFromDeployment(\n lzAptosConfig: LzInitiaConfig,\n network: Network,\n moduleName: string\n): string | undefined {\n const deploymentPath = getDeploymentPath(lzAptosConfig, network, moduleName)\n if (!fs.existsSync(deploymentPath)) {\n return undefined\n }\n const deployment = JSON.parse(fs.readFileSync(deploymentPath, 'utf-8')) as Deployment\n return deployment.address\n}\n\n// Address resolver logic:\n// For account deployment, the module address is the deployer's account address\n// For object deployment:\n// If the module is ongoing module:\n// If the module is deployed, then the address is fetched from the deployment file.\n// Otherwise, the address is decided by the Object deployer's algorithm.\n// If the module is ongoing module's dependency:\n// For official deploy-code-to-object module, the address is fetched from the deployment file. The dependency module should be deployed before the current module.\n// For Layerzero deploy-code-to-object module, check genObjectAddressForLayerzero function. We don't need to deploy the dependency module before the current module.\nexport async function resolveAddress(\n moduleName: string,\n lzAptosConfig: LzInitiaConfig,\n network: Network,\n isOngoingModule: boolean\n): Promise<string> {\n const deployToObject =\n lzAptosConfig.modules[moduleName]?.deployToObject ?? lzAptosConfig.defaultDeployToObject ?? false\n\n if (!deployToObject) {\n const deployer = getDeployer(moduleName, lzAptosConfig, network)\n return AccAddress.toHex(deployer.accAddress)\n }\n const objectDeployer = getObjectDeployerFromConfig(lzAptosConfig, network, moduleName)\n if (objectDeployer !== InitiaObjectDeployerAddress) {\n return genObjectAddressForLayerzero(network, lzAptosConfig, moduleName)\n }\n const objectAddress = getObjectAddressFromDeployment(lzAptosConfig, network, moduleName)\n if (objectAddress !== undefined) {\n if (await checkIfObjectAddressExists(lzAptosConfig, network, objectAddress)) {\n return objectAddress\n }\n if (!isOngoingModule) {\n throw new Error(\n `Deployment file found at: ${getDeploymentPath(lzAptosConfig, network, moduleName)} but object address ${objectAddress} does not exist. Dependent module ${moduleName} should be deployed if using ${InitiaObjectDeployerAddress}::object_code_deployment.`\n )\n }\n } else if (!isOngoingModule) {\n throw new Error(\n `Deployment file not found at: ${getDeploymentPath(lzAptosConfig, network, moduleName)}. Make sure ${moduleName} is deployed.`\n )\n }\n\n return genObjectAddress(moduleName, lzAptosConfig, network)\n}\n\nconst createObjectAddress = (creatorAddress: string, seed: Uint8Array | string): string => {\n const hexAddress = AccAddress.validate(creatorAddress) ? AccAddress.toHex(creatorAddress) : creatorAddress\n const creatorBytes = bcs.address().serialize(hexAddress).toBytes()\n\n const seedBytes = typeof seed === 'string' ? Buffer.from(seed, 'utf8') : seed\n\n const bytes = new Uint8Array([...creatorBytes, ...seedBytes, 254])\n\n return ensure0x(Buffer.from(sha3_256(bytes)).toString('hex'))\n}\n\nasync function genObjectAddressForOfficial(\n network: Network,\n lzAptosConfig: LzInitiaConfig,\n moduleName: string\n): Promise<string> {\n const client = getInitiaClient(networkToEnv(network, EndpointVersion.V2), lzAptosConfig)\n const deployer = getDeployer(moduleName, lzAptosConfig, network)\n const OBJECT_CODE_DEPLOYMENT_DOMAIN_SEPARATOR = 'aptos_framework::object_code_deployment'\n const account = await client.auth.accountInfo(deployer.accAddress)\n const sequenceNumber = account.getSequenceNumber()\n const firstPart = bcs.string().serialize(OBJECT_CODE_DEPLOYMENT_DOMAIN_SEPARATOR)\n const secondPart = bcs.u64().serialize(BigInt(sequenceNumber) + BigInt(1))\n const seed = new Uint8Array([...firstPart.toBytes(), ...secondPart.toBytes()])\n const objectAddress = createObjectAddress(deployer.accAddress, seed)\n return objectAddress\n}\n\nfunction genObjectAddressForLayerzero(network: Network, lzAptosConfig: LzInitiaConfig, moduleName: string): string {\n const deployer = getDeployer(moduleName, lzAptosConfig, network)\n const seed = getFullName(lzAptosConfig, moduleName)\n const objectAddress = createObjectAddress(deployer.accAddress, new Uint8Array(Buffer.from(seed, 'utf8')))\n return objectAddress.toString()\n}\n\n// Object address generation algorithm\n// For official deploy-code-to-object module, the object address is decided by the deployer and the sequence number of the deployer account\n// For Layerzero deploy-code-to-object module, the object address is decided by the deployer and a custom seed. We will use the module name with variant as the seed.\nexport async function genObjectAddress(\n moduleName: string,\n lzAptosConfig: LzInitiaConfig,\n network: Network\n): Promise<string> {\n const objectDeployer = getObjectDeployerFromConfig(lzAptosConfig, network, moduleName)\n if (objectDeployer === InitiaObjectDeployerAddress) {\n return genObjectAddressForOfficial(network, lzAptosConfig, moduleName)\n }\n return genObjectAddressForLayerzero(network, lzAptosConfig, moduleName)\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 { resolveAddress } from '@/address-resolver'\nimport { LzInitiaConfig, ModuleAddresses, MoveContext, MoveToml } from '@/types'\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 async function getMoveContext(\n moduleName: string,\n lzInitiaConfig: LzInitiaConfig,\n network: Network\n): Promise<MoveContext> {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n throw new Error(`module ${moduleName} not found when getting Move context`)\n }\n // 1. Get module and all its dependencies' Move.toml recursively and store them in a MoveContext.\n const context = getRawMoveContextByPath(module.modulePath)\n // 2. Resolve addresses in MoveContext.\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 // Address priority: ongoing module config address > dependency config address > resolved address\n const presetAddresses = {\n ...parseAddresses(lzInitiaConfig.modules[key]?.addresses, network), // dependency or current module config address\n ...parseAddresses(lzInitiaConfig.modules[moduleName]?.addresses, network), // current module config address\n }\n // If address is '_', it means the address is not determined yet, so we need to resolve it.\n if (address === '_') {\n // If the address is preset in the config, use the preset address. Because they have higher priority.\n if (presetAddresses[addressKey] !== undefined && presetAddresses[addressKey] !== '') {\n toml.addresses[addressKey] = presetAddresses[addressKey]!\n } else {\n // If the address is not preset in the config, we need to resolve it.\n try {\n const isOnGoingModule = moduleName === addressKey\n toml.addresses[addressKey] = await resolveAddress(\n addressKey,\n lzInitiaConfig,\n network,\n isOnGoingModule\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 fs from 'fs'\nimport * as crypto from 'node:crypto'\nimport path from 'path'\n\nimport { getDeployer } from '@/address-resolver'\nimport { getInitiaClient } from '@/client'\nimport { getFullName, getObjectDeployerFromConfig } from '@/config-parser'\nimport { InitiaObjectDeployerAddress } from '@/constant'\nimport { handleError } from '@/errors'\nimport { getMoveContext } from '@/move'\nimport { LzInitiaConfig } from '@/types'\nimport { AccAddress, LCDClient, MnemonicKey, MsgExecute, MsgPublish, Tx, TxError, Wallet, bcs } from '@initia/initia.js'\nimport { glob } from 'glob'\n\nimport { EndpointVersion, Network, networkToEnv } from '@layerzerolabs/lz-definitions'\n\nenum DeployActionType {\n Deploy = 'Deploy',\n Upgrade = 'Upgrade',\n Skip = 'Skip',\n}\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 deployer: MnemonicKey,\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 deployer: AccAddress.toHex(deployer.accAddress),\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\nasync function checkIfModuleExistedOnChain(\n client: LCDClient,\n moduleNames: string[],\n address: string\n): Promise<boolean> {\n // TODO: should divide into two conditions, one for account, one for object\n try {\n const modules = (await client.move.modules(address))[0]\n // some of the modules exist means the module is deployed\n return moduleNames.some((moduleName) =>\n modules.map((module) => module.module_name).includes(moduleName.replace('.mv', ''))\n )\n } catch (e) {\n try {\n const object = await client.auth.accountInfo(address)\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n return object !== undefined\n } catch (e) {\n return false\n }\n }\n}\n\nasync function getDeployActionType(\n client: LCDClient,\n pkgName: string,\n moduleNames: string[],\n dest: string,\n network: Network,\n bytecodeHash: string,\n variant?: string\n): Promise<{ actionType: DeployActionType; address: string | undefined }> {\n const destPath = deploymentPath(pkgName, dest, network, variant)\n if (fs.existsSync(destPath)) {\n const deployment = JSON.parse(fs.readFileSync(destPath, 'utf-8')) as {\n bytecodeHash: string\n address: string\n moduleName: string\n }\n // Double check if the module is existed on chain\n const moduleExisted = await checkIfModuleExistedOnChain(client, moduleNames, deployment.address)\n if (moduleExisted) {\n if (deployment.bytecodeHash !== bytecodeHash || network.includes('local')) {\n return { actionType: DeployActionType.Upgrade, address: deployment.address }\n } else {\n return { actionType: DeployActionType.Skip, address: deployment.address }\n }\n }\n }\n // If the module was already deployed but the deployment file was deleted.\n // For account deployment, we can deploy to the same address, it will be treated as an upgrade.\n // For object deployment, it will deploy to a new object address.\n return { actionType: DeployActionType.Deploy, address: undefined }\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\nasync function createAccountDeploymentTx(\n client: LCDClient,\n deployer: MnemonicKey,\n modules: Buffer[],\n lzInitiaConfig: LzInitiaConfig,\n network: Network\n): Promise<Tx> {\n // TODO policy from config\n const msgs = [\n new MsgPublish(\n deployer.accAddress,\n modules.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]}uinit`\n const signedTx = await wallet.createAndSignTx({ msgs, gasPrices })\n return signedTx\n}\n\nasync function createObjectDeploymentTx(\n client: LCDClient,\n deployer: MnemonicKey,\n modules: Buffer[],\n lzInitiaConfig: LzInitiaConfig,\n network: Network,\n moduleName: string,\n objectAddress?: string\n): Promise<Tx> {\n const objectDeployer = getObjectDeployerFromConfig(lzInitiaConfig, network, moduleName)\n const metadataArg = bcs.vector(bcs.u8()).serialize(Uint8Array.from([])).toBase64()\n const modulesArg = bcs.vector(bcs.vector(bcs.u8())).serialize(modules).toBase64()\n const objectAddressArg = objectAddress === undefined ? undefined : bcs.address().serialize(objectAddress).toBase64()\n let functionArguments =\n objectAddressArg === undefined ? [metadataArg, modulesArg] : [metadataArg, modulesArg, objectAddressArg]\n if (objectDeployer !== InitiaObjectDeployerAddress) {\n const seed = getFullName(lzInitiaConfig, moduleName)\n const seedArg = bcs\n .vector(bcs.u8())\n .serialize(Uint8Array.from(Buffer.from(seed)))\n .toBase64()\n functionArguments =\n objectAddressArg === undefined\n ? [seedArg, metadataArg, modulesArg]\n : [metadataArg, modulesArg, objectAddressArg]\n }\n const msg = new MsgExecute(\n deployer.accAddress,\n AccAddress.fromHex(objectDeployer),\n 'object_code_deployment',\n objectAddress === undefined ? `publish` : `upgrade`,\n [],\n functionArguments\n )\n const gasPrices =\n lzInitiaConfig.gasPrice?.[network] === undefined ? undefined : `${lzInitiaConfig.gasPrice[network]}uinit`\n const wallet = new Wallet(client, deployer)\n const signedTx = await wallet.createAndSignTx({ msgs: [msg], gasPrices })\n return signedTx\n}\n\nexport async function deploy(\n moduleName: string,\n lzInitiaConfig: LzInitiaConfig,\n network: Network,\n variant?: string,\n deployToObject = false\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 = await 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 mvNames: string[] = glob.sync('*.mv', { cwd: moduleDir })\n const moduleBuffers = mvNames.map((moduleName) => fs.readFileSync(path.join(moduleDir, moduleName)))\n const bytecodeHash = getBytecodesHash(moduleBuffers)\n const { actionType, address: deployedAddress } = await getDeployActionType(\n client,\n moduleName,\n mvNames,\n lzInitiaConfig.deploymentPath,\n network,\n bytecodeHash,\n variant\n )\n if (actionType === DeployActionType.Skip) {\n console.warn(`Code of ${moduleName} has not changed, skipping deploy`)\n return\n }\n try {\n const signedTx = deployToObject\n ? await createObjectDeploymentTx(\n client,\n deployer,\n moduleBuffers,\n lzInitiaConfig,\n network,\n moduleName,\n deployedAddress\n )\n : await createAccountDeploymentTx(client, deployer, moduleBuffers, lzInitiaConfig, network)\n const tx = await client.tx.broadcast(signedTx)\n const info = await client.tx.txInfo(tx.txhash)\n const publishedEvent = info.events.find(\n (event) =>\n event.type === 'move' &&\n event.attributes.find((attr) => attr.key === 'type_tag')?.value === '0x1::code::ModulePublishedEvent'\n )\n const publishModuleAttr = publishedEvent?.attributes.find((attr) => attr.key === 'data')\n const { module_id } = JSON.parse(publishModuleAttr!.value) as { module_id: string }\n const codeAddress = module_id.split('::')[0]\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 deployer,\n moduleName,\n pkgName,\n codeAddress,\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 { 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 .addOption(\n createOption('-dto, --deploy-to-object', 'Deploy to Move Object. Default to false').makeOptionMandatory(false)\n )\n .action(\n async (\n options: { network: string; modules: string[]; variant?: string; deployToObject?: true },\n cmd: Command\n ) => {\n const context = cmd.getOptionValue('__CONTEXT__') as LzInitiaConfig\n\n const { modules, variant, network, deployToObject: deployToObjectOpt } = options\n\n for (const module of modules) {\n const deployToObject =\n deployToObjectOpt ??\n context.modules[module]?.deployToObject ??\n context.defaultDeployToObject ??\n false\n await deploy(\n module,\n context,\n network as Network,\n variant ?? context.modules[module]?.variant,\n deployToObject\n )\n }\n }\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 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 = await 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 { 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","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 console.trace(error)\n process.exit(1)\n })\n"]}
1
+ {"version":3,"sources":["../src/loader.ts","../src/subCommands/index.ts","../src/client.ts","../src/constant.ts","../src/config-parser.ts","../src/address-resolver.ts","../src/errors.ts","../src/move.ts","../src/deploy.ts","../src/options.ts","../src/subCommands/deploy.ts","../src/build.ts","../src/subCommands/build.ts","../src/cli.ts"],"names":["command","LCDClient","MnemonicKey","path","networkToEnv","EndpointVersion","deploymentPath","fs","AccAddress","bcs","ensure0x","sha3_256","parse","crypto","MsgPublish","Wallet","MsgExecute","glob","moduleName","createOption","networkToChainType","ChainType","InitiaChain","networkToChain","Command","$","getLogger","findUpSync","process"],"mappings":"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","file":"cli.cjs","sourcesContent":["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 { 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","export const InitiaObjectDeployerAddress = '0x1'\n","import { InitiaObjectDeployerAddress } from '@/constant'\nimport { LzInitiaConfig, StringConfigByNetwork } from '@/types'\n\nimport { Network } from '@layerzerolabs/lz-definitions'\n\nexport function getConfigByNetwork<configType>(\n config: { [key in Network]?: configType } | configType,\n network: Network\n): configType {\n if (config === null) {\n throw new Error('Config is null')\n }\n if (typeof config === 'object') {\n return config[network as keyof typeof config] as configType\n }\n return config\n}\n\nfunction getObjectDeployer(configValue: StringConfigByNetwork, network: Network): string | undefined {\n return getConfigByNetwork<string | undefined>(configValue, network)\n}\n\nexport function getObjectDeployerFromConfig(config: LzInitiaConfig, network: Network, moduleName: string): string {\n const module = config.modules[moduleName]\n if (!module) {\n throw new Error(`module ${moduleName} not found when getting object deployer`)\n }\n const moduleObjectDeployer = getObjectDeployer(module.objectDeployer, network)\n const defaultObjectDeployer = getObjectDeployer(config.defaultObjectDeployer, network)\n // Priority: moduleObjectDeployer > defaultObjectDeployer > official deployer\n return moduleObjectDeployer ?? defaultObjectDeployer ?? InitiaObjectDeployerAddress\n}\n\nexport function getFullName(config: LzInitiaConfig, moduleName: string): string {\n const variant = config.modules[moduleName]?.variant\n return variant !== undefined && variant.length > 0 ? `${moduleName}-${variant}` : moduleName\n}\n","import fs from 'fs'\nimport path from 'path'\n\nimport { getInitiaClient } from '@/client'\nimport { getFullName, getObjectDeployerFromConfig } from '@/config-parser'\nimport { InitiaObjectDeployerAddress } from '@/constant'\nimport { loadConfig } from '@/loader'\nimport { LzInitiaConfig } from '@/types'\nimport { AccAddress, MnemonicKey, bcs } from '@initia/initia.js'\nimport { sha3_256 } from '@noble/hashes/sha3'\n\nimport { EndpointVersion, Network, networkToEnv } from '@layerzerolabs/lz-definitions'\nimport { Deployment, ensure0x } from '@layerzerolabs/lz-utilities'\n\nexport function isInitiaAccount(account: object | undefined): account is MnemonicKey {\n return account !== undefined && account instanceof MnemonicKey\n}\n\nexport function getDeployer(moduleName: string, lzAptosConfig: LzInitiaConfig, network: Network): MnemonicKey {\n const module = lzAptosConfig.modules[moduleName]\n if (!module) {\n if (lzAptosConfig.baseModules && lzAptosConfig.baseModules.length > 0) {\n for (const baseModule of lzAptosConfig.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-aptos.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(lzAptosConfig.defaultDeployer)\n ? lzAptosConfig.defaultDeployer\n : lzAptosConfig.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\nfunction getDeploymentPath(lzAptosConfig: LzInitiaConfig, network: Network, moduleName: string): string {\n return path.join(lzAptosConfig.deploymentPath, network, `${moduleName}.json`)\n}\n\nasync function checkIfObjectAddressExists(\n lzAptosConfig: LzInitiaConfig,\n network: Network,\n address: string\n): Promise<boolean> {\n try {\n const client = getInitiaClient(networkToEnv(network, EndpointVersion.V2), lzAptosConfig)\n const module = (await client.move.modules(address))[0]\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n return module !== undefined\n } catch (e) {\n return false\n }\n}\n\nfunction getObjectAddressFromDeployment(\n lzAptosConfig: LzInitiaConfig,\n network: Network,\n moduleName: string\n): string | undefined {\n const deploymentPath = getDeploymentPath(lzAptosConfig, network, moduleName)\n if (!fs.existsSync(deploymentPath)) {\n return undefined\n }\n const deployment = JSON.parse(fs.readFileSync(deploymentPath, 'utf-8')) as Deployment\n return deployment.address\n}\n\n// Address resolver logic:\n// For account deployment, the module address is the deployer's account address\n// For object deployment:\n// If the module is ongoing module:\n// If use layerzero forked object deploy module, calculate the deterministic Object address.\n// Otherwise, look at the deployment file to get the object address. If the deployment file does not exist, calculate the Object address with sequence number.\n// If the module is ongoing module's dependency:\n// For official deploy-code-to-object module, the address is fetched from the deployment file. The dependency module should be deployed before the current module.\n// For Layerzero deploy-code-to-object module, check genObjectAddressForLayerzero function. We don't need to deploy the dependency module before the current module.\nexport async function resolveAddress(\n moduleName: string,\n lzAptosConfig: LzInitiaConfig,\n network: Network,\n isOngoingModule: boolean\n): Promise<string> {\n const deployToObject =\n lzAptosConfig.modules[moduleName]?.deployToObject ?? lzAptosConfig.defaultDeployToObject ?? false\n\n if (!deployToObject) {\n const deployer = getDeployer(moduleName, lzAptosConfig, network)\n return AccAddress.toHex(deployer.accAddress)\n }\n const objectDeployer = getObjectDeployerFromConfig(lzAptosConfig, network, moduleName)\n if (objectDeployer !== InitiaObjectDeployerAddress) {\n return genObjectAddressForLayerzero(network, lzAptosConfig, moduleName)\n }\n const objectAddress = getObjectAddressFromDeployment(lzAptosConfig, network, moduleName)\n if (objectAddress !== undefined) {\n if (await checkIfObjectAddressExists(lzAptosConfig, network, objectAddress)) {\n return objectAddress\n }\n if (!isOngoingModule) {\n throw new Error(\n `Deployment file found at: ${getDeploymentPath(lzAptosConfig, network, moduleName)} but object address ${objectAddress} does not exist. Dependent module ${moduleName} should be deployed if using ${InitiaObjectDeployerAddress}::object_code_deployment.`\n )\n }\n } else if (!isOngoingModule) {\n throw new Error(\n `Deployment file not found at: ${getDeploymentPath(lzAptosConfig, network, moduleName)}. Make sure ${moduleName} is deployed.`\n )\n }\n\n return genObjectAddress(moduleName, lzAptosConfig, network)\n}\n\nconst createObjectAddress = (creatorAddress: string, seed: Uint8Array | string): string => {\n const hexAddress = AccAddress.validate(creatorAddress) ? AccAddress.toHex(creatorAddress) : creatorAddress\n const creatorBytes = bcs.address().serialize(hexAddress).toBytes()\n\n const seedBytes = typeof seed === 'string' ? Buffer.from(seed, 'utf8') : seed\n\n const bytes = new Uint8Array([...creatorBytes, ...seedBytes, 254])\n\n return ensure0x(Buffer.from(sha3_256(bytes)).toString('hex'))\n}\n\nasync function genObjectAddressForOfficial(\n network: Network,\n lzAptosConfig: LzInitiaConfig,\n moduleName: string\n): Promise<string> {\n const client = getInitiaClient(networkToEnv(network, EndpointVersion.V2), lzAptosConfig)\n const deployer = getDeployer(moduleName, lzAptosConfig, network)\n const OBJECT_CODE_DEPLOYMENT_DOMAIN_SEPARATOR = 'initia_std::object_code_deployment'\n const account = await client.auth.accountInfo(deployer.accAddress)\n const sequenceNumber = account.getSequenceNumber()\n const firstPart = bcs.string().serialize(OBJECT_CODE_DEPLOYMENT_DOMAIN_SEPARATOR)\n // For Aptos, the second part of the seed is sequence number + 1, but for Initia, it is sequence number + 2, not sure why\n const secondPart = bcs.u64().serialize(BigInt(sequenceNumber) + BigInt(2))\n const seed = new Uint8Array([...firstPart.toBytes(), ...secondPart.toBytes()])\n const objectAddress = createObjectAddress(deployer.accAddress, seed)\n return objectAddress\n}\n\nfunction genObjectAddressForLayerzero(network: Network, lzAptosConfig: LzInitiaConfig, moduleName: string): string {\n const deployer = getDeployer(moduleName, lzAptosConfig, network)\n const seed = getFullName(lzAptosConfig, moduleName)\n const objectAddress = createObjectAddress(deployer.accAddress, new Uint8Array(Buffer.from(seed, 'utf8')))\n return objectAddress\n}\n\n// Object address generation algorithm\n// For official deploy-code-to-object module, the object address is decided by the deployer and the sequence number of the deployer account\n// For Layerzero deploy-code-to-object module, the object address is decided by the deployer and a custom seed. We will use the module name with variant as the seed.\nexport async function genObjectAddress(\n moduleName: string,\n lzAptosConfig: LzInitiaConfig,\n network: Network\n): Promise<string> {\n const objectDeployer = getObjectDeployerFromConfig(lzAptosConfig, network, moduleName)\n if (objectDeployer === InitiaObjectDeployerAddress) {\n return genObjectAddressForOfficial(network, lzAptosConfig, moduleName)\n }\n return genObjectAddressForLayerzero(network, lzAptosConfig, moduleName)\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 { resolveAddress } from '@/address-resolver'\nimport { LzInitiaConfig, ModuleAddresses, MoveContext, MoveToml } from '@/types'\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 async function getMoveContext(\n moduleName: string,\n lzInitiaConfig: LzInitiaConfig,\n network: Network\n): Promise<MoveContext> {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n throw new Error(`module ${moduleName} not found when getting Move context`)\n }\n // 1. Get module and all its dependencies' Move.toml recursively and store them in a MoveContext.\n const context = getRawMoveContextByPath(module.modulePath)\n // 2. Resolve addresses in MoveContext.\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 // Address priority: ongoing module config address > dependency config address > resolved address\n const presetAddresses = {\n ...parseAddresses(lzInitiaConfig.modules[key]?.addresses, network), // dependency or current module config address\n ...parseAddresses(lzInitiaConfig.modules[moduleName]?.addresses, network), // current module config address\n }\n // If address is '_', it means the address is not determined yet, so we need to resolve it.\n if (address === '_') {\n // If the address is preset in the config, use the preset address. Because they have higher priority.\n if (presetAddresses[addressKey] !== undefined && presetAddresses[addressKey] !== '') {\n toml.addresses[addressKey] = presetAddresses[addressKey]!\n } else {\n // If the address is not preset in the config, we need to resolve it.\n try {\n const isOnGoingModule = moduleName === addressKey\n toml.addresses[addressKey] = await resolveAddress(\n addressKey,\n lzInitiaConfig,\n network,\n isOnGoingModule\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 fs from 'fs'\nimport * as crypto from 'node:crypto'\nimport path from 'path'\n\nimport { getDeployer } from '@/address-resolver'\nimport { getInitiaClient } from '@/client'\nimport { getFullName, getObjectDeployerFromConfig } from '@/config-parser'\nimport { InitiaObjectDeployerAddress } from '@/constant'\nimport { handleError } from '@/errors'\nimport { getMoveContext } from '@/move'\nimport { LzInitiaConfig } from '@/types'\nimport { AccAddress, LCDClient, MnemonicKey, MsgExecute, MsgPublish, Tx, TxError, Wallet, bcs } from '@initia/initia.js'\nimport { glob } from 'glob'\n\nimport { EndpointVersion, Network, networkToEnv } from '@layerzerolabs/lz-definitions'\n\nimport { resolveAddress } from './address-resolver'\n\nenum DeployActionType {\n Deploy = 'Deploy',\n Upgrade = 'Upgrade',\n Skip = 'Skip',\n}\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 deployer: MnemonicKey,\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 deployer: AccAddress.toHex(deployer.accAddress),\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\nasync function checkIfModuleExistedOnAddress(\n client: LCDClient,\n moduleNames: string[],\n address: string\n): Promise<boolean> {\n try {\n // works for both account and object deployment\n const modules = (await client.move.modules(address))[0]\n // some of the modules exist means the module is deployed\n const isExisted = moduleNames.some((moduleName) =>\n modules.map((module) => module.module_name).includes(moduleName.replace('.mv', ''))\n )\n return isExisted\n } catch (e) {\n // try-catch in case the address is not existed\n return false\n }\n}\n\n// if deployAddress is not existed, deploy\n// if deployAddress is existed and bytecodeHash is different, upgrade\n// if deployAddress is existed and bytecodeHash is the same, skip\nasync function getDeployActionType(\n client: LCDClient,\n pkgName: string,\n moduleNames: string[],\n dest: string,\n network: Network,\n bytecodeHash: string,\n deployAddress: string,\n variant?: string\n): Promise<DeployActionType> {\n const moduleExisted = await checkIfModuleExistedOnAddress(client, moduleNames, deployAddress)\n if (moduleExisted) {\n const destPath = deploymentPath(pkgName, dest, network, variant)\n if (fs.existsSync(destPath)) {\n const deployment = JSON.parse(fs.readFileSync(destPath, 'utf-8')) as {\n bytecodeHash: string\n address: string\n moduleName: string\n }\n if (deployment.bytecodeHash === bytecodeHash) {\n return DeployActionType.Skip\n }\n }\n return DeployActionType.Upgrade\n }\n return DeployActionType.Deploy\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\nasync function createAccountDeploymentTx(\n client: LCDClient,\n deployer: MnemonicKey,\n modules: Buffer[],\n lzInitiaConfig: LzInitiaConfig,\n network: Network\n): Promise<Tx> {\n // TODO policy from config\n const msgs = [\n new MsgPublish(\n deployer.accAddress,\n modules.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]}uinit`\n const signedTx = await wallet.createAndSignTx({ msgs, gasPrices })\n return signedTx\n}\n\nasync function createObjectDeploymentTx(\n client: LCDClient,\n deployer: MnemonicKey,\n modules: Buffer[],\n lzInitiaConfig: LzInitiaConfig,\n network: Network,\n moduleName: string,\n deployedAddress: string,\n actionType: DeployActionType\n): Promise<Tx> {\n const objectDeployer = getObjectDeployerFromConfig(lzInitiaConfig, network, moduleName)\n const metadataArg = bcs.vector(bcs.u8()).serialize(Uint8Array.from([])).toBase64()\n const modulesArg = bcs.vector(bcs.vector(bcs.u8())).serialize(modules).toBase64()\n const objectAddressArg = bcs.address().serialize(deployedAddress).toBase64()\n let functionArguments =\n actionType === DeployActionType.Deploy ? [metadataArg, modulesArg] : [metadataArg, modulesArg, objectAddressArg]\n if (objectDeployer !== InitiaObjectDeployerAddress) {\n const seed = getFullName(lzInitiaConfig, moduleName)\n const seedArg = bcs\n .vector(bcs.u8())\n .serialize(Uint8Array.from(Buffer.from(seed)))\n .toBase64()\n functionArguments =\n actionType === DeployActionType.Deploy\n ? [seedArg, metadataArg, modulesArg]\n : [metadataArg, modulesArg, objectAddressArg]\n }\n const msg = new MsgExecute(\n deployer.accAddress,\n AccAddress.fromHex(objectDeployer),\n 'object_code_deployment',\n actionType === DeployActionType.Deploy ? `publish` : `upgrade`,\n [],\n functionArguments\n )\n const gasPrices =\n lzInitiaConfig.gasPrice?.[network] === undefined ? undefined : `${lzInitiaConfig.gasPrice[network]}uinit`\n const wallet = new Wallet(client, deployer)\n const signedTx = await wallet.createAndSignTx({ msgs: [msg], gasPrices })\n return signedTx\n}\n\nexport async function deploy(\n moduleName: string,\n lzInitiaConfig: LzInitiaConfig,\n network: Network,\n variant?: string,\n deployToObject = false\n): Promise<void> {\n const module = lzInitiaConfig.modules[moduleName]\n if (!module) {\n throw new Error(`module ${moduleName} not found in lz-initia.config.ts`)\n }\n const env = networkToEnv(network, EndpointVersion.V2)\n const client = getInitiaClient(env, lzInitiaConfig)\n const deployer = getDeployer(moduleName, lzInitiaConfig, network)\n const context = await 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 mvNames: string[] = glob.sync('*.mv', { cwd: moduleDir })\n const moduleBuffers = mvNames.map((moduleName) => fs.readFileSync(path.join(moduleDir, moduleName)))\n const bytecodeHash = getBytecodesHash(moduleBuffers)\n const deployAddress = await resolveAddress(moduleName, lzInitiaConfig, network, true)\n const actionType = await getDeployActionType(\n client,\n moduleName,\n mvNames,\n lzInitiaConfig.deploymentPath,\n network,\n bytecodeHash,\n deployAddress,\n variant\n )\n if (actionType === DeployActionType.Skip) {\n console.warn(`Code of ${moduleName} has not changed, skipping deploy`)\n return\n }\n try {\n const signedTx = deployToObject\n ? await createObjectDeploymentTx(\n client,\n deployer,\n moduleBuffers,\n lzInitiaConfig,\n network,\n moduleName,\n deployAddress,\n actionType\n )\n : await createAccountDeploymentTx(client, deployer, moduleBuffers, lzInitiaConfig, network)\n const tx = await client.tx.broadcast(signedTx)\n const info = await client.tx.txInfo(tx.txhash)\n const publishedEvent = info.events.find(\n (event) =>\n event.type === 'move' &&\n event.attributes.find((attr) => attr.key === 'type_tag')?.value === '0x1::code::ModulePublishedEvent'\n )\n const publishModuleAttr = publishedEvent?.attributes.find((attr) => attr.key === 'data')\n const { module_id } = JSON.parse(publishModuleAttr!.value) as { module_id: string }\n const codeAddress = module_id.split('::')[0]\n if (((tx as TxError).code as number) !== 0) {\n throw new Error(tx.raw_log)\n }\n console.log(\n `${actionType} ${moduleName} to ${deployToObject ? 'Object' : 'Account'}(${codeAddress}) succeeded on ${network}`\n )\n saveDeployment(\n deployer,\n moduleName,\n pkgName,\n codeAddress,\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 { CmdOptions } from '@/types'\nimport { createOption } from '@commander-js/extra-typings'\n\nimport { ChainType, InitiaChain, networkToChain, networkToChainType } from '@layerzerolabs/lz-definitions'\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\nexport const networkOptions = createOption('-n, --network <network>', 'network')\n .makeOptionMandatory(true)\n .argParser((network) => {\n const chainType = networkToChainType(network)\n if (chainType !== ChainType.INITIA) {\n throw new Error(\n `Only support ${Object.values(InitiaChain).join(', ')}, but got chain ${networkToChain(network)}`\n )\n }\n return network\n })\n","import { deploy } from '@/deploy'\nimport { networkOptions } from '@/options'\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(networkOptions)\n .addOption(createOption('-v, --variant <variant>', 'variant').makeOptionMandatory(false))\n .addOption(\n createOption('-dto, --deploy-to-object', 'Deploy to Move Object. Default to false').makeOptionMandatory(false)\n )\n .action(\n async (\n options: { network: string; modules: string[]; variant?: string; deployToObject?: true },\n cmd: Command\n ) => {\n const context = cmd.getOptionValue('__CONTEXT__') as LzInitiaConfig\n\n const { modules, variant, network, deployToObject: deployToObjectOpt } = options\n\n for (const module of modules) {\n const deployToObject =\n deployToObjectOpt ??\n context.modules[module]?.deployToObject ??\n context.defaultDeployToObject ??\n false\n await deploy(\n module,\n context,\n network as Network,\n variant ?? context.modules[module]?.variant,\n deployToObject\n )\n }\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 in lz-initia.config.ts`)\n }\n const { modulePath } = module\n const context = await 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 { build } from '@/build'\nimport { networkOptions } from '@/options'\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(networkOptions)\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","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 console.trace(error)\n process.exit(1)\n })\n"]}