moonwall 1.0.0-dev.0

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.
Files changed (301) hide show
  1. package/LICENSE +681 -0
  2. package/README.md +54 -0
  3. package/config_schema.json +811 -0
  4. package/dist/api/constants/accounts.d.ts +36 -0
  5. package/dist/api/constants/accounts.d.ts.map +1 -0
  6. package/dist/api/constants/accounts.js +67 -0
  7. package/dist/api/constants/chain.d.ts +134 -0
  8. package/dist/api/constants/chain.d.ts.map +1 -0
  9. package/dist/api/constants/chain.js +149 -0
  10. package/dist/api/constants/index.d.ts +4 -0
  11. package/dist/api/constants/index.d.ts.map +1 -0
  12. package/dist/api/constants/index.js +3 -0
  13. package/dist/api/constants/smartContract.d.ts +29 -0
  14. package/dist/api/constants/smartContract.d.ts.map +1 -0
  15. package/dist/api/constants/smartContract.js +118 -0
  16. package/dist/api/testing/blocks.d.ts +59 -0
  17. package/dist/api/testing/blocks.d.ts.map +1 -0
  18. package/dist/api/testing/blocks.js +147 -0
  19. package/dist/api/testing/contracts.d.ts +5 -0
  20. package/dist/api/testing/contracts.d.ts.map +1 -0
  21. package/dist/api/testing/contracts.js +32 -0
  22. package/dist/api/testing/ethers.d.ts +3 -0
  23. package/dist/api/testing/ethers.d.ts.map +1 -0
  24. package/dist/api/testing/ethers.js +38 -0
  25. package/dist/api/testing/events.d.ts +12 -0
  26. package/dist/api/testing/events.d.ts.map +1 -0
  27. package/dist/api/testing/events.js +23 -0
  28. package/dist/api/testing/extrinsics.d.ts +5 -0
  29. package/dist/api/testing/extrinsics.d.ts.map +1 -0
  30. package/dist/api/testing/extrinsics.js +10 -0
  31. package/dist/api/testing/index.d.ts +9 -0
  32. package/dist/api/testing/index.d.ts.map +1 -0
  33. package/dist/api/testing/index.js +8 -0
  34. package/dist/api/testing/jumping.d.ts +8 -0
  35. package/dist/api/testing/jumping.d.ts.map +1 -0
  36. package/dist/api/testing/jumping.js +78 -0
  37. package/dist/api/testing/providers.d.ts +18 -0
  38. package/dist/api/testing/providers.d.ts.map +1 -0
  39. package/dist/api/testing/providers.js +34 -0
  40. package/dist/api/testing/viem.d.ts +139 -0
  41. package/dist/api/testing/viem.d.ts.map +1 -0
  42. package/dist/api/testing/viem.js +247 -0
  43. package/dist/api/types/config.d.ts +609 -0
  44. package/dist/api/types/config.d.ts.map +1 -0
  45. package/dist/api/types/config.js +1 -0
  46. package/dist/api/types/context.d.ts +125 -0
  47. package/dist/api/types/context.d.ts.map +1 -0
  48. package/dist/api/types/context.js +1 -0
  49. package/dist/api/types/contracts.d.ts +66 -0
  50. package/dist/api/types/contracts.d.ts.map +1 -0
  51. package/dist/api/types/contracts.js +1 -0
  52. package/dist/api/types/eth.d.ts +3 -0
  53. package/dist/api/types/eth.d.ts.map +1 -0
  54. package/dist/api/types/eth.js +1 -0
  55. package/dist/api/types/foundations.d.ts +11 -0
  56. package/dist/api/types/foundations.d.ts.map +1 -0
  57. package/dist/api/types/foundations.js +1 -0
  58. package/dist/api/types/helpers.d.ts +7 -0
  59. package/dist/api/types/helpers.d.ts.map +1 -0
  60. package/dist/api/types/helpers.js +1 -0
  61. package/dist/api/types/index.d.ts +8 -0
  62. package/dist/api/types/index.d.ts.map +1 -0
  63. package/dist/api/types/index.js +7 -0
  64. package/dist/api/types/runner.d.ts +490 -0
  65. package/dist/api/types/runner.d.ts.map +1 -0
  66. package/dist/api/types/runner.js +1 -0
  67. package/dist/cli/cmds/components/LogViewer.d.ts +17 -0
  68. package/dist/cli/cmds/components/LogViewer.d.ts.map +1 -0
  69. package/dist/cli/cmds/components/LogViewer.js +171 -0
  70. package/dist/cli/cmds/entrypoint.d.ts +6 -0
  71. package/dist/cli/cmds/entrypoint.d.ts.map +1 -0
  72. package/dist/cli/cmds/entrypoint.js +192 -0
  73. package/dist/cli/cmds/interactiveCmds/chopsticksIntCmds.d.ts +2 -0
  74. package/dist/cli/cmds/interactiveCmds/chopsticksIntCmds.d.ts.map +1 -0
  75. package/dist/cli/cmds/interactiveCmds/chopsticksIntCmds.js +117 -0
  76. package/dist/cli/cmds/interactiveCmds/devIntCmds.d.ts +2 -0
  77. package/dist/cli/cmds/interactiveCmds/devIntCmds.d.ts.map +1 -0
  78. package/dist/cli/cmds/interactiveCmds/devIntCmds.js +103 -0
  79. package/dist/cli/cmds/interactiveCmds/index.d.ts +4 -0
  80. package/dist/cli/cmds/interactiveCmds/index.d.ts.map +1 -0
  81. package/dist/cli/cmds/interactiveCmds/index.js +3 -0
  82. package/dist/cli/cmds/interactiveCmds/zombieIntCmds.d.ts +2 -0
  83. package/dist/cli/cmds/interactiveCmds/zombieIntCmds.d.ts.map +1 -0
  84. package/dist/cli/cmds/interactiveCmds/zombieIntCmds.js +32 -0
  85. package/dist/cli/cmds/main.d.ts +2 -0
  86. package/dist/cli/cmds/main.d.ts.map +1 -0
  87. package/dist/cli/cmds/main.js +336 -0
  88. package/dist/cli/cmds/runNetwork.d.ts +3 -0
  89. package/dist/cli/cmds/runNetwork.d.ts.map +1 -0
  90. package/dist/cli/cmds/runNetwork.js +292 -0
  91. package/dist/cli/cmds/runTests.d.ts +12 -0
  92. package/dist/cli/cmds/runTests.d.ts.map +1 -0
  93. package/dist/cli/cmds/runTests.js +257 -0
  94. package/dist/cli/internal/cmdFunctions/downloader.d.ts +4 -0
  95. package/dist/cli/internal/cmdFunctions/downloader.d.ts.map +1 -0
  96. package/dist/cli/internal/cmdFunctions/downloader.js +49 -0
  97. package/dist/cli/internal/cmdFunctions/fetchArtifact.d.ts +10 -0
  98. package/dist/cli/internal/cmdFunctions/fetchArtifact.d.ts.map +1 -0
  99. package/dist/cli/internal/cmdFunctions/fetchArtifact.js +145 -0
  100. package/dist/cli/internal/cmdFunctions/index.d.ts +5 -0
  101. package/dist/cli/internal/cmdFunctions/index.d.ts.map +1 -0
  102. package/dist/cli/internal/cmdFunctions/index.js +4 -0
  103. package/dist/cli/internal/cmdFunctions/initialisation.d.ts +20 -0
  104. package/dist/cli/internal/cmdFunctions/initialisation.d.ts.map +1 -0
  105. package/dist/cli/internal/cmdFunctions/initialisation.js +150 -0
  106. package/dist/cli/internal/cmdFunctions/tempLogs.d.ts +3 -0
  107. package/dist/cli/internal/cmdFunctions/tempLogs.d.ts.map +1 -0
  108. package/dist/cli/internal/cmdFunctions/tempLogs.js +37 -0
  109. package/dist/cli/internal/commandParsers.d.ts +59 -0
  110. package/dist/cli/internal/commandParsers.d.ts.map +1 -0
  111. package/dist/cli/internal/commandParsers.js +305 -0
  112. package/dist/cli/internal/deriveTestIds.d.ts +8 -0
  113. package/dist/cli/internal/deriveTestIds.d.ts.map +1 -0
  114. package/dist/cli/internal/deriveTestIds.js +123 -0
  115. package/dist/cli/internal/effect/index.d.ts +6 -0
  116. package/dist/cli/internal/effect/index.d.ts.map +1 -0
  117. package/dist/cli/internal/effect/index.js +5 -0
  118. package/dist/cli/internal/fileCheckers.d.ts +11 -0
  119. package/dist/cli/internal/fileCheckers.d.ts.map +1 -0
  120. package/dist/cli/internal/fileCheckers.js +165 -0
  121. package/dist/cli/internal/foundations/index.d.ts +4 -0
  122. package/dist/cli/internal/foundations/index.d.ts.map +1 -0
  123. package/dist/cli/internal/foundations/index.js +4 -0
  124. package/dist/cli/internal/index.d.ts +12 -0
  125. package/dist/cli/internal/index.d.ts.map +1 -0
  126. package/dist/cli/internal/index.js +11 -0
  127. package/dist/cli/internal/launcherCommon.d.ts +4 -0
  128. package/dist/cli/internal/launcherCommon.d.ts.map +1 -0
  129. package/dist/cli/internal/launcherCommon.js +130 -0
  130. package/dist/cli/internal/localNode.d.ts +16 -0
  131. package/dist/cli/internal/localNode.d.ts.map +1 -0
  132. package/dist/cli/internal/localNode.js +362 -0
  133. package/dist/cli/internal/logging.d.ts +2 -0
  134. package/dist/cli/internal/logging.d.ts.map +1 -0
  135. package/dist/cli/internal/logging.js +26 -0
  136. package/dist/cli/internal/node.d.ts +33 -0
  137. package/dist/cli/internal/node.d.ts.map +1 -0
  138. package/dist/cli/internal/node.js +228 -0
  139. package/dist/cli/internal/processHelpers.d.ts +17 -0
  140. package/dist/cli/internal/processHelpers.d.ts.map +1 -0
  141. package/dist/cli/internal/processHelpers.js +56 -0
  142. package/dist/cli/internal/providerFactories.d.ts +48 -0
  143. package/dist/cli/internal/providerFactories.d.ts.map +1 -0
  144. package/dist/cli/internal/providerFactories.js +442 -0
  145. package/dist/cli/internal/testIdParser.d.ts +34 -0
  146. package/dist/cli/internal/testIdParser.d.ts.map +1 -0
  147. package/dist/cli/internal/testIdParser.js +167 -0
  148. package/dist/cli/lib/binariesHelpers.d.ts +15 -0
  149. package/dist/cli/lib/binariesHelpers.d.ts.map +1 -0
  150. package/dist/cli/lib/binariesHelpers.js +99 -0
  151. package/dist/cli/lib/configReader.d.ts +8 -0
  152. package/dist/cli/lib/configReader.d.ts.map +1 -0
  153. package/dist/cli/lib/configReader.js +115 -0
  154. package/dist/cli/lib/contractFunctions.d.ts +2 -0
  155. package/dist/cli/lib/contractFunctions.d.ts.map +1 -0
  156. package/dist/cli/lib/contractFunctions.js +2 -0
  157. package/dist/cli/lib/globalContext.d.ts +46 -0
  158. package/dist/cli/lib/globalContext.d.ts.map +1 -0
  159. package/dist/cli/lib/globalContext.js +710 -0
  160. package/dist/cli/lib/governanceProcedures.d.ts +27 -0
  161. package/dist/cli/lib/governanceProcedures.d.ts.map +1 -0
  162. package/dist/cli/lib/governanceProcedures.js +458 -0
  163. package/dist/cli/lib/handlers/index.d.ts +5 -0
  164. package/dist/cli/lib/handlers/index.d.ts.map +1 -0
  165. package/dist/cli/lib/handlers/index.js +5 -0
  166. package/dist/cli/lib/repoDefinitions/index.d.ts +6 -0
  167. package/dist/cli/lib/repoDefinitions/index.d.ts.map +1 -0
  168. package/dist/cli/lib/repoDefinitions/index.js +21 -0
  169. package/dist/cli/lib/repoDefinitions/moonbeam.d.ts +4 -0
  170. package/dist/cli/lib/repoDefinitions/moonbeam.d.ts.map +1 -0
  171. package/dist/cli/lib/repoDefinitions/moonbeam.js +30 -0
  172. package/dist/cli/lib/repoDefinitions/polkadot.d.ts +4 -0
  173. package/dist/cli/lib/repoDefinitions/polkadot.d.ts.map +1 -0
  174. package/dist/cli/lib/repoDefinitions/polkadot.js +11 -0
  175. package/dist/cli/lib/repoDefinitions/tanssi.d.ts +4 -0
  176. package/dist/cli/lib/repoDefinitions/tanssi.d.ts.map +1 -0
  177. package/dist/cli/lib/repoDefinitions/tanssi.js +14 -0
  178. package/dist/cli/lib/rpcFunctions.d.ts +2 -0
  179. package/dist/cli/lib/rpcFunctions.d.ts.map +1 -0
  180. package/dist/cli/lib/rpcFunctions.js +26 -0
  181. package/dist/cli/lib/runnerContext.d.ts +32 -0
  182. package/dist/cli/lib/runnerContext.d.ts.map +1 -0
  183. package/dist/cli/lib/runnerContext.js +156 -0
  184. package/dist/cli/lib/shardManager.d.ts +40 -0
  185. package/dist/cli/lib/shardManager.d.ts.map +1 -0
  186. package/dist/cli/lib/shardManager.js +80 -0
  187. package/dist/cli/lib/upgradeProcedures.d.ts +5 -0
  188. package/dist/cli/lib/upgradeProcedures.d.ts.map +1 -0
  189. package/dist/cli/lib/upgradeProcedures.js +221 -0
  190. package/dist/cli.d.ts +4 -0
  191. package/dist/cli.d.ts.map +1 -0
  192. package/dist/cli.js +3 -0
  193. package/dist/contracts/contractInteraction.d.ts +17 -0
  194. package/dist/contracts/contractInteraction.d.ts.map +1 -0
  195. package/dist/contracts/contractInteraction.js +170 -0
  196. package/dist/contracts/index.d.ts +2 -0
  197. package/dist/contracts/index.d.ts.map +1 -0
  198. package/dist/contracts/index.js +1 -0
  199. package/dist/foundations/chopsticks/handler.d.ts +3 -0
  200. package/dist/foundations/chopsticks/handler.d.ts.map +1 -0
  201. package/dist/foundations/chopsticks/handler.js +93 -0
  202. package/dist/foundations/chopsticks/helpers.d.ts +27 -0
  203. package/dist/foundations/chopsticks/helpers.d.ts.map +1 -0
  204. package/dist/foundations/chopsticks/helpers.js +133 -0
  205. package/dist/foundations/dev/handler.d.ts +3 -0
  206. package/dist/foundations/dev/handler.d.ts.map +1 -0
  207. package/dist/foundations/dev/handler.js +136 -0
  208. package/dist/foundations/dev/helpers.d.ts +27 -0
  209. package/dist/foundations/dev/helpers.d.ts.map +1 -0
  210. package/dist/foundations/dev/helpers.js +161 -0
  211. package/dist/foundations/read-only/handler.d.ts +3 -0
  212. package/dist/foundations/read-only/handler.d.ts.map +1 -0
  213. package/dist/foundations/read-only/handler.js +32 -0
  214. package/dist/foundations/zombie/handler.d.ts +3 -0
  215. package/dist/foundations/zombie/handler.d.ts.map +1 -0
  216. package/dist/foundations/zombie/handler.js +92 -0
  217. package/dist/foundations/zombie/helpers.d.ts +16 -0
  218. package/dist/foundations/zombie/helpers.d.ts.map +1 -0
  219. package/dist/foundations/zombie/helpers.js +97 -0
  220. package/dist/index.d.ts +17 -0
  221. package/dist/index.d.ts.map +1 -0
  222. package/dist/index.js +47 -0
  223. package/dist/internal/common.d.ts +3 -0
  224. package/dist/internal/common.d.ts.map +1 -0
  225. package/dist/internal/common.js +41 -0
  226. package/dist/internal/index.d.ts +4 -0
  227. package/dist/internal/index.d.ts.map +1 -0
  228. package/dist/internal/index.js +3 -0
  229. package/dist/internal/logger.d.ts +24 -0
  230. package/dist/internal/logger.d.ts.map +1 -0
  231. package/dist/internal/logger.js +66 -0
  232. package/dist/internal/logging.d.ts +7 -0
  233. package/dist/internal/logging.d.ts.map +1 -0
  234. package/dist/internal/logging.js +36 -0
  235. package/dist/moondebug.d.ts +3 -0
  236. package/dist/moondebug.d.ts.map +1 -0
  237. package/dist/moondebug.js +2 -0
  238. package/dist/services/cache/FileLock.d.ts +11 -0
  239. package/dist/services/cache/FileLock.d.ts.map +1 -0
  240. package/dist/services/cache/FileLock.js +68 -0
  241. package/dist/services/cache/StartupCacheService.d.ts +23 -0
  242. package/dist/services/cache/StartupCacheService.d.ts.map +1 -0
  243. package/dist/services/cache/StartupCacheService.js +159 -0
  244. package/dist/services/cache/index.d.ts +3 -0
  245. package/dist/services/cache/index.d.ts.map +1 -0
  246. package/dist/services/cache/index.js +2 -0
  247. package/dist/services/chopsticks/ChopsticksMultiChain.d.ts +158 -0
  248. package/dist/services/chopsticks/ChopsticksMultiChain.d.ts.map +1 -0
  249. package/dist/services/chopsticks/ChopsticksMultiChain.js +282 -0
  250. package/dist/services/chopsticks/ChopsticksService.d.ts +313 -0
  251. package/dist/services/chopsticks/ChopsticksService.d.ts.map +1 -0
  252. package/dist/services/chopsticks/ChopsticksService.js +77 -0
  253. package/dist/services/chopsticks/chopsticksConfigParser.d.ts +40 -0
  254. package/dist/services/chopsticks/chopsticksConfigParser.d.ts.map +1 -0
  255. package/dist/services/chopsticks/chopsticksConfigParser.js +201 -0
  256. package/dist/services/chopsticks/index.d.ts +5 -0
  257. package/dist/services/chopsticks/index.d.ts.map +1 -0
  258. package/dist/services/chopsticks/index.js +4 -0
  259. package/dist/services/chopsticks/launchChopsticksEffect.d.ts +225 -0
  260. package/dist/services/chopsticks/launchChopsticksEffect.d.ts.map +1 -0
  261. package/dist/services/chopsticks/launchChopsticksEffect.js +623 -0
  262. package/dist/services/config/configAccessors.d.ts +41 -0
  263. package/dist/services/config/configAccessors.d.ts.map +1 -0
  264. package/dist/services/config/configAccessors.js +149 -0
  265. package/dist/services/config/index.d.ts +2 -0
  266. package/dist/services/config/index.d.ts.map +1 -0
  267. package/dist/services/config/index.js +1 -0
  268. package/dist/services/errors.d.ts +72 -0
  269. package/dist/services/errors.d.ts.map +1 -0
  270. package/dist/services/errors.js +31 -0
  271. package/dist/services/index.d.ts +7 -0
  272. package/dist/services/index.d.ts.map +1 -0
  273. package/dist/services/index.js +6 -0
  274. package/dist/services/network/NodeReadinessService.d.ts +35 -0
  275. package/dist/services/network/NodeReadinessService.d.ts.map +1 -0
  276. package/dist/services/network/NodeReadinessService.js +120 -0
  277. package/dist/services/network/PortDiscoveryService.d.ts +22 -0
  278. package/dist/services/network/PortDiscoveryService.d.ts.map +1 -0
  279. package/dist/services/network/PortDiscoveryService.js +77 -0
  280. package/dist/services/network/RpcPortDiscoveryService.d.ts +25 -0
  281. package/dist/services/network/RpcPortDiscoveryService.d.ts.map +1 -0
  282. package/dist/services/network/RpcPortDiscoveryService.js +136 -0
  283. package/dist/services/network/index.d.ts +4 -0
  284. package/dist/services/network/index.d.ts.map +1 -0
  285. package/dist/services/network/index.js +3 -0
  286. package/dist/services/process/ProcessManagerService.d.ts +49 -0
  287. package/dist/services/process/ProcessManagerService.d.ts.map +1 -0
  288. package/dist/services/process/ProcessManagerService.js +162 -0
  289. package/dist/services/process/index.d.ts +3 -0
  290. package/dist/services/process/index.d.ts.map +1 -0
  291. package/dist/services/process/index.js +2 -0
  292. package/dist/services/process/launchNodeEffect.d.ts +40 -0
  293. package/dist/services/process/launchNodeEffect.d.ts.map +1 -0
  294. package/dist/services/process/launchNodeEffect.js +86 -0
  295. package/dist/util/functions/index.d.ts +3 -0
  296. package/dist/util/functions/index.d.ts.map +1 -0
  297. package/dist/util/functions/index.js +4 -0
  298. package/dist/util/index.d.ts +4 -0
  299. package/dist/util/index.d.ts.map +1 -0
  300. package/dist/util/index.js +2 -0
  301. package/package.json +157 -0
@@ -0,0 +1,37 @@
1
+ import path from "node:path";
2
+ import fs from "node:fs";
3
+ export function clearNodeLogs(silent = true) {
4
+ const dirPath = path.join(process.cwd(), "tmp", "node_logs");
5
+ if (!fs.existsSync(dirPath)) {
6
+ fs.mkdirSync(dirPath, { recursive: true });
7
+ }
8
+ const files = fs.readdirSync(dirPath);
9
+ for (const file of files) {
10
+ !silent && console.log(`Deleting log: ${file}`);
11
+ if (file.endsWith(".log")) {
12
+ fs.unlinkSync(path.join(dirPath, file));
13
+ }
14
+ }
15
+ }
16
+ export function reportLogLocation(silent = false) {
17
+ const dirPath = path.join(process.cwd(), "tmp", "node_logs");
18
+ if (!fs.existsSync(dirPath)) {
19
+ fs.mkdirSync(dirPath, { recursive: true });
20
+ }
21
+ const result = fs.readdirSync(dirPath);
22
+ let consoleMessage = "";
23
+ let filePath = "";
24
+ try {
25
+ filePath = process.env.MOON_ZOMBIE_DIR
26
+ ? process.env.MOON_ZOMBIE_DIR
27
+ : process.env.MOON_LOG_LOCATION
28
+ ? process.env.MOON_LOG_LOCATION
29
+ : path.join(dirPath, result.find((file) => path.extname(file) === ".log") || "no_logs_found");
30
+ consoleMessage = ` 🪵 Log location: ${filePath}`;
31
+ }
32
+ catch (e) {
33
+ console.error(e);
34
+ }
35
+ !silent && console.log(consoleMessage);
36
+ return filePath.trim();
37
+ }
@@ -0,0 +1,59 @@
1
+ import type { ChopsticksLaunchSpec, DevLaunchSpec, RepoSpec, ZombieLaunchSpec, LaunchOverrides } from "../../api/types/index.js";
2
+ export declare function parseZombieCmd(launchSpec: ZombieLaunchSpec): {
3
+ cmd: string;
4
+ };
5
+ export declare class LaunchCommandParser {
6
+ private args;
7
+ private cmd;
8
+ private launch;
9
+ private launchSpec;
10
+ private launchOverrides?;
11
+ constructor(options: {
12
+ launchSpec: DevLaunchSpec;
13
+ additionalRepos?: RepoSpec[];
14
+ launchOverrides?: LaunchOverrides;
15
+ });
16
+ private overrideArg;
17
+ withPorts(): Promise<this>;
18
+ withDefaultForkConfig(): LaunchCommandParser;
19
+ withLaunchOverrides(): LaunchCommandParser;
20
+ private print;
21
+ private applyForkOptions;
22
+ /**
23
+ * Cache startup artifacts if enabled in launchSpec.
24
+ * This uses an Effect-based service that caches artifacts by binary hash.
25
+ *
26
+ * When cacheStartupArtifacts is enabled, this generates:
27
+ * 1. Precompiled WASM for the runtime
28
+ * 2. Raw chain spec to skip genesis WASM compilation
29
+ *
30
+ * This reduces startup from ~3s to ~200ms (~10x improvement).
31
+ */
32
+ withStartupCache(): Promise<LaunchCommandParser>;
33
+ build(): {
34
+ cmd: string;
35
+ args: string[];
36
+ launch: boolean;
37
+ };
38
+ static create(options: {
39
+ launchSpec: DevLaunchSpec;
40
+ additionalRepos?: RepoSpec[];
41
+ launchOverrides?: LaunchOverrides;
42
+ verbose?: boolean;
43
+ }): Promise<{
44
+ cmd: string;
45
+ args: string[];
46
+ launch: boolean;
47
+ }>;
48
+ }
49
+ export declare function parseChopsticksRunCmd(launchSpecs: ChopsticksLaunchSpec[]): {
50
+ cmd: string;
51
+ args: string[];
52
+ launch: boolean;
53
+ };
54
+ /**
55
+ * Get a free port with availability checking
56
+ * Uses async port allocation for better collision avoidance
57
+ */
58
+ export declare const getFreePort: () => Promise<number>;
59
+ //# sourceMappingURL=commandParsers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandParsers.d.ts","sourceRoot":"","sources":["../../../src/cli/internal/commandParsers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,QAAQ,EACR,gBAAgB,EAChB,eAAe,EAEhB,iCAAiC;AAYlC,wBAAgB,cAAc,CAAC,UAAU,EAAE,gBAAgB;;EAO1D;AAqBD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,IAAI,CAAW;IACvB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,eAAe,CAAC,CAAkB;gBAE9B,OAAO,EAAE;QACnB,UAAU,EAAE,aAAa,CAAC;QAC1B,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAC;QAC7B,eAAe,CAAC,EAAE,eAAe,CAAC;KACnC;IAWD,OAAO,CAAC,WAAW;IAWb,SAAS;IA8Bf,qBAAqB,IAAI,mBAAmB;IAQ5C,mBAAmB,IAAI,mBAAmB;IAO1C,OAAO,CAAC,KAAK;IAMb,OAAO,CAAC,gBAAgB;IAgBxB;;;;;;;;;OASG;IACG,gBAAgB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAmFtD,KAAK,IAAI;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE;WAQ5C,MAAM,CAAC,OAAO,EAAE;QAC3B,UAAU,EAAE,aAAa,CAAC;QAC1B,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAC;QAC7B,eAAe,CAAC,EAAE,eAAe,CAAC;QAClC,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB;aAbe,MAAM;cAAQ,MAAM,EAAE;gBAAU,OAAO;;CA0BxD;AAED,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,oBAAoB,EAAE,GAAG;IAC1E,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB,CAoDA;AA8BD;;;GAGG;AACH,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,MAAM,CA2BlD,CAAC"}
@@ -0,0 +1,305 @@
1
+ import { createLogger } from "../../util/index.js";
2
+ import path from "node:path";
3
+ import net from "node:net";
4
+ import { Effect } from "effect";
5
+ import { standardRepos } from "../lib/repoDefinitions/index.js";
6
+ import { shardManager } from "../lib/shardManager.js";
7
+ import invariant from "tiny-invariant";
8
+ import { StartupCacheService, StartupCacheServiceLive } from "./effect/index.js";
9
+ const logger = createLogger({ name: "commandParsers" });
10
+ export function parseZombieCmd(launchSpec) {
11
+ if (launchSpec) {
12
+ return { cmd: launchSpec.configPath };
13
+ }
14
+ throw new Error("No ZombieSpec found in config. Are you sure your moonwall.config.json file has the correct 'configPath' in zombieSpec?");
15
+ }
16
+ function fetchDefaultArgs(binName, additionalRepos = []) {
17
+ let defaultArgs;
18
+ const repos = [...standardRepos(), ...additionalRepos];
19
+ for (const repo of repos) {
20
+ const foundBin = repo.binaries.find((bin) => bin.name === binName);
21
+ if (foundBin) {
22
+ defaultArgs = foundBin.defaultArgs;
23
+ break;
24
+ }
25
+ }
26
+ if (!defaultArgs) {
27
+ defaultArgs = ["--dev"];
28
+ }
29
+ return defaultArgs;
30
+ }
31
+ export class LaunchCommandParser {
32
+ args;
33
+ cmd;
34
+ launch;
35
+ launchSpec;
36
+ launchOverrides;
37
+ constructor(options) {
38
+ const { launchSpec, additionalRepos, launchOverrides } = options;
39
+ this.launchSpec = launchSpec;
40
+ this.launchOverrides = launchOverrides;
41
+ this.launch = !launchSpec.running ? true : launchSpec.running;
42
+ this.cmd = launchSpec.binPath;
43
+ this.args = launchSpec.options
44
+ ? [...launchSpec.options]
45
+ : fetchDefaultArgs(path.basename(launchSpec.binPath), additionalRepos);
46
+ }
47
+ overrideArg(newArg) {
48
+ const newArgKey = newArg.split("=")[0];
49
+ const existingIndex = this.args.findIndex((arg) => arg.startsWith(`${newArgKey}=`));
50
+ if (existingIndex !== -1) {
51
+ this.args[existingIndex] = newArg;
52
+ }
53
+ else {
54
+ this.args.push(newArg);
55
+ }
56
+ }
57
+ async withPorts() {
58
+ // In RECYCLE mode, the node is already running
59
+ if (process.env.MOON_RECYCLE === "true") {
60
+ const existingPort = process.env.MOONWALL_RPC_PORT;
61
+ if (existingPort) {
62
+ this.overrideArg(`--rpc-port=${existingPort}`);
63
+ }
64
+ return this;
65
+ }
66
+ if (this.launchSpec.ports) {
67
+ const ports = this.launchSpec.ports;
68
+ if (ports.p2pPort) {
69
+ this.overrideArg(`--port=${ports.p2pPort}`);
70
+ }
71
+ if (ports.wsPort) {
72
+ this.overrideArg(`--ws-port=${ports.wsPort}`);
73
+ }
74
+ if (ports.rpcPort) {
75
+ this.overrideArg(`--rpc-port=${ports.rpcPort}`);
76
+ }
77
+ }
78
+ else {
79
+ const freePort = (await getFreePort()).toString();
80
+ // Always pin the rpc port so the provider endpoint matches exactly the spawned node.
81
+ process.env.MOONWALL_RPC_PORT = freePort;
82
+ this.overrideArg(`--rpc-port=${freePort}`);
83
+ }
84
+ return this;
85
+ }
86
+ withDefaultForkConfig() {
87
+ const forkOptions = this.launchSpec.defaultForkConfig;
88
+ if (forkOptions) {
89
+ this.applyForkOptions(forkOptions);
90
+ }
91
+ return this;
92
+ }
93
+ withLaunchOverrides() {
94
+ if (this.launchOverrides?.forkConfig) {
95
+ this.applyForkOptions(this.launchOverrides.forkConfig);
96
+ }
97
+ return this;
98
+ }
99
+ print() {
100
+ logger.debug(`Command to run: ${this.cmd}`);
101
+ logger.debug(`Arguments: ${this.args.join(" ")}`);
102
+ return this;
103
+ }
104
+ applyForkOptions(forkOptions) {
105
+ if (forkOptions.url) {
106
+ invariant(forkOptions.url.startsWith("http"), "Fork URL must start with http:// or https://");
107
+ this.overrideArg(`--fork-chain-from-rpc=${forkOptions.url}`);
108
+ }
109
+ if (forkOptions.blockHash) {
110
+ this.overrideArg(`--block=${forkOptions.blockHash}`);
111
+ }
112
+ if (forkOptions.stateOverridePath) {
113
+ this.overrideArg(`--fork-state-overrides=${forkOptions.stateOverridePath}`);
114
+ }
115
+ if (forkOptions.verbose) {
116
+ this.overrideArg("-llazy-loading=trace");
117
+ }
118
+ }
119
+ /**
120
+ * Cache startup artifacts if enabled in launchSpec.
121
+ * This uses an Effect-based service that caches artifacts by binary hash.
122
+ *
123
+ * When cacheStartupArtifacts is enabled, this generates:
124
+ * 1. Precompiled WASM for the runtime
125
+ * 2. Raw chain spec to skip genesis WASM compilation
126
+ *
127
+ * This reduces startup from ~3s to ~200ms (~10x improvement).
128
+ */
129
+ async withStartupCache() {
130
+ if (!this.launchSpec.cacheStartupArtifacts) {
131
+ return this;
132
+ }
133
+ // Skip for Docker images
134
+ if (this.launchSpec.useDocker) {
135
+ logger.warn("Startup caching is not supported for Docker images, skipping");
136
+ return this;
137
+ }
138
+ // Extract chain argument from existing args (e.g., "--chain=moonbase-dev")
139
+ const chainArg = this.args.find((arg) => arg.startsWith("--chain"));
140
+ // Check if using --dev flag
141
+ const hasDevFlag = this.args.includes("--dev");
142
+ // Extract chain name from --chain=XXX or --chain XXX
143
+ const existingChainName = chainArg?.match(/--chain[=\s]?(\S+)/)?.[1];
144
+ // We can generate raw chain spec for both --dev mode and explicit --chain=XXX
145
+ const canGenerateRawSpec = hasDevFlag || !!existingChainName;
146
+ const cacheDir = this.launchSpec.startupCacheDir || path.join(process.cwd(), "tmp", "startup-cache");
147
+ const program = StartupCacheService.pipe(Effect.flatMap((service) => service.getCachedArtifacts({
148
+ binPath: this.launchSpec.binPath,
149
+ chainArg,
150
+ cacheDir,
151
+ // Generate raw chain spec for faster startup (works for both --dev and --chain=XXX)
152
+ generateRawChainSpec: canGenerateRawSpec,
153
+ // Pass dev mode flag for proper chain name detection
154
+ isDevMode: hasDevFlag,
155
+ })), Effect.provide(StartupCacheServiceLive));
156
+ try {
157
+ const result = await Effect.runPromise(program);
158
+ // --wasmtime-precompiled expects a DIRECTORY, not a file path
159
+ // Get the directory containing the precompiled wasm
160
+ const precompiledDir = path.dirname(result.precompiledPath);
161
+ this.overrideArg(`--wasmtime-precompiled=${precompiledDir}`);
162
+ // If we have a raw chain spec, use it for ~10x faster startup
163
+ if (result.rawChainSpecPath) {
164
+ if (hasDevFlag) {
165
+ // Remove --dev flag and add equivalent flags
166
+ this.args = this.args.filter((arg) => arg !== "--dev");
167
+ this.overrideArg(`--chain=${result.rawChainSpecPath}`);
168
+ // Add flags that --dev would normally set
169
+ this.overrideArg("--alice");
170
+ this.overrideArg("--force-authoring");
171
+ this.overrideArg("--rpc-cors=all");
172
+ // Use a deterministic node key for consistency
173
+ this.overrideArg("--node-key=0000000000000000000000000000000000000000000000000000000000000001");
174
+ }
175
+ else if (existingChainName) {
176
+ // Replace original --chain=XXX with --chain=<raw-spec-path>
177
+ this.overrideArg(`--chain=${result.rawChainSpecPath}`);
178
+ }
179
+ logger.debug(`Using raw chain spec for ~10x faster startup: ${result.rawChainSpecPath}`);
180
+ }
181
+ // Set cache directory env var for metadata caching in provider factories
182
+ process.env.MOONWALL_CACHE_DIR = precompiledDir;
183
+ logger.debug(result.fromCache
184
+ ? `Using cached precompiled WASM: ${result.precompiledPath}`
185
+ : `Precompiled WASM created: ${result.precompiledPath}`);
186
+ }
187
+ catch (error) {
188
+ // Log warning but continue without precompilation
189
+ logger.warn(`WASM precompilation failed, continuing without: ${error}`);
190
+ }
191
+ return this;
192
+ }
193
+ build() {
194
+ return {
195
+ cmd: this.cmd,
196
+ args: this.args,
197
+ launch: this.launch,
198
+ };
199
+ }
200
+ static async create(options) {
201
+ const parser = new LaunchCommandParser(options);
202
+ const parsed = await parser
203
+ .withPorts()
204
+ .then((p) => p.withDefaultForkConfig().withLaunchOverrides())
205
+ .then((p) => p.withStartupCache());
206
+ if (options.verbose) {
207
+ parsed.print();
208
+ }
209
+ return parsed.build();
210
+ }
211
+ }
212
+ export function parseChopsticksRunCmd(launchSpecs) {
213
+ const launch = !launchSpecs[0].running ? true : launchSpecs[0].running;
214
+ if (launchSpecs.length === 1) {
215
+ const chopsticksCmd = "node";
216
+ const chopsticksArgs = [
217
+ "node_modules/@acala-network/chopsticks/chopsticks.cjs",
218
+ `--config=${launchSpecs[0].configPath}`,
219
+ `--host=${launchSpecs[0].address ?? "127.0.0.1"}`,
220
+ ];
221
+ const mode = launchSpecs[0].buildBlockMode ? launchSpecs[0].buildBlockMode : "manual";
222
+ const num = mode === "batch" ? "Batch" : mode === "instant" ? "Instant" : "Manual";
223
+ chopsticksArgs.push(`--build-block-mode=${num}`);
224
+ if (launchSpecs[0].wsPort) {
225
+ chopsticksArgs.push(`--port=${launchSpecs[0].wsPort}`);
226
+ }
227
+ if (launchSpecs[0].wasmOverride) {
228
+ chopsticksArgs.push(`--wasm-override=${launchSpecs[0].wasmOverride}`);
229
+ }
230
+ if (launchSpecs[0].allowUnresolvedImports) {
231
+ chopsticksArgs.push("--allow-unresolved-imports");
232
+ }
233
+ return {
234
+ cmd: chopsticksCmd,
235
+ args: chopsticksArgs,
236
+ launch,
237
+ };
238
+ }
239
+ const chopsticksCmd = "node";
240
+ const chopsticksArgs = ["node_modules/@acala-network/chopsticks/chopsticks.cjs", "xcm"];
241
+ for (const spec of launchSpecs) {
242
+ const type = spec.type ? spec.type : "parachain";
243
+ switch (type) {
244
+ case "parachain":
245
+ chopsticksArgs.push(`--parachain=${spec.configPath}`);
246
+ break;
247
+ case "relaychain":
248
+ chopsticksArgs.push(`--relaychain=${spec.configPath}`);
249
+ }
250
+ }
251
+ return {
252
+ cmd: chopsticksCmd,
253
+ args: chopsticksArgs,
254
+ launch,
255
+ };
256
+ }
257
+ /**
258
+ * Check if a port is available for use
259
+ */
260
+ const isPortAvailable = async (port) => {
261
+ return new Promise((resolve) => {
262
+ const server = net.createServer();
263
+ server.listen(port, () => {
264
+ server.once("close", () => resolve(true));
265
+ server.close();
266
+ });
267
+ server.on("error", () => resolve(false));
268
+ });
269
+ };
270
+ /**
271
+ * Get the next available port starting from a given port
272
+ */
273
+ const getNextAvailablePort = async (startPort) => {
274
+ let port = startPort;
275
+ while (port <= 65535) {
276
+ if (await isPortAvailable(port)) {
277
+ return port;
278
+ }
279
+ port++;
280
+ }
281
+ throw new Error(`No available ports found starting from ${startPort}`);
282
+ };
283
+ /**
284
+ * Get a free port with availability checking
285
+ * Uses async port allocation for better collision avoidance
286
+ */
287
+ export const getFreePort = async () => {
288
+ // Get shard information from centralized manager
289
+ const shardIndex = shardManager.getShardIndex();
290
+ const totalShards = shardManager.getTotalShards();
291
+ // Use VITEST_POOL_ID as additional offset if available
292
+ const poolId = parseInt(process.env.VITEST_POOL_ID || "0", 10);
293
+ // Calculate port with better isolation between shards
294
+ // Base port 10000 + (shard * 1000) + (pool * 100) + deterministic offset
295
+ const basePort = 10000;
296
+ const shardOffset = shardIndex * 1000;
297
+ const poolOffset = poolId * 100;
298
+ // Use a deterministic but unique offset based on environment
299
+ const processOffset = process.pid % 50;
300
+ const calculatedPort = basePort + shardOffset + poolOffset + processOffset;
301
+ // Ensure we stay within a reasonable port range
302
+ const startPort = Math.min(calculatedPort, 60000 + shardIndex * 100 + poolId);
303
+ logger.debug(`Port calculation: shard=${shardIndex + 1}/${totalShards}, pool=${poolId}, final=${startPort}`);
304
+ return getNextAvailablePort(startPort);
305
+ };
@@ -0,0 +1,8 @@
1
+ interface DeriveTestIdsOptions {
2
+ rootDir: string;
3
+ singlePrefix?: boolean;
4
+ prefixPhrase?: string;
5
+ }
6
+ export declare function deriveTestIds(params: DeriveTestIdsOptions): Promise<void>;
7
+ export {};
8
+ //# sourceMappingURL=deriveTestIds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deriveTestIds.d.ts","sourceRoot":"","sources":["../../../src/cli/internal/deriveTestIds.ts"],"names":[],"mappings":"AAMA,UAAU,oBAAoB;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,oBAAoB,iBAiD/D"}
@@ -0,0 +1,123 @@
1
+ import chalk from "chalk";
2
+ import fs from "node:fs";
3
+ import { confirm } from "@inquirer/prompts";
4
+ import path from "node:path";
5
+ import { hasSuiteDefinition, replaceSuiteId } from "./testIdParser.js";
6
+ export async function deriveTestIds(params) {
7
+ const usedPrefixes = new Set();
8
+ const { rootDir, singlePrefix } = params;
9
+ try {
10
+ await fs.promises.access(rootDir, fs.constants.R_OK);
11
+ }
12
+ catch (_error) {
13
+ console.error(`🔴 Error accessing directory ${chalk.bold(`/${rootDir}`)}, please make sure this exists`);
14
+ process.exitCode = 1;
15
+ return;
16
+ }
17
+ console.log(`🟢 Processing ${rootDir} ...`);
18
+ const topLevelDirs = getTopLevelDirs(rootDir);
19
+ const foldersToRename = [];
20
+ if (singlePrefix) {
21
+ const prefix = generatePrefix(rootDir, usedPrefixes, params.prefixPhrase);
22
+ foldersToRename.push({ prefix, dir: "." });
23
+ }
24
+ else {
25
+ for (const dir of topLevelDirs) {
26
+ const prefix = generatePrefix(dir, usedPrefixes, params.prefixPhrase);
27
+ foldersToRename.push({ prefix, dir });
28
+ }
29
+ }
30
+ const result = await confirm({
31
+ message: `This will rename ${foldersToRename.length} suites IDs in ${rootDir}, continue?`,
32
+ });
33
+ if (!result) {
34
+ console.log("🔴 Aborted");
35
+ return;
36
+ }
37
+ for (const folder of foldersToRename) {
38
+ const { prefix, dir } = folder;
39
+ process.stdout.write(`🟢 Changing suite ${dir} to use prefix ${chalk.bold(`(${prefix})`)} ....`);
40
+ generateId(path.join(rootDir, dir), rootDir, prefix);
41
+ process.stdout.write(" Done ✅\n");
42
+ }
43
+ console.log(`🏁 Finished renaming rootdir ${chalk.bold(`/${rootDir}`)}`);
44
+ }
45
+ function getTopLevelDirs(rootDir) {
46
+ return fs
47
+ .readdirSync(rootDir)
48
+ .filter((dir) => fs.statSync(path.join(rootDir, dir)).isDirectory());
49
+ }
50
+ function generatePrefix(directory, usedPrefixes, rootPrefix) {
51
+ const sanitizedDir = directory.replace(/[-_ ]/g, "").toUpperCase();
52
+ let prefix = rootPrefix ?? sanitizedDir[0];
53
+ let additionalIndex = 1;
54
+ while (usedPrefixes.has(prefix) && additionalIndex < sanitizedDir.length) {
55
+ prefix += rootPrefix?.[additionalIndex] ?? sanitizedDir[additionalIndex];
56
+ additionalIndex++;
57
+ }
58
+ let numericSuffix = 0;
59
+ while (usedPrefixes.has(prefix)) {
60
+ if (numericSuffix < 10) {
61
+ numericSuffix++;
62
+ prefix = sanitizedDir[0] + numericSuffix.toString();
63
+ }
64
+ else {
65
+ let lastChar = prefix.slice(-1).charCodeAt(0);
66
+ if (lastChar >= 90) {
67
+ // 'Z'
68
+ lastChar = 65; // 'A'
69
+ }
70
+ else {
71
+ lastChar++;
72
+ }
73
+ prefix = sanitizedDir[0] + String.fromCharCode(lastChar);
74
+ }
75
+ }
76
+ usedPrefixes.add(prefix);
77
+ return prefix;
78
+ }
79
+ function generateId(directory, rootDir, prefix) {
80
+ const contents = fs.readdirSync(directory);
81
+ contents.sort((a, b) => {
82
+ const aIsDir = fs.statSync(path.join(directory, a)).isDirectory();
83
+ const bIsDir = fs.statSync(path.join(directory, b)).isDirectory();
84
+ if (aIsDir && !bIsDir)
85
+ return -1;
86
+ if (!aIsDir && bIsDir)
87
+ return 1;
88
+ return customFileSort(a, b);
89
+ });
90
+ let fileCount = 1;
91
+ let subDirCount = 1;
92
+ for (const item of contents) {
93
+ const fullPath = path.join(directory, item);
94
+ if (fs.statSync(fullPath).isDirectory()) {
95
+ const subDirPrefix = `0${subDirCount}`.slice(-2);
96
+ generateId(fullPath, rootDir, prefix + subDirPrefix);
97
+ subDirCount++;
98
+ }
99
+ else {
100
+ const fileContent = fs.readFileSync(fullPath, "utf-8");
101
+ if (hasSuiteDefinition(fileContent)) {
102
+ const newId = prefix + `0${fileCount}`.slice(-2);
103
+ const updatedContent = replaceSuiteId(fileContent, newId);
104
+ if (updatedContent) {
105
+ fs.writeFileSync(fullPath, updatedContent);
106
+ }
107
+ }
108
+ fileCount++;
109
+ }
110
+ }
111
+ }
112
+ function hasSpecialCharacters(filename) {
113
+ return /[ \t!@#$%^&*()_+\-=[\]{};':"\\|,.<>/?]+/.test(filename);
114
+ }
115
+ function customFileSort(a, b) {
116
+ const aHasSpecialChars = hasSpecialCharacters(a);
117
+ const bHasSpecialChars = hasSpecialCharacters(b);
118
+ if (aHasSpecialChars && !bHasSpecialChars)
119
+ return -1;
120
+ if (!aHasSpecialChars && bHasSpecialChars)
121
+ return 1;
122
+ return a.localeCompare(b, undefined, { sensitivity: "accent" });
123
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Effect-TS services for Moonwall node management
3
+ * Re-exported from services/ for backward compatibility
4
+ */
5
+ export * from "../../../services/index.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/internal/effect/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,2CAA2C"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Effect-TS services for Moonwall node management
3
+ * Re-exported from services/ for backward compatibility
4
+ */
5
+ export * from "../../../services/index.js";
@@ -0,0 +1,11 @@
1
+ export declare function checkExists(path: string): Promise<boolean>;
2
+ export declare function downloadBinsIfMissing(binPath: string): Promise<void>;
3
+ export declare function checkListeningPorts(processId: number): {
4
+ binName: string;
5
+ processId: number;
6
+ ports: string[];
7
+ };
8
+ export declare function checkAlreadyRunning(binaryName: string): number[];
9
+ export declare function promptAlreadyRunning(pids: number[]): Promise<void>;
10
+ export declare function checkAccess(path: string): void;
11
+ //# sourceMappingURL=fileCheckers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileCheckers.d.ts","sourceRoot":"","sources":["../../../src/cli/internal/fileCheckers.ts"],"names":[],"mappings":"AAOA,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,oBA0B7C;AAED,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,MAAM,iBAuC1D;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM;;;;EA0BpD;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAgBhE;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,iBAgCxD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,QAQvC"}