@metamask-previews/java-tron-up 0.0.0-preview-3e8f1945e → 0.0.0-preview-0f314298c
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 +4 -0
- package/dist/install.cjs +47 -242
- package/dist/install.cjs.map +1 -1
- package/dist/install.d.cts +4 -13
- package/dist/install.d.cts.map +1 -1
- package/dist/install.d.mts +4 -13
- package/dist/install.d.mts.map +1 -1
- package/dist/install.mjs +24 -219
- package/dist/install.mjs.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -11,6 +11,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
11
11
|
|
|
12
12
|
- Add the `@metamask/java-tron-up` package ([#9208](https://github.com/MetaMask/core/pull/9208)).
|
|
13
13
|
|
|
14
|
+
### Changed
|
|
15
|
+
|
|
16
|
+
- Adopt `@metamask/local-node-utils` for shared installer utilities ([#9235](https://github.com/MetaMask/core/pull/9235)).
|
|
17
|
+
|
|
14
18
|
### Fixed
|
|
15
19
|
|
|
16
20
|
- Parse `.yarnrc.yml` as YAML when detecting Yarn global cache, matching
|
package/dist/install.cjs
CHANGED
|
@@ -2,16 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.installJavaRuntime = exports.cleanJavaTronCache = exports.installJavaTron = exports.parseJavaTronInstallCliOptions = exports.readJavaTronInstallOptionsFromPackageJson = exports.getJavaTronCacheDirectory = exports.JAVA_TRON_DEFAULT_JAVA_RUNTIME = exports.JAVA_TRON_DEFAULT_FULL_NODE = void 0;
|
|
4
4
|
/* eslint-disable import-x/no-nodejs-modules, no-restricted-globals */
|
|
5
|
-
const
|
|
6
|
-
const node_crypto_1 = require("node:crypto");
|
|
5
|
+
const local_node_utils_1 = require("@metamask/local-node-utils");
|
|
7
6
|
const node_fs_1 = require("node:fs");
|
|
8
7
|
const promises_1 = require("node:fs/promises");
|
|
9
|
-
const node_http_1 = require("node:http");
|
|
10
|
-
const node_https_1 = require("node:https");
|
|
11
8
|
const node_os_1 = require("node:os");
|
|
12
9
|
const node_path_1 = require("node:path");
|
|
13
|
-
const promises_2 = require("node:stream/promises");
|
|
14
|
-
const yaml_1 = require("yaml");
|
|
15
10
|
const JAVA_TRON_CACHE_NAMESPACE = 'java-tron-up';
|
|
16
11
|
const FULL_NODE_CACHE_NAMESPACE = 'fullnode';
|
|
17
12
|
const JAVA_CACHE_NAMESPACE = 'java';
|
|
@@ -66,49 +61,30 @@ exports.JAVA_TRON_DEFAULT_JAVA_RUNTIME = {
|
|
|
66
61
|
},
|
|
67
62
|
};
|
|
68
63
|
function getJavaTronCacheDirectory({ cwd = process.cwd(), homeDirectory = (0, node_os_1.homedir)(), } = {}) {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
}
|
|
75
|
-
catch (error) {
|
|
76
|
-
if (isFileMissingError(error)) {
|
|
77
|
-
return (0, node_path_1.join)(cwd, '.metamask', 'cache');
|
|
78
|
-
}
|
|
79
|
-
console.warn(`Warning: Error reading ${yarnRcPath}, using local java-tron-up cache:`, error);
|
|
80
|
-
}
|
|
81
|
-
return enableGlobalCache
|
|
82
|
-
? (0, node_path_1.join)(homeDirectory, '.cache', 'metamask')
|
|
83
|
-
: (0, node_path_1.join)(cwd, '.metamask', 'cache');
|
|
64
|
+
return (0, local_node_utils_1.getMetamaskCacheDirectory)({
|
|
65
|
+
cwd,
|
|
66
|
+
homeDirectory,
|
|
67
|
+
toolName: JAVA_TRON_CACHE_NAMESPACE,
|
|
68
|
+
});
|
|
84
69
|
}
|
|
85
70
|
exports.getJavaTronCacheDirectory = getJavaTronCacheDirectory;
|
|
86
|
-
function readJavaTronInstallOptionsFromPackageJson({ cwd = process.cwd(), packageJsonPath
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
if (isFileMissingError(error)) {
|
|
93
|
-
return {};
|
|
94
|
-
}
|
|
95
|
-
throw error;
|
|
96
|
-
}
|
|
97
|
-
const packageJson = JSON.parse(raw);
|
|
98
|
-
const config = packageJson.javaTronUp ??
|
|
99
|
-
packageJson.javatronup ??
|
|
100
|
-
packageJson['java-tron-up'];
|
|
71
|
+
function readJavaTronInstallOptionsFromPackageJson({ cwd = process.cwd(), packageJsonPath, } = {}) {
|
|
72
|
+
const config = (0, local_node_utils_1.readPackageJsonToolConfig)({
|
|
73
|
+
cwd,
|
|
74
|
+
packageJsonPath,
|
|
75
|
+
configKeys: ['javaTronUp', 'javatronup', 'java-tron-up'],
|
|
76
|
+
});
|
|
101
77
|
const options = {};
|
|
102
|
-
if (config
|
|
78
|
+
if (typeof config.binDirectory === 'string') {
|
|
103
79
|
options.binDirectory = config.binDirectory;
|
|
104
80
|
}
|
|
105
|
-
if (config
|
|
81
|
+
if (typeof config.cacheDirectory === 'string') {
|
|
106
82
|
options.cacheDirectory = config.cacheDirectory;
|
|
107
83
|
}
|
|
108
|
-
if (config
|
|
84
|
+
if (config.fullNode && typeof config.fullNode === 'object') {
|
|
109
85
|
options.fullNode = config.fullNode;
|
|
110
86
|
}
|
|
111
|
-
if (config
|
|
87
|
+
if (config.javaRuntime && typeof config.javaRuntime === 'object') {
|
|
112
88
|
options.javaRuntime = config.javaRuntime;
|
|
113
89
|
}
|
|
114
90
|
return options;
|
|
@@ -123,31 +99,31 @@ function parseJavaTronInstallCliOptions(args) {
|
|
|
123
99
|
const value = args[index + 1];
|
|
124
100
|
switch (arg) {
|
|
125
101
|
case '--bin-directory':
|
|
126
|
-
options.binDirectory = readCliValue(arg, value);
|
|
102
|
+
options.binDirectory = (0, local_node_utils_1.readCliValue)(arg, value);
|
|
127
103
|
index += 1;
|
|
128
104
|
break;
|
|
129
105
|
case '--cache-directory':
|
|
130
|
-
options.cacheDirectory = readCliValue(arg, value);
|
|
106
|
+
options.cacheDirectory = (0, local_node_utils_1.readCliValue)(arg, value);
|
|
131
107
|
index += 1;
|
|
132
108
|
break;
|
|
133
109
|
case '--full-node-checksum':
|
|
134
|
-
fullNode.checksum = readCliValue(arg, value);
|
|
110
|
+
fullNode.checksum = (0, local_node_utils_1.readCliValue)(arg, value);
|
|
135
111
|
index += 1;
|
|
136
112
|
break;
|
|
137
113
|
case '--full-node-url':
|
|
138
|
-
fullNode.url = readCliValue(arg, value);
|
|
114
|
+
fullNode.url = (0, local_node_utils_1.readCliValue)(arg, value);
|
|
139
115
|
index += 1;
|
|
140
116
|
break;
|
|
141
117
|
case '--java-runtime-checksum':
|
|
142
|
-
javaRuntime.checksum = readCliValue(arg, value);
|
|
118
|
+
javaRuntime.checksum = (0, local_node_utils_1.readCliValue)(arg, value);
|
|
143
119
|
index += 1;
|
|
144
120
|
break;
|
|
145
121
|
case '--java-runtime-url':
|
|
146
|
-
javaRuntime.url = readCliValue(arg, value);
|
|
122
|
+
javaRuntime.url = (0, local_node_utils_1.readCliValue)(arg, value);
|
|
147
123
|
index += 1;
|
|
148
124
|
break;
|
|
149
125
|
case '--platform':
|
|
150
|
-
options.platform = readCliValue(arg, value);
|
|
126
|
+
options.platform = (0, local_node_utils_1.readCliValue)(arg, value);
|
|
151
127
|
index += 1;
|
|
152
128
|
break;
|
|
153
129
|
default:
|
|
@@ -157,14 +133,14 @@ function parseJavaTronInstallCliOptions(args) {
|
|
|
157
133
|
if (fullNode.url || fullNode.checksum) {
|
|
158
134
|
options.fullNode = {
|
|
159
135
|
platforms: {
|
|
160
|
-
current: requireCompletePlatformConfig(fullNode, 'FullNode CLI options'),
|
|
136
|
+
current: (0, local_node_utils_1.requireCompletePlatformConfig)(fullNode, 'FullNode CLI options'),
|
|
161
137
|
},
|
|
162
138
|
};
|
|
163
139
|
}
|
|
164
140
|
if (javaRuntime.url || javaRuntime.checksum) {
|
|
165
141
|
options.javaRuntime = {
|
|
166
142
|
platforms: {
|
|
167
|
-
current: requireCompletePlatformConfig(javaRuntime, 'Java runtime CLI options'),
|
|
143
|
+
current: (0, local_node_utils_1.requireCompletePlatformConfig)(javaRuntime, 'Java runtime CLI options'),
|
|
168
144
|
},
|
|
169
145
|
};
|
|
170
146
|
}
|
|
@@ -175,10 +151,10 @@ async function installJavaTron(options = {}, dependencies = {}) {
|
|
|
175
151
|
const cwd = options.cwd ?? process.cwd();
|
|
176
152
|
const cacheDirectory = options.cacheDirectory ?? getJavaTronCacheDirectory({ cwd });
|
|
177
153
|
const binDirectory = options.binDirectory ?? (0, node_path_1.join)(cwd, 'node_modules', '.bin');
|
|
178
|
-
const platformKey = options.platform ?? getPlatformKey();
|
|
179
|
-
const fullNode = mergeArtifactConfig(exports.JAVA_TRON_DEFAULT_FULL_NODE, options.fullNode);
|
|
180
|
-
const javaRuntime = mergeArtifactConfig(exports.JAVA_TRON_DEFAULT_JAVA_RUNTIME, options.javaRuntime);
|
|
181
|
-
const fullNodeConfig = resolvePlatformConfig(fullNode, platformKey, 'java-tron FullNode');
|
|
154
|
+
const platformKey = options.platform ?? (0, local_node_utils_1.getPlatformKey)();
|
|
155
|
+
const fullNode = (0, local_node_utils_1.mergeArtifactConfig)(exports.JAVA_TRON_DEFAULT_FULL_NODE, options.fullNode);
|
|
156
|
+
const javaRuntime = (0, local_node_utils_1.mergeArtifactConfig)(exports.JAVA_TRON_DEFAULT_JAVA_RUNTIME, options.javaRuntime);
|
|
157
|
+
const fullNodeConfig = (0, local_node_utils_1.resolvePlatformConfig)(fullNode, platformKey, 'java-tron FullNode');
|
|
182
158
|
const javaBinary = options.javaBinary ??
|
|
183
159
|
(await installJavaRuntime({
|
|
184
160
|
cacheDirectory,
|
|
@@ -189,11 +165,12 @@ async function installJavaTron(options = {}, dependencies = {}) {
|
|
|
189
165
|
cacheDirectory,
|
|
190
166
|
config: fullNodeConfig,
|
|
191
167
|
}, dependencies);
|
|
192
|
-
const binaryPath = await installExecutableWrapper({
|
|
168
|
+
const binaryPath = await (0, local_node_utils_1.installExecutableWrapper)({
|
|
193
169
|
binDirectory,
|
|
194
170
|
commandName: 'java-tron',
|
|
195
171
|
executableArgs: ['-jar', fullNodeResult.fullNodeJar],
|
|
196
172
|
executablePath: javaBinary,
|
|
173
|
+
pathResolution: 'absolute',
|
|
197
174
|
});
|
|
198
175
|
return {
|
|
199
176
|
binaryPath,
|
|
@@ -208,15 +185,15 @@ exports.installJavaTron = installJavaTron;
|
|
|
208
185
|
async function cleanJavaTronCache(options = {}) {
|
|
209
186
|
const cwd = options.cwd ?? process.cwd();
|
|
210
187
|
const cacheDirectory = options.cacheDirectory ?? getJavaTronCacheDirectory({ cwd });
|
|
211
|
-
await (0,
|
|
212
|
-
|
|
213
|
-
|
|
188
|
+
await (0, local_node_utils_1.cleanInstallerCache)({
|
|
189
|
+
cacheDirectory,
|
|
190
|
+
namespace: JAVA_TRON_CACHE_NAMESPACE,
|
|
214
191
|
});
|
|
215
192
|
}
|
|
216
193
|
exports.cleanJavaTronCache = cleanJavaTronCache;
|
|
217
|
-
async function installJavaRuntime({ cacheDirectory = getJavaTronCacheDirectory(), javaRuntime = exports.JAVA_TRON_DEFAULT_JAVA_RUNTIME, platform = getPlatformKey(), } = {}, dependencies = {}) {
|
|
218
|
-
const platformConfig = resolvePlatformConfig(javaRuntime, platform, 'java-tron Java runtime');
|
|
219
|
-
const cacheKey = getCacheKey(platformConfig);
|
|
194
|
+
async function installJavaRuntime({ cacheDirectory = getJavaTronCacheDirectory(), javaRuntime = exports.JAVA_TRON_DEFAULT_JAVA_RUNTIME, platform = (0, local_node_utils_1.getPlatformKey)(), } = {}, dependencies = {}) {
|
|
195
|
+
const platformConfig = (0, local_node_utils_1.resolvePlatformConfig)(javaRuntime, platform, 'java-tron Java runtime');
|
|
196
|
+
const cacheKey = (0, local_node_utils_1.getCacheKey)(platformConfig);
|
|
220
197
|
const cacheRoot = (0, node_path_1.join)(cacheDirectory, JAVA_TRON_CACHE_NAMESPACE, JAVA_CACHE_NAMESPACE, cacheKey);
|
|
221
198
|
const sourceChecksumPath = (0, node_path_1.join)(cacheRoot, '.source-checksum');
|
|
222
199
|
const existingJavaBinary = findJavaBinary(cacheRoot);
|
|
@@ -227,14 +204,14 @@ async function installJavaRuntime({ cacheDirectory = getJavaTronCacheDirectory()
|
|
|
227
204
|
}
|
|
228
205
|
const tempRoot = `${cacheRoot}.downloading`;
|
|
229
206
|
const archivePath = (0, node_path_1.join)(tempRoot, 'java-runtime.tar.gz');
|
|
230
|
-
const downloadFile = dependencies.downloadFile ?? downloadFileFromUrl;
|
|
231
|
-
const extractArchive = dependencies.extractArchive ?? extractTarGzArchive;
|
|
207
|
+
const downloadFile = dependencies.downloadFile ?? local_node_utils_1.downloadFileFromUrl;
|
|
208
|
+
const extractArchive = dependencies.extractArchive ?? local_node_utils_1.extractTarGzArchive;
|
|
232
209
|
await (0, promises_1.rm)(tempRoot, { force: true, recursive: true });
|
|
233
210
|
await (0, promises_1.rm)(cacheRoot, { force: true, recursive: true });
|
|
234
211
|
await (0, promises_1.mkdir)(tempRoot, { recursive: true });
|
|
235
212
|
try {
|
|
236
213
|
await downloadFile(platformConfig.url, archivePath);
|
|
237
|
-
await verifyFileChecksum(archivePath, platformConfig.checksum, 'Downloaded Java runtime');
|
|
214
|
+
await (0, local_node_utils_1.verifyFileChecksum)(archivePath, platformConfig.checksum, 'Downloaded Java runtime');
|
|
238
215
|
await extractArchive(archivePath, tempRoot);
|
|
239
216
|
const javaBinary = findJavaBinary(tempRoot);
|
|
240
217
|
if (!javaBinary) {
|
|
@@ -253,22 +230,22 @@ async function installJavaRuntime({ cacheDirectory = getJavaTronCacheDirectory()
|
|
|
253
230
|
}
|
|
254
231
|
exports.installJavaRuntime = installJavaRuntime;
|
|
255
232
|
async function installFullNodeJar({ cacheDirectory, config, }, dependencies) {
|
|
256
|
-
const cacheKey = getCacheKey(config);
|
|
233
|
+
const cacheKey = (0, local_node_utils_1.getCacheKey)(config);
|
|
257
234
|
const cacheRoot = (0, node_path_1.join)(cacheDirectory, JAVA_TRON_CACHE_NAMESPACE, FULL_NODE_CACHE_NAMESPACE, cacheKey);
|
|
258
235
|
const fullNodeJar = (0, node_path_1.join)(cacheRoot, 'FullNode.jar');
|
|
259
236
|
if ((0, node_fs_1.existsSync)(fullNodeJar)) {
|
|
260
|
-
await verifyFileChecksum(fullNodeJar, config.checksum, 'Cached java-tron FullNode');
|
|
237
|
+
await (0, local_node_utils_1.verifyFileChecksum)(fullNodeJar, config.checksum, 'Cached java-tron FullNode');
|
|
261
238
|
return { cacheHit: true, fullNodeJar };
|
|
262
239
|
}
|
|
263
240
|
const tempRoot = `${cacheRoot}.downloading`;
|
|
264
241
|
const tempFullNodeJar = (0, node_path_1.join)(tempRoot, 'FullNode.jar');
|
|
265
|
-
const downloadFile = dependencies.downloadFile ?? downloadFileFromUrl;
|
|
242
|
+
const downloadFile = dependencies.downloadFile ?? local_node_utils_1.downloadFileFromUrl;
|
|
266
243
|
await (0, promises_1.rm)(tempRoot, { force: true, recursive: true });
|
|
267
244
|
await (0, promises_1.rm)(cacheRoot, { force: true, recursive: true });
|
|
268
245
|
await (0, promises_1.mkdir)(tempRoot, { recursive: true });
|
|
269
246
|
try {
|
|
270
247
|
await downloadFile(config.url, tempFullNodeJar);
|
|
271
|
-
await verifyFileChecksum(tempFullNodeJar, config.checksum, 'Downloaded java-tron FullNode');
|
|
248
|
+
await (0, local_node_utils_1.verifyFileChecksum)(tempFullNodeJar, config.checksum, 'Downloaded java-tron FullNode');
|
|
272
249
|
await (0, promises_1.mkdir)((0, node_path_1.dirname)(cacheRoot), { recursive: true });
|
|
273
250
|
await (0, promises_1.rename)(tempRoot, cacheRoot);
|
|
274
251
|
return { cacheHit: false, fullNodeJar };
|
|
@@ -279,145 +256,17 @@ async function installFullNodeJar({ cacheDirectory, config, }, dependencies) {
|
|
|
279
256
|
throw error;
|
|
280
257
|
}
|
|
281
258
|
}
|
|
282
|
-
async function installExecutableWrapper({ binDirectory, commandName, executableArgs = [], executablePath, }) {
|
|
283
|
-
const binaryPath = (0, node_path_1.join)(binDirectory, commandName);
|
|
284
|
-
const resolvedExecutablePath = (0, node_path_1.resolve)(executablePath);
|
|
285
|
-
await (0, promises_1.mkdir)(binDirectory, { recursive: true });
|
|
286
|
-
await (0, promises_1.unlink)(binaryPath).catch((error) => {
|
|
287
|
-
if (!isFileMissingError(error)) {
|
|
288
|
-
throw error;
|
|
289
|
-
}
|
|
290
|
-
});
|
|
291
|
-
await (0, promises_1.writeFile)(binaryPath, `#!/usr/bin/env node
|
|
292
|
-
const { spawnSync } = require('node:child_process');
|
|
293
|
-
|
|
294
|
-
const executablePath = ${JSON.stringify(resolvedExecutablePath)};
|
|
295
|
-
const executableArgs = ${JSON.stringify(executableArgs)};
|
|
296
|
-
const result = spawnSync(executablePath, executableArgs.concat(process.argv.slice(2)), {
|
|
297
|
-
stdio: 'inherit',
|
|
298
|
-
});
|
|
299
|
-
|
|
300
|
-
if (result.error) {
|
|
301
|
-
console.error(result.error.message);
|
|
302
|
-
process.exit(1);
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
if (result.signal) {
|
|
306
|
-
process.kill(process.pid, result.signal);
|
|
307
|
-
process.exit(1);
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
process.exit(result.status ?? 0);
|
|
311
|
-
`);
|
|
312
|
-
await (0, promises_1.chmod)(binaryPath, 0o755);
|
|
313
|
-
return binaryPath;
|
|
314
|
-
}
|
|
315
|
-
function mergeArtifactConfig(defaults, override) {
|
|
316
|
-
if (!override) {
|
|
317
|
-
return defaults;
|
|
318
|
-
}
|
|
319
|
-
return {
|
|
320
|
-
version: override.version ?? defaults.version,
|
|
321
|
-
platforms: { ...defaults.platforms, ...override.platforms },
|
|
322
|
-
};
|
|
323
|
-
}
|
|
324
|
-
function resolvePlatformConfig(config, platform, label) {
|
|
325
|
-
const platformConfig = config.platforms.current ?? config.platforms[platform];
|
|
326
|
-
if (!platformConfig) {
|
|
327
|
-
throw new Error(`No ${label} is configured for ${platform}.`);
|
|
328
|
-
}
|
|
329
|
-
return platformConfig;
|
|
330
|
-
}
|
|
331
|
-
function requireCompletePlatformConfig(config, label) {
|
|
332
|
-
if (!config.url || !config.checksum) {
|
|
333
|
-
throw new Error(`${label} require both a URL and a checksum.`);
|
|
334
|
-
}
|
|
335
|
-
return {
|
|
336
|
-
checksum: config.checksum,
|
|
337
|
-
url: config.url,
|
|
338
|
-
};
|
|
339
|
-
}
|
|
340
|
-
function getCacheKey(config) {
|
|
341
|
-
return (0, node_crypto_1.createHash)('sha256')
|
|
342
|
-
.update(`${config.url}:${config.checksum}`)
|
|
343
|
-
.digest('hex');
|
|
344
|
-
}
|
|
345
|
-
async function verifyFileChecksum(filePath, expectedChecksum, label) {
|
|
346
|
-
const hash = (0, node_crypto_1.createHash)('sha256');
|
|
347
|
-
await (0, promises_2.pipeline)((0, node_fs_1.createReadStream)(filePath), hash);
|
|
348
|
-
const checksum = hash.digest('hex');
|
|
349
|
-
if (checksum !== expectedChecksum) {
|
|
350
|
-
throw new Error(`${label} checksum mismatch. Expected ${expectedChecksum}, got ${checksum}.`);
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
async function downloadFileFromUrl(url, destination) {
|
|
354
|
-
await (0, promises_1.mkdir)((0, node_path_1.dirname)(destination), { recursive: true });
|
|
355
|
-
await (0, promises_2.pipeline)(await openDownloadStream(new URL(url)), (0, node_fs_1.createWriteStream)(destination));
|
|
356
|
-
}
|
|
357
|
-
async function openDownloadStream(url, redirectsRemaining = 5) {
|
|
358
|
-
const request = url.protocol === 'http:' ? node_http_1.request : node_https_1.request;
|
|
359
|
-
return await new Promise((resolvePromise, rejectPromise) => {
|
|
360
|
-
const req = request(url, (response) => {
|
|
361
|
-
const { headers, statusCode, statusMessage } = response;
|
|
362
|
-
if (statusCode &&
|
|
363
|
-
statusCode >= 300 &&
|
|
364
|
-
statusCode < 400 &&
|
|
365
|
-
headers.location) {
|
|
366
|
-
response.resume();
|
|
367
|
-
if (redirectsRemaining <= 0) {
|
|
368
|
-
rejectPromise(new Error(`Too many redirects downloading ${url}`));
|
|
369
|
-
return;
|
|
370
|
-
}
|
|
371
|
-
openDownloadStream(new URL(headers.location, url), redirectsRemaining - 1)
|
|
372
|
-
.then(resolvePromise)
|
|
373
|
-
.catch(rejectPromise);
|
|
374
|
-
return;
|
|
375
|
-
}
|
|
376
|
-
if (!statusCode || statusCode < 200 || statusCode >= 300) {
|
|
377
|
-
response.resume();
|
|
378
|
-
rejectPromise(new Error(`Request to ${url} failed with ${statusCode ?? 'unknown'} ${statusMessage ?? ''}`.trim()));
|
|
379
|
-
return;
|
|
380
|
-
}
|
|
381
|
-
resolvePromise(response);
|
|
382
|
-
});
|
|
383
|
-
req.on('error', rejectPromise);
|
|
384
|
-
req.end();
|
|
385
|
-
});
|
|
386
|
-
}
|
|
387
|
-
async function extractTarGzArchive(archivePath, destination) {
|
|
388
|
-
await runCommand('tar', ['-xzf', archivePath, '-C', destination]);
|
|
389
|
-
}
|
|
390
|
-
async function runCommand(command, args) {
|
|
391
|
-
await new Promise((resolvePromise, rejectPromise) => {
|
|
392
|
-
const child = (0, node_child_process_1.spawn)(command, args, {
|
|
393
|
-
shell: false,
|
|
394
|
-
stdio: ['ignore', 'ignore', 'pipe'],
|
|
395
|
-
});
|
|
396
|
-
let stderr = '';
|
|
397
|
-
child.stderr.on('data', (chunk) => {
|
|
398
|
-
stderr += chunk.toString();
|
|
399
|
-
});
|
|
400
|
-
child.on('error', rejectPromise);
|
|
401
|
-
child.on('close', (code) => {
|
|
402
|
-
if (code === 0) {
|
|
403
|
-
resolvePromise();
|
|
404
|
-
return;
|
|
405
|
-
}
|
|
406
|
-
rejectPromise(new Error(`${command} ${args.join(' ')} exited with code ${code}: ${stderr}`));
|
|
407
|
-
});
|
|
408
|
-
});
|
|
409
|
-
}
|
|
410
259
|
function findJavaBinary(root) {
|
|
411
|
-
if (!isDirectory(root)) {
|
|
260
|
+
if (!(0, local_node_utils_1.isDirectory)(root)) {
|
|
412
261
|
return undefined;
|
|
413
262
|
}
|
|
414
263
|
const candidate = (0, node_path_1.join)(root, 'bin', 'java');
|
|
415
|
-
if (isFile(candidate)) {
|
|
264
|
+
if ((0, local_node_utils_1.isFile)(candidate)) {
|
|
416
265
|
return candidate;
|
|
417
266
|
}
|
|
418
267
|
for (const entry of (0, node_fs_1.readdirSync)(root)) {
|
|
419
268
|
const child = (0, node_path_1.join)(root, entry);
|
|
420
|
-
if (!isDirectory(child)) {
|
|
269
|
+
if (!(0, local_node_utils_1.isDirectory)(child)) {
|
|
421
270
|
continue;
|
|
422
271
|
}
|
|
423
272
|
const found = findJavaBinary(child);
|
|
@@ -427,48 +276,4 @@ function findJavaBinary(root) {
|
|
|
427
276
|
}
|
|
428
277
|
return undefined;
|
|
429
278
|
}
|
|
430
|
-
function isDirectory(path) {
|
|
431
|
-
try {
|
|
432
|
-
return (0, node_fs_1.statSync)(path).isDirectory();
|
|
433
|
-
}
|
|
434
|
-
catch {
|
|
435
|
-
return false;
|
|
436
|
-
}
|
|
437
|
-
}
|
|
438
|
-
function isFile(path) {
|
|
439
|
-
try {
|
|
440
|
-
return (0, node_fs_1.statSync)(path).isFile();
|
|
441
|
-
}
|
|
442
|
-
catch {
|
|
443
|
-
return false;
|
|
444
|
-
}
|
|
445
|
-
}
|
|
446
|
-
function getPlatformKey() {
|
|
447
|
-
return `${(0, node_os_1.platform)()}-${normalizeSystemArchitecture()}`;
|
|
448
|
-
}
|
|
449
|
-
function normalizeSystemArchitecture(architecture = (0, node_os_1.arch)()) {
|
|
450
|
-
if (architecture === 'x64' && (0, node_os_1.platform)() === 'darwin') {
|
|
451
|
-
const result = (0, node_child_process_1.spawnSync)('sysctl', ['-n', 'sysctl.proc_translated'], {
|
|
452
|
-
encoding: 'utf8',
|
|
453
|
-
shell: false,
|
|
454
|
-
stdio: ['ignore', 'pipe', 'ignore'],
|
|
455
|
-
});
|
|
456
|
-
if (result.stdout.trim() === '1') {
|
|
457
|
-
return 'arm64';
|
|
458
|
-
}
|
|
459
|
-
}
|
|
460
|
-
return architecture;
|
|
461
|
-
}
|
|
462
|
-
function readCliValue(option, value) {
|
|
463
|
-
if (!value || value.startsWith('--')) {
|
|
464
|
-
throw new Error(`${option} requires a value.`);
|
|
465
|
-
}
|
|
466
|
-
return value;
|
|
467
|
-
}
|
|
468
|
-
function isFileMissingError(error) {
|
|
469
|
-
return (typeof error === 'object' &&
|
|
470
|
-
error !== null &&
|
|
471
|
-
Object.prototype.hasOwnProperty.call(error, 'code') &&
|
|
472
|
-
error.code === 'ENOENT');
|
|
473
|
-
}
|
|
474
279
|
//# sourceMappingURL=install.cjs.map
|
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 createReadStream,\n createWriteStream,\n existsSync,\n readdirSync,\n readFileSync,\n statSync,\n} from 'node:fs';\nimport { chmod, mkdir, rename, rm, unlink, writeFile } 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, resolve } from 'node:path';\nimport { pipeline } from 'node:stream/promises';\nimport { parse as parseYaml } from 'yaml';\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 let enableGlobalCache = false;\n\n try {\n const parsedConfig = parseYaml(readFileSync(yarnRcPath, 'utf8'));\n enableGlobalCache = parsedConfig?.enableGlobalCache ?? false;\n } catch (error) {\n if (isFileMissingError(error)) {\n return join(cwd, '.metamask', 'cache');\n }\n console.warn(\n `Warning: Error reading ${yarnRcPath}, using local java-tron-up cache:`,\n error,\n );\n }\n\n return enableGlobalCache\n ? join(homeDirectory, '.cache', 'metamask')\n : 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 let raw: string;\n try {\n raw = readFileSync(packageJsonPath, 'utf8');\n } catch (error) {\n if (isFileMissingError(error)) {\n return {};\n }\n throw error;\n }\n const packageJson = JSON.parse(raw) 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 fullNode = mergeArtifactConfig(\n JAVA_TRON_DEFAULT_FULL_NODE,\n options.fullNode,\n );\n const javaRuntime = mergeArtifactConfig(\n JAVA_TRON_DEFAULT_JAVA_RUNTIME,\n options.javaRuntime,\n );\n const fullNodeConfig = resolvePlatformConfig(\n fullNode,\n platformKey,\n 'java-tron FullNode',\n );\n const javaBinary =\n options.javaBinary ??\n (await installJavaRuntime(\n {\n cacheDirectory,\n javaRuntime,\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 installExecutableWrapper({\n binDirectory,\n commandName: 'java-tron',\n executableArgs: ['-jar', fullNodeResult.fullNodeJar],\n executablePath: javaBinary,\n });\n\n return {\n binaryPath,\n cacheHit: fullNodeResult.cacheHit,\n checksum: fullNodeConfig.checksum,\n fullNodeJar: fullNodeResult.fullNodeJar,\n javaBinary,\n version: fullNode.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 sourceChecksumPath = join(cacheRoot, '.source-checksum');\n const existingJavaBinary = findJavaBinary(cacheRoot);\n\n if (\n existingJavaBinary &&\n existsSync(sourceChecksumPath) &&\n readFileSync(sourceChecksumPath, 'utf8') === platformConfig.checksum\n ) {\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 writeFile(\n join(tempRoot, '.source-checksum'),\n platformConfig.checksum,\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 installExecutableWrapper({\n binDirectory,\n commandName,\n executableArgs = [],\n executablePath,\n}: {\n binDirectory: string;\n commandName: string;\n executableArgs?: string[];\n executablePath: string;\n}): Promise<string> {\n const binaryPath = join(binDirectory, commandName);\n const resolvedExecutablePath = resolve(executablePath);\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');\n\nconst executablePath = ${JSON.stringify(resolvedExecutablePath)};\nconst executableArgs = ${JSON.stringify(executableArgs)};\nconst result = spawnSync(executablePath, executableArgs.concat(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 process.exit(1);\n}\n\nprocess.exit(result.status ?? 0);\n`,\n );\n await chmod(binaryPath, 0o755);\n\n return binaryPath;\n}\n\nfunction mergeArtifactConfig(\n defaults: JavaTronArtifactConfig,\n override: JavaTronArtifactConfig | undefined,\n): JavaTronArtifactConfig {\n if (!override) {\n return defaults;\n }\n return {\n version: override.version ?? defaults.version,\n platforms: { ...defaults.platforms, ...override.platforms },\n };\n}\n\nfunction resolvePlatformConfig(\n config: JavaTronArtifactConfig,\n platform: string,\n label: string,\n): JavaTronArtifactPlatformConfig {\n const platformConfig = config.platforms.current ?? config.platforms[platform];\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 hash = createHash('sha256');\n await pipeline(createReadStream(filePath), hash);\n const checksum = hash.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 {\n cleanInstallerCache,\n downloadFileFromUrl,\n extractTarGzArchive,\n getCacheKey,\n getMetamaskCacheDirectory,\n getPlatformKey,\n installExecutableWrapper,\n isDirectory,\n isFile,\n mergeArtifactConfig,\n readCliValue,\n readPackageJsonToolConfig,\n requireCompletePlatformConfig,\n resolvePlatformConfig,\n verifyFileChecksum,\n} from '@metamask/local-node-utils';\nimport type {\n ArtifactConfig,\n ArtifactPlatformConfig,\n InstallDependencies,\n} from '@metamask/local-node-utils';\nimport { existsSync, readdirSync, readFileSync } from 'node:fs';\nimport { mkdir, rename, rm, writeFile } from 'node:fs/promises';\nimport { homedir } from 'node:os';\nimport { dirname, join } from 'node:path';\n\nconst JAVA_TRON_CACHE_NAMESPACE = 'java-tron-up';\nconst FULL_NODE_CACHE_NAMESPACE = 'fullnode';\nconst JAVA_CACHE_NAMESPACE = 'java';\n\nexport type JavaTronArtifactConfig = ArtifactConfig;\n\nexport type JavaTronArtifactPlatformConfig = ArtifactPlatformConfig;\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 = InstallDependencies;\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 return getMetamaskCacheDirectory({\n cwd,\n homeDirectory,\n toolName: JAVA_TRON_CACHE_NAMESPACE,\n });\n}\n\nexport function readJavaTronInstallOptionsFromPackageJson({\n cwd = process.cwd(),\n packageJsonPath,\n}: {\n cwd?: string;\n packageJsonPath?: string;\n} = {}): JavaTronInstallOptions {\n const config = readPackageJsonToolConfig({\n cwd,\n packageJsonPath,\n configKeys: ['javaTronUp', 'javatronup', 'java-tron-up'],\n });\n const options: JavaTronInstallOptions = {};\n\n if (typeof config.binDirectory === 'string') {\n options.binDirectory = config.binDirectory;\n }\n if (typeof config.cacheDirectory === 'string') {\n options.cacheDirectory = config.cacheDirectory;\n }\n if (config.fullNode && typeof config.fullNode === 'object') {\n options.fullNode = config.fullNode as JavaTronArtifactConfig;\n }\n if (config.javaRuntime && typeof config.javaRuntime === 'object') {\n options.javaRuntime = config.javaRuntime as JavaTronJavaRuntimeConfig;\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 fullNode = mergeArtifactConfig(\n JAVA_TRON_DEFAULT_FULL_NODE,\n options.fullNode,\n );\n const javaRuntime = mergeArtifactConfig(\n JAVA_TRON_DEFAULT_JAVA_RUNTIME,\n options.javaRuntime,\n );\n const fullNodeConfig = resolvePlatformConfig(\n fullNode,\n platformKey,\n 'java-tron FullNode',\n );\n const javaBinary =\n options.javaBinary ??\n (await installJavaRuntime(\n {\n cacheDirectory,\n javaRuntime,\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 installExecutableWrapper({\n binDirectory,\n commandName: 'java-tron',\n executableArgs: ['-jar', fullNodeResult.fullNodeJar],\n executablePath: javaBinary,\n pathResolution: 'absolute',\n });\n\n return {\n binaryPath,\n cacheHit: fullNodeResult.cacheHit,\n checksum: fullNodeConfig.checksum,\n fullNodeJar: fullNodeResult.fullNodeJar,\n javaBinary,\n version: fullNode.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 cleanInstallerCache({\n cacheDirectory,\n namespace: JAVA_TRON_CACHE_NAMESPACE,\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 sourceChecksumPath = join(cacheRoot, '.source-checksum');\n const existingJavaBinary = findJavaBinary(cacheRoot);\n\n if (\n existingJavaBinary &&\n existsSync(sourceChecksumPath) &&\n readFileSync(sourceChecksumPath, 'utf8') === platformConfig.checksum\n ) {\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 writeFile(\n join(tempRoot, '.source-checksum'),\n platformConfig.checksum,\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\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"]}
|
package/dist/install.d.cts
CHANGED
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
export type JavaTronArtifactPlatformConfig = {
|
|
6
|
-
checksum: string;
|
|
7
|
-
size?: number;
|
|
8
|
-
url: string;
|
|
9
|
-
};
|
|
1
|
+
import type { ArtifactConfig, ArtifactPlatformConfig, InstallDependencies } from "@metamask/local-node-utils";
|
|
2
|
+
export type JavaTronArtifactConfig = ArtifactConfig;
|
|
3
|
+
export type JavaTronArtifactPlatformConfig = ArtifactPlatformConfig;
|
|
10
4
|
export type JavaTronJavaRuntimeConfig = JavaTronArtifactConfig;
|
|
11
5
|
export type JavaTronInstallOptions = {
|
|
12
6
|
binDirectory?: string;
|
|
@@ -25,10 +19,7 @@ export type JavaTronInstallResult = {
|
|
|
25
19
|
javaBinary: string;
|
|
26
20
|
version?: string;
|
|
27
21
|
};
|
|
28
|
-
export type JavaTronInstallDependencies =
|
|
29
|
-
downloadFile?: (url: string, destination: string) => Promise<void>;
|
|
30
|
-
extractArchive?: (archivePath: string, destination: string) => Promise<void>;
|
|
31
|
-
};
|
|
22
|
+
export type JavaTronInstallDependencies = InstallDependencies;
|
|
32
23
|
export declare const JAVA_TRON_DEFAULT_FULL_NODE: JavaTronArtifactConfig;
|
|
33
24
|
export declare const JAVA_TRON_DEFAULT_JAVA_RUNTIME: JavaTronJavaRuntimeConfig;
|
|
34
25
|
export declare function getJavaTronCacheDirectory({ cwd, homeDirectory, }?: {
|
package/dist/install.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.cts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"install.d.cts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EACV,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACpB,mCAAmC;AAUpC,MAAM,MAAM,sBAAsB,GAAG,cAAc,CAAC;AAEpD,MAAM,MAAM,8BAA8B,GAAG,sBAAsB,CAAC;AAEpE,MAAM,MAAM,yBAAyB,GAAG,sBAAsB,CAAC;AAE/D,MAAM,MAAM,sBAAsB,GAAG;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,yBAAyB,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,mBAAmB,CAAC;AAE9D,eAAO,MAAM,2BAA2B,EAAE,sBA4BzC,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,yBA4B5C,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,EACxC,GAAmB,EACnB,aAAyB,GAC1B,GAAE;IACD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,MAAM,CAMd;AAED,wBAAgB,yCAAyC,CAAC,EACxD,GAAmB,EACnB,eAAe,GAChB,GAAE;IACD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,sBAAsB,CAsB9B;AAED,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,MAAM,EAAE,GACb,sBAAsB,CAkExB;AAED,wBAAsB,eAAe,CACnC,OAAO,GAAE,sBAA2B,EACpC,YAAY,GAAE,2BAAgC,GAC7C,OAAO,CAAC,qBAAqB,CAAC,CAqDhC;AAED,wBAAsB,kBAAkB,CACtC,OAAO,GAAE,IAAI,CAAC,sBAAsB,EAAE,gBAAgB,GAAG,KAAK,CAAM,GACnE,OAAO,CAAC,IAAI,CAAC,CASf;AAED,wBAAsB,kBAAkB,CACtC,EACE,cAA4C,EAC5C,WAA4C,EAC5C,QAA2B,GAC5B,GAAE;IACD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,yBAAyB,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACd,EACN,YAAY,GAAE,2BAAgC,GAC7C,OAAO,CAAC,MAAM,CAAC,CA8DjB"}
|
package/dist/install.d.mts
CHANGED
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
export type JavaTronArtifactPlatformConfig = {
|
|
6
|
-
checksum: string;
|
|
7
|
-
size?: number;
|
|
8
|
-
url: string;
|
|
9
|
-
};
|
|
1
|
+
import type { ArtifactConfig, ArtifactPlatformConfig, InstallDependencies } from "@metamask/local-node-utils";
|
|
2
|
+
export type JavaTronArtifactConfig = ArtifactConfig;
|
|
3
|
+
export type JavaTronArtifactPlatformConfig = ArtifactPlatformConfig;
|
|
10
4
|
export type JavaTronJavaRuntimeConfig = JavaTronArtifactConfig;
|
|
11
5
|
export type JavaTronInstallOptions = {
|
|
12
6
|
binDirectory?: string;
|
|
@@ -25,10 +19,7 @@ export type JavaTronInstallResult = {
|
|
|
25
19
|
javaBinary: string;
|
|
26
20
|
version?: string;
|
|
27
21
|
};
|
|
28
|
-
export type JavaTronInstallDependencies =
|
|
29
|
-
downloadFile?: (url: string, destination: string) => Promise<void>;
|
|
30
|
-
extractArchive?: (archivePath: string, destination: string) => Promise<void>;
|
|
31
|
-
};
|
|
22
|
+
export type JavaTronInstallDependencies = InstallDependencies;
|
|
32
23
|
export declare const JAVA_TRON_DEFAULT_FULL_NODE: JavaTronArtifactConfig;
|
|
33
24
|
export declare const JAVA_TRON_DEFAULT_JAVA_RUNTIME: JavaTronJavaRuntimeConfig;
|
|
34
25
|
export declare function getJavaTronCacheDirectory({ cwd, homeDirectory, }?: {
|
package/dist/install.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.mts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"install.d.mts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EACV,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACpB,mCAAmC;AAUpC,MAAM,MAAM,sBAAsB,GAAG,cAAc,CAAC;AAEpD,MAAM,MAAM,8BAA8B,GAAG,sBAAsB,CAAC;AAEpE,MAAM,MAAM,yBAAyB,GAAG,sBAAsB,CAAC;AAE/D,MAAM,MAAM,sBAAsB,GAAG;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,yBAAyB,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,mBAAmB,CAAC;AAE9D,eAAO,MAAM,2BAA2B,EAAE,sBA4BzC,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,yBA4B5C,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,EACxC,GAAmB,EACnB,aAAyB,GAC1B,GAAE;IACD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,MAAM,CAMd;AAED,wBAAgB,yCAAyC,CAAC,EACxD,GAAmB,EACnB,eAAe,GAChB,GAAE;IACD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,sBAAsB,CAsB9B;AAED,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,MAAM,EAAE,GACb,sBAAsB,CAkExB;AAED,wBAAsB,eAAe,CACnC,OAAO,GAAE,sBAA2B,EACpC,YAAY,GAAE,2BAAgC,GAC7C,OAAO,CAAC,qBAAqB,CAAC,CAqDhC;AAED,wBAAsB,kBAAkB,CACtC,OAAO,GAAE,IAAI,CAAC,sBAAsB,EAAE,gBAAgB,GAAG,KAAK,CAAM,GACnE,OAAO,CAAC,IAAI,CAAC,CASf;AAED,wBAAsB,kBAAkB,CACtC,EACE,cAA4C,EAC5C,WAA4C,EAC5C,QAA2B,GAC5B,GAAE;IACD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,yBAAyB,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACd,EACN,YAAY,GAAE,2BAAgC,GAC7C,OAAO,CAAC,MAAM,CAAC,CA8DjB"}
|
package/dist/install.mjs
CHANGED
|
@@ -1,14 +1,9 @@
|
|
|
1
1
|
/* eslint-disable import-x/no-nodejs-modules, no-restricted-globals */
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { request as requestHttps } from "node:https";
|
|
8
|
-
import { arch as osArch, homedir, platform as osPlatform } from "node:os";
|
|
9
|
-
import { dirname, join, resolve } from "node:path";
|
|
10
|
-
import { pipeline } from "node:stream/promises";
|
|
11
|
-
import { parse as parseYaml } from "yaml";
|
|
2
|
+
import { cleanInstallerCache, downloadFileFromUrl, extractTarGzArchive, getCacheKey, getMetamaskCacheDirectory, getPlatformKey, installExecutableWrapper, isDirectory, isFile, mergeArtifactConfig, readCliValue, readPackageJsonToolConfig, requireCompletePlatformConfig, resolvePlatformConfig, verifyFileChecksum } from "@metamask/local-node-utils";
|
|
3
|
+
import { existsSync, readdirSync, readFileSync } from "node:fs";
|
|
4
|
+
import { mkdir, rename, rm, writeFile } from "node:fs/promises";
|
|
5
|
+
import { homedir } from "node:os";
|
|
6
|
+
import { dirname, join } from "node:path";
|
|
12
7
|
const JAVA_TRON_CACHE_NAMESPACE = 'java-tron-up';
|
|
13
8
|
const FULL_NODE_CACHE_NAMESPACE = 'fullnode';
|
|
14
9
|
const JAVA_CACHE_NAMESPACE = 'java';
|
|
@@ -63,48 +58,29 @@ export const JAVA_TRON_DEFAULT_JAVA_RUNTIME = {
|
|
|
63
58
|
},
|
|
64
59
|
};
|
|
65
60
|
export function getJavaTronCacheDirectory({ cwd = process.cwd(), homeDirectory = homedir(), } = {}) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}
|
|
72
|
-
catch (error) {
|
|
73
|
-
if (isFileMissingError(error)) {
|
|
74
|
-
return join(cwd, '.metamask', 'cache');
|
|
75
|
-
}
|
|
76
|
-
console.warn(`Warning: Error reading ${yarnRcPath}, using local java-tron-up cache:`, error);
|
|
77
|
-
}
|
|
78
|
-
return enableGlobalCache
|
|
79
|
-
? join(homeDirectory, '.cache', 'metamask')
|
|
80
|
-
: join(cwd, '.metamask', 'cache');
|
|
61
|
+
return getMetamaskCacheDirectory({
|
|
62
|
+
cwd,
|
|
63
|
+
homeDirectory,
|
|
64
|
+
toolName: JAVA_TRON_CACHE_NAMESPACE,
|
|
65
|
+
});
|
|
81
66
|
}
|
|
82
|
-
export function readJavaTronInstallOptionsFromPackageJson({ cwd = process.cwd(), packageJsonPath
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
if (isFileMissingError(error)) {
|
|
89
|
-
return {};
|
|
90
|
-
}
|
|
91
|
-
throw error;
|
|
92
|
-
}
|
|
93
|
-
const packageJson = JSON.parse(raw);
|
|
94
|
-
const config = packageJson.javaTronUp ??
|
|
95
|
-
packageJson.javatronup ??
|
|
96
|
-
packageJson['java-tron-up'];
|
|
67
|
+
export function readJavaTronInstallOptionsFromPackageJson({ cwd = process.cwd(), packageJsonPath, } = {}) {
|
|
68
|
+
const config = readPackageJsonToolConfig({
|
|
69
|
+
cwd,
|
|
70
|
+
packageJsonPath,
|
|
71
|
+
configKeys: ['javaTronUp', 'javatronup', 'java-tron-up'],
|
|
72
|
+
});
|
|
97
73
|
const options = {};
|
|
98
|
-
if (config
|
|
74
|
+
if (typeof config.binDirectory === 'string') {
|
|
99
75
|
options.binDirectory = config.binDirectory;
|
|
100
76
|
}
|
|
101
|
-
if (config
|
|
77
|
+
if (typeof config.cacheDirectory === 'string') {
|
|
102
78
|
options.cacheDirectory = config.cacheDirectory;
|
|
103
79
|
}
|
|
104
|
-
if (config
|
|
80
|
+
if (config.fullNode && typeof config.fullNode === 'object') {
|
|
105
81
|
options.fullNode = config.fullNode;
|
|
106
82
|
}
|
|
107
|
-
if (config
|
|
83
|
+
if (config.javaRuntime && typeof config.javaRuntime === 'object') {
|
|
108
84
|
options.javaRuntime = config.javaRuntime;
|
|
109
85
|
}
|
|
110
86
|
return options;
|
|
@@ -188,6 +164,7 @@ export async function installJavaTron(options = {}, dependencies = {}) {
|
|
|
188
164
|
commandName: 'java-tron',
|
|
189
165
|
executableArgs: ['-jar', fullNodeResult.fullNodeJar],
|
|
190
166
|
executablePath: javaBinary,
|
|
167
|
+
pathResolution: 'absolute',
|
|
191
168
|
});
|
|
192
169
|
return {
|
|
193
170
|
binaryPath,
|
|
@@ -201,9 +178,9 @@ export async function installJavaTron(options = {}, dependencies = {}) {
|
|
|
201
178
|
export async function cleanJavaTronCache(options = {}) {
|
|
202
179
|
const cwd = options.cwd ?? process.cwd();
|
|
203
180
|
const cacheDirectory = options.cacheDirectory ?? getJavaTronCacheDirectory({ cwd });
|
|
204
|
-
await
|
|
205
|
-
|
|
206
|
-
|
|
181
|
+
await cleanInstallerCache({
|
|
182
|
+
cacheDirectory,
|
|
183
|
+
namespace: JAVA_TRON_CACHE_NAMESPACE,
|
|
207
184
|
});
|
|
208
185
|
}
|
|
209
186
|
export async function installJavaRuntime({ cacheDirectory = getJavaTronCacheDirectory(), javaRuntime = JAVA_TRON_DEFAULT_JAVA_RUNTIME, platform = getPlatformKey(), } = {}, dependencies = {}) {
|
|
@@ -270,134 +247,6 @@ async function installFullNodeJar({ cacheDirectory, config, }, dependencies) {
|
|
|
270
247
|
throw error;
|
|
271
248
|
}
|
|
272
249
|
}
|
|
273
|
-
async function installExecutableWrapper({ binDirectory, commandName, executableArgs = [], executablePath, }) {
|
|
274
|
-
const binaryPath = join(binDirectory, commandName);
|
|
275
|
-
const resolvedExecutablePath = resolve(executablePath);
|
|
276
|
-
await mkdir(binDirectory, { recursive: true });
|
|
277
|
-
await unlink(binaryPath).catch((error) => {
|
|
278
|
-
if (!isFileMissingError(error)) {
|
|
279
|
-
throw error;
|
|
280
|
-
}
|
|
281
|
-
});
|
|
282
|
-
await writeFile(binaryPath, `#!/usr/bin/env node
|
|
283
|
-
const { spawnSync } = require('node:child_process');
|
|
284
|
-
|
|
285
|
-
const executablePath = ${JSON.stringify(resolvedExecutablePath)};
|
|
286
|
-
const executableArgs = ${JSON.stringify(executableArgs)};
|
|
287
|
-
const result = spawnSync(executablePath, executableArgs.concat(process.argv.slice(2)), {
|
|
288
|
-
stdio: 'inherit',
|
|
289
|
-
});
|
|
290
|
-
|
|
291
|
-
if (result.error) {
|
|
292
|
-
console.error(result.error.message);
|
|
293
|
-
process.exit(1);
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
if (result.signal) {
|
|
297
|
-
process.kill(process.pid, result.signal);
|
|
298
|
-
process.exit(1);
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
process.exit(result.status ?? 0);
|
|
302
|
-
`);
|
|
303
|
-
await chmod(binaryPath, 0o755);
|
|
304
|
-
return binaryPath;
|
|
305
|
-
}
|
|
306
|
-
function mergeArtifactConfig(defaults, override) {
|
|
307
|
-
if (!override) {
|
|
308
|
-
return defaults;
|
|
309
|
-
}
|
|
310
|
-
return {
|
|
311
|
-
version: override.version ?? defaults.version,
|
|
312
|
-
platforms: { ...defaults.platforms, ...override.platforms },
|
|
313
|
-
};
|
|
314
|
-
}
|
|
315
|
-
function resolvePlatformConfig(config, platform, label) {
|
|
316
|
-
const platformConfig = config.platforms.current ?? config.platforms[platform];
|
|
317
|
-
if (!platformConfig) {
|
|
318
|
-
throw new Error(`No ${label} is configured for ${platform}.`);
|
|
319
|
-
}
|
|
320
|
-
return platformConfig;
|
|
321
|
-
}
|
|
322
|
-
function requireCompletePlatformConfig(config, label) {
|
|
323
|
-
if (!config.url || !config.checksum) {
|
|
324
|
-
throw new Error(`${label} require both a URL and a checksum.`);
|
|
325
|
-
}
|
|
326
|
-
return {
|
|
327
|
-
checksum: config.checksum,
|
|
328
|
-
url: config.url,
|
|
329
|
-
};
|
|
330
|
-
}
|
|
331
|
-
function getCacheKey(config) {
|
|
332
|
-
return createHash('sha256')
|
|
333
|
-
.update(`${config.url}:${config.checksum}`)
|
|
334
|
-
.digest('hex');
|
|
335
|
-
}
|
|
336
|
-
async function verifyFileChecksum(filePath, expectedChecksum, label) {
|
|
337
|
-
const hash = createHash('sha256');
|
|
338
|
-
await pipeline(createReadStream(filePath), hash);
|
|
339
|
-
const checksum = hash.digest('hex');
|
|
340
|
-
if (checksum !== expectedChecksum) {
|
|
341
|
-
throw new Error(`${label} checksum mismatch. Expected ${expectedChecksum}, got ${checksum}.`);
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
async function downloadFileFromUrl(url, destination) {
|
|
345
|
-
await mkdir(dirname(destination), { recursive: true });
|
|
346
|
-
await pipeline(await openDownloadStream(new URL(url)), createWriteStream(destination));
|
|
347
|
-
}
|
|
348
|
-
async function openDownloadStream(url, redirectsRemaining = 5) {
|
|
349
|
-
const request = url.protocol === 'http:' ? requestHttp : requestHttps;
|
|
350
|
-
return await new Promise((resolvePromise, rejectPromise) => {
|
|
351
|
-
const req = request(url, (response) => {
|
|
352
|
-
const { headers, statusCode, statusMessage } = response;
|
|
353
|
-
if (statusCode &&
|
|
354
|
-
statusCode >= 300 &&
|
|
355
|
-
statusCode < 400 &&
|
|
356
|
-
headers.location) {
|
|
357
|
-
response.resume();
|
|
358
|
-
if (redirectsRemaining <= 0) {
|
|
359
|
-
rejectPromise(new Error(`Too many redirects downloading ${url}`));
|
|
360
|
-
return;
|
|
361
|
-
}
|
|
362
|
-
openDownloadStream(new URL(headers.location, url), redirectsRemaining - 1)
|
|
363
|
-
.then(resolvePromise)
|
|
364
|
-
.catch(rejectPromise);
|
|
365
|
-
return;
|
|
366
|
-
}
|
|
367
|
-
if (!statusCode || statusCode < 200 || statusCode >= 300) {
|
|
368
|
-
response.resume();
|
|
369
|
-
rejectPromise(new Error(`Request to ${url} failed with ${statusCode ?? 'unknown'} ${statusMessage ?? ''}`.trim()));
|
|
370
|
-
return;
|
|
371
|
-
}
|
|
372
|
-
resolvePromise(response);
|
|
373
|
-
});
|
|
374
|
-
req.on('error', rejectPromise);
|
|
375
|
-
req.end();
|
|
376
|
-
});
|
|
377
|
-
}
|
|
378
|
-
async function extractTarGzArchive(archivePath, destination) {
|
|
379
|
-
await runCommand('tar', ['-xzf', archivePath, '-C', destination]);
|
|
380
|
-
}
|
|
381
|
-
async function runCommand(command, args) {
|
|
382
|
-
await new Promise((resolvePromise, rejectPromise) => {
|
|
383
|
-
const child = spawn(command, args, {
|
|
384
|
-
shell: false,
|
|
385
|
-
stdio: ['ignore', 'ignore', 'pipe'],
|
|
386
|
-
});
|
|
387
|
-
let stderr = '';
|
|
388
|
-
child.stderr.on('data', (chunk) => {
|
|
389
|
-
stderr += chunk.toString();
|
|
390
|
-
});
|
|
391
|
-
child.on('error', rejectPromise);
|
|
392
|
-
child.on('close', (code) => {
|
|
393
|
-
if (code === 0) {
|
|
394
|
-
resolvePromise();
|
|
395
|
-
return;
|
|
396
|
-
}
|
|
397
|
-
rejectPromise(new Error(`${command} ${args.join(' ')} exited with code ${code}: ${stderr}`));
|
|
398
|
-
});
|
|
399
|
-
});
|
|
400
|
-
}
|
|
401
250
|
function findJavaBinary(root) {
|
|
402
251
|
if (!isDirectory(root)) {
|
|
403
252
|
return undefined;
|
|
@@ -418,48 +267,4 @@ function findJavaBinary(root) {
|
|
|
418
267
|
}
|
|
419
268
|
return undefined;
|
|
420
269
|
}
|
|
421
|
-
function isDirectory(path) {
|
|
422
|
-
try {
|
|
423
|
-
return statSync(path).isDirectory();
|
|
424
|
-
}
|
|
425
|
-
catch {
|
|
426
|
-
return false;
|
|
427
|
-
}
|
|
428
|
-
}
|
|
429
|
-
function isFile(path) {
|
|
430
|
-
try {
|
|
431
|
-
return statSync(path).isFile();
|
|
432
|
-
}
|
|
433
|
-
catch {
|
|
434
|
-
return false;
|
|
435
|
-
}
|
|
436
|
-
}
|
|
437
|
-
function getPlatformKey() {
|
|
438
|
-
return `${osPlatform()}-${normalizeSystemArchitecture()}`;
|
|
439
|
-
}
|
|
440
|
-
function normalizeSystemArchitecture(architecture = osArch()) {
|
|
441
|
-
if (architecture === 'x64' && osPlatform() === 'darwin') {
|
|
442
|
-
const result = spawnSync('sysctl', ['-n', 'sysctl.proc_translated'], {
|
|
443
|
-
encoding: 'utf8',
|
|
444
|
-
shell: false,
|
|
445
|
-
stdio: ['ignore', 'pipe', 'ignore'],
|
|
446
|
-
});
|
|
447
|
-
if (result.stdout.trim() === '1') {
|
|
448
|
-
return 'arm64';
|
|
449
|
-
}
|
|
450
|
-
}
|
|
451
|
-
return architecture;
|
|
452
|
-
}
|
|
453
|
-
function readCliValue(option, value) {
|
|
454
|
-
if (!value || value.startsWith('--')) {
|
|
455
|
-
throw new Error(`${option} requires a value.`);
|
|
456
|
-
}
|
|
457
|
-
return value;
|
|
458
|
-
}
|
|
459
|
-
function isFileMissingError(error) {
|
|
460
|
-
return (typeof error === 'object' &&
|
|
461
|
-
error !== null &&
|
|
462
|
-
Object.prototype.hasOwnProperty.call(error, 'code') &&
|
|
463
|
-
error.code === 'ENOENT');
|
|
464
|
-
}
|
|
465
270
|
//# sourceMappingURL=install.mjs.map
|
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 createReadStream,\n createWriteStream,\n existsSync,\n readdirSync,\n readFileSync,\n statSync,\n} from 'node:fs';\nimport { chmod, mkdir, rename, rm, unlink, writeFile } 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, resolve } from 'node:path';\nimport { pipeline } from 'node:stream/promises';\nimport { parse as parseYaml } from 'yaml';\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 let enableGlobalCache = false;\n\n try {\n const parsedConfig = parseYaml(readFileSync(yarnRcPath, 'utf8'));\n enableGlobalCache = parsedConfig?.enableGlobalCache ?? false;\n } catch (error) {\n if (isFileMissingError(error)) {\n return join(cwd, '.metamask', 'cache');\n }\n console.warn(\n `Warning: Error reading ${yarnRcPath}, using local java-tron-up cache:`,\n error,\n );\n }\n\n return enableGlobalCache\n ? join(homeDirectory, '.cache', 'metamask')\n : 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 let raw: string;\n try {\n raw = readFileSync(packageJsonPath, 'utf8');\n } catch (error) {\n if (isFileMissingError(error)) {\n return {};\n }\n throw error;\n }\n const packageJson = JSON.parse(raw) 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 fullNode = mergeArtifactConfig(\n JAVA_TRON_DEFAULT_FULL_NODE,\n options.fullNode,\n );\n const javaRuntime = mergeArtifactConfig(\n JAVA_TRON_DEFAULT_JAVA_RUNTIME,\n options.javaRuntime,\n );\n const fullNodeConfig = resolvePlatformConfig(\n fullNode,\n platformKey,\n 'java-tron FullNode',\n );\n const javaBinary =\n options.javaBinary ??\n (await installJavaRuntime(\n {\n cacheDirectory,\n javaRuntime,\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 installExecutableWrapper({\n binDirectory,\n commandName: 'java-tron',\n executableArgs: ['-jar', fullNodeResult.fullNodeJar],\n executablePath: javaBinary,\n });\n\n return {\n binaryPath,\n cacheHit: fullNodeResult.cacheHit,\n checksum: fullNodeConfig.checksum,\n fullNodeJar: fullNodeResult.fullNodeJar,\n javaBinary,\n version: fullNode.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 sourceChecksumPath = join(cacheRoot, '.source-checksum');\n const existingJavaBinary = findJavaBinary(cacheRoot);\n\n if (\n existingJavaBinary &&\n existsSync(sourceChecksumPath) &&\n readFileSync(sourceChecksumPath, 'utf8') === platformConfig.checksum\n ) {\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 writeFile(\n join(tempRoot, '.source-checksum'),\n platformConfig.checksum,\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 installExecutableWrapper({\n binDirectory,\n commandName,\n executableArgs = [],\n executablePath,\n}: {\n binDirectory: string;\n commandName: string;\n executableArgs?: string[];\n executablePath: string;\n}): Promise<string> {\n const binaryPath = join(binDirectory, commandName);\n const resolvedExecutablePath = resolve(executablePath);\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');\n\nconst executablePath = ${JSON.stringify(resolvedExecutablePath)};\nconst executableArgs = ${JSON.stringify(executableArgs)};\nconst result = spawnSync(executablePath, executableArgs.concat(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 process.exit(1);\n}\n\nprocess.exit(result.status ?? 0);\n`,\n );\n await chmod(binaryPath, 0o755);\n\n return binaryPath;\n}\n\nfunction mergeArtifactConfig(\n defaults: JavaTronArtifactConfig,\n override: JavaTronArtifactConfig | undefined,\n): JavaTronArtifactConfig {\n if (!override) {\n return defaults;\n }\n return {\n version: override.version ?? defaults.version,\n platforms: { ...defaults.platforms, ...override.platforms },\n };\n}\n\nfunction resolvePlatformConfig(\n config: JavaTronArtifactConfig,\n platform: string,\n label: string,\n): JavaTronArtifactPlatformConfig {\n const platformConfig = config.platforms.current ?? config.platforms[platform];\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 hash = createHash('sha256');\n await pipeline(createReadStream(filePath), hash);\n const checksum = hash.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 {\n cleanInstallerCache,\n downloadFileFromUrl,\n extractTarGzArchive,\n getCacheKey,\n getMetamaskCacheDirectory,\n getPlatformKey,\n installExecutableWrapper,\n isDirectory,\n isFile,\n mergeArtifactConfig,\n readCliValue,\n readPackageJsonToolConfig,\n requireCompletePlatformConfig,\n resolvePlatformConfig,\n verifyFileChecksum,\n} from '@metamask/local-node-utils';\nimport type {\n ArtifactConfig,\n ArtifactPlatformConfig,\n InstallDependencies,\n} from '@metamask/local-node-utils';\nimport { existsSync, readdirSync, readFileSync } from 'node:fs';\nimport { mkdir, rename, rm, writeFile } from 'node:fs/promises';\nimport { homedir } from 'node:os';\nimport { dirname, join } from 'node:path';\n\nconst JAVA_TRON_CACHE_NAMESPACE = 'java-tron-up';\nconst FULL_NODE_CACHE_NAMESPACE = 'fullnode';\nconst JAVA_CACHE_NAMESPACE = 'java';\n\nexport type JavaTronArtifactConfig = ArtifactConfig;\n\nexport type JavaTronArtifactPlatformConfig = ArtifactPlatformConfig;\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 = InstallDependencies;\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 return getMetamaskCacheDirectory({\n cwd,\n homeDirectory,\n toolName: JAVA_TRON_CACHE_NAMESPACE,\n });\n}\n\nexport function readJavaTronInstallOptionsFromPackageJson({\n cwd = process.cwd(),\n packageJsonPath,\n}: {\n cwd?: string;\n packageJsonPath?: string;\n} = {}): JavaTronInstallOptions {\n const config = readPackageJsonToolConfig({\n cwd,\n packageJsonPath,\n configKeys: ['javaTronUp', 'javatronup', 'java-tron-up'],\n });\n const options: JavaTronInstallOptions = {};\n\n if (typeof config.binDirectory === 'string') {\n options.binDirectory = config.binDirectory;\n }\n if (typeof config.cacheDirectory === 'string') {\n options.cacheDirectory = config.cacheDirectory;\n }\n if (config.fullNode && typeof config.fullNode === 'object') {\n options.fullNode = config.fullNode as JavaTronArtifactConfig;\n }\n if (config.javaRuntime && typeof config.javaRuntime === 'object') {\n options.javaRuntime = config.javaRuntime as JavaTronJavaRuntimeConfig;\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 fullNode = mergeArtifactConfig(\n JAVA_TRON_DEFAULT_FULL_NODE,\n options.fullNode,\n );\n const javaRuntime = mergeArtifactConfig(\n JAVA_TRON_DEFAULT_JAVA_RUNTIME,\n options.javaRuntime,\n );\n const fullNodeConfig = resolvePlatformConfig(\n fullNode,\n platformKey,\n 'java-tron FullNode',\n );\n const javaBinary =\n options.javaBinary ??\n (await installJavaRuntime(\n {\n cacheDirectory,\n javaRuntime,\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 installExecutableWrapper({\n binDirectory,\n commandName: 'java-tron',\n executableArgs: ['-jar', fullNodeResult.fullNodeJar],\n executablePath: javaBinary,\n pathResolution: 'absolute',\n });\n\n return {\n binaryPath,\n cacheHit: fullNodeResult.cacheHit,\n checksum: fullNodeConfig.checksum,\n fullNodeJar: fullNodeResult.fullNodeJar,\n javaBinary,\n version: fullNode.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 cleanInstallerCache({\n cacheDirectory,\n namespace: JAVA_TRON_CACHE_NAMESPACE,\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 sourceChecksumPath = join(cacheRoot, '.source-checksum');\n const existingJavaBinary = findJavaBinary(cacheRoot);\n\n if (\n existingJavaBinary &&\n existsSync(sourceChecksumPath) &&\n readFileSync(sourceChecksumPath, 'utf8') === platformConfig.checksum\n ) {\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 writeFile(\n join(tempRoot, '.source-checksum'),\n platformConfig.checksum,\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\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"]}
|
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-0f314298c",
|
|
4
4
|
"description": "java-tron runtime installer for MetaMask E2E tests",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Ethereum",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"
|
|
57
|
+
"@metamask/local-node-utils": "^0.0.0"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
60
|
"@metamask/auto-changelog": "^6.1.0",
|