@metamask-previews/solana-test-validator-up 1.0.0-preview-4f4c98e → 1.0.0-preview-eb263b0ee

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,10 +7,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
- ### Changed
11
-
12
- - **BREAKING:** Bump minimum Node.js version to 22 ([#9168](https://github.com/MetaMask/core/pull/9168))
13
-
14
10
  ## [1.0.0]
15
11
 
16
12
  ### Added
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ /* eslint-disable no-restricted-globals */
5
+ const install_js_1 = require("../install.cjs");
6
+ async function main() {
7
+ const [command, ...args] = process.argv.slice(2);
8
+ if (command === '--help' || command === 'help') {
9
+ printHelp();
10
+ return;
11
+ }
12
+ if (command === 'cache' && args[0] === 'clean') {
13
+ await (0, install_js_1.cleanSolanaTestValidatorCache)({
14
+ ...(0, install_js_1.readSolanaTestValidatorInstallOptionsFromPackageJson)(),
15
+ ...(0, install_js_1.parseSolanaTestValidatorInstallCliOptions)(args.slice(1)),
16
+ });
17
+ console.log('[solana-test-validator-up] cache cleaned');
18
+ return;
19
+ }
20
+ const installArgs = command === 'install' ? args : process.argv.slice(2);
21
+ const result = await (0, install_js_1.installSolanaTestValidator)({
22
+ ...(0, install_js_1.readSolanaTestValidatorInstallOptionsFromPackageJson)(),
23
+ ...(0, install_js_1.parseSolanaTestValidatorInstallCliOptions)(installArgs),
24
+ });
25
+ console.log(`[solana-test-validator-up] Solana release ${result.cacheHit ? 'found in cache' : 'installed'}`);
26
+ console.log(`[solana-test-validator-up] solana-test-validator installed at ${result.binaryPath}`);
27
+ }
28
+ main().catch((error) => {
29
+ console.error(error);
30
+ process.exit(1);
31
+ });
32
+ function printHelp() {
33
+ console.log(`Usage: solana-test-validator-up [install] [options]
34
+ solana-test-validator-up cache clean [options]
35
+
36
+ Commands:
37
+ install Install solana-test-validator and solana CLI. Default command.
38
+ cache clean Remove cached solana-test-validator-up artifacts.
39
+
40
+ Options:
41
+ --bin-directory <path> Directory for executable wrappers.
42
+ Defaults to node_modules/.bin.
43
+ --cache-directory <path> Cache directory. Defaults to .metamask/cache.
44
+ --release-url <url> Solana release archive URL for the current platform.
45
+ --release-checksum <hash> Expected Solana release SHA-256 checksum.
46
+ --platform <platform> Override platform key, e.g. linux-x64.
47
+ --help Show this help text.`);
48
+ }
49
+ //# sourceMappingURL=solana-test-validator-up.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solana-test-validator-up.cjs","sourceRoot":"","sources":["../../src/bin/solana-test-validator-up.ts"],"names":[],"mappings":";;;AACA,0CAA0C;AAC1C,+CAKuB;AAEvB,KAAK,UAAU,IAAI;IACjB,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEjD,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QAC/C,SAAS,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;QAC/C,MAAM,IAAA,0CAA6B,EAAC;YAClC,GAAG,IAAA,iEAAoD,GAAE;YACzD,GAAG,IAAA,sDAAyC,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC5D,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QACxD,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,MAAM,GAAG,MAAM,IAAA,uCAA0B,EAAC;QAC9C,GAAG,IAAA,iEAAoD,GAAE;QACzD,GAAG,IAAA,sDAAyC,EAAC,WAAW,CAAC;KAC1D,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CACT,6CACE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WACvC,EAAE,CACH,CAAC;IACF,OAAO,CAAC,GAAG,CACT,iEAAiE,MAAM,CAAC,UAAU,EAAE,CACrF,CAAC;AACJ,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;mDAcqC,CAAC,CAAC;AACrD,CAAC","sourcesContent":["#!/usr/bin/env node\n/* eslint-disable no-restricted-globals */\nimport {\n cleanSolanaTestValidatorCache,\n installSolanaTestValidator,\n parseSolanaTestValidatorInstallCliOptions,\n readSolanaTestValidatorInstallOptionsFromPackageJson,\n} from '../install.js';\n\nasync function main(): Promise<void> {\n const [command, ...args] = process.argv.slice(2);\n\n if (command === '--help' || command === 'help') {\n printHelp();\n return;\n }\n\n if (command === 'cache' && args[0] === 'clean') {\n await cleanSolanaTestValidatorCache({\n ...readSolanaTestValidatorInstallOptionsFromPackageJson(),\n ...parseSolanaTestValidatorInstallCliOptions(args.slice(1)),\n });\n console.log('[solana-test-validator-up] cache cleaned');\n return;\n }\n\n const installArgs = command === 'install' ? args : process.argv.slice(2);\n const result = await installSolanaTestValidator({\n ...readSolanaTestValidatorInstallOptionsFromPackageJson(),\n ...parseSolanaTestValidatorInstallCliOptions(installArgs),\n });\n\n console.log(\n `[solana-test-validator-up] Solana release ${\n result.cacheHit ? 'found in cache' : 'installed'\n }`,\n );\n console.log(\n `[solana-test-validator-up] solana-test-validator installed at ${result.binaryPath}`,\n );\n}\n\nmain().catch((error) => {\n console.error(error);\n process.exit(1);\n});\n\nfunction printHelp(): void {\n console.log(`Usage: solana-test-validator-up [install] [options]\n solana-test-validator-up cache clean [options]\n\nCommands:\n install Install solana-test-validator and solana CLI. Default command.\n cache clean Remove cached solana-test-validator-up artifacts.\n\nOptions:\n --bin-directory <path> Directory for executable wrappers.\n Defaults to node_modules/.bin.\n --cache-directory <path> Cache directory. Defaults to .metamask/cache.\n --release-url <url> Solana release archive URL for the current platform.\n --release-checksum <hash> Expected Solana release SHA-256 checksum.\n --platform <platform> Override platform key, e.g. linux-x64.\n --help Show this help text.`);\n}\n"]}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=solana-test-validator-up.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solana-test-validator-up.d.cts","sourceRoot":"","sources":["../../src/bin/solana-test-validator-up.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=solana-test-validator-up.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solana-test-validator-up.d.mts","sourceRoot":"","sources":["../../src/bin/solana-test-validator-up.ts"],"names":[],"mappings":""}
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  /* eslint-disable no-restricted-globals */
3
- import { cleanSolanaTestValidatorCache, installSolanaTestValidator, parseSolanaTestValidatorInstallCliOptions, readSolanaTestValidatorInstallOptionsFromPackageJson, } from '../install.js';
3
+ import { cleanSolanaTestValidatorCache, installSolanaTestValidator, parseSolanaTestValidatorInstallCliOptions, readSolanaTestValidatorInstallOptionsFromPackageJson } from "../install.mjs";
4
4
  async function main() {
5
5
  const [command, ...args] = process.argv.slice(2);
6
6
  if (command === '--help' || command === 'help') {
@@ -44,4 +44,4 @@ Options:
44
44
  --platform <platform> Override platform key, e.g. linux-x64.
45
45
  --help Show this help text.`);
46
46
  }
47
- //# sourceMappingURL=solana-test-validator-up.js.map
47
+ //# sourceMappingURL=solana-test-validator-up.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solana-test-validator-up.mjs","sourceRoot":"","sources":["../../src/bin/solana-test-validator-up.ts"],"names":[],"mappings":";AACA,0CAA0C;AAC1C,OAAO,EACL,6BAA6B,EAC7B,0BAA0B,EAC1B,yCAAyC,EACzC,oDAAoD,EACrD,uBAAsB;AAEvB,KAAK,UAAU,IAAI;IACjB,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEjD,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QAC/C,SAAS,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;QAC/C,MAAM,6BAA6B,CAAC;YAClC,GAAG,oDAAoD,EAAE;YACzD,GAAG,yCAAyC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC5D,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QACxD,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC;QAC9C,GAAG,oDAAoD,EAAE;QACzD,GAAG,yCAAyC,CAAC,WAAW,CAAC;KAC1D,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CACT,6CACE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WACvC,EAAE,CACH,CAAC;IACF,OAAO,CAAC,GAAG,CACT,iEAAiE,MAAM,CAAC,UAAU,EAAE,CACrF,CAAC;AACJ,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;mDAcqC,CAAC,CAAC;AACrD,CAAC","sourcesContent":["#!/usr/bin/env node\n/* eslint-disable no-restricted-globals */\nimport {\n cleanSolanaTestValidatorCache,\n installSolanaTestValidator,\n parseSolanaTestValidatorInstallCliOptions,\n readSolanaTestValidatorInstallOptionsFromPackageJson,\n} from '../install.js';\n\nasync function main(): Promise<void> {\n const [command, ...args] = process.argv.slice(2);\n\n if (command === '--help' || command === 'help') {\n printHelp();\n return;\n }\n\n if (command === 'cache' && args[0] === 'clean') {\n await cleanSolanaTestValidatorCache({\n ...readSolanaTestValidatorInstallOptionsFromPackageJson(),\n ...parseSolanaTestValidatorInstallCliOptions(args.slice(1)),\n });\n console.log('[solana-test-validator-up] cache cleaned');\n return;\n }\n\n const installArgs = command === 'install' ? args : process.argv.slice(2);\n const result = await installSolanaTestValidator({\n ...readSolanaTestValidatorInstallOptionsFromPackageJson(),\n ...parseSolanaTestValidatorInstallCliOptions(installArgs),\n });\n\n console.log(\n `[solana-test-validator-up] Solana release ${\n result.cacheHit ? 'found in cache' : 'installed'\n }`,\n );\n console.log(\n `[solana-test-validator-up] solana-test-validator installed at ${result.binaryPath}`,\n );\n}\n\nmain().catch((error) => {\n console.error(error);\n process.exit(1);\n});\n\nfunction printHelp(): void {\n console.log(`Usage: solana-test-validator-up [install] [options]\n solana-test-validator-up cache clean [options]\n\nCommands:\n install Install solana-test-validator and solana CLI. Default command.\n cache clean Remove cached solana-test-validator-up artifacts.\n\nOptions:\n --bin-directory <path> Directory for executable wrappers.\n Defaults to node_modules/.bin.\n --cache-directory <path> Cache directory. Defaults to .metamask/cache.\n --release-url <url> Solana release archive URL for the current platform.\n --release-checksum <hash> Expected Solana release SHA-256 checksum.\n --platform <platform> Override platform key, e.g. linux-x64.\n --help Show this help text.`);\n}\n"]}
package/dist/index.cjs ADDED
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.readSolanaTestValidatorInstallOptionsFromPackageJson = exports.parseSolanaTestValidatorInstallCliOptions = exports.installSolanaTestValidator = exports.getSolanaTestValidatorCacheDirectory = exports.cleanSolanaTestValidatorCache = exports.SOLANA_TEST_VALIDATOR_DEFAULT_RELEASE = void 0;
4
+ var install_js_1 = require("./install.cjs");
5
+ Object.defineProperty(exports, "SOLANA_TEST_VALIDATOR_DEFAULT_RELEASE", { enumerable: true, get: function () { return install_js_1.SOLANA_TEST_VALIDATOR_DEFAULT_RELEASE; } });
6
+ Object.defineProperty(exports, "cleanSolanaTestValidatorCache", { enumerable: true, get: function () { return install_js_1.cleanSolanaTestValidatorCache; } });
7
+ Object.defineProperty(exports, "getSolanaTestValidatorCacheDirectory", { enumerable: true, get: function () { return install_js_1.getSolanaTestValidatorCacheDirectory; } });
8
+ Object.defineProperty(exports, "installSolanaTestValidator", { enumerable: true, get: function () { return install_js_1.installSolanaTestValidator; } });
9
+ Object.defineProperty(exports, "parseSolanaTestValidatorInstallCliOptions", { enumerable: true, get: function () { return install_js_1.parseSolanaTestValidatorInstallCliOptions; } });
10
+ Object.defineProperty(exports, "readSolanaTestValidatorInstallOptionsFromPackageJson", { enumerable: true, get: function () { return install_js_1.readSolanaTestValidatorInstallOptionsFromPackageJson; } });
11
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,4CAOsB;AANpB,mIAAA,qCAAqC,OAAA;AACrC,2HAAA,6BAA6B,OAAA;AAC7B,kIAAA,oCAAoC,OAAA;AACpC,wHAAA,0BAA0B,OAAA;AAC1B,uIAAA,yCAAyC,OAAA;AACzC,kJAAA,oDAAoD,OAAA","sourcesContent":["export {\n SOLANA_TEST_VALIDATOR_DEFAULT_RELEASE,\n cleanSolanaTestValidatorCache,\n getSolanaTestValidatorCacheDirectory,\n installSolanaTestValidator,\n parseSolanaTestValidatorInstallCliOptions,\n readSolanaTestValidatorInstallOptionsFromPackageJson,\n} from './install.js';\nexport type {\n SolanaTestValidatorArtifactConfig,\n SolanaTestValidatorArtifactPlatformConfig,\n SolanaTestValidatorInstallDependencies,\n SolanaTestValidatorInstallOptions,\n SolanaTestValidatorInstallResult,\n} from './install.js';\n"]}
@@ -1,3 +1,3 @@
1
- export { SOLANA_TEST_VALIDATOR_DEFAULT_RELEASE, cleanSolanaTestValidatorCache, getSolanaTestValidatorCacheDirectory, installSolanaTestValidator, parseSolanaTestValidatorInstallCliOptions, readSolanaTestValidatorInstallOptionsFromPackageJson, } from './install.js';
2
- export type { SolanaTestValidatorArtifactConfig, SolanaTestValidatorArtifactPlatformConfig, SolanaTestValidatorInstallDependencies, SolanaTestValidatorInstallOptions, SolanaTestValidatorInstallResult, } from './install.js';
3
- //# sourceMappingURL=index.d.ts.map
1
+ export { SOLANA_TEST_VALIDATOR_DEFAULT_RELEASE, cleanSolanaTestValidatorCache, getSolanaTestValidatorCacheDirectory, installSolanaTestValidator, parseSolanaTestValidatorInstallCliOptions, readSolanaTestValidatorInstallOptionsFromPackageJson, } from "./install.cjs";
2
+ export type { SolanaTestValidatorArtifactConfig, SolanaTestValidatorArtifactPlatformConfig, SolanaTestValidatorInstallDependencies, SolanaTestValidatorInstallOptions, SolanaTestValidatorInstallResult, } from "./install.cjs";
3
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qCAAqC,EACrC,6BAA6B,EAC7B,oCAAoC,EACpC,0BAA0B,EAC1B,yCAAyC,EACzC,oDAAoD,GACrD,sBAAqB;AACtB,YAAY,EACV,iCAAiC,EACjC,yCAAyC,EACzC,sCAAsC,EACtC,iCAAiC,EACjC,gCAAgC,GACjC,sBAAqB"}
@@ -0,0 +1,3 @@
1
+ export { SOLANA_TEST_VALIDATOR_DEFAULT_RELEASE, cleanSolanaTestValidatorCache, getSolanaTestValidatorCacheDirectory, installSolanaTestValidator, parseSolanaTestValidatorInstallCliOptions, readSolanaTestValidatorInstallOptionsFromPackageJson, } from "./install.mjs";
2
+ export type { SolanaTestValidatorArtifactConfig, SolanaTestValidatorArtifactPlatformConfig, SolanaTestValidatorInstallDependencies, SolanaTestValidatorInstallOptions, SolanaTestValidatorInstallResult, } from "./install.mjs";
3
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qCAAqC,EACrC,6BAA6B,EAC7B,oCAAoC,EACpC,0BAA0B,EAC1B,yCAAyC,EACzC,oDAAoD,GACrD,sBAAqB;AACtB,YAAY,EACV,iCAAiC,EACjC,yCAAyC,EACzC,sCAAsC,EACtC,iCAAiC,EACjC,gCAAgC,GACjC,sBAAqB"}
@@ -1,2 +1,2 @@
1
- export { SOLANA_TEST_VALIDATOR_DEFAULT_RELEASE, cleanSolanaTestValidatorCache, getSolanaTestValidatorCacheDirectory, installSolanaTestValidator, parseSolanaTestValidatorInstallCliOptions, readSolanaTestValidatorInstallOptionsFromPackageJson, } from './install.js';
2
- //# sourceMappingURL=index.js.map
1
+ export { SOLANA_TEST_VALIDATOR_DEFAULT_RELEASE, cleanSolanaTestValidatorCache, getSolanaTestValidatorCacheDirectory, installSolanaTestValidator, parseSolanaTestValidatorInstallCliOptions, readSolanaTestValidatorInstallOptionsFromPackageJson } from "./install.mjs";
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qCAAqC,EACrC,6BAA6B,EAC7B,oCAAoC,EACpC,0BAA0B,EAC1B,yCAAyC,EACzC,oDAAoD,EACrD,sBAAqB","sourcesContent":["export {\n SOLANA_TEST_VALIDATOR_DEFAULT_RELEASE,\n cleanSolanaTestValidatorCache,\n getSolanaTestValidatorCacheDirectory,\n installSolanaTestValidator,\n parseSolanaTestValidatorInstallCliOptions,\n readSolanaTestValidatorInstallOptionsFromPackageJson,\n} from './install.js';\nexport type {\n SolanaTestValidatorArtifactConfig,\n SolanaTestValidatorArtifactPlatformConfig,\n SolanaTestValidatorInstallDependencies,\n SolanaTestValidatorInstallOptions,\n SolanaTestValidatorInstallResult,\n} from './install.js';\n"]}
@@ -0,0 +1,190 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cleanSolanaTestValidatorCache = exports.installSolanaTestValidator = exports.parseSolanaTestValidatorInstallCliOptions = exports.readSolanaTestValidatorInstallOptionsFromPackageJson = exports.getSolanaTestValidatorCacheDirectory = exports.SOLANA_TEST_VALIDATOR_DEFAULT_RELEASE = void 0;
4
+ /* eslint-disable import-x/no-nodejs-modules, no-restricted-globals */
5
+ const local_node_utils_1 = require("@metamask/local-node-utils");
6
+ const node_fs_1 = require("node:fs");
7
+ const promises_1 = require("node:fs/promises");
8
+ const node_path_1 = require("node:path");
9
+ const SOLANA_TEST_VALIDATOR_CACHE_NAMESPACE = 'solana-test-validator-up';
10
+ const RELEASE_CACHE_NAMESPACE = 'release';
11
+ exports.SOLANA_TEST_VALIDATOR_DEFAULT_RELEASE = {
12
+ version: 'v3.1.14',
13
+ platforms: {
14
+ 'darwin-arm64': {
15
+ checksum: '54cfc2680bd6426fda04619ee01933f40a649c8056f3a61ba20dc54dd427ebed',
16
+ size: 77158067,
17
+ url: 'https://github.com/anza-xyz/agave/releases/download/v3.1.14/solana-release-aarch64-apple-darwin.tar.bz2',
18
+ },
19
+ 'darwin-x64': {
20
+ checksum: 'e3768ed01daa1e3cfc02af3e3eb396cec2d48a99ecf80cd5d7bdff510f808d1f',
21
+ size: 81239759,
22
+ url: 'https://github.com/anza-xyz/agave/releases/download/v3.1.14/solana-release-x86_64-apple-darwin.tar.bz2',
23
+ },
24
+ 'linux-x64': {
25
+ checksum: '06f97c065cc977cbec2f13ffc9bc9d3b92fef485431fcb370a269de69532ef51',
26
+ size: 215235690,
27
+ url: 'https://github.com/anza-xyz/agave/releases/download/v3.1.14/solana-release-x86_64-unknown-linux-gnu.tar.bz2',
28
+ },
29
+ },
30
+ };
31
+ function getSolanaTestValidatorCacheDirectory({ cwd = process.cwd(), homeDirectory, } = {}) {
32
+ return (0, local_node_utils_1.getMetamaskCacheDirectory)({
33
+ cwd,
34
+ homeDirectory,
35
+ toolName: SOLANA_TEST_VALIDATOR_CACHE_NAMESPACE,
36
+ });
37
+ }
38
+ exports.getSolanaTestValidatorCacheDirectory = getSolanaTestValidatorCacheDirectory;
39
+ function readSolanaTestValidatorInstallOptionsFromPackageJson({ cwd = process.cwd(), packageJsonPath = (0, node_path_1.join)(cwd, 'package.json'), } = {}) {
40
+ const config = (0, local_node_utils_1.readPackageJsonToolConfig)({
41
+ cwd,
42
+ packageJsonPath,
43
+ configKeys: [
44
+ 'solanaTestValidatorUp',
45
+ 'solanatestvalidatorup',
46
+ 'solana-test-validator-up',
47
+ ],
48
+ });
49
+ const options = {};
50
+ if (config.binDirectory) {
51
+ options.binDirectory = config.binDirectory;
52
+ }
53
+ if (config.cacheDirectory) {
54
+ options.cacheDirectory = config.cacheDirectory;
55
+ }
56
+ if (config.release) {
57
+ options.release = config.release;
58
+ }
59
+ return options;
60
+ }
61
+ exports.readSolanaTestValidatorInstallOptionsFromPackageJson = readSolanaTestValidatorInstallOptionsFromPackageJson;
62
+ function parseSolanaTestValidatorInstallCliOptions(args) {
63
+ const options = {};
64
+ const release = {};
65
+ for (let index = 0; index < args.length; index += 1) {
66
+ const arg = args[index];
67
+ const value = args[index + 1];
68
+ switch (arg) {
69
+ case '--bin-directory':
70
+ options.binDirectory = (0, local_node_utils_1.readCliValue)(arg, value);
71
+ index += 1;
72
+ break;
73
+ case '--cache-directory':
74
+ options.cacheDirectory = (0, local_node_utils_1.readCliValue)(arg, value);
75
+ index += 1;
76
+ break;
77
+ case '--platform':
78
+ options.platform = (0, local_node_utils_1.readCliValue)(arg, value);
79
+ index += 1;
80
+ break;
81
+ case '--release-checksum':
82
+ release.checksum = (0, local_node_utils_1.readCliValue)(arg, value);
83
+ index += 1;
84
+ break;
85
+ case '--release-url':
86
+ release.url = (0, local_node_utils_1.readCliValue)(arg, value);
87
+ index += 1;
88
+ break;
89
+ default:
90
+ throw new Error(`Unknown solana-test-validator-up install option: ${arg}`);
91
+ }
92
+ }
93
+ if (release.url || release.checksum) {
94
+ options.release = {
95
+ platforms: {
96
+ current: (0, local_node_utils_1.requireCompletePlatformConfig)(release, 'Solana release CLI options'),
97
+ },
98
+ };
99
+ }
100
+ return options;
101
+ }
102
+ exports.parseSolanaTestValidatorInstallCliOptions = parseSolanaTestValidatorInstallCliOptions;
103
+ async function installSolanaTestValidator(options = {}, dependencies = {}) {
104
+ const cwd = options.cwd ?? process.cwd();
105
+ const cacheDirectory = options.cacheDirectory ?? getSolanaTestValidatorCacheDirectory({ cwd });
106
+ const binDirectory = options.binDirectory ?? (0, node_path_1.join)(cwd, 'node_modules', '.bin');
107
+ const platformKey = options.platform ?? (0, local_node_utils_1.getPlatformKey)();
108
+ const release = (0, local_node_utils_1.mergeArtifactConfig)(exports.SOLANA_TEST_VALIDATOR_DEFAULT_RELEASE, options.release);
109
+ const releaseConfig = (0, local_node_utils_1.resolvePlatformConfig)(release, platformKey, 'Solana release');
110
+ const releaseResult = await installSolanaRelease({ cacheDirectory, config: releaseConfig }, dependencies);
111
+ const binaryPath = await (0, local_node_utils_1.installExecutableWrapper)({
112
+ binDirectory,
113
+ commandName: 'solana-test-validator',
114
+ executablePath: releaseResult.validatorBinary,
115
+ pathResolution: 'relative',
116
+ });
117
+ await (0, local_node_utils_1.installExecutableWrapper)({
118
+ binDirectory,
119
+ commandName: 'solana',
120
+ executablePath: releaseResult.solanaBinary,
121
+ pathResolution: 'relative',
122
+ });
123
+ return {
124
+ binaryPath,
125
+ cacheHit: releaseResult.cacheHit,
126
+ checksum: releaseConfig.checksum,
127
+ solanaBinary: releaseResult.solanaBinary,
128
+ validatorBinary: releaseResult.validatorBinary,
129
+ version: release.version,
130
+ };
131
+ }
132
+ exports.installSolanaTestValidator = installSolanaTestValidator;
133
+ async function cleanSolanaTestValidatorCache(options = {}) {
134
+ const cwd = options.cwd ?? process.cwd();
135
+ const cacheDirectory = options.cacheDirectory ?? getSolanaTestValidatorCacheDirectory({ cwd });
136
+ await (0, local_node_utils_1.cleanInstallerCache)({
137
+ cacheDirectory,
138
+ namespace: SOLANA_TEST_VALIDATOR_CACHE_NAMESPACE,
139
+ });
140
+ }
141
+ exports.cleanSolanaTestValidatorCache = cleanSolanaTestValidatorCache;
142
+ async function installSolanaRelease({ cacheDirectory, config, }, dependencies) {
143
+ const cacheKey = (0, local_node_utils_1.getCacheKey)(config);
144
+ const cacheRoot = (0, node_path_1.join)(cacheDirectory, SOLANA_TEST_VALIDATOR_CACHE_NAMESPACE, RELEASE_CACHE_NAMESPACE, cacheKey);
145
+ const checksumPath = (0, node_path_1.join)(cacheRoot, '.source-checksum');
146
+ const cached = findSolanaBinaries(cacheRoot);
147
+ if (cached &&
148
+ (0, node_fs_1.existsSync)(checksumPath) &&
149
+ (0, node_fs_1.readFileSync)(checksumPath, 'utf8') === config.checksum) {
150
+ return { cacheHit: true, ...cached };
151
+ }
152
+ const tempRoot = `${cacheRoot}.downloading`;
153
+ const archivePath = (0, node_path_1.join)(tempRoot, 'solana-release.tar.bz2');
154
+ const downloadFile = dependencies.downloadFile ?? local_node_utils_1.downloadFileFromUrl;
155
+ const extractArchive = dependencies.extractArchive ?? local_node_utils_1.extractTarBz2Archive;
156
+ await (0, promises_1.rm)(tempRoot, { force: true, recursive: true });
157
+ await (0, promises_1.rm)(cacheRoot, { force: true, recursive: true });
158
+ await (0, promises_1.mkdir)(tempRoot, { recursive: true });
159
+ try {
160
+ await downloadFile(config.url, archivePath);
161
+ await (0, local_node_utils_1.verifyFileChecksum)(archivePath, config.checksum, 'Downloaded Solana release');
162
+ await extractArchive(archivePath, tempRoot);
163
+ const binaries = findSolanaBinaries(tempRoot);
164
+ if (!binaries) {
165
+ throw new Error('Solana release archive did not contain bin/solana-test-validator and bin/solana.');
166
+ }
167
+ await (0, promises_1.writeFile)(checksumPath.replace(cacheRoot, tempRoot), config.checksum);
168
+ await (0, promises_1.mkdir)((0, node_path_1.dirname)(cacheRoot), { recursive: true });
169
+ await (0, promises_1.rename)(tempRoot, cacheRoot);
170
+ return {
171
+ cacheHit: false,
172
+ solanaBinary: binaries.solanaBinary.replace(tempRoot, cacheRoot),
173
+ validatorBinary: binaries.validatorBinary.replace(tempRoot, cacheRoot),
174
+ };
175
+ }
176
+ catch (error) {
177
+ await (0, promises_1.rm)(tempRoot, { force: true, recursive: true });
178
+ await (0, promises_1.rm)(cacheRoot, { force: true, recursive: true });
179
+ throw error;
180
+ }
181
+ }
182
+ function findSolanaBinaries(root) {
183
+ const validatorBinary = (0, local_node_utils_1.findExecutable)(root, 'solana-test-validator');
184
+ const solanaBinary = (0, local_node_utils_1.findExecutable)(root, 'solana');
185
+ if (!validatorBinary || !solanaBinary) {
186
+ return undefined;
187
+ }
188
+ return { solanaBinary, validatorBinary };
189
+ }
190
+ //# sourceMappingURL=install.cjs.map
@@ -0,0 +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 {\n cleanInstallerCache,\n downloadFileFromUrl,\n extractTarBz2Archive,\n findExecutable,\n getCacheKey,\n getMetamaskCacheDirectory,\n getPlatformKey,\n installExecutableWrapper,\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, readFileSync } from 'node:fs';\nimport { mkdir, rename, rm, writeFile } from 'node:fs/promises';\nimport { dirname, join } from 'node:path';\n\nconst SOLANA_TEST_VALIDATOR_CACHE_NAMESPACE = 'solana-test-validator-up';\nconst RELEASE_CACHE_NAMESPACE = 'release';\n\nexport type SolanaTestValidatorArtifactConfig = ArtifactConfig;\n\nexport type SolanaTestValidatorArtifactPlatformConfig = ArtifactPlatformConfig;\n\nexport type SolanaTestValidatorInstallOptions = {\n binDirectory?: string;\n cacheDirectory?: string;\n cwd?: string;\n platform?: string;\n release?: SolanaTestValidatorArtifactConfig;\n};\n\nexport type SolanaTestValidatorInstallResult = {\n binaryPath: string;\n cacheHit: boolean;\n checksum: string;\n solanaBinary: string;\n validatorBinary: string;\n version?: string;\n};\n\nexport type SolanaTestValidatorInstallDependencies = InstallDependencies;\n\ntype SolanaTestValidatorPackageJsonConfig = Pick<\n SolanaTestValidatorInstallOptions,\n 'binDirectory' | 'cacheDirectory' | 'release'\n>;\n\nexport const SOLANA_TEST_VALIDATOR_DEFAULT_RELEASE: SolanaTestValidatorArtifactConfig =\n {\n version: 'v3.1.14',\n platforms: {\n 'darwin-arm64': {\n checksum:\n '54cfc2680bd6426fda04619ee01933f40a649c8056f3a61ba20dc54dd427ebed',\n size: 77_158_067,\n url: 'https://github.com/anza-xyz/agave/releases/download/v3.1.14/solana-release-aarch64-apple-darwin.tar.bz2',\n },\n 'darwin-x64': {\n checksum:\n 'e3768ed01daa1e3cfc02af3e3eb396cec2d48a99ecf80cd5d7bdff510f808d1f',\n size: 81_239_759,\n url: 'https://github.com/anza-xyz/agave/releases/download/v3.1.14/solana-release-x86_64-apple-darwin.tar.bz2',\n },\n 'linux-x64': {\n checksum:\n '06f97c065cc977cbec2f13ffc9bc9d3b92fef485431fcb370a269de69532ef51',\n size: 215_235_690,\n url: 'https://github.com/anza-xyz/agave/releases/download/v3.1.14/solana-release-x86_64-unknown-linux-gnu.tar.bz2',\n },\n },\n };\n\nexport function getSolanaTestValidatorCacheDirectory({\n cwd = process.cwd(),\n homeDirectory,\n}: {\n cwd?: string;\n homeDirectory?: string;\n} = {}): string {\n return getMetamaskCacheDirectory({\n cwd,\n homeDirectory,\n toolName: SOLANA_TEST_VALIDATOR_CACHE_NAMESPACE,\n });\n}\n\nexport function readSolanaTestValidatorInstallOptionsFromPackageJson({\n cwd = process.cwd(),\n packageJsonPath = join(cwd, 'package.json'),\n}: {\n cwd?: string;\n packageJsonPath?: string;\n} = {}): SolanaTestValidatorInstallOptions {\n const config = readPackageJsonToolConfig({\n cwd,\n packageJsonPath,\n configKeys: [\n 'solanaTestValidatorUp',\n 'solanatestvalidatorup',\n 'solana-test-validator-up',\n ],\n }) as Partial<SolanaTestValidatorPackageJsonConfig>;\n const options: SolanaTestValidatorInstallOptions = {};\n\n if (config.binDirectory) {\n options.binDirectory = config.binDirectory;\n }\n if (config.cacheDirectory) {\n options.cacheDirectory = config.cacheDirectory;\n }\n if (config.release) {\n options.release = config.release;\n }\n\n return options;\n}\n\nexport function parseSolanaTestValidatorInstallCliOptions(\n args: string[],\n): SolanaTestValidatorInstallOptions {\n const options: SolanaTestValidatorInstallOptions = {};\n const release: Partial<SolanaTestValidatorArtifactPlatformConfig> = {};\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 '--platform':\n options.platform = readCliValue(arg, value);\n index += 1;\n break;\n case '--release-checksum':\n release.checksum = readCliValue(arg, value);\n index += 1;\n break;\n case '--release-url':\n release.url = readCliValue(arg, value);\n index += 1;\n break;\n default:\n throw new Error(\n `Unknown solana-test-validator-up install option: ${arg}`,\n );\n }\n }\n\n if (release.url || release.checksum) {\n options.release = {\n platforms: {\n current: requireCompletePlatformConfig(\n release,\n 'Solana release CLI options',\n ),\n },\n };\n }\n\n return options;\n}\n\nexport async function installSolanaTestValidator(\n options: SolanaTestValidatorInstallOptions = {},\n dependencies: SolanaTestValidatorInstallDependencies = {},\n): Promise<SolanaTestValidatorInstallResult> {\n const cwd = options.cwd ?? process.cwd();\n const cacheDirectory =\n options.cacheDirectory ?? getSolanaTestValidatorCacheDirectory({ cwd });\n const binDirectory =\n options.binDirectory ?? join(cwd, 'node_modules', '.bin');\n const platformKey = options.platform ?? getPlatformKey();\n const release = mergeArtifactConfig(\n SOLANA_TEST_VALIDATOR_DEFAULT_RELEASE,\n options.release,\n );\n const releaseConfig = resolvePlatformConfig(\n release,\n platformKey,\n 'Solana release',\n );\n const releaseResult = await installSolanaRelease(\n { cacheDirectory, config: releaseConfig },\n dependencies,\n );\n const binaryPath = await installExecutableWrapper({\n binDirectory,\n commandName: 'solana-test-validator',\n executablePath: releaseResult.validatorBinary,\n pathResolution: 'relative',\n });\n await installExecutableWrapper({\n binDirectory,\n commandName: 'solana',\n executablePath: releaseResult.solanaBinary,\n pathResolution: 'relative',\n });\n\n return {\n binaryPath,\n cacheHit: releaseResult.cacheHit,\n checksum: releaseConfig.checksum,\n solanaBinary: releaseResult.solanaBinary,\n validatorBinary: releaseResult.validatorBinary,\n version: release.version,\n };\n}\n\nexport async function cleanSolanaTestValidatorCache(\n options: Pick<\n SolanaTestValidatorInstallOptions,\n 'cacheDirectory' | 'cwd'\n > = {},\n): Promise<void> {\n const cwd = options.cwd ?? process.cwd();\n const cacheDirectory =\n options.cacheDirectory ?? getSolanaTestValidatorCacheDirectory({ cwd });\n\n await cleanInstallerCache({\n cacheDirectory,\n namespace: SOLANA_TEST_VALIDATOR_CACHE_NAMESPACE,\n });\n}\n\nasync function installSolanaRelease(\n {\n cacheDirectory,\n config,\n }: {\n cacheDirectory: string;\n config: SolanaTestValidatorArtifactPlatformConfig;\n },\n dependencies: SolanaTestValidatorInstallDependencies,\n): Promise<{\n cacheHit: boolean;\n solanaBinary: string;\n validatorBinary: string;\n}> {\n const cacheKey = getCacheKey(config);\n const cacheRoot = join(\n cacheDirectory,\n SOLANA_TEST_VALIDATOR_CACHE_NAMESPACE,\n RELEASE_CACHE_NAMESPACE,\n cacheKey,\n );\n const checksumPath = join(cacheRoot, '.source-checksum');\n const cached = findSolanaBinaries(cacheRoot);\n\n if (\n cached &&\n existsSync(checksumPath) &&\n readFileSync(checksumPath, 'utf8') === config.checksum\n ) {\n return { cacheHit: true, ...cached };\n }\n\n const tempRoot = `${cacheRoot}.downloading`;\n const archivePath = join(tempRoot, 'solana-release.tar.bz2');\n const downloadFile = dependencies.downloadFile ?? downloadFileFromUrl;\n const extractArchive = dependencies.extractArchive ?? extractTarBz2Archive;\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, archivePath);\n await verifyFileChecksum(\n archivePath,\n config.checksum,\n 'Downloaded Solana release',\n );\n await extractArchive(archivePath, tempRoot);\n\n const binaries = findSolanaBinaries(tempRoot);\n if (!binaries) {\n throw new Error(\n 'Solana release archive did not contain bin/solana-test-validator and bin/solana.',\n );\n }\n\n await writeFile(checksumPath.replace(cacheRoot, tempRoot), config.checksum);\n await mkdir(dirname(cacheRoot), { recursive: true });\n await rename(tempRoot, cacheRoot);\n\n return {\n cacheHit: false,\n solanaBinary: binaries.solanaBinary.replace(tempRoot, cacheRoot),\n validatorBinary: binaries.validatorBinary.replace(tempRoot, cacheRoot),\n };\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 findSolanaBinaries(\n root: string,\n): { solanaBinary: string; validatorBinary: string } | undefined {\n const validatorBinary = findExecutable(root, 'solana-test-validator');\n const solanaBinary = findExecutable(root, 'solana');\n\n if (!validatorBinary || !solanaBinary) {\n return undefined;\n }\n\n return { solanaBinary, validatorBinary };\n}\n"]}
@@ -1,4 +1,4 @@
1
- import type { ArtifactConfig, ArtifactPlatformConfig, InstallDependencies } from '@metamask/local-node-utils';
1
+ import type { ArtifactConfig, ArtifactPlatformConfig, InstallDependencies } from "@metamask/local-node-utils";
2
2
  export type SolanaTestValidatorArtifactConfig = ArtifactConfig;
3
3
  export type SolanaTestValidatorArtifactPlatformConfig = ArtifactPlatformConfig;
4
4
  export type SolanaTestValidatorInstallOptions = {
@@ -29,4 +29,4 @@ export declare function readSolanaTestValidatorInstallOptionsFromPackageJson({ c
29
29
  export declare function parseSolanaTestValidatorInstallCliOptions(args: string[]): SolanaTestValidatorInstallOptions;
30
30
  export declare function installSolanaTestValidator(options?: SolanaTestValidatorInstallOptions, dependencies?: SolanaTestValidatorInstallDependencies): Promise<SolanaTestValidatorInstallResult>;
31
31
  export declare function cleanSolanaTestValidatorCache(options?: Pick<SolanaTestValidatorInstallOptions, 'cacheDirectory' | 'cwd'>): Promise<void>;
32
- //# sourceMappingURL=install.d.ts.map
32
+ //# sourceMappingURL=install.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.d.cts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EACV,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACpB,mCAAmC;AAQpC,MAAM,MAAM,iCAAiC,GAAG,cAAc,CAAC;AAE/D,MAAM,MAAM,yCAAyC,GAAG,sBAAsB,CAAC;AAE/E,MAAM,MAAM,iCAAiC,GAAG;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,iCAAiC,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,sCAAsC,GAAG,mBAAmB,CAAC;AAOzE,eAAO,MAAM,qCAAqC,EAAE,iCAuBjD,CAAC;AAEJ,wBAAgB,oCAAoC,CAAC,EACnD,GAAmB,EACnB,aAAa,GACd,GAAE;IACD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,MAAM,CAMd;AAED,wBAAgB,oDAAoD,CAAC,EACnE,GAAmB,EACnB,eAA2C,GAC5C,GAAE;IACD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,iCAAiC,CAuBzC;AAED,wBAAgB,yCAAyC,CACvD,IAAI,EAAE,MAAM,EAAE,GACb,iCAAiC,CAgDnC;AAED,wBAAsB,0BAA0B,CAC9C,OAAO,GAAE,iCAAsC,EAC/C,YAAY,GAAE,sCAA2C,GACxD,OAAO,CAAC,gCAAgC,CAAC,CAyC3C;AAED,wBAAsB,6BAA6B,CACjD,OAAO,GAAE,IAAI,CACX,iCAAiC,EACjC,gBAAgB,GAAG,KAAK,CACpB,GACL,OAAO,CAAC,IAAI,CAAC,CASf"}
@@ -0,0 +1,32 @@
1
+ import type { ArtifactConfig, ArtifactPlatformConfig, InstallDependencies } from "@metamask/local-node-utils";
2
+ export type SolanaTestValidatorArtifactConfig = ArtifactConfig;
3
+ export type SolanaTestValidatorArtifactPlatformConfig = ArtifactPlatformConfig;
4
+ export type SolanaTestValidatorInstallOptions = {
5
+ binDirectory?: string;
6
+ cacheDirectory?: string;
7
+ cwd?: string;
8
+ platform?: string;
9
+ release?: SolanaTestValidatorArtifactConfig;
10
+ };
11
+ export type SolanaTestValidatorInstallResult = {
12
+ binaryPath: string;
13
+ cacheHit: boolean;
14
+ checksum: string;
15
+ solanaBinary: string;
16
+ validatorBinary: string;
17
+ version?: string;
18
+ };
19
+ export type SolanaTestValidatorInstallDependencies = InstallDependencies;
20
+ export declare const SOLANA_TEST_VALIDATOR_DEFAULT_RELEASE: SolanaTestValidatorArtifactConfig;
21
+ export declare function getSolanaTestValidatorCacheDirectory({ cwd, homeDirectory, }?: {
22
+ cwd?: string;
23
+ homeDirectory?: string;
24
+ }): string;
25
+ export declare function readSolanaTestValidatorInstallOptionsFromPackageJson({ cwd, packageJsonPath, }?: {
26
+ cwd?: string;
27
+ packageJsonPath?: string;
28
+ }): SolanaTestValidatorInstallOptions;
29
+ export declare function parseSolanaTestValidatorInstallCliOptions(args: string[]): SolanaTestValidatorInstallOptions;
30
+ export declare function installSolanaTestValidator(options?: SolanaTestValidatorInstallOptions, dependencies?: SolanaTestValidatorInstallDependencies): Promise<SolanaTestValidatorInstallResult>;
31
+ export declare function cleanSolanaTestValidatorCache(options?: Pick<SolanaTestValidatorInstallOptions, 'cacheDirectory' | 'cwd'>): Promise<void>;
32
+ //# sourceMappingURL=install.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.d.mts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EACV,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACpB,mCAAmC;AAQpC,MAAM,MAAM,iCAAiC,GAAG,cAAc,CAAC;AAE/D,MAAM,MAAM,yCAAyC,GAAG,sBAAsB,CAAC;AAE/E,MAAM,MAAM,iCAAiC,GAAG;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,iCAAiC,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,sCAAsC,GAAG,mBAAmB,CAAC;AAOzE,eAAO,MAAM,qCAAqC,EAAE,iCAuBjD,CAAC;AAEJ,wBAAgB,oCAAoC,CAAC,EACnD,GAAmB,EACnB,aAAa,GACd,GAAE;IACD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,MAAM,CAMd;AAED,wBAAgB,oDAAoD,CAAC,EACnE,GAAmB,EACnB,eAA2C,GAC5C,GAAE;IACD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,iCAAiC,CAuBzC;AAED,wBAAgB,yCAAyC,CACvD,IAAI,EAAE,MAAM,EAAE,GACb,iCAAiC,CAgDnC;AAED,wBAAsB,0BAA0B,CAC9C,OAAO,GAAE,iCAAsC,EAC/C,YAAY,GAAE,sCAA2C,GACxD,OAAO,CAAC,gCAAgC,CAAC,CAyC3C;AAED,wBAAsB,6BAA6B,CACjD,OAAO,GAAE,IAAI,CACX,iCAAiC,EACjC,gBAAgB,GAAG,KAAK,CACpB,GACL,OAAO,CAAC,IAAI,CAAC,CASf"}
@@ -1,8 +1,8 @@
1
1
  /* eslint-disable import-x/no-nodejs-modules, no-restricted-globals */
2
- import { cleanInstallerCache, downloadFileFromUrl, extractTarBz2Archive, findExecutable, getCacheKey, getMetamaskCacheDirectory, getPlatformKey, installExecutableWrapper, mergeArtifactConfig, readCliValue, readPackageJsonToolConfig, requireCompletePlatformConfig, resolvePlatformConfig, verifyFileChecksum, } from '@metamask/local-node-utils';
3
- import { existsSync, readFileSync } from 'node:fs';
4
- import { mkdir, rename, rm, writeFile } from 'node:fs/promises';
5
- import { dirname, join } from 'node:path';
2
+ import { cleanInstallerCache, downloadFileFromUrl, extractTarBz2Archive, findExecutable, getCacheKey, getMetamaskCacheDirectory, getPlatformKey, installExecutableWrapper, mergeArtifactConfig, readCliValue, readPackageJsonToolConfig, requireCompletePlatformConfig, resolvePlatformConfig, verifyFileChecksum } from "@metamask/local-node-utils";
3
+ import { existsSync, readFileSync } from "node:fs";
4
+ import { mkdir, rename, rm, writeFile } from "node:fs/promises";
5
+ import { dirname, join } from "node:path";
6
6
  const SOLANA_TEST_VALIDATOR_CACHE_NAMESPACE = 'solana-test-validator-up';
7
7
  const RELEASE_CACHE_NAMESPACE = 'release';
8
8
  export const SOLANA_TEST_VALIDATOR_DEFAULT_RELEASE = {
@@ -179,4 +179,4 @@ function findSolanaBinaries(root) {
179
179
  }
180
180
  return { solanaBinary, validatorBinary };
181
181
  }
182
- //# sourceMappingURL=install.js.map
182
+ //# sourceMappingURL=install.mjs.map
@@ -0,0 +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 {\n cleanInstallerCache,\n downloadFileFromUrl,\n extractTarBz2Archive,\n findExecutable,\n getCacheKey,\n getMetamaskCacheDirectory,\n getPlatformKey,\n installExecutableWrapper,\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, readFileSync } from 'node:fs';\nimport { mkdir, rename, rm, writeFile } from 'node:fs/promises';\nimport { dirname, join } from 'node:path';\n\nconst SOLANA_TEST_VALIDATOR_CACHE_NAMESPACE = 'solana-test-validator-up';\nconst RELEASE_CACHE_NAMESPACE = 'release';\n\nexport type SolanaTestValidatorArtifactConfig = ArtifactConfig;\n\nexport type SolanaTestValidatorArtifactPlatformConfig = ArtifactPlatformConfig;\n\nexport type SolanaTestValidatorInstallOptions = {\n binDirectory?: string;\n cacheDirectory?: string;\n cwd?: string;\n platform?: string;\n release?: SolanaTestValidatorArtifactConfig;\n};\n\nexport type SolanaTestValidatorInstallResult = {\n binaryPath: string;\n cacheHit: boolean;\n checksum: string;\n solanaBinary: string;\n validatorBinary: string;\n version?: string;\n};\n\nexport type SolanaTestValidatorInstallDependencies = InstallDependencies;\n\ntype SolanaTestValidatorPackageJsonConfig = Pick<\n SolanaTestValidatorInstallOptions,\n 'binDirectory' | 'cacheDirectory' | 'release'\n>;\n\nexport const SOLANA_TEST_VALIDATOR_DEFAULT_RELEASE: SolanaTestValidatorArtifactConfig =\n {\n version: 'v3.1.14',\n platforms: {\n 'darwin-arm64': {\n checksum:\n '54cfc2680bd6426fda04619ee01933f40a649c8056f3a61ba20dc54dd427ebed',\n size: 77_158_067,\n url: 'https://github.com/anza-xyz/agave/releases/download/v3.1.14/solana-release-aarch64-apple-darwin.tar.bz2',\n },\n 'darwin-x64': {\n checksum:\n 'e3768ed01daa1e3cfc02af3e3eb396cec2d48a99ecf80cd5d7bdff510f808d1f',\n size: 81_239_759,\n url: 'https://github.com/anza-xyz/agave/releases/download/v3.1.14/solana-release-x86_64-apple-darwin.tar.bz2',\n },\n 'linux-x64': {\n checksum:\n '06f97c065cc977cbec2f13ffc9bc9d3b92fef485431fcb370a269de69532ef51',\n size: 215_235_690,\n url: 'https://github.com/anza-xyz/agave/releases/download/v3.1.14/solana-release-x86_64-unknown-linux-gnu.tar.bz2',\n },\n },\n };\n\nexport function getSolanaTestValidatorCacheDirectory({\n cwd = process.cwd(),\n homeDirectory,\n}: {\n cwd?: string;\n homeDirectory?: string;\n} = {}): string {\n return getMetamaskCacheDirectory({\n cwd,\n homeDirectory,\n toolName: SOLANA_TEST_VALIDATOR_CACHE_NAMESPACE,\n });\n}\n\nexport function readSolanaTestValidatorInstallOptionsFromPackageJson({\n cwd = process.cwd(),\n packageJsonPath = join(cwd, 'package.json'),\n}: {\n cwd?: string;\n packageJsonPath?: string;\n} = {}): SolanaTestValidatorInstallOptions {\n const config = readPackageJsonToolConfig({\n cwd,\n packageJsonPath,\n configKeys: [\n 'solanaTestValidatorUp',\n 'solanatestvalidatorup',\n 'solana-test-validator-up',\n ],\n }) as Partial<SolanaTestValidatorPackageJsonConfig>;\n const options: SolanaTestValidatorInstallOptions = {};\n\n if (config.binDirectory) {\n options.binDirectory = config.binDirectory;\n }\n if (config.cacheDirectory) {\n options.cacheDirectory = config.cacheDirectory;\n }\n if (config.release) {\n options.release = config.release;\n }\n\n return options;\n}\n\nexport function parseSolanaTestValidatorInstallCliOptions(\n args: string[],\n): SolanaTestValidatorInstallOptions {\n const options: SolanaTestValidatorInstallOptions = {};\n const release: Partial<SolanaTestValidatorArtifactPlatformConfig> = {};\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 '--platform':\n options.platform = readCliValue(arg, value);\n index += 1;\n break;\n case '--release-checksum':\n release.checksum = readCliValue(arg, value);\n index += 1;\n break;\n case '--release-url':\n release.url = readCliValue(arg, value);\n index += 1;\n break;\n default:\n throw new Error(\n `Unknown solana-test-validator-up install option: ${arg}`,\n );\n }\n }\n\n if (release.url || release.checksum) {\n options.release = {\n platforms: {\n current: requireCompletePlatformConfig(\n release,\n 'Solana release CLI options',\n ),\n },\n };\n }\n\n return options;\n}\n\nexport async function installSolanaTestValidator(\n options: SolanaTestValidatorInstallOptions = {},\n dependencies: SolanaTestValidatorInstallDependencies = {},\n): Promise<SolanaTestValidatorInstallResult> {\n const cwd = options.cwd ?? process.cwd();\n const cacheDirectory =\n options.cacheDirectory ?? getSolanaTestValidatorCacheDirectory({ cwd });\n const binDirectory =\n options.binDirectory ?? join(cwd, 'node_modules', '.bin');\n const platformKey = options.platform ?? getPlatformKey();\n const release = mergeArtifactConfig(\n SOLANA_TEST_VALIDATOR_DEFAULT_RELEASE,\n options.release,\n );\n const releaseConfig = resolvePlatformConfig(\n release,\n platformKey,\n 'Solana release',\n );\n const releaseResult = await installSolanaRelease(\n { cacheDirectory, config: releaseConfig },\n dependencies,\n );\n const binaryPath = await installExecutableWrapper({\n binDirectory,\n commandName: 'solana-test-validator',\n executablePath: releaseResult.validatorBinary,\n pathResolution: 'relative',\n });\n await installExecutableWrapper({\n binDirectory,\n commandName: 'solana',\n executablePath: releaseResult.solanaBinary,\n pathResolution: 'relative',\n });\n\n return {\n binaryPath,\n cacheHit: releaseResult.cacheHit,\n checksum: releaseConfig.checksum,\n solanaBinary: releaseResult.solanaBinary,\n validatorBinary: releaseResult.validatorBinary,\n version: release.version,\n };\n}\n\nexport async function cleanSolanaTestValidatorCache(\n options: Pick<\n SolanaTestValidatorInstallOptions,\n 'cacheDirectory' | 'cwd'\n > = {},\n): Promise<void> {\n const cwd = options.cwd ?? process.cwd();\n const cacheDirectory =\n options.cacheDirectory ?? getSolanaTestValidatorCacheDirectory({ cwd });\n\n await cleanInstallerCache({\n cacheDirectory,\n namespace: SOLANA_TEST_VALIDATOR_CACHE_NAMESPACE,\n });\n}\n\nasync function installSolanaRelease(\n {\n cacheDirectory,\n config,\n }: {\n cacheDirectory: string;\n config: SolanaTestValidatorArtifactPlatformConfig;\n },\n dependencies: SolanaTestValidatorInstallDependencies,\n): Promise<{\n cacheHit: boolean;\n solanaBinary: string;\n validatorBinary: string;\n}> {\n const cacheKey = getCacheKey(config);\n const cacheRoot = join(\n cacheDirectory,\n SOLANA_TEST_VALIDATOR_CACHE_NAMESPACE,\n RELEASE_CACHE_NAMESPACE,\n cacheKey,\n );\n const checksumPath = join(cacheRoot, '.source-checksum');\n const cached = findSolanaBinaries(cacheRoot);\n\n if (\n cached &&\n existsSync(checksumPath) &&\n readFileSync(checksumPath, 'utf8') === config.checksum\n ) {\n return { cacheHit: true, ...cached };\n }\n\n const tempRoot = `${cacheRoot}.downloading`;\n const archivePath = join(tempRoot, 'solana-release.tar.bz2');\n const downloadFile = dependencies.downloadFile ?? downloadFileFromUrl;\n const extractArchive = dependencies.extractArchive ?? extractTarBz2Archive;\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, archivePath);\n await verifyFileChecksum(\n archivePath,\n config.checksum,\n 'Downloaded Solana release',\n );\n await extractArchive(archivePath, tempRoot);\n\n const binaries = findSolanaBinaries(tempRoot);\n if (!binaries) {\n throw new Error(\n 'Solana release archive did not contain bin/solana-test-validator and bin/solana.',\n );\n }\n\n await writeFile(checksumPath.replace(cacheRoot, tempRoot), config.checksum);\n await mkdir(dirname(cacheRoot), { recursive: true });\n await rename(tempRoot, cacheRoot);\n\n return {\n cacheHit: false,\n solanaBinary: binaries.solanaBinary.replace(tempRoot, cacheRoot),\n validatorBinary: binaries.validatorBinary.replace(tempRoot, cacheRoot),\n };\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 findSolanaBinaries(\n root: string,\n): { solanaBinary: string; validatorBinary: string } | undefined {\n const validatorBinary = findExecutable(root, 'solana-test-validator');\n const solanaBinary = findExecutable(root, 'solana');\n\n if (!validatorBinary || !solanaBinary) {\n return undefined;\n }\n\n return { solanaBinary, validatorBinary };\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metamask-previews/solana-test-validator-up",
3
- "version": "1.0.0-preview-4f4c98e",
3
+ "version": "1.0.0-preview-eb263b0ee",
4
4
  "description": "solana-test-validator runtime installer for MetaMask E2E tests",
5
5
  "keywords": [
6
6
  "Ethereum",
@@ -15,16 +15,23 @@
15
15
  "type": "git",
16
16
  "url": "https://github.com/MetaMask/core.git"
17
17
  },
18
- "bin": "./dist/bin/solana-test-validator-up.js",
18
+ "bin": "./dist/bin/solana-test-validator-up.mjs",
19
19
  "files": [
20
20
  "dist/"
21
21
  ],
22
- "type": "module",
23
22
  "sideEffects": false,
23
+ "main": "./dist/index.cjs",
24
+ "types": "./dist/index.d.cts",
24
25
  "exports": {
25
26
  ".": {
26
- "types": "./dist/index.d.ts",
27
- "default": "./dist/index.js"
27
+ "import": {
28
+ "types": "./dist/index.d.mts",
29
+ "default": "./dist/index.mjs"
30
+ },
31
+ "require": {
32
+ "types": "./dist/index.d.cts",
33
+ "default": "./dist/index.cjs"
34
+ }
28
35
  },
29
36
  "./package.json": "./package.json"
30
37
  },
@@ -33,11 +40,9 @@
33
40
  "registry": "https://registry.npmjs.org/"
34
41
  },
35
42
  "scripts": {
36
- "build": "tsc --project tsconfig.build.json",
37
- "build:all": "tsc --build tsconfig.build.json --verbose",
38
- "build:clean": "yarn build:only-clean && yarn build",
43
+ "build": "ts-bridge --project tsconfig.build.json --verbose --clean --no-references",
44
+ "build:all": "ts-bridge --project tsconfig.build.json --verbose --clean",
39
45
  "build:docs": "typedoc",
40
- "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'",
41
46
  "changelog:update": "../../scripts/update-changelog.sh @metamask/solana-test-validator-up",
42
47
  "changelog:validate": "../../scripts/validate-changelog.sh @metamask/solana-test-validator-up",
43
48
  "lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts",
@@ -55,18 +60,17 @@
55
60
  },
56
61
  "devDependencies": {
57
62
  "@metamask/auto-changelog": "^6.1.0",
63
+ "@ts-bridge/cli": "^0.6.4",
58
64
  "@types/jest": "^30.0.0",
59
- "@typescript/native": "npm:typescript@^7.0.2",
60
65
  "deepmerge": "^4.2.2",
61
66
  "jest": "^30.4.2",
62
- "rimraf": "^5.0.5",
63
67
  "ts-jest": "^29.4.11",
64
68
  "tsx": "^4.20.5",
65
69
  "typedoc": "^0.25.13",
66
70
  "typedoc-plugin-missing-exports": "^2.0.0",
67
- "typescript": "npm:@typescript/typescript6@^6.0.2"
71
+ "typescript": "~5.3.3"
68
72
  },
69
73
  "engines": {
70
- "node": "^22.14.0 || ^24"
74
+ "node": "^18.18 || >=20"
71
75
  }
72
76
  }
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=solana-test-validator-up.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"solana-test-validator-up.d.ts","sourceRoot":"","sources":["../../src/bin/solana-test-validator-up.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"solana-test-validator-up.js","sourceRoot":"","sources":["../../src/bin/solana-test-validator-up.ts"],"names":[],"mappings":";AACA,0CAA0C;AAC1C,OAAO,EACL,6BAA6B,EAC7B,0BAA0B,EAC1B,yCAAyC,EACzC,oDAAoD,GACrD,MAAM,eAAe,CAAC;AAEvB,KAAK,UAAU,IAAI;IACjB,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEjD,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QAC/C,SAAS,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;QAC/C,MAAM,6BAA6B,CAAC;YAClC,GAAG,oDAAoD,EAAE;YACzD,GAAG,yCAAyC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC5D,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QACxD,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC;QAC9C,GAAG,oDAAoD,EAAE;QACzD,GAAG,yCAAyC,CAAC,WAAW,CAAC;KAC1D,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CACT,6CACE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WACvC,EAAE,CACH,CAAC;IACF,OAAO,CAAC,GAAG,CACT,iEAAiE,MAAM,CAAC,UAAU,EAAE,CACrF,CAAC;AACJ,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;mDAcqC,CAAC,CAAC;AACrD,CAAC","sourcesContent":["#!/usr/bin/env node\n/* eslint-disable no-restricted-globals */\nimport {\n cleanSolanaTestValidatorCache,\n installSolanaTestValidator,\n parseSolanaTestValidatorInstallCliOptions,\n readSolanaTestValidatorInstallOptionsFromPackageJson,\n} from '../install.js';\n\nasync function main(): Promise<void> {\n const [command, ...args] = process.argv.slice(2);\n\n if (command === '--help' || command === 'help') {\n printHelp();\n return;\n }\n\n if (command === 'cache' && args[0] === 'clean') {\n await cleanSolanaTestValidatorCache({\n ...readSolanaTestValidatorInstallOptionsFromPackageJson(),\n ...parseSolanaTestValidatorInstallCliOptions(args.slice(1)),\n });\n console.log('[solana-test-validator-up] cache cleaned');\n return;\n }\n\n const installArgs = command === 'install' ? args : process.argv.slice(2);\n const result = await installSolanaTestValidator({\n ...readSolanaTestValidatorInstallOptionsFromPackageJson(),\n ...parseSolanaTestValidatorInstallCliOptions(installArgs),\n });\n\n console.log(\n `[solana-test-validator-up] Solana release ${\n result.cacheHit ? 'found in cache' : 'installed'\n }`,\n );\n console.log(\n `[solana-test-validator-up] solana-test-validator installed at ${result.binaryPath}`,\n );\n}\n\nmain().catch((error) => {\n console.error(error);\n process.exit(1);\n});\n\nfunction printHelp(): void {\n console.log(`Usage: solana-test-validator-up [install] [options]\n solana-test-validator-up cache clean [options]\n\nCommands:\n install Install solana-test-validator and solana CLI. Default command.\n cache clean Remove cached solana-test-validator-up artifacts.\n\nOptions:\n --bin-directory <path> Directory for executable wrappers.\n Defaults to node_modules/.bin.\n --cache-directory <path> Cache directory. Defaults to .metamask/cache.\n --release-url <url> Solana release archive URL for the current platform.\n --release-checksum <hash> Expected Solana release SHA-256 checksum.\n --platform <platform> Override platform key, e.g. linux-x64.\n --help Show this help text.`);\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qCAAqC,EACrC,6BAA6B,EAC7B,oCAAoC,EACpC,0BAA0B,EAC1B,yCAAyC,EACzC,oDAAoD,GACrD,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,iCAAiC,EACjC,yCAAyC,EACzC,sCAAsC,EACtC,iCAAiC,EACjC,gCAAgC,GACjC,MAAM,cAAc,CAAC"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qCAAqC,EACrC,6BAA6B,EAC7B,oCAAoC,EACpC,0BAA0B,EAC1B,yCAAyC,EACzC,oDAAoD,GACrD,MAAM,cAAc,CAAC","sourcesContent":["export {\n SOLANA_TEST_VALIDATOR_DEFAULT_RELEASE,\n cleanSolanaTestValidatorCache,\n getSolanaTestValidatorCacheDirectory,\n installSolanaTestValidator,\n parseSolanaTestValidatorInstallCliOptions,\n readSolanaTestValidatorInstallOptionsFromPackageJson,\n} from './install.js';\nexport type {\n SolanaTestValidatorArtifactConfig,\n SolanaTestValidatorArtifactPlatformConfig,\n SolanaTestValidatorInstallDependencies,\n SolanaTestValidatorInstallOptions,\n SolanaTestValidatorInstallResult,\n} from './install.js';\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EACV,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AAQpC,MAAM,MAAM,iCAAiC,GAAG,cAAc,CAAC;AAE/D,MAAM,MAAM,yCAAyC,GAAG,sBAAsB,CAAC;AAE/E,MAAM,MAAM,iCAAiC,GAAG;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,iCAAiC,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,sCAAsC,GAAG,mBAAmB,CAAC;AAOzE,eAAO,MAAM,qCAAqC,EAAE,iCAuBjD,CAAC;AAEJ,wBAAgB,oCAAoC,CAAC,EACnD,GAAmB,EACnB,aAAa,GACd,GAAE;IACD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,MAAM,CAMd;AAED,wBAAgB,oDAAoD,CAAC,EACnE,GAAmB,EACnB,eAA2C,GAC5C,GAAE;IACD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,iCAAiC,CAuBzC;AAED,wBAAgB,yCAAyC,CACvD,IAAI,EAAE,MAAM,EAAE,GACb,iCAAiC,CAgDnC;AAED,wBAAsB,0BAA0B,CAC9C,OAAO,GAAE,iCAAsC,EAC/C,YAAY,GAAE,sCAA2C,GACxD,OAAO,CAAC,gCAAgC,CAAC,CAyC3C;AAED,wBAAsB,6BAA6B,CACjD,OAAO,GAAE,IAAI,CACX,iCAAiC,EACjC,gBAAgB,GAAG,KAAK,CACpB,GACL,OAAO,CAAC,IAAI,CAAC,CASf"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"install.js","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 extractTarBz2Archive,\n findExecutable,\n getCacheKey,\n getMetamaskCacheDirectory,\n getPlatformKey,\n installExecutableWrapper,\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, readFileSync } from 'node:fs';\nimport { mkdir, rename, rm, writeFile } from 'node:fs/promises';\nimport { dirname, join } from 'node:path';\n\nconst SOLANA_TEST_VALIDATOR_CACHE_NAMESPACE = 'solana-test-validator-up';\nconst RELEASE_CACHE_NAMESPACE = 'release';\n\nexport type SolanaTestValidatorArtifactConfig = ArtifactConfig;\n\nexport type SolanaTestValidatorArtifactPlatformConfig = ArtifactPlatformConfig;\n\nexport type SolanaTestValidatorInstallOptions = {\n binDirectory?: string;\n cacheDirectory?: string;\n cwd?: string;\n platform?: string;\n release?: SolanaTestValidatorArtifactConfig;\n};\n\nexport type SolanaTestValidatorInstallResult = {\n binaryPath: string;\n cacheHit: boolean;\n checksum: string;\n solanaBinary: string;\n validatorBinary: string;\n version?: string;\n};\n\nexport type SolanaTestValidatorInstallDependencies = InstallDependencies;\n\ntype SolanaTestValidatorPackageJsonConfig = Pick<\n SolanaTestValidatorInstallOptions,\n 'binDirectory' | 'cacheDirectory' | 'release'\n>;\n\nexport const SOLANA_TEST_VALIDATOR_DEFAULT_RELEASE: SolanaTestValidatorArtifactConfig =\n {\n version: 'v3.1.14',\n platforms: {\n 'darwin-arm64': {\n checksum:\n '54cfc2680bd6426fda04619ee01933f40a649c8056f3a61ba20dc54dd427ebed',\n size: 77_158_067,\n url: 'https://github.com/anza-xyz/agave/releases/download/v3.1.14/solana-release-aarch64-apple-darwin.tar.bz2',\n },\n 'darwin-x64': {\n checksum:\n 'e3768ed01daa1e3cfc02af3e3eb396cec2d48a99ecf80cd5d7bdff510f808d1f',\n size: 81_239_759,\n url: 'https://github.com/anza-xyz/agave/releases/download/v3.1.14/solana-release-x86_64-apple-darwin.tar.bz2',\n },\n 'linux-x64': {\n checksum:\n '06f97c065cc977cbec2f13ffc9bc9d3b92fef485431fcb370a269de69532ef51',\n size: 215_235_690,\n url: 'https://github.com/anza-xyz/agave/releases/download/v3.1.14/solana-release-x86_64-unknown-linux-gnu.tar.bz2',\n },\n },\n };\n\nexport function getSolanaTestValidatorCacheDirectory({\n cwd = process.cwd(),\n homeDirectory,\n}: {\n cwd?: string;\n homeDirectory?: string;\n} = {}): string {\n return getMetamaskCacheDirectory({\n cwd,\n homeDirectory,\n toolName: SOLANA_TEST_VALIDATOR_CACHE_NAMESPACE,\n });\n}\n\nexport function readSolanaTestValidatorInstallOptionsFromPackageJson({\n cwd = process.cwd(),\n packageJsonPath = join(cwd, 'package.json'),\n}: {\n cwd?: string;\n packageJsonPath?: string;\n} = {}): SolanaTestValidatorInstallOptions {\n const config = readPackageJsonToolConfig({\n cwd,\n packageJsonPath,\n configKeys: [\n 'solanaTestValidatorUp',\n 'solanatestvalidatorup',\n 'solana-test-validator-up',\n ],\n }) as Partial<SolanaTestValidatorPackageJsonConfig>;\n const options: SolanaTestValidatorInstallOptions = {};\n\n if (config.binDirectory) {\n options.binDirectory = config.binDirectory;\n }\n if (config.cacheDirectory) {\n options.cacheDirectory = config.cacheDirectory;\n }\n if (config.release) {\n options.release = config.release;\n }\n\n return options;\n}\n\nexport function parseSolanaTestValidatorInstallCliOptions(\n args: string[],\n): SolanaTestValidatorInstallOptions {\n const options: SolanaTestValidatorInstallOptions = {};\n const release: Partial<SolanaTestValidatorArtifactPlatformConfig> = {};\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 '--platform':\n options.platform = readCliValue(arg, value);\n index += 1;\n break;\n case '--release-checksum':\n release.checksum = readCliValue(arg, value);\n index += 1;\n break;\n case '--release-url':\n release.url = readCliValue(arg, value);\n index += 1;\n break;\n default:\n throw new Error(\n `Unknown solana-test-validator-up install option: ${arg}`,\n );\n }\n }\n\n if (release.url || release.checksum) {\n options.release = {\n platforms: {\n current: requireCompletePlatformConfig(\n release,\n 'Solana release CLI options',\n ),\n },\n };\n }\n\n return options;\n}\n\nexport async function installSolanaTestValidator(\n options: SolanaTestValidatorInstallOptions = {},\n dependencies: SolanaTestValidatorInstallDependencies = {},\n): Promise<SolanaTestValidatorInstallResult> {\n const cwd = options.cwd ?? process.cwd();\n const cacheDirectory =\n options.cacheDirectory ?? getSolanaTestValidatorCacheDirectory({ cwd });\n const binDirectory =\n options.binDirectory ?? join(cwd, 'node_modules', '.bin');\n const platformKey = options.platform ?? getPlatformKey();\n const release = mergeArtifactConfig(\n SOLANA_TEST_VALIDATOR_DEFAULT_RELEASE,\n options.release,\n );\n const releaseConfig = resolvePlatformConfig(\n release,\n platformKey,\n 'Solana release',\n );\n const releaseResult = await installSolanaRelease(\n { cacheDirectory, config: releaseConfig },\n dependencies,\n );\n const binaryPath = await installExecutableWrapper({\n binDirectory,\n commandName: 'solana-test-validator',\n executablePath: releaseResult.validatorBinary,\n pathResolution: 'relative',\n });\n await installExecutableWrapper({\n binDirectory,\n commandName: 'solana',\n executablePath: releaseResult.solanaBinary,\n pathResolution: 'relative',\n });\n\n return {\n binaryPath,\n cacheHit: releaseResult.cacheHit,\n checksum: releaseConfig.checksum,\n solanaBinary: releaseResult.solanaBinary,\n validatorBinary: releaseResult.validatorBinary,\n version: release.version,\n };\n}\n\nexport async function cleanSolanaTestValidatorCache(\n options: Pick<\n SolanaTestValidatorInstallOptions,\n 'cacheDirectory' | 'cwd'\n > = {},\n): Promise<void> {\n const cwd = options.cwd ?? process.cwd();\n const cacheDirectory =\n options.cacheDirectory ?? getSolanaTestValidatorCacheDirectory({ cwd });\n\n await cleanInstallerCache({\n cacheDirectory,\n namespace: SOLANA_TEST_VALIDATOR_CACHE_NAMESPACE,\n });\n}\n\nasync function installSolanaRelease(\n {\n cacheDirectory,\n config,\n }: {\n cacheDirectory: string;\n config: SolanaTestValidatorArtifactPlatformConfig;\n },\n dependencies: SolanaTestValidatorInstallDependencies,\n): Promise<{\n cacheHit: boolean;\n solanaBinary: string;\n validatorBinary: string;\n}> {\n const cacheKey = getCacheKey(config);\n const cacheRoot = join(\n cacheDirectory,\n SOLANA_TEST_VALIDATOR_CACHE_NAMESPACE,\n RELEASE_CACHE_NAMESPACE,\n cacheKey,\n );\n const checksumPath = join(cacheRoot, '.source-checksum');\n const cached = findSolanaBinaries(cacheRoot);\n\n if (\n cached &&\n existsSync(checksumPath) &&\n readFileSync(checksumPath, 'utf8') === config.checksum\n ) {\n return { cacheHit: true, ...cached };\n }\n\n const tempRoot = `${cacheRoot}.downloading`;\n const archivePath = join(tempRoot, 'solana-release.tar.bz2');\n const downloadFile = dependencies.downloadFile ?? downloadFileFromUrl;\n const extractArchive = dependencies.extractArchive ?? extractTarBz2Archive;\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, archivePath);\n await verifyFileChecksum(\n archivePath,\n config.checksum,\n 'Downloaded Solana release',\n );\n await extractArchive(archivePath, tempRoot);\n\n const binaries = findSolanaBinaries(tempRoot);\n if (!binaries) {\n throw new Error(\n 'Solana release archive did not contain bin/solana-test-validator and bin/solana.',\n );\n }\n\n await writeFile(checksumPath.replace(cacheRoot, tempRoot), config.checksum);\n await mkdir(dirname(cacheRoot), { recursive: true });\n await rename(tempRoot, cacheRoot);\n\n return {\n cacheHit: false,\n solanaBinary: binaries.solanaBinary.replace(tempRoot, cacheRoot),\n validatorBinary: binaries.validatorBinary.replace(tempRoot, cacheRoot),\n };\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 findSolanaBinaries(\n root: string,\n): { solanaBinary: string; validatorBinary: string } | undefined {\n const validatorBinary = findExecutable(root, 'solana-test-validator');\n const solanaBinary = findExecutable(root, 'solana');\n\n if (!validatorBinary || !solanaBinary) {\n return undefined;\n }\n\n return { solanaBinary, validatorBinary };\n}\n"]}