@layerzerolabs/lz-initia-cli 3.0.3 → 3.0.4
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 +10 -0
- package/README.md +2 -0
- package/dist/cli.cjs +26 -7
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.mjs +26 -7
- package/dist/cli.mjs.map +1 -1
- package/dist/index.cjs +4 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +4 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# @layerzerolabs/lz-initia-cli
|
|
2
2
|
|
|
3
|
+
## 3.0.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 4b060b6: testnets
|
|
8
|
+
- Updated dependencies [4b060b6]
|
|
9
|
+
- @layerzerolabs/lz-definitions@3.0.4
|
|
10
|
+
- @layerzerolabs/lz-config-types@3.0.4
|
|
11
|
+
- @layerzerolabs/lz-utilities@3.0.4
|
|
12
|
+
|
|
3
13
|
## 3.0.3
|
|
4
14
|
|
|
5
15
|
### 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 =
|
|
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(
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
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":";;;;;;;;;;;;;;AAAA,OAAOA,SAAQ;AACf,OAAOC,WAAU;AACjB,OAAOC,cAAa;;;ACAb,SAAS,WAAW,YAAoC;AAG3D,QAAM,aAAa;AACnB,QAAM,SAAS,UAAQ,UAAU;AACjC,SAAO,SAAS;AAAA,IACZ,eAAe;AAAA,IACf,WAAW;AAAA,EACf,CAAC;AAED,MAAI;AAEA,UAAM,WAAW,UAAQ,UAAU;AACnC,WAAO,aAAa,WAAW,SAAS,UAAU;AAAA,EACtD,SAAS,GAAG;AACR,QAAI,MAAM,QAAQ,OAAO,MAAM,YAAY,UAAU,KAAK,EAAE,SAAS,mBAAmB;AACpF,YAAM,IAAI;AAAA,QACN;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM;AAAA,EACV;AACJ;;;ADpBA,SAAS,WAAAC,gBAAe;AACxB,SAAS,QAAQ,kBAAkB;AACnC,SAAS,KAAAC,UAAS;AAElB,SAAS,iBAAiB;;;AET1B;AAAA;AAAA,eAAAC;AAAA,EAAA;AAAA;;;ACAA,OAAOL,SAAQ;AACf,YAAY,YAAY;AACxB,OAAOC,WAAU;;;ACDjB,SAAS,iBAAiB;AAInB,SAAS,gBAAgB,KAAkB,QAAmC;AACjF,QAAM,MAAM,OAAO,UAAU,GAAG;AAChC,MAAI,QAAQ,QAAW;AACnB,UAAM,IAAI,MAAM,sBAAsB,GAAG,+BAA+B;AAAA,EAC5E;AACA,QAAM,MAAM,IAAI,UAAU,GAAG;AAC7B,SAAO;AACX;;;ACVA,SAAS,mBAAmB;AAIrB,SAAS,gBAAgB,SAAqD;AACjF,SAAO,YAAY,UAAa,mBAAmB;AACvD;AAEO,SAAS,YAAY,YAAoB,gBAAgC,SAA+B;AAC3G,QAAM,SAAS,eAAe,QAAQ,UAAU;AAChD,MAAI,CAAC,QAAQ;AACT,QAAI,eAAe,eAAe,eAAe,YAAY,SAAS,GAAG;AACrE,iBAAW,cAAc,eAAe,aAAa;AACjD,cAAM,aAAa,WAAW,UAAU;AACxC,YAAI;AACA,iBAAO,YAAY,YAAY,YAAY,OAAO;AAAA,QACtD,SAAS,GAAG;AAAA,QAEZ;AAAA,MACJ;AAAA,IACJ;AACA,UAAM,IAAI;AAAA,MACN,UAAU,UAAU;AAAA,IACxB;AAAA,EACJ;AACA,QAAM,iBAAiB,gBAAgB,OAAO,QAAQ,IAAI,OAAO,WAAW,OAAO,WAAW,OAAO;AACrG,QAAM,kBAAkB,gBAAgB,eAAe,eAAe,IAChE,eAAe,kBACf,eAAe,kBAAkB,OAAO;AAC9C,QAAM,WAAW,kBAAkB;AACnC,MAAI,CAAC,UAAU;AACX,UAAM,IAAI,MAAM,uBAAuB,UAAU,YAAY;AAAA,EACjE;AACA,SAAO;AACX;;;ACnCA,SAAS,kBAAkB;AAI3B,SAAS,aAAa,OAAiC;AAEnD,SAAO,OAAO,UAAU,MAAM,YAAY;AAC9C;AAEA,SAAS,sBAAsB,OAAmB,YAAoB,SAA4B;AAC9F,MAAI,MAAM,SAAS,KAAK,QAAQ,SAAS,sBAAsB,GAAG;AAC9D,UAAM,IAAI;AAAA,MACN,UAAU,UAAU,wFAAwF,OAAO;AAAA,QAC/G;AAAA,MACJ,EACK,OAAO,CAAC,WAAW,WAAW,UAAU,EACxC,KAAK,GAAG,CAAC;AAAA,IAClB;AAAA,EACJ;AACJ;AAEA,SAAS,2BACL,OACA,YACA,SACA,SACI;AACJ,QAAM,UAAU,QAAQ,UAAU,GAAG,UAAU,UAAU;AACzD,MAAI,YAAY,QAAW;AACvB;AAAA,EACJ;AACA,MAAI,MAAM,SAAS,KAAK,QAAQ,SAAS,WAAW,WAAW,QAAQ,OAAO,CAAC,YAAY,GAAG;AAC1F,UAAM,IAAI;AAAA,MACN,GAAG,MAAM,SAAS,KAAK,OAAO,2CAA2C,WAAW,QAAQ,OAAO,CAAC,IAAI,OAAO,QAAQ,OAAO;AAAA,IAClI;AAAA,EACJ;AACJ;AAEA,SAAS,0BAA0B,OAAmB,YAA0B;AAC5E,MAAI,MAAM,SAAS,KAAK,QAAQ,SAAS,sCAAsC,GAAG;AAC9E,UAAM,IAAI;AAAA,MACN,UAAU,UAAU,4EAA4E,UAAU;AAAA,IAC9G;AAAA,EACJ;AACJ;AAEA,SAAS,sBAAsB,OAAyB;AACpD,QAAM,IAAI,MAAM,MAAM,SAAS,KAAK,OAAO;AAC/C;AAEO,SAAS,YAAY,OAAc,YAAoB,SAAsB,SAAwB;AACxG,MAAI,aAAa,KAAK,GAAG;AACrB,0BAAsB,OAAO,YAAY,OAAO;AAChD,+BAA2B,OAAO,YAAY,SAAS,OAAO;AAC9D,8BAA0B,OAAO,UAAU;AAC3C,0BAAsB,KAAK;AAAA,EAC/B;AACA,QAAM;AACV;;;AC3DA,OAAO,QAAQ;AACf,OAAO,UAAU;AAIjB,SAAS,cAAAK,mBAAkB;AAC3B,SAAS,aAAa;AAIf,SAAS,wBAAwB,YAAiC;AACrE,QAAM,WAAW,KAAK,KAAK,YAAY,WAAW;AAClD,MAAI,CAAC,GAAG,WAAW,QAAQ,GAAG;AAC1B,UAAM,IAAI,MAAM,0BAA0B,QAAQ,EAAE;AAAA,EACxD;AACA,QAAM,OAAO,MAAM,GAAG,aAAa,UAAU,OAAO,CAAC;AACrD,QAAM,EAAE,aAAa,IAAI;AACzB,MAAI,SAAsB,EAAE,CAAC,KAAK,QAAQ,IAAI,GAAG,KAAK;AACtD,MAAI,iBAAiB,QAAW;AAC5B,WAAO,KAAK,YAAY,EACnB,OAAO,CAAC,QAAQ;AACb,aAAO,aAAa,GAAG,GAAG,UAAU;AAAA,IACxC,CAAC,EACA,QAAQ,CAAC,QAAQ;AACd,YAAM,aAAa,aAAa,GAAG;AACnC,YAAM,iBAAiB,KAAK,KAAK,YAAY,WAAW,KAAK;AAC7D,eAAS,EAAE,GAAG,wBAAwB,cAAc,GAAG,GAAG,OAAO;AAAA,IACrE,CAAC;AAAA,EACT;AACA,SAAO;AACX;AAEO,SAAS,eAAe,WAA4B,SAAgD;AACvG,MAAI,cAAc,QAAW;AACzB,WAAO,CAAC;AAAA,EACZ;AACA,QAAM,SAAuC,CAAC;AAC9C,aAAW,OAAO,OAAO,KAAK,SAAS,GAAG;AACtC,UAAM,QAAQ,UAAU,GAAG;AAC3B,QAAI,OAAO,UAAU,UAAU;AAC3B,aAAO,GAAG,IAAI;AAAA,IAClB,OAAO;AACH,YAAM,iBAAiB,MAAM,OAAO;AACpC,UAAI,mBAAmB,QAAW;AAC9B,cAAM,IAAI,MAAM,GAAG,GAAG,kCAAkC,OAAO,EAAE;AAAA,MACrE;AACA,aAAO,GAAG,IAAI;AAAA,IAClB;AAAA,EACJ;AACA,SAAO;AACX;AAEO,SAAS,eAAe,YAAoB,gBAAgC,SAA+B;AAC9G,QAAM,SAAS,eAAe,QAAQ,UAAU;AAChD,MAAI,CAAC,QAAQ;AACT,UAAM,IAAI,MAAM,UAAU,UAAU,sCAAsC;AAAA,EAC9E;AACA,QAAM,UAAU,wBAAwB,OAAO,UAAU;AACzD,aAAW,OAAO,OAAO,KAAK,OAAO,GAAG;AACpC,UAAM,OAAO,QAAQ,GAAG;AACxB,eAAW,cAAc,OAAO,KAAK,KAAK,SAAS,GAAG;AAClD,YAAM,UAAU,KAAK,UAAU,UAAU;AACzC,YAAM,kBAAkB;AAAA,QACpB,GAAG,eAAe,eAAe,QAAQ,GAAG,GAAG,WAAW,OAAO;AAAA,QACjE,GAAG,eAAe,eAAe,QAAQ,UAAU,GAAG,WAAW,OAAO;AAAA,MAC5E;AACA,UAAI,YAAY,KAAK;AACjB,YAAI,gBAAgB,UAAU,MAAM,UAAa,gBAAgB,UAAU,MAAM,IAAI;AACjF,eAAK,UAAU,UAAU,IAAI,gBAAgB,UAAU;AAAA,QAC3D,OAAO;AACH,cAAI;AACA,iBAAK,UAAU,UAAU,IAAIA,YAAW;AAAA,cACpC,YAAY,YAAY,gBAAgB,OAAO,EAAE;AAAA,YACrD;AAAA,UACJ,SAAS,GAAG;AACR,gBAAI,QAAQ,YAAY;AACpB,oBAAM,IAAI,MAAM,gCAAgC,GAAG,KAAM,EAAY,SAAS,CAAC,EAAE;AAAA,YACrF,OAAO;AACH,oBAAM,IAAI;AAAA,gBACN,iDAAiD,GAAG,KAAM,EAAY,SAAS,CAAC;AAAA,cACpF;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,SAAO;AACX;;;AJ/EA,SAAS,cAAAA,aAAY,YAAqB,cAAc;AACxD,SAAS,YAAY;AAErB,SAAS,iBAA0B,OAAO,cAAc,sBAAsB;AAE9E,SAAS,eAAe,SAAiB,MAAc,SAAkB,SAA0B;AAC/F,QAAMC,kBAAiBN,MAAK,KAAK,MAAM,OAAO;AAC9C,SAAOA,MAAK,KAAKM,iBAAgB,GAAG,eAAe,SAAS,OAAO,CAAC,OAAO;AAC/E;AAEO,SAAS,eACZ,YACA,SACA,SACA,MACA,SACA,cACA,MACA,SACA,qBAAqB,CAAC,gBAAgB,IAAI,gBAAgB,EAAE,GACxD;AACJ,QAAM,WAAW,eAAe,SAAS,MAAM,SAAS,OAAO;AAC/D,QAAM,gBAAgBN,MAAK,QAAQ,QAAQ;AAC3C,MAAI,CAACD,IAAG,WAAW,aAAa,GAAG;AAC/B,IAAAA,IAAG,UAAU,eAAe,EAAE,WAAW,KAAK,CAAC;AAAA,EACnD;AACA,EAAAA,IAAG;AAAA,IACC;AAAA,IACA,KAAK;AAAA,MACD;AAAA,QACI;AAAA,QACA,MAAM,eAAe,SAAS,OAAO;AAAA,QACrC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,iBAAiB;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AACA,UAAQ,IAAI,uBAAuB,QAAQ,EAAE;AACjD;AAEA,SAAS,WAAW,SAAiB,MAAc,SAAkB,cAAsB,SAA2B;AAClH,MAAI,eAAe,OAAO,MAAM,MAAM,SAAS;AAC3C,WAAO;AAAA,EACX;AACA,QAAM,WAAW,eAAe,SAAS,MAAM,SAAS,OAAO;AAC/D,MAAIA,IAAG,WAAW,QAAQ,GAAG;AACzB,UAAM,aAAa,KAAK,MAAMA,IAAG,aAAa,UAAU,OAAO,CAAC;AAChE,WAAO,WAAW,iBAAiB;AAAA,EACvC;AACA,SAAO;AACX;AAEA,SAAS,eAAe,SAAiB,SAA0B;AAC/D,SAAO,YAAY,UAAa,QAAQ,SAAS,IAAI,GAAG,OAAO,IAAI,OAAO,KAAK;AACnF;AAEA,SAAS,iBAAiB,WAAiC;AAEvD,QAAM,OAAc,kBAAW,QAAQ;AACvC,YAAU,QAAQ,CAAC,aAAa;AAC5B,SAAK,OAAO,QAAQ;AAAA,EACxB,CAAC;AACD,SAAO,KAAK,OAAO,KAAK;AAC5B;AAEA,eAAsB,OAClB,YACA,gBACA,SACA,SACa;AACb,QAAM,SAAS,eAAe,QAAQ,UAAU;AAChD,MAAI,CAAC,QAAQ;AACT,UAAM,IAAI,MAAM,UAAU,UAAU,YAAY;AAAA,EACpD;AACA,QAAM,MAAM,aAAa,SAAS,gBAAgB,EAAE;AACpD,QAAM,SAAS,gBAAgB,KAAK,cAAc;AAClD,QAAM,WAAW,YAAY,YAAY,gBAAgB,OAAO;AAChE,QAAM,UAAU,eAAe,YAAY,gBAAgB,OAAO;AAClE,QAAM,UAAU,eAAe,QAAQ,UAAU,GAAG,SAAS,QAAQ,UAAU,EAAG,QAAQ;AAC1F,QAAM,YAAYC,MAAK,KAAK,eAAe,eAAe,GAAG,eAAe,SAAS,OAAO,CAAC,mBAAmB;AAEhH,QAAM,cAAwB,KAAK,KAAK,QAAQ,EAAE,KAAK,UAAU,CAAC;AAClE,QAAM,gBAAgB,YAAY,IAAI,CAACO,gBAAeR,IAAG,aAAaC,MAAK,KAAK,WAAWO,WAAU,CAAC,CAAC;AACvG,QAAM,eAAe,iBAAiB,aAAa;AACnD,MAAI,CAAC,WAAW,SAAS,eAAe,gBAAgB,SAAS,cAAc,OAAO,GAAG;AACrF,YAAQ,KAAK,WAAW,UAAU,mCAAmC;AACrE;AAAA,EACJ;AACA,MAAI;AAEA,UAAM,OAAO;AAAA,MACT,IAAI;AAAA,QACA,SAAS;AAAA,QACT,cAAc,IAAI,CAAC,cAAc,UAAU,SAAS,QAAQ,CAAC;AAAA,QAC7D,WAAW,OAAO;AAAA,MACtB;AAAA,IACJ;AACA,UAAM,SAAS,IAAI,OAAO,QAAQ,QAAQ;AAC1C,UAAM,YACF,eAAe,WAAW,OAAO,MAAM,SAAY,SAAY,GAAG,eAAe,SAAS,OAAO,CAAC;AACtG,UAAM,WAAW,MAAM,OAAO,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACjE,UAAM,KAAK,MAAM,OAAO,GAAG,UAAU,QAAQ;AAC7C,QAAM,GAAe,SAAoB,GAAG;AACxC,YAAM,IAAI,MAAM,GAAG,OAAO;AAAA,IAC9B;AACA,YAAQ,IAAI,sBAAsB,GAAG,MAAM,eAAe;AAC1D;AAAA,MACI;AAAA,MACA;AAAA,MACAF,YAAW,MAAM,SAAS,UAAU;AAAA,MACpC,eAAe;AAAA,MACf;AAAA,MACA;AAAA,MACA,GAAG;AAAA,MACH;AAAA,MACA,eAAe;AAAA,IACnB;AAAA,EACJ,SAAS,GAAY;AACjB,QAAI,aAAa,OAAO;AACpB,kBAAY,GAAG,YAAY,SAAS,OAAO;AAAA,IAC/C,OAAO;AACH,YAAM;AAAA,IACV;AAAA,EACJ;AACJ;;;AK1IA,SAAS,SAAS,oBAAoB;AAMtC,IAAM,UAAU,IAAI,QAAQ;AAI5B,QACK,KAAK,QAAQ,EACb,YAAY,uBAAuB,EACnC,UAAU,aAAa,8BAA8B,SAAS,EAAE,oBAAoB,IAAI,CAAC,EACzF,UAAU,aAAa,2BAA2B,SAAS,EAAE,oBAAoB,IAAI,CAAC,EACtF,UAAU,aAAa,2BAA2B,SAAS,EAAE,oBAAoB,KAAK,CAAC,EACvF,OAAO,OAAO,SAAmE,QAAiB;AAC/F,QAAM,UAAU,IAAI,eAAe,aAAa;AAEhD,QAAM,EAAE,SAAS,SAAS,QAAQ,IAAI;AACtC,aAAW,UAAU,SAAS;AAC1B,UAAM,OAAO,QAAQ,SAAS,SAAoB,WAAW,QAAQ,QAAQ,MAAM,GAAG,OAAO;AAAA,EACjG;AACJ,CAAC;;;ACxBL,OAAON,SAAQ;AACf,OAAOC,WAAU;;;ACCV,SAAS,aAAa,gBAA4B,eAAqC;AAC1F,QAAM,UAAsB,EAAE,GAAG,gBAAgB,GAAG,cAAc;AAClE,QAAM,MAAgB,CAAC;AACvB,aAAW,OAAO,OAAO,KAAK,OAAO,GAAG;AACpC,QAAI,OAAO,QAAQ,GAAG,MAAM,WAAW;AACnC,UAAI,QAAQ,GAAG,MAAM,MAAM;AACvB,YAAI,KAAK,GAAG;AAAA,MAChB;AAAA,IACJ,OAAO;AACH,UAAI,KAAK,GAAG;AACZ,UAAI,KAAK,QAAQ,GAAG,CAAW;AAAA,IACnC;AAAA,EACJ;AACA,SAAO;AACX;;;ADVA,SAAS,QAAAQ,aAAY;AACrB,SAAS,SAAwB;AAK1B,SAAS,aACZ,YACA,WACA,MACA,gBAA4B,CAAC,GACP;AACtB,QAAM,iBAAiB,OAAO,KAAK,SAAS,EACvC,IAAI,CAAC,QAAQ,GAAG,GAAG,IAAI,UAAU,GAAG,CAAC,EAAE,EACvC,KAAK,GAAG;AACb,QAAM,iBAAiB;AAAA,IACnB,gCAAgC;AAAA,IAChC,qBAAqB;AAAA,EACzB;AACA,QAAM,OAAO,aAAa,gBAAgB,aAAa;AACvD,SAAO,EAAE;AAAA,IACL,KAAK;AAAA,IACL,OAAO,CAAC,WAAW,QAAQ,QAAQ,MAAM;AAAA,IACzC,SAAS;AAAA,EACb,CAAC,uBAAuB,IAAI;AAChC;AAEA,eAAsB,cAAc,KAAa,MAA6B;AAE1E,MAAIT,IAAG,WAAW,IAAI,GAAG;AACrB,YAAQ,IAAI,kCAAkC,IAAI,EAAE;AACpD,IAAAA,IAAG,OAAO,MAAM,EAAE,WAAW,KAAK,CAAC;AAAA,EACvC;AACA,EAAAA,IAAG,UAAU,MAAM,EAAE,WAAW,KAAK,CAAC;AACtC,QAAM,YAAYC,MAAK,KAAK,KAAK,kBAAkB;AACnD,QAAM,UAAUQ,MAAK,KAAK,QAAQ,EAAE,KAAK,UAAU,CAAC;AACpD,aAAW,UAAU,SAAS;AAC1B,UAAM,mBAAmBR,MAAK,KAAK,MAAM,kBAAkB;AAC3D,QAAI,CAACD,IAAG,WAAW,gBAAgB,GAAG;AAClC,MAAAA,IAAG,UAAU,kBAAkB,EAAE,WAAW,KAAK,CAAC;AAAA,IACtD;AACA,UAAM,EAAE;AAAA,MACJ,SAAS;AAAA,IACb,CAAC,OAAOC,MAAK,KAAK,WAAW,MAAM,CAAC,IAAIA,MAAK,KAAK,kBAAkB,MAAM,CAAC;AAAA,EAC/E;AACJ;AAEA,eAAsB,MAClB,YACA,gBACA,SACA,YAAY,OACZ,SACa;AACb,QAAM,SAAS,eAAe,QAAQ,UAAU;AAChD,MAAI,CAAC,QAAQ;AACT,UAAM,IAAI,MAAM,UAAU,UAAU,YAAY;AAAA,EACpD;AACA,QAAM,EAAE,WAAW,IAAI;AACvB,QAAM,UAAU,eAAe,YAAY,gBAAgB,OAAO;AAClE,QAAM,UAAU,QAAQ,UAAU,EAAG,QAAQ;AAC7C,QAAM,UAAUA,MAAK,KAAK,YAAY,SAAS,OAAO;AACtD,QAAM,YAAY,eAAe,QAAQ,UAAU,GAAG,SAAS;AAC/D,QAAM,aAAaA,MAAK;AAAA,IACpB,eAAe;AAAA,IACf,YAAY,UAAa,QAAQ,SAAS,IAAI,GAAG,SAAS,IAAI,OAAO,KAAK;AAAA,EAC9E;AACA,MAAI,YAAuC,CAAC;AAC5C,aAAW,OAAO,OAAO,KAAK,OAAO,GAAG;AACpC,UAAM,OAAO,QAAQ,GAAG;AACxB,QAAI,EAAE,OAAO,KAAK,YAAY;AAC1B,YAAM,IAAI,MAAM,yBAAyB,GAAG,EAAE;AAAA,IAClD;AACA,gBAAY,EAAE,GAAG,WAAW,GAAG,KAAK,UAAU;AAAA,EAClD;AACA,cAAY,EAAE,GAAG,WAAW,GAAG,QAAQ,UAAU,EAAG,UAAU;AAC9D,MAAI,CAAC,WAAW;AACZ,UAAM,aAAa,YAAY,WAAW,QAAQ,UAAU,GAAI;AAAA,MAC5D,GAAG,eAAe;AAAA,MAClB,GAAG,OAAO;AAAA,IACd,CAAC;AAAA,EACL;AACA,QAAM,cAAc,SAAS,UAAU;AAC3C;;;AExFA,SAAS,WAAAE,UAAS,gBAAAO,qBAAoB;AAMtC,IAAML,WAAU,IAAIF,SAAQ;AAI5BE,SACK,KAAK,OAAO,EACZ,YAAY,sBAAsB,EAClC,UAAUK,cAAa,8BAA8B,SAAS,EAAE,oBAAoB,IAAI,CAAC,EACzF;AAAA,EACGA;AAAA,IACI;AAAA,IACA;AAAA,EACJ,EAAE,oBAAoB,KAAK;AAC/B,EACC,UAAUA,cAAa,2BAA2B,SAAS,EAAE,oBAAoB,IAAI,CAAC,EACtF,UAAUA,cAAa,2BAA2B,SAAS,EAAE,oBAAoB,KAAK,CAAC,EACvF,UAAUA,cAAa,qBAAqB,YAAY,EAAE,QAAQ,KAAK,CAAC,EACxE;AAAA,EACG,OACI,SAOA,QACC;AACD,UAAM,UAAU,IAAI,eAAe,aAAa;AAChD,UAAM,EAAE,WAAW,SAAS,SAAS,SAAS,YAAY,IAAI;AAE9D,QAAI,gBAAgB,QAAW;AAC3B,eAAS,IAAI,GAAG,IAAI,YAAY,QAAQ,KAAK;AACzC,cAAM,SAAS,QAAQ,CAAC;AACxB,cAAM,eAAe,QAAQ,QAAQ,MAAM;AAC3C,YAAI,iBAAiB,QAAW;AAC5B,uBAAa,aAAa,YAAY,CAAC;AAAA,QAC3C;AAAA,MACJ;AAAA,IACJ;AACA,eAAW,UAAU,SAAS;AAC1B,YAAM,MAAM,QAAQ,SAAS,SAAoB,WAAW,WAAW,QAAQ,QAAQ,MAAM,GAAG,OAAO;AAAA,IAC3G;AAAA,EACJ;AACJ;;;AXtCJ,IAAM,UAAU,IAAIP,SAAQ;AAE5B,IAAM,SAAS,UAAU;AAEzB,QACK,KAAK,eAAe,EACpB,YAAY,uBAAuB,EACnC,QAAQ,OAAO,EACf,OAAO,CAAC,GAAGE,aAAqB;AAC7B,SAAO,KAAK,6BAA6B;AACzC,EAAAA,SAAQ,KAAK;AACjB,CAAC;AAEL,eAAe,yBAAwC;AACnD,MAAI;AACA,UAAMD;AAAA,EACV,SAAS,GAAG;AACR,UAAM,IAAI,MAAM,6BAA6B;AAAA,EACjD;AACJ;AAEA,SAAS,4BAAoC;AACzC,QAAM,cAAc,WAAW,gBAAgB,EAAE,KAAKF,SAAQ,IAAI,EAAE,CAAC;AACrE,MAAI,gBAAgB,QAAW;AAC3B,UAAM,IAAI,MAAM,wBAAwB;AAAA,EAC5C;AACA,QAAM,aAAaD,MAAK,KAAKA,MAAK,QAAQ,WAAW,GAAG,qBAAqB;AAC7E,MAAI,CAACD,IAAG,WAAW,UAAU,GAAG;AAC5B,UAAM,IAAI,MAAM,wFAAwF;AAAA,EAC5G;AACA,SAAO;AACX;AAEA,eAAe,OAAsB;AACjC,QAAM,uBAAuB;AAC7B,QAAM,aAAa,0BAA0B;AAC7C,QAAM,SAAS,WAAW,UAAU;AACpC,SAAO,OAAO,mBAAW,EAAE,QAAQ,CAAC,eAAwB;AACxD,eAAW,eAAe,eAAe,MAAM;AAC/C,YAAQ,WAAW,UAAU;AAAA,EACjC,CAAC;AACD,QAAM,QAAQ,WAAW;AAC7B;AAEA,KAAK,EACA,KAAK,MAAME,SAAQ,KAAKA,SAAQ,QAAQ,CAAC,EACzC,MAAM,CAAC,UAAmB;AACvB,SAAO,MAAM,KAAK;AAClB,EAAAA,SAAQ,KAAK,CAAC;AAClB,CAAC","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 =
|
|
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(
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
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 =
|
|
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];
|
package/dist/index.cjs.map
CHANGED
|
@@ -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 =
|
|
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];
|
package/dist/index.mjs.map
CHANGED
|
@@ -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
|
+
"version": "3.0.4",
|
|
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.
|
|
29
|
-
"@layerzerolabs/lz-definitions": "^3.0.
|
|
30
|
-
"@layerzerolabs/lz-utilities": "^3.0.
|
|
28
|
+
"@layerzerolabs/lz-config-types": "^3.0.4",
|
|
29
|
+
"@layerzerolabs/lz-definitions": "^3.0.4",
|
|
30
|
+
"@layerzerolabs/lz-utilities": "^3.0.4",
|
|
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.
|
|
40
|
-
"@layerzerolabs/tsup-config-next": "^3.0.
|
|
41
|
-
"@layerzerolabs/typescript-config-next": "^3.0.
|
|
39
|
+
"@layerzerolabs/ops-utilities": "^3.0.4",
|
|
40
|
+
"@layerzerolabs/tsup-config-next": "^3.0.4",
|
|
41
|
+
"@layerzerolabs/typescript-config-next": "^3.0.4",
|
|
42
42
|
"@types/jest": "^29.5.10",
|
|
43
43
|
"jest": "^29.7.0",
|
|
44
44
|
"rimraf": "^5.0.5",
|