@layerzerolabs/lz-utilities 2.3.17 → 2.3.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @layerzerolabs/lz-utilities
2
2
 
3
+ ## 2.3.19
4
+
5
+ ### Patch Changes
6
+
7
+ - 5fce234: minor update & fix some bugs
8
+ - Updated dependencies [5fce234]
9
+ - @layerzerolabs/lz-definitions@2.3.19
10
+
11
+ ## 2.3.18
12
+
13
+ ### Patch Changes
14
+
15
+ - d7ddb1e: Make `solana-sdk` compatible with browsers
16
+ - Updated dependencies [d7ddb1e]
17
+ - @layerzerolabs/lz-definitions@2.3.18
18
+
3
19
  ## 2.3.17
4
20
 
5
21
  ### Patch Changes
package/dist/index.cjs CHANGED
@@ -13,8 +13,6 @@ var lzDefinitions = require('@layerzerolabs/lz-definitions');
13
13
  var winston = require('winston');
14
14
  var module$1 = require('module');
15
15
  var assert = require('assert');
16
- var bytes = require('@ethersproject/bytes');
17
- var secp256k1 = require('@noble/secp256k1');
18
16
  var findUp = require('find-up');
19
17
  var kill = require('tree-kill');
20
18
 
@@ -324,20 +322,6 @@ function ensure0x(hex) {
324
322
  function isHexString(value) {
325
323
  return /^(0x)?[0-9a-fA-F]+$/.test(value);
326
324
  }
327
- async function signWithECDSA(data, privateKey) {
328
- const [signature, recoveryId] = await secp256k1.sign(data, privateKey.replace("0x", ""), {
329
- canonical: true,
330
- recovered: true,
331
- der: false
332
- });
333
- return {
334
- signature,
335
- recoveryId
336
- };
337
- }
338
- function getECDSAPublicKey(privateKey) {
339
- return bytes.hexlify(secp256k1.getPublicKey(privateKey.replace("0x", "")).subarray(1));
340
- }
341
325
  var logger2 = getLogger();
342
326
  async function sleep(timeout) {
343
327
  await new Promise((resolve) => setTimeout(resolve, timeout));
@@ -464,10 +448,6 @@ Object.defineProperty(exports, "Logger", {
464
448
  enumerable: true,
465
449
  get: function () { return winston.Logger; }
466
450
  });
467
- Object.defineProperty(exports, "recoverPublicKey", {
468
- enumerable: true,
469
- get: function () { return secp256k1.recoverPublicKey; }
470
- });
471
451
  exports.CmdExecutor = CmdExecutor;
472
452
  exports.bytesToHex = bytesToHex2;
473
453
  exports.createLogger = createLogger2;
@@ -481,7 +461,6 @@ exports.firstFactory = firstFactory;
481
461
  exports.getAptosAccountFromMnemonic = getAptosAccountFromMnemonic;
482
462
  exports.getBIP044Path = getBIP044Path;
483
463
  exports.getCircularReplacer = getCircularReplacer;
484
- exports.getECDSAPublicKey = getECDSAPublicKey;
485
464
  exports.getEvmAccountFromMnemonic = getEvmAccountFromMnemonic;
486
465
  exports.getKeypairFromMnemonic = getKeypairFromMnemonic;
487
466
  exports.getLogger = getLogger;
@@ -497,7 +476,6 @@ exports.parallel = parallel;
497
476
  exports.pkgroot = pkgroot;
498
477
  exports.safeMap = safeMap;
499
478
  exports.sequence = sequence;
500
- exports.signWithECDSA = signWithECDSA;
501
479
  exports.sleep = sleep;
502
480
  exports.trim0x = trim0x;
503
481
  //# sourceMappingURL=out.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/account.ts","../src/logger.ts","../src/deployment.ts","../src/path.ts","../src/promise.ts","../src/array.ts","../src/format.ts","../src/ecdsa.ts"],"names":["path","format","createLogger","logger","ethers","dirname","getStackTrace","bytesToHex"],"mappings":"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","sourcesContent":["import { ChildProcess, SpawnOptions, spawn } from 'child_process'\nimport http, { RequestOptions } from 'http'\nimport path from 'path'\n\nexport * from './account'\nexport * from './logger'\nexport * from './deployment'\nexport * from './path'\nexport * from './promise'\nexport * from './types'\nexport * from './array'\nexport * from './format'\nexport * from './ecdsa'\n\nimport { sync as findUpSync } from 'find-up'\nimport kill from 'tree-kill'\nimport { Logger } from 'winston'\n\nimport { getLogger } from './logger'\n\nexport const logger = getLogger()\n\nexport async function sleep(timeout: number): Promise<void> {\n await new Promise((resolve) => setTimeout(resolve, timeout))\n}\n\nexport function getProjectPackageManager(cwd?: string): 'yarn' | 'npm' | 'pnpm' {\n const yarn = findUpSync('yarn.lock', { cwd })\n if (yarn !== undefined) return 'yarn'\n\n const npm = findUpSync('package-lock.json', { cwd })\n if (npm !== undefined) return 'npm'\n\n // pnpm\n const pnpm = findUpSync('pnpm-lock.yaml', { cwd })\n if (pnpm !== undefined) return 'pnpm'\n\n throw new Error('Cannot find package.json or yarn.lock')\n}\n\nexport function getProjectRootDir(cwd?: string): string {\n const yarn = findUpSync('yarn.lock', { cwd })\n if (yarn !== undefined) return path.dirname(yarn)\n\n const npm = findUpSync('package-lock.json', { cwd })\n if (npm !== undefined) return path.dirname(npm)\n\n const pnpm = findUpSync('pnpm-lock.yaml', { cwd })\n if (pnpm !== undefined) return path.dirname(pnpm)\n\n throw new Error('Cannot find yarn.lock or package-lock.json or pnpm-lock.yaml')\n}\n\nexport async function isHttpServiceReachable(\n host: string,\n port: number,\n timeout: number,\n path?: string\n): Promise<boolean> {\n return new Promise((resolve, _reject) => {\n const options: RequestOptions = {\n host,\n port,\n timeout,\n path,\n method: 'HEAD',\n }\n\n const request = http.request(options, (_response) => {\n resolve(true)\n })\n\n request.on('error', (_err) => {\n resolve(false)\n })\n\n request.end()\n })\n}\n\nexport function extractUrlInfo(url: string): {\n schema: 'http' | 'https'\n host: string\n port: string\n} {\n //TODO: handle the default port for http and https(443, 80)\n const m = url.match(/(?<schema>http|https):\\/\\/(?<host>.*):(?<port>\\d+)/)\n if (m?.groups?.host === undefined) {\n throw new Error(`Invalid url ${url}`)\n }\n\n return {\n schema: m.groups.schema as 'http' | 'https',\n host: m.groups.host,\n port: m.groups.port,\n }\n}\n\nexport class CmdExecutor {\n private currentProcess: ChildProcess | null = null\n\n private onFinish: Promise<void> | null = null\n\n public async executeCmd(\n command: string,\n args: string[],\n options: SpawnOptions,\n verbose = false,\n runningCheck?: { key: string; runningNotify: (running: boolean) => void },\n logger?: Logger\n ): Promise<void> {\n if (logger) {\n logger.info(`Running command: ${command} ${args.join(' ')}`)\n } else {\n console.log(`Running command: ${command} ${args.join(' ')}`)\n }\n return new Promise<void>((resolve, reject) => {\n let notified = false\n this.currentProcess = spawn(command, args, options)\n\n this.currentProcess.on('error', (error) => {\n throw new Error(`Failed to execute command: ${command} ${args.join(' ')} - ${error.message}`)\n })\n\n // Listen for standard output from the child process and print it to the console\n this.currentProcess.stdout?.on('data', (data: Buffer | string) => {\n if (runningCheck && !notified && data.toString().includes(runningCheck.key)) {\n runningCheck.runningNotify(true)\n notified = true\n }\n if (verbose && logger) {\n logger.info(data.toString())\n } else if (verbose) {\n process.stdout.write(data)\n }\n })\n\n // Listen for errors from the child process and print them to the console\n this.currentProcess.stderr?.on('data', (data: Buffer | string) => {\n if (logger) {\n logger.error(data.toString())\n } else {\n process.stderr.write(data)\n }\n })\n\n // Listen for the exit event of the child process and resolve the promise\n // if the child process exits normally (with code 0)\n this.currentProcess.on('exit', (code: number) => {\n if (code !== 0) {\n if (logger) {\n logger.info(`Command ${command} exited with code ${code}.`)\n } else {\n console.info(`Command ${command} exited with code ${code}.`)\n }\n reject(new Error(`${command} ${args.join(' ')}`))\n return\n }\n resolve()\n })\n })\n }\n\n public async interrupt(killDescendants = true): Promise<void> {\n if (this.currentProcess) {\n logger.info('Killing process: %s', this.currentProcess.pid)\n if (killDescendants) {\n if (this.currentProcess.pid !== undefined) {\n kill(this.currentProcess.pid)\n // the implementation of tree-kill is using spawn, which is async. So we need to wait for a while\n await sleep(2000)\n }\n } else {\n this.currentProcess.kill()\n }\n this.currentProcess = null\n }\n }\n}\n","import { bytesToHex } from '@noble/hashes/utils'\nimport { Keypair } from '@solana/web3.js'\nimport * as aptos from 'aptos'\nimport * as bip39 from 'bip39'\nimport * as ed25519HdKey from 'ed25519-hd-key'\nimport { ethers } from 'ethers'\n\nimport { ChainType } from '@layerzerolabs/lz-definitions'\n\nexport interface AccountMnemonic {\n mnemonic: string\n path: string\n privateKey?: string\n address?: string\n}\n\nexport function getBIP044Path(chainType: ChainType, account: number, change: number, index: number): string {\n // CAUTION: the path format is different for each chain\n // https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki\n //\n // The \"m/44'/637'/0'/0'/0'\" path is known as a hardened derivation path, while the \"m/44'/637'/0'/0/0\" path is a non-hardened derivation path.\n // The technical benefit of using a hardened derivation path is enhanced security.\n // In BIP32, a hardened derivation is denoted by an apostrophe ('), which indicates that the child private key should be derived in a way\n // that makes it computationally infeasible to derive the parent private key from it. This additional level of security\n // protects the mnemonic phrase and its derived private keys even if one of the derived private keys is compromised.\n // By using a hardened derivation path, like \"m/44'/637'/0'/0'/0'\", each level of the path requires a unique private key derivation,\n // making it more difficult to infer the parent private key from the child private key. This is particularly important when dealing with\n // hierarchical deterministic wallets, as it helps protect funds across multiple accounts or purposes.\n\n switch (chainType) {\n case ChainType.EVM:\n // https://github.com/ethers-io/ethers.js/blob/main/src.ts/wallet/hdwallet.ts\n return `m/44'/60'/${account}'/${change}/${index}`\n case ChainType.APTOS:\n // https://github.com/aptos-labs/aptos-core/blob/main/ecosystem/typescript/sdk/src/aptos_account.ts\n return `m/44'/637'/${account}'/${change}'/${index}'`\n case ChainType.SOLANA:\n // https://github.com/solana-labs/solana/blob/master/sdk/src/derivation_path.rs\n return `m/44'/501'/${account}'/${change}'`\n default:\n throw new Error(`Unsupported chain: ${chainType}`)\n }\n}\n\nexport function getEvmAccountFromMnemonic(mnemonic: string, path = \"m/44'/60'/0'/0/0\"): AccountMnemonic {\n const wallet = ethers.Wallet.fromMnemonic(mnemonic, path)\n return {\n mnemonic,\n path,\n privateKey: wallet.privateKey,\n address: wallet.address,\n }\n}\n\nexport function getAptosAccountFromMnemonic(mnemonic: string, path = \"m/44'/637'/0'/0'/0'\"): AccountMnemonic {\n //https://aptos.dev/guides/building-your-own-wallet/#creating-an-aptos-account\n if (!aptos.AptosAccount.isValidPath(path)) {\n throw new Error(`Invalid derivation path: ${path}`)\n }\n const normalizeMnemonics = mnemonic\n .trim()\n .split(/\\s+/)\n .map((part) => part.toLowerCase())\n .join(' ')\n {\n const { key } = aptos.derivePath(path, bytesToHex(bip39.mnemonicToSeedSync(normalizeMnemonics)))\n const account = new aptos.AptosAccount(new Uint8Array(key)).toPrivateKeyObject()\n return {\n mnemonic,\n path,\n privateKey: account.privateKeyHex,\n address: account.address,\n }\n }\n}\n\nexport function getSolanaAccountFromMnemonic(mnemonic: string, path = \"m/44'/501'/0'/0'\"): AccountMnemonic {\n const seed = bip39.mnemonicToSeedSync(mnemonic, '') // (mnemonic, password)\n const keyPair = Keypair.fromSeed(ed25519HdKey.derivePath(path, seed.toString('hex')).key)\n return {\n mnemonic,\n path,\n privateKey: ethers.utils.hexlify(keyPair.secretKey),\n address: keyPair.publicKey.toBase58(),\n }\n}\n\nexport function getKeypairFromMnemonic(chainType: ChainType, mnemonic: string, path?: string): AccountMnemonic {\n switch (chainType) {\n case ChainType.EVM:\n return getEvmAccountFromMnemonic(mnemonic, path)\n case ChainType.APTOS:\n return getAptosAccountFromMnemonic(mnemonic, path)\n case ChainType.SOLANA:\n return getSolanaAccountFromMnemonic(mnemonic, path)\n default:\n throw new Error(`Unsupported chain: ${chainType}`)\n }\n}\n","import * as winston from 'winston'\nimport { Logger, format } from 'winston'\n\nlet logger: Logger | undefined = undefined\n\nexport { Logger }\n\nfunction getStackTrace(): string | undefined {\n const oldLimit = Error.stackTraceLimit\n Error.stackTraceLimit = Infinity\n const retval = new Error().stack\n Error.stackTraceLimit = oldLimit\n return retval\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cyclic_object_value\nexport function getCircularReplacer(): (key: string, value: unknown) => unknown {\n const ancestors: unknown[] = []\n return function (this: unknown, _key: string, value: unknown) {\n if (typeof value !== 'object' || value === null) {\n return value\n }\n // `this` is the object that value is contained in,\n // i.e., its direct parent.\n while (ancestors.length > 0 && ancestors.at(-1) !== this) {\n ancestors.pop()\n }\n if (ancestors.includes(value)) {\n return '[Circular]'\n }\n ancestors.push(value)\n return value\n }\n}\n\nfunction extractCallerInfo(line: string): string {\n for (const pattern of [/\\((.*?:\\d+:\\d+)\\)$/, /at (.*?:\\d+:\\d+)$/]) {\n const m = line.match(pattern)\n if (m === null) {\n continue\n }\n const [, fileInfoLine] = m\n return fileInfoLine\n }\n return '<unknown>'\n}\n\nconst logFormat = format.printf(\n (info: {\n level: string\n message: string\n timestamp?: string\n metadata?: {\n pretty?: boolean\n format?: string\n }\n }) => {\n if (info.level.toUpperCase() !== 'ERROR' && info.level.toUpperCase() !== 'WARN') {\n return `${info.timestamp} ${info.level.toUpperCase()}: ${info.message}`\n }\n const stack = getStackTrace() ?? ''\n\n const stackLines = stack.split('\\n')\n const index =\n stackLines.findIndex((line) => {\n return line.match(/create-logger.js/)\n }) + 1\n\n let fileInfo = '<unknown>'\n if (stackLines.length > index) {\n const line = stackLines[index]\n fileInfo = extractCallerInfo(line)\n }\n\n const formats: string[] = []\n if (fileInfo !== '<unknown>') {\n formats.push(fileInfo)\n }\n\n const { pretty, format } = info.metadata ?? {}\n const spaces = pretty === true ? 2 : undefined\n const value =\n typeof info.message === 'string'\n ? info.message\n : JSON.stringify(info.message, getCircularReplacer(), spaces)\n const message = format !== undefined ? format.replace(/%s/g, value) : value\n\n return [...formats, message].map((x) => `${info.timestamp} ${info.level.toUpperCase()}: ${x}`).join('\\n')\n }\n)\n\nconst loggerFormat = format.combine(\n format.timestamp({ format: 'YY-MM-DD HH:mm:ss' }),\n format.splat(),\n format.metadata({ fillExcept: ['level', 'timestamp', 'message'] }),\n logFormat,\n format.colorize({\n all: true,\n })\n)\n\nexport function initLogger(level: string): void {\n if (!logger) {\n logger = createLogger(level)\n }\n}\n\nexport function createLogger(level: string): Logger {\n const logger = winston.createLogger({\n level,\n format: loggerFormat,\n transports: [new winston.transports.Console()],\n })\n return logger\n}\n\nexport function getLogger(): Logger {\n initLogger(process.env.LZ_LOG ?? 'info')\n if (!logger) {\n throw new Error('Logger is not initialized')\n }\n return logger\n}\n\nconst exportsObject: {\n getCircularReplacer?: (key: unknown, value: unknown) => unknown\n} = {}\n\nif (process.env.NODE_ENV === 'test') {\n exportsObject.getCircularReplacer = getCircularReplacer\n}\nexport default exportsObject\n","import { ethers } from 'ethers'\n\nimport {\n Chain,\n EndpointId,\n EndpointVersion,\n Network,\n isNetworkEndpointIdSupported,\n networkToChain,\n networkToEndpointId,\n} from '@layerzerolabs/lz-definitions'\n\nexport interface Deployment {\n /** Name of the contract deployment. */\n name: string\n\n /** Optional endpoint identifier. */\n compatibleVersions: EndpointVersion[]\n\n /** Network of deployment. */\n network: Network\n\n /** Optional contract source. */\n source?: string\n\n /** Address of deployed contract. */\n address: string\n\n /** Optional contract ABI. */\n abi?: string\n\n /** Optional contract bytecode. */\n bytecode?: string\n}\n\n/**\n * Find the matching deployments based on the given options\n * @param deployments list of deployments\n * @param nameOrAddress contract name\n * @param options options to match against\n * @returns Deployment\n */\nexport function findDeployment(\n deployments: Deployment[],\n nameOrAddress: string,\n options: { chain?: Chain; source?: string; network?: Network; endpointId?: EndpointId }\n): Deployment | undefined {\n return deployments.find((deployment) => {\n let hasMatchingNameOrAddress = deployment.name === nameOrAddress\n if (!hasMatchingNameOrAddress && ethers.utils.isAddress(nameOrAddress)) {\n hasMatchingNameOrAddress =\n ethers.utils.getAddress(deployment.address) === ethers.utils.getAddress(nameOrAddress)\n }\n const hasMatchingChain = options.chain == null || options.chain === networkToChain(deployment.network)\n const hasMatchingNetwork = options.network === undefined || options.network === deployment.network\n const hasMatchingSource = options.source === undefined || options.source === deployment.source\n let hasMatchingEndpoint = true\n if (options.endpointId != null) {\n const compatibleEndpoints = deployment.compatibleVersions.map((v) => {\n if (isNetworkEndpointIdSupported(deployment.network, v)) {\n return networkToEndpointId(deployment.network, v)\n }\n return undefined\n })\n hasMatchingEndpoint = compatibleEndpoints.includes(options.endpointId)\n }\n return (\n hasMatchingNameOrAddress &&\n hasMatchingChain &&\n hasMatchingNetwork &&\n hasMatchingEndpoint &&\n hasMatchingSource\n )\n })\n}\n\ntype ContractType = { [key in string]: ethers.Contract }\nconst contractCache: ContractType = {}\nexport function deploymentToEvmContract<T extends ethers.Contract>(\n deployment: Deployment,\n provider?: ethers.providers.Provider\n): T {\n const key = `${deployment.network}-${deployment.address}`\n if (!(key in contractCache)) {\n if (deployment.abi === undefined || deployment.bytecode === undefined) {\n throw new Error('Deployment does not have ABI or bytecode')\n }\n const Contract = new ethers.ContractFactory(deployment.abi, deployment.bytecode)\n contractCache[key] = Contract.attach(deployment.address)\n }\n if (!provider) {\n return contractCache[key] as T\n }\n return contractCache[key].connect(provider) as T\n}\n","import { createRequire } from 'module'\n/**\n * A function to return dirname of a path\n * @param path\n * @returns\n */\nexport function dirname(path: string): string {\n const match = path.match(/(.*)([\\\\/][^\\\\/]+)[/\\\\]?$/)\n const [, basePath] = match ?? []\n const dirname = typeof basePath !== 'undefined' ? basePath : path\n return dirname\n}\n\nfunction getStackTrace(stackTraceLimit = Infinity): string | undefined {\n const oldLimit = Error.stackTraceLimit\n Error.stackTraceLimit = stackTraceLimit\n const retval = new Error().stack\n Error.stackTraceLimit = oldLimit\n return retval\n}\n\nfunction getCaller(): string | undefined {\n const lines = (getStackTrace(10) ?? '').split('\\n')\n // Error:\n // at getStackTrace\n // at getCaller\n // at <caller of getCaller>\n // at <expected caller>\n if (lines.length > 1 + 1 + 1 + 1) {\n const line = lines[4]\n const m = line.match(/^.*\\(([^:]*)[^)]*\\)/)\n if (m) {\n return m[1]\n }\n }\n return undefined\n}\n\n/**\n * return the root path of a package\n * @param packageName\n * @param relativeToPath\n * @returns\n */\nexport function pkgroot(packageName: string, relativeToPath?: string): string {\n if (relativeToPath === undefined) {\n relativeToPath = getCaller()\n if (relativeToPath === undefined) {\n relativeToPath = __filename\n }\n }\n\n const filepath = createRequire(relativeToPath).resolve(`${packageName}/package.json`)\n const packagePath = dirname(filepath)\n // https://github.com/yarnpkg/berry/blob/f67dda88fe9d0a892c44af923cbbc50bfe454e0e/packages/docusaurus/docs/advanced/03-pnp/pnp-spec.md\n // In order to properly represent packages listing peer dependencies, Yarn relies on a concept\n // called Virtual Packages. Their most notable property is that they all have different paths\n // (so that Node.js instantiates them as many times as needed), while still being baked by the\n // same concrete folder on disk.\n return packagePath.replace(/.yarn\\/([^/]*\\/)?(__virtual__|\\$\\$virtual)\\/[^/]*\\/\\d*\\//, '')\n}\n","// This file copy from repo:devtools and is located in packages/devtools/src/common/promise.ts\n\nimport assert from 'assert'\n\n/**\n * Generic type for a hybrid (sync / async) factory\n * that generates an instance of `TOutput` based on arguments of type `TInput`\n *\n * `TInput` represents the list of all function arguments that need to be passed to the factory:\n *\n * ```typescript\n * const mySyncFactory: Factory<[number, boolean], string> = (num: number, bool: boolean): string => \"hello\"\n *\n * const mySyncFactory: Factory<[], string> = async () => \"hello\"\n * ```\n *\n * The hybrid aspect just makes it easier for implementers - if the logic is synchronous,\n * this type will not force any extra `async`.\n */\nexport type Factory<TInput extends unknown[], TOutput> = (...input: TInput) => TOutput | Promise<TOutput>\n\n/**\n * Helper type for argumentless factories a.k.a. tasks\n */\ntype Task<T> = Factory<[], T>\n\n/**\n * Executes tasks in sequence, waiting for each one to finish before starting the next one\n *\n * Will resolve with the output of all tasks or reject with the first rejection.\n *\n * @param {Task<T>[]} tasks\n * @returns {Promise<T[]>}\n */\nexport const sequence = async <T>(tasks: Task<T>[]): Promise<T[]> => {\n const collector: T[] = []\n\n for (const task of tasks) {\n collector.push(await task())\n }\n\n return collector\n}\n\n/**\n * Executes tasks in parallel\n *\n * Will resolve with the output of all tasks or reject with the any rejection.\n *\n * @param {Task<T>[]} tasks\n * @returns {Promise<T[]>}\n */\nexport const parallel = async <T>(tasks: Task<T>[]): Promise<T[]> => Promise.all(tasks.map(async (task) => task()))\n\n/**\n * Executes tasks in a sequence until one resolves.\n *\n * Will resolve with the output of the first task that resolves\n * or reject with the last rejection.\n *\n * Will reject immediatelly if no tasks have been passed\n *\n * @param {Task<T>[]} tasks\n * @returns {Promise<T>}\n */\nexport const first = async <T>(tasks: Task<T>[]): Promise<T> => {\n assert(tasks.length !== 0, `Must have at least one task for first()`)\n\n let lastError: unknown\n\n for (const task of tasks) {\n try {\n return await task()\n } catch (error) {\n lastError = error\n }\n }\n\n throw lastError\n}\n\n/**\n * Helper utility for currying first() - creating a function\n * that behaves like first() but accepts arguments that will be passed to the factory functions\n *\n * @param {Factory<TInput, TOutput>[]} factories\n * @returns {Factory<TInput, TOutput>}\n */\nexport const firstFactory =\n <TInput extends unknown[], TOutput>(...factories: Factory<TInput, TOutput>[]): Factory<TInput, TOutput> =>\n async (...input) =>\n first(factories.map((factory) => async () => factory(...input)))\n\n/**\n * Represents a type that excludes promises.\n * If the input type is a promise, the resulting type is `never`.\n * Otherwise, it is the same as the input type.\n */\nexport type NonPromise<T> = T extends Promise<unknown> ? never : T\n","/**\n * Calls a defined callback function on each element of an array, and returns an array that contains the results.\n * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array.\n * @returns\n */\nexport function safeMap<T, R>(elements: T[], callbackfn: (item: T, index: number) => R): [R[], Error | undefined] {\n const result: R[] = []\n try {\n for (let i = 0; i < elements.length; i++) {\n const rv = callbackfn(elements[i], i)\n result.push(rv)\n }\n return [result, undefined]\n } catch (e) {\n return [result, e as Error]\n }\n}\n","/**\n * A function to convert Uint8Array to hex string\n * @param bytes Uint8Array\n * @returns hex string\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n return Buffer.from(bytes).toString('hex')\n}\n\n/**\n * A function to convert hex string to Uint8Array\n * @param hex hex string\n * @returns Uint8Array\n */\nexport function hexToBytes(hex: string): Uint8Array {\n const value = hex.replace(/^0x/i, '')\n const len = value.length + 1 - ((value.length + 1) % 2)\n return Uint8Array.from(Buffer.from(value.padStart(len, '0'), 'hex'))\n}\n\n/**\n * A function to trim the prefix 0x from a hex string\n * @param hex hex string\n * @returns hex string without 0x prefix\n */\nexport function trim0x(hex: string): string {\n return hex.replace(/^0[xX]/, '')\n}\n\n/**\n * A function to ensure the prefix 0x from a hex string\n * @param hex hex string\n * @returns hex string with 0x prefix\n */\nexport function ensure0x(hex: string): string {\n return hex.startsWith('0x') || hex.startsWith('0X') ? hex : `0x${hex}`\n}\n\n/**\n * A function to check if a string is a hex string\n * @param value\n * @returns\n */\nexport function isHexString(value: string): boolean {\n return /^(0x)?[0-9a-fA-F]+$/.test(value)\n}\n","import { hexlify } from '@ethersproject/bytes'\nimport { getPublicKey, sign } from '@noble/secp256k1'\n\nexport { recoverPublicKey } from '@noble/secp256k1'\n\nexport async function signWithECDSA(\n data: Buffer,\n privateKey: string\n): Promise<{ signature: Uint8Array; recoveryId: number }> {\n const [signature, recoveryId] = await sign(data, privateKey.replace('0x', ''), {\n canonical: true,\n recovered: true,\n der: false,\n })\n return {\n signature,\n recoveryId,\n }\n}\n\nexport function getECDSAPublicKey(privateKey: string): string {\n // remove the compression byte\n return hexlify(getPublicKey(privateKey.replace('0x', '')).subarray(1))\n}\n"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/account.ts","../src/logger.ts","../src/deployment.ts","../src/path.ts","../src/promise.ts","../src/array.ts","../src/format.ts"],"names":["path","format","createLogger","logger","ethers","dirname","getStackTrace","bytesToHex"],"mappings":"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","sourcesContent":["import { ChildProcess, SpawnOptions, spawn } from 'child_process'\nimport http, { RequestOptions } from 'http'\nimport path from 'path'\n\nexport * from './account'\nexport * from './logger'\nexport * from './deployment'\nexport * from './path'\nexport * from './promise'\nexport * from './types'\nexport * from './array'\nexport * from './format'\n\nimport { sync as findUpSync } from 'find-up'\nimport kill from 'tree-kill'\nimport { Logger } from 'winston'\n\nimport { getLogger } from './logger'\n\nexport const logger = getLogger()\n\nexport async function sleep(timeout: number): Promise<void> {\n await new Promise((resolve) => setTimeout(resolve, timeout))\n}\n\nexport function getProjectPackageManager(cwd?: string): 'yarn' | 'npm' | 'pnpm' {\n const yarn = findUpSync('yarn.lock', { cwd })\n if (yarn !== undefined) return 'yarn'\n\n const npm = findUpSync('package-lock.json', { cwd })\n if (npm !== undefined) return 'npm'\n\n // pnpm\n const pnpm = findUpSync('pnpm-lock.yaml', { cwd })\n if (pnpm !== undefined) return 'pnpm'\n\n throw new Error('Cannot find package.json or yarn.lock')\n}\n\nexport function getProjectRootDir(cwd?: string): string {\n const yarn = findUpSync('yarn.lock', { cwd })\n if (yarn !== undefined) return path.dirname(yarn)\n\n const npm = findUpSync('package-lock.json', { cwd })\n if (npm !== undefined) return path.dirname(npm)\n\n const pnpm = findUpSync('pnpm-lock.yaml', { cwd })\n if (pnpm !== undefined) return path.dirname(pnpm)\n\n throw new Error('Cannot find yarn.lock or package-lock.json or pnpm-lock.yaml')\n}\n\nexport async function isHttpServiceReachable(\n host: string,\n port: number,\n timeout: number,\n path?: string\n): Promise<boolean> {\n return new Promise((resolve, _reject) => {\n const options: RequestOptions = {\n host,\n port,\n timeout,\n path,\n method: 'HEAD',\n }\n\n const request = http.request(options, (_response) => {\n resolve(true)\n })\n\n request.on('error', (_err) => {\n resolve(false)\n })\n\n request.end()\n })\n}\n\nexport function extractUrlInfo(url: string): {\n schema: 'http' | 'https'\n host: string\n port: string\n} {\n //TODO: handle the default port for http and https(443, 80)\n const m = url.match(/(?<schema>http|https):\\/\\/(?<host>.*):(?<port>\\d+)/)\n if (m?.groups?.host === undefined) {\n throw new Error(`Invalid url ${url}`)\n }\n\n return {\n schema: m.groups.schema as 'http' | 'https',\n host: m.groups.host,\n port: m.groups.port,\n }\n}\n\nexport class CmdExecutor {\n private currentProcess: ChildProcess | null = null\n\n private onFinish: Promise<void> | null = null\n\n public async executeCmd(\n command: string,\n args: string[],\n options: SpawnOptions,\n verbose = false,\n runningCheck?: { key: string; runningNotify: (running: boolean) => void },\n logger?: Logger\n ): Promise<void> {\n if (logger) {\n logger.info(`Running command: ${command} ${args.join(' ')}`)\n } else {\n console.log(`Running command: ${command} ${args.join(' ')}`)\n }\n return new Promise<void>((resolve, reject) => {\n let notified = false\n this.currentProcess = spawn(command, args, options)\n\n this.currentProcess.on('error', (error) => {\n throw new Error(`Failed to execute command: ${command} ${args.join(' ')} - ${error.message}`)\n })\n\n // Listen for standard output from the child process and print it to the console\n this.currentProcess.stdout?.on('data', (data: Buffer | string) => {\n if (runningCheck && !notified && data.toString().includes(runningCheck.key)) {\n runningCheck.runningNotify(true)\n notified = true\n }\n if (verbose && logger) {\n logger.info(data.toString())\n } else if (verbose) {\n process.stdout.write(data)\n }\n })\n\n // Listen for errors from the child process and print them to the console\n this.currentProcess.stderr?.on('data', (data: Buffer | string) => {\n if (logger) {\n logger.error(data.toString())\n } else {\n process.stderr.write(data)\n }\n })\n\n // Listen for the exit event of the child process and resolve the promise\n // if the child process exits normally (with code 0)\n this.currentProcess.on('exit', (code: number) => {\n if (code !== 0) {\n if (logger) {\n logger.info(`Command ${command} exited with code ${code}.`)\n } else {\n console.info(`Command ${command} exited with code ${code}.`)\n }\n reject(new Error(`${command} ${args.join(' ')}`))\n return\n }\n resolve()\n })\n })\n }\n\n public async interrupt(killDescendants = true): Promise<void> {\n if (this.currentProcess) {\n logger.info('Killing process: %s', this.currentProcess.pid)\n if (killDescendants) {\n if (this.currentProcess.pid !== undefined) {\n kill(this.currentProcess.pid)\n // the implementation of tree-kill is using spawn, which is async. So we need to wait for a while\n await sleep(2000)\n }\n } else {\n this.currentProcess.kill()\n }\n this.currentProcess = null\n }\n }\n}\n","import { bytesToHex } from '@noble/hashes/utils'\nimport { Keypair } from '@solana/web3.js'\nimport * as aptos from 'aptos'\nimport * as bip39 from 'bip39'\nimport * as ed25519HdKey from 'ed25519-hd-key'\nimport { ethers } from 'ethers'\n\nimport { ChainType } from '@layerzerolabs/lz-definitions'\n\nexport interface AccountMnemonic {\n mnemonic: string\n path: string\n privateKey?: string\n address?: string\n}\n\nexport function getBIP044Path(chainType: ChainType, account: number, change: number, index: number): string {\n // CAUTION: the path format is different for each chain\n // https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki\n //\n // The \"m/44'/637'/0'/0'/0'\" path is known as a hardened derivation path, while the \"m/44'/637'/0'/0/0\" path is a non-hardened derivation path.\n // The technical benefit of using a hardened derivation path is enhanced security.\n // In BIP32, a hardened derivation is denoted by an apostrophe ('), which indicates that the child private key should be derived in a way\n // that makes it computationally infeasible to derive the parent private key from it. This additional level of security\n // protects the mnemonic phrase and its derived private keys even if one of the derived private keys is compromised.\n // By using a hardened derivation path, like \"m/44'/637'/0'/0'/0'\", each level of the path requires a unique private key derivation,\n // making it more difficult to infer the parent private key from the child private key. This is particularly important when dealing with\n // hierarchical deterministic wallets, as it helps protect funds across multiple accounts or purposes.\n\n switch (chainType) {\n case ChainType.EVM:\n // https://github.com/ethers-io/ethers.js/blob/main/src.ts/wallet/hdwallet.ts\n return `m/44'/60'/${account}'/${change}/${index}`\n case ChainType.APTOS:\n // https://github.com/aptos-labs/aptos-core/blob/main/ecosystem/typescript/sdk/src/aptos_account.ts\n return `m/44'/637'/${account}'/${change}'/${index}'`\n case ChainType.SOLANA:\n // https://github.com/solana-labs/solana/blob/master/sdk/src/derivation_path.rs\n return `m/44'/501'/${account}'/${change}'`\n default:\n throw new Error(`Unsupported chain: ${chainType}`)\n }\n}\n\nexport function getEvmAccountFromMnemonic(mnemonic: string, path = \"m/44'/60'/0'/0/0\"): AccountMnemonic {\n const wallet = ethers.Wallet.fromMnemonic(mnemonic, path)\n return {\n mnemonic,\n path,\n privateKey: wallet.privateKey,\n address: wallet.address,\n }\n}\n\nexport function getAptosAccountFromMnemonic(mnemonic: string, path = \"m/44'/637'/0'/0'/0'\"): AccountMnemonic {\n //https://aptos.dev/guides/building-your-own-wallet/#creating-an-aptos-account\n if (!aptos.AptosAccount.isValidPath(path)) {\n throw new Error(`Invalid derivation path: ${path}`)\n }\n const normalizeMnemonics = mnemonic\n .trim()\n .split(/\\s+/)\n .map((part) => part.toLowerCase())\n .join(' ')\n {\n const { key } = aptos.derivePath(path, bytesToHex(bip39.mnemonicToSeedSync(normalizeMnemonics)))\n const account = new aptos.AptosAccount(new Uint8Array(key)).toPrivateKeyObject()\n return {\n mnemonic,\n path,\n privateKey: account.privateKeyHex,\n address: account.address,\n }\n }\n}\n\nexport function getSolanaAccountFromMnemonic(mnemonic: string, path = \"m/44'/501'/0'/0'\"): AccountMnemonic {\n const seed = bip39.mnemonicToSeedSync(mnemonic, '') // (mnemonic, password)\n const keyPair = Keypair.fromSeed(ed25519HdKey.derivePath(path, seed.toString('hex')).key)\n return {\n mnemonic,\n path,\n privateKey: ethers.utils.hexlify(keyPair.secretKey),\n address: keyPair.publicKey.toBase58(),\n }\n}\n\nexport function getKeypairFromMnemonic(chainType: ChainType, mnemonic: string, path?: string): AccountMnemonic {\n switch (chainType) {\n case ChainType.EVM:\n return getEvmAccountFromMnemonic(mnemonic, path)\n case ChainType.APTOS:\n return getAptosAccountFromMnemonic(mnemonic, path)\n case ChainType.SOLANA:\n return getSolanaAccountFromMnemonic(mnemonic, path)\n default:\n throw new Error(`Unsupported chain: ${chainType}`)\n }\n}\n","import * as winston from 'winston'\nimport { Logger, format } from 'winston'\n\nlet logger: Logger | undefined = undefined\n\nexport { Logger }\n\nfunction getStackTrace(): string | undefined {\n const oldLimit = Error.stackTraceLimit\n Error.stackTraceLimit = Infinity\n const retval = new Error().stack\n Error.stackTraceLimit = oldLimit\n return retval\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cyclic_object_value\nexport function getCircularReplacer(): (key: string, value: unknown) => unknown {\n const ancestors: unknown[] = []\n return function (this: unknown, _key: string, value: unknown) {\n if (typeof value !== 'object' || value === null) {\n return value\n }\n // `this` is the object that value is contained in,\n // i.e., its direct parent.\n while (ancestors.length > 0 && ancestors.at(-1) !== this) {\n ancestors.pop()\n }\n if (ancestors.includes(value)) {\n return '[Circular]'\n }\n ancestors.push(value)\n return value\n }\n}\n\nfunction extractCallerInfo(line: string): string {\n for (const pattern of [/\\((.*?:\\d+:\\d+)\\)$/, /at (.*?:\\d+:\\d+)$/]) {\n const m = line.match(pattern)\n if (m === null) {\n continue\n }\n const [, fileInfoLine] = m\n return fileInfoLine\n }\n return '<unknown>'\n}\n\nconst logFormat = format.printf(\n (info: {\n level: string\n message: string\n timestamp?: string\n metadata?: {\n pretty?: boolean\n format?: string\n }\n }) => {\n if (info.level.toUpperCase() !== 'ERROR' && info.level.toUpperCase() !== 'WARN') {\n return `${info.timestamp} ${info.level.toUpperCase()}: ${info.message}`\n }\n const stack = getStackTrace() ?? ''\n\n const stackLines = stack.split('\\n')\n const index =\n stackLines.findIndex((line) => {\n return line.match(/create-logger.js/)\n }) + 1\n\n let fileInfo = '<unknown>'\n if (stackLines.length > index) {\n const line = stackLines[index]\n fileInfo = extractCallerInfo(line)\n }\n\n const formats: string[] = []\n if (fileInfo !== '<unknown>') {\n formats.push(fileInfo)\n }\n\n const { pretty, format } = info.metadata ?? {}\n const spaces = pretty === true ? 2 : undefined\n const value =\n typeof info.message === 'string'\n ? info.message\n : JSON.stringify(info.message, getCircularReplacer(), spaces)\n const message = format !== undefined ? format.replace(/%s/g, value) : value\n\n return [...formats, message].map((x) => `${info.timestamp} ${info.level.toUpperCase()}: ${x}`).join('\\n')\n }\n)\n\nconst loggerFormat = format.combine(\n format.timestamp({ format: 'YY-MM-DD HH:mm:ss' }),\n format.splat(),\n format.metadata({ fillExcept: ['level', 'timestamp', 'message'] }),\n logFormat,\n format.colorize({\n all: true,\n })\n)\n\nexport function initLogger(level: string): void {\n if (!logger) {\n logger = createLogger(level)\n }\n}\n\nexport function createLogger(level: string): Logger {\n const logger = winston.createLogger({\n level,\n format: loggerFormat,\n transports: [new winston.transports.Console()],\n })\n return logger\n}\n\nexport function getLogger(): Logger {\n initLogger(process.env.LZ_LOG ?? 'info')\n if (!logger) {\n throw new Error('Logger is not initialized')\n }\n return logger\n}\n\nconst exportsObject: {\n getCircularReplacer?: (key: unknown, value: unknown) => unknown\n} = {}\n\nif (process.env.NODE_ENV === 'test') {\n exportsObject.getCircularReplacer = getCircularReplacer\n}\nexport default exportsObject\n","import { ethers } from 'ethers'\n\nimport {\n Chain,\n EndpointId,\n EndpointVersion,\n Network,\n isNetworkEndpointIdSupported,\n networkToChain,\n networkToEndpointId,\n} from '@layerzerolabs/lz-definitions'\n\nexport interface Deployment {\n /** Name of the contract deployment. */\n name: string\n\n /** Optional endpoint identifier. */\n compatibleVersions: EndpointVersion[]\n\n /** Network of deployment. */\n network: Network\n\n /** Optional contract source. */\n source?: string\n\n /** Address of deployed contract. */\n address: string\n\n /** Optional contract ABI. */\n abi?: string\n\n /** Optional contract bytecode. */\n bytecode?: string\n}\n\n/**\n * Find the matching deployments based on the given options\n * @param deployments list of deployments\n * @param nameOrAddress contract name\n * @param options options to match against\n * @returns Deployment\n */\nexport function findDeployment(\n deployments: Deployment[],\n nameOrAddress: string,\n options: { chain?: Chain; source?: string; network?: Network; endpointId?: EndpointId }\n): Deployment | undefined {\n return deployments.find((deployment) => {\n let hasMatchingNameOrAddress = deployment.name === nameOrAddress\n if (!hasMatchingNameOrAddress && ethers.utils.isAddress(nameOrAddress)) {\n hasMatchingNameOrAddress =\n ethers.utils.getAddress(deployment.address) === ethers.utils.getAddress(nameOrAddress)\n }\n const hasMatchingChain = options.chain == null || options.chain === networkToChain(deployment.network)\n const hasMatchingNetwork = options.network === undefined || options.network === deployment.network\n const hasMatchingSource = options.source === undefined || options.source === deployment.source\n let hasMatchingEndpoint = true\n if (options.endpointId != null) {\n const compatibleEndpoints = deployment.compatibleVersions.map((v) => {\n if (isNetworkEndpointIdSupported(deployment.network, v)) {\n return networkToEndpointId(deployment.network, v)\n }\n return undefined\n })\n hasMatchingEndpoint = compatibleEndpoints.includes(options.endpointId)\n }\n return (\n hasMatchingNameOrAddress &&\n hasMatchingChain &&\n hasMatchingNetwork &&\n hasMatchingEndpoint &&\n hasMatchingSource\n )\n })\n}\n\ntype ContractType = { [key in string]: ethers.Contract }\nconst contractCache: ContractType = {}\nexport function deploymentToEvmContract<T extends ethers.Contract>(\n deployment: Deployment,\n provider?: ethers.providers.Provider\n): T {\n const key = `${deployment.network}-${deployment.address}`\n if (!(key in contractCache)) {\n if (deployment.abi === undefined || deployment.bytecode === undefined) {\n throw new Error('Deployment does not have ABI or bytecode')\n }\n const Contract = new ethers.ContractFactory(deployment.abi, deployment.bytecode)\n contractCache[key] = Contract.attach(deployment.address)\n }\n if (!provider) {\n return contractCache[key] as T\n }\n return contractCache[key].connect(provider) as T\n}\n","import { createRequire } from 'module'\n/**\n * A function to return dirname of a path\n * @param path\n * @returns\n */\nexport function dirname(path: string): string {\n const match = path.match(/(.*)([\\\\/][^\\\\/]+)[/\\\\]?$/)\n const [, basePath] = match ?? []\n const dirname = typeof basePath !== 'undefined' ? basePath : path\n return dirname\n}\n\nfunction getStackTrace(stackTraceLimit = Infinity): string | undefined {\n const oldLimit = Error.stackTraceLimit\n Error.stackTraceLimit = stackTraceLimit\n const retval = new Error().stack\n Error.stackTraceLimit = oldLimit\n return retval\n}\n\nfunction getCaller(): string | undefined {\n const lines = (getStackTrace(10) ?? '').split('\\n')\n // Error:\n // at getStackTrace\n // at getCaller\n // at <caller of getCaller>\n // at <expected caller>\n if (lines.length > 1 + 1 + 1 + 1) {\n const line = lines[4]\n const m = line.match(/^.*\\(([^:]*)[^)]*\\)/)\n if (m) {\n return m[1]\n }\n }\n return undefined\n}\n\n/**\n * return the root path of a package\n * @param packageName\n * @param relativeToPath\n * @returns\n */\nexport function pkgroot(packageName: string, relativeToPath?: string): string {\n if (relativeToPath === undefined) {\n relativeToPath = getCaller()\n if (relativeToPath === undefined) {\n relativeToPath = __filename\n }\n }\n\n const filepath = createRequire(relativeToPath).resolve(`${packageName}/package.json`)\n const packagePath = dirname(filepath)\n // https://github.com/yarnpkg/berry/blob/f67dda88fe9d0a892c44af923cbbc50bfe454e0e/packages/docusaurus/docs/advanced/03-pnp/pnp-spec.md\n // In order to properly represent packages listing peer dependencies, Yarn relies on a concept\n // called Virtual Packages. Their most notable property is that they all have different paths\n // (so that Node.js instantiates them as many times as needed), while still being baked by the\n // same concrete folder on disk.\n return packagePath.replace(/.yarn\\/([^/]*\\/)?(__virtual__|\\$\\$virtual)\\/[^/]*\\/\\d*\\//, '')\n}\n","// This file copy from repo:devtools and is located in packages/devtools/src/common/promise.ts\n\nimport assert from 'assert'\n\n/**\n * Generic type for a hybrid (sync / async) factory\n * that generates an instance of `TOutput` based on arguments of type `TInput`\n *\n * `TInput` represents the list of all function arguments that need to be passed to the factory:\n *\n * ```typescript\n * const mySyncFactory: Factory<[number, boolean], string> = (num: number, bool: boolean): string => \"hello\"\n *\n * const mySyncFactory: Factory<[], string> = async () => \"hello\"\n * ```\n *\n * The hybrid aspect just makes it easier for implementers - if the logic is synchronous,\n * this type will not force any extra `async`.\n */\nexport type Factory<TInput extends unknown[], TOutput> = (...input: TInput) => TOutput | Promise<TOutput>\n\n/**\n * Helper type for argumentless factories a.k.a. tasks\n */\ntype Task<T> = Factory<[], T>\n\n/**\n * Executes tasks in sequence, waiting for each one to finish before starting the next one\n *\n * Will resolve with the output of all tasks or reject with the first rejection.\n *\n * @param {Task<T>[]} tasks\n * @returns {Promise<T[]>}\n */\nexport const sequence = async <T>(tasks: Task<T>[]): Promise<T[]> => {\n const collector: T[] = []\n\n for (const task of tasks) {\n collector.push(await task())\n }\n\n return collector\n}\n\n/**\n * Executes tasks in parallel\n *\n * Will resolve with the output of all tasks or reject with the any rejection.\n *\n * @param {Task<T>[]} tasks\n * @returns {Promise<T[]>}\n */\nexport const parallel = async <T>(tasks: Task<T>[]): Promise<T[]> => Promise.all(tasks.map(async (task) => task()))\n\n/**\n * Executes tasks in a sequence until one resolves.\n *\n * Will resolve with the output of the first task that resolves\n * or reject with the last rejection.\n *\n * Will reject immediatelly if no tasks have been passed\n *\n * @param {Task<T>[]} tasks\n * @returns {Promise<T>}\n */\nexport const first = async <T>(tasks: Task<T>[]): Promise<T> => {\n assert(tasks.length !== 0, `Must have at least one task for first()`)\n\n let lastError: unknown\n\n for (const task of tasks) {\n try {\n return await task()\n } catch (error) {\n lastError = error\n }\n }\n\n throw lastError\n}\n\n/**\n * Helper utility for currying first() - creating a function\n * that behaves like first() but accepts arguments that will be passed to the factory functions\n *\n * @param {Factory<TInput, TOutput>[]} factories\n * @returns {Factory<TInput, TOutput>}\n */\nexport const firstFactory =\n <TInput extends unknown[], TOutput>(...factories: Factory<TInput, TOutput>[]): Factory<TInput, TOutput> =>\n async (...input) =>\n first(factories.map((factory) => async () => factory(...input)))\n\n/**\n * Represents a type that excludes promises.\n * If the input type is a promise, the resulting type is `never`.\n * Otherwise, it is the same as the input type.\n */\nexport type NonPromise<T> = T extends Promise<unknown> ? never : T\n","/**\n * Calls a defined callback function on each element of an array, and returns an array that contains the results.\n * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array.\n * @returns\n */\nexport function safeMap<T, R>(elements: T[], callbackfn: (item: T, index: number) => R): [R[], Error | undefined] {\n const result: R[] = []\n try {\n for (let i = 0; i < elements.length; i++) {\n const rv = callbackfn(elements[i], i)\n result.push(rv)\n }\n return [result, undefined]\n } catch (e) {\n return [result, e as Error]\n }\n}\n","/**\n * A function to convert Uint8Array to hex string\n * @param bytes Uint8Array\n * @returns hex string\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n return Buffer.from(bytes).toString('hex')\n}\n\n/**\n * A function to convert hex string to Uint8Array\n * @param hex hex string\n * @returns Uint8Array\n */\nexport function hexToBytes(hex: string): Uint8Array {\n const value = hex.replace(/^0x/i, '')\n const len = value.length + 1 - ((value.length + 1) % 2)\n return Uint8Array.from(Buffer.from(value.padStart(len, '0'), 'hex'))\n}\n\n/**\n * A function to trim the prefix 0x from a hex string\n * @param hex hex string\n * @returns hex string without 0x prefix\n */\nexport function trim0x(hex: string): string {\n return hex.replace(/^0[xX]/, '')\n}\n\n/**\n * A function to ensure the prefix 0x from a hex string\n * @param hex hex string\n * @returns hex string with 0x prefix\n */\nexport function ensure0x(hex: string): string {\n return hex.startsWith('0x') || hex.startsWith('0X') ? hex : `0x${hex}`\n}\n\n/**\n * A function to check if a string is a hex string\n * @param value\n * @returns\n */\nexport function isHexString(value: string): boolean {\n return /^(0x)?[0-9a-fA-F]+$/.test(value)\n}\n"]}
package/dist/index.d.mts CHANGED
@@ -3,7 +3,6 @@ import { ChainType, EndpointVersion, Network, Chain, EndpointId } from '@layerze
3
3
  import { Logger } from 'winston';
4
4
  export { Logger } from 'winston';
5
5
  import { ethers } from 'ethers';
6
- export { recoverPublicKey } from '@noble/secp256k1';
7
6
 
8
7
  interface AccountMnemonic {
9
8
  mnemonic: string;
@@ -185,12 +184,6 @@ declare function ensure0x(hex: string): string;
185
184
  */
186
185
  declare function isHexString(value: string): boolean;
187
186
 
188
- declare function signWithECDSA(data: Buffer, privateKey: string): Promise<{
189
- signature: Uint8Array;
190
- recoveryId: number;
191
- }>;
192
- declare function getECDSAPublicKey(privateKey: string): string;
193
-
194
187
  declare const logger: Logger;
195
188
  declare function sleep(timeout: number): Promise<void>;
196
189
  declare function getProjectPackageManager(cwd?: string): 'yarn' | 'npm' | 'pnpm';
@@ -211,4 +204,4 @@ declare class CmdExecutor {
211
204
  interrupt(killDescendants?: boolean): Promise<void>;
212
205
  }
213
206
 
214
- export { type AccountMnemonic, type AtLeast, CmdExecutor, type Deployment, type Factory, type NonPromise, type RequireAtLeastOne, type RequiredOnly, bytesToHex, createLogger, deploymentToEvmContract, dirname, ensure0x, extractUrlInfo, findDeployment, first, firstFactory, getAptosAccountFromMnemonic, getBIP044Path, getCircularReplacer, getECDSAPublicKey, getEvmAccountFromMnemonic, getKeypairFromMnemonic, getLogger, getProjectPackageManager, getProjectRootDir, getSolanaAccountFromMnemonic, hexToBytes, initLogger, isHexString, isHttpServiceReachable, logger, parallel, pkgroot, safeMap, sequence, signWithECDSA, sleep, trim0x };
207
+ export { type AccountMnemonic, type AtLeast, CmdExecutor, type Deployment, type Factory, type NonPromise, type RequireAtLeastOne, type RequiredOnly, bytesToHex, createLogger, deploymentToEvmContract, dirname, ensure0x, extractUrlInfo, findDeployment, first, firstFactory, getAptosAccountFromMnemonic, getBIP044Path, getCircularReplacer, getEvmAccountFromMnemonic, getKeypairFromMnemonic, getLogger, getProjectPackageManager, getProjectRootDir, getSolanaAccountFromMnemonic, hexToBytes, initLogger, isHexString, isHttpServiceReachable, logger, parallel, pkgroot, safeMap, sequence, sleep, trim0x };
package/dist/index.d.ts CHANGED
@@ -3,7 +3,6 @@ import { ChainType, EndpointVersion, Network, Chain, EndpointId } from '@layerze
3
3
  import { Logger } from 'winston';
4
4
  export { Logger } from 'winston';
5
5
  import { ethers } from 'ethers';
6
- export { recoverPublicKey } from '@noble/secp256k1';
7
6
 
8
7
  interface AccountMnemonic {
9
8
  mnemonic: string;
@@ -185,12 +184,6 @@ declare function ensure0x(hex: string): string;
185
184
  */
186
185
  declare function isHexString(value: string): boolean;
187
186
 
188
- declare function signWithECDSA(data: Buffer, privateKey: string): Promise<{
189
- signature: Uint8Array;
190
- recoveryId: number;
191
- }>;
192
- declare function getECDSAPublicKey(privateKey: string): string;
193
-
194
187
  declare const logger: Logger;
195
188
  declare function sleep(timeout: number): Promise<void>;
196
189
  declare function getProjectPackageManager(cwd?: string): 'yarn' | 'npm' | 'pnpm';
@@ -211,4 +204,4 @@ declare class CmdExecutor {
211
204
  interrupt(killDescendants?: boolean): Promise<void>;
212
205
  }
213
206
 
214
- export { type AccountMnemonic, type AtLeast, CmdExecutor, type Deployment, type Factory, type NonPromise, type RequireAtLeastOne, type RequiredOnly, bytesToHex, createLogger, deploymentToEvmContract, dirname, ensure0x, extractUrlInfo, findDeployment, first, firstFactory, getAptosAccountFromMnemonic, getBIP044Path, getCircularReplacer, getECDSAPublicKey, getEvmAccountFromMnemonic, getKeypairFromMnemonic, getLogger, getProjectPackageManager, getProjectRootDir, getSolanaAccountFromMnemonic, hexToBytes, initLogger, isHexString, isHttpServiceReachable, logger, parallel, pkgroot, safeMap, sequence, signWithECDSA, sleep, trim0x };
207
+ export { type AccountMnemonic, type AtLeast, CmdExecutor, type Deployment, type Factory, type NonPromise, type RequireAtLeastOne, type RequiredOnly, bytesToHex, createLogger, deploymentToEvmContract, dirname, ensure0x, extractUrlInfo, findDeployment, first, firstFactory, getAptosAccountFromMnemonic, getBIP044Path, getCircularReplacer, getEvmAccountFromMnemonic, getKeypairFromMnemonic, getLogger, getProjectPackageManager, getProjectRootDir, getSolanaAccountFromMnemonic, hexToBytes, initLogger, isHexString, isHttpServiceReachable, logger, parallel, pkgroot, safeMap, sequence, sleep, trim0x };
package/dist/index.mjs CHANGED
@@ -13,9 +13,6 @@ import { format } from 'winston';
13
13
  export { Logger } from 'winston';
14
14
  import { createRequire } from 'module';
15
15
  import assert from 'assert';
16
- import { hexlify } from '@ethersproject/bytes';
17
- import { sign, getPublicKey } from '@noble/secp256k1';
18
- export { recoverPublicKey } from '@noble/secp256k1';
19
16
  import { sync } from 'find-up';
20
17
  import kill from 'tree-kill';
21
18
 
@@ -296,20 +293,6 @@ function ensure0x(hex) {
296
293
  function isHexString(value) {
297
294
  return /^(0x)?[0-9a-fA-F]+$/.test(value);
298
295
  }
299
- async function signWithECDSA(data, privateKey) {
300
- const [signature, recoveryId] = await sign(data, privateKey.replace("0x", ""), {
301
- canonical: true,
302
- recovered: true,
303
- der: false
304
- });
305
- return {
306
- signature,
307
- recoveryId
308
- };
309
- }
310
- function getECDSAPublicKey(privateKey) {
311
- return hexlify(getPublicKey(privateKey.replace("0x", "")).subarray(1));
312
- }
313
296
  var logger2 = getLogger();
314
297
  async function sleep(timeout) {
315
298
  await new Promise((resolve) => setTimeout(resolve, timeout));
@@ -432,6 +415,6 @@ var CmdExecutor = class {
432
415
  }
433
416
  };
434
417
 
435
- export { CmdExecutor, bytesToHex2 as bytesToHex, createLogger2 as createLogger, deploymentToEvmContract, dirname, ensure0x, extractUrlInfo, findDeployment, first, firstFactory, getAptosAccountFromMnemonic, getBIP044Path, getCircularReplacer, getECDSAPublicKey, getEvmAccountFromMnemonic, getKeypairFromMnemonic, getLogger, getProjectPackageManager, getProjectRootDir, getSolanaAccountFromMnemonic, hexToBytes, initLogger, isHexString, isHttpServiceReachable, logger2 as logger, parallel, pkgroot, safeMap, sequence, signWithECDSA, sleep, trim0x };
418
+ export { CmdExecutor, bytesToHex2 as bytesToHex, createLogger2 as createLogger, deploymentToEvmContract, dirname, ensure0x, extractUrlInfo, findDeployment, first, firstFactory, getAptosAccountFromMnemonic, getBIP044Path, getCircularReplacer, getEvmAccountFromMnemonic, getKeypairFromMnemonic, getLogger, getProjectPackageManager, getProjectRootDir, getSolanaAccountFromMnemonic, hexToBytes, initLogger, isHexString, isHttpServiceReachable, logger2 as logger, parallel, pkgroot, safeMap, sequence, sleep, trim0x };
436
419
  //# sourceMappingURL=out.js.map
437
420
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/account.ts","../src/logger.ts","../src/deployment.ts","../src/path.ts","../src/promise.ts","../src/array.ts","../src/format.ts","../src/ecdsa.ts"],"names":["path","format","createLogger","logger","ethers","dirname","getStackTrace","bytesToHex"],"mappings":"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","sourcesContent":["import { ChildProcess, SpawnOptions, spawn } from 'child_process'\nimport http, { RequestOptions } from 'http'\nimport path from 'path'\n\nexport * from './account'\nexport * from './logger'\nexport * from './deployment'\nexport * from './path'\nexport * from './promise'\nexport * from './types'\nexport * from './array'\nexport * from './format'\nexport * from './ecdsa'\n\nimport { sync as findUpSync } from 'find-up'\nimport kill from 'tree-kill'\nimport { Logger } from 'winston'\n\nimport { getLogger } from './logger'\n\nexport const logger = getLogger()\n\nexport async function sleep(timeout: number): Promise<void> {\n await new Promise((resolve) => setTimeout(resolve, timeout))\n}\n\nexport function getProjectPackageManager(cwd?: string): 'yarn' | 'npm' | 'pnpm' {\n const yarn = findUpSync('yarn.lock', { cwd })\n if (yarn !== undefined) return 'yarn'\n\n const npm = findUpSync('package-lock.json', { cwd })\n if (npm !== undefined) return 'npm'\n\n // pnpm\n const pnpm = findUpSync('pnpm-lock.yaml', { cwd })\n if (pnpm !== undefined) return 'pnpm'\n\n throw new Error('Cannot find package.json or yarn.lock')\n}\n\nexport function getProjectRootDir(cwd?: string): string {\n const yarn = findUpSync('yarn.lock', { cwd })\n if (yarn !== undefined) return path.dirname(yarn)\n\n const npm = findUpSync('package-lock.json', { cwd })\n if (npm !== undefined) return path.dirname(npm)\n\n const pnpm = findUpSync('pnpm-lock.yaml', { cwd })\n if (pnpm !== undefined) return path.dirname(pnpm)\n\n throw new Error('Cannot find yarn.lock or package-lock.json or pnpm-lock.yaml')\n}\n\nexport async function isHttpServiceReachable(\n host: string,\n port: number,\n timeout: number,\n path?: string\n): Promise<boolean> {\n return new Promise((resolve, _reject) => {\n const options: RequestOptions = {\n host,\n port,\n timeout,\n path,\n method: 'HEAD',\n }\n\n const request = http.request(options, (_response) => {\n resolve(true)\n })\n\n request.on('error', (_err) => {\n resolve(false)\n })\n\n request.end()\n })\n}\n\nexport function extractUrlInfo(url: string): {\n schema: 'http' | 'https'\n host: string\n port: string\n} {\n //TODO: handle the default port for http and https(443, 80)\n const m = url.match(/(?<schema>http|https):\\/\\/(?<host>.*):(?<port>\\d+)/)\n if (m?.groups?.host === undefined) {\n throw new Error(`Invalid url ${url}`)\n }\n\n return {\n schema: m.groups.schema as 'http' | 'https',\n host: m.groups.host,\n port: m.groups.port,\n }\n}\n\nexport class CmdExecutor {\n private currentProcess: ChildProcess | null = null\n\n private onFinish: Promise<void> | null = null\n\n public async executeCmd(\n command: string,\n args: string[],\n options: SpawnOptions,\n verbose = false,\n runningCheck?: { key: string; runningNotify: (running: boolean) => void },\n logger?: Logger\n ): Promise<void> {\n if (logger) {\n logger.info(`Running command: ${command} ${args.join(' ')}`)\n } else {\n console.log(`Running command: ${command} ${args.join(' ')}`)\n }\n return new Promise<void>((resolve, reject) => {\n let notified = false\n this.currentProcess = spawn(command, args, options)\n\n this.currentProcess.on('error', (error) => {\n throw new Error(`Failed to execute command: ${command} ${args.join(' ')} - ${error.message}`)\n })\n\n // Listen for standard output from the child process and print it to the console\n this.currentProcess.stdout?.on('data', (data: Buffer | string) => {\n if (runningCheck && !notified && data.toString().includes(runningCheck.key)) {\n runningCheck.runningNotify(true)\n notified = true\n }\n if (verbose && logger) {\n logger.info(data.toString())\n } else if (verbose) {\n process.stdout.write(data)\n }\n })\n\n // Listen for errors from the child process and print them to the console\n this.currentProcess.stderr?.on('data', (data: Buffer | string) => {\n if (logger) {\n logger.error(data.toString())\n } else {\n process.stderr.write(data)\n }\n })\n\n // Listen for the exit event of the child process and resolve the promise\n // if the child process exits normally (with code 0)\n this.currentProcess.on('exit', (code: number) => {\n if (code !== 0) {\n if (logger) {\n logger.info(`Command ${command} exited with code ${code}.`)\n } else {\n console.info(`Command ${command} exited with code ${code}.`)\n }\n reject(new Error(`${command} ${args.join(' ')}`))\n return\n }\n resolve()\n })\n })\n }\n\n public async interrupt(killDescendants = true): Promise<void> {\n if (this.currentProcess) {\n logger.info('Killing process: %s', this.currentProcess.pid)\n if (killDescendants) {\n if (this.currentProcess.pid !== undefined) {\n kill(this.currentProcess.pid)\n // the implementation of tree-kill is using spawn, which is async. So we need to wait for a while\n await sleep(2000)\n }\n } else {\n this.currentProcess.kill()\n }\n this.currentProcess = null\n }\n }\n}\n","import { bytesToHex } from '@noble/hashes/utils'\nimport { Keypair } from '@solana/web3.js'\nimport * as aptos from 'aptos'\nimport * as bip39 from 'bip39'\nimport * as ed25519HdKey from 'ed25519-hd-key'\nimport { ethers } from 'ethers'\n\nimport { ChainType } from '@layerzerolabs/lz-definitions'\n\nexport interface AccountMnemonic {\n mnemonic: string\n path: string\n privateKey?: string\n address?: string\n}\n\nexport function getBIP044Path(chainType: ChainType, account: number, change: number, index: number): string {\n // CAUTION: the path format is different for each chain\n // https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki\n //\n // The \"m/44'/637'/0'/0'/0'\" path is known as a hardened derivation path, while the \"m/44'/637'/0'/0/0\" path is a non-hardened derivation path.\n // The technical benefit of using a hardened derivation path is enhanced security.\n // In BIP32, a hardened derivation is denoted by an apostrophe ('), which indicates that the child private key should be derived in a way\n // that makes it computationally infeasible to derive the parent private key from it. This additional level of security\n // protects the mnemonic phrase and its derived private keys even if one of the derived private keys is compromised.\n // By using a hardened derivation path, like \"m/44'/637'/0'/0'/0'\", each level of the path requires a unique private key derivation,\n // making it more difficult to infer the parent private key from the child private key. This is particularly important when dealing with\n // hierarchical deterministic wallets, as it helps protect funds across multiple accounts or purposes.\n\n switch (chainType) {\n case ChainType.EVM:\n // https://github.com/ethers-io/ethers.js/blob/main/src.ts/wallet/hdwallet.ts\n return `m/44'/60'/${account}'/${change}/${index}`\n case ChainType.APTOS:\n // https://github.com/aptos-labs/aptos-core/blob/main/ecosystem/typescript/sdk/src/aptos_account.ts\n return `m/44'/637'/${account}'/${change}'/${index}'`\n case ChainType.SOLANA:\n // https://github.com/solana-labs/solana/blob/master/sdk/src/derivation_path.rs\n return `m/44'/501'/${account}'/${change}'`\n default:\n throw new Error(`Unsupported chain: ${chainType}`)\n }\n}\n\nexport function getEvmAccountFromMnemonic(mnemonic: string, path = \"m/44'/60'/0'/0/0\"): AccountMnemonic {\n const wallet = ethers.Wallet.fromMnemonic(mnemonic, path)\n return {\n mnemonic,\n path,\n privateKey: wallet.privateKey,\n address: wallet.address,\n }\n}\n\nexport function getAptosAccountFromMnemonic(mnemonic: string, path = \"m/44'/637'/0'/0'/0'\"): AccountMnemonic {\n //https://aptos.dev/guides/building-your-own-wallet/#creating-an-aptos-account\n if (!aptos.AptosAccount.isValidPath(path)) {\n throw new Error(`Invalid derivation path: ${path}`)\n }\n const normalizeMnemonics = mnemonic\n .trim()\n .split(/\\s+/)\n .map((part) => part.toLowerCase())\n .join(' ')\n {\n const { key } = aptos.derivePath(path, bytesToHex(bip39.mnemonicToSeedSync(normalizeMnemonics)))\n const account = new aptos.AptosAccount(new Uint8Array(key)).toPrivateKeyObject()\n return {\n mnemonic,\n path,\n privateKey: account.privateKeyHex,\n address: account.address,\n }\n }\n}\n\nexport function getSolanaAccountFromMnemonic(mnemonic: string, path = \"m/44'/501'/0'/0'\"): AccountMnemonic {\n const seed = bip39.mnemonicToSeedSync(mnemonic, '') // (mnemonic, password)\n const keyPair = Keypair.fromSeed(ed25519HdKey.derivePath(path, seed.toString('hex')).key)\n return {\n mnemonic,\n path,\n privateKey: ethers.utils.hexlify(keyPair.secretKey),\n address: keyPair.publicKey.toBase58(),\n }\n}\n\nexport function getKeypairFromMnemonic(chainType: ChainType, mnemonic: string, path?: string): AccountMnemonic {\n switch (chainType) {\n case ChainType.EVM:\n return getEvmAccountFromMnemonic(mnemonic, path)\n case ChainType.APTOS:\n return getAptosAccountFromMnemonic(mnemonic, path)\n case ChainType.SOLANA:\n return getSolanaAccountFromMnemonic(mnemonic, path)\n default:\n throw new Error(`Unsupported chain: ${chainType}`)\n }\n}\n","import * as winston from 'winston'\nimport { Logger, format } from 'winston'\n\nlet logger: Logger | undefined = undefined\n\nexport { Logger }\n\nfunction getStackTrace(): string | undefined {\n const oldLimit = Error.stackTraceLimit\n Error.stackTraceLimit = Infinity\n const retval = new Error().stack\n Error.stackTraceLimit = oldLimit\n return retval\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cyclic_object_value\nexport function getCircularReplacer(): (key: string, value: unknown) => unknown {\n const ancestors: unknown[] = []\n return function (this: unknown, _key: string, value: unknown) {\n if (typeof value !== 'object' || value === null) {\n return value\n }\n // `this` is the object that value is contained in,\n // i.e., its direct parent.\n while (ancestors.length > 0 && ancestors.at(-1) !== this) {\n ancestors.pop()\n }\n if (ancestors.includes(value)) {\n return '[Circular]'\n }\n ancestors.push(value)\n return value\n }\n}\n\nfunction extractCallerInfo(line: string): string {\n for (const pattern of [/\\((.*?:\\d+:\\d+)\\)$/, /at (.*?:\\d+:\\d+)$/]) {\n const m = line.match(pattern)\n if (m === null) {\n continue\n }\n const [, fileInfoLine] = m\n return fileInfoLine\n }\n return '<unknown>'\n}\n\nconst logFormat = format.printf(\n (info: {\n level: string\n message: string\n timestamp?: string\n metadata?: {\n pretty?: boolean\n format?: string\n }\n }) => {\n if (info.level.toUpperCase() !== 'ERROR' && info.level.toUpperCase() !== 'WARN') {\n return `${info.timestamp} ${info.level.toUpperCase()}: ${info.message}`\n }\n const stack = getStackTrace() ?? ''\n\n const stackLines = stack.split('\\n')\n const index =\n stackLines.findIndex((line) => {\n return line.match(/create-logger.js/)\n }) + 1\n\n let fileInfo = '<unknown>'\n if (stackLines.length > index) {\n const line = stackLines[index]\n fileInfo = extractCallerInfo(line)\n }\n\n const formats: string[] = []\n if (fileInfo !== '<unknown>') {\n formats.push(fileInfo)\n }\n\n const { pretty, format } = info.metadata ?? {}\n const spaces = pretty === true ? 2 : undefined\n const value =\n typeof info.message === 'string'\n ? info.message\n : JSON.stringify(info.message, getCircularReplacer(), spaces)\n const message = format !== undefined ? format.replace(/%s/g, value) : value\n\n return [...formats, message].map((x) => `${info.timestamp} ${info.level.toUpperCase()}: ${x}`).join('\\n')\n }\n)\n\nconst loggerFormat = format.combine(\n format.timestamp({ format: 'YY-MM-DD HH:mm:ss' }),\n format.splat(),\n format.metadata({ fillExcept: ['level', 'timestamp', 'message'] }),\n logFormat,\n format.colorize({\n all: true,\n })\n)\n\nexport function initLogger(level: string): void {\n if (!logger) {\n logger = createLogger(level)\n }\n}\n\nexport function createLogger(level: string): Logger {\n const logger = winston.createLogger({\n level,\n format: loggerFormat,\n transports: [new winston.transports.Console()],\n })\n return logger\n}\n\nexport function getLogger(): Logger {\n initLogger(process.env.LZ_LOG ?? 'info')\n if (!logger) {\n throw new Error('Logger is not initialized')\n }\n return logger\n}\n\nconst exportsObject: {\n getCircularReplacer?: (key: unknown, value: unknown) => unknown\n} = {}\n\nif (process.env.NODE_ENV === 'test') {\n exportsObject.getCircularReplacer = getCircularReplacer\n}\nexport default exportsObject\n","import { ethers } from 'ethers'\n\nimport {\n Chain,\n EndpointId,\n EndpointVersion,\n Network,\n isNetworkEndpointIdSupported,\n networkToChain,\n networkToEndpointId,\n} from '@layerzerolabs/lz-definitions'\n\nexport interface Deployment {\n /** Name of the contract deployment. */\n name: string\n\n /** Optional endpoint identifier. */\n compatibleVersions: EndpointVersion[]\n\n /** Network of deployment. */\n network: Network\n\n /** Optional contract source. */\n source?: string\n\n /** Address of deployed contract. */\n address: string\n\n /** Optional contract ABI. */\n abi?: string\n\n /** Optional contract bytecode. */\n bytecode?: string\n}\n\n/**\n * Find the matching deployments based on the given options\n * @param deployments list of deployments\n * @param nameOrAddress contract name\n * @param options options to match against\n * @returns Deployment\n */\nexport function findDeployment(\n deployments: Deployment[],\n nameOrAddress: string,\n options: { chain?: Chain; source?: string; network?: Network; endpointId?: EndpointId }\n): Deployment | undefined {\n return deployments.find((deployment) => {\n let hasMatchingNameOrAddress = deployment.name === nameOrAddress\n if (!hasMatchingNameOrAddress && ethers.utils.isAddress(nameOrAddress)) {\n hasMatchingNameOrAddress =\n ethers.utils.getAddress(deployment.address) === ethers.utils.getAddress(nameOrAddress)\n }\n const hasMatchingChain = options.chain == null || options.chain === networkToChain(deployment.network)\n const hasMatchingNetwork = options.network === undefined || options.network === deployment.network\n const hasMatchingSource = options.source === undefined || options.source === deployment.source\n let hasMatchingEndpoint = true\n if (options.endpointId != null) {\n const compatibleEndpoints = deployment.compatibleVersions.map((v) => {\n if (isNetworkEndpointIdSupported(deployment.network, v)) {\n return networkToEndpointId(deployment.network, v)\n }\n return undefined\n })\n hasMatchingEndpoint = compatibleEndpoints.includes(options.endpointId)\n }\n return (\n hasMatchingNameOrAddress &&\n hasMatchingChain &&\n hasMatchingNetwork &&\n hasMatchingEndpoint &&\n hasMatchingSource\n )\n })\n}\n\ntype ContractType = { [key in string]: ethers.Contract }\nconst contractCache: ContractType = {}\nexport function deploymentToEvmContract<T extends ethers.Contract>(\n deployment: Deployment,\n provider?: ethers.providers.Provider\n): T {\n const key = `${deployment.network}-${deployment.address}`\n if (!(key in contractCache)) {\n if (deployment.abi === undefined || deployment.bytecode === undefined) {\n throw new Error('Deployment does not have ABI or bytecode')\n }\n const Contract = new ethers.ContractFactory(deployment.abi, deployment.bytecode)\n contractCache[key] = Contract.attach(deployment.address)\n }\n if (!provider) {\n return contractCache[key] as T\n }\n return contractCache[key].connect(provider) as T\n}\n","import { createRequire } from 'module'\n/**\n * A function to return dirname of a path\n * @param path\n * @returns\n */\nexport function dirname(path: string): string {\n const match = path.match(/(.*)([\\\\/][^\\\\/]+)[/\\\\]?$/)\n const [, basePath] = match ?? []\n const dirname = typeof basePath !== 'undefined' ? basePath : path\n return dirname\n}\n\nfunction getStackTrace(stackTraceLimit = Infinity): string | undefined {\n const oldLimit = Error.stackTraceLimit\n Error.stackTraceLimit = stackTraceLimit\n const retval = new Error().stack\n Error.stackTraceLimit = oldLimit\n return retval\n}\n\nfunction getCaller(): string | undefined {\n const lines = (getStackTrace(10) ?? '').split('\\n')\n // Error:\n // at getStackTrace\n // at getCaller\n // at <caller of getCaller>\n // at <expected caller>\n if (lines.length > 1 + 1 + 1 + 1) {\n const line = lines[4]\n const m = line.match(/^.*\\(([^:]*)[^)]*\\)/)\n if (m) {\n return m[1]\n }\n }\n return undefined\n}\n\n/**\n * return the root path of a package\n * @param packageName\n * @param relativeToPath\n * @returns\n */\nexport function pkgroot(packageName: string, relativeToPath?: string): string {\n if (relativeToPath === undefined) {\n relativeToPath = getCaller()\n if (relativeToPath === undefined) {\n relativeToPath = __filename\n }\n }\n\n const filepath = createRequire(relativeToPath).resolve(`${packageName}/package.json`)\n const packagePath = dirname(filepath)\n // https://github.com/yarnpkg/berry/blob/f67dda88fe9d0a892c44af923cbbc50bfe454e0e/packages/docusaurus/docs/advanced/03-pnp/pnp-spec.md\n // In order to properly represent packages listing peer dependencies, Yarn relies on a concept\n // called Virtual Packages. Their most notable property is that they all have different paths\n // (so that Node.js instantiates them as many times as needed), while still being baked by the\n // same concrete folder on disk.\n return packagePath.replace(/.yarn\\/([^/]*\\/)?(__virtual__|\\$\\$virtual)\\/[^/]*\\/\\d*\\//, '')\n}\n","// This file copy from repo:devtools and is located in packages/devtools/src/common/promise.ts\n\nimport assert from 'assert'\n\n/**\n * Generic type for a hybrid (sync / async) factory\n * that generates an instance of `TOutput` based on arguments of type `TInput`\n *\n * `TInput` represents the list of all function arguments that need to be passed to the factory:\n *\n * ```typescript\n * const mySyncFactory: Factory<[number, boolean], string> = (num: number, bool: boolean): string => \"hello\"\n *\n * const mySyncFactory: Factory<[], string> = async () => \"hello\"\n * ```\n *\n * The hybrid aspect just makes it easier for implementers - if the logic is synchronous,\n * this type will not force any extra `async`.\n */\nexport type Factory<TInput extends unknown[], TOutput> = (...input: TInput) => TOutput | Promise<TOutput>\n\n/**\n * Helper type for argumentless factories a.k.a. tasks\n */\ntype Task<T> = Factory<[], T>\n\n/**\n * Executes tasks in sequence, waiting for each one to finish before starting the next one\n *\n * Will resolve with the output of all tasks or reject with the first rejection.\n *\n * @param {Task<T>[]} tasks\n * @returns {Promise<T[]>}\n */\nexport const sequence = async <T>(tasks: Task<T>[]): Promise<T[]> => {\n const collector: T[] = []\n\n for (const task of tasks) {\n collector.push(await task())\n }\n\n return collector\n}\n\n/**\n * Executes tasks in parallel\n *\n * Will resolve with the output of all tasks or reject with the any rejection.\n *\n * @param {Task<T>[]} tasks\n * @returns {Promise<T[]>}\n */\nexport const parallel = async <T>(tasks: Task<T>[]): Promise<T[]> => Promise.all(tasks.map(async (task) => task()))\n\n/**\n * Executes tasks in a sequence until one resolves.\n *\n * Will resolve with the output of the first task that resolves\n * or reject with the last rejection.\n *\n * Will reject immediatelly if no tasks have been passed\n *\n * @param {Task<T>[]} tasks\n * @returns {Promise<T>}\n */\nexport const first = async <T>(tasks: Task<T>[]): Promise<T> => {\n assert(tasks.length !== 0, `Must have at least one task for first()`)\n\n let lastError: unknown\n\n for (const task of tasks) {\n try {\n return await task()\n } catch (error) {\n lastError = error\n }\n }\n\n throw lastError\n}\n\n/**\n * Helper utility for currying first() - creating a function\n * that behaves like first() but accepts arguments that will be passed to the factory functions\n *\n * @param {Factory<TInput, TOutput>[]} factories\n * @returns {Factory<TInput, TOutput>}\n */\nexport const firstFactory =\n <TInput extends unknown[], TOutput>(...factories: Factory<TInput, TOutput>[]): Factory<TInput, TOutput> =>\n async (...input) =>\n first(factories.map((factory) => async () => factory(...input)))\n\n/**\n * Represents a type that excludes promises.\n * If the input type is a promise, the resulting type is `never`.\n * Otherwise, it is the same as the input type.\n */\nexport type NonPromise<T> = T extends Promise<unknown> ? never : T\n","/**\n * Calls a defined callback function on each element of an array, and returns an array that contains the results.\n * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array.\n * @returns\n */\nexport function safeMap<T, R>(elements: T[], callbackfn: (item: T, index: number) => R): [R[], Error | undefined] {\n const result: R[] = []\n try {\n for (let i = 0; i < elements.length; i++) {\n const rv = callbackfn(elements[i], i)\n result.push(rv)\n }\n return [result, undefined]\n } catch (e) {\n return [result, e as Error]\n }\n}\n","/**\n * A function to convert Uint8Array to hex string\n * @param bytes Uint8Array\n * @returns hex string\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n return Buffer.from(bytes).toString('hex')\n}\n\n/**\n * A function to convert hex string to Uint8Array\n * @param hex hex string\n * @returns Uint8Array\n */\nexport function hexToBytes(hex: string): Uint8Array {\n const value = hex.replace(/^0x/i, '')\n const len = value.length + 1 - ((value.length + 1) % 2)\n return Uint8Array.from(Buffer.from(value.padStart(len, '0'), 'hex'))\n}\n\n/**\n * A function to trim the prefix 0x from a hex string\n * @param hex hex string\n * @returns hex string without 0x prefix\n */\nexport function trim0x(hex: string): string {\n return hex.replace(/^0[xX]/, '')\n}\n\n/**\n * A function to ensure the prefix 0x from a hex string\n * @param hex hex string\n * @returns hex string with 0x prefix\n */\nexport function ensure0x(hex: string): string {\n return hex.startsWith('0x') || hex.startsWith('0X') ? hex : `0x${hex}`\n}\n\n/**\n * A function to check if a string is a hex string\n * @param value\n * @returns\n */\nexport function isHexString(value: string): boolean {\n return /^(0x)?[0-9a-fA-F]+$/.test(value)\n}\n","import { hexlify } from '@ethersproject/bytes'\nimport { getPublicKey, sign } from '@noble/secp256k1'\n\nexport { recoverPublicKey } from '@noble/secp256k1'\n\nexport async function signWithECDSA(\n data: Buffer,\n privateKey: string\n): Promise<{ signature: Uint8Array; recoveryId: number }> {\n const [signature, recoveryId] = await sign(data, privateKey.replace('0x', ''), {\n canonical: true,\n recovered: true,\n der: false,\n })\n return {\n signature,\n recoveryId,\n }\n}\n\nexport function getECDSAPublicKey(privateKey: string): string {\n // remove the compression byte\n return hexlify(getPublicKey(privateKey.replace('0x', '')).subarray(1))\n}\n"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/account.ts","../src/logger.ts","../src/deployment.ts","../src/path.ts","../src/promise.ts","../src/array.ts","../src/format.ts"],"names":["path","format","createLogger","logger","ethers","dirname","getStackTrace","bytesToHex"],"mappings":"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","sourcesContent":["import { ChildProcess, SpawnOptions, spawn } from 'child_process'\nimport http, { RequestOptions } from 'http'\nimport path from 'path'\n\nexport * from './account'\nexport * from './logger'\nexport * from './deployment'\nexport * from './path'\nexport * from './promise'\nexport * from './types'\nexport * from './array'\nexport * from './format'\n\nimport { sync as findUpSync } from 'find-up'\nimport kill from 'tree-kill'\nimport { Logger } from 'winston'\n\nimport { getLogger } from './logger'\n\nexport const logger = getLogger()\n\nexport async function sleep(timeout: number): Promise<void> {\n await new Promise((resolve) => setTimeout(resolve, timeout))\n}\n\nexport function getProjectPackageManager(cwd?: string): 'yarn' | 'npm' | 'pnpm' {\n const yarn = findUpSync('yarn.lock', { cwd })\n if (yarn !== undefined) return 'yarn'\n\n const npm = findUpSync('package-lock.json', { cwd })\n if (npm !== undefined) return 'npm'\n\n // pnpm\n const pnpm = findUpSync('pnpm-lock.yaml', { cwd })\n if (pnpm !== undefined) return 'pnpm'\n\n throw new Error('Cannot find package.json or yarn.lock')\n}\n\nexport function getProjectRootDir(cwd?: string): string {\n const yarn = findUpSync('yarn.lock', { cwd })\n if (yarn !== undefined) return path.dirname(yarn)\n\n const npm = findUpSync('package-lock.json', { cwd })\n if (npm !== undefined) return path.dirname(npm)\n\n const pnpm = findUpSync('pnpm-lock.yaml', { cwd })\n if (pnpm !== undefined) return path.dirname(pnpm)\n\n throw new Error('Cannot find yarn.lock or package-lock.json or pnpm-lock.yaml')\n}\n\nexport async function isHttpServiceReachable(\n host: string,\n port: number,\n timeout: number,\n path?: string\n): Promise<boolean> {\n return new Promise((resolve, _reject) => {\n const options: RequestOptions = {\n host,\n port,\n timeout,\n path,\n method: 'HEAD',\n }\n\n const request = http.request(options, (_response) => {\n resolve(true)\n })\n\n request.on('error', (_err) => {\n resolve(false)\n })\n\n request.end()\n })\n}\n\nexport function extractUrlInfo(url: string): {\n schema: 'http' | 'https'\n host: string\n port: string\n} {\n //TODO: handle the default port for http and https(443, 80)\n const m = url.match(/(?<schema>http|https):\\/\\/(?<host>.*):(?<port>\\d+)/)\n if (m?.groups?.host === undefined) {\n throw new Error(`Invalid url ${url}`)\n }\n\n return {\n schema: m.groups.schema as 'http' | 'https',\n host: m.groups.host,\n port: m.groups.port,\n }\n}\n\nexport class CmdExecutor {\n private currentProcess: ChildProcess | null = null\n\n private onFinish: Promise<void> | null = null\n\n public async executeCmd(\n command: string,\n args: string[],\n options: SpawnOptions,\n verbose = false,\n runningCheck?: { key: string; runningNotify: (running: boolean) => void },\n logger?: Logger\n ): Promise<void> {\n if (logger) {\n logger.info(`Running command: ${command} ${args.join(' ')}`)\n } else {\n console.log(`Running command: ${command} ${args.join(' ')}`)\n }\n return new Promise<void>((resolve, reject) => {\n let notified = false\n this.currentProcess = spawn(command, args, options)\n\n this.currentProcess.on('error', (error) => {\n throw new Error(`Failed to execute command: ${command} ${args.join(' ')} - ${error.message}`)\n })\n\n // Listen for standard output from the child process and print it to the console\n this.currentProcess.stdout?.on('data', (data: Buffer | string) => {\n if (runningCheck && !notified && data.toString().includes(runningCheck.key)) {\n runningCheck.runningNotify(true)\n notified = true\n }\n if (verbose && logger) {\n logger.info(data.toString())\n } else if (verbose) {\n process.stdout.write(data)\n }\n })\n\n // Listen for errors from the child process and print them to the console\n this.currentProcess.stderr?.on('data', (data: Buffer | string) => {\n if (logger) {\n logger.error(data.toString())\n } else {\n process.stderr.write(data)\n }\n })\n\n // Listen for the exit event of the child process and resolve the promise\n // if the child process exits normally (with code 0)\n this.currentProcess.on('exit', (code: number) => {\n if (code !== 0) {\n if (logger) {\n logger.info(`Command ${command} exited with code ${code}.`)\n } else {\n console.info(`Command ${command} exited with code ${code}.`)\n }\n reject(new Error(`${command} ${args.join(' ')}`))\n return\n }\n resolve()\n })\n })\n }\n\n public async interrupt(killDescendants = true): Promise<void> {\n if (this.currentProcess) {\n logger.info('Killing process: %s', this.currentProcess.pid)\n if (killDescendants) {\n if (this.currentProcess.pid !== undefined) {\n kill(this.currentProcess.pid)\n // the implementation of tree-kill is using spawn, which is async. So we need to wait for a while\n await sleep(2000)\n }\n } else {\n this.currentProcess.kill()\n }\n this.currentProcess = null\n }\n }\n}\n","import { bytesToHex } from '@noble/hashes/utils'\nimport { Keypair } from '@solana/web3.js'\nimport * as aptos from 'aptos'\nimport * as bip39 from 'bip39'\nimport * as ed25519HdKey from 'ed25519-hd-key'\nimport { ethers } from 'ethers'\n\nimport { ChainType } from '@layerzerolabs/lz-definitions'\n\nexport interface AccountMnemonic {\n mnemonic: string\n path: string\n privateKey?: string\n address?: string\n}\n\nexport function getBIP044Path(chainType: ChainType, account: number, change: number, index: number): string {\n // CAUTION: the path format is different for each chain\n // https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki\n //\n // The \"m/44'/637'/0'/0'/0'\" path is known as a hardened derivation path, while the \"m/44'/637'/0'/0/0\" path is a non-hardened derivation path.\n // The technical benefit of using a hardened derivation path is enhanced security.\n // In BIP32, a hardened derivation is denoted by an apostrophe ('), which indicates that the child private key should be derived in a way\n // that makes it computationally infeasible to derive the parent private key from it. This additional level of security\n // protects the mnemonic phrase and its derived private keys even if one of the derived private keys is compromised.\n // By using a hardened derivation path, like \"m/44'/637'/0'/0'/0'\", each level of the path requires a unique private key derivation,\n // making it more difficult to infer the parent private key from the child private key. This is particularly important when dealing with\n // hierarchical deterministic wallets, as it helps protect funds across multiple accounts or purposes.\n\n switch (chainType) {\n case ChainType.EVM:\n // https://github.com/ethers-io/ethers.js/blob/main/src.ts/wallet/hdwallet.ts\n return `m/44'/60'/${account}'/${change}/${index}`\n case ChainType.APTOS:\n // https://github.com/aptos-labs/aptos-core/blob/main/ecosystem/typescript/sdk/src/aptos_account.ts\n return `m/44'/637'/${account}'/${change}'/${index}'`\n case ChainType.SOLANA:\n // https://github.com/solana-labs/solana/blob/master/sdk/src/derivation_path.rs\n return `m/44'/501'/${account}'/${change}'`\n default:\n throw new Error(`Unsupported chain: ${chainType}`)\n }\n}\n\nexport function getEvmAccountFromMnemonic(mnemonic: string, path = \"m/44'/60'/0'/0/0\"): AccountMnemonic {\n const wallet = ethers.Wallet.fromMnemonic(mnemonic, path)\n return {\n mnemonic,\n path,\n privateKey: wallet.privateKey,\n address: wallet.address,\n }\n}\n\nexport function getAptosAccountFromMnemonic(mnemonic: string, path = \"m/44'/637'/0'/0'/0'\"): AccountMnemonic {\n //https://aptos.dev/guides/building-your-own-wallet/#creating-an-aptos-account\n if (!aptos.AptosAccount.isValidPath(path)) {\n throw new Error(`Invalid derivation path: ${path}`)\n }\n const normalizeMnemonics = mnemonic\n .trim()\n .split(/\\s+/)\n .map((part) => part.toLowerCase())\n .join(' ')\n {\n const { key } = aptos.derivePath(path, bytesToHex(bip39.mnemonicToSeedSync(normalizeMnemonics)))\n const account = new aptos.AptosAccount(new Uint8Array(key)).toPrivateKeyObject()\n return {\n mnemonic,\n path,\n privateKey: account.privateKeyHex,\n address: account.address,\n }\n }\n}\n\nexport function getSolanaAccountFromMnemonic(mnemonic: string, path = \"m/44'/501'/0'/0'\"): AccountMnemonic {\n const seed = bip39.mnemonicToSeedSync(mnemonic, '') // (mnemonic, password)\n const keyPair = Keypair.fromSeed(ed25519HdKey.derivePath(path, seed.toString('hex')).key)\n return {\n mnemonic,\n path,\n privateKey: ethers.utils.hexlify(keyPair.secretKey),\n address: keyPair.publicKey.toBase58(),\n }\n}\n\nexport function getKeypairFromMnemonic(chainType: ChainType, mnemonic: string, path?: string): AccountMnemonic {\n switch (chainType) {\n case ChainType.EVM:\n return getEvmAccountFromMnemonic(mnemonic, path)\n case ChainType.APTOS:\n return getAptosAccountFromMnemonic(mnemonic, path)\n case ChainType.SOLANA:\n return getSolanaAccountFromMnemonic(mnemonic, path)\n default:\n throw new Error(`Unsupported chain: ${chainType}`)\n }\n}\n","import * as winston from 'winston'\nimport { Logger, format } from 'winston'\n\nlet logger: Logger | undefined = undefined\n\nexport { Logger }\n\nfunction getStackTrace(): string | undefined {\n const oldLimit = Error.stackTraceLimit\n Error.stackTraceLimit = Infinity\n const retval = new Error().stack\n Error.stackTraceLimit = oldLimit\n return retval\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cyclic_object_value\nexport function getCircularReplacer(): (key: string, value: unknown) => unknown {\n const ancestors: unknown[] = []\n return function (this: unknown, _key: string, value: unknown) {\n if (typeof value !== 'object' || value === null) {\n return value\n }\n // `this` is the object that value is contained in,\n // i.e., its direct parent.\n while (ancestors.length > 0 && ancestors.at(-1) !== this) {\n ancestors.pop()\n }\n if (ancestors.includes(value)) {\n return '[Circular]'\n }\n ancestors.push(value)\n return value\n }\n}\n\nfunction extractCallerInfo(line: string): string {\n for (const pattern of [/\\((.*?:\\d+:\\d+)\\)$/, /at (.*?:\\d+:\\d+)$/]) {\n const m = line.match(pattern)\n if (m === null) {\n continue\n }\n const [, fileInfoLine] = m\n return fileInfoLine\n }\n return '<unknown>'\n}\n\nconst logFormat = format.printf(\n (info: {\n level: string\n message: string\n timestamp?: string\n metadata?: {\n pretty?: boolean\n format?: string\n }\n }) => {\n if (info.level.toUpperCase() !== 'ERROR' && info.level.toUpperCase() !== 'WARN') {\n return `${info.timestamp} ${info.level.toUpperCase()}: ${info.message}`\n }\n const stack = getStackTrace() ?? ''\n\n const stackLines = stack.split('\\n')\n const index =\n stackLines.findIndex((line) => {\n return line.match(/create-logger.js/)\n }) + 1\n\n let fileInfo = '<unknown>'\n if (stackLines.length > index) {\n const line = stackLines[index]\n fileInfo = extractCallerInfo(line)\n }\n\n const formats: string[] = []\n if (fileInfo !== '<unknown>') {\n formats.push(fileInfo)\n }\n\n const { pretty, format } = info.metadata ?? {}\n const spaces = pretty === true ? 2 : undefined\n const value =\n typeof info.message === 'string'\n ? info.message\n : JSON.stringify(info.message, getCircularReplacer(), spaces)\n const message = format !== undefined ? format.replace(/%s/g, value) : value\n\n return [...formats, message].map((x) => `${info.timestamp} ${info.level.toUpperCase()}: ${x}`).join('\\n')\n }\n)\n\nconst loggerFormat = format.combine(\n format.timestamp({ format: 'YY-MM-DD HH:mm:ss' }),\n format.splat(),\n format.metadata({ fillExcept: ['level', 'timestamp', 'message'] }),\n logFormat,\n format.colorize({\n all: true,\n })\n)\n\nexport function initLogger(level: string): void {\n if (!logger) {\n logger = createLogger(level)\n }\n}\n\nexport function createLogger(level: string): Logger {\n const logger = winston.createLogger({\n level,\n format: loggerFormat,\n transports: [new winston.transports.Console()],\n })\n return logger\n}\n\nexport function getLogger(): Logger {\n initLogger(process.env.LZ_LOG ?? 'info')\n if (!logger) {\n throw new Error('Logger is not initialized')\n }\n return logger\n}\n\nconst exportsObject: {\n getCircularReplacer?: (key: unknown, value: unknown) => unknown\n} = {}\n\nif (process.env.NODE_ENV === 'test') {\n exportsObject.getCircularReplacer = getCircularReplacer\n}\nexport default exportsObject\n","import { ethers } from 'ethers'\n\nimport {\n Chain,\n EndpointId,\n EndpointVersion,\n Network,\n isNetworkEndpointIdSupported,\n networkToChain,\n networkToEndpointId,\n} from '@layerzerolabs/lz-definitions'\n\nexport interface Deployment {\n /** Name of the contract deployment. */\n name: string\n\n /** Optional endpoint identifier. */\n compatibleVersions: EndpointVersion[]\n\n /** Network of deployment. */\n network: Network\n\n /** Optional contract source. */\n source?: string\n\n /** Address of deployed contract. */\n address: string\n\n /** Optional contract ABI. */\n abi?: string\n\n /** Optional contract bytecode. */\n bytecode?: string\n}\n\n/**\n * Find the matching deployments based on the given options\n * @param deployments list of deployments\n * @param nameOrAddress contract name\n * @param options options to match against\n * @returns Deployment\n */\nexport function findDeployment(\n deployments: Deployment[],\n nameOrAddress: string,\n options: { chain?: Chain; source?: string; network?: Network; endpointId?: EndpointId }\n): Deployment | undefined {\n return deployments.find((deployment) => {\n let hasMatchingNameOrAddress = deployment.name === nameOrAddress\n if (!hasMatchingNameOrAddress && ethers.utils.isAddress(nameOrAddress)) {\n hasMatchingNameOrAddress =\n ethers.utils.getAddress(deployment.address) === ethers.utils.getAddress(nameOrAddress)\n }\n const hasMatchingChain = options.chain == null || options.chain === networkToChain(deployment.network)\n const hasMatchingNetwork = options.network === undefined || options.network === deployment.network\n const hasMatchingSource = options.source === undefined || options.source === deployment.source\n let hasMatchingEndpoint = true\n if (options.endpointId != null) {\n const compatibleEndpoints = deployment.compatibleVersions.map((v) => {\n if (isNetworkEndpointIdSupported(deployment.network, v)) {\n return networkToEndpointId(deployment.network, v)\n }\n return undefined\n })\n hasMatchingEndpoint = compatibleEndpoints.includes(options.endpointId)\n }\n return (\n hasMatchingNameOrAddress &&\n hasMatchingChain &&\n hasMatchingNetwork &&\n hasMatchingEndpoint &&\n hasMatchingSource\n )\n })\n}\n\ntype ContractType = { [key in string]: ethers.Contract }\nconst contractCache: ContractType = {}\nexport function deploymentToEvmContract<T extends ethers.Contract>(\n deployment: Deployment,\n provider?: ethers.providers.Provider\n): T {\n const key = `${deployment.network}-${deployment.address}`\n if (!(key in contractCache)) {\n if (deployment.abi === undefined || deployment.bytecode === undefined) {\n throw new Error('Deployment does not have ABI or bytecode')\n }\n const Contract = new ethers.ContractFactory(deployment.abi, deployment.bytecode)\n contractCache[key] = Contract.attach(deployment.address)\n }\n if (!provider) {\n return contractCache[key] as T\n }\n return contractCache[key].connect(provider) as T\n}\n","import { createRequire } from 'module'\n/**\n * A function to return dirname of a path\n * @param path\n * @returns\n */\nexport function dirname(path: string): string {\n const match = path.match(/(.*)([\\\\/][^\\\\/]+)[/\\\\]?$/)\n const [, basePath] = match ?? []\n const dirname = typeof basePath !== 'undefined' ? basePath : path\n return dirname\n}\n\nfunction getStackTrace(stackTraceLimit = Infinity): string | undefined {\n const oldLimit = Error.stackTraceLimit\n Error.stackTraceLimit = stackTraceLimit\n const retval = new Error().stack\n Error.stackTraceLimit = oldLimit\n return retval\n}\n\nfunction getCaller(): string | undefined {\n const lines = (getStackTrace(10) ?? '').split('\\n')\n // Error:\n // at getStackTrace\n // at getCaller\n // at <caller of getCaller>\n // at <expected caller>\n if (lines.length > 1 + 1 + 1 + 1) {\n const line = lines[4]\n const m = line.match(/^.*\\(([^:]*)[^)]*\\)/)\n if (m) {\n return m[1]\n }\n }\n return undefined\n}\n\n/**\n * return the root path of a package\n * @param packageName\n * @param relativeToPath\n * @returns\n */\nexport function pkgroot(packageName: string, relativeToPath?: string): string {\n if (relativeToPath === undefined) {\n relativeToPath = getCaller()\n if (relativeToPath === undefined) {\n relativeToPath = __filename\n }\n }\n\n const filepath = createRequire(relativeToPath).resolve(`${packageName}/package.json`)\n const packagePath = dirname(filepath)\n // https://github.com/yarnpkg/berry/blob/f67dda88fe9d0a892c44af923cbbc50bfe454e0e/packages/docusaurus/docs/advanced/03-pnp/pnp-spec.md\n // In order to properly represent packages listing peer dependencies, Yarn relies on a concept\n // called Virtual Packages. Their most notable property is that they all have different paths\n // (so that Node.js instantiates them as many times as needed), while still being baked by the\n // same concrete folder on disk.\n return packagePath.replace(/.yarn\\/([^/]*\\/)?(__virtual__|\\$\\$virtual)\\/[^/]*\\/\\d*\\//, '')\n}\n","// This file copy from repo:devtools and is located in packages/devtools/src/common/promise.ts\n\nimport assert from 'assert'\n\n/**\n * Generic type for a hybrid (sync / async) factory\n * that generates an instance of `TOutput` based on arguments of type `TInput`\n *\n * `TInput` represents the list of all function arguments that need to be passed to the factory:\n *\n * ```typescript\n * const mySyncFactory: Factory<[number, boolean], string> = (num: number, bool: boolean): string => \"hello\"\n *\n * const mySyncFactory: Factory<[], string> = async () => \"hello\"\n * ```\n *\n * The hybrid aspect just makes it easier for implementers - if the logic is synchronous,\n * this type will not force any extra `async`.\n */\nexport type Factory<TInput extends unknown[], TOutput> = (...input: TInput) => TOutput | Promise<TOutput>\n\n/**\n * Helper type for argumentless factories a.k.a. tasks\n */\ntype Task<T> = Factory<[], T>\n\n/**\n * Executes tasks in sequence, waiting for each one to finish before starting the next one\n *\n * Will resolve with the output of all tasks or reject with the first rejection.\n *\n * @param {Task<T>[]} tasks\n * @returns {Promise<T[]>}\n */\nexport const sequence = async <T>(tasks: Task<T>[]): Promise<T[]> => {\n const collector: T[] = []\n\n for (const task of tasks) {\n collector.push(await task())\n }\n\n return collector\n}\n\n/**\n * Executes tasks in parallel\n *\n * Will resolve with the output of all tasks or reject with the any rejection.\n *\n * @param {Task<T>[]} tasks\n * @returns {Promise<T[]>}\n */\nexport const parallel = async <T>(tasks: Task<T>[]): Promise<T[]> => Promise.all(tasks.map(async (task) => task()))\n\n/**\n * Executes tasks in a sequence until one resolves.\n *\n * Will resolve with the output of the first task that resolves\n * or reject with the last rejection.\n *\n * Will reject immediatelly if no tasks have been passed\n *\n * @param {Task<T>[]} tasks\n * @returns {Promise<T>}\n */\nexport const first = async <T>(tasks: Task<T>[]): Promise<T> => {\n assert(tasks.length !== 0, `Must have at least one task for first()`)\n\n let lastError: unknown\n\n for (const task of tasks) {\n try {\n return await task()\n } catch (error) {\n lastError = error\n }\n }\n\n throw lastError\n}\n\n/**\n * Helper utility for currying first() - creating a function\n * that behaves like first() but accepts arguments that will be passed to the factory functions\n *\n * @param {Factory<TInput, TOutput>[]} factories\n * @returns {Factory<TInput, TOutput>}\n */\nexport const firstFactory =\n <TInput extends unknown[], TOutput>(...factories: Factory<TInput, TOutput>[]): Factory<TInput, TOutput> =>\n async (...input) =>\n first(factories.map((factory) => async () => factory(...input)))\n\n/**\n * Represents a type that excludes promises.\n * If the input type is a promise, the resulting type is `never`.\n * Otherwise, it is the same as the input type.\n */\nexport type NonPromise<T> = T extends Promise<unknown> ? never : T\n","/**\n * Calls a defined callback function on each element of an array, and returns an array that contains the results.\n * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array.\n * @returns\n */\nexport function safeMap<T, R>(elements: T[], callbackfn: (item: T, index: number) => R): [R[], Error | undefined] {\n const result: R[] = []\n try {\n for (let i = 0; i < elements.length; i++) {\n const rv = callbackfn(elements[i], i)\n result.push(rv)\n }\n return [result, undefined]\n } catch (e) {\n return [result, e as Error]\n }\n}\n","/**\n * A function to convert Uint8Array to hex string\n * @param bytes Uint8Array\n * @returns hex string\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n return Buffer.from(bytes).toString('hex')\n}\n\n/**\n * A function to convert hex string to Uint8Array\n * @param hex hex string\n * @returns Uint8Array\n */\nexport function hexToBytes(hex: string): Uint8Array {\n const value = hex.replace(/^0x/i, '')\n const len = value.length + 1 - ((value.length + 1) % 2)\n return Uint8Array.from(Buffer.from(value.padStart(len, '0'), 'hex'))\n}\n\n/**\n * A function to trim the prefix 0x from a hex string\n * @param hex hex string\n * @returns hex string without 0x prefix\n */\nexport function trim0x(hex: string): string {\n return hex.replace(/^0[xX]/, '')\n}\n\n/**\n * A function to ensure the prefix 0x from a hex string\n * @param hex hex string\n * @returns hex string with 0x prefix\n */\nexport function ensure0x(hex: string): string {\n return hex.startsWith('0x') || hex.startsWith('0X') ? hex : `0x${hex}`\n}\n\n/**\n * A function to check if a string is a hex string\n * @param value\n * @returns\n */\nexport function isHexString(value: string): boolean {\n return /^(0x)?[0-9a-fA-F]+$/.test(value)\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@layerzerolabs/lz-utilities",
3
- "version": "2.3.17",
3
+ "version": "2.3.19",
4
4
  "license": "BUSL-1.1",
5
5
  "exports": {
6
6
  "types": "./dist/index.d.ts",
@@ -21,7 +21,7 @@
21
21
  "dependencies": {
22
22
  "@ethersproject/bytes": "^5.7.0",
23
23
  "@ethersproject/providers": "^5.7.0",
24
- "@layerzerolabs/lz-definitions": "^2.3.17",
24
+ "@layerzerolabs/lz-definitions": "^2.3.19",
25
25
  "@noble/hashes": "^1.3.2",
26
26
  "@noble/secp256k1": "^1.7.1",
27
27
  "@solana/web3.js": "^1.91.8",
@@ -36,8 +36,8 @@
36
36
  },
37
37
  "devDependencies": {
38
38
  "@jest/globals": "^29.7.0",
39
- "@layerzerolabs/tsup-config-next": "^2.3.17",
40
- "@layerzerolabs/typescript-config-next": "^2.3.17",
39
+ "@layerzerolabs/tsup-config-next": "^2.3.19",
40
+ "@layerzerolabs/typescript-config-next": "^2.3.19",
41
41
  "@types/glob": "^8.1.0",
42
42
  "@types/jest": "^29.5.10",
43
43
  "@types/node": "^20.10.5",