@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.
- package/LICENSE +21 -0
- package/README.md +274 -0
- package/cli.mjs +3 -0
- package/dist/cjs/cli.cjs +71 -0
- package/dist/cjs/cli.js +70 -0
- package/dist/cjs/cli.js.map +6 -0
- package/dist/cjs/cli.native.js +79 -0
- package/dist/cjs/cli.native.js.map +6 -0
- package/dist/cjs/commands/changed.cjs +212 -0
- package/dist/cjs/commands/changed.js +214 -0
- package/dist/cjs/commands/changed.js.map +6 -0
- package/dist/cjs/commands/changed.native.js +289 -0
- package/dist/cjs/commands/changed.native.js.map +6 -0
- package/dist/cjs/commands/docs.cjs +388 -0
- package/dist/cjs/commands/docs.js +313 -0
- package/dist/cjs/commands/docs.js.map +6 -0
- package/dist/cjs/commands/docs.native.js +476 -0
- package/dist/cjs/commands/docs.native.js.map +6 -0
- package/dist/cjs/commands/env-setup.cjs +90 -0
- package/dist/cjs/commands/env-setup.js +78 -0
- package/dist/cjs/commands/env-setup.js.map +6 -0
- package/dist/cjs/commands/env-setup.native.js +85 -0
- package/dist/cjs/commands/env-setup.native.js.map +6 -0
- package/dist/cjs/commands/onboard.cjs +479 -0
- package/dist/cjs/commands/onboard.js +631 -0
- package/dist/cjs/commands/onboard.js.map +6 -0
- package/dist/cjs/commands/onboard.native.js +608 -0
- package/dist/cjs/commands/onboard.native.js.map +6 -0
- package/dist/cjs/commands/run.cjs +148 -0
- package/dist/cjs/commands/run.js +116 -0
- package/dist/cjs/commands/run.js.map +6 -0
- package/dist/cjs/commands/run.native.js +140 -0
- package/dist/cjs/commands/run.native.js.map +6 -0
- package/dist/cjs/commands/script.cjs +379 -0
- package/dist/cjs/commands/script.js +339 -0
- package/dist/cjs/commands/script.js.map +6 -0
- package/dist/cjs/commands/script.native.js +449 -0
- package/dist/cjs/commands/script.native.js.map +6 -0
- package/dist/cjs/commands/sync.cjs +190 -0
- package/dist/cjs/commands/sync.js +168 -0
- package/dist/cjs/commands/sync.js.map +6 -0
- package/dist/cjs/commands/sync.native.js +211 -0
- package/dist/cjs/commands/sync.native.js.map +6 -0
- package/dist/cjs/constants/ascii.cjs +36 -0
- package/dist/cjs/constants/ascii.js +30 -0
- package/dist/cjs/constants/ascii.js.map +6 -0
- package/dist/cjs/constants/ascii.native.js +36 -0
- package/dist/cjs/constants/ascii.native.js.map +6 -0
- package/dist/cjs/index.cjs +64 -0
- package/dist/cjs/index.js +55 -0
- package/dist/cjs/index.js.map +6 -0
- package/dist/cjs/index.native.js +94 -0
- package/dist/cjs/index.native.js.map +6 -0
- package/dist/cjs/types.cjs +16 -0
- package/dist/cjs/types.js +14 -0
- package/dist/cjs/types.js.map +6 -0
- package/dist/cjs/types.native.js +15 -0
- package/dist/cjs/types.native.js.map +6 -0
- package/dist/cjs/utils/env-categories.cjs +272 -0
- package/dist/cjs/utils/env-categories.js +296 -0
- package/dist/cjs/utils/env-categories.js.map +6 -0
- package/dist/cjs/utils/env-categories.native.js +317 -0
- package/dist/cjs/utils/env-categories.native.js.map +6 -0
- package/dist/cjs/utils/env-setup.cjs +181 -0
- package/dist/cjs/utils/env-setup.js +190 -0
- package/dist/cjs/utils/env-setup.js.map +6 -0
- package/dist/cjs/utils/env-setup.native.js +264 -0
- package/dist/cjs/utils/env-setup.native.js.map +6 -0
- package/dist/cjs/utils/env.cjs +118 -0
- package/dist/cjs/utils/env.js +97 -0
- package/dist/cjs/utils/env.js.map +6 -0
- package/dist/cjs/utils/env.native.js +128 -0
- package/dist/cjs/utils/env.native.js.map +6 -0
- package/dist/cjs/utils/files.cjs +215 -0
- package/dist/cjs/utils/files.js +164 -0
- package/dist/cjs/utils/files.js.map +6 -0
- package/dist/cjs/utils/files.native.js +266 -0
- package/dist/cjs/utils/files.native.js.map +6 -0
- package/dist/cjs/utils/parallel-runner.cjs +99 -0
- package/dist/cjs/utils/parallel-runner.js +84 -0
- package/dist/cjs/utils/parallel-runner.js.map +6 -0
- package/dist/cjs/utils/parallel-runner.native.js +123 -0
- package/dist/cjs/utils/parallel-runner.native.js.map +6 -0
- package/dist/cjs/utils/ports.cjs +101 -0
- package/dist/cjs/utils/ports.js +81 -0
- package/dist/cjs/utils/ports.js.map +6 -0
- package/dist/cjs/utils/ports.native.js +130 -0
- package/dist/cjs/utils/ports.native.js.map +6 -0
- package/dist/cjs/utils/prerequisites.cjs +119 -0
- package/dist/cjs/utils/prerequisites.js +107 -0
- package/dist/cjs/utils/prerequisites.js.map +6 -0
- package/dist/cjs/utils/prerequisites.native.js +127 -0
- package/dist/cjs/utils/prerequisites.native.js.map +6 -0
- package/dist/cjs/utils/prompts.cjs +161 -0
- package/dist/cjs/utils/prompts.js +162 -0
- package/dist/cjs/utils/prompts.js.map +6 -0
- package/dist/cjs/utils/prompts.native.js +179 -0
- package/dist/cjs/utils/prompts.native.js.map +6 -0
- package/dist/cjs/utils/script-listing.cjs +113 -0
- package/dist/cjs/utils/script-listing.js +108 -0
- package/dist/cjs/utils/script-listing.js.map +6 -0
- package/dist/cjs/utils/script-listing.native.js +174 -0
- package/dist/cjs/utils/script-listing.native.js.map +6 -0
- package/dist/cjs/utils/sync.cjs +85 -0
- package/dist/cjs/utils/sync.js +70 -0
- package/dist/cjs/utils/sync.js.map +6 -0
- package/dist/cjs/utils/sync.native.js +84 -0
- package/dist/cjs/utils/sync.native.js.map +6 -0
- package/dist/cjs/utils/welcome.cjs +50 -0
- package/dist/cjs/utils/welcome.js +42 -0
- package/dist/cjs/utils/welcome.js.map +6 -0
- package/dist/cjs/utils/welcome.native.js +47 -0
- package/dist/cjs/utils/welcome.native.js.map +6 -0
- package/dist/esm/cli.js +79 -0
- package/dist/esm/cli.js.map +6 -0
- package/dist/esm/cli.mjs +71 -0
- package/dist/esm/cli.mjs.map +1 -0
- package/dist/esm/cli.native.js +69 -0
- package/dist/esm/cli.native.js.map +1 -0
- package/dist/esm/commands/changed.js +194 -0
- package/dist/esm/commands/changed.js.map +6 -0
- package/dist/esm/commands/changed.mjs +178 -0
- package/dist/esm/commands/changed.mjs.map +1 -0
- package/dist/esm/commands/changed.native.js +273 -0
- package/dist/esm/commands/changed.native.js.map +1 -0
- package/dist/esm/commands/docs.js +306 -0
- package/dist/esm/commands/docs.js.map +6 -0
- package/dist/esm/commands/docs.mjs +353 -0
- package/dist/esm/commands/docs.mjs.map +1 -0
- package/dist/esm/commands/docs.native.js +516 -0
- package/dist/esm/commands/docs.native.js.map +1 -0
- package/dist/esm/commands/env-setup.js +56 -0
- package/dist/esm/commands/env-setup.js.map +6 -0
- package/dist/esm/commands/env-setup.mjs +56 -0
- package/dist/esm/commands/env-setup.mjs.map +1 -0
- package/dist/esm/commands/env-setup.native.js +59 -0
- package/dist/esm/commands/env-setup.native.js.map +1 -0
- package/dist/esm/commands/onboard.js +645 -0
- package/dist/esm/commands/onboard.js.map +6 -0
- package/dist/esm/commands/onboard.mjs +445 -0
- package/dist/esm/commands/onboard.mjs.map +1 -0
- package/dist/esm/commands/onboard.native.js +584 -0
- package/dist/esm/commands/onboard.native.js.map +1 -0
- package/dist/esm/commands/run.js +95 -0
- package/dist/esm/commands/run.js.map +6 -0
- package/dist/esm/commands/run.mjs +114 -0
- package/dist/esm/commands/run.mjs.map +1 -0
- package/dist/esm/commands/run.native.js +133 -0
- package/dist/esm/commands/run.native.js.map +1 -0
- package/dist/esm/commands/script.js +338 -0
- package/dist/esm/commands/script.js.map +6 -0
- package/dist/esm/commands/script.mjs +336 -0
- package/dist/esm/commands/script.mjs.map +1 -0
- package/dist/esm/commands/script.native.js +445 -0
- package/dist/esm/commands/script.native.js.map +1 -0
- package/dist/esm/commands/sync.js +158 -0
- package/dist/esm/commands/sync.js.map +6 -0
- package/dist/esm/commands/sync.mjs +155 -0
- package/dist/esm/commands/sync.mjs.map +1 -0
- package/dist/esm/commands/sync.native.js +173 -0
- package/dist/esm/commands/sync.native.js.map +1 -0
- package/dist/esm/constants/ascii.js +14 -0
- package/dist/esm/constants/ascii.js.map +6 -0
- package/dist/esm/constants/ascii.mjs +12 -0
- package/dist/esm/constants/ascii.mjs.map +1 -0
- package/dist/esm/constants/ascii.native.js +12 -0
- package/dist/esm/constants/ascii.native.js.map +1 -0
- package/dist/esm/index.js +83 -0
- package/dist/esm/index.js.map +6 -0
- package/dist/esm/index.mjs +7 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/index.native.js +7 -0
- package/dist/esm/index.native.js.map +1 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/types.js.map +6 -0
- package/dist/esm/types.mjs +2 -0
- package/dist/esm/types.mjs.map +1 -0
- package/dist/esm/types.native.js +2 -0
- package/dist/esm/types.native.js.map +1 -0
- package/dist/esm/utils/env-categories.js +272 -0
- package/dist/esm/utils/env-categories.js.map +6 -0
- package/dist/esm/utils/env-categories.mjs +233 -0
- package/dist/esm/utils/env-categories.mjs.map +1 -0
- package/dist/esm/utils/env-categories.native.js +246 -0
- package/dist/esm/utils/env-categories.native.js.map +1 -0
- package/dist/esm/utils/env-setup.js +173 -0
- package/dist/esm/utils/env-setup.js.map +6 -0
- package/dist/esm/utils/env-setup.mjs +146 -0
- package/dist/esm/utils/env-setup.mjs.map +1 -0
- package/dist/esm/utils/env-setup.native.js +243 -0
- package/dist/esm/utils/env-setup.native.js.map +1 -0
- package/dist/esm/utils/env.js +83 -0
- package/dist/esm/utils/env.js.map +6 -0
- package/dist/esm/utils/env.mjs +90 -0
- package/dist/esm/utils/env.mjs.map +1 -0
- package/dist/esm/utils/env.native.js +99 -0
- package/dist/esm/utils/env.native.js.map +1 -0
- package/dist/esm/utils/files.js +150 -0
- package/dist/esm/utils/files.js.map +6 -0
- package/dist/esm/utils/files.mjs +187 -0
- package/dist/esm/utils/files.mjs.map +1 -0
- package/dist/esm/utils/files.native.js +247 -0
- package/dist/esm/utils/files.native.js.map +1 -0
- package/dist/esm/utils/parallel-runner.js +69 -0
- package/dist/esm/utils/parallel-runner.js.map +6 -0
- package/dist/esm/utils/parallel-runner.mjs +76 -0
- package/dist/esm/utils/parallel-runner.mjs.map +1 -0
- package/dist/esm/utils/parallel-runner.native.js +109 -0
- package/dist/esm/utils/parallel-runner.native.js.map +1 -0
- package/dist/esm/utils/ports.js +65 -0
- package/dist/esm/utils/ports.js.map +6 -0
- package/dist/esm/utils/ports.mjs +74 -0
- package/dist/esm/utils/ports.mjs.map +1 -0
- package/dist/esm/utils/ports.native.js +93 -0
- package/dist/esm/utils/ports.native.js.map +1 -0
- package/dist/esm/utils/prerequisites.js +91 -0
- package/dist/esm/utils/prerequisites.js.map +6 -0
- package/dist/esm/utils/prerequisites.mjs +91 -0
- package/dist/esm/utils/prerequisites.mjs.map +1 -0
- package/dist/esm/utils/prerequisites.native.js +97 -0
- package/dist/esm/utils/prerequisites.native.js.map +1 -0
- package/dist/esm/utils/prompts.js +139 -0
- package/dist/esm/utils/prompts.js.map +6 -0
- package/dist/esm/utils/prompts.mjs +112 -0
- package/dist/esm/utils/prompts.mjs.map +1 -0
- package/dist/esm/utils/prompts.native.js +115 -0
- package/dist/esm/utils/prompts.native.js.map +1 -0
- package/dist/esm/utils/script-listing.js +91 -0
- package/dist/esm/utils/script-listing.js.map +6 -0
- package/dist/esm/utils/script-listing.mjs +76 -0
- package/dist/esm/utils/script-listing.mjs.map +1 -0
- package/dist/esm/utils/script-listing.native.js +151 -0
- package/dist/esm/utils/script-listing.native.js.map +1 -0
- package/dist/esm/utils/sync.js +50 -0
- package/dist/esm/utils/sync.js.map +6 -0
- package/dist/esm/utils/sync.mjs +48 -0
- package/dist/esm/utils/sync.mjs.map +1 -0
- package/dist/esm/utils/sync.native.js +53 -0
- package/dist/esm/utils/sync.native.js.map +1 -0
- package/dist/esm/utils/welcome.js +21 -0
- package/dist/esm/utils/welcome.js.map +6 -0
- package/dist/esm/utils/welcome.mjs +15 -0
- package/dist/esm/utils/welcome.mjs.map +1 -0
- package/dist/esm/utils/welcome.native.js +18 -0
- package/dist/esm/utils/welcome.native.js.map +1 -0
- package/docs/aggregates.md +579 -0
- package/docs/cloudflare-dev-tunnel.md +41 -0
- package/docs/database.md +203 -0
- package/docs/docs.md +8 -0
- package/docs/emitters.md +562 -0
- package/docs/hot-updater.md +223 -0
- package/docs/native-hot-update.md +252 -0
- package/docs/one-components.md +234 -0
- package/docs/one-hooks.md +570 -0
- package/docs/one-routes.md +660 -0
- package/docs/package-json.md +115 -0
- package/docs/react-native-navigation-flow.md +184 -0
- package/docs/scripts.md +147 -0
- package/docs/sync-prompt.md +208 -0
- package/docs/tamagui.md +478 -0
- package/docs/testing-integration.md +564 -0
- package/docs/triggers.md +450 -0
- package/docs/zero.md +719 -0
- package/package.json +76 -0
- package/scripts/seed.ts +209 -0
- package/src/cli.ts +147 -0
- package/src/commands/changed.ts +313 -0
- package/src/commands/docs.ts +582 -0
- package/src/commands/env-setup.ts +69 -0
- package/src/commands/onboard.ts +1391 -0
- package/src/commands/run.ts +173 -0
- package/src/commands/script.ts +587 -0
- package/src/commands/sync.ts +305 -0
- package/src/constants/ascii.ts +17 -0
- package/src/index.ts +63 -0
- package/src/types.ts +59 -0
- package/src/utils/env-categories.ts +245 -0
- package/src/utils/env-setup.ts +338 -0
- package/src/utils/env.ts +127 -0
- package/src/utils/files.ts +302 -0
- package/src/utils/parallel-runner.ts +129 -0
- package/src/utils/ports.ts +77 -0
- package/src/utils/prerequisites.ts +137 -0
- package/src/utils/prompts.ts +197 -0
- package/src/utils/script-listing.ts +214 -0
- package/src/utils/sync.ts +101 -0
- package/src/withOpSqliteStatic.cjs +51 -0
- package/types/cli.d.ts +7 -0
- package/types/cli.d.ts.map +1 -0
- package/types/commands/changed.d.ts +14 -0
- package/types/commands/changed.d.ts.map +1 -0
- package/types/commands/docs.d.ts +5 -0
- package/types/commands/docs.d.ts.map +1 -0
- package/types/commands/env-setup.d.ts +25 -0
- package/types/commands/env-setup.d.ts.map +1 -0
- package/types/commands/onboard.d.ts +16 -0
- package/types/commands/onboard.d.ts.map +1 -0
- package/types/commands/run.d.ts +8 -0
- package/types/commands/run.d.ts.map +1 -0
- package/types/commands/script.d.ts +28 -0
- package/types/commands/script.d.ts.map +1 -0
- package/types/commands/sync.d.ts +5 -0
- package/types/commands/sync.d.ts.map +1 -0
- package/types/constants/ascii.d.ts +6 -0
- package/types/constants/ascii.d.ts.map +1 -0
- package/types/index.d.ts +12 -0
- package/types/index.d.ts.map +1 -0
- package/types/types.d.ts +54 -0
- package/types/types.d.ts.map +1 -0
- package/types/utils/env-categories.d.ts +8 -0
- package/types/utils/env-categories.d.ts.map +1 -0
- package/types/utils/env-setup.d.ts +10 -0
- package/types/utils/env-setup.d.ts.map +1 -0
- package/types/utils/env.d.ts +19 -0
- package/types/utils/env.d.ts.map +1 -0
- package/types/utils/files.d.ts +47 -0
- package/types/utils/files.d.ts.map +1 -0
- package/types/utils/parallel-runner.d.ts +15 -0
- package/types/utils/parallel-runner.d.ts.map +1 -0
- package/types/utils/ports.d.ts +16 -0
- package/types/utils/ports.d.ts.map +1 -0
- package/types/utils/prerequisites.d.ts +11 -0
- package/types/utils/prerequisites.d.ts.map +1 -0
- package/types/utils/prompts.d.ts +30 -0
- package/types/utils/prompts.d.ts.map +1 -0
- package/types/utils/script-listing.d.ts +7 -0
- package/types/utils/script-listing.d.ts.map +1 -0
- package/types/utils/sync.d.ts +16 -0
- package/types/utils/sync.d.ts.map +1 -0
- package/types/utils/welcome.d.ts +6 -0
- 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": "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",
|
|
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
|
+
}
|