@take-out/cli 0.2.9 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/dist/cjs/cli.cjs +0 -0
  2. package/dist/esm/cli.mjs +0 -0
  3. package/dist/esm/index.js +1 -3
  4. package/dist/esm/index.js.map +1 -6
  5. package/package.json +7 -6
  6. package/src/commands/changed.ts +6 -6
  7. package/src/commands/onboard.ts +63 -63
  8. package/src/commands/run.ts +1 -1
  9. package/src/commands/script.ts +3 -3
  10. package/src/commands/skills.ts +6 -6
  11. package/src/commands/sync.ts +3 -3
  12. package/src/utils/env-setup.ts +8 -8
  13. package/src/utils/env.ts +3 -3
  14. package/src/utils/files.ts +6 -6
  15. package/src/utils/parallel-runner.ts +1 -1
  16. package/src/utils/prompts.ts +6 -6
  17. package/src/utils/script-listing.ts +5 -5
  18. package/src/utils/script-utils.ts +1 -1
  19. package/src/utils/sync.ts +1 -1
  20. package/src/withExpoModulesCoreSwift6Fix.cjs +58 -0
  21. package/dist/cjs/cli.js +0 -123
  22. package/dist/cjs/cli.js.map +0 -6
  23. package/dist/cjs/commands/changed.js +0 -214
  24. package/dist/cjs/commands/changed.js.map +0 -6
  25. package/dist/cjs/commands/docs.js +0 -174
  26. package/dist/cjs/commands/docs.js.map +0 -6
  27. package/dist/cjs/commands/env-setup.js +0 -78
  28. package/dist/cjs/commands/env-setup.js.map +0 -6
  29. package/dist/cjs/commands/onboard.js +0 -641
  30. package/dist/cjs/commands/onboard.js.map +0 -6
  31. package/dist/cjs/commands/run-all.js +0 -74
  32. package/dist/cjs/commands/run-all.js.map +0 -6
  33. package/dist/cjs/commands/run.js +0 -95
  34. package/dist/cjs/commands/run.js.map +0 -6
  35. package/dist/cjs/commands/script.js +0 -261
  36. package/dist/cjs/commands/script.js.map +0 -6
  37. package/dist/cjs/commands/skills.js +0 -168
  38. package/dist/cjs/commands/skills.js.map +0 -6
  39. package/dist/cjs/commands/sync.js +0 -187
  40. package/dist/cjs/commands/sync.js.map +0 -6
  41. package/dist/cjs/constants/ascii.js +0 -30
  42. package/dist/cjs/constants/ascii.js.map +0 -6
  43. package/dist/cjs/index.js +0 -21
  44. package/dist/cjs/index.js.map +0 -6
  45. package/dist/cjs/types.js +0 -14
  46. package/dist/cjs/types.js.map +0 -6
  47. package/dist/cjs/utils/env-categories.js +0 -296
  48. package/dist/cjs/utils/env-categories.js.map +0 -6
  49. package/dist/cjs/utils/env-setup.js +0 -190
  50. package/dist/cjs/utils/env-setup.js.map +0 -6
  51. package/dist/cjs/utils/env.js +0 -97
  52. package/dist/cjs/utils/env.js.map +0 -6
  53. package/dist/cjs/utils/files.js +0 -164
  54. package/dist/cjs/utils/files.js.map +0 -6
  55. package/dist/cjs/utils/parallel-runner.js +0 -113
  56. package/dist/cjs/utils/parallel-runner.js.map +0 -6
  57. package/dist/cjs/utils/ports.js +0 -81
  58. package/dist/cjs/utils/ports.js.map +0 -6
  59. package/dist/cjs/utils/prerequisites.js +0 -107
  60. package/dist/cjs/utils/prerequisites.js.map +0 -6
  61. package/dist/cjs/utils/prompts.js +0 -162
  62. package/dist/cjs/utils/prompts.js.map +0 -6
  63. package/dist/cjs/utils/script-listing.js +0 -97
  64. package/dist/cjs/utils/script-listing.js.map +0 -6
  65. package/dist/cjs/utils/script-utils.js +0 -82
  66. package/dist/cjs/utils/script-utils.js.map +0 -6
  67. package/dist/cjs/utils/sync.js +0 -70
  68. package/dist/cjs/utils/sync.js.map +0 -6
  69. package/dist/esm/cli.js +0 -106
  70. package/dist/esm/cli.js.map +0 -6
  71. package/dist/esm/commands/changed.js +0 -194
  72. package/dist/esm/commands/changed.js.map +0 -6
  73. package/dist/esm/commands/docs.js +0 -159
  74. package/dist/esm/commands/docs.js.map +0 -6
  75. package/dist/esm/commands/env-setup.js +0 -56
  76. package/dist/esm/commands/env-setup.js.map +0 -6
  77. package/dist/esm/commands/onboard.js +0 -655
  78. package/dist/esm/commands/onboard.js.map +0 -6
  79. package/dist/esm/commands/run-all.js +0 -53
  80. package/dist/esm/commands/run-all.js.map +0 -6
  81. package/dist/esm/commands/run.js +0 -74
  82. package/dist/esm/commands/run.js.map +0 -6
  83. package/dist/esm/commands/script.js +0 -255
  84. package/dist/esm/commands/script.js.map +0 -6
  85. package/dist/esm/commands/skills.js +0 -159
  86. package/dist/esm/commands/skills.js.map +0 -6
  87. package/dist/esm/commands/sync.js +0 -177
  88. package/dist/esm/commands/sync.js.map +0 -6
  89. package/dist/esm/constants/ascii.js +0 -14
  90. package/dist/esm/constants/ascii.js.map +0 -6
  91. package/dist/esm/types.js +0 -1
  92. package/dist/esm/types.js.map +0 -6
  93. package/dist/esm/utils/env-categories.js +0 -272
  94. package/dist/esm/utils/env-categories.js.map +0 -6
  95. package/dist/esm/utils/env-setup.js +0 -171
  96. package/dist/esm/utils/env-setup.js.map +0 -6
  97. package/dist/esm/utils/env.js +0 -83
  98. package/dist/esm/utils/env.js.map +0 -6
  99. package/dist/esm/utils/files.js +0 -150
  100. package/dist/esm/utils/files.js.map +0 -6
  101. package/dist/esm/utils/parallel-runner.js +0 -98
  102. package/dist/esm/utils/parallel-runner.js.map +0 -6
  103. package/dist/esm/utils/ports.js +0 -65
  104. package/dist/esm/utils/ports.js.map +0 -6
  105. package/dist/esm/utils/prerequisites.js +0 -91
  106. package/dist/esm/utils/prerequisites.js.map +0 -6
  107. package/dist/esm/utils/prompts.js +0 -139
  108. package/dist/esm/utils/prompts.js.map +0 -6
  109. package/dist/esm/utils/script-listing.js +0 -80
  110. package/dist/esm/utils/script-listing.js.map +0 -6
  111. package/dist/esm/utils/script-utils.js +0 -68
  112. package/dist/esm/utils/script-utils.js.map +0 -6
  113. package/dist/esm/utils/sync.js +0 -50
  114. package/dist/esm/utils/sync.js.map +0 -6
@@ -1,171 +0,0 @@
1
- import { writeFileSync } from "node:fs";
2
- import { resolve } from "node:path";
3
- import * as clack from "@clack/prompts";
4
- import pc from "picocolors";
5
- import { copyEnvFile, envFileExists, readEnvVariable, updateEnvVariable } from "./env";
6
- import { envCategories } from "./env-categories";
7
- async function setupProductionEnv(cwd, options = {}) {
8
- const envFile = options.envFile || ".env.production", fullPath = resolve(cwd, envFile), cleanup = () => {
9
- console.info(`
10
- ` + pc.yellow("Setup interrupted. You can resume anytime with:")), console.info(pc.cyan(" bun takeout env:setup")), console.info(
11
- pc.gray(`
12
- Note: All environment variables are optional for local development.`)
13
- ), process.exit(0);
14
- };
15
- process.on("SIGINT", cleanup), process.on("SIGTERM", cleanup);
16
- try {
17
- if (clack.intro(pc.bgCyan(pc.black(" Production Environment Setup "))), console.info(pc.gray("All environment variables are optional.")), console.info(pc.gray(`You can skip any section or re-run this setup anytime.
18
- `)), !envFileExists(cwd, envFile)) {
19
- const createFile = await clack.confirm({
20
- message: `${envFile} doesn't exist. Create it from example?`,
21
- initialValue: !0
22
- });
23
- if (clack.isCancel(createFile) || !createFile)
24
- return clack.cancel("Setup cancelled"), process.removeListener("SIGINT", cleanup), process.removeListener("SIGTERM", cleanup), !1;
25
- const exampleFile = ".env.production.example";
26
- envFileExists(cwd, exampleFile) ? (copyEnvFile(cwd, exampleFile, envFile), console.info(pc.green(`\u2713 Created ${envFile} from example
27
- `))) : (writeFileSync(fullPath, `# Production Environment Variables
28
- `), console.info(pc.green(`\u2713 Created empty ${envFile}
29
- `)));
30
- }
31
- let categoriesToSetup = options.onlyCategory ? envCategories.filter((cat) => cat.id === options.onlyCategory) : envCategories;
32
- if (categoriesToSetup.length === 0)
33
- return clack.cancel(`Category "${options.onlyCategory}" not found`), process.removeListener("SIGINT", cleanup), process.removeListener("SIGTERM", cleanup), !1;
34
- if (options.interactive !== !1 && !options.onlyCategory) {
35
- const setupProd = await clack.confirm({
36
- message: "Do you want to set up production environment variables?",
37
- initialValue: !1
38
- });
39
- if (clack.isCancel(setupProd) || !setupProd)
40
- return clack.note(
41
- `You can set up production environment later with:
42
- ${pc.cyan("bun takeout env:setup")}`,
43
- pc.yellow("Skipping production setup")
44
- ), process.removeListener("SIGINT", cleanup), process.removeListener("SIGTERM", cleanup), !0;
45
- }
46
- for (const category of categoriesToSetup)
47
- await setupCategory(category, envFile, cwd, options);
48
- const configuredVars = [], skippedVars = [];
49
- for (const category of categoriesToSetup)
50
- for (const variable of category.variables) {
51
- const value = readEnvVariable(cwd, variable.key, envFile);
52
- value && value !== "" && !value.includes("your-") ? configuredVars.push(variable.key) : variable.required && skippedVars.push(variable.key);
53
- }
54
- return configuredVars.length > 0 ? (clack.outro(pc.green("\u2713 Environment setup complete!")), console.info(
55
- pc.gray(`
56
- Configured ${configuredVars.length} variables in ${envFile}`)
57
- ), skippedVars.length > 0 && (console.info(
58
- pc.yellow(
59
- `
60
- Note: Some required variables were skipped. You'll need to configure these before deploying:`
61
- )
62
- ), skippedVars.forEach((v) => console.info(pc.gray(` - ${v}`)))), console.info(pc.cyan(`
63
- You can re-run this setup anytime with:`)), console.info(pc.gray(" bun takeout env:setup")), console.info(pc.cyan(`
64
- Or set up specific categories:`)), console.info(pc.gray(" bun takeout env:setup --category aws")), console.info(pc.gray(" bun takeout env:setup --category apple"))) : (clack.outro(pc.yellow("No variables configured")), console.info(pc.gray(`
65
- You can re-run this setup anytime with:`)), console.info(pc.gray(" bun takeout env:setup"))), process.removeListener("SIGINT", cleanup), process.removeListener("SIGTERM", cleanup), !0;
66
- } catch (error) {
67
- if (process.removeListener("SIGINT", cleanup), process.removeListener("SIGTERM", cleanup), error instanceof Error && error.message.includes("cancelled"))
68
- return !1;
69
- throw error;
70
- }
71
- }
72
- async function setupCategory(category, envFile, cwd, options) {
73
- const spinner = clack.spinner();
74
- let message = `Set up ${pc.bold(category.name)}?`;
75
- category.required || (message += pc.gray(" (optional)")), category.setupTime && (message += pc.yellow(` ${category.setupTime}`)), console.info("");
76
- const setupCategory2 = await clack.confirm({
77
- message,
78
- initialValue: category.required
79
- });
80
- if (clack.isCancel(setupCategory2) || !setupCategory2)
81
- return console.info(pc.gray(` Skipping ${category.name}`)), !1;
82
- console.info(pc.gray(`
83
- ${category.description}
84
- `));
85
- for (const variable of category.variables)
86
- await setupVariable(variable, envFile, cwd);
87
- return !0;
88
- }
89
- async function setupVariable(variable, envFile, cwd) {
90
- const existingValue = readEnvVariable(cwd, variable.key, envFile), hasValue = existingValue && existingValue !== "" && !existingValue.includes("your-");
91
- if (console.info(""), console.info(pc.bold(variable.label)), console.info(pc.gray(variable.description)), hasValue) {
92
- const update = await clack.confirm({
93
- message: `${pc.green("\u2713")} Already configured. Update?`,
94
- initialValue: !1
95
- });
96
- if (clack.isCancel(update) || !update)
97
- return;
98
- }
99
- console.info(""), console.info(pc.cyan("Instructions:")), variable.instructions.split(`
100
- `).forEach((line) => {
101
- console.info(pc.gray(` ${line}`));
102
- }), console.info("");
103
- let value;
104
- if (variable.generator) {
105
- const generate = await clack.confirm({
106
- message: `Generate ${variable.label} automatically?`,
107
- initialValue: !0
108
- });
109
- !clack.isCancel(generate) && generate && (value = variable.generator(), console.info(pc.green(`\u2713 Generated ${variable.label}`)));
110
- }
111
- if (!value)
112
- if (variable.type === "multiline")
113
- console.info(pc.gray("Paste content (press Enter twice when done):")), value = await readMultilineInput();
114
- else if (variable.type === "secret") {
115
- const result = await clack.password({
116
- message: `Enter ${variable.label}:`,
117
- mask: "*"
118
- });
119
- clack.isCancel(result) || (value = result);
120
- } else {
121
- const result = await clack.text({
122
- message: `Enter ${variable.label}:`,
123
- placeholder: variable.placeholder,
124
- defaultValue: variable.default,
125
- validate: (val) => {
126
- if (variable.required && !val)
127
- return "This field is required";
128
- }
129
- });
130
- clack.isCancel(result) || (value = result);
131
- }
132
- value && !clack.isCancel(value) ? (updateEnvVariable(cwd, variable.key, value, envFile), console.info(pc.green(`\u2713 Saved ${variable.key}`))) : variable.required ? console.info(pc.yellow(`\u26A0 Skipped required variable: ${variable.key}`)) : console.info(pc.gray(` Skipped ${variable.key}`));
133
- }
134
- async function readMultilineInput() {
135
- return new Promise((resolve2) => {
136
- const lines = [];
137
- let emptyLineCount = 0;
138
- const reader = process.stdin;
139
- reader.setEncoding("utf8");
140
- const onData = (chunk) => {
141
- const chunkLines = chunk.split(`
142
- `);
143
- for (const line of chunkLines)
144
- if (line === "") {
145
- if (emptyLineCount++, emptyLineCount >= 2) {
146
- reader.removeListener("data", onData), resolve2(lines.join(`
147
- `));
148
- return;
149
- }
150
- } else
151
- emptyLineCount === 1 && lines.push(""), emptyLineCount = 0, lines.push(line);
152
- };
153
- reader.on("data", onData);
154
- });
155
- }
156
- function listCategories() {
157
- console.info(pc.bold(`
158
- Available environment categories:
159
- `));
160
- for (const category of envCategories) {
161
- const status = category.required ? pc.red("required") : pc.gray("optional");
162
- console.info(` ${pc.cyan(category.id.padEnd(12))} - ${category.name} ${status}`), console.info(` ${pc.gray(category.description)}`), category.setupTime && console.info(` ${pc.yellow(category.setupTime)}`), console.info("");
163
- }
164
- console.info(pc.gray("Run setup for a specific category:")), console.info(pc.cyan(` bun takeout env:setup --category <id>
165
- `));
166
- }
167
- export {
168
- listCategories,
169
- setupProductionEnv
170
- };
171
- //# sourceMappingURL=env-setup.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/utils/env-setup.ts"],
4
- "mappings": "AAAA,SAAS,qBAAqB;AAC9B,SAAS,eAAe;AAExB,YAAY,WAAW;AACvB,OAAO,QAAQ;AAEf,SAAS,aAAa,eAAe,iBAAiB,yBAAyB;AAC/E,SAAS,qBAAqB;AAW9B,eAAsB,mBACpB,KACA,UAAwB,CAAC,GACP;AAClB,QAAM,UAAU,QAAQ,WAAW,mBAC7B,WAAW,QAAQ,KAAK,OAAO,GAG/B,UAAU,MAAM;AACpB,YAAQ,KAAK;AAAA,IAAO,GAAG,OAAO,iDAAiD,CAAC,GAChF,QAAQ,KAAK,GAAG,KAAK,yBAAyB,CAAC,GAC/C,QAAQ;AAAA,MACN,GAAG,KAAK;AAAA,oEAAuE;AAAA,IACjF,GACA,QAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,UAAQ,GAAG,UAAU,OAAO,GAC5B,QAAQ,GAAG,WAAW,OAAO;AAE7B,MAAI;AAOF,QANA,MAAM,MAAM,GAAG,OAAO,GAAG,MAAM,gCAAgC,CAAC,CAAC,GAEjE,QAAQ,KAAK,GAAG,KAAK,yCAAyC,CAAC,GAC/D,QAAQ,KAAK,GAAG,KAAK;AAAA,CAA0D,CAAC,GAG5E,CAAC,cAAc,KAAK,OAAO,GAAG;AAChC,YAAM,aAAa,MAAM,MAAM,QAAQ;AAAA,QACrC,SAAS,GAAG,OAAO;AAAA,QACnB,cAAc;AAAA,MAChB,CAAC;AAED,UAAI,MAAM,SAAS,UAAU,KAAK,CAAC;AACjC,qBAAM,OAAO,iBAAiB,GAC9B,QAAQ,eAAe,UAAU,OAAO,GACxC,QAAQ,eAAe,WAAW,OAAO,GAClC;AAGT,YAAM,cAAc;AACpB,MAAI,cAAc,KAAK,WAAW,KAChC,YAAY,KAAK,aAAa,OAAO,GACrC,QAAQ,KAAK,GAAG,MAAM,kBAAa,OAAO;AAAA,CAAiB,CAAC,MAG5D,cAAc,UAAU;AAAA,CAAsC,GAC9D,QAAQ,KAAK,GAAG,MAAM,wBAAmB,OAAO;AAAA,CAAI,CAAC;AAAA,IAEzD;AAGA,QAAI,oBAAoB,QAAQ,eAC5B,cAAc,OAAO,CAAC,QAAQ,IAAI,OAAO,QAAQ,YAAY,IAC7D;AAEJ,QAAI,kBAAkB,WAAW;AAC/B,mBAAM,OAAO,aAAa,QAAQ,YAAY,aAAa,GAC3D,QAAQ,eAAe,UAAU,OAAO,GACxC,QAAQ,eAAe,WAAW,OAAO,GAClC;AAIT,QAAI,QAAQ,gBAAgB,MAAS,CAAC,QAAQ,cAAc;AAC1D,YAAM,YAAY,MAAM,MAAM,QAAQ;AAAA,QACpC,SAAS;AAAA,QACT,cAAc;AAAA,MAChB,CAAC;AAED,UAAI,MAAM,SAAS,SAAS,KAAK,CAAC;AAChC,qBAAM;AAAA,UACJ;AAAA,EAAsD,GAAG,KAAK,uBAAuB,CAAC;AAAA,UACtF,GAAG,OAAO,2BAA2B;AAAA,QACvC,GACA,QAAQ,eAAe,UAAU,OAAO,GACxC,QAAQ,eAAe,WAAW,OAAO,GAClC;AAAA,IAEX;AAGA,eAAW,YAAY;AAErB,MADoB,MAAM,cAAc,UAAU,SAAS,KAAK,OAAO;AAOzE,UAAM,iBAA2B,CAAC,GAC5B,cAAwB,CAAC;AAE/B,eAAW,YAAY;AACrB,iBAAW,YAAY,SAAS,WAAW;AACzC,cAAM,QAAQ,gBAAgB,KAAK,SAAS,KAAK,OAAO;AACxD,QAAI,SAAS,UAAU,MAAM,CAAC,MAAM,SAAS,OAAO,IAClD,eAAe,KAAK,SAAS,GAAG,IACvB,SAAS,YAClB,YAAY,KAAK,SAAS,GAAG;AAAA,MAEjC;AAGF,WAAI,eAAe,SAAS,KAC1B,MAAM,MAAM,GAAG,MAAM,oCAA+B,CAAC,GACrD,QAAQ;AAAA,MACN,GAAG,KAAK;AAAA,aAAgB,eAAe,MAAM,iBAAiB,OAAO,EAAE;AAAA,IACzE,GAEI,YAAY,SAAS,MACvB,QAAQ;AAAA,MACN,GAAG;AAAA,QACD;AAAA;AAAA,MACF;AAAA,IACF,GACA,YAAY,QAAQ,CAAC,MAAM,QAAQ,KAAK,GAAG,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC,IAG9D,QAAQ,KAAK,GAAG,KAAK;AAAA,wCAA2C,CAAC,GACjE,QAAQ,KAAK,GAAG,KAAK,yBAAyB,CAAC,GAC/C,QAAQ,KAAK,GAAG,KAAK;AAAA,+BAAkC,CAAC,GACxD,QAAQ,KAAK,GAAG,KAAK,wCAAwC,CAAC,GAC9D,QAAQ,KAAK,GAAG,KAAK,0CAA0C,CAAC,MAEhE,MAAM,MAAM,GAAG,OAAO,yBAAyB,CAAC,GAChD,QAAQ,KAAK,GAAG,KAAK;AAAA,wCAA2C,CAAC,GACjE,QAAQ,KAAK,GAAG,KAAK,yBAAyB,CAAC,IAGjD,QAAQ,eAAe,UAAU,OAAO,GACxC,QAAQ,eAAe,WAAW,OAAO,GAClC;AAAA,EACT,SAAS,OAAO;AAGd,QAFA,QAAQ,eAAe,UAAU,OAAO,GACxC,QAAQ,eAAe,WAAW,OAAO,GACrC,iBAAiB,SAAS,MAAM,QAAQ,SAAS,WAAW;AAC9D,aAAO;AAET,UAAM;AAAA,EACR;AACF;AAEA,eAAe,cACb,UACA,SACA,KACA,SACkB;AAClB,QAAM,UAAU,MAAM,QAAQ;AAG9B,MAAI,UAAU,UAAU,GAAG,KAAK,SAAS,IAAI,CAAC;AAC9C,EAAK,SAAS,aACZ,WAAW,GAAG,KAAK,aAAa,IAE9B,SAAS,cACX,WAAW,GAAG,OAAO,IAAI,SAAS,SAAS,EAAE,IAG/C,QAAQ,KAAK,EAAE;AACf,QAAMA,iBAAgB,MAAM,MAAM,QAAQ;AAAA,IACxC;AAAA,IACA,cAAc,SAAS;AAAA,EACzB,CAAC;AAED,MAAI,MAAM,SAASA,cAAa,KAAK,CAACA;AACpC,mBAAQ,KAAK,GAAG,KAAK,cAAc,SAAS,IAAI,EAAE,CAAC,GAC5C;AAGT,UAAQ,KAAK,GAAG,KAAK;AAAA,EAAK,SAAS,WAAW;AAAA,CAAI,CAAC;AAGnD,aAAW,YAAY,SAAS;AAC9B,UAAM,cAAc,UAAU,SAAS,GAAG;AAG5C,SAAO;AACT;AAEA,eAAe,cACb,UACA,SACA,KACe;AAEf,QAAM,gBAAgB,gBAAgB,KAAK,SAAS,KAAK,OAAO,GAC1D,WACJ,iBAAiB,kBAAkB,MAAM,CAAC,cAAc,SAAS,OAAO;AAM1E,MAJA,QAAQ,KAAK,EAAE,GACf,QAAQ,KAAK,GAAG,KAAK,SAAS,KAAK,CAAC,GACpC,QAAQ,KAAK,GAAG,KAAK,SAAS,WAAW,CAAC,GAEtC,UAAU;AACZ,UAAM,SAAS,MAAM,MAAM,QAAQ;AAAA,MACjC,SAAS,GAAG,GAAG,MAAM,QAAG,CAAC;AAAA,MACzB,cAAc;AAAA,IAChB,CAAC;AAED,QAAI,MAAM,SAAS,MAAM,KAAK,CAAC;AAC7B;AAAA,EAEJ;AAGA,UAAQ,KAAK,EAAE,GACf,QAAQ,KAAK,GAAG,KAAK,eAAe,CAAC,GACrC,SAAS,aAAa,MAAM;AAAA,CAAI,EAAE,QAAQ,CAAC,SAAS;AAClD,YAAQ,KAAK,GAAG,KAAK,KAAK,IAAI,EAAE,CAAC;AAAA,EACnC,CAAC,GACD,QAAQ,KAAK,EAAE;AAGf,MAAI;AAEJ,MAAI,SAAS,WAAW;AACtB,UAAM,WAAW,MAAM,MAAM,QAAQ;AAAA,MACnC,SAAS,YAAY,SAAS,KAAK;AAAA,MACnC,cAAc;AAAA,IAChB,CAAC;AAED,IAAI,CAAC,MAAM,SAAS,QAAQ,KAAK,aAC/B,QAAQ,SAAS,UAAU,GAC3B,QAAQ,KAAK,GAAG,MAAM,oBAAe,SAAS,KAAK,EAAE,CAAC;AAAA,EAE1D;AAEA,MAAI,CAAC;AACH,QAAI,SAAS,SAAS;AACpB,cAAQ,KAAK,GAAG,KAAK,8CAA8C,CAAC,GACpE,QAAQ,MAAM,mBAAmB;AAAA,aACxB,SAAS,SAAS,UAAU;AACrC,YAAM,SAAS,MAAM,MAAM,SAAS;AAAA,QAClC,SAAS,SAAS,SAAS,KAAK;AAAA,QAChC,MAAM;AAAA,MACR,CAAC;AACD,MAAK,MAAM,SAAS,MAAM,MACxB,QAAQ;AAAA,IAEZ,OAAO;AACL,YAAM,SAAS,MAAM,MAAM,KAAK;AAAA,QAC9B,SAAS,SAAS,SAAS,KAAK;AAAA,QAChC,aAAa,SAAS;AAAA,QACtB,cAAc,SAAS;AAAA,QACvB,UAAU,CAAC,QAAQ;AACjB,cAAI,SAAS,YAAY,CAAC;AACxB,mBAAO;AAAA,QAGX;AAAA,MACF,CAAC;AACD,MAAK,MAAM,SAAS,MAAM,MACxB,QAAQ;AAAA,IAEZ;AAGF,EAAI,SAAS,CAAC,MAAM,SAAS,KAAK,KAChC,kBAAkB,KAAK,SAAS,KAAK,OAAO,OAAO,GACnD,QAAQ,KAAK,GAAG,MAAM,gBAAW,SAAS,GAAG,EAAE,CAAC,KACvC,SAAS,WAClB,QAAQ,KAAK,GAAG,OAAO,qCAAgC,SAAS,GAAG,EAAE,CAAC,IAEtE,QAAQ,KAAK,GAAG,KAAK,aAAa,SAAS,GAAG,EAAE,CAAC;AAErD;AAEA,eAAe,qBAAsC;AACnD,SAAO,IAAI,QAAQ,CAACC,aAAY;AAC9B,UAAM,QAAkB,CAAC;AACzB,QAAI,iBAAiB;AAErB,UAAM,SAAS,QAAQ;AACvB,WAAO,YAAY,MAAM;AAEzB,UAAM,SAAS,CAAC,UAAkB;AAChC,YAAM,aAAa,MAAM,MAAM;AAAA,CAAI;AACnC,iBAAW,QAAQ;AACjB,YAAI,SAAS;AAEX,cADA,kBACI,kBAAkB,GAAG;AACvB,mBAAO,eAAe,QAAQ,MAAM,GACpCA,SAAQ,MAAM,KAAK;AAAA,CAAI,CAAC;AACxB;AAAA,UACF;AAAA;AAEA,UAAI,mBAAmB,KACrB,MAAM,KAAK,EAAE,GAEf,iBAAiB,GACjB,MAAM,KAAK,IAAI;AAAA,IAGrB;AAEA,WAAO,GAAG,QAAQ,MAAM;AAAA,EAC1B,CAAC;AACH;AAEO,SAAS,iBAAuB;AACrC,UAAQ,KAAK,GAAG,KAAK;AAAA;AAAA,CAAuC,CAAC;AAE7D,aAAW,YAAY,eAAe;AACpC,UAAM,SAAS,SAAS,WAAW,GAAG,IAAI,UAAU,IAAI,GAAG,KAAK,UAAU;AAC1E,YAAQ,KAAK,KAAK,GAAG,KAAK,SAAS,GAAG,OAAO,EAAE,CAAC,CAAC,MAAM,SAAS,IAAI,IAAI,MAAM,EAAE,GAChF,QAAQ,KAAK,KAAK,GAAG,KAAK,SAAS,WAAW,CAAC,EAAE,GAC7C,SAAS,aACX,QAAQ,KAAK,KAAK,GAAG,OAAO,SAAS,SAAS,CAAC,EAAE,GAEnD,QAAQ,KAAK,EAAE;AAAA,EACjB;AAEA,UAAQ,KAAK,GAAG,KAAK,oCAAoC,CAAC,GAC1D,QAAQ,KAAK,GAAG,KAAK;AAAA,CAA2C,CAAC;AACnE;",
5
- "names": ["setupCategory", "resolve"]
6
- }
@@ -1,83 +0,0 @@
1
- import { randomBytes } from "node:crypto";
2
- import { copyFileSync, existsSync, readFileSync, writeFileSync } from "node:fs";
3
- import { join } from "node:path";
4
- function generateSecret(length = 32) {
5
- return randomBytes(length).toString("hex");
6
- }
7
- function envFileExists(cwd, filename = ".env") {
8
- return existsSync(join(cwd, filename));
9
- }
10
- function copyEnvFile(cwd, source, target) {
11
- const sourcePath = join(cwd, source), targetPath = join(cwd, target);
12
- if (!existsSync(sourcePath))
13
- return { success: !1, error: `Source file ${source} not found` };
14
- if (existsSync(targetPath))
15
- return { success: !1, error: `Target file ${target} already exists` };
16
- try {
17
- return copyFileSync(sourcePath, targetPath), { success: !0 };
18
- } catch (error) {
19
- return {
20
- success: !1,
21
- error: error instanceof Error ? error.message : "Unknown error"
22
- };
23
- }
24
- }
25
- function updateEnvVariable(cwd, key, value, filename = ".env") {
26
- const envPath = join(cwd, filename);
27
- if (!existsSync(envPath))
28
- return { success: !1, error: `${filename} not found` };
29
- try {
30
- let content = readFileSync(envPath, "utf-8");
31
- const keyRegex = new RegExp(`^${key}=.*$`, "m");
32
- return keyRegex.test(content) ? content = content.replace(keyRegex, `${key}=${value}`) : content = content.trimEnd() + `
33
- ${key}=${value}
34
- `, writeFileSync(envPath, content, "utf-8"), { success: !0 };
35
- } catch (error) {
36
- return {
37
- success: !1,
38
- error: error instanceof Error ? error.message : "Unknown error"
39
- };
40
- }
41
- }
42
- function createEnvLocal(cwd) {
43
- const envLocalPath = join(cwd, ".env.local");
44
- if (existsSync(envLocalPath))
45
- return { success: !0 };
46
- const template = `# Local environment overrides
47
- # This file is gitignored and never committed
48
- # Add your personal secrets and local configuration here
49
- # These values override .env
50
-
51
- # Example:
52
- # BETTER_AUTH_SECRET=your-secret-here
53
- # AWS_ACCESS_KEY_ID=your-key-here
54
- `;
55
- try {
56
- return writeFileSync(envLocalPath, template, "utf-8"), { success: !0 };
57
- } catch (error) {
58
- return {
59
- success: !1,
60
- error: error instanceof Error ? error.message : "Unknown error"
61
- };
62
- }
63
- }
64
- function readEnvVariable(cwd, key, filename = ".env") {
65
- const envPath = join(cwd, filename);
66
- if (!existsSync(envPath))
67
- return null;
68
- try {
69
- const content = readFileSync(envPath, "utf-8"), keyRegex = new RegExp(`^${key}=(.*)$`, "m");
70
- return content.match(keyRegex)?.[1]?.trim().replace(/^["']|["']$/g, "") || null;
71
- } catch {
72
- return null;
73
- }
74
- }
75
- export {
76
- copyEnvFile,
77
- createEnvLocal,
78
- envFileExists,
79
- generateSecret,
80
- readEnvVariable,
81
- updateEnvVariable
82
- };
83
- //# sourceMappingURL=env.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/utils/env.ts"],
4
- "mappings": "AAIA,SAAS,mBAAmB;AAC5B,SAAS,cAAc,YAAY,cAAc,qBAAqB;AACtE,SAAS,YAAY;AAEd,SAAS,eAAe,SAAS,IAAY;AAClD,SAAO,YAAY,MAAM,EAAE,SAAS,KAAK;AAC3C;AAEO,SAAS,cAAc,KAAa,WAAW,QAAiB;AACrE,SAAO,WAAW,KAAK,KAAK,QAAQ,CAAC;AACvC;AAEO,SAAS,YACd,KACA,QACA,QACsC;AACtC,QAAM,aAAa,KAAK,KAAK,MAAM,GAC7B,aAAa,KAAK,KAAK,MAAM;AAEnC,MAAI,CAAC,WAAW,UAAU;AACxB,WAAO,EAAE,SAAS,IAAO,OAAO,eAAe,MAAM,aAAa;AAGpE,MAAI,WAAW,UAAU;AACvB,WAAO,EAAE,SAAS,IAAO,OAAO,eAAe,MAAM,kBAAkB;AAGzE,MAAI;AACF,wBAAa,YAAY,UAAU,GAC5B,EAAE,SAAS,GAAK;AAAA,EACzB,SAAS,OAAO;AACd,WAAO;AAAA,MACL,SAAS;AAAA,MACT,OAAO,iBAAiB,QAAQ,MAAM,UAAU;AAAA,IAClD;AAAA,EACF;AACF;AAEO,SAAS,kBACd,KACA,KACA,OACA,WAAW,QAC2B;AACtC,QAAM,UAAU,KAAK,KAAK,QAAQ;AAElC,MAAI,CAAC,WAAW,OAAO;AACrB,WAAO,EAAE,SAAS,IAAO,OAAO,GAAG,QAAQ,aAAa;AAG1D,MAAI;AACF,QAAI,UAAU,aAAa,SAAS,OAAO;AAG3C,UAAM,WAAW,IAAI,OAAO,IAAI,GAAG,QAAQ,GAAG;AAE9C,WAAI,SAAS,KAAK,OAAO,IAEvB,UAAU,QAAQ,QAAQ,UAAU,GAAG,GAAG,IAAI,KAAK,EAAE,IAGrD,UAAU,QAAQ,QAAQ,IAAI;AAAA,EAAK,GAAG,IAAI,KAAK;AAAA,GAGjD,cAAc,SAAS,SAAS,OAAO,GAChC,EAAE,SAAS,GAAK;AAAA,EACzB,SAAS,OAAO;AACd,WAAO;AAAA,MACL,SAAS;AAAA,MACT,OAAO,iBAAiB,QAAQ,MAAM,UAAU;AAAA,IAClD;AAAA,EACF;AACF;AAEO,SAAS,eAAe,KAAmD;AAChF,QAAM,eAAe,KAAK,KAAK,YAAY;AAE3C,MAAI,WAAW,YAAY;AACzB,WAAO,EAAE,SAAS,GAAK;AAGzB,QAAM,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUjB,MAAI;AACF,yBAAc,cAAc,UAAU,OAAO,GACtC,EAAE,SAAS,GAAK;AAAA,EACzB,SAAS,OAAO;AACd,WAAO;AAAA,MACL,SAAS;AAAA,MACT,OAAO,iBAAiB,QAAQ,MAAM,UAAU;AAAA,IAClD;AAAA,EACF;AACF;AAEO,SAAS,gBACd,KACA,KACA,WAAW,QACI;AACf,QAAM,UAAU,KAAK,KAAK,QAAQ;AAElC,MAAI,CAAC,WAAW,OAAO;AACrB,WAAO;AAGT,MAAI;AACF,UAAM,UAAU,aAAa,SAAS,OAAO,GACvC,WAAW,IAAI,OAAO,IAAI,GAAG,UAAU,GAAG;AAEhD,WADc,QAAQ,MAAM,QAAQ,IACrB,CAAC,GAAG,KAAK,EAAE,QAAQ,gBAAgB,EAAE,KAAK;AAAA,EAC3D,QAAQ;AACN,WAAO;AAAA,EACT;AACF;",
5
- "names": []
6
- }
@@ -1,150 +0,0 @@
1
- import { execSync } from "node:child_process";
2
- import { existsSync, readdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
3
- import { join } from "node:path";
4
- function updatePackageJson(cwd, updates) {
5
- const packagePath = join(cwd, "package.json");
6
- if (!existsSync(packagePath))
7
- return { success: !1, error: "package.json not found" };
8
- try {
9
- const content = readFileSync(packagePath, "utf-8"), pkg = JSON.parse(content);
10
- return updates.name && (pkg.name = updates.name), updates.description && (pkg.description = updates.description), writeFileSync(packagePath, JSON.stringify(pkg, null, 2) + `
11
- `, "utf-8"), { success: !0 };
12
- } catch (error) {
13
- return {
14
- success: !1,
15
- error: error instanceof Error ? error.message : "Unknown error"
16
- };
17
- }
18
- }
19
- function updateAppConfig(cwd, updates) {
20
- const configPath = join(cwd, "app.config.ts");
21
- if (!existsSync(configPath))
22
- return { success: !1, error: "app.config.ts not found" };
23
- try {
24
- let content = readFileSync(configPath, "utf-8");
25
- return updates.name && (content = content.replace(/(name:\s*['"])([^'"]+)(['"])/, `$1${updates.name}$3`)), updates.slug && (content = content.replace(/(slug:\s*['"])([^'"]+)(['"])/, `$1${updates.slug}$3`)), updates.bundleId && (content = content.replace(
26
- /(bundleIdentifier:\s*['"])([^'"]+)(['"])/,
27
- `$1${updates.bundleId}$3`
28
- ), content = content.replace(
29
- /(package:\s*['"])([^'"]+)(['"])/,
30
- `$1${updates.bundleId}$3`
31
- )), writeFileSync(configPath, content, "utf-8"), { success: !0 };
32
- } catch (error) {
33
- return {
34
- success: !1,
35
- error: error instanceof Error ? error.message : "Unknown error"
36
- };
37
- }
38
- }
39
- function checkOnboarded(cwd) {
40
- const packagePath = join(cwd, "package.json");
41
- if (!existsSync(packagePath)) return !1;
42
- try {
43
- return JSON.parse(readFileSync(packagePath, "utf-8")).takeout?.onboarded === !0;
44
- } catch {
45
- return !1;
46
- }
47
- }
48
- function markOnboarded(cwd) {
49
- const packagePath = join(cwd, "package.json");
50
- if (!existsSync(packagePath))
51
- return { success: !1, error: "package.json not found" };
52
- try {
53
- const content = readFileSync(packagePath, "utf-8"), pkg = JSON.parse(content);
54
- return pkg.takeout || (pkg.takeout = {}), pkg.takeout.onboarded = !0, writeFileSync(packagePath, JSON.stringify(pkg, null, 2) + `
55
- `, "utf-8"), { success: !0 };
56
- } catch (error) {
57
- return {
58
- success: !1,
59
- error: error instanceof Error ? error.message : "Unknown error"
60
- };
61
- }
62
- }
63
- function updatePackageJsonEnv(cwd, platform) {
64
- const packagePath = join(cwd, "package.json");
65
- if (!existsSync(packagePath))
66
- return { success: !1, error: "package.json not found" };
67
- try {
68
- const content = readFileSync(packagePath, "utf-8"), pkg = JSON.parse(content);
69
- return pkg.env ? (platform === "sst" ? (delete pkg.env.DEPLOY_HOST, delete pkg.env.DEPLOY_USER, delete pkg.env.DEPLOY_SSH_KEY) : platform === "uncloud" && (delete pkg.env.CLOUDFLARE_API_TOKEN, delete pkg.env.AWS_ACCESS_KEY_ID, delete pkg.env.AWS_SECRET_ACCESS_KEY), writeFileSync(packagePath, JSON.stringify(pkg, null, 2) + `
70
- `, "utf-8"), { success: !0 }) : { success: !1, error: "env section not found in package.json" };
71
- } catch (error) {
72
- return {
73
- success: !1,
74
- error: error instanceof Error ? error.message : "Unknown error"
75
- };
76
- }
77
- }
78
- async function ejectFromMonorepo(cwd, options = {}) {
79
- const { dryRun = !1 } = options, packagePath = join(cwd, "package.json"), packagesDir = join(cwd, "packages"), warnings = [];
80
- if (!existsSync(packagePath))
81
- return { success: !1, error: "package.json not found" };
82
- try {
83
- const content = readFileSync(packagePath, "utf-8"), pkg = JSON.parse(content);
84
- if (!existsSync(packagesDir))
85
- return { success: !1, error: "packages directory not found - already ejected?" };
86
- if (!pkg.workspaces)
87
- return { success: !1, error: "no workspaces field found - already ejected?" };
88
- const workspacePackages = [], entries = readdirSync(packagesDir, { withFileTypes: !0 });
89
- for (const entry of entries) {
90
- if (!entry.isDirectory()) continue;
91
- const pkgJsonPath = join(packagesDir, entry.name, "package.json");
92
- if (existsSync(pkgJsonPath))
93
- try {
94
- const pkgJson = JSON.parse(readFileSync(pkgJsonPath, "utf-8"));
95
- pkgJson.name && pkgJson.version ? workspacePackages.push({ name: pkgJson.name, version: pkgJson.version }) : warnings.push(`skipped ${entry.name}: missing name or version`);
96
- } catch {
97
- warnings.push(`skipped ${entry.name}: invalid package.json`);
98
- }
99
- }
100
- if (workspacePackages.length === 0)
101
- return { success: !1, error: "no valid workspace packages found" };
102
- const unresolvedDeps = [], allDeps = { ...pkg.dependencies, ...pkg.devDependencies };
103
- for (const [name, version] of Object.entries(allDeps))
104
- version === "workspace:*" && (workspacePackages.find((p) => p.name === name) || unresolvedDeps.push(name));
105
- if (unresolvedDeps.length > 0)
106
- return {
107
- success: !1,
108
- error: `unresolved workspace dependencies: ${unresolvedDeps.join(", ")}`,
109
- packages: workspacePackages
110
- };
111
- if (dryRun)
112
- return {
113
- success: !0,
114
- packages: workspacePackages,
115
- warnings: warnings.length > 0 ? warnings : void 0
116
- };
117
- for (const { name, version } of workspacePackages)
118
- pkg.dependencies?.[name] === "workspace:*" && (pkg.dependencies[name] = `^${version}`), pkg.devDependencies?.[name] === "workspace:*" && (pkg.devDependencies[name] = `^${version}`);
119
- delete pkg.workspaces, writeFileSync(packagePath, JSON.stringify(pkg, null, 2) + `
120
- `, "utf-8"), rmSync(packagesDir, { recursive: !0, force: !0 });
121
- try {
122
- execSync("bun install", { cwd, stdio: "inherit" });
123
- } catch {
124
- return {
125
- success: !1,
126
- error: 'failed to install published packages. package.json was modified but install failed. try running "bun install" manually, or restore from git.',
127
- packages: workspacePackages
128
- };
129
- }
130
- return {
131
- success: !0,
132
- packages: workspacePackages,
133
- warnings: warnings.length > 0 ? warnings : void 0
134
- };
135
- } catch (error) {
136
- return {
137
- success: !1,
138
- error: error instanceof Error ? error.message : "Unknown error"
139
- };
140
- }
141
- }
142
- export {
143
- checkOnboarded,
144
- ejectFromMonorepo,
145
- markOnboarded,
146
- updateAppConfig,
147
- updatePackageJson,
148
- updatePackageJsonEnv
149
- };
150
- //# sourceMappingURL=files.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/utils/files.ts"],
4
- "mappings": "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",
5
- "names": []
6
- }
@@ -1,98 +0,0 @@
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
- function isBunShellNoise(line) {
20
- const stripped = line.replace(/\x1b\[[0-9;]*m/g, "").trim();
21
- return stripped.startsWith("ShellError:") || stripped.startsWith("exitCode:") || stripped.startsWith("stdout:") || stripped.startsWith("stderr:") || stripped.startsWith("at ShellPromise") || stripped.startsWith("at BunShell") || stripped.startsWith("Bun v") || /^\d+\s*\|/.test(stripped) || // source code lines like "24 | await $`..."
22
- /^\s*\^$/.test(stripped);
23
- }
24
- const spawnedProcesses = [];
25
- let cleaning = !1;
26
- function killAllProcessGroups(signal = "SIGTERM") {
27
- for (const proc of spawnedProcesses)
28
- if (proc.pid)
29
- try {
30
- process.kill(-proc.pid, signal);
31
- } catch {
32
- try {
33
- process.kill(proc.pid, signal);
34
- } catch {
35
- }
36
- }
37
- }
38
- function cleanupAndExit() {
39
- cleaning || (cleaning = !0, process.stdout.write(`
40
- \x1B[0m`), killAllProcessGroups("SIGTERM"), setTimeout(() => {
41
- killAllProcessGroups("SIGKILL"), process.exit(0);
42
- }, 150));
43
- }
44
- process.on("SIGINT", cleanupAndExit);
45
- process.on("SIGTERM", cleanupAndExit);
46
- async function runScriptsInParallel(scripts, options = {}) {
47
- const { title, onError = "exit", maxParallelism = cpus().length } = options;
48
- title && (console.info(), console.info(title), console.info());
49
- const allPromises = [], executing = /* @__PURE__ */ new Set();
50
- for (let i = 0; i < scripts.length; i++) {
51
- const script = scripts[i], scriptPromise = runSingleScript(script, i).finally(() => {
52
- executing.delete(scriptPromise);
53
- });
54
- allPromises.push(scriptPromise), executing.add(scriptPromise), executing.size >= maxParallelism && await Promise.race(executing);
55
- }
56
- const failures = (await Promise.allSettled(allPromises)).filter((r) => r.status === "rejected");
57
- failures.length > 0 ? (console.error(`
58
- ${reset}\x1B[31m\u2717 ${failures.length} script(s) failed${reset}
59
- `), onError === "exit" && process.exit(1)) : console.info(`
60
- ${reset}\x1B[32m\u2713 All scripts completed successfully${reset}
61
- `);
62
- }
63
- function runSingleScript(script, colorIndex) {
64
- return new Promise((resolve, reject) => {
65
- const color = colors[colorIndex % colors.length], prefixLabel = script.name, proc = spawn("bun", [script.path, ...script.args || []], {
66
- stdio: ["pipe", "pipe", "pipe"],
67
- shell: !1,
68
- env: { ...process.env, FORCE_COLOR: "3", TKO_IS_RUNNING_ALL: "1" },
69
- detached: !0
70
- });
71
- spawnedProcesses.push(proc);
72
- let stderrBuffer = "";
73
- proc.stdout.on("data", (data) => {
74
- if (cleaning) return;
75
- const lines = data.toString().split(`
76
- `);
77
- for (const line of lines)
78
- line && console.info(`${color}${prefixLabel}${reset} ${line}`);
79
- }), proc.stderr.on("data", (data) => {
80
- const dataStr = data.toString();
81
- if (stderrBuffer += dataStr, cleaning) return;
82
- const lines = dataStr.split(`
83
- `);
84
- for (const line of lines)
85
- line && !isBunShellNoise(line) && console.error(`${color}${prefixLabel}${reset} ${line}`);
86
- }), proc.on("error", (error) => {
87
- console.error(`${color}${prefixLabel}${reset} Failed to start: ${error.message}`), reject(error);
88
- }), proc.on("close", (code) => {
89
- cleaning || (code && code !== 0 ? (stderrBuffer.includes("ShellError") || stderrBuffer.includes("at BunShell") || (console.error(`${color}${prefixLabel}${reset} Process exited with code ${code}`), stderrBuffer.trim() && (console.error(`
90
- ${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
91
- `))), reject(new Error(`Script ${prefixLabel} failed with code ${code}`))) : (console.info(`${color}${prefixLabel}${reset} \x1B[32m\u2713 completed${reset}`), resolve()));
92
- });
93
- });
94
- }
95
- export {
96
- runScriptsInParallel
97
- };
98
- //# sourceMappingURL=parallel-runner.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/utils/parallel-runner.ts"],
4
- "mappings": "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",
5
- "names": []
6
- }
@@ -1,65 +0,0 @@
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: +(process.env.VITE_PORT_POSTGRES || 5433),
34
- zero: +(process.env.VITE_PORT_ZERO || 4848),
35
- web: +(process.env.VITE_PORT_WEB || 8081),
36
- minio: +(process.env.VITE_PORT_MINIO || 9200),
37
- minioConsole: +(process.env.VITE_PORT_MINIO_CONSOLE || 9201)
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
@@ -1,6 +0,0 @@
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,EAAE,QAAQ,IAAI,sBAAsB;AAAA,EAC9C,MAAM,EAAE,QAAQ,IAAI,kBAAkB;AAAA,EACtC,KAAK,EAAE,QAAQ,IAAI,iBAAiB;AAAA,EACpC,OAAO,EAAE,QAAQ,IAAI,mBAAmB;AAAA,EACxC,cAAc,EAAE,QAAQ,IAAI,2BAA2B;AACzD;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
- }