@magicblock-labs/ephemeral-validator 0.2.1 → 0.2.2

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.
@@ -32,10 +32,8 @@ function getExePath() {
32
32
  throw new Error(`Couldn't find application binary inside node_modules for ${os}-${(0, os_1.arch)()}, expected location: ${binaryName}`);
33
33
  }
34
34
  }
35
- function runEphemeralValidator(location) {
36
- const args = process.argv.slice(2);
37
- const ephemeralValidator = (0, child_process_1.spawn)(location, args, { stdio: "inherit" });
38
- ephemeralValidator.on("exit", (code, signal) => {
35
+ function runWithForwardedExit(child) {
36
+ child.on("exit", (code, signal) => {
39
37
  process.on("exit", () => {
40
38
  if (signal) {
41
39
  process.kill(process.pid, signal);
@@ -46,10 +44,15 @@ function runEphemeralValidator(location) {
46
44
  });
47
45
  });
48
46
  process.on("SIGINT", () => {
49
- ephemeralValidator.kill("SIGINT");
50
- ephemeralValidator.kill("SIGTERM");
47
+ child.kill("SIGINT");
48
+ child.kill("SIGTERM");
51
49
  });
52
50
  }
51
+ function runEphemeralValidator(location) {
52
+ const args = process.argv.slice(2);
53
+ const ephemeralValidator = (0, child_process_1.spawn)(location, args, { stdio: "inherit" });
54
+ runWithForwardedExit(ephemeralValidator);
55
+ }
53
56
  function tryPackageEphemeralValidator() {
54
57
  try {
55
58
  const path = getExePath();
@@ -88,4 +91,5 @@ function trySystemEphemeralValidator() {
88
91
  }
89
92
  runEphemeralValidator(absoluteBinaryPath);
90
93
  }
94
+ // If the first argument is our special command, run the test validator and exit.
91
95
  tryPackageEphemeralValidator() || trySystemEphemeralValidator();
@@ -0,0 +1,111 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || function (mod) {
20
+ if (mod && mod.__esModule) return mod;
21
+ var result = {};
22
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
23
+ __setModuleDefault(result, mod);
24
+ return result;
25
+ };
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ const child_process_1 = require("child_process");
28
+ const path = __importStar(require("path"));
29
+ const fs = __importStar(require("fs"));
30
+ function runWithForwardedExit(child) {
31
+ child.on("exit", (code, signal) => {
32
+ process.on("exit", () => {
33
+ if (signal) {
34
+ process.kill(process.pid, signal);
35
+ }
36
+ else if (code !== null) {
37
+ process.exit(code);
38
+ }
39
+ });
40
+ });
41
+ process.on("SIGINT", () => {
42
+ child.kill("SIGINT");
43
+ child.kill("SIGTERM");
44
+ });
45
+ }
46
+ function dumpsDir() {
47
+ // Compiled js lives in lib/, source in package root. We want <package-root>/bin/local-dumps
48
+ const libDir = __dirname;
49
+ const root = path.resolve(libDir, "..");
50
+ return path.join(root, "ephemeral-validator", "bin", "local-dumps");
51
+ }
52
+ function runMbTestValidator() {
53
+ const exe = "solana-test-validator";
54
+ const dumps = dumpsDir();
55
+ const p = (name) => path.join(dumps, name);
56
+ const args = [
57
+ // programs
58
+ "--bpf-program",
59
+ "DELeGGvXpWV2fqJUhqcF5ZSYMS4JTLjteaAMARRSaeSh",
60
+ p("DELeGGvXpWV2fqJUhqcF5ZSYMS4JTLjteaAMARRSaeSh.so"),
61
+ "--bpf-program",
62
+ "noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV",
63
+ p("noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV.so"),
64
+ "--bpf-program",
65
+ "Vrf1RNUjXmQGjmQrQLvJHs9SNkvDJEsRVFPkfSQUwGz",
66
+ p("Vrf1RNUjXmQGjmQrQLvJHs9SNkvDJEsRVFPkfSQUwGz.so"),
67
+ "--bpf-program",
68
+ "noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV",
69
+ p("noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV.so"),
70
+ // accounts
71
+ "--account",
72
+ "mAGicPQYBMvcYveUZA5F5UNNwyHvfYh5xkLS2Fr1mev",
73
+ p("mAGicPQYBMvcYveUZA5F5UNNwyHvfYh5xkLS2Fr1mev.json"),
74
+ "--account",
75
+ "EpJnX7ueXk7fKojBymqmVuCuwyhDQsYcLVL1XMsBbvDX",
76
+ p("EpJnX7ueXk7fKojBymqmVuCuwyhDQsYcLVL1XMsBbvDX.json"),
77
+ "--account",
78
+ "7JrkjmZPprHwtuvtuGTXp9hwfGYFAQLnLeFM52kqAgXg",
79
+ p("7JrkjmZPprHwtuvtuGTXp9hwfGYFAQLnLeFM52kqAgXg.json"),
80
+ "--account",
81
+ "Cuj97ggrhhidhbu39TijNVqE74xvKJ69gDervRUXAxGh",
82
+ p("Cuj97ggrhhidhbu39TijNVqE74xvKJ69gDervRUXAxGh.json"),
83
+ "--account",
84
+ "5hBR571xnXppuCPveTrctfTU7tJLSN94nq7kv7FRK5Tc",
85
+ p("5hBR571xnXppuCPveTrctfTU7tJLSN94nq7kv7FRK5Tc.json"),
86
+ "--account",
87
+ "F72HqCR8nwYsVyeVd38pgKkjXmXFzVAM8rjZZsXWbdE",
88
+ p("F72HqCR8nwYsVyeVd38pgKkjXmXFzVAM8rjZZsXWbdE.json"),
89
+ ];
90
+ const expectedFiles = [
91
+ "DELeGGvXpWV2fqJUhqcF5ZSYMS4JTLjteaAMARRSaeSh.so",
92
+ "noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV.so",
93
+ "Vrf1RNUjXmQGjmQrQLvJHs9SNkvDJEsRVFPkfSQUwGz.so",
94
+ "mAGicPQYBMvcYveUZA5F5UNNwyHvfYh5xkLS2Fr1mev.json",
95
+ "EpJnX7ueXk7fKojBymqmVuCuwyhDQsYcLVL1XMsBbvDX.json",
96
+ "7JrkjmZPprHwtuvtuGTXp9hwfGYFAQLnLeFM52kqAgXg.json",
97
+ "Cuj97ggrhhidhbu39TijNVqE74xvKJ69gDervRUXAxGh.json",
98
+ "5hBR571xnXppuCPveTrctfTU7tJLSN94nq7kv7FRK5Tc.json",
99
+ "F72HqCR8nwYsVyeVd38pgKkjXmXFzVAM8rjZZsXWbdE.json",
100
+ ];
101
+ const missingFiles = expectedFiles
102
+ .map((f) => p(f))
103
+ .filter((full) => !fs.existsSync(full));
104
+ if (missingFiles.length > 0) {
105
+ console.warn("Warning: missing local dumps files:\n" + missingFiles.join("\n"));
106
+ }
107
+ const extraArgs = process.argv.slice(2);
108
+ const child = (0, child_process_1.spawn)(exe, [...args, ...extraArgs], { stdio: "inherit" });
109
+ runWithForwardedExit(child);
110
+ }
111
+ runMbTestValidator();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@magicblock-labs/ephemeral-validator",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "description": "MagicBlock Ephemeral Validator",
5
5
  "homepage": "https://github.com/magicblock-labs/ephemeral-validator#readme",
6
6
  "bugs": {
@@ -12,13 +12,14 @@
12
12
  },
13
13
  "license": "Business Source License 1.1",
14
14
  "bin": {
15
- "ephemeral-validator": "ephemeralValidator.js"
15
+ "ephemeral-validator": "ephemeralValidator.js",
16
+ "mb-test-validator": "mbTestValidator.js"
16
17
  },
17
18
  "scripts": {
18
19
  "typecheck": "tsc --noEmit",
19
20
  "lint": "prettier */*.js \"*/**/*{.js,.ts}\" --check ",
20
21
  "lint:fix": "node_modules/.bin/prettier */*.js \"*/**/*{.js,.ts}\" -w",
21
- "build": "tsc",
22
+ "build": "tsc && bash scripts/fetch-local-dumps.sh",
22
23
  "dev": "yarn build && node lib/index.js"
23
24
  },
24
25
  "devDependencies": {
@@ -27,11 +28,11 @@
27
28
  "typescript": "^4.9.4"
28
29
  },
29
30
  "optionalDependencies": {
30
- "@magicblock-labs/ephemeral-validator-darwin-arm64": "0.2.1",
31
- "@magicblock-labs/ephemeral-validator-darwin-x64": "0.2.1",
32
- "@magicblock-labs/ephemeral-validator-linux-arm64": "0.2.1",
33
- "@magicblock-labs/ephemeral-validator-linux-x64": "0.2.1",
34
- "@magicblock-labs/ephemeral-validator-windows-x64": "0.2.1"
31
+ "@magicblock-labs/ephemeral-validator-darwin-arm64": "0.2.2",
32
+ "@magicblock-labs/ephemeral-validator-darwin-x64": "0.2.2",
33
+ "@magicblock-labs/ephemeral-validator-linux-arm64": "0.2.2",
34
+ "@magicblock-labs/ephemeral-validator-linux-x64": "0.2.2",
35
+ "@magicblock-labs/ephemeral-validator-windows-x64": "0.2.2"
35
36
  },
36
37
  "publishConfig": {
37
38
  "access": "public"