@metamask-previews/java-tron-up 0.0.0-preview-73cf60340 → 0.0.0-preview-838d6b234
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/dist/install.cjs +3 -2
- package/dist/install.cjs.map +1 -1
- package/dist/install.mjs +3 -2
- package/dist/install.mjs.map +1 -1
- package/package.json +2 -16
- package/dist/index.cjs +0 -13
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -3
- package/dist/index.d.cts.map +0 -1
- package/dist/index.d.mts +0 -3
- package/dist/index.d.mts.map +0 -1
- package/dist/index.mjs +0 -2
- package/dist/index.mjs.map +0 -1
package/dist/install.cjs
CHANGED
|
@@ -223,7 +223,7 @@ async function installJavaRuntime({ cacheDirectory = getJavaTronCacheDirectory()
|
|
|
223
223
|
}
|
|
224
224
|
await (0, promises_1.mkdir)((0, node_path_1.dirname)(cacheRoot), { recursive: true });
|
|
225
225
|
await (0, promises_1.rename)(tempRoot, cacheRoot);
|
|
226
|
-
return javaBinary.replace(tempRoot, cacheRoot);
|
|
226
|
+
return javaBinary.replace(tempRoot, () => cacheRoot);
|
|
227
227
|
}
|
|
228
228
|
catch (error) {
|
|
229
229
|
await (0, promises_1.rm)(tempRoot, { force: true, recursive: true });
|
|
@@ -286,9 +286,10 @@ if (result.error) {
|
|
|
286
286
|
|
|
287
287
|
if (result.signal) {
|
|
288
288
|
process.kill(process.pid, result.signal);
|
|
289
|
+
return;
|
|
289
290
|
}
|
|
290
291
|
|
|
291
|
-
process.exit(result.status ??
|
|
292
|
+
process.exit(result.status ?? 1);
|
|
292
293
|
`);
|
|
293
294
|
await (0, promises_1.chmod)(binaryPath, 0o755);
|
|
294
295
|
return binaryPath;
|
package/dist/install.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.cjs","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import-x/no-nodejs-modules, no-restricted-globals */\nimport { spawn, spawnSync } from 'node:child_process';\nimport { createHash } from 'node:crypto';\nimport {\n createWriteStream,\n existsSync,\n readdirSync,\n readFileSync,\n statSync,\n} from 'node:fs';\nimport {\n chmod,\n mkdir,\n readFile,\n rename,\n rm,\n unlink,\n writeFile,\n} from 'node:fs/promises';\nimport { request as requestHttp } from 'node:http';\nimport { request as requestHttps } from 'node:https';\nimport { arch as osArch, homedir, platform as osPlatform } from 'node:os';\nimport { dirname, join, relative } from 'node:path';\nimport { pipeline } from 'node:stream/promises';\n\nconst JAVA_TRON_CACHE_NAMESPACE = 'java-tron-up';\nconst FULL_NODE_CACHE_NAMESPACE = 'fullnode';\nconst JAVA_CACHE_NAMESPACE = 'java';\n\nexport type JavaTronArtifactConfig = {\n platforms: Record<string, JavaTronArtifactPlatformConfig | undefined>;\n version?: string;\n};\n\nexport type JavaTronArtifactPlatformConfig = {\n checksum: string;\n size?: number;\n url: string;\n};\n\nexport type JavaTronJavaRuntimeConfig = JavaTronArtifactConfig;\n\nexport type JavaTronInstallOptions = {\n binDirectory?: string;\n cacheDirectory?: string;\n cwd?: string;\n fullNode?: JavaTronArtifactConfig;\n javaBinary?: string;\n javaRuntime?: JavaTronJavaRuntimeConfig;\n platform?: string;\n};\n\nexport type JavaTronInstallResult = {\n binaryPath: string;\n cacheHit: boolean;\n checksum: string;\n fullNodeJar: string;\n javaBinary: string;\n version?: string;\n};\n\nexport type JavaTronInstallDependencies = {\n downloadFile?: (url: string, destination: string) => Promise<void>;\n extractArchive?: (archivePath: string, destination: string) => Promise<void>;\n};\n\ntype JavaTronPackageJson = {\n 'java-tron-up'?: JavaTronPackageJsonConfig;\n javaTronUp?: JavaTronPackageJsonConfig;\n javatronup?: JavaTronPackageJsonConfig;\n};\n\ntype JavaTronPackageJsonConfig = Pick<\n JavaTronInstallOptions,\n 'binDirectory' | 'cacheDirectory' | 'fullNode' | 'javaRuntime'\n>;\n\nexport const JAVA_TRON_DEFAULT_FULL_NODE: JavaTronArtifactConfig = {\n version: 'GreatVoyage-v4.8.1',\n platforms: {\n 'darwin-arm64': {\n checksum:\n '694431860ee76fc986ed495f9ec19f29ed3bd752a394386e7b3b9886b2292f59',\n size: 202_460_186,\n url: 'https://github.com/tronprotocol/java-tron/releases/download/GreatVoyage-v4.8.1/FullNode-aarch64.jar',\n },\n 'darwin-x64': {\n checksum:\n '0e67b2fe75d7077750e73c4fa20725c6e9824657275d96be256ae5da681f9945',\n size: 145_863_030,\n url: 'https://github.com/tronprotocol/java-tron/releases/download/GreatVoyage-v4.8.1/FullNode.jar',\n },\n 'linux-arm64': {\n checksum:\n '694431860ee76fc986ed495f9ec19f29ed3bd752a394386e7b3b9886b2292f59',\n size: 202_460_186,\n url: 'https://github.com/tronprotocol/java-tron/releases/download/GreatVoyage-v4.8.1/FullNode-aarch64.jar',\n },\n 'linux-x64': {\n checksum:\n '0e67b2fe75d7077750e73c4fa20725c6e9824657275d96be256ae5da681f9945',\n size: 145_863_030,\n url: 'https://github.com/tronprotocol/java-tron/releases/download/GreatVoyage-v4.8.1/FullNode.jar',\n },\n },\n};\n\nexport const JAVA_TRON_DEFAULT_JAVA_RUNTIME: JavaTronJavaRuntimeConfig = {\n version: 'zulu-java8-x64-java17-arm64',\n platforms: {\n 'darwin-arm64': {\n checksum:\n 'f2bd5afaaaa4c23eb4bf2c78913c7eb7d3d228e44209ffec652fb72388a2f25c',\n size: 192_646_000,\n url: 'https://cdn.azul.com/zulu/bin/zulu17.66.19-ca-jdk17.0.19-macosx_aarch64.tar.gz',\n },\n 'darwin-x64': {\n checksum:\n '4ac2efcae5d49afe1f2419ceb09bd3fb4af9df8411ab80184795960fc18fb5f6',\n size: 41_346_500,\n url: 'https://cdn.azul.com/zulu/bin/zulu8.94.0.17-ca-jre8.0.492-macosx_x64.tar.gz',\n },\n 'linux-arm64': {\n checksum:\n 'c17d5657a673c0cfc099e9d803ed30498495894d7359fd1064d463093ed9850b',\n size: 199_156_000,\n url: 'https://cdn.azul.com/zulu/bin/zulu17.66.19-ca-jdk17.0.19-linux_aarch64.tar.gz',\n },\n 'linux-x64': {\n checksum:\n '39abf1dc6798b5f6b8e9dca4e78994da316a3f990e444c2c483ea04f7f882cf2',\n size: 42_504_400,\n url: 'https://cdn.azul.com/zulu/bin/zulu8.94.0.17-ca-jre8.0.492-linux_x64.tar.gz',\n },\n },\n};\n\nexport function getJavaTronCacheDirectory({\n cwd = process.cwd(),\n homeDirectory = homedir(),\n}: {\n cwd?: string;\n homeDirectory?: string;\n} = {}): string {\n const yarnRcPath = join(cwd, '.yarnrc.yml');\n\n try {\n const yarnRc = readFileSync(yarnRcPath, 'utf8');\n if (/^\\s*enableGlobalCache:\\s*true\\s*$/mu.test(yarnRc)) {\n return join(homeDirectory, '.cache', 'metamask');\n }\n } catch (error) {\n if (!isFileMissingError(error)) {\n console.warn(\n `Warning: Error reading ${yarnRcPath}, using local java-tron-up cache:`,\n error,\n );\n }\n }\n\n return join(cwd, '.metamask', 'cache');\n}\n\nexport function readJavaTronInstallOptionsFromPackageJson({\n cwd = process.cwd(),\n packageJsonPath = join(cwd, 'package.json'),\n}: {\n cwd?: string;\n packageJsonPath?: string;\n} = {}): JavaTronInstallOptions {\n const packageJson = JSON.parse(\n readFileSync(packageJsonPath, 'utf8'),\n ) as JavaTronPackageJson;\n const config =\n packageJson.javaTronUp ??\n packageJson.javatronup ??\n packageJson['java-tron-up'];\n const options: JavaTronInstallOptions = {};\n\n if (config?.binDirectory) {\n options.binDirectory = config.binDirectory;\n }\n if (config?.cacheDirectory) {\n options.cacheDirectory = config.cacheDirectory;\n }\n if (config?.fullNode) {\n options.fullNode = config.fullNode;\n }\n if (config?.javaRuntime) {\n options.javaRuntime = config.javaRuntime;\n }\n\n return options;\n}\n\nexport function parseJavaTronInstallCliOptions(\n args: string[],\n): JavaTronInstallOptions {\n const options: JavaTronInstallOptions = {};\n const fullNode: Partial<JavaTronArtifactPlatformConfig> = {};\n const javaRuntime: Partial<JavaTronArtifactPlatformConfig> = {};\n\n for (let index = 0; index < args.length; index += 1) {\n const arg = args[index];\n const value = args[index + 1];\n\n switch (arg) {\n case '--bin-directory':\n options.binDirectory = readCliValue(arg, value);\n index += 1;\n break;\n case '--cache-directory':\n options.cacheDirectory = readCliValue(arg, value);\n index += 1;\n break;\n case '--full-node-checksum':\n fullNode.checksum = readCliValue(arg, value);\n index += 1;\n break;\n case '--full-node-url':\n fullNode.url = readCliValue(arg, value);\n index += 1;\n break;\n case '--java-runtime-checksum':\n javaRuntime.checksum = readCliValue(arg, value);\n index += 1;\n break;\n case '--java-runtime-url':\n javaRuntime.url = readCliValue(arg, value);\n index += 1;\n break;\n case '--platform':\n options.platform = readCliValue(arg, value);\n index += 1;\n break;\n default:\n throw new Error(`Unknown java-tron-up install option: ${arg}`);\n }\n }\n\n if (fullNode.url || fullNode.checksum) {\n options.fullNode = {\n platforms: {\n current: requireCompletePlatformConfig(\n fullNode,\n 'FullNode CLI options',\n ),\n },\n };\n }\n\n if (javaRuntime.url || javaRuntime.checksum) {\n options.javaRuntime = {\n platforms: {\n current: requireCompletePlatformConfig(\n javaRuntime,\n 'Java runtime CLI options',\n ),\n },\n };\n }\n\n return options;\n}\n\nexport async function installJavaTron(\n options: JavaTronInstallOptions = {},\n dependencies: JavaTronInstallDependencies = {},\n): Promise<JavaTronInstallResult> {\n const cwd = options.cwd ?? process.cwd();\n const cacheDirectory =\n options.cacheDirectory ?? getJavaTronCacheDirectory({ cwd });\n const binDirectory =\n options.binDirectory ?? join(cwd, 'node_modules', '.bin');\n const platformKey = options.platform ?? getPlatformKey();\n const fullNodeConfig = resolvePlatformConfig(\n options.fullNode ?? JAVA_TRON_DEFAULT_FULL_NODE,\n platformKey,\n 'java-tron FullNode',\n );\n const javaBinary =\n options.javaBinary ??\n (await installJavaRuntime(\n {\n cacheDirectory,\n javaRuntime: options.javaRuntime ?? JAVA_TRON_DEFAULT_JAVA_RUNTIME,\n platform: platformKey,\n },\n dependencies,\n ));\n const fullNodeResult = await installFullNodeJar(\n {\n cacheDirectory,\n config: fullNodeConfig,\n },\n dependencies,\n );\n const binaryPath = await installJavaTronBinary({\n binDirectory,\n fullNodeJar: fullNodeResult.fullNodeJar,\n javaBinary,\n });\n\n return {\n binaryPath,\n cacheHit: fullNodeResult.cacheHit,\n checksum: fullNodeConfig.checksum,\n fullNodeJar: fullNodeResult.fullNodeJar,\n javaBinary,\n version: (options.fullNode ?? JAVA_TRON_DEFAULT_FULL_NODE).version,\n };\n}\n\nexport async function cleanJavaTronCache(\n options: Pick<JavaTronInstallOptions, 'cacheDirectory' | 'cwd'> = {},\n): Promise<void> {\n const cwd = options.cwd ?? process.cwd();\n const cacheDirectory =\n options.cacheDirectory ?? getJavaTronCacheDirectory({ cwd });\n\n await rm(join(cacheDirectory, JAVA_TRON_CACHE_NAMESPACE), {\n force: true,\n recursive: true,\n });\n}\n\nexport async function installJavaRuntime(\n {\n cacheDirectory = getJavaTronCacheDirectory(),\n javaRuntime = JAVA_TRON_DEFAULT_JAVA_RUNTIME,\n platform = getPlatformKey(),\n }: {\n cacheDirectory?: string;\n javaRuntime?: JavaTronJavaRuntimeConfig;\n platform?: string;\n } = {},\n dependencies: JavaTronInstallDependencies = {},\n): Promise<string> {\n const platformConfig = resolvePlatformConfig(\n javaRuntime,\n platform,\n 'java-tron Java runtime',\n );\n const cacheKey = getCacheKey(platformConfig);\n const cacheRoot = join(\n cacheDirectory,\n JAVA_TRON_CACHE_NAMESPACE,\n JAVA_CACHE_NAMESPACE,\n cacheKey,\n );\n const existingJavaBinary = findJavaBinary(cacheRoot);\n\n if (existingJavaBinary) {\n return existingJavaBinary;\n }\n\n const tempRoot = `${cacheRoot}.downloading`;\n const archivePath = join(tempRoot, 'java-runtime.tar.gz');\n const downloadFile = dependencies.downloadFile ?? downloadFileFromUrl;\n const extractArchive = dependencies.extractArchive ?? extractTarGzArchive;\n\n await rm(tempRoot, { force: true, recursive: true });\n await rm(cacheRoot, { force: true, recursive: true });\n await mkdir(tempRoot, { recursive: true });\n\n try {\n await downloadFile(platformConfig.url, archivePath);\n await verifyFileChecksum(\n archivePath,\n platformConfig.checksum,\n 'Downloaded Java runtime',\n );\n await extractArchive(archivePath, tempRoot);\n\n const javaBinary = findJavaBinary(tempRoot);\n if (!javaBinary) {\n throw new Error(\n `Java runtime archive for ${platform} did not contain bin/java.`,\n );\n }\n\n await mkdir(dirname(cacheRoot), { recursive: true });\n await rename(tempRoot, cacheRoot);\n\n return javaBinary.replace(tempRoot, cacheRoot);\n } catch (error) {\n await rm(tempRoot, { force: true, recursive: true });\n await rm(cacheRoot, { force: true, recursive: true });\n throw error;\n }\n}\n\nasync function installFullNodeJar(\n {\n cacheDirectory,\n config,\n }: {\n cacheDirectory: string;\n config: JavaTronArtifactPlatformConfig;\n },\n dependencies: JavaTronInstallDependencies,\n): Promise<{ cacheHit: boolean; fullNodeJar: string }> {\n const cacheKey = getCacheKey(config);\n const cacheRoot = join(\n cacheDirectory,\n JAVA_TRON_CACHE_NAMESPACE,\n FULL_NODE_CACHE_NAMESPACE,\n cacheKey,\n );\n const fullNodeJar = join(cacheRoot, 'FullNode.jar');\n\n if (existsSync(fullNodeJar)) {\n await verifyFileChecksum(\n fullNodeJar,\n config.checksum,\n 'Cached java-tron FullNode',\n );\n return { cacheHit: true, fullNodeJar };\n }\n\n const tempRoot = `${cacheRoot}.downloading`;\n const tempFullNodeJar = join(tempRoot, 'FullNode.jar');\n const downloadFile = dependencies.downloadFile ?? downloadFileFromUrl;\n\n await rm(tempRoot, { force: true, recursive: true });\n await rm(cacheRoot, { force: true, recursive: true });\n await mkdir(tempRoot, { recursive: true });\n\n try {\n await downloadFile(config.url, tempFullNodeJar);\n await verifyFileChecksum(\n tempFullNodeJar,\n config.checksum,\n 'Downloaded java-tron FullNode',\n );\n await mkdir(dirname(cacheRoot), { recursive: true });\n await rename(tempRoot, cacheRoot);\n\n return { cacheHit: false, fullNodeJar };\n } catch (error) {\n await rm(tempRoot, { force: true, recursive: true });\n await rm(cacheRoot, { force: true, recursive: true });\n throw error;\n }\n}\n\nasync function installJavaTronBinary({\n binDirectory,\n fullNodeJar,\n javaBinary,\n}: {\n binDirectory: string;\n fullNodeJar: string;\n javaBinary: string;\n}): Promise<string> {\n const binaryPath = join(binDirectory, 'java-tron');\n const relativeJavaBinary = relative(binDirectory, javaBinary);\n const relativeFullNodeJar = relative(binDirectory, fullNodeJar);\n\n await mkdir(binDirectory, { recursive: true });\n await unlink(binaryPath).catch((error) => {\n if (!isFileMissingError(error)) {\n throw error;\n }\n });\n await writeFile(\n binaryPath,\n `#!/usr/bin/env node\nconst { spawnSync } = require('node:child_process');\nconst path = require('node:path');\n\nconst javaBinary = path.resolve(__dirname, ${JSON.stringify(relativeJavaBinary)});\nconst fullNodeJar = path.resolve(__dirname, ${JSON.stringify(relativeFullNodeJar)});\nconst result = spawnSync(javaBinary, ['-jar', fullNodeJar, ...process.argv.slice(2)], {\n stdio: 'inherit',\n});\n\nif (result.error) {\n console.error(result.error.message);\n process.exit(1);\n}\n\nif (result.signal) {\n process.kill(process.pid, result.signal);\n}\n\nprocess.exit(result.status ?? 0);\n`,\n );\n await chmod(binaryPath, 0o755);\n\n return binaryPath;\n}\n\nfunction resolvePlatformConfig(\n config: JavaTronArtifactConfig,\n platform: string,\n label: string,\n): JavaTronArtifactPlatformConfig {\n const platformConfig = config.platforms[platform] ?? config.platforms.current;\n\n if (!platformConfig) {\n throw new Error(`No ${label} is configured for ${platform}.`);\n }\n\n return platformConfig;\n}\n\nfunction requireCompletePlatformConfig(\n config: Partial<JavaTronArtifactPlatformConfig>,\n label: string,\n): JavaTronArtifactPlatformConfig {\n if (!config.url || !config.checksum) {\n throw new Error(`${label} require both a URL and a checksum.`);\n }\n\n return {\n checksum: config.checksum,\n url: config.url,\n };\n}\n\nfunction getCacheKey(config: JavaTronArtifactPlatformConfig): string {\n return createHash('sha256')\n .update(`${config.url}:${config.checksum}`)\n .digest('hex');\n}\n\nasync function verifyFileChecksum(\n filePath: string,\n expectedChecksum: string,\n label: string,\n): Promise<void> {\n const checksum = createHash('sha256')\n .update(await readFile(filePath))\n .digest('hex');\n\n if (checksum !== expectedChecksum) {\n throw new Error(\n `${label} checksum mismatch. Expected ${expectedChecksum}, got ${checksum}.`,\n );\n }\n}\n\nasync function downloadFileFromUrl(\n url: string,\n destination: string,\n): Promise<void> {\n await mkdir(dirname(destination), { recursive: true });\n await pipeline(\n await openDownloadStream(new URL(url)),\n createWriteStream(destination),\n );\n}\n\nasync function openDownloadStream(\n url: URL,\n redirectsRemaining = 5,\n): Promise<NodeJS.ReadableStream> {\n const request = url.protocol === 'http:' ? requestHttp : requestHttps;\n\n return await new Promise((resolvePromise, rejectPromise) => {\n const req = request(url, (response) => {\n const { headers, statusCode, statusMessage } = response;\n\n if (\n statusCode &&\n statusCode >= 300 &&\n statusCode < 400 &&\n headers.location\n ) {\n response.resume();\n if (redirectsRemaining <= 0) {\n rejectPromise(new Error(`Too many redirects downloading ${url}`));\n return;\n }\n\n openDownloadStream(\n new URL(headers.location, url),\n redirectsRemaining - 1,\n )\n .then(resolvePromise)\n .catch(rejectPromise);\n return;\n }\n\n if (!statusCode || statusCode < 200 || statusCode >= 300) {\n response.resume();\n rejectPromise(\n new Error(\n `Request to ${url} failed with ${statusCode ?? 'unknown'} ${\n statusMessage ?? ''\n }`.trim(),\n ),\n );\n return;\n }\n\n resolvePromise(response);\n });\n\n req.on('error', rejectPromise);\n req.end();\n });\n}\n\nasync function extractTarGzArchive(\n archivePath: string,\n destination: string,\n): Promise<void> {\n await runCommand('tar', ['-xzf', archivePath, '-C', destination]);\n}\n\nasync function runCommand(command: string, args: string[]): Promise<void> {\n await new Promise<void>((resolvePromise, rejectPromise) => {\n const child = spawn(command, args, {\n shell: false,\n stdio: ['ignore', 'ignore', 'pipe'],\n });\n let stderr = '';\n\n child.stderr.on('data', (chunk) => {\n stderr += chunk.toString();\n });\n child.on('error', rejectPromise);\n child.on('close', (code) => {\n if (code === 0) {\n resolvePromise();\n return;\n }\n\n rejectPromise(\n new Error(\n `${command} ${args.join(' ')} exited with code ${code}: ${stderr}`,\n ),\n );\n });\n });\n}\n\nfunction findJavaBinary(root: string): string | undefined {\n if (!isDirectory(root)) {\n return undefined;\n }\n\n const candidate = join(root, 'bin', 'java');\n if (isFile(candidate)) {\n return candidate;\n }\n\n for (const entry of readdirSync(root)) {\n const child = join(root, entry);\n if (!isDirectory(child)) {\n continue;\n }\n\n const found = findJavaBinary(child);\n if (found) {\n return found;\n }\n }\n\n return undefined;\n}\n\nfunction isDirectory(path: string): boolean {\n try {\n return statSync(path).isDirectory();\n } catch {\n return false;\n }\n}\n\nfunction isFile(path: string): boolean {\n try {\n return statSync(path).isFile();\n } catch {\n return false;\n }\n}\n\nfunction getPlatformKey(): string {\n return `${osPlatform()}-${normalizeSystemArchitecture()}`;\n}\n\nfunction normalizeSystemArchitecture(architecture = osArch()): string {\n if (architecture === 'x64' && osPlatform() === 'darwin') {\n const result = spawnSync('sysctl', ['-n', 'sysctl.proc_translated'], {\n encoding: 'utf8',\n shell: false,\n stdio: ['ignore', 'pipe', 'ignore'],\n });\n if (result.stdout.trim() === '1') {\n return 'arm64';\n }\n }\n\n return architecture;\n}\n\nfunction readCliValue(option: string, value: string | undefined): string {\n if (!value || value.startsWith('--')) {\n throw new Error(`${option} requires a value.`);\n }\n return value;\n}\n\nfunction isFileMissingError(error: unknown): boolean {\n return (\n typeof error === 'object' &&\n error !== null &&\n Object.prototype.hasOwnProperty.call(error, 'code') &&\n (error as NodeJS.ErrnoException).code === 'ENOENT'\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"install.cjs","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import-x/no-nodejs-modules, no-restricted-globals */\nimport { spawn, spawnSync } from 'node:child_process';\nimport { createHash } from 'node:crypto';\nimport {\n createWriteStream,\n existsSync,\n readdirSync,\n readFileSync,\n statSync,\n} from 'node:fs';\nimport {\n chmod,\n mkdir,\n readFile,\n rename,\n rm,\n unlink,\n writeFile,\n} from 'node:fs/promises';\nimport { request as requestHttp } from 'node:http';\nimport { request as requestHttps } from 'node:https';\nimport { arch as osArch, homedir, platform as osPlatform } from 'node:os';\nimport { dirname, join, relative } from 'node:path';\nimport { pipeline } from 'node:stream/promises';\n\nconst JAVA_TRON_CACHE_NAMESPACE = 'java-tron-up';\nconst FULL_NODE_CACHE_NAMESPACE = 'fullnode';\nconst JAVA_CACHE_NAMESPACE = 'java';\n\nexport type JavaTronArtifactConfig = {\n platforms: Record<string, JavaTronArtifactPlatformConfig | undefined>;\n version?: string;\n};\n\nexport type JavaTronArtifactPlatformConfig = {\n checksum: string;\n size?: number;\n url: string;\n};\n\nexport type JavaTronJavaRuntimeConfig = JavaTronArtifactConfig;\n\nexport type JavaTronInstallOptions = {\n binDirectory?: string;\n cacheDirectory?: string;\n cwd?: string;\n fullNode?: JavaTronArtifactConfig;\n javaBinary?: string;\n javaRuntime?: JavaTronJavaRuntimeConfig;\n platform?: string;\n};\n\nexport type JavaTronInstallResult = {\n binaryPath: string;\n cacheHit: boolean;\n checksum: string;\n fullNodeJar: string;\n javaBinary: string;\n version?: string;\n};\n\nexport type JavaTronInstallDependencies = {\n downloadFile?: (url: string, destination: string) => Promise<void>;\n extractArchive?: (archivePath: string, destination: string) => Promise<void>;\n};\n\ntype JavaTronPackageJson = {\n 'java-tron-up'?: JavaTronPackageJsonConfig;\n javaTronUp?: JavaTronPackageJsonConfig;\n javatronup?: JavaTronPackageJsonConfig;\n};\n\ntype JavaTronPackageJsonConfig = Pick<\n JavaTronInstallOptions,\n 'binDirectory' | 'cacheDirectory' | 'fullNode' | 'javaRuntime'\n>;\n\nexport const JAVA_TRON_DEFAULT_FULL_NODE: JavaTronArtifactConfig = {\n version: 'GreatVoyage-v4.8.1',\n platforms: {\n 'darwin-arm64': {\n checksum:\n '694431860ee76fc986ed495f9ec19f29ed3bd752a394386e7b3b9886b2292f59',\n size: 202_460_186,\n url: 'https://github.com/tronprotocol/java-tron/releases/download/GreatVoyage-v4.8.1/FullNode-aarch64.jar',\n },\n 'darwin-x64': {\n checksum:\n '0e67b2fe75d7077750e73c4fa20725c6e9824657275d96be256ae5da681f9945',\n size: 145_863_030,\n url: 'https://github.com/tronprotocol/java-tron/releases/download/GreatVoyage-v4.8.1/FullNode.jar',\n },\n 'linux-arm64': {\n checksum:\n '694431860ee76fc986ed495f9ec19f29ed3bd752a394386e7b3b9886b2292f59',\n size: 202_460_186,\n url: 'https://github.com/tronprotocol/java-tron/releases/download/GreatVoyage-v4.8.1/FullNode-aarch64.jar',\n },\n 'linux-x64': {\n checksum:\n '0e67b2fe75d7077750e73c4fa20725c6e9824657275d96be256ae5da681f9945',\n size: 145_863_030,\n url: 'https://github.com/tronprotocol/java-tron/releases/download/GreatVoyage-v4.8.1/FullNode.jar',\n },\n },\n};\n\nexport const JAVA_TRON_DEFAULT_JAVA_RUNTIME: JavaTronJavaRuntimeConfig = {\n version: 'zulu-java8-x64-java17-arm64',\n platforms: {\n 'darwin-arm64': {\n checksum:\n 'f2bd5afaaaa4c23eb4bf2c78913c7eb7d3d228e44209ffec652fb72388a2f25c',\n size: 192_646_000,\n url: 'https://cdn.azul.com/zulu/bin/zulu17.66.19-ca-jdk17.0.19-macosx_aarch64.tar.gz',\n },\n 'darwin-x64': {\n checksum:\n '4ac2efcae5d49afe1f2419ceb09bd3fb4af9df8411ab80184795960fc18fb5f6',\n size: 41_346_500,\n url: 'https://cdn.azul.com/zulu/bin/zulu8.94.0.17-ca-jre8.0.492-macosx_x64.tar.gz',\n },\n 'linux-arm64': {\n checksum:\n 'c17d5657a673c0cfc099e9d803ed30498495894d7359fd1064d463093ed9850b',\n size: 199_156_000,\n url: 'https://cdn.azul.com/zulu/bin/zulu17.66.19-ca-jdk17.0.19-linux_aarch64.tar.gz',\n },\n 'linux-x64': {\n checksum:\n '39abf1dc6798b5f6b8e9dca4e78994da316a3f990e444c2c483ea04f7f882cf2',\n size: 42_504_400,\n url: 'https://cdn.azul.com/zulu/bin/zulu8.94.0.17-ca-jre8.0.492-linux_x64.tar.gz',\n },\n },\n};\n\nexport function getJavaTronCacheDirectory({\n cwd = process.cwd(),\n homeDirectory = homedir(),\n}: {\n cwd?: string;\n homeDirectory?: string;\n} = {}): string {\n const yarnRcPath = join(cwd, '.yarnrc.yml');\n\n try {\n const yarnRc = readFileSync(yarnRcPath, 'utf8');\n if (/^\\s*enableGlobalCache:\\s*true\\s*$/mu.test(yarnRc)) {\n return join(homeDirectory, '.cache', 'metamask');\n }\n } catch (error) {\n if (!isFileMissingError(error)) {\n console.warn(\n `Warning: Error reading ${yarnRcPath}, using local java-tron-up cache:`,\n error,\n );\n }\n }\n\n return join(cwd, '.metamask', 'cache');\n}\n\nexport function readJavaTronInstallOptionsFromPackageJson({\n cwd = process.cwd(),\n packageJsonPath = join(cwd, 'package.json'),\n}: {\n cwd?: string;\n packageJsonPath?: string;\n} = {}): JavaTronInstallOptions {\n const packageJson = JSON.parse(\n readFileSync(packageJsonPath, 'utf8'),\n ) as JavaTronPackageJson;\n const config =\n packageJson.javaTronUp ??\n packageJson.javatronup ??\n packageJson['java-tron-up'];\n const options: JavaTronInstallOptions = {};\n\n if (config?.binDirectory) {\n options.binDirectory = config.binDirectory;\n }\n if (config?.cacheDirectory) {\n options.cacheDirectory = config.cacheDirectory;\n }\n if (config?.fullNode) {\n options.fullNode = config.fullNode;\n }\n if (config?.javaRuntime) {\n options.javaRuntime = config.javaRuntime;\n }\n\n return options;\n}\n\nexport function parseJavaTronInstallCliOptions(\n args: string[],\n): JavaTronInstallOptions {\n const options: JavaTronInstallOptions = {};\n const fullNode: Partial<JavaTronArtifactPlatformConfig> = {};\n const javaRuntime: Partial<JavaTronArtifactPlatformConfig> = {};\n\n for (let index = 0; index < args.length; index += 1) {\n const arg = args[index];\n const value = args[index + 1];\n\n switch (arg) {\n case '--bin-directory':\n options.binDirectory = readCliValue(arg, value);\n index += 1;\n break;\n case '--cache-directory':\n options.cacheDirectory = readCliValue(arg, value);\n index += 1;\n break;\n case '--full-node-checksum':\n fullNode.checksum = readCliValue(arg, value);\n index += 1;\n break;\n case '--full-node-url':\n fullNode.url = readCliValue(arg, value);\n index += 1;\n break;\n case '--java-runtime-checksum':\n javaRuntime.checksum = readCliValue(arg, value);\n index += 1;\n break;\n case '--java-runtime-url':\n javaRuntime.url = readCliValue(arg, value);\n index += 1;\n break;\n case '--platform':\n options.platform = readCliValue(arg, value);\n index += 1;\n break;\n default:\n throw new Error(`Unknown java-tron-up install option: ${arg}`);\n }\n }\n\n if (fullNode.url || fullNode.checksum) {\n options.fullNode = {\n platforms: {\n current: requireCompletePlatformConfig(\n fullNode,\n 'FullNode CLI options',\n ),\n },\n };\n }\n\n if (javaRuntime.url || javaRuntime.checksum) {\n options.javaRuntime = {\n platforms: {\n current: requireCompletePlatformConfig(\n javaRuntime,\n 'Java runtime CLI options',\n ),\n },\n };\n }\n\n return options;\n}\n\nexport async function installJavaTron(\n options: JavaTronInstallOptions = {},\n dependencies: JavaTronInstallDependencies = {},\n): Promise<JavaTronInstallResult> {\n const cwd = options.cwd ?? process.cwd();\n const cacheDirectory =\n options.cacheDirectory ?? getJavaTronCacheDirectory({ cwd });\n const binDirectory =\n options.binDirectory ?? join(cwd, 'node_modules', '.bin');\n const platformKey = options.platform ?? getPlatformKey();\n const fullNodeConfig = resolvePlatformConfig(\n options.fullNode ?? JAVA_TRON_DEFAULT_FULL_NODE,\n platformKey,\n 'java-tron FullNode',\n );\n const javaBinary =\n options.javaBinary ??\n (await installJavaRuntime(\n {\n cacheDirectory,\n javaRuntime: options.javaRuntime ?? JAVA_TRON_DEFAULT_JAVA_RUNTIME,\n platform: platformKey,\n },\n dependencies,\n ));\n const fullNodeResult = await installFullNodeJar(\n {\n cacheDirectory,\n config: fullNodeConfig,\n },\n dependencies,\n );\n const binaryPath = await installJavaTronBinary({\n binDirectory,\n fullNodeJar: fullNodeResult.fullNodeJar,\n javaBinary,\n });\n\n return {\n binaryPath,\n cacheHit: fullNodeResult.cacheHit,\n checksum: fullNodeConfig.checksum,\n fullNodeJar: fullNodeResult.fullNodeJar,\n javaBinary,\n version: (options.fullNode ?? JAVA_TRON_DEFAULT_FULL_NODE).version,\n };\n}\n\nexport async function cleanJavaTronCache(\n options: Pick<JavaTronInstallOptions, 'cacheDirectory' | 'cwd'> = {},\n): Promise<void> {\n const cwd = options.cwd ?? process.cwd();\n const cacheDirectory =\n options.cacheDirectory ?? getJavaTronCacheDirectory({ cwd });\n\n await rm(join(cacheDirectory, JAVA_TRON_CACHE_NAMESPACE), {\n force: true,\n recursive: true,\n });\n}\n\nexport async function installJavaRuntime(\n {\n cacheDirectory = getJavaTronCacheDirectory(),\n javaRuntime = JAVA_TRON_DEFAULT_JAVA_RUNTIME,\n platform = getPlatformKey(),\n }: {\n cacheDirectory?: string;\n javaRuntime?: JavaTronJavaRuntimeConfig;\n platform?: string;\n } = {},\n dependencies: JavaTronInstallDependencies = {},\n): Promise<string> {\n const platformConfig = resolvePlatformConfig(\n javaRuntime,\n platform,\n 'java-tron Java runtime',\n );\n const cacheKey = getCacheKey(platformConfig);\n const cacheRoot = join(\n cacheDirectory,\n JAVA_TRON_CACHE_NAMESPACE,\n JAVA_CACHE_NAMESPACE,\n cacheKey,\n );\n const existingJavaBinary = findJavaBinary(cacheRoot);\n\n if (existingJavaBinary) {\n return existingJavaBinary;\n }\n\n const tempRoot = `${cacheRoot}.downloading`;\n const archivePath = join(tempRoot, 'java-runtime.tar.gz');\n const downloadFile = dependencies.downloadFile ?? downloadFileFromUrl;\n const extractArchive = dependencies.extractArchive ?? extractTarGzArchive;\n\n await rm(tempRoot, { force: true, recursive: true });\n await rm(cacheRoot, { force: true, recursive: true });\n await mkdir(tempRoot, { recursive: true });\n\n try {\n await downloadFile(platformConfig.url, archivePath);\n await verifyFileChecksum(\n archivePath,\n platformConfig.checksum,\n 'Downloaded Java runtime',\n );\n await extractArchive(archivePath, tempRoot);\n\n const javaBinary = findJavaBinary(tempRoot);\n if (!javaBinary) {\n throw new Error(\n `Java runtime archive for ${platform} did not contain bin/java.`,\n );\n }\n\n await mkdir(dirname(cacheRoot), { recursive: true });\n await rename(tempRoot, cacheRoot);\n\n return javaBinary.replace(tempRoot, () => cacheRoot);\n } catch (error) {\n await rm(tempRoot, { force: true, recursive: true });\n await rm(cacheRoot, { force: true, recursive: true });\n throw error;\n }\n}\n\nasync function installFullNodeJar(\n {\n cacheDirectory,\n config,\n }: {\n cacheDirectory: string;\n config: JavaTronArtifactPlatformConfig;\n },\n dependencies: JavaTronInstallDependencies,\n): Promise<{ cacheHit: boolean; fullNodeJar: string }> {\n const cacheKey = getCacheKey(config);\n const cacheRoot = join(\n cacheDirectory,\n JAVA_TRON_CACHE_NAMESPACE,\n FULL_NODE_CACHE_NAMESPACE,\n cacheKey,\n );\n const fullNodeJar = join(cacheRoot, 'FullNode.jar');\n\n if (existsSync(fullNodeJar)) {\n await verifyFileChecksum(\n fullNodeJar,\n config.checksum,\n 'Cached java-tron FullNode',\n );\n return { cacheHit: true, fullNodeJar };\n }\n\n const tempRoot = `${cacheRoot}.downloading`;\n const tempFullNodeJar = join(tempRoot, 'FullNode.jar');\n const downloadFile = dependencies.downloadFile ?? downloadFileFromUrl;\n\n await rm(tempRoot, { force: true, recursive: true });\n await rm(cacheRoot, { force: true, recursive: true });\n await mkdir(tempRoot, { recursive: true });\n\n try {\n await downloadFile(config.url, tempFullNodeJar);\n await verifyFileChecksum(\n tempFullNodeJar,\n config.checksum,\n 'Downloaded java-tron FullNode',\n );\n await mkdir(dirname(cacheRoot), { recursive: true });\n await rename(tempRoot, cacheRoot);\n\n return { cacheHit: false, fullNodeJar };\n } catch (error) {\n await rm(tempRoot, { force: true, recursive: true });\n await rm(cacheRoot, { force: true, recursive: true });\n throw error;\n }\n}\n\nasync function installJavaTronBinary({\n binDirectory,\n fullNodeJar,\n javaBinary,\n}: {\n binDirectory: string;\n fullNodeJar: string;\n javaBinary: string;\n}): Promise<string> {\n const binaryPath = join(binDirectory, 'java-tron');\n const relativeJavaBinary = relative(binDirectory, javaBinary);\n const relativeFullNodeJar = relative(binDirectory, fullNodeJar);\n\n await mkdir(binDirectory, { recursive: true });\n await unlink(binaryPath).catch((error) => {\n if (!isFileMissingError(error)) {\n throw error;\n }\n });\n await writeFile(\n binaryPath,\n `#!/usr/bin/env node\nconst { spawnSync } = require('node:child_process');\nconst path = require('node:path');\n\nconst javaBinary = path.resolve(__dirname, ${JSON.stringify(relativeJavaBinary)});\nconst fullNodeJar = path.resolve(__dirname, ${JSON.stringify(relativeFullNodeJar)});\nconst result = spawnSync(javaBinary, ['-jar', fullNodeJar, ...process.argv.slice(2)], {\n stdio: 'inherit',\n});\n\nif (result.error) {\n console.error(result.error.message);\n process.exit(1);\n}\n\nif (result.signal) {\n process.kill(process.pid, result.signal);\n return;\n}\n\nprocess.exit(result.status ?? 1);\n`,\n );\n await chmod(binaryPath, 0o755);\n\n return binaryPath;\n}\n\nfunction resolvePlatformConfig(\n config: JavaTronArtifactConfig,\n platform: string,\n label: string,\n): JavaTronArtifactPlatformConfig {\n const platformConfig = config.platforms[platform] ?? config.platforms.current;\n\n if (!platformConfig) {\n throw new Error(`No ${label} is configured for ${platform}.`);\n }\n\n return platformConfig;\n}\n\nfunction requireCompletePlatformConfig(\n config: Partial<JavaTronArtifactPlatformConfig>,\n label: string,\n): JavaTronArtifactPlatformConfig {\n if (!config.url || !config.checksum) {\n throw new Error(`${label} require both a URL and a checksum.`);\n }\n\n return {\n checksum: config.checksum,\n url: config.url,\n };\n}\n\nfunction getCacheKey(config: JavaTronArtifactPlatformConfig): string {\n return createHash('sha256')\n .update(`${config.url}:${config.checksum}`)\n .digest('hex');\n}\n\nasync function verifyFileChecksum(\n filePath: string,\n expectedChecksum: string,\n label: string,\n): Promise<void> {\n const checksum = createHash('sha256')\n .update(await readFile(filePath))\n .digest('hex');\n\n if (checksum !== expectedChecksum) {\n throw new Error(\n `${label} checksum mismatch. Expected ${expectedChecksum}, got ${checksum}.`,\n );\n }\n}\n\nasync function downloadFileFromUrl(\n url: string,\n destination: string,\n): Promise<void> {\n await mkdir(dirname(destination), { recursive: true });\n await pipeline(\n await openDownloadStream(new URL(url)),\n createWriteStream(destination),\n );\n}\n\nasync function openDownloadStream(\n url: URL,\n redirectsRemaining = 5,\n): Promise<NodeJS.ReadableStream> {\n const request = url.protocol === 'http:' ? requestHttp : requestHttps;\n\n return await new Promise((resolvePromise, rejectPromise) => {\n const req = request(url, (response) => {\n const { headers, statusCode, statusMessage } = response;\n\n if (\n statusCode &&\n statusCode >= 300 &&\n statusCode < 400 &&\n headers.location\n ) {\n response.resume();\n if (redirectsRemaining <= 0) {\n rejectPromise(new Error(`Too many redirects downloading ${url}`));\n return;\n }\n\n openDownloadStream(\n new URL(headers.location, url),\n redirectsRemaining - 1,\n )\n .then(resolvePromise)\n .catch(rejectPromise);\n return;\n }\n\n if (!statusCode || statusCode < 200 || statusCode >= 300) {\n response.resume();\n rejectPromise(\n new Error(\n `Request to ${url} failed with ${statusCode ?? 'unknown'} ${\n statusMessage ?? ''\n }`.trim(),\n ),\n );\n return;\n }\n\n resolvePromise(response);\n });\n\n req.on('error', rejectPromise);\n req.end();\n });\n}\n\nasync function extractTarGzArchive(\n archivePath: string,\n destination: string,\n): Promise<void> {\n await runCommand('tar', ['-xzf', archivePath, '-C', destination]);\n}\n\nasync function runCommand(command: string, args: string[]): Promise<void> {\n await new Promise<void>((resolvePromise, rejectPromise) => {\n const child = spawn(command, args, {\n shell: false,\n stdio: ['ignore', 'ignore', 'pipe'],\n });\n let stderr = '';\n\n child.stderr.on('data', (chunk) => {\n stderr += chunk.toString();\n });\n child.on('error', rejectPromise);\n child.on('close', (code) => {\n if (code === 0) {\n resolvePromise();\n return;\n }\n\n rejectPromise(\n new Error(\n `${command} ${args.join(' ')} exited with code ${code}: ${stderr}`,\n ),\n );\n });\n });\n}\n\nfunction findJavaBinary(root: string): string | undefined {\n if (!isDirectory(root)) {\n return undefined;\n }\n\n const candidate = join(root, 'bin', 'java');\n if (isFile(candidate)) {\n return candidate;\n }\n\n for (const entry of readdirSync(root)) {\n const child = join(root, entry);\n if (!isDirectory(child)) {\n continue;\n }\n\n const found = findJavaBinary(child);\n if (found) {\n return found;\n }\n }\n\n return undefined;\n}\n\nfunction isDirectory(path: string): boolean {\n try {\n return statSync(path).isDirectory();\n } catch {\n return false;\n }\n}\n\nfunction isFile(path: string): boolean {\n try {\n return statSync(path).isFile();\n } catch {\n return false;\n }\n}\n\nfunction getPlatformKey(): string {\n return `${osPlatform()}-${normalizeSystemArchitecture()}`;\n}\n\nfunction normalizeSystemArchitecture(architecture = osArch()): string {\n if (architecture === 'x64' && osPlatform() === 'darwin') {\n const result = spawnSync('sysctl', ['-n', 'sysctl.proc_translated'], {\n encoding: 'utf8',\n shell: false,\n stdio: ['ignore', 'pipe', 'ignore'],\n });\n if (result.stdout.trim() === '1') {\n return 'arm64';\n }\n }\n\n return architecture;\n}\n\nfunction readCliValue(option: string, value: string | undefined): string {\n if (!value || value.startsWith('--')) {\n throw new Error(`${option} requires a value.`);\n }\n return value;\n}\n\nfunction isFileMissingError(error: unknown): boolean {\n return (\n typeof error === 'object' &&\n error !== null &&\n Object.prototype.hasOwnProperty.call(error, 'code') &&\n (error as NodeJS.ErrnoException).code === 'ENOENT'\n );\n}\n"]}
|
package/dist/install.mjs
CHANGED
|
@@ -215,7 +215,7 @@ export async function installJavaRuntime({ cacheDirectory = getJavaTronCacheDire
|
|
|
215
215
|
}
|
|
216
216
|
await mkdir(dirname(cacheRoot), { recursive: true });
|
|
217
217
|
await rename(tempRoot, cacheRoot);
|
|
218
|
-
return javaBinary.replace(tempRoot, cacheRoot);
|
|
218
|
+
return javaBinary.replace(tempRoot, () => cacheRoot);
|
|
219
219
|
}
|
|
220
220
|
catch (error) {
|
|
221
221
|
await rm(tempRoot, { force: true, recursive: true });
|
|
@@ -277,9 +277,10 @@ if (result.error) {
|
|
|
277
277
|
|
|
278
278
|
if (result.signal) {
|
|
279
279
|
process.kill(process.pid, result.signal);
|
|
280
|
+
return;
|
|
280
281
|
}
|
|
281
282
|
|
|
282
|
-
process.exit(result.status ??
|
|
283
|
+
process.exit(result.status ?? 1);
|
|
283
284
|
`);
|
|
284
285
|
await chmod(binaryPath, 0o755);
|
|
285
286
|
return binaryPath;
|
package/dist/install.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.mjs","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import-x/no-nodejs-modules, no-restricted-globals */\nimport { spawn, spawnSync } from 'node:child_process';\nimport { createHash } from 'node:crypto';\nimport {\n createWriteStream,\n existsSync,\n readdirSync,\n readFileSync,\n statSync,\n} from 'node:fs';\nimport {\n chmod,\n mkdir,\n readFile,\n rename,\n rm,\n unlink,\n writeFile,\n} from 'node:fs/promises';\nimport { request as requestHttp } from 'node:http';\nimport { request as requestHttps } from 'node:https';\nimport { arch as osArch, homedir, platform as osPlatform } from 'node:os';\nimport { dirname, join, relative } from 'node:path';\nimport { pipeline } from 'node:stream/promises';\n\nconst JAVA_TRON_CACHE_NAMESPACE = 'java-tron-up';\nconst FULL_NODE_CACHE_NAMESPACE = 'fullnode';\nconst JAVA_CACHE_NAMESPACE = 'java';\n\nexport type JavaTronArtifactConfig = {\n platforms: Record<string, JavaTronArtifactPlatformConfig | undefined>;\n version?: string;\n};\n\nexport type JavaTronArtifactPlatformConfig = {\n checksum: string;\n size?: number;\n url: string;\n};\n\nexport type JavaTronJavaRuntimeConfig = JavaTronArtifactConfig;\n\nexport type JavaTronInstallOptions = {\n binDirectory?: string;\n cacheDirectory?: string;\n cwd?: string;\n fullNode?: JavaTronArtifactConfig;\n javaBinary?: string;\n javaRuntime?: JavaTronJavaRuntimeConfig;\n platform?: string;\n};\n\nexport type JavaTronInstallResult = {\n binaryPath: string;\n cacheHit: boolean;\n checksum: string;\n fullNodeJar: string;\n javaBinary: string;\n version?: string;\n};\n\nexport type JavaTronInstallDependencies = {\n downloadFile?: (url: string, destination: string) => Promise<void>;\n extractArchive?: (archivePath: string, destination: string) => Promise<void>;\n};\n\ntype JavaTronPackageJson = {\n 'java-tron-up'?: JavaTronPackageJsonConfig;\n javaTronUp?: JavaTronPackageJsonConfig;\n javatronup?: JavaTronPackageJsonConfig;\n};\n\ntype JavaTronPackageJsonConfig = Pick<\n JavaTronInstallOptions,\n 'binDirectory' | 'cacheDirectory' | 'fullNode' | 'javaRuntime'\n>;\n\nexport const JAVA_TRON_DEFAULT_FULL_NODE: JavaTronArtifactConfig = {\n version: 'GreatVoyage-v4.8.1',\n platforms: {\n 'darwin-arm64': {\n checksum:\n '694431860ee76fc986ed495f9ec19f29ed3bd752a394386e7b3b9886b2292f59',\n size: 202_460_186,\n url: 'https://github.com/tronprotocol/java-tron/releases/download/GreatVoyage-v4.8.1/FullNode-aarch64.jar',\n },\n 'darwin-x64': {\n checksum:\n '0e67b2fe75d7077750e73c4fa20725c6e9824657275d96be256ae5da681f9945',\n size: 145_863_030,\n url: 'https://github.com/tronprotocol/java-tron/releases/download/GreatVoyage-v4.8.1/FullNode.jar',\n },\n 'linux-arm64': {\n checksum:\n '694431860ee76fc986ed495f9ec19f29ed3bd752a394386e7b3b9886b2292f59',\n size: 202_460_186,\n url: 'https://github.com/tronprotocol/java-tron/releases/download/GreatVoyage-v4.8.1/FullNode-aarch64.jar',\n },\n 'linux-x64': {\n checksum:\n '0e67b2fe75d7077750e73c4fa20725c6e9824657275d96be256ae5da681f9945',\n size: 145_863_030,\n url: 'https://github.com/tronprotocol/java-tron/releases/download/GreatVoyage-v4.8.1/FullNode.jar',\n },\n },\n};\n\nexport const JAVA_TRON_DEFAULT_JAVA_RUNTIME: JavaTronJavaRuntimeConfig = {\n version: 'zulu-java8-x64-java17-arm64',\n platforms: {\n 'darwin-arm64': {\n checksum:\n 'f2bd5afaaaa4c23eb4bf2c78913c7eb7d3d228e44209ffec652fb72388a2f25c',\n size: 192_646_000,\n url: 'https://cdn.azul.com/zulu/bin/zulu17.66.19-ca-jdk17.0.19-macosx_aarch64.tar.gz',\n },\n 'darwin-x64': {\n checksum:\n '4ac2efcae5d49afe1f2419ceb09bd3fb4af9df8411ab80184795960fc18fb5f6',\n size: 41_346_500,\n url: 'https://cdn.azul.com/zulu/bin/zulu8.94.0.17-ca-jre8.0.492-macosx_x64.tar.gz',\n },\n 'linux-arm64': {\n checksum:\n 'c17d5657a673c0cfc099e9d803ed30498495894d7359fd1064d463093ed9850b',\n size: 199_156_000,\n url: 'https://cdn.azul.com/zulu/bin/zulu17.66.19-ca-jdk17.0.19-linux_aarch64.tar.gz',\n },\n 'linux-x64': {\n checksum:\n '39abf1dc6798b5f6b8e9dca4e78994da316a3f990e444c2c483ea04f7f882cf2',\n size: 42_504_400,\n url: 'https://cdn.azul.com/zulu/bin/zulu8.94.0.17-ca-jre8.0.492-linux_x64.tar.gz',\n },\n },\n};\n\nexport function getJavaTronCacheDirectory({\n cwd = process.cwd(),\n homeDirectory = homedir(),\n}: {\n cwd?: string;\n homeDirectory?: string;\n} = {}): string {\n const yarnRcPath = join(cwd, '.yarnrc.yml');\n\n try {\n const yarnRc = readFileSync(yarnRcPath, 'utf8');\n if (/^\\s*enableGlobalCache:\\s*true\\s*$/mu.test(yarnRc)) {\n return join(homeDirectory, '.cache', 'metamask');\n }\n } catch (error) {\n if (!isFileMissingError(error)) {\n console.warn(\n `Warning: Error reading ${yarnRcPath}, using local java-tron-up cache:`,\n error,\n );\n }\n }\n\n return join(cwd, '.metamask', 'cache');\n}\n\nexport function readJavaTronInstallOptionsFromPackageJson({\n cwd = process.cwd(),\n packageJsonPath = join(cwd, 'package.json'),\n}: {\n cwd?: string;\n packageJsonPath?: string;\n} = {}): JavaTronInstallOptions {\n const packageJson = JSON.parse(\n readFileSync(packageJsonPath, 'utf8'),\n ) as JavaTronPackageJson;\n const config =\n packageJson.javaTronUp ??\n packageJson.javatronup ??\n packageJson['java-tron-up'];\n const options: JavaTronInstallOptions = {};\n\n if (config?.binDirectory) {\n options.binDirectory = config.binDirectory;\n }\n if (config?.cacheDirectory) {\n options.cacheDirectory = config.cacheDirectory;\n }\n if (config?.fullNode) {\n options.fullNode = config.fullNode;\n }\n if (config?.javaRuntime) {\n options.javaRuntime = config.javaRuntime;\n }\n\n return options;\n}\n\nexport function parseJavaTronInstallCliOptions(\n args: string[],\n): JavaTronInstallOptions {\n const options: JavaTronInstallOptions = {};\n const fullNode: Partial<JavaTronArtifactPlatformConfig> = {};\n const javaRuntime: Partial<JavaTronArtifactPlatformConfig> = {};\n\n for (let index = 0; index < args.length; index += 1) {\n const arg = args[index];\n const value = args[index + 1];\n\n switch (arg) {\n case '--bin-directory':\n options.binDirectory = readCliValue(arg, value);\n index += 1;\n break;\n case '--cache-directory':\n options.cacheDirectory = readCliValue(arg, value);\n index += 1;\n break;\n case '--full-node-checksum':\n fullNode.checksum = readCliValue(arg, value);\n index += 1;\n break;\n case '--full-node-url':\n fullNode.url = readCliValue(arg, value);\n index += 1;\n break;\n case '--java-runtime-checksum':\n javaRuntime.checksum = readCliValue(arg, value);\n index += 1;\n break;\n case '--java-runtime-url':\n javaRuntime.url = readCliValue(arg, value);\n index += 1;\n break;\n case '--platform':\n options.platform = readCliValue(arg, value);\n index += 1;\n break;\n default:\n throw new Error(`Unknown java-tron-up install option: ${arg}`);\n }\n }\n\n if (fullNode.url || fullNode.checksum) {\n options.fullNode = {\n platforms: {\n current: requireCompletePlatformConfig(\n fullNode,\n 'FullNode CLI options',\n ),\n },\n };\n }\n\n if (javaRuntime.url || javaRuntime.checksum) {\n options.javaRuntime = {\n platforms: {\n current: requireCompletePlatformConfig(\n javaRuntime,\n 'Java runtime CLI options',\n ),\n },\n };\n }\n\n return options;\n}\n\nexport async function installJavaTron(\n options: JavaTronInstallOptions = {},\n dependencies: JavaTronInstallDependencies = {},\n): Promise<JavaTronInstallResult> {\n const cwd = options.cwd ?? process.cwd();\n const cacheDirectory =\n options.cacheDirectory ?? getJavaTronCacheDirectory({ cwd });\n const binDirectory =\n options.binDirectory ?? join(cwd, 'node_modules', '.bin');\n const platformKey = options.platform ?? getPlatformKey();\n const fullNodeConfig = resolvePlatformConfig(\n options.fullNode ?? JAVA_TRON_DEFAULT_FULL_NODE,\n platformKey,\n 'java-tron FullNode',\n );\n const javaBinary =\n options.javaBinary ??\n (await installJavaRuntime(\n {\n cacheDirectory,\n javaRuntime: options.javaRuntime ?? JAVA_TRON_DEFAULT_JAVA_RUNTIME,\n platform: platformKey,\n },\n dependencies,\n ));\n const fullNodeResult = await installFullNodeJar(\n {\n cacheDirectory,\n config: fullNodeConfig,\n },\n dependencies,\n );\n const binaryPath = await installJavaTronBinary({\n binDirectory,\n fullNodeJar: fullNodeResult.fullNodeJar,\n javaBinary,\n });\n\n return {\n binaryPath,\n cacheHit: fullNodeResult.cacheHit,\n checksum: fullNodeConfig.checksum,\n fullNodeJar: fullNodeResult.fullNodeJar,\n javaBinary,\n version: (options.fullNode ?? JAVA_TRON_DEFAULT_FULL_NODE).version,\n };\n}\n\nexport async function cleanJavaTronCache(\n options: Pick<JavaTronInstallOptions, 'cacheDirectory' | 'cwd'> = {},\n): Promise<void> {\n const cwd = options.cwd ?? process.cwd();\n const cacheDirectory =\n options.cacheDirectory ?? getJavaTronCacheDirectory({ cwd });\n\n await rm(join(cacheDirectory, JAVA_TRON_CACHE_NAMESPACE), {\n force: true,\n recursive: true,\n });\n}\n\nexport async function installJavaRuntime(\n {\n cacheDirectory = getJavaTronCacheDirectory(),\n javaRuntime = JAVA_TRON_DEFAULT_JAVA_RUNTIME,\n platform = getPlatformKey(),\n }: {\n cacheDirectory?: string;\n javaRuntime?: JavaTronJavaRuntimeConfig;\n platform?: string;\n } = {},\n dependencies: JavaTronInstallDependencies = {},\n): Promise<string> {\n const platformConfig = resolvePlatformConfig(\n javaRuntime,\n platform,\n 'java-tron Java runtime',\n );\n const cacheKey = getCacheKey(platformConfig);\n const cacheRoot = join(\n cacheDirectory,\n JAVA_TRON_CACHE_NAMESPACE,\n JAVA_CACHE_NAMESPACE,\n cacheKey,\n );\n const existingJavaBinary = findJavaBinary(cacheRoot);\n\n if (existingJavaBinary) {\n return existingJavaBinary;\n }\n\n const tempRoot = `${cacheRoot}.downloading`;\n const archivePath = join(tempRoot, 'java-runtime.tar.gz');\n const downloadFile = dependencies.downloadFile ?? downloadFileFromUrl;\n const extractArchive = dependencies.extractArchive ?? extractTarGzArchive;\n\n await rm(tempRoot, { force: true, recursive: true });\n await rm(cacheRoot, { force: true, recursive: true });\n await mkdir(tempRoot, { recursive: true });\n\n try {\n await downloadFile(platformConfig.url, archivePath);\n await verifyFileChecksum(\n archivePath,\n platformConfig.checksum,\n 'Downloaded Java runtime',\n );\n await extractArchive(archivePath, tempRoot);\n\n const javaBinary = findJavaBinary(tempRoot);\n if (!javaBinary) {\n throw new Error(\n `Java runtime archive for ${platform} did not contain bin/java.`,\n );\n }\n\n await mkdir(dirname(cacheRoot), { recursive: true });\n await rename(tempRoot, cacheRoot);\n\n return javaBinary.replace(tempRoot, cacheRoot);\n } catch (error) {\n await rm(tempRoot, { force: true, recursive: true });\n await rm(cacheRoot, { force: true, recursive: true });\n throw error;\n }\n}\n\nasync function installFullNodeJar(\n {\n cacheDirectory,\n config,\n }: {\n cacheDirectory: string;\n config: JavaTronArtifactPlatformConfig;\n },\n dependencies: JavaTronInstallDependencies,\n): Promise<{ cacheHit: boolean; fullNodeJar: string }> {\n const cacheKey = getCacheKey(config);\n const cacheRoot = join(\n cacheDirectory,\n JAVA_TRON_CACHE_NAMESPACE,\n FULL_NODE_CACHE_NAMESPACE,\n cacheKey,\n );\n const fullNodeJar = join(cacheRoot, 'FullNode.jar');\n\n if (existsSync(fullNodeJar)) {\n await verifyFileChecksum(\n fullNodeJar,\n config.checksum,\n 'Cached java-tron FullNode',\n );\n return { cacheHit: true, fullNodeJar };\n }\n\n const tempRoot = `${cacheRoot}.downloading`;\n const tempFullNodeJar = join(tempRoot, 'FullNode.jar');\n const downloadFile = dependencies.downloadFile ?? downloadFileFromUrl;\n\n await rm(tempRoot, { force: true, recursive: true });\n await rm(cacheRoot, { force: true, recursive: true });\n await mkdir(tempRoot, { recursive: true });\n\n try {\n await downloadFile(config.url, tempFullNodeJar);\n await verifyFileChecksum(\n tempFullNodeJar,\n config.checksum,\n 'Downloaded java-tron FullNode',\n );\n await mkdir(dirname(cacheRoot), { recursive: true });\n await rename(tempRoot, cacheRoot);\n\n return { cacheHit: false, fullNodeJar };\n } catch (error) {\n await rm(tempRoot, { force: true, recursive: true });\n await rm(cacheRoot, { force: true, recursive: true });\n throw error;\n }\n}\n\nasync function installJavaTronBinary({\n binDirectory,\n fullNodeJar,\n javaBinary,\n}: {\n binDirectory: string;\n fullNodeJar: string;\n javaBinary: string;\n}): Promise<string> {\n const binaryPath = join(binDirectory, 'java-tron');\n const relativeJavaBinary = relative(binDirectory, javaBinary);\n const relativeFullNodeJar = relative(binDirectory, fullNodeJar);\n\n await mkdir(binDirectory, { recursive: true });\n await unlink(binaryPath).catch((error) => {\n if (!isFileMissingError(error)) {\n throw error;\n }\n });\n await writeFile(\n binaryPath,\n `#!/usr/bin/env node\nconst { spawnSync } = require('node:child_process');\nconst path = require('node:path');\n\nconst javaBinary = path.resolve(__dirname, ${JSON.stringify(relativeJavaBinary)});\nconst fullNodeJar = path.resolve(__dirname, ${JSON.stringify(relativeFullNodeJar)});\nconst result = spawnSync(javaBinary, ['-jar', fullNodeJar, ...process.argv.slice(2)], {\n stdio: 'inherit',\n});\n\nif (result.error) {\n console.error(result.error.message);\n process.exit(1);\n}\n\nif (result.signal) {\n process.kill(process.pid, result.signal);\n}\n\nprocess.exit(result.status ?? 0);\n`,\n );\n await chmod(binaryPath, 0o755);\n\n return binaryPath;\n}\n\nfunction resolvePlatformConfig(\n config: JavaTronArtifactConfig,\n platform: string,\n label: string,\n): JavaTronArtifactPlatformConfig {\n const platformConfig = config.platforms[platform] ?? config.platforms.current;\n\n if (!platformConfig) {\n throw new Error(`No ${label} is configured for ${platform}.`);\n }\n\n return platformConfig;\n}\n\nfunction requireCompletePlatformConfig(\n config: Partial<JavaTronArtifactPlatformConfig>,\n label: string,\n): JavaTronArtifactPlatformConfig {\n if (!config.url || !config.checksum) {\n throw new Error(`${label} require both a URL and a checksum.`);\n }\n\n return {\n checksum: config.checksum,\n url: config.url,\n };\n}\n\nfunction getCacheKey(config: JavaTronArtifactPlatformConfig): string {\n return createHash('sha256')\n .update(`${config.url}:${config.checksum}`)\n .digest('hex');\n}\n\nasync function verifyFileChecksum(\n filePath: string,\n expectedChecksum: string,\n label: string,\n): Promise<void> {\n const checksum = createHash('sha256')\n .update(await readFile(filePath))\n .digest('hex');\n\n if (checksum !== expectedChecksum) {\n throw new Error(\n `${label} checksum mismatch. Expected ${expectedChecksum}, got ${checksum}.`,\n );\n }\n}\n\nasync function downloadFileFromUrl(\n url: string,\n destination: string,\n): Promise<void> {\n await mkdir(dirname(destination), { recursive: true });\n await pipeline(\n await openDownloadStream(new URL(url)),\n createWriteStream(destination),\n );\n}\n\nasync function openDownloadStream(\n url: URL,\n redirectsRemaining = 5,\n): Promise<NodeJS.ReadableStream> {\n const request = url.protocol === 'http:' ? requestHttp : requestHttps;\n\n return await new Promise((resolvePromise, rejectPromise) => {\n const req = request(url, (response) => {\n const { headers, statusCode, statusMessage } = response;\n\n if (\n statusCode &&\n statusCode >= 300 &&\n statusCode < 400 &&\n headers.location\n ) {\n response.resume();\n if (redirectsRemaining <= 0) {\n rejectPromise(new Error(`Too many redirects downloading ${url}`));\n return;\n }\n\n openDownloadStream(\n new URL(headers.location, url),\n redirectsRemaining - 1,\n )\n .then(resolvePromise)\n .catch(rejectPromise);\n return;\n }\n\n if (!statusCode || statusCode < 200 || statusCode >= 300) {\n response.resume();\n rejectPromise(\n new Error(\n `Request to ${url} failed with ${statusCode ?? 'unknown'} ${\n statusMessage ?? ''\n }`.trim(),\n ),\n );\n return;\n }\n\n resolvePromise(response);\n });\n\n req.on('error', rejectPromise);\n req.end();\n });\n}\n\nasync function extractTarGzArchive(\n archivePath: string,\n destination: string,\n): Promise<void> {\n await runCommand('tar', ['-xzf', archivePath, '-C', destination]);\n}\n\nasync function runCommand(command: string, args: string[]): Promise<void> {\n await new Promise<void>((resolvePromise, rejectPromise) => {\n const child = spawn(command, args, {\n shell: false,\n stdio: ['ignore', 'ignore', 'pipe'],\n });\n let stderr = '';\n\n child.stderr.on('data', (chunk) => {\n stderr += chunk.toString();\n });\n child.on('error', rejectPromise);\n child.on('close', (code) => {\n if (code === 0) {\n resolvePromise();\n return;\n }\n\n rejectPromise(\n new Error(\n `${command} ${args.join(' ')} exited with code ${code}: ${stderr}`,\n ),\n );\n });\n });\n}\n\nfunction findJavaBinary(root: string): string | undefined {\n if (!isDirectory(root)) {\n return undefined;\n }\n\n const candidate = join(root, 'bin', 'java');\n if (isFile(candidate)) {\n return candidate;\n }\n\n for (const entry of readdirSync(root)) {\n const child = join(root, entry);\n if (!isDirectory(child)) {\n continue;\n }\n\n const found = findJavaBinary(child);\n if (found) {\n return found;\n }\n }\n\n return undefined;\n}\n\nfunction isDirectory(path: string): boolean {\n try {\n return statSync(path).isDirectory();\n } catch {\n return false;\n }\n}\n\nfunction isFile(path: string): boolean {\n try {\n return statSync(path).isFile();\n } catch {\n return false;\n }\n}\n\nfunction getPlatformKey(): string {\n return `${osPlatform()}-${normalizeSystemArchitecture()}`;\n}\n\nfunction normalizeSystemArchitecture(architecture = osArch()): string {\n if (architecture === 'x64' && osPlatform() === 'darwin') {\n const result = spawnSync('sysctl', ['-n', 'sysctl.proc_translated'], {\n encoding: 'utf8',\n shell: false,\n stdio: ['ignore', 'pipe', 'ignore'],\n });\n if (result.stdout.trim() === '1') {\n return 'arm64';\n }\n }\n\n return architecture;\n}\n\nfunction readCliValue(option: string, value: string | undefined): string {\n if (!value || value.startsWith('--')) {\n throw new Error(`${option} requires a value.`);\n }\n return value;\n}\n\nfunction isFileMissingError(error: unknown): boolean {\n return (\n typeof error === 'object' &&\n error !== null &&\n Object.prototype.hasOwnProperty.call(error, 'code') &&\n (error as NodeJS.ErrnoException).code === 'ENOENT'\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"install.mjs","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import-x/no-nodejs-modules, no-restricted-globals */\nimport { spawn, spawnSync } from 'node:child_process';\nimport { createHash } from 'node:crypto';\nimport {\n createWriteStream,\n existsSync,\n readdirSync,\n readFileSync,\n statSync,\n} from 'node:fs';\nimport {\n chmod,\n mkdir,\n readFile,\n rename,\n rm,\n unlink,\n writeFile,\n} from 'node:fs/promises';\nimport { request as requestHttp } from 'node:http';\nimport { request as requestHttps } from 'node:https';\nimport { arch as osArch, homedir, platform as osPlatform } from 'node:os';\nimport { dirname, join, relative } from 'node:path';\nimport { pipeline } from 'node:stream/promises';\n\nconst JAVA_TRON_CACHE_NAMESPACE = 'java-tron-up';\nconst FULL_NODE_CACHE_NAMESPACE = 'fullnode';\nconst JAVA_CACHE_NAMESPACE = 'java';\n\nexport type JavaTronArtifactConfig = {\n platforms: Record<string, JavaTronArtifactPlatformConfig | undefined>;\n version?: string;\n};\n\nexport type JavaTronArtifactPlatformConfig = {\n checksum: string;\n size?: number;\n url: string;\n};\n\nexport type JavaTronJavaRuntimeConfig = JavaTronArtifactConfig;\n\nexport type JavaTronInstallOptions = {\n binDirectory?: string;\n cacheDirectory?: string;\n cwd?: string;\n fullNode?: JavaTronArtifactConfig;\n javaBinary?: string;\n javaRuntime?: JavaTronJavaRuntimeConfig;\n platform?: string;\n};\n\nexport type JavaTronInstallResult = {\n binaryPath: string;\n cacheHit: boolean;\n checksum: string;\n fullNodeJar: string;\n javaBinary: string;\n version?: string;\n};\n\nexport type JavaTronInstallDependencies = {\n downloadFile?: (url: string, destination: string) => Promise<void>;\n extractArchive?: (archivePath: string, destination: string) => Promise<void>;\n};\n\ntype JavaTronPackageJson = {\n 'java-tron-up'?: JavaTronPackageJsonConfig;\n javaTronUp?: JavaTronPackageJsonConfig;\n javatronup?: JavaTronPackageJsonConfig;\n};\n\ntype JavaTronPackageJsonConfig = Pick<\n JavaTronInstallOptions,\n 'binDirectory' | 'cacheDirectory' | 'fullNode' | 'javaRuntime'\n>;\n\nexport const JAVA_TRON_DEFAULT_FULL_NODE: JavaTronArtifactConfig = {\n version: 'GreatVoyage-v4.8.1',\n platforms: {\n 'darwin-arm64': {\n checksum:\n '694431860ee76fc986ed495f9ec19f29ed3bd752a394386e7b3b9886b2292f59',\n size: 202_460_186,\n url: 'https://github.com/tronprotocol/java-tron/releases/download/GreatVoyage-v4.8.1/FullNode-aarch64.jar',\n },\n 'darwin-x64': {\n checksum:\n '0e67b2fe75d7077750e73c4fa20725c6e9824657275d96be256ae5da681f9945',\n size: 145_863_030,\n url: 'https://github.com/tronprotocol/java-tron/releases/download/GreatVoyage-v4.8.1/FullNode.jar',\n },\n 'linux-arm64': {\n checksum:\n '694431860ee76fc986ed495f9ec19f29ed3bd752a394386e7b3b9886b2292f59',\n size: 202_460_186,\n url: 'https://github.com/tronprotocol/java-tron/releases/download/GreatVoyage-v4.8.1/FullNode-aarch64.jar',\n },\n 'linux-x64': {\n checksum:\n '0e67b2fe75d7077750e73c4fa20725c6e9824657275d96be256ae5da681f9945',\n size: 145_863_030,\n url: 'https://github.com/tronprotocol/java-tron/releases/download/GreatVoyage-v4.8.1/FullNode.jar',\n },\n },\n};\n\nexport const JAVA_TRON_DEFAULT_JAVA_RUNTIME: JavaTronJavaRuntimeConfig = {\n version: 'zulu-java8-x64-java17-arm64',\n platforms: {\n 'darwin-arm64': {\n checksum:\n 'f2bd5afaaaa4c23eb4bf2c78913c7eb7d3d228e44209ffec652fb72388a2f25c',\n size: 192_646_000,\n url: 'https://cdn.azul.com/zulu/bin/zulu17.66.19-ca-jdk17.0.19-macosx_aarch64.tar.gz',\n },\n 'darwin-x64': {\n checksum:\n '4ac2efcae5d49afe1f2419ceb09bd3fb4af9df8411ab80184795960fc18fb5f6',\n size: 41_346_500,\n url: 'https://cdn.azul.com/zulu/bin/zulu8.94.0.17-ca-jre8.0.492-macosx_x64.tar.gz',\n },\n 'linux-arm64': {\n checksum:\n 'c17d5657a673c0cfc099e9d803ed30498495894d7359fd1064d463093ed9850b',\n size: 199_156_000,\n url: 'https://cdn.azul.com/zulu/bin/zulu17.66.19-ca-jdk17.0.19-linux_aarch64.tar.gz',\n },\n 'linux-x64': {\n checksum:\n '39abf1dc6798b5f6b8e9dca4e78994da316a3f990e444c2c483ea04f7f882cf2',\n size: 42_504_400,\n url: 'https://cdn.azul.com/zulu/bin/zulu8.94.0.17-ca-jre8.0.492-linux_x64.tar.gz',\n },\n },\n};\n\nexport function getJavaTronCacheDirectory({\n cwd = process.cwd(),\n homeDirectory = homedir(),\n}: {\n cwd?: string;\n homeDirectory?: string;\n} = {}): string {\n const yarnRcPath = join(cwd, '.yarnrc.yml');\n\n try {\n const yarnRc = readFileSync(yarnRcPath, 'utf8');\n if (/^\\s*enableGlobalCache:\\s*true\\s*$/mu.test(yarnRc)) {\n return join(homeDirectory, '.cache', 'metamask');\n }\n } catch (error) {\n if (!isFileMissingError(error)) {\n console.warn(\n `Warning: Error reading ${yarnRcPath}, using local java-tron-up cache:`,\n error,\n );\n }\n }\n\n return join(cwd, '.metamask', 'cache');\n}\n\nexport function readJavaTronInstallOptionsFromPackageJson({\n cwd = process.cwd(),\n packageJsonPath = join(cwd, 'package.json'),\n}: {\n cwd?: string;\n packageJsonPath?: string;\n} = {}): JavaTronInstallOptions {\n const packageJson = JSON.parse(\n readFileSync(packageJsonPath, 'utf8'),\n ) as JavaTronPackageJson;\n const config =\n packageJson.javaTronUp ??\n packageJson.javatronup ??\n packageJson['java-tron-up'];\n const options: JavaTronInstallOptions = {};\n\n if (config?.binDirectory) {\n options.binDirectory = config.binDirectory;\n }\n if (config?.cacheDirectory) {\n options.cacheDirectory = config.cacheDirectory;\n }\n if (config?.fullNode) {\n options.fullNode = config.fullNode;\n }\n if (config?.javaRuntime) {\n options.javaRuntime = config.javaRuntime;\n }\n\n return options;\n}\n\nexport function parseJavaTronInstallCliOptions(\n args: string[],\n): JavaTronInstallOptions {\n const options: JavaTronInstallOptions = {};\n const fullNode: Partial<JavaTronArtifactPlatformConfig> = {};\n const javaRuntime: Partial<JavaTronArtifactPlatformConfig> = {};\n\n for (let index = 0; index < args.length; index += 1) {\n const arg = args[index];\n const value = args[index + 1];\n\n switch (arg) {\n case '--bin-directory':\n options.binDirectory = readCliValue(arg, value);\n index += 1;\n break;\n case '--cache-directory':\n options.cacheDirectory = readCliValue(arg, value);\n index += 1;\n break;\n case '--full-node-checksum':\n fullNode.checksum = readCliValue(arg, value);\n index += 1;\n break;\n case '--full-node-url':\n fullNode.url = readCliValue(arg, value);\n index += 1;\n break;\n case '--java-runtime-checksum':\n javaRuntime.checksum = readCliValue(arg, value);\n index += 1;\n break;\n case '--java-runtime-url':\n javaRuntime.url = readCliValue(arg, value);\n index += 1;\n break;\n case '--platform':\n options.platform = readCliValue(arg, value);\n index += 1;\n break;\n default:\n throw new Error(`Unknown java-tron-up install option: ${arg}`);\n }\n }\n\n if (fullNode.url || fullNode.checksum) {\n options.fullNode = {\n platforms: {\n current: requireCompletePlatformConfig(\n fullNode,\n 'FullNode CLI options',\n ),\n },\n };\n }\n\n if (javaRuntime.url || javaRuntime.checksum) {\n options.javaRuntime = {\n platforms: {\n current: requireCompletePlatformConfig(\n javaRuntime,\n 'Java runtime CLI options',\n ),\n },\n };\n }\n\n return options;\n}\n\nexport async function installJavaTron(\n options: JavaTronInstallOptions = {},\n dependencies: JavaTronInstallDependencies = {},\n): Promise<JavaTronInstallResult> {\n const cwd = options.cwd ?? process.cwd();\n const cacheDirectory =\n options.cacheDirectory ?? getJavaTronCacheDirectory({ cwd });\n const binDirectory =\n options.binDirectory ?? join(cwd, 'node_modules', '.bin');\n const platformKey = options.platform ?? getPlatformKey();\n const fullNodeConfig = resolvePlatformConfig(\n options.fullNode ?? JAVA_TRON_DEFAULT_FULL_NODE,\n platformKey,\n 'java-tron FullNode',\n );\n const javaBinary =\n options.javaBinary ??\n (await installJavaRuntime(\n {\n cacheDirectory,\n javaRuntime: options.javaRuntime ?? JAVA_TRON_DEFAULT_JAVA_RUNTIME,\n platform: platformKey,\n },\n dependencies,\n ));\n const fullNodeResult = await installFullNodeJar(\n {\n cacheDirectory,\n config: fullNodeConfig,\n },\n dependencies,\n );\n const binaryPath = await installJavaTronBinary({\n binDirectory,\n fullNodeJar: fullNodeResult.fullNodeJar,\n javaBinary,\n });\n\n return {\n binaryPath,\n cacheHit: fullNodeResult.cacheHit,\n checksum: fullNodeConfig.checksum,\n fullNodeJar: fullNodeResult.fullNodeJar,\n javaBinary,\n version: (options.fullNode ?? JAVA_TRON_DEFAULT_FULL_NODE).version,\n };\n}\n\nexport async function cleanJavaTronCache(\n options: Pick<JavaTronInstallOptions, 'cacheDirectory' | 'cwd'> = {},\n): Promise<void> {\n const cwd = options.cwd ?? process.cwd();\n const cacheDirectory =\n options.cacheDirectory ?? getJavaTronCacheDirectory({ cwd });\n\n await rm(join(cacheDirectory, JAVA_TRON_CACHE_NAMESPACE), {\n force: true,\n recursive: true,\n });\n}\n\nexport async function installJavaRuntime(\n {\n cacheDirectory = getJavaTronCacheDirectory(),\n javaRuntime = JAVA_TRON_DEFAULT_JAVA_RUNTIME,\n platform = getPlatformKey(),\n }: {\n cacheDirectory?: string;\n javaRuntime?: JavaTronJavaRuntimeConfig;\n platform?: string;\n } = {},\n dependencies: JavaTronInstallDependencies = {},\n): Promise<string> {\n const platformConfig = resolvePlatformConfig(\n javaRuntime,\n platform,\n 'java-tron Java runtime',\n );\n const cacheKey = getCacheKey(platformConfig);\n const cacheRoot = join(\n cacheDirectory,\n JAVA_TRON_CACHE_NAMESPACE,\n JAVA_CACHE_NAMESPACE,\n cacheKey,\n );\n const existingJavaBinary = findJavaBinary(cacheRoot);\n\n if (existingJavaBinary) {\n return existingJavaBinary;\n }\n\n const tempRoot = `${cacheRoot}.downloading`;\n const archivePath = join(tempRoot, 'java-runtime.tar.gz');\n const downloadFile = dependencies.downloadFile ?? downloadFileFromUrl;\n const extractArchive = dependencies.extractArchive ?? extractTarGzArchive;\n\n await rm(tempRoot, { force: true, recursive: true });\n await rm(cacheRoot, { force: true, recursive: true });\n await mkdir(tempRoot, { recursive: true });\n\n try {\n await downloadFile(platformConfig.url, archivePath);\n await verifyFileChecksum(\n archivePath,\n platformConfig.checksum,\n 'Downloaded Java runtime',\n );\n await extractArchive(archivePath, tempRoot);\n\n const javaBinary = findJavaBinary(tempRoot);\n if (!javaBinary) {\n throw new Error(\n `Java runtime archive for ${platform} did not contain bin/java.`,\n );\n }\n\n await mkdir(dirname(cacheRoot), { recursive: true });\n await rename(tempRoot, cacheRoot);\n\n return javaBinary.replace(tempRoot, () => cacheRoot);\n } catch (error) {\n await rm(tempRoot, { force: true, recursive: true });\n await rm(cacheRoot, { force: true, recursive: true });\n throw error;\n }\n}\n\nasync function installFullNodeJar(\n {\n cacheDirectory,\n config,\n }: {\n cacheDirectory: string;\n config: JavaTronArtifactPlatformConfig;\n },\n dependencies: JavaTronInstallDependencies,\n): Promise<{ cacheHit: boolean; fullNodeJar: string }> {\n const cacheKey = getCacheKey(config);\n const cacheRoot = join(\n cacheDirectory,\n JAVA_TRON_CACHE_NAMESPACE,\n FULL_NODE_CACHE_NAMESPACE,\n cacheKey,\n );\n const fullNodeJar = join(cacheRoot, 'FullNode.jar');\n\n if (existsSync(fullNodeJar)) {\n await verifyFileChecksum(\n fullNodeJar,\n config.checksum,\n 'Cached java-tron FullNode',\n );\n return { cacheHit: true, fullNodeJar };\n }\n\n const tempRoot = `${cacheRoot}.downloading`;\n const tempFullNodeJar = join(tempRoot, 'FullNode.jar');\n const downloadFile = dependencies.downloadFile ?? downloadFileFromUrl;\n\n await rm(tempRoot, { force: true, recursive: true });\n await rm(cacheRoot, { force: true, recursive: true });\n await mkdir(tempRoot, { recursive: true });\n\n try {\n await downloadFile(config.url, tempFullNodeJar);\n await verifyFileChecksum(\n tempFullNodeJar,\n config.checksum,\n 'Downloaded java-tron FullNode',\n );\n await mkdir(dirname(cacheRoot), { recursive: true });\n await rename(tempRoot, cacheRoot);\n\n return { cacheHit: false, fullNodeJar };\n } catch (error) {\n await rm(tempRoot, { force: true, recursive: true });\n await rm(cacheRoot, { force: true, recursive: true });\n throw error;\n }\n}\n\nasync function installJavaTronBinary({\n binDirectory,\n fullNodeJar,\n javaBinary,\n}: {\n binDirectory: string;\n fullNodeJar: string;\n javaBinary: string;\n}): Promise<string> {\n const binaryPath = join(binDirectory, 'java-tron');\n const relativeJavaBinary = relative(binDirectory, javaBinary);\n const relativeFullNodeJar = relative(binDirectory, fullNodeJar);\n\n await mkdir(binDirectory, { recursive: true });\n await unlink(binaryPath).catch((error) => {\n if (!isFileMissingError(error)) {\n throw error;\n }\n });\n await writeFile(\n binaryPath,\n `#!/usr/bin/env node\nconst { spawnSync } = require('node:child_process');\nconst path = require('node:path');\n\nconst javaBinary = path.resolve(__dirname, ${JSON.stringify(relativeJavaBinary)});\nconst fullNodeJar = path.resolve(__dirname, ${JSON.stringify(relativeFullNodeJar)});\nconst result = spawnSync(javaBinary, ['-jar', fullNodeJar, ...process.argv.slice(2)], {\n stdio: 'inherit',\n});\n\nif (result.error) {\n console.error(result.error.message);\n process.exit(1);\n}\n\nif (result.signal) {\n process.kill(process.pid, result.signal);\n return;\n}\n\nprocess.exit(result.status ?? 1);\n`,\n );\n await chmod(binaryPath, 0o755);\n\n return binaryPath;\n}\n\nfunction resolvePlatformConfig(\n config: JavaTronArtifactConfig,\n platform: string,\n label: string,\n): JavaTronArtifactPlatformConfig {\n const platformConfig = config.platforms[platform] ?? config.platforms.current;\n\n if (!platformConfig) {\n throw new Error(`No ${label} is configured for ${platform}.`);\n }\n\n return platformConfig;\n}\n\nfunction requireCompletePlatformConfig(\n config: Partial<JavaTronArtifactPlatformConfig>,\n label: string,\n): JavaTronArtifactPlatformConfig {\n if (!config.url || !config.checksum) {\n throw new Error(`${label} require both a URL and a checksum.`);\n }\n\n return {\n checksum: config.checksum,\n url: config.url,\n };\n}\n\nfunction getCacheKey(config: JavaTronArtifactPlatformConfig): string {\n return createHash('sha256')\n .update(`${config.url}:${config.checksum}`)\n .digest('hex');\n}\n\nasync function verifyFileChecksum(\n filePath: string,\n expectedChecksum: string,\n label: string,\n): Promise<void> {\n const checksum = createHash('sha256')\n .update(await readFile(filePath))\n .digest('hex');\n\n if (checksum !== expectedChecksum) {\n throw new Error(\n `${label} checksum mismatch. Expected ${expectedChecksum}, got ${checksum}.`,\n );\n }\n}\n\nasync function downloadFileFromUrl(\n url: string,\n destination: string,\n): Promise<void> {\n await mkdir(dirname(destination), { recursive: true });\n await pipeline(\n await openDownloadStream(new URL(url)),\n createWriteStream(destination),\n );\n}\n\nasync function openDownloadStream(\n url: URL,\n redirectsRemaining = 5,\n): Promise<NodeJS.ReadableStream> {\n const request = url.protocol === 'http:' ? requestHttp : requestHttps;\n\n return await new Promise((resolvePromise, rejectPromise) => {\n const req = request(url, (response) => {\n const { headers, statusCode, statusMessage } = response;\n\n if (\n statusCode &&\n statusCode >= 300 &&\n statusCode < 400 &&\n headers.location\n ) {\n response.resume();\n if (redirectsRemaining <= 0) {\n rejectPromise(new Error(`Too many redirects downloading ${url}`));\n return;\n }\n\n openDownloadStream(\n new URL(headers.location, url),\n redirectsRemaining - 1,\n )\n .then(resolvePromise)\n .catch(rejectPromise);\n return;\n }\n\n if (!statusCode || statusCode < 200 || statusCode >= 300) {\n response.resume();\n rejectPromise(\n new Error(\n `Request to ${url} failed with ${statusCode ?? 'unknown'} ${\n statusMessage ?? ''\n }`.trim(),\n ),\n );\n return;\n }\n\n resolvePromise(response);\n });\n\n req.on('error', rejectPromise);\n req.end();\n });\n}\n\nasync function extractTarGzArchive(\n archivePath: string,\n destination: string,\n): Promise<void> {\n await runCommand('tar', ['-xzf', archivePath, '-C', destination]);\n}\n\nasync function runCommand(command: string, args: string[]): Promise<void> {\n await new Promise<void>((resolvePromise, rejectPromise) => {\n const child = spawn(command, args, {\n shell: false,\n stdio: ['ignore', 'ignore', 'pipe'],\n });\n let stderr = '';\n\n child.stderr.on('data', (chunk) => {\n stderr += chunk.toString();\n });\n child.on('error', rejectPromise);\n child.on('close', (code) => {\n if (code === 0) {\n resolvePromise();\n return;\n }\n\n rejectPromise(\n new Error(\n `${command} ${args.join(' ')} exited with code ${code}: ${stderr}`,\n ),\n );\n });\n });\n}\n\nfunction findJavaBinary(root: string): string | undefined {\n if (!isDirectory(root)) {\n return undefined;\n }\n\n const candidate = join(root, 'bin', 'java');\n if (isFile(candidate)) {\n return candidate;\n }\n\n for (const entry of readdirSync(root)) {\n const child = join(root, entry);\n if (!isDirectory(child)) {\n continue;\n }\n\n const found = findJavaBinary(child);\n if (found) {\n return found;\n }\n }\n\n return undefined;\n}\n\nfunction isDirectory(path: string): boolean {\n try {\n return statSync(path).isDirectory();\n } catch {\n return false;\n }\n}\n\nfunction isFile(path: string): boolean {\n try {\n return statSync(path).isFile();\n } catch {\n return false;\n }\n}\n\nfunction getPlatformKey(): string {\n return `${osPlatform()}-${normalizeSystemArchitecture()}`;\n}\n\nfunction normalizeSystemArchitecture(architecture = osArch()): string {\n if (architecture === 'x64' && osPlatform() === 'darwin') {\n const result = spawnSync('sysctl', ['-n', 'sysctl.proc_translated'], {\n encoding: 'utf8',\n shell: false,\n stdio: ['ignore', 'pipe', 'ignore'],\n });\n if (result.stdout.trim() === '1') {\n return 'arm64';\n }\n }\n\n return architecture;\n}\n\nfunction readCliValue(option: string, value: string | undefined): string {\n if (!value || value.startsWith('--')) {\n throw new Error(`${option} requires a value.`);\n }\n return value;\n}\n\nfunction isFileMissingError(error: unknown): boolean {\n return (\n typeof error === 'object' &&\n error !== null &&\n Object.prototype.hasOwnProperty.call(error, 'code') &&\n (error as NodeJS.ErrnoException).code === 'ENOENT'\n );\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metamask-previews/java-tron-up",
|
|
3
|
-
"version": "0.0.0-preview-
|
|
3
|
+
"version": "0.0.0-preview-838d6b234",
|
|
4
4
|
"description": "java-tron runtime installer for MetaMask E2E tests",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Ethereum",
|
|
@@ -20,21 +20,6 @@
|
|
|
20
20
|
"dist/"
|
|
21
21
|
],
|
|
22
22
|
"sideEffects": false,
|
|
23
|
-
"main": "./dist/index.cjs",
|
|
24
|
-
"types": "./dist/index.d.cts",
|
|
25
|
-
"exports": {
|
|
26
|
-
".": {
|
|
27
|
-
"import": {
|
|
28
|
-
"types": "./dist/index.d.mts",
|
|
29
|
-
"default": "./dist/index.mjs"
|
|
30
|
-
},
|
|
31
|
-
"require": {
|
|
32
|
-
"types": "./dist/index.d.cts",
|
|
33
|
-
"default": "./dist/index.cjs"
|
|
34
|
-
}
|
|
35
|
-
},
|
|
36
|
-
"./package.json": "./package.json"
|
|
37
|
-
},
|
|
38
23
|
"publishConfig": {
|
|
39
24
|
"access": "public",
|
|
40
25
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -59,6 +44,7 @@
|
|
|
59
44
|
"@types/jest": "^29.5.14",
|
|
60
45
|
"deepmerge": "^4.2.2",
|
|
61
46
|
"jest": "^29.7.0",
|
|
47
|
+
"nock": "^13.3.1",
|
|
62
48
|
"ts-jest": "^29.2.5",
|
|
63
49
|
"tsx": "^4.20.5",
|
|
64
50
|
"typedoc": "^0.25.13",
|
package/dist/index.cjs
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.readJavaTronInstallOptionsFromPackageJson = exports.parseJavaTronInstallCliOptions = exports.installJavaTron = exports.installJavaRuntime = exports.getJavaTronCacheDirectory = exports.cleanJavaTronCache = exports.JAVA_TRON_DEFAULT_JAVA_RUNTIME = exports.JAVA_TRON_DEFAULT_FULL_NODE = void 0;
|
|
4
|
-
var install_1 = require("./install.cjs");
|
|
5
|
-
Object.defineProperty(exports, "JAVA_TRON_DEFAULT_FULL_NODE", { enumerable: true, get: function () { return install_1.JAVA_TRON_DEFAULT_FULL_NODE; } });
|
|
6
|
-
Object.defineProperty(exports, "JAVA_TRON_DEFAULT_JAVA_RUNTIME", { enumerable: true, get: function () { return install_1.JAVA_TRON_DEFAULT_JAVA_RUNTIME; } });
|
|
7
|
-
Object.defineProperty(exports, "cleanJavaTronCache", { enumerable: true, get: function () { return install_1.cleanJavaTronCache; } });
|
|
8
|
-
Object.defineProperty(exports, "getJavaTronCacheDirectory", { enumerable: true, get: function () { return install_1.getJavaTronCacheDirectory; } });
|
|
9
|
-
Object.defineProperty(exports, "installJavaRuntime", { enumerable: true, get: function () { return install_1.installJavaRuntime; } });
|
|
10
|
-
Object.defineProperty(exports, "installJavaTron", { enumerable: true, get: function () { return install_1.installJavaTron; } });
|
|
11
|
-
Object.defineProperty(exports, "parseJavaTronInstallCliOptions", { enumerable: true, get: function () { return install_1.parseJavaTronInstallCliOptions; } });
|
|
12
|
-
Object.defineProperty(exports, "readJavaTronInstallOptionsFromPackageJson", { enumerable: true, get: function () { return install_1.readJavaTronInstallOptionsFromPackageJson; } });
|
|
13
|
-
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,yCASmB;AARjB,sHAAA,2BAA2B,OAAA;AAC3B,yHAAA,8BAA8B,OAAA;AAC9B,6GAAA,kBAAkB,OAAA;AAClB,oHAAA,yBAAyB,OAAA;AACzB,6GAAA,kBAAkB,OAAA;AAClB,0GAAA,eAAe,OAAA;AACf,yHAAA,8BAA8B,OAAA;AAC9B,oIAAA,yCAAyC,OAAA","sourcesContent":["export {\n JAVA_TRON_DEFAULT_FULL_NODE,\n JAVA_TRON_DEFAULT_JAVA_RUNTIME,\n cleanJavaTronCache,\n getJavaTronCacheDirectory,\n installJavaRuntime,\n installJavaTron,\n parseJavaTronInstallCliOptions,\n readJavaTronInstallOptionsFromPackageJson,\n} from './install';\nexport type {\n JavaTronArtifactConfig,\n JavaTronArtifactPlatformConfig,\n JavaTronInstallDependencies,\n JavaTronInstallOptions,\n JavaTronInstallResult,\n JavaTronJavaRuntimeConfig,\n} from './install';\n"]}
|
package/dist/index.d.cts
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export { JAVA_TRON_DEFAULT_FULL_NODE, JAVA_TRON_DEFAULT_JAVA_RUNTIME, cleanJavaTronCache, getJavaTronCacheDirectory, installJavaRuntime, installJavaTron, parseJavaTronInstallCliOptions, readJavaTronInstallOptionsFromPackageJson, } from "./install.cjs";
|
|
2
|
-
export type { JavaTronArtifactConfig, JavaTronArtifactPlatformConfig, JavaTronInstallDependencies, JavaTronInstallOptions, JavaTronInstallResult, JavaTronJavaRuntimeConfig, } from "./install.cjs";
|
|
3
|
-
//# sourceMappingURL=index.d.cts.map
|
package/dist/index.d.cts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,8BAA8B,EAC9B,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EACf,8BAA8B,EAC9B,yCAAyC,GAC1C,sBAAkB;AACnB,YAAY,EACV,sBAAsB,EACtB,8BAA8B,EAC9B,2BAA2B,EAC3B,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,GAC1B,sBAAkB"}
|
package/dist/index.d.mts
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export { JAVA_TRON_DEFAULT_FULL_NODE, JAVA_TRON_DEFAULT_JAVA_RUNTIME, cleanJavaTronCache, getJavaTronCacheDirectory, installJavaRuntime, installJavaTron, parseJavaTronInstallCliOptions, readJavaTronInstallOptionsFromPackageJson, } from "./install.mjs";
|
|
2
|
-
export type { JavaTronArtifactConfig, JavaTronArtifactPlatformConfig, JavaTronInstallDependencies, JavaTronInstallOptions, JavaTronInstallResult, JavaTronJavaRuntimeConfig, } from "./install.mjs";
|
|
3
|
-
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,8BAA8B,EAC9B,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EACf,8BAA8B,EAC9B,yCAAyC,GAC1C,sBAAkB;AACnB,YAAY,EACV,sBAAsB,EACtB,8BAA8B,EAC9B,2BAA2B,EAC3B,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,GAC1B,sBAAkB"}
|
package/dist/index.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export { JAVA_TRON_DEFAULT_FULL_NODE, JAVA_TRON_DEFAULT_JAVA_RUNTIME, cleanJavaTronCache, getJavaTronCacheDirectory, installJavaRuntime, installJavaTron, parseJavaTronInstallCliOptions, readJavaTronInstallOptionsFromPackageJson } from "./install.mjs";
|
|
2
|
-
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,8BAA8B,EAC9B,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EACf,8BAA8B,EAC9B,yCAAyC,EAC1C,sBAAkB","sourcesContent":["export {\n JAVA_TRON_DEFAULT_FULL_NODE,\n JAVA_TRON_DEFAULT_JAVA_RUNTIME,\n cleanJavaTronCache,\n getJavaTronCacheDirectory,\n installJavaRuntime,\n installJavaTron,\n parseJavaTronInstallCliOptions,\n readJavaTronInstallOptionsFromPackageJson,\n} from './install';\nexport type {\n JavaTronArtifactConfig,\n JavaTronArtifactPlatformConfig,\n JavaTronInstallDependencies,\n JavaTronInstallOptions,\n JavaTronInstallResult,\n JavaTronJavaRuntimeConfig,\n} from './install';\n"]}
|