@metamask-previews/solana-test-validator-up 1.0.0-preview-8bfa290fb → 2.0.0-preview-0a30e47
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 +13 -1
- package/dist/bin/solana-test-validator-up.d.ts +3 -0
- package/dist/bin/solana-test-validator-up.d.ts.map +1 -0
- package/dist/bin/{solana-test-validator-up.mjs → solana-test-validator-up.js} +2 -2
- package/dist/bin/solana-test-validator-up.js.map +1 -0
- package/dist/{index.d.cts → index.d.ts} +3 -3
- package/dist/index.d.ts.map +1 -0
- package/dist/{index.mjs → index.js} +2 -2
- package/dist/index.js.map +1 -0
- package/dist/{install.d.cts → install.d.ts} +2 -2
- package/dist/install.d.ts.map +1 -0
- package/dist/{install.mjs → install.js} +8 -8
- package/dist/install.js.map +1 -0
- package/package.json +14 -18
- package/dist/bin/solana-test-validator-up.cjs +0 -49
- package/dist/bin/solana-test-validator-up.cjs.map +0 -1
- package/dist/bin/solana-test-validator-up.d.cts +0 -3
- package/dist/bin/solana-test-validator-up.d.cts.map +0 -1
- package/dist/bin/solana-test-validator-up.d.mts +0 -3
- package/dist/bin/solana-test-validator-up.d.mts.map +0 -1
- package/dist/bin/solana-test-validator-up.mjs.map +0 -1
- package/dist/index.cjs +0 -11
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts.map +0 -1
- package/dist/index.d.mts +0 -3
- package/dist/index.d.mts.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/install.cjs +0 -190
- package/dist/install.cjs.map +0 -1
- package/dist/install.d.cts.map +0 -1
- package/dist/install.d.mts +0 -32
- package/dist/install.d.mts.map +0 -1
- package/dist/install.mjs.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.0.0]
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536))
|
|
15
|
+
- This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions.
|
|
16
|
+
- **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976))
|
|
17
|
+
- **BREAKING:** Bump TypeScript target to ES2022 ([#10019](https://github.com/MetaMask/core/pull/10019))
|
|
18
|
+
- This package now ships ES2022 code, requiring a compatible modern environment or bundler configuration to consume.
|
|
19
|
+
- Bump `@metamask/local-node-utils` from `^1.0.0` to `^2.0.0` ([#10160](https://github.com/MetaMask/core/pull/10160))
|
|
20
|
+
|
|
10
21
|
## [1.0.0]
|
|
11
22
|
|
|
12
23
|
### Added
|
|
@@ -16,5 +27,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
16
27
|
- Exposes `solana-test-validator-up`, `solana-test-validator`, and `solana` binaries via `node_modules/.bin`
|
|
17
28
|
- Uses `@metamask/local-node-utils` for cache resolution, downloads, and executable wrappers
|
|
18
29
|
|
|
19
|
-
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/solana-test-validator-up@
|
|
30
|
+
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/solana-test-validator-up@2.0.0...HEAD
|
|
31
|
+
[2.0.0]: https://github.com/MetaMask/core/compare/@metamask/solana-test-validator-up@1.0.0...@metamask/solana-test-validator-up@2.0.0
|
|
20
32
|
[1.0.0]: https://github.com/MetaMask/core/releases/tag/@metamask/solana-test-validator-up@1.0.0
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solana-test-validator-up.d.ts","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
|
|
3
|
+
import { cleanSolanaTestValidatorCache, installSolanaTestValidator, parseSolanaTestValidatorInstallCliOptions, readSolanaTestValidatorInstallOptionsFromPackageJson, } from '../install.js';
|
|
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.
|
|
47
|
+
//# sourceMappingURL=solana-test-validator-up.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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,3 +1,3 @@
|
|
|
1
|
-
export { SOLANA_TEST_VALIDATOR_DEFAULT_RELEASE, cleanSolanaTestValidatorCache, getSolanaTestValidatorCacheDirectory, installSolanaTestValidator, parseSolanaTestValidatorInstallCliOptions, readSolanaTestValidatorInstallOptionsFromPackageJson, } from
|
|
2
|
-
export type { SolanaTestValidatorArtifactConfig, SolanaTestValidatorArtifactPlatformConfig, SolanaTestValidatorInstallDependencies, SolanaTestValidatorInstallOptions, SolanaTestValidatorInstallResult, } from
|
|
3
|
-
//# sourceMappingURL=index.d.
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { SOLANA_TEST_VALIDATOR_DEFAULT_RELEASE, cleanSolanaTestValidatorCache, getSolanaTestValidatorCacheDirectory, installSolanaTestValidator, parseSolanaTestValidatorInstallCliOptions, readSolanaTestValidatorInstallOptionsFromPackageJson } from
|
|
2
|
-
//# sourceMappingURL=index.
|
|
1
|
+
export { SOLANA_TEST_VALIDATOR_DEFAULT_RELEASE, cleanSolanaTestValidatorCache, getSolanaTestValidatorCacheDirectory, installSolanaTestValidator, parseSolanaTestValidatorInstallCliOptions, readSolanaTestValidatorInstallOptionsFromPackageJson, } from './install.js';
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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,4 +1,4 @@
|
|
|
1
|
-
import type { ArtifactConfig, ArtifactPlatformConfig, InstallDependencies } from
|
|
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.
|
|
32
|
+
//# sourceMappingURL=install.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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,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
|
|
3
|
-
import { existsSync, readFileSync } from
|
|
4
|
-
import { mkdir, rename, rm, writeFile } from
|
|
5
|
-
import { dirname, join } from
|
|
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 = {
|
|
@@ -10,17 +10,17 @@ export const SOLANA_TEST_VALIDATOR_DEFAULT_RELEASE = {
|
|
|
10
10
|
platforms: {
|
|
11
11
|
'darwin-arm64': {
|
|
12
12
|
checksum: '54cfc2680bd6426fda04619ee01933f40a649c8056f3a61ba20dc54dd427ebed',
|
|
13
|
-
size:
|
|
13
|
+
size: 77_158_067,
|
|
14
14
|
url: 'https://github.com/anza-xyz/agave/releases/download/v3.1.14/solana-release-aarch64-apple-darwin.tar.bz2',
|
|
15
15
|
},
|
|
16
16
|
'darwin-x64': {
|
|
17
17
|
checksum: 'e3768ed01daa1e3cfc02af3e3eb396cec2d48a99ecf80cd5d7bdff510f808d1f',
|
|
18
|
-
size:
|
|
18
|
+
size: 81_239_759,
|
|
19
19
|
url: 'https://github.com/anza-xyz/agave/releases/download/v3.1.14/solana-release-x86_64-apple-darwin.tar.bz2',
|
|
20
20
|
},
|
|
21
21
|
'linux-x64': {
|
|
22
22
|
checksum: '06f97c065cc977cbec2f13ffc9bc9d3b92fef485431fcb370a269de69532ef51',
|
|
23
|
-
size:
|
|
23
|
+
size: 215_235_690,
|
|
24
24
|
url: 'https://github.com/anza-xyz/agave/releases/download/v3.1.14/solana-release-x86_64-unknown-linux-gnu.tar.bz2',
|
|
25
25
|
},
|
|
26
26
|
},
|
|
@@ -179,4 +179,4 @@ function findSolanaBinaries(root) {
|
|
|
179
179
|
}
|
|
180
180
|
return { solanaBinary, validatorBinary };
|
|
181
181
|
}
|
|
182
|
-
//# sourceMappingURL=install.
|
|
182
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metamask-previews/solana-test-validator-up",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0-preview-0a30e47",
|
|
4
4
|
"description": "solana-test-validator runtime installer for MetaMask E2E tests",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Ethereum",
|
|
@@ -15,23 +15,16 @@
|
|
|
15
15
|
"type": "git",
|
|
16
16
|
"url": "https://github.com/MetaMask/core.git"
|
|
17
17
|
},
|
|
18
|
-
"bin": "./dist/bin/solana-test-validator-up.
|
|
18
|
+
"bin": "./dist/bin/solana-test-validator-up.js",
|
|
19
19
|
"files": [
|
|
20
20
|
"dist/"
|
|
21
21
|
],
|
|
22
|
+
"type": "module",
|
|
22
23
|
"sideEffects": false,
|
|
23
|
-
"main": "./dist/index.cjs",
|
|
24
|
-
"types": "./dist/index.d.cts",
|
|
25
24
|
"exports": {
|
|
26
25
|
".": {
|
|
27
|
-
"
|
|
28
|
-
|
|
29
|
-
"default": "./dist/index.mjs"
|
|
30
|
-
},
|
|
31
|
-
"require": {
|
|
32
|
-
"types": "./dist/index.d.cts",
|
|
33
|
-
"default": "./dist/index.cjs"
|
|
34
|
-
}
|
|
26
|
+
"types": "./dist/index.d.ts",
|
|
27
|
+
"default": "./dist/index.js"
|
|
35
28
|
},
|
|
36
29
|
"./package.json": "./package.json"
|
|
37
30
|
},
|
|
@@ -40,9 +33,11 @@
|
|
|
40
33
|
"registry": "https://registry.npmjs.org/"
|
|
41
34
|
},
|
|
42
35
|
"scripts": {
|
|
43
|
-
"build": "
|
|
44
|
-
"build:all": "
|
|
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",
|
|
45
39
|
"build:docs": "typedoc",
|
|
40
|
+
"build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'",
|
|
46
41
|
"changelog:update": "../../scripts/update-changelog.sh @metamask/solana-test-validator-up",
|
|
47
42
|
"changelog:validate": "../../scripts/validate-changelog.sh @metamask/solana-test-validator-up",
|
|
48
43
|
"lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts",
|
|
@@ -56,21 +51,22 @@
|
|
|
56
51
|
"test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch"
|
|
57
52
|
},
|
|
58
53
|
"dependencies": {
|
|
59
|
-
"@metamask/local-node-utils": "^
|
|
54
|
+
"@metamask/local-node-utils": "^2.0.0"
|
|
60
55
|
},
|
|
61
56
|
"devDependencies": {
|
|
62
57
|
"@metamask/auto-changelog": "^6.1.0",
|
|
63
|
-
"@ts-bridge/cli": "^0.6.4",
|
|
64
58
|
"@types/jest": "^30.0.0",
|
|
59
|
+
"@typescript/native": "npm:typescript@^7.0.2",
|
|
65
60
|
"deepmerge": "^4.2.2",
|
|
66
61
|
"jest": "^30.4.2",
|
|
62
|
+
"rimraf": "^5.0.5",
|
|
67
63
|
"ts-jest": "^29.4.11",
|
|
68
64
|
"tsx": "^4.20.5",
|
|
69
65
|
"typedoc": "^0.25.13",
|
|
70
66
|
"typedoc-plugin-missing-exports": "^2.0.0",
|
|
71
|
-
"typescript": "
|
|
67
|
+
"typescript": "npm:@typescript/typescript6@^6.0.2"
|
|
72
68
|
},
|
|
73
69
|
"engines": {
|
|
74
|
-
"node": "^
|
|
70
|
+
"node": "^22.14.0 || ^24"
|
|
75
71
|
}
|
|
76
72
|
}
|
|
@@ -1,49 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"solana-test-validator-up.d.cts","sourceRoot":"","sources":["../../src/bin/solana-test-validator-up.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"solana-test-validator-up.d.mts","sourceRoot":"","sources":["../../src/bin/solana-test-validator-up.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
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
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
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
|
package/dist/index.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"]}
|
package/dist/index.d.cts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,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"}
|
package/dist/index.d.mts
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
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
|
package/dist/index.d.mts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,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"}
|
package/dist/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,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"]}
|
package/dist/install.cjs
DELETED
|
@@ -1,190 +0,0 @@
|
|
|
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
|
package/dist/install.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"]}
|
package/dist/install.d.cts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/dist/install.d.mts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
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
|
package/dist/install.d.mts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/dist/install.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"]}
|