@take-out/cli 0.0.39

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 (331) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +274 -0
  3. package/cli.mjs +3 -0
  4. package/dist/cjs/cli.cjs +71 -0
  5. package/dist/cjs/cli.js +70 -0
  6. package/dist/cjs/cli.js.map +6 -0
  7. package/dist/cjs/cli.native.js +79 -0
  8. package/dist/cjs/cli.native.js.map +6 -0
  9. package/dist/cjs/commands/changed.cjs +212 -0
  10. package/dist/cjs/commands/changed.js +214 -0
  11. package/dist/cjs/commands/changed.js.map +6 -0
  12. package/dist/cjs/commands/changed.native.js +289 -0
  13. package/dist/cjs/commands/changed.native.js.map +6 -0
  14. package/dist/cjs/commands/docs.cjs +388 -0
  15. package/dist/cjs/commands/docs.js +313 -0
  16. package/dist/cjs/commands/docs.js.map +6 -0
  17. package/dist/cjs/commands/docs.native.js +476 -0
  18. package/dist/cjs/commands/docs.native.js.map +6 -0
  19. package/dist/cjs/commands/env-setup.cjs +90 -0
  20. package/dist/cjs/commands/env-setup.js +78 -0
  21. package/dist/cjs/commands/env-setup.js.map +6 -0
  22. package/dist/cjs/commands/env-setup.native.js +85 -0
  23. package/dist/cjs/commands/env-setup.native.js.map +6 -0
  24. package/dist/cjs/commands/onboard.cjs +479 -0
  25. package/dist/cjs/commands/onboard.js +631 -0
  26. package/dist/cjs/commands/onboard.js.map +6 -0
  27. package/dist/cjs/commands/onboard.native.js +608 -0
  28. package/dist/cjs/commands/onboard.native.js.map +6 -0
  29. package/dist/cjs/commands/run.cjs +148 -0
  30. package/dist/cjs/commands/run.js +116 -0
  31. package/dist/cjs/commands/run.js.map +6 -0
  32. package/dist/cjs/commands/run.native.js +140 -0
  33. package/dist/cjs/commands/run.native.js.map +6 -0
  34. package/dist/cjs/commands/script.cjs +379 -0
  35. package/dist/cjs/commands/script.js +339 -0
  36. package/dist/cjs/commands/script.js.map +6 -0
  37. package/dist/cjs/commands/script.native.js +449 -0
  38. package/dist/cjs/commands/script.native.js.map +6 -0
  39. package/dist/cjs/commands/sync.cjs +190 -0
  40. package/dist/cjs/commands/sync.js +168 -0
  41. package/dist/cjs/commands/sync.js.map +6 -0
  42. package/dist/cjs/commands/sync.native.js +211 -0
  43. package/dist/cjs/commands/sync.native.js.map +6 -0
  44. package/dist/cjs/constants/ascii.cjs +36 -0
  45. package/dist/cjs/constants/ascii.js +30 -0
  46. package/dist/cjs/constants/ascii.js.map +6 -0
  47. package/dist/cjs/constants/ascii.native.js +36 -0
  48. package/dist/cjs/constants/ascii.native.js.map +6 -0
  49. package/dist/cjs/index.cjs +64 -0
  50. package/dist/cjs/index.js +55 -0
  51. package/dist/cjs/index.js.map +6 -0
  52. package/dist/cjs/index.native.js +94 -0
  53. package/dist/cjs/index.native.js.map +6 -0
  54. package/dist/cjs/types.cjs +16 -0
  55. package/dist/cjs/types.js +14 -0
  56. package/dist/cjs/types.js.map +6 -0
  57. package/dist/cjs/types.native.js +15 -0
  58. package/dist/cjs/types.native.js.map +6 -0
  59. package/dist/cjs/utils/env-categories.cjs +272 -0
  60. package/dist/cjs/utils/env-categories.js +296 -0
  61. package/dist/cjs/utils/env-categories.js.map +6 -0
  62. package/dist/cjs/utils/env-categories.native.js +317 -0
  63. package/dist/cjs/utils/env-categories.native.js.map +6 -0
  64. package/dist/cjs/utils/env-setup.cjs +181 -0
  65. package/dist/cjs/utils/env-setup.js +190 -0
  66. package/dist/cjs/utils/env-setup.js.map +6 -0
  67. package/dist/cjs/utils/env-setup.native.js +264 -0
  68. package/dist/cjs/utils/env-setup.native.js.map +6 -0
  69. package/dist/cjs/utils/env.cjs +118 -0
  70. package/dist/cjs/utils/env.js +97 -0
  71. package/dist/cjs/utils/env.js.map +6 -0
  72. package/dist/cjs/utils/env.native.js +128 -0
  73. package/dist/cjs/utils/env.native.js.map +6 -0
  74. package/dist/cjs/utils/files.cjs +215 -0
  75. package/dist/cjs/utils/files.js +164 -0
  76. package/dist/cjs/utils/files.js.map +6 -0
  77. package/dist/cjs/utils/files.native.js +266 -0
  78. package/dist/cjs/utils/files.native.js.map +6 -0
  79. package/dist/cjs/utils/parallel-runner.cjs +99 -0
  80. package/dist/cjs/utils/parallel-runner.js +84 -0
  81. package/dist/cjs/utils/parallel-runner.js.map +6 -0
  82. package/dist/cjs/utils/parallel-runner.native.js +123 -0
  83. package/dist/cjs/utils/parallel-runner.native.js.map +6 -0
  84. package/dist/cjs/utils/ports.cjs +101 -0
  85. package/dist/cjs/utils/ports.js +81 -0
  86. package/dist/cjs/utils/ports.js.map +6 -0
  87. package/dist/cjs/utils/ports.native.js +130 -0
  88. package/dist/cjs/utils/ports.native.js.map +6 -0
  89. package/dist/cjs/utils/prerequisites.cjs +119 -0
  90. package/dist/cjs/utils/prerequisites.js +107 -0
  91. package/dist/cjs/utils/prerequisites.js.map +6 -0
  92. package/dist/cjs/utils/prerequisites.native.js +127 -0
  93. package/dist/cjs/utils/prerequisites.native.js.map +6 -0
  94. package/dist/cjs/utils/prompts.cjs +161 -0
  95. package/dist/cjs/utils/prompts.js +162 -0
  96. package/dist/cjs/utils/prompts.js.map +6 -0
  97. package/dist/cjs/utils/prompts.native.js +179 -0
  98. package/dist/cjs/utils/prompts.native.js.map +6 -0
  99. package/dist/cjs/utils/script-listing.cjs +113 -0
  100. package/dist/cjs/utils/script-listing.js +108 -0
  101. package/dist/cjs/utils/script-listing.js.map +6 -0
  102. package/dist/cjs/utils/script-listing.native.js +174 -0
  103. package/dist/cjs/utils/script-listing.native.js.map +6 -0
  104. package/dist/cjs/utils/sync.cjs +85 -0
  105. package/dist/cjs/utils/sync.js +70 -0
  106. package/dist/cjs/utils/sync.js.map +6 -0
  107. package/dist/cjs/utils/sync.native.js +84 -0
  108. package/dist/cjs/utils/sync.native.js.map +6 -0
  109. package/dist/cjs/utils/welcome.cjs +50 -0
  110. package/dist/cjs/utils/welcome.js +42 -0
  111. package/dist/cjs/utils/welcome.js.map +6 -0
  112. package/dist/cjs/utils/welcome.native.js +47 -0
  113. package/dist/cjs/utils/welcome.native.js.map +6 -0
  114. package/dist/esm/cli.js +79 -0
  115. package/dist/esm/cli.js.map +6 -0
  116. package/dist/esm/cli.mjs +71 -0
  117. package/dist/esm/cli.mjs.map +1 -0
  118. package/dist/esm/cli.native.js +69 -0
  119. package/dist/esm/cli.native.js.map +1 -0
  120. package/dist/esm/commands/changed.js +194 -0
  121. package/dist/esm/commands/changed.js.map +6 -0
  122. package/dist/esm/commands/changed.mjs +178 -0
  123. package/dist/esm/commands/changed.mjs.map +1 -0
  124. package/dist/esm/commands/changed.native.js +273 -0
  125. package/dist/esm/commands/changed.native.js.map +1 -0
  126. package/dist/esm/commands/docs.js +306 -0
  127. package/dist/esm/commands/docs.js.map +6 -0
  128. package/dist/esm/commands/docs.mjs +353 -0
  129. package/dist/esm/commands/docs.mjs.map +1 -0
  130. package/dist/esm/commands/docs.native.js +516 -0
  131. package/dist/esm/commands/docs.native.js.map +1 -0
  132. package/dist/esm/commands/env-setup.js +56 -0
  133. package/dist/esm/commands/env-setup.js.map +6 -0
  134. package/dist/esm/commands/env-setup.mjs +56 -0
  135. package/dist/esm/commands/env-setup.mjs.map +1 -0
  136. package/dist/esm/commands/env-setup.native.js +59 -0
  137. package/dist/esm/commands/env-setup.native.js.map +1 -0
  138. package/dist/esm/commands/onboard.js +645 -0
  139. package/dist/esm/commands/onboard.js.map +6 -0
  140. package/dist/esm/commands/onboard.mjs +445 -0
  141. package/dist/esm/commands/onboard.mjs.map +1 -0
  142. package/dist/esm/commands/onboard.native.js +584 -0
  143. package/dist/esm/commands/onboard.native.js.map +1 -0
  144. package/dist/esm/commands/run.js +95 -0
  145. package/dist/esm/commands/run.js.map +6 -0
  146. package/dist/esm/commands/run.mjs +114 -0
  147. package/dist/esm/commands/run.mjs.map +1 -0
  148. package/dist/esm/commands/run.native.js +133 -0
  149. package/dist/esm/commands/run.native.js.map +1 -0
  150. package/dist/esm/commands/script.js +338 -0
  151. package/dist/esm/commands/script.js.map +6 -0
  152. package/dist/esm/commands/script.mjs +336 -0
  153. package/dist/esm/commands/script.mjs.map +1 -0
  154. package/dist/esm/commands/script.native.js +445 -0
  155. package/dist/esm/commands/script.native.js.map +1 -0
  156. package/dist/esm/commands/sync.js +158 -0
  157. package/dist/esm/commands/sync.js.map +6 -0
  158. package/dist/esm/commands/sync.mjs +155 -0
  159. package/dist/esm/commands/sync.mjs.map +1 -0
  160. package/dist/esm/commands/sync.native.js +173 -0
  161. package/dist/esm/commands/sync.native.js.map +1 -0
  162. package/dist/esm/constants/ascii.js +14 -0
  163. package/dist/esm/constants/ascii.js.map +6 -0
  164. package/dist/esm/constants/ascii.mjs +12 -0
  165. package/dist/esm/constants/ascii.mjs.map +1 -0
  166. package/dist/esm/constants/ascii.native.js +12 -0
  167. package/dist/esm/constants/ascii.native.js.map +1 -0
  168. package/dist/esm/index.js +83 -0
  169. package/dist/esm/index.js.map +6 -0
  170. package/dist/esm/index.mjs +7 -0
  171. package/dist/esm/index.mjs.map +1 -0
  172. package/dist/esm/index.native.js +7 -0
  173. package/dist/esm/index.native.js.map +1 -0
  174. package/dist/esm/types.js +1 -0
  175. package/dist/esm/types.js.map +6 -0
  176. package/dist/esm/types.mjs +2 -0
  177. package/dist/esm/types.mjs.map +1 -0
  178. package/dist/esm/types.native.js +2 -0
  179. package/dist/esm/types.native.js.map +1 -0
  180. package/dist/esm/utils/env-categories.js +272 -0
  181. package/dist/esm/utils/env-categories.js.map +6 -0
  182. package/dist/esm/utils/env-categories.mjs +233 -0
  183. package/dist/esm/utils/env-categories.mjs.map +1 -0
  184. package/dist/esm/utils/env-categories.native.js +246 -0
  185. package/dist/esm/utils/env-categories.native.js.map +1 -0
  186. package/dist/esm/utils/env-setup.js +173 -0
  187. package/dist/esm/utils/env-setup.js.map +6 -0
  188. package/dist/esm/utils/env-setup.mjs +146 -0
  189. package/dist/esm/utils/env-setup.mjs.map +1 -0
  190. package/dist/esm/utils/env-setup.native.js +243 -0
  191. package/dist/esm/utils/env-setup.native.js.map +1 -0
  192. package/dist/esm/utils/env.js +83 -0
  193. package/dist/esm/utils/env.js.map +6 -0
  194. package/dist/esm/utils/env.mjs +90 -0
  195. package/dist/esm/utils/env.mjs.map +1 -0
  196. package/dist/esm/utils/env.native.js +99 -0
  197. package/dist/esm/utils/env.native.js.map +1 -0
  198. package/dist/esm/utils/files.js +150 -0
  199. package/dist/esm/utils/files.js.map +6 -0
  200. package/dist/esm/utils/files.mjs +187 -0
  201. package/dist/esm/utils/files.mjs.map +1 -0
  202. package/dist/esm/utils/files.native.js +247 -0
  203. package/dist/esm/utils/files.native.js.map +1 -0
  204. package/dist/esm/utils/parallel-runner.js +69 -0
  205. package/dist/esm/utils/parallel-runner.js.map +6 -0
  206. package/dist/esm/utils/parallel-runner.mjs +76 -0
  207. package/dist/esm/utils/parallel-runner.mjs.map +1 -0
  208. package/dist/esm/utils/parallel-runner.native.js +109 -0
  209. package/dist/esm/utils/parallel-runner.native.js.map +1 -0
  210. package/dist/esm/utils/ports.js +65 -0
  211. package/dist/esm/utils/ports.js.map +6 -0
  212. package/dist/esm/utils/ports.mjs +74 -0
  213. package/dist/esm/utils/ports.mjs.map +1 -0
  214. package/dist/esm/utils/ports.native.js +93 -0
  215. package/dist/esm/utils/ports.native.js.map +1 -0
  216. package/dist/esm/utils/prerequisites.js +91 -0
  217. package/dist/esm/utils/prerequisites.js.map +6 -0
  218. package/dist/esm/utils/prerequisites.mjs +91 -0
  219. package/dist/esm/utils/prerequisites.mjs.map +1 -0
  220. package/dist/esm/utils/prerequisites.native.js +97 -0
  221. package/dist/esm/utils/prerequisites.native.js.map +1 -0
  222. package/dist/esm/utils/prompts.js +139 -0
  223. package/dist/esm/utils/prompts.js.map +6 -0
  224. package/dist/esm/utils/prompts.mjs +112 -0
  225. package/dist/esm/utils/prompts.mjs.map +1 -0
  226. package/dist/esm/utils/prompts.native.js +115 -0
  227. package/dist/esm/utils/prompts.native.js.map +1 -0
  228. package/dist/esm/utils/script-listing.js +91 -0
  229. package/dist/esm/utils/script-listing.js.map +6 -0
  230. package/dist/esm/utils/script-listing.mjs +76 -0
  231. package/dist/esm/utils/script-listing.mjs.map +1 -0
  232. package/dist/esm/utils/script-listing.native.js +151 -0
  233. package/dist/esm/utils/script-listing.native.js.map +1 -0
  234. package/dist/esm/utils/sync.js +50 -0
  235. package/dist/esm/utils/sync.js.map +6 -0
  236. package/dist/esm/utils/sync.mjs +48 -0
  237. package/dist/esm/utils/sync.mjs.map +1 -0
  238. package/dist/esm/utils/sync.native.js +53 -0
  239. package/dist/esm/utils/sync.native.js.map +1 -0
  240. package/dist/esm/utils/welcome.js +21 -0
  241. package/dist/esm/utils/welcome.js.map +6 -0
  242. package/dist/esm/utils/welcome.mjs +15 -0
  243. package/dist/esm/utils/welcome.mjs.map +1 -0
  244. package/dist/esm/utils/welcome.native.js +18 -0
  245. package/dist/esm/utils/welcome.native.js.map +1 -0
  246. package/docs/aggregates.md +579 -0
  247. package/docs/cloudflare-dev-tunnel.md +41 -0
  248. package/docs/database.md +203 -0
  249. package/docs/docs.md +8 -0
  250. package/docs/emitters.md +562 -0
  251. package/docs/hot-updater.md +223 -0
  252. package/docs/native-hot-update.md +252 -0
  253. package/docs/one-components.md +234 -0
  254. package/docs/one-hooks.md +570 -0
  255. package/docs/one-routes.md +660 -0
  256. package/docs/package-json.md +115 -0
  257. package/docs/react-native-navigation-flow.md +184 -0
  258. package/docs/scripts.md +147 -0
  259. package/docs/sync-prompt.md +208 -0
  260. package/docs/tamagui.md +478 -0
  261. package/docs/testing-integration.md +564 -0
  262. package/docs/triggers.md +450 -0
  263. package/docs/zero.md +719 -0
  264. package/package.json +76 -0
  265. package/scripts/seed.ts +209 -0
  266. package/src/cli.ts +147 -0
  267. package/src/commands/changed.ts +313 -0
  268. package/src/commands/docs.ts +582 -0
  269. package/src/commands/env-setup.ts +69 -0
  270. package/src/commands/onboard.ts +1391 -0
  271. package/src/commands/run.ts +173 -0
  272. package/src/commands/script.ts +587 -0
  273. package/src/commands/sync.ts +305 -0
  274. package/src/constants/ascii.ts +17 -0
  275. package/src/index.ts +63 -0
  276. package/src/types.ts +59 -0
  277. package/src/utils/env-categories.ts +245 -0
  278. package/src/utils/env-setup.ts +338 -0
  279. package/src/utils/env.ts +127 -0
  280. package/src/utils/files.ts +302 -0
  281. package/src/utils/parallel-runner.ts +129 -0
  282. package/src/utils/ports.ts +77 -0
  283. package/src/utils/prerequisites.ts +137 -0
  284. package/src/utils/prompts.ts +197 -0
  285. package/src/utils/script-listing.ts +214 -0
  286. package/src/utils/sync.ts +101 -0
  287. package/src/withOpSqliteStatic.cjs +51 -0
  288. package/types/cli.d.ts +7 -0
  289. package/types/cli.d.ts.map +1 -0
  290. package/types/commands/changed.d.ts +14 -0
  291. package/types/commands/changed.d.ts.map +1 -0
  292. package/types/commands/docs.d.ts +5 -0
  293. package/types/commands/docs.d.ts.map +1 -0
  294. package/types/commands/env-setup.d.ts +25 -0
  295. package/types/commands/env-setup.d.ts.map +1 -0
  296. package/types/commands/onboard.d.ts +16 -0
  297. package/types/commands/onboard.d.ts.map +1 -0
  298. package/types/commands/run.d.ts +8 -0
  299. package/types/commands/run.d.ts.map +1 -0
  300. package/types/commands/script.d.ts +28 -0
  301. package/types/commands/script.d.ts.map +1 -0
  302. package/types/commands/sync.d.ts +5 -0
  303. package/types/commands/sync.d.ts.map +1 -0
  304. package/types/constants/ascii.d.ts +6 -0
  305. package/types/constants/ascii.d.ts.map +1 -0
  306. package/types/index.d.ts +12 -0
  307. package/types/index.d.ts.map +1 -0
  308. package/types/types.d.ts +54 -0
  309. package/types/types.d.ts.map +1 -0
  310. package/types/utils/env-categories.d.ts +8 -0
  311. package/types/utils/env-categories.d.ts.map +1 -0
  312. package/types/utils/env-setup.d.ts +10 -0
  313. package/types/utils/env-setup.d.ts.map +1 -0
  314. package/types/utils/env.d.ts +19 -0
  315. package/types/utils/env.d.ts.map +1 -0
  316. package/types/utils/files.d.ts +47 -0
  317. package/types/utils/files.d.ts.map +1 -0
  318. package/types/utils/parallel-runner.d.ts +15 -0
  319. package/types/utils/parallel-runner.d.ts.map +1 -0
  320. package/types/utils/ports.d.ts +16 -0
  321. package/types/utils/ports.d.ts.map +1 -0
  322. package/types/utils/prerequisites.d.ts +11 -0
  323. package/types/utils/prerequisites.d.ts.map +1 -0
  324. package/types/utils/prompts.d.ts +30 -0
  325. package/types/utils/prompts.d.ts.map +1 -0
  326. package/types/utils/script-listing.d.ts +7 -0
  327. package/types/utils/script-listing.d.ts.map +1 -0
  328. package/types/utils/sync.d.ts +16 -0
  329. package/types/utils/sync.d.ts.map +1 -0
  330. package/types/utils/welcome.d.ts +6 -0
  331. package/types/utils/welcome.d.ts.map +1 -0
@@ -0,0 +1,69 @@
1
+ import { spawn } from "node:child_process";
2
+ import { cpus } from "node:os";
3
+ const colors = [
4
+ "\x1B[36m",
5
+ // Cyan
6
+ "\x1B[35m",
7
+ // Magenta
8
+ "\x1B[33m",
9
+ // Yellow
10
+ "\x1B[32m",
11
+ // Green
12
+ "\x1B[34m",
13
+ // Blue
14
+ "\x1B[31m",
15
+ // Red
16
+ "\x1B[90m"
17
+ // Gray
18
+ ], reset = "\x1B[0m";
19
+ async function runScriptsInParallel(scripts, options = {}) {
20
+ const { title, onError = "exit", maxParallelism = cpus().length } = options;
21
+ title && (console.info(), console.info(title), console.info());
22
+ const allPromises = [], executing = /* @__PURE__ */ new Set();
23
+ for (let i = 0; i < scripts.length; i++) {
24
+ const script = scripts[i], scriptPromise = runSingleScript(script, i).finally(() => {
25
+ executing.delete(scriptPromise);
26
+ });
27
+ allPromises.push(scriptPromise), executing.add(scriptPromise), executing.size >= maxParallelism && await Promise.race(executing);
28
+ }
29
+ const failures = (await Promise.allSettled(allPromises)).filter((r) => r.status === "rejected");
30
+ failures.length > 0 ? (console.error(`
31
+ ${reset}\x1B[31m\u2717 ${failures.length} script(s) failed${reset}
32
+ `), onError === "exit" && process.exit(1)) : console.info(`
33
+ ${reset}\x1B[32m\u2713 All scripts completed successfully${reset}
34
+ `);
35
+ }
36
+ function runSingleScript(script, colorIndex) {
37
+ return new Promise((resolve, reject) => {
38
+ const color = colors[colorIndex % colors.length], prefixLabel = script.name, proc = spawn("bun", [script.path, ...script.args || []], {
39
+ stdio: ["pipe", "pipe", "pipe"],
40
+ shell: !1,
41
+ env: { ...process.env, FORCE_COLOR: "3" },
42
+ detached: !0
43
+ });
44
+ let stderrBuffer = "";
45
+ proc.stdout.on("data", (data) => {
46
+ const lines = data.toString().split(`
47
+ `);
48
+ for (const line of lines)
49
+ line && console.info(`${color}${prefixLabel}${reset} ${line}`);
50
+ }), proc.stderr.on("data", (data) => {
51
+ const dataStr = data.toString();
52
+ stderrBuffer += dataStr;
53
+ const lines = dataStr.split(`
54
+ `);
55
+ for (const line of lines)
56
+ line && console.error(`${color}${prefixLabel}${reset} ${line}`);
57
+ }), proc.on("error", (error) => {
58
+ console.error(`${color}${prefixLabel}${reset} Failed to start: ${error.message}`), reject(error);
59
+ }), proc.on("close", (code) => {
60
+ code && code !== 0 ? (console.error(`${color}${prefixLabel}${reset} Process exited with code ${code}`), stderrBuffer.trim() && (console.error(`
61
+ ${color}${prefixLabel}${reset} Error output:`), console.error("\x1B[90m" + "\u2500".repeat(80) + "\x1B[0m"), console.error(stderrBuffer), console.error("\x1B[90m" + "\u2500".repeat(80) + `\x1B[0m
62
+ `)), reject(new Error(`Script ${prefixLabel} failed with code ${code}`))) : (console.info(`${color}${prefixLabel}${reset} \x1B[32m\u2713 completed${reset}`), resolve());
63
+ });
64
+ });
65
+ }
66
+ export {
67
+ runScriptsInParallel
68
+ };
69
+ //# sourceMappingURL=parallel-runner.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/utils/parallel-runner.ts"],
4
+ "mappings": "AAIA,SAAS,aAAa;AACtB,SAAS,YAAY;AAErB,MAAM,SAAS;AAAA,EACb;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AACF,GAEM,QAAQ;AAQd,eAAsB,qBACpB,SACA,UAII,CAAC,GACU;AACf,QAAM,EAAE,OAAO,UAAU,QAAQ,iBAAiB,KAAK,EAAE,OAAO,IAAI;AAEpE,EAAI,UACF,QAAQ,KAAK,GACb,QAAQ,KAAK,KAAK,GAClB,QAAQ,KAAK;AAGf,QAAM,cAA+B,CAAC,GAChC,YAAgC,oBAAI,IAAI;AAE9C,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,UAAM,SAAS,QAAQ,CAAC,GAClB,gBAAgB,gBAAgB,QAAQ,CAAC,EAAE,QAAQ,MAAM;AAC7D,gBAAU,OAAO,aAAa;AAAA,IAChC,CAAC;AAED,gBAAY,KAAK,aAAa,GAC9B,UAAU,IAAI,aAAa,GAEvB,UAAU,QAAQ,kBACpB,MAAM,QAAQ,KAAK,SAAS;AAAA,EAEhC;AAKA,QAAM,YAHiB,MAAM,QAAQ,WAAW,WAAW,GAG3B,OAAO,CAAC,MAAM,EAAE,WAAW,UAAU;AAErE,EAAI,SAAS,SAAS,KACpB,QAAQ,MAAM;AAAA,EAAK,KAAK,kBAAa,SAAS,MAAM,oBAAoB,KAAK;AAAA,CAAI,GAC7E,YAAY,UACd,QAAQ,KAAK,CAAC,KAGhB,QAAQ,KAAK;AAAA,EAAK,KAAK,oDAA+C,KAAK;AAAA,CAAI;AAEnF;AAEA,SAAS,gBAAgB,QAAqB,YAAmC;AAC/E,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAM,QAAQ,OAAO,aAAa,OAAO,MAAM,GACzC,cAAc,OAAO,MAErB,OAAO,MAAM,OAAO,CAAC,OAAO,MAAM,GAAI,OAAO,QAAQ,CAAC,CAAE,GAAG;AAAA,MAC/D,OAAO,CAAC,QAAQ,QAAQ,MAAM;AAAA,MAC9B,OAAO;AAAA,MACP,KAAK,EAAE,GAAG,QAAQ,KAAK,aAAa,IAAI;AAAA,MACxC,UAAU;AAAA,IACZ,CAAC;AAED,QAAI,eAAe;AAEnB,SAAK,OAAO,GAAG,QAAQ,CAAC,SAAS;AAC/B,YAAM,QAAQ,KAAK,SAAS,EAAE,MAAM;AAAA,CAAI;AACxC,iBAAW,QAAQ;AACjB,QAAI,QAAM,QAAQ,KAAK,GAAG,KAAK,GAAG,WAAW,GAAG,KAAK,IAAI,IAAI,EAAE;AAAA,IAEnE,CAAC,GAED,KAAK,OAAO,GAAG,QAAQ,CAAC,SAAS;AAC/B,YAAM,UAAU,KAAK,SAAS;AAC9B,sBAAgB;AAEhB,YAAM,QAAQ,QAAQ,MAAM;AAAA,CAAI;AAChC,iBAAW,QAAQ;AACjB,QAAI,QAAM,QAAQ,MAAM,GAAG,KAAK,GAAG,WAAW,GAAG,KAAK,IAAI,IAAI,EAAE;AAAA,IAEpE,CAAC,GAED,KAAK,GAAG,SAAS,CAAC,UAAU;AAC1B,cAAQ,MAAM,GAAG,KAAK,GAAG,WAAW,GAAG,KAAK,qBAAqB,MAAM,OAAO,EAAE,GAChF,OAAO,KAAK;AAAA,IACd,CAAC,GAED,KAAK,GAAG,SAAS,CAAC,SAAS;AACzB,MAAI,QAAQ,SAAS,KACnB,QAAQ,MAAM,GAAG,KAAK,GAAG,WAAW,GAAG,KAAK,6BAA6B,IAAI,EAAE,GAG3E,aAAa,KAAK,MACpB,QAAQ,MAAM;AAAA,EAAK,KAAK,GAAG,WAAW,GAAG,KAAK,gBAAgB,GAC9D,QAAQ,MAAM,aAAa,SAAI,OAAO,EAAE,IAAI,SAAS,GACrD,QAAQ,MAAM,YAAY,GAC1B,QAAQ,MAAM,aAAa,SAAI,OAAO,EAAE,IAAI;AAAA,CAAW,IAGzD,OAAO,IAAI,MAAM,UAAU,WAAW,qBAAqB,IAAI,EAAE,CAAC,MAElE,QAAQ,KAAK,GAAG,KAAK,GAAG,WAAW,GAAG,KAAK,4BAAuB,KAAK,EAAE,GACzE,QAAQ;AAAA,IAEZ,CAAC;AAAA,EACH,CAAC;AACH;",
5
+ "names": []
6
+ }
@@ -0,0 +1,76 @@
1
+ import { spawn } from "node:child_process";
2
+ import { cpus } from "node:os";
3
+ const colors = ["\x1B[36m",
4
+ // Cyan
5
+ "\x1B[35m",
6
+ // Magenta
7
+ "\x1B[33m",
8
+ // Yellow
9
+ "\x1B[32m",
10
+ // Green
11
+ "\x1B[34m",
12
+ // Blue
13
+ "\x1B[31m",
14
+ // Red
15
+ "\x1B[90m"
16
+ // Gray
17
+ ],
18
+ reset = "\x1B[0m";
19
+ async function runScriptsInParallel(scripts, options = {}) {
20
+ const {
21
+ title,
22
+ onError = "exit",
23
+ maxParallelism = cpus().length
24
+ } = options;
25
+ title && (console.info(), console.info(title), console.info());
26
+ const allPromises = [],
27
+ executing = /* @__PURE__ */new Set();
28
+ for (let i = 0; i < scripts.length; i++) {
29
+ const script = scripts[i],
30
+ scriptPromise = runSingleScript(script, i).finally(() => {
31
+ executing.delete(scriptPromise);
32
+ });
33
+ allPromises.push(scriptPromise), executing.add(scriptPromise), executing.size >= maxParallelism && (await Promise.race(executing));
34
+ }
35
+ const failures = (await Promise.allSettled(allPromises)).filter(r => r.status === "rejected");
36
+ failures.length > 0 ? (console.error(`
37
+ ${reset}\x1B[31m\u2717 ${failures.length} script(s) failed${reset}
38
+ `), onError === "exit" && process.exit(1)) : console.info(`
39
+ ${reset}\x1B[32m\u2713 All scripts completed successfully${reset}
40
+ `);
41
+ }
42
+ function runSingleScript(script, colorIndex) {
43
+ return new Promise((resolve, reject) => {
44
+ const color = colors[colorIndex % colors.length],
45
+ prefixLabel = script.name,
46
+ proc = spawn("bun", [script.path, ...(script.args || [])], {
47
+ stdio: ["pipe", "pipe", "pipe"],
48
+ shell: !1,
49
+ env: {
50
+ ...process.env,
51
+ FORCE_COLOR: "3"
52
+ },
53
+ detached: !0
54
+ });
55
+ let stderrBuffer = "";
56
+ proc.stdout.on("data", data => {
57
+ const lines = data.toString().split(`
58
+ `);
59
+ for (const line of lines) line && console.info(`${color}${prefixLabel}${reset} ${line}`);
60
+ }), proc.stderr.on("data", data => {
61
+ const dataStr = data.toString();
62
+ stderrBuffer += dataStr;
63
+ const lines = dataStr.split(`
64
+ `);
65
+ for (const line of lines) line && console.error(`${color}${prefixLabel}${reset} ${line}`);
66
+ }), proc.on("error", error => {
67
+ console.error(`${color}${prefixLabel}${reset} Failed to start: ${error.message}`), reject(error);
68
+ }), proc.on("close", code => {
69
+ code && code !== 0 ? (console.error(`${color}${prefixLabel}${reset} Process exited with code ${code}`), stderrBuffer.trim() && (console.error(`
70
+ ${color}${prefixLabel}${reset} Error output:`), console.error("\x1B[90m" + "\u2500".repeat(80) + "\x1B[0m"), console.error(stderrBuffer), console.error("\x1B[90m" + "\u2500".repeat(80) + `\x1B[0m
71
+ `)), reject(new Error(`Script ${prefixLabel} failed with code ${code}`))) : (console.info(`${color}${prefixLabel}${reset} \x1B[32m\u2713 completed${reset}`), resolve());
72
+ });
73
+ });
74
+ }
75
+ export { runScriptsInParallel };
76
+ //# sourceMappingURL=parallel-runner.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["spawn","cpus","colors","reset","runScriptsInParallel","scripts","options","title","onError","maxParallelism","length","console","info","allPromises","executing","Set","i","script","scriptPromise","runSingleScript","finally","delete","push","add","size","Promise","race","failures","allSettled","filter","r","status","error","process","exit","colorIndex","resolve","reject","color","prefixLabel","name","proc","path","args","stdio","shell","env","FORCE_COLOR","detached","stderrBuffer","stdout","on","data","lines","toString","split","line","stderr","dataStr","message","code","trim","repeat","Error"],"sources":["../../../src/utils/parallel-runner.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,109 @@
1
+ import { spawn } from "child_process";
2
+ import { cpus } from "os";
3
+ var colors = ["\x1B[36m",
4
+ // Cyan
5
+ "\x1B[35m",
6
+ // Magenta
7
+ "\x1B[33m",
8
+ // Yellow
9
+ "\x1B[32m",
10
+ // Green
11
+ "\x1B[34m",
12
+ // Blue
13
+ "\x1B[31m",
14
+ // Red
15
+ "\x1B[90m"],
16
+ reset = "\x1B[0m";
17
+ async function runScriptsInParallel(scripts) {
18
+ var _loop = async function (i2) {
19
+ var script = scripts[i2],
20
+ scriptPromise = runSingleScript(script, i2).finally(function () {
21
+ executing.delete(scriptPromise);
22
+ });
23
+ allPromises.push(scriptPromise), executing.add(scriptPromise), executing.size >= maxParallelism && (await Promise.race(executing));
24
+ },
25
+ options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {},
26
+ {
27
+ title,
28
+ onError = "exit",
29
+ maxParallelism = cpus().length
30
+ } = options;
31
+ title && (console.info(), console.info(title), console.info());
32
+ for (var allPromises = [], executing = /* @__PURE__ */new Set(), i = 0; i < scripts.length; i++) await _loop(i);
33
+ var settledResults = await Promise.allSettled(allPromises),
34
+ failures = settledResults.filter(function (r) {
35
+ return r.status === "rejected";
36
+ });
37
+ failures.length > 0 ? (console.error(`
38
+ ${reset}\x1B[31m\u2717 ${failures.length} script(s) failed${reset}
39
+ `), onError === "exit" && process.exit(1)) : console.info(`
40
+ ${reset}\x1B[32m\u2713 All scripts completed successfully${reset}
41
+ `);
42
+ }
43
+ function runSingleScript(script, colorIndex) {
44
+ return new Promise(function (resolve, reject) {
45
+ var color = colors[colorIndex % colors.length],
46
+ prefixLabel = script.name,
47
+ proc = spawn("bun", [script.path, ...(script.args || [])], {
48
+ stdio: ["pipe", "pipe", "pipe"],
49
+ shell: !1,
50
+ env: {
51
+ ...process.env,
52
+ FORCE_COLOR: "3"
53
+ },
54
+ detached: !0
55
+ }),
56
+ stderrBuffer = "";
57
+ proc.stdout.on("data", function (data) {
58
+ var lines = data.toString().split(`
59
+ `),
60
+ _iteratorNormalCompletion = !0,
61
+ _didIteratorError = !1,
62
+ _iteratorError = void 0;
63
+ try {
64
+ for (var _iterator = lines[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
65
+ var line = _step.value;
66
+ line && console.info(`${color}${prefixLabel}${reset} ${line}`);
67
+ }
68
+ } catch (err) {
69
+ _didIteratorError = !0, _iteratorError = err;
70
+ } finally {
71
+ try {
72
+ !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
73
+ } finally {
74
+ if (_didIteratorError) throw _iteratorError;
75
+ }
76
+ }
77
+ }), proc.stderr.on("data", function (data) {
78
+ var dataStr = data.toString();
79
+ stderrBuffer += dataStr;
80
+ var lines = dataStr.split(`
81
+ `),
82
+ _iteratorNormalCompletion = !0,
83
+ _didIteratorError = !1,
84
+ _iteratorError = void 0;
85
+ try {
86
+ for (var _iterator = lines[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
87
+ var line = _step.value;
88
+ line && console.error(`${color}${prefixLabel}${reset} ${line}`);
89
+ }
90
+ } catch (err) {
91
+ _didIteratorError = !0, _iteratorError = err;
92
+ } finally {
93
+ try {
94
+ !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
95
+ } finally {
96
+ if (_didIteratorError) throw _iteratorError;
97
+ }
98
+ }
99
+ }), proc.on("error", function (error) {
100
+ console.error(`${color}${prefixLabel}${reset} Failed to start: ${error.message}`), reject(error);
101
+ }), proc.on("close", function (code) {
102
+ code && code !== 0 ? (console.error(`${color}${prefixLabel}${reset} Process exited with code ${code}`), stderrBuffer.trim() && (console.error(`
103
+ ${color}${prefixLabel}${reset} Error output:`), console.error("\x1B[90m" + "\u2500".repeat(80) + "\x1B[0m"), console.error(stderrBuffer), console.error("\x1B[90m" + "\u2500".repeat(80) + `\x1B[0m
104
+ `)), reject(new Error(`Script ${prefixLabel} failed with code ${code}`))) : (console.info(`${color}${prefixLabel}${reset} \x1B[32m\u2713 completed${reset}`), resolve());
105
+ });
106
+ });
107
+ }
108
+ export { runScriptsInParallel };
109
+ //# sourceMappingURL=parallel-runner.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["spawn","cpus","colors","reset","runScriptsInParallel","scripts","_loop","i2","script","scriptPromise","runSingleScript","finally","executing","delete","allPromises","push","add","size","maxParallelism","Promise","race","options","arguments","length","title","onError","console","info","Set","i","settledResults","allSettled","failures","filter","r","status","error","process","exit","colorIndex","resolve","reject","color","prefixLabel","name","proc","path","args","stdio","shell","env","FORCE_COLOR","detached","stderrBuffer","stdout","on","data","lines","toString","split","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","line","value","err"],"sources":["../../../src/utils/parallel-runner.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,65 @@
1
+ import { execSync } from "node:child_process";
2
+ function isPortInUse(port) {
3
+ try {
4
+ if (process.platform === "win32") {
5
+ const output = execSync(`netstat -ano | findstr :${port}`, {
6
+ encoding: "utf-8",
7
+ stdio: ["pipe", "pipe", "ignore"]
8
+ }).trim();
9
+ if (!output) return { inUse: !1 };
10
+ const lines = output.split(`
11
+ `);
12
+ for (const line of lines) {
13
+ const parts = line.trim().split(/\s+/);
14
+ if (parts[1]?.includes(`:${port}`) && parts[3] === "LISTENING") {
15
+ const pid = Number.parseInt(parts[4] || "", 10);
16
+ return { inUse: !0, pid: Number.isNaN(pid) ? void 0 : pid };
17
+ }
18
+ }
19
+ return { inUse: !1 };
20
+ } else {
21
+ const output = execSync(`lsof -i :${port} -t`, {
22
+ encoding: "utf-8",
23
+ stdio: ["pipe", "pipe", "ignore"]
24
+ }).trim(), pid = output ? Number.parseInt(output.split(`
25
+ `)[0] || "", 10) : void 0;
26
+ return { inUse: !!output, pid: Number.isNaN(pid) ? void 0 : pid };
27
+ }
28
+ } catch {
29
+ return { inUse: !1 };
30
+ }
31
+ }
32
+ const TAKEOUT_PORTS = {
33
+ postgres: 5432,
34
+ zero: 4848,
35
+ web: 8081,
36
+ minio: 9090,
37
+ minioConsole: 9091
38
+ };
39
+ function checkPort(port, name) {
40
+ const { inUse, pid } = isPortInUse(port);
41
+ return { port, name, inUse, pid };
42
+ }
43
+ function checkAllPorts() {
44
+ return [
45
+ checkPort(TAKEOUT_PORTS.postgres, "PostgreSQL"),
46
+ checkPort(TAKEOUT_PORTS.zero, "Zero Sync"),
47
+ checkPort(TAKEOUT_PORTS.web, "Web Server"),
48
+ checkPort(TAKEOUT_PORTS.minio, "MinIO (S3)"),
49
+ checkPort(TAKEOUT_PORTS.minioConsole, "MinIO Console")
50
+ ];
51
+ }
52
+ function hasPortConflicts(checks) {
53
+ return checks.some((c) => c.inUse);
54
+ }
55
+ function getConflictingPorts(checks) {
56
+ return checks.filter((c) => c.inUse);
57
+ }
58
+ export {
59
+ TAKEOUT_PORTS,
60
+ checkAllPorts,
61
+ checkPort,
62
+ getConflictingPorts,
63
+ hasPortConflicts
64
+ };
65
+ //# sourceMappingURL=ports.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/utils/ports.ts"],
4
+ "mappings": "AAIA,SAAS,gBAAgB;AAIzB,SAAS,YAAY,MAAgD;AACnE,MAAI;AACF,QAAI,QAAQ,aAAa,SAAS;AAEhC,YAAM,SAAS,SAAS,2BAA2B,IAAI,IAAI;AAAA,QACzD,UAAU;AAAA,QACV,OAAO,CAAC,QAAQ,QAAQ,QAAQ;AAAA,MAClC,CAAC,EAAE,KAAK;AAER,UAAI,CAAC,OAAQ,QAAO,EAAE,OAAO,GAAM;AAGnC,YAAM,QAAQ,OAAO,MAAM;AAAA,CAAI;AAC/B,iBAAW,QAAQ,OAAO;AACxB,cAAM,QAAQ,KAAK,KAAK,EAAE,MAAM,KAAK;AAErC,YAAI,MAAM,CAAC,GAAG,SAAS,IAAI,IAAI,EAAE,KAAK,MAAM,CAAC,MAAM,aAAa;AAC9D,gBAAM,MAAM,OAAO,SAAS,MAAM,CAAC,KAAK,IAAI,EAAE;AAC9C,iBAAO,EAAE,OAAO,IAAM,KAAK,OAAO,MAAM,GAAG,IAAI,SAAY,IAAI;AAAA,QACjE;AAAA,MACF;AACA,aAAO,EAAE,OAAO,GAAM;AAAA,IACxB,OAAO;AAEL,YAAM,SAAS,SAAS,YAAY,IAAI,OAAO;AAAA,QAC7C,UAAU;AAAA,QACV,OAAO,CAAC,QAAQ,QAAQ,QAAQ;AAAA,MAClC,CAAC,EAAE,KAAK,GAEF,MAAM,SAAS,OAAO,SAAS,OAAO,MAAM;AAAA,CAAI,EAAE,CAAC,KAAK,IAAI,EAAE,IAAI;AAExE,aAAO,EAAE,OAAO,CAAC,CAAC,QAAQ,KAAK,OAAO,MAAM,GAAG,IAAI,SAAY,IAAI;AAAA,IACrE;AAAA,EACF,QAAQ;AAEN,WAAO,EAAE,OAAO,GAAM;AAAA,EACxB;AACF;AAEO,MAAM,gBAAgB;AAAA,EAC3B,UAAU;AAAA,EACV,MAAM;AAAA,EACN,KAAK;AAAA,EACL,OAAO;AAAA,EACP,cAAc;AAChB;AAEO,SAAS,UAAU,MAAc,MAAyB;AAC/D,QAAM,EAAE,OAAO,IAAI,IAAI,YAAY,IAAI;AACvC,SAAO,EAAE,MAAM,MAAM,OAAO,IAAI;AAClC;AAEO,SAAS,gBAA6B;AAC3C,SAAO;AAAA,IACL,UAAU,cAAc,UAAU,YAAY;AAAA,IAC9C,UAAU,cAAc,MAAM,WAAW;AAAA,IACzC,UAAU,cAAc,KAAK,YAAY;AAAA,IACzC,UAAU,cAAc,OAAO,YAAY;AAAA,IAC3C,UAAU,cAAc,cAAc,eAAe;AAAA,EACvD;AACF;AAEO,SAAS,iBAAiB,QAA8B;AAC7D,SAAO,OAAO,KAAK,CAAC,MAAM,EAAE,KAAK;AACnC;AAEO,SAAS,oBAAoB,QAAkC;AACpE,SAAO,OAAO,OAAO,CAAC,MAAM,EAAE,KAAK;AACrC;",
5
+ "names": []
6
+ }
@@ -0,0 +1,74 @@
1
+ import { execSync } from "node:child_process";
2
+ function isPortInUse(port) {
3
+ try {
4
+ if (process.platform === "win32") {
5
+ const output = execSync(`netstat -ano | findstr :${port}`, {
6
+ encoding: "utf-8",
7
+ stdio: ["pipe", "pipe", "ignore"]
8
+ }).trim();
9
+ if (!output) return {
10
+ inUse: !1
11
+ };
12
+ const lines = output.split(`
13
+ `);
14
+ for (const line of lines) {
15
+ const parts = line.trim().split(/\s+/);
16
+ if (parts[1]?.includes(`:${port}`) && parts[3] === "LISTENING") {
17
+ const pid = Number.parseInt(parts[4] || "", 10);
18
+ return {
19
+ inUse: !0,
20
+ pid: Number.isNaN(pid) ? void 0 : pid
21
+ };
22
+ }
23
+ }
24
+ return {
25
+ inUse: !1
26
+ };
27
+ } else {
28
+ const output = execSync(`lsof -i :${port} -t`, {
29
+ encoding: "utf-8",
30
+ stdio: ["pipe", "pipe", "ignore"]
31
+ }).trim(),
32
+ pid = output ? Number.parseInt(output.split(`
33
+ `)[0] || "", 10) : void 0;
34
+ return {
35
+ inUse: !!output,
36
+ pid: Number.isNaN(pid) ? void 0 : pid
37
+ };
38
+ }
39
+ } catch {
40
+ return {
41
+ inUse: !1
42
+ };
43
+ }
44
+ }
45
+ const TAKEOUT_PORTS = {
46
+ postgres: 5432,
47
+ zero: 4848,
48
+ web: 8081,
49
+ minio: 9090,
50
+ minioConsole: 9091
51
+ };
52
+ function checkPort(port, name) {
53
+ const {
54
+ inUse,
55
+ pid
56
+ } = isPortInUse(port);
57
+ return {
58
+ port,
59
+ name,
60
+ inUse,
61
+ pid
62
+ };
63
+ }
64
+ function checkAllPorts() {
65
+ return [checkPort(TAKEOUT_PORTS.postgres, "PostgreSQL"), checkPort(TAKEOUT_PORTS.zero, "Zero Sync"), checkPort(TAKEOUT_PORTS.web, "Web Server"), checkPort(TAKEOUT_PORTS.minio, "MinIO (S3)"), checkPort(TAKEOUT_PORTS.minioConsole, "MinIO Console")];
66
+ }
67
+ function hasPortConflicts(checks) {
68
+ return checks.some(c => c.inUse);
69
+ }
70
+ function getConflictingPorts(checks) {
71
+ return checks.filter(c => c.inUse);
72
+ }
73
+ export { TAKEOUT_PORTS, checkAllPorts, checkPort, getConflictingPorts, hasPortConflicts };
74
+ //# sourceMappingURL=ports.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["execSync","isPortInUse","port","process","platform","output","encoding","stdio","trim","inUse","lines","split","line","parts","includes","pid","Number","parseInt","isNaN","TAKEOUT_PORTS","postgres","zero","web","minio","minioConsole","checkPort","name","checkAllPorts","hasPortConflicts","checks","some","c","getConflictingPorts","filter"],"sources":["../../../src/utils/ports.ts"],"sourcesContent":[null],"mappings":"AAIA,SAASA,QAAA,QAAgB;AAIzB,SAASC,YAAYC,IAAA,EAAgD;EACnE,IAAI;IACF,IAAIC,OAAA,CAAQC,QAAA,KAAa,SAAS;MAEhC,MAAMC,MAAA,GAASL,QAAA,CAAS,2BAA2BE,IAAI,IAAI;QACzDI,QAAA,EAAU;QACVC,KAAA,EAAO,CAAC,QAAQ,QAAQ,QAAQ;MAClC,CAAC,EAAEC,IAAA,CAAK;MAER,IAAI,CAACH,MAAA,EAAQ,OAAO;QAAEI,KAAA,EAAO;MAAM;MAGnC,MAAMC,KAAA,GAAQL,MAAA,CAAOM,KAAA,CAAM;AAAA,CAAI;MAC/B,WAAWC,IAAA,IAAQF,KAAA,EAAO;QACxB,MAAMG,KAAA,GAAQD,IAAA,CAAKJ,IAAA,CAAK,EAAEG,KAAA,CAAM,KAAK;QAErC,IAAIE,KAAA,CAAM,CAAC,GAAGC,QAAA,CAAS,IAAIZ,IAAI,EAAE,KAAKW,KAAA,CAAM,CAAC,MAAM,aAAa;UAC9D,MAAME,GAAA,GAAMC,MAAA,CAAOC,QAAA,CAASJ,KAAA,CAAM,CAAC,KAAK,IAAI,EAAE;UAC9C,OAAO;YAAEJ,KAAA,EAAO;YAAMM,GAAA,EAAKC,MAAA,CAAOE,KAAA,CAAMH,GAAG,IAAI,SAAYA;UAAI;QACjE;MACF;MACA,OAAO;QAAEN,KAAA,EAAO;MAAM;IACxB,OAAO;MAEL,MAAMJ,MAAA,GAASL,QAAA,CAAS,YAAYE,IAAI,OAAO;UAC7CI,QAAA,EAAU;UACVC,KAAA,EAAO,CAAC,QAAQ,QAAQ,QAAQ;QAClC,CAAC,EAAEC,IAAA,CAAK;QAEFO,GAAA,GAAMV,MAAA,GAASW,MAAA,CAAOC,QAAA,CAASZ,MAAA,CAAOM,KAAA,CAAM;AAAA,CAAI,EAAE,CAAC,KAAK,IAAI,EAAE,IAAI;MAExE,OAAO;QAAEF,KAAA,EAAO,CAAC,CAACJ,MAAA;QAAQU,GAAA,EAAKC,MAAA,CAAOE,KAAA,CAAMH,GAAG,IAAI,SAAYA;MAAI;IACrE;EACF,QAAQ;IAEN,OAAO;MAAEN,KAAA,EAAO;IAAM;EACxB;AACF;AAEO,MAAMU,aAAA,GAAgB;EAC3BC,QAAA,EAAU;EACVC,IAAA,EAAM;EACNC,GAAA,EAAK;EACLC,KAAA,EAAO;EACPC,YAAA,EAAc;AAChB;AAEO,SAASC,UAAUvB,IAAA,EAAcwB,IAAA,EAAyB;EAC/D,MAAM;IAAEjB,KAAA;IAAOM;EAAI,IAAId,WAAA,CAAYC,IAAI;EACvC,OAAO;IAAEA,IAAA;IAAMwB,IAAA;IAAMjB,KAAA;IAAOM;EAAI;AAClC;AAEO,SAASY,cAAA,EAA6B;EAC3C,OAAO,CACLF,SAAA,CAAUN,aAAA,CAAcC,QAAA,EAAU,YAAY,GAC9CK,SAAA,CAAUN,aAAA,CAAcE,IAAA,EAAM,WAAW,GACzCI,SAAA,CAAUN,aAAA,CAAcG,GAAA,EAAK,YAAY,GACzCG,SAAA,CAAUN,aAAA,CAAcI,KAAA,EAAO,YAAY,GAC3CE,SAAA,CAAUN,aAAA,CAAcK,YAAA,EAAc,eAAe,EACvD;AACF;AAEO,SAASI,iBAAiBC,MAAA,EAA8B;EAC7D,OAAOA,MAAA,CAAOC,IAAA,CAAMC,CAAA,IAAMA,CAAA,CAAEtB,KAAK;AACnC;AAEO,SAASuB,oBAAoBH,MAAA,EAAkC;EACpE,OAAOA,MAAA,CAAOI,MAAA,CAAQF,CAAA,IAAMA,CAAA,CAAEtB,KAAK;AACrC","ignoreList":[]}
@@ -0,0 +1,93 @@
1
+ import { execSync } from "child_process";
2
+ function isPortInUse(port) {
3
+ try {
4
+ if (process.platform === "win32") {
5
+ var output = execSync(`netstat -ano | findstr :${port}`, {
6
+ encoding: "utf-8",
7
+ stdio: ["pipe", "pipe", "ignore"]
8
+ }).trim();
9
+ if (!output) return {
10
+ inUse: !1
11
+ };
12
+ var lines = output.split(`
13
+ `),
14
+ _iteratorNormalCompletion = !0,
15
+ _didIteratorError = !1,
16
+ _iteratorError = void 0;
17
+ try {
18
+ for (var _iterator = lines[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
19
+ var line = _step.value,
20
+ _parts_,
21
+ parts = line.trim().split(/\s+/);
22
+ if (!((_parts_ = parts[1]) === null || _parts_ === void 0) && _parts_.includes(`:${port}`) && parts[3] === "LISTENING") {
23
+ var pid = Number.parseInt(parts[4] || "", 10);
24
+ return {
25
+ inUse: !0,
26
+ pid: Number.isNaN(pid) ? void 0 : pid
27
+ };
28
+ }
29
+ }
30
+ } catch (err) {
31
+ _didIteratorError = !0, _iteratorError = err;
32
+ } finally {
33
+ try {
34
+ !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
35
+ } finally {
36
+ if (_didIteratorError) throw _iteratorError;
37
+ }
38
+ }
39
+ return {
40
+ inUse: !1
41
+ };
42
+ } else {
43
+ var output1 = execSync(`lsof -i :${port} -t`, {
44
+ encoding: "utf-8",
45
+ stdio: ["pipe", "pipe", "ignore"]
46
+ }).trim(),
47
+ pid1 = output1 ? Number.parseInt(output1.split(`
48
+ `)[0] || "", 10) : void 0;
49
+ return {
50
+ inUse: !!output1,
51
+ pid: Number.isNaN(pid1) ? void 0 : pid1
52
+ };
53
+ }
54
+ } catch {
55
+ return {
56
+ inUse: !1
57
+ };
58
+ }
59
+ }
60
+ var TAKEOUT_PORTS = {
61
+ postgres: 5432,
62
+ zero: 4848,
63
+ web: 8081,
64
+ minio: 9090,
65
+ minioConsole: 9091
66
+ };
67
+ function checkPort(port, name) {
68
+ var {
69
+ inUse,
70
+ pid
71
+ } = isPortInUse(port);
72
+ return {
73
+ port,
74
+ name,
75
+ inUse,
76
+ pid
77
+ };
78
+ }
79
+ function checkAllPorts() {
80
+ return [checkPort(TAKEOUT_PORTS.postgres, "PostgreSQL"), checkPort(TAKEOUT_PORTS.zero, "Zero Sync"), checkPort(TAKEOUT_PORTS.web, "Web Server"), checkPort(TAKEOUT_PORTS.minio, "MinIO (S3)"), checkPort(TAKEOUT_PORTS.minioConsole, "MinIO Console")];
81
+ }
82
+ function hasPortConflicts(checks) {
83
+ return checks.some(function (c) {
84
+ return c.inUse;
85
+ });
86
+ }
87
+ function getConflictingPorts(checks) {
88
+ return checks.filter(function (c) {
89
+ return c.inUse;
90
+ });
91
+ }
92
+ export { TAKEOUT_PORTS, checkAllPorts, checkPort, getConflictingPorts, hasPortConflicts };
93
+ //# sourceMappingURL=ports.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["execSync","isPortInUse","port","process","platform","output","encoding","stdio","trim","inUse","lines","split","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","line","value","_parts_","parts","includes","pid","Number","parseInt","isNaN","err","return","output1","pid1"],"sources":["../../../src/utils/ports.ts"],"sourcesContent":[null],"mappings":"AAIA,SAASA,QAAA,QAAgB;AAIzB,SAASC,YAAYC,IAAA,EAAgD;EACnE,IAAI;IACF,IAAIC,OAAA,CAAQC,QAAA,KAAa,SAAS;MAEhC,IAAAC,MAAM,GAAAL,QAAS,4BAASE,IAA2B,EAAI;QACrDI,QAAA,EAAU;QACVC,KAAA,EAAO,CACN,MAAK,EAEJ,MAAC,EAGL,QAAM;MACN,GAAAC,IAAA;MACE,KAAAH,MAAM,SAAQ;QAEdI,KAAI;MACF;MACA,IAAAC,KAAA,GAAOL,MAAE,CAAAM,KAAa;AAAyC;QAAAC,yBACjE;QAAAC,iBAAA;QAAAC,cAAA;MACF;QACA,KAAO,IAAEC,SAAa,GAAAL,KAAA,CAAAM,MAAA,CAAAC,QAAA,KAAAC,KAAA,IAAAN,yBAAA,IAAAM,KAAA,GAAAH,SAAA,CAAAI,IAAA,IAAAC,IAAA,GAAAR,yBAAA;UACxB,IAAOS,IAAA,GAAAH,KAAA,CAAAI,KAAA;YAAAC,OAAA;YAAAC,KAAA,GAAAH,IAAA,CAAAb,IAAA,GAAAG,KAAA;UAEL,IAAM,GAAAY,OAAS,GAAAC,KAAS,aAAY,IAAID,OAAO,gBAAAA,OAAA,CAAAE,QAAA,KAAAvB,IAAA,OAAAsB,KAAA;YAC7C,IAAAE,GAAU,GAAAC,MAAA,CAAAC,QAAA,CAAAJ,KAAA;YACV,OAAQ;cACFf,KAEF,IAAM;cAAsDiB,GAAE,EAAIC,MAAA,CAAAE,KAAA,CAAAH,GAAA,aAAAA;YAExE,CAAO;UACT;QACF;MAEE,SAASI,GAAA,EAAO;QAClBjB,iBAAA,OAAAC,cAAA,GAAAgB,GAAA;MACF;QAEa;UACX,CAAAlB,yBAAU,IAAAG,SAAA,CAAAgB,MAAA,YAAAhB,SAAA,CAAAgB,MAAA;QACJ;UACD,IAAAlB,iBAAA,EACE,MAAAC,cAAA;QACP;MACF;MAEO,OAAS;QACRL,KAAE;MACR;IACF;MAEO,IAASuB,OAAA,GAAAhC,QAA6B,aAAAE,IAAA;UAC3CI,QAAO;UACLC,KAAA,EAAU,CACV,MAAU,EACV,MAAU,EACV,QAAU;QAEZ,GAAAC,IAAA;QAAAyB,IAAA,GAAAD,OAAA,GAAAL,MAAA,CAAAC,QAAA,CAAAI,OAAA,CAAArB,KAAA;AACF;MAEO,OAAS;QACdF,KAAO,GAAO,CAAAuB,OAAM;QACtBN,GAAA,EAAAC,MAAA,CAAAE,KAAA,CAAAI,IAAA,aAAAA;MAEO;IACL;EACF","ignoreList":[]}
@@ -0,0 +1,91 @@
1
+ import { execSync } from "node:child_process";
2
+ function execCommand(command) {
3
+ try {
4
+ return execSync(command, {
5
+ encoding: "utf-8",
6
+ stdio: ["pipe", "pipe", "ignore"]
7
+ }).trim();
8
+ } catch {
9
+ return null;
10
+ }
11
+ }
12
+ function getVersion(command) {
13
+ const output = execCommand(command);
14
+ if (!output) return null;
15
+ const match = output.match(/\d+\.\d+\.\d+/);
16
+ return match ? match[0] : output;
17
+ }
18
+ function compareVersions(current, required) {
19
+ const parseCurrent = current.replace(/^v/, "").split(".").map(Number), parseRequired = required.replace(/^v/, "").split(".").map(Number);
20
+ for (let i = 0; i < 3; i++) {
21
+ const curr = parseCurrent[i] || 0, req = parseRequired[i] || 0;
22
+ if (curr > req) return !0;
23
+ if (curr < req) return !1;
24
+ }
25
+ return !0;
26
+ }
27
+ function checkBun() {
28
+ const version = getVersion("bun --version") ?? void 0, requiredVersion = "1.0.0", hasBunv = !!execCommand("bunv --version");
29
+ let message = version ? compareVersions(version, requiredVersion) ? `Bun ${version} installed` : `Bun ${version} installed (${requiredVersion}+ recommended)` : "Bun not found";
30
+ return version && !hasBunv && (message += " (consider installing bunv for auto version switching)"), {
31
+ name: "Bun",
32
+ required: !0,
33
+ installed: !!version,
34
+ version,
35
+ requiredVersion,
36
+ message,
37
+ installUrl: "https://bun.sh",
38
+ recommendation: hasBunv ? void 0 : "Install bunv to automatically switch bun versions: https://github.com/aklinker1/bunv"
39
+ };
40
+ }
41
+ function checkNode() {
42
+ const version = getVersion("node --version") ?? void 0, requiredVersion = "20.0.0", hasFnm = !!execCommand("fnm --version");
43
+ let message = version ? compareVersions(version, requiredVersion) ? `Node.js ${version} installed` : `Node.js ${version} installed (${requiredVersion}+ recommended)` : "Node.js not found (optional)";
44
+ return version && !hasFnm && (message += " (consider installing fnm for auto version switching)"), {
45
+ name: "Node.js",
46
+ required: !1,
47
+ installed: !!version,
48
+ version,
49
+ requiredVersion,
50
+ message,
51
+ installUrl: "https://nodejs.org",
52
+ recommendation: hasFnm ? void 0 : "Install fnm to automatically switch node versions: https://github.com/Schniz/fnm"
53
+ };
54
+ }
55
+ function checkDocker() {
56
+ const version = getVersion("docker --version") ?? void 0, isRunning = !!execCommand("docker ps");
57
+ return {
58
+ name: "Docker",
59
+ required: !0,
60
+ installed: !!version,
61
+ version,
62
+ message: version ? isRunning ? `Docker ${version} running` : "Docker installed but not running" : "Docker not found",
63
+ installUrl: "https://docs.docker.com/get-docker/"
64
+ };
65
+ }
66
+ function checkGit() {
67
+ const version = getVersion("git --version") ?? void 0;
68
+ return {
69
+ name: "Git",
70
+ required: !0,
71
+ installed: !!version,
72
+ version,
73
+ message: version ? `Git ${version} installed` : "Git not found",
74
+ installUrl: "https://git-scm.com"
75
+ };
76
+ }
77
+ function checkAllPrerequisites() {
78
+ return [checkBun(), checkNode(), checkDocker(), checkGit()];
79
+ }
80
+ function hasRequiredPrerequisites(checks) {
81
+ return checks.filter((c) => c.required).every((c) => c.installed);
82
+ }
83
+ export {
84
+ checkAllPrerequisites,
85
+ checkBun,
86
+ checkDocker,
87
+ checkGit,
88
+ checkNode,
89
+ hasRequiredPrerequisites
90
+ };
91
+ //# sourceMappingURL=prerequisites.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/utils/prerequisites.ts"],
4
+ "mappings": "AAIA,SAAS,gBAAgB;AAIzB,SAAS,YAAY,SAAgC;AACnD,MAAI;AACF,WAAO,SAAS,SAAS;AAAA,MACvB,UAAU;AAAA,MACV,OAAO,CAAC,QAAQ,QAAQ,QAAQ;AAAA,IAClC,CAAC,EAAE,KAAK;AAAA,EACV,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,WAAW,SAAgC;AAClD,QAAM,SAAS,YAAY,OAAO;AAClC,MAAI,CAAC,OAAQ,QAAO;AAGpB,QAAM,QAAQ,OAAO,MAAM,eAAe;AAC1C,SAAO,QAAQ,MAAM,CAAC,IAAI;AAC5B;AAEA,SAAS,gBAAgB,SAAiB,UAA2B;AACnE,QAAM,eAAe,QAAQ,QAAQ,MAAM,EAAE,EAAE,MAAM,GAAG,EAAE,IAAI,MAAM,GAC9D,gBAAgB,SAAS,QAAQ,MAAM,EAAE,EAAE,MAAM,GAAG,EAAE,IAAI,MAAM;AAEtE,WAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,UAAM,OAAO,aAAa,CAAC,KAAK,GAC1B,MAAM,cAAc,CAAC,KAAK;AAChC,QAAI,OAAO,IAAK,QAAO;AACvB,QAAI,OAAO,IAAK,QAAO;AAAA,EACzB;AACA,SAAO;AACT;AAEO,SAAS,WAA8B;AAC5C,QAAM,UAAU,WAAW,eAAe,KAAK,QACzC,kBAAkB,SAClB,UAAU,CAAC,CAAC,YAAY,gBAAgB;AAE9C,MAAI,UAAU,UACV,gBAAgB,SAAS,eAAe,IACtC,OAAO,OAAO,eACd,OAAO,OAAO,eAAe,eAAe,mBAC9C;AAEJ,SAAI,WAAW,CAAC,YACd,WAAW,2DAGN;AAAA,IACL,MAAM;AAAA,IACN,UAAU;AAAA,IACV,WAAW,CAAC,CAAC;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,gBAAiB,UAEb,SADA;AAAA,EAEN;AACF;AAEO,SAAS,YAA+B;AAC7C,QAAM,UAAU,WAAW,gBAAgB,KAAK,QAC1C,kBAAkB,UAClB,SAAS,CAAC,CAAC,YAAY,eAAe;AAE5C,MAAI,UAAU,UACV,gBAAgB,SAAS,eAAe,IACtC,WAAW,OAAO,eAClB,WAAW,OAAO,eAAe,eAAe,mBAClD;AAEJ,SAAI,WAAW,CAAC,WACd,WAAW,0DAGN;AAAA,IACL,MAAM;AAAA,IACN,UAAU;AAAA,IACV,WAAW,CAAC,CAAC;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,gBAAiB,SAEb,SADA;AAAA,EAEN;AACF;AAEO,SAAS,cAAiC;AAC/C,QAAM,UAAU,WAAW,kBAAkB,KAAK,QAC5C,YAAY,CAAC,CAAC,YAAY,WAAW;AAE3C,SAAO;AAAA,IACL,MAAM;AAAA,IACN,UAAU;AAAA,IACV,WAAW,CAAC,CAAC;AAAA,IACb;AAAA,IACA,SAAU,UAEL,YAEC,UAAU,OAAO,aADjB,qCAFF;AAAA,IAIJ,YAAY;AAAA,EACd;AACF;AAEO,SAAS,WAA8B;AAC5C,QAAM,UAAU,WAAW,eAAe,KAAK;AAE/C,SAAO;AAAA,IACL,MAAM;AAAA,IACN,UAAU;AAAA,IACV,WAAW,CAAC,CAAC;AAAA,IACb;AAAA,IACA,SAAS,UAAU,OAAO,OAAO,eAAe;AAAA,IAChD,YAAY;AAAA,EACd;AACF;AAEO,SAAS,wBAA6C;AAC3D,SAAO,CAAC,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,SAAS,CAAC;AAC5D;AAEO,SAAS,yBAAyB,QAAsC;AAC7E,SAAO,OAAO,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS;AAClE;",
5
+ "names": []
6
+ }