buncargo 1.0.26 → 3.0.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 (222) hide show
  1. package/dist/bin.d.ts +1 -12
  2. package/dist/bin.js +261 -252
  3. package/dist/cli/bin.d.ts +13 -0
  4. package/dist/cli/bin.js +315 -0
  5. package/dist/cli/commands/help.d.ts +1 -0
  6. package/dist/cli/commands/runtime.d.ts +5 -0
  7. package/dist/cli/commands/version.d.ts +1 -0
  8. package/dist/cli/index.d.ts +1 -0
  9. package/dist/cli/index.js +14 -0
  10. package/dist/cli/run-cli.d.ts +22 -0
  11. package/dist/cli.d.ts +1 -22
  12. package/dist/cli.js +5 -13
  13. package/dist/config/config.d.ts +1 -0
  14. package/dist/config/define-config.d.ts +13 -0
  15. package/dist/config/index.d.ts +3 -0
  16. package/dist/config/index.js +15 -0
  17. package/dist/config/merge-configs.d.ts +3 -0
  18. package/dist/config/validate-config.d.ts +3 -0
  19. package/dist/config.d.ts +1 -72
  20. package/dist/config.js +12 -12
  21. package/dist/core/docker.d.ts +1 -74
  22. package/dist/core/docker.js +35 -26
  23. package/dist/core/index.d.ts +1 -1
  24. package/dist/core/index.js +123 -108
  25. package/dist/core/network.js +2 -2
  26. package/dist/core/ports.d.ts +22 -0
  27. package/dist/core/ports.js +5 -1
  28. package/dist/core/process.js +1 -1
  29. package/dist/core/tunnel.d.ts +33 -0
  30. package/dist/core/utils.js +2 -2
  31. package/dist/core/watchdog-runner.js +45 -42
  32. package/dist/core/watchdog.d.ts +1 -0
  33. package/dist/core/watchdog.js +4 -2
  34. package/dist/docker/index.d.ts +1 -0
  35. package/dist/docker/index.js +38 -0
  36. package/dist/docker/runtime.d.ts +87 -0
  37. package/dist/docker/runtime.js +37 -0
  38. package/dist/docker-compose/compose.d.ts +1 -0
  39. package/dist/docker-compose/generated-file.d.ts +7 -0
  40. package/dist/docker-compose/index.d.ts +3 -0
  41. package/dist/docker-compose/index.js +15 -0
  42. package/dist/docker-compose/model.d.ts +6 -0
  43. package/dist/docker-compose/services/clickhouse.d.ts +16 -0
  44. package/dist/docker-compose/services/define-docker-service.d.ts +41 -0
  45. package/dist/docker-compose/services/index.d.ts +23 -0
  46. package/dist/docker-compose/services/index.js +17 -0
  47. package/dist/docker-compose/services/postgres.d.ts +12 -0
  48. package/dist/docker-compose/services/redis.d.ts +12 -0
  49. package/dist/docker-compose/services/shared.d.ts +7 -0
  50. package/dist/docker-compose/yaml.d.ts +2 -0
  51. package/dist/environment/create-dev-environment.d.ts +23 -0
  52. package/dist/environment/index.d.ts +1 -0
  53. package/dist/environment/index.js +15 -0
  54. package/dist/environment/logging.d.ts +17 -0
  55. package/dist/environment/seeding.d.ts +9 -0
  56. package/dist/environment.d.ts +1 -23
  57. package/dist/environment.js +12 -14
  58. package/dist/index-045jksh5.js +147 -0
  59. package/dist/index-08wa79cs.js +125 -117
  60. package/dist/index-0kxnae3z.js +335 -0
  61. package/dist/index-1mdrf7nz.js +66 -0
  62. package/dist/index-1yvbwj4k.js +262 -242
  63. package/dist/index-23ev345g.js +475 -0
  64. package/dist/index-2ckr49sf.js +228 -0
  65. package/dist/index-2f47khe5.js +376 -369
  66. package/dist/index-2fr3g85b.js +220 -183
  67. package/dist/index-38xnzpa6.js +450 -0
  68. package/dist/index-3h3dhtf2.js +51 -43
  69. package/dist/index-42x95209.js +51 -43
  70. package/dist/index-4gp0az1g.js +145 -0
  71. package/dist/index-4xrxh8yv.js +72 -0
  72. package/dist/index-5gmws6ah.js +181 -0
  73. package/dist/index-5hka0tff.js +78 -76
  74. package/dist/index-5rfqps4b.js +3 -0
  75. package/dist/index-5t9jxqm0.js +428 -0
  76. package/dist/index-6c1w1xk5.js +101 -0
  77. package/dist/index-6fm7mvwj.js +118 -97
  78. package/dist/index-6srpc523.js +127 -128
  79. package/dist/index-731rzzfp.js +187 -0
  80. package/dist/index-75y4cg2z.js +51 -43
  81. package/dist/index-7ja4ywyj.js +126 -127
  82. package/dist/index-8bw1cmz4.js +531 -0
  83. package/dist/index-8hbbj1mp.js +120 -121
  84. package/dist/index-8xj2p5n5.js +145 -0
  85. package/dist/index-bj79tw5w.js +0 -0
  86. package/dist/index-bnk6nr0g.js +73 -0
  87. package/dist/index-brbbzyks.js +72 -0
  88. package/dist/index-c0dr6mcv.js +123 -0
  89. package/dist/index-cty0bcry.js +235 -218
  90. package/dist/index-d8tyv5se.js +228 -0
  91. package/dist/index-d9efy0n4.js +176 -150
  92. package/dist/index-etfmqjjf.js +427 -0
  93. package/dist/index-fb29934k.js +172 -0
  94. package/dist/index-g50jw1yf.js +72 -0
  95. package/dist/index-g6eb5wdw.js +118 -117
  96. package/dist/index-ggq3yryx.js +99 -95
  97. package/dist/index-h70tce00.js +177 -0
  98. package/dist/index-hkxtfqtc.js +333 -0
  99. package/dist/index-kf3dhser.js +146 -143
  100. package/dist/index-ma6tgdb2.js +500 -0
  101. package/dist/index-mam0bcyz.js +123 -0
  102. package/dist/index-mm412dkp.js +274 -0
  103. package/dist/index-n8v18aeb.js +0 -0
  104. package/dist/index-ndnmnsej.js +378 -371
  105. package/dist/index-p8wty0e2.js +389 -379
  106. package/dist/index-qfphr2fd.js +100 -0
  107. package/dist/index-qqmms8rs.js +51 -43
  108. package/dist/index-qw4093g2.js +51 -43
  109. package/dist/index-qzwpzjbx.js +121 -122
  110. package/dist/index-segbnm0h.js +146 -143
  111. package/dist/index-t0fj6gg1.js +112 -0
  112. package/dist/index-thdkwnv7.js +122 -0
  113. package/dist/index-tjbx2r2t.js +270 -0
  114. package/dist/index-tjqw9vtj.js +62 -54
  115. package/dist/index-vbpb89jy.js +248 -0
  116. package/dist/index-vhs88xhe.js +99 -95
  117. package/dist/index-w8zxnjka.js +249 -0
  118. package/dist/index-wk2na3t9.js +404 -0
  119. package/dist/index-wz9x8g7z.js +383 -373
  120. package/dist/index-x249gyde.js +388 -378
  121. package/dist/index-xkvd0nsd.js +187 -0
  122. package/dist/index-yedqxm1z.js +80 -0
  123. package/dist/index-zfjzzjkf.js +266 -0
  124. package/dist/index.d.ts +12 -8
  125. package/dist/index.js +66 -35
  126. package/dist/lint.d.ts +1 -46
  127. package/dist/lint.js +3 -7
  128. package/dist/loader/cache.d.ts +4 -0
  129. package/dist/loader/find-config-file.d.ts +2 -0
  130. package/dist/loader/index.d.ts +5 -0
  131. package/dist/loader/index.js +24 -0
  132. package/dist/loader/load-dev-env.d.ts +5 -0
  133. package/dist/loader/loader.d.ts +1 -0
  134. package/dist/loader.d.ts +1 -45
  135. package/dist/loader.js +22 -20
  136. package/dist/prisma/index.d.ts +1 -0
  137. package/dist/prisma/prisma.d.ts +29 -0
  138. package/dist/prisma.d.ts +1 -29
  139. package/dist/prisma.js +6 -10
  140. package/dist/src/bin.js +309 -0
  141. package/dist/src/cli.js +5 -0
  142. package/dist/src/config.js +15 -0
  143. package/dist/src/core/docker.js +38 -0
  144. package/dist/src/core/index.js +130 -0
  145. package/dist/src/core/network.js +9 -0
  146. package/dist/src/core/ports.js +23 -0
  147. package/dist/src/core/process.js +31 -0
  148. package/dist/src/core/utils.js +11 -0
  149. package/dist/src/core/watchdog-runner.js +69 -0
  150. package/dist/src/core/watchdog.js +28 -0
  151. package/dist/src/docker/runtime.js +37 -0
  152. package/dist/src/docker-compose/index.js +16 -0
  153. package/dist/src/docker-compose/services/index.js +17 -0
  154. package/dist/src/environment.js +12 -0
  155. package/dist/src/index.js +122 -0
  156. package/dist/src/lint.js +3 -0
  157. package/dist/src/loader.js +25 -0
  158. package/dist/src/prisma.js +6 -0
  159. package/dist/src/types.js +0 -0
  160. package/dist/typecheck/index.d.ts +1 -0
  161. package/dist/typecheck/index.js +7 -0
  162. package/dist/typecheck/typecheck.d.ts +46 -0
  163. package/dist/types/all-types.d.ts +501 -0
  164. package/dist/types/cli.d.ts +1 -0
  165. package/dist/types/config.d.ts +6 -0
  166. package/dist/types/docker.d.ts +15 -0
  167. package/dist/types/environment.d.ts +8 -0
  168. package/dist/types/hooks.d.ts +9 -0
  169. package/dist/types/index.d.ts +1 -0
  170. package/dist/types/index.js +0 -0
  171. package/dist/types/prisma.d.ts +1 -0
  172. package/dist/types.d.ts +1 -393
  173. package/package.json +145 -140
  174. package/readme.md +358 -105
  175. package/src/cli/bin.ts +77 -0
  176. package/src/cli/commands/help.ts +39 -0
  177. package/src/cli/commands/runtime.ts +72 -0
  178. package/src/cli/commands/version.ts +4 -0
  179. package/src/cli/index.ts +1 -0
  180. package/{cli.ts → src/cli/run-cli.ts} +95 -6
  181. package/src/config/define-config.ts +30 -0
  182. package/src/config/index.ts +3 -0
  183. package/src/config/merge-configs.ts +33 -0
  184. package/src/config/validate-config.ts +136 -0
  185. package/{core → src/core}/index.ts +2 -2
  186. package/{core → src/core}/ports.ts +68 -1
  187. package/{core → src/core}/process.ts +6 -2
  188. package/src/core/tunnel.ts +151 -0
  189. package/{core → src/core}/utils.ts +1 -0
  190. package/{core → src/core}/watchdog.ts +5 -1
  191. package/src/docker/index.ts +1 -0
  192. package/{core/docker.ts → src/docker/runtime.ts} +40 -4
  193. package/src/docker-compose/generated-file.ts +45 -0
  194. package/src/docker-compose/index.ts +7 -0
  195. package/src/docker-compose/model.ts +197 -0
  196. package/src/docker-compose/services/clickhouse.ts +79 -0
  197. package/src/docker-compose/services/define-docker-service.ts +109 -0
  198. package/src/docker-compose/services/index.ts +67 -0
  199. package/src/docker-compose/services/postgres.ts +60 -0
  200. package/src/docker-compose/services/redis.ts +48 -0
  201. package/src/docker-compose/services/shared.ts +79 -0
  202. package/src/docker-compose/yaml.ts +88 -0
  203. package/{environment.ts → src/environment/create-dev-environment.ts} +101 -146
  204. package/src/environment/index.ts +1 -0
  205. package/src/environment/logging.ts +101 -0
  206. package/src/environment/seeding.ts +57 -0
  207. package/{index.ts → src/index.ts} +49 -15
  208. package/src/loader/cache.ts +23 -0
  209. package/src/loader/find-config-file.ts +29 -0
  210. package/src/loader/index.ts +17 -0
  211. package/src/loader/load-dev-env.ts +38 -0
  212. package/src/prisma/index.ts +1 -0
  213. package/{prisma.ts → src/prisma/prisma.ts} +4 -2
  214. package/src/typecheck/index.ts +1 -0
  215. package/{types.ts → src/types/all-types.ts} +137 -6
  216. package/src/types/index.ts +1 -0
  217. package/bin.ts +0 -191
  218. package/config.ts +0 -194
  219. package/loader.ts +0 -126
  220. /package/{core → src/core}/network.ts +0 -0
  221. /package/{core → src/core}/watchdog-runner.ts +0 -0
  222. /package/{lint.ts → src/typecheck/typecheck.ts} +0 -0
@@ -0,0 +1,309 @@
1
+ #!/usr/bin/env bun
2
+ import { runCli } from "../index-5gmws6ah.js";
3
+ import { loadDevEnv } from "../index-yedqxm1z.js";
4
+ import "../index-38xnzpa6.js";
5
+ import "../index-vbpb89jy.js";
6
+ import "../index-w8zxnjka.js";
7
+ import "../index-mam0bcyz.js";
8
+ import "../index-mm412dkp.js";
9
+ import "../index-045jksh5.js";
10
+ import "../index-6c1w1xk5.js";
11
+ import "../index-tjbx2r2t.js";
12
+ import "../index-4gp0az1g.js";
13
+ import "../index-xkvd0nsd.js";
14
+ import { __commonJS, __require } from "../index-qnx9j3qa.js";
15
+
16
+ // package.json
17
+ var require_package = __commonJS((exports, module) => {
18
+ module.exports = {
19
+ name: "buncargo",
20
+ version: "1.0.31",
21
+ description:
22
+ "A Bun-powered development environment CLI for managing Docker Compose services, dev servers, and environment variables",
23
+ type: "module",
24
+ module: "./dist/index.js",
25
+ main: "./dist/index.js",
26
+ types: "./dist/index.d.ts",
27
+ license: "MIT",
28
+ repository: {
29
+ type: "git",
30
+ url: "git+https://github.com/HansKristoffer/buncargo.git",
31
+ },
32
+ author: "Kristoffer Hansen",
33
+ keywords: [
34
+ "bun",
35
+ "dev-tools",
36
+ "docker",
37
+ "docker-compose",
38
+ "development",
39
+ "cli",
40
+ "monorepo",
41
+ "dev-server",
42
+ "environment",
43
+ ],
44
+ engines: {
45
+ bun: ">=1.0.0",
46
+ },
47
+ files: ["src/**/*.ts", "dist", "!src/**/*.test.ts"],
48
+ bin: {
49
+ "dev-tools": "./dist/bin.js",
50
+ buncargo: "./dist/bin.js",
51
+ },
52
+ exports: {
53
+ ".": {
54
+ types: "./dist/index.d.ts",
55
+ bun: "./src/index.ts",
56
+ import: "./dist/index.js",
57
+ default: "./dist/index.js",
58
+ },
59
+ "./types": {
60
+ types: "./dist/types.d.ts",
61
+ bun: "./src/types.ts",
62
+ import: "./dist/types.js",
63
+ default: "./dist/types.js",
64
+ },
65
+ "./config": {
66
+ types: "./dist/config.d.ts",
67
+ bun: "./src/config.ts",
68
+ import: "./dist/config.js",
69
+ default: "./dist/config.js",
70
+ },
71
+ "./environment": {
72
+ types: "./dist/environment.d.ts",
73
+ bun: "./src/environment.ts",
74
+ import: "./dist/environment.js",
75
+ default: "./dist/environment.js",
76
+ },
77
+ "./core/ports": {
78
+ types: "./dist/core/ports.d.ts",
79
+ bun: "./src/core/ports.ts",
80
+ import: "./dist/core/ports.js",
81
+ default: "./dist/core/ports.js",
82
+ },
83
+ "./core/docker": {
84
+ types: "./dist/core/docker.d.ts",
85
+ bun: "./src/core/docker.ts",
86
+ import: "./dist/core/docker.js",
87
+ default: "./dist/core/docker.js",
88
+ },
89
+ "./core/network": {
90
+ types: "./dist/core/network.d.ts",
91
+ bun: "./src/core/network.ts",
92
+ import: "./dist/core/network.js",
93
+ default: "./dist/core/network.js",
94
+ },
95
+ "./core/process": {
96
+ types: "./dist/core/process.d.ts",
97
+ bun: "./src/core/process.ts",
98
+ import: "./dist/core/process.js",
99
+ default: "./dist/core/process.js",
100
+ },
101
+ "./core/watchdog": {
102
+ types: "./dist/core/watchdog.d.ts",
103
+ bun: "./src/core/watchdog.ts",
104
+ import: "./dist/core/watchdog.js",
105
+ default: "./dist/core/watchdog.js",
106
+ },
107
+ "./core/utils": {
108
+ types: "./dist/core/utils.d.ts",
109
+ bun: "./src/core/utils.ts",
110
+ import: "./dist/core/utils.js",
111
+ default: "./dist/core/utils.js",
112
+ },
113
+ "./cli": {
114
+ types: "./dist/cli.d.ts",
115
+ bun: "./src/cli.ts",
116
+ import: "./dist/cli.js",
117
+ default: "./dist/cli.js",
118
+ },
119
+ "./lint": {
120
+ types: "./dist/lint.d.ts",
121
+ bun: "./src/lint.ts",
122
+ import: "./dist/lint.js",
123
+ default: "./dist/lint.js",
124
+ },
125
+ "./loader": {
126
+ types: "./dist/loader.d.ts",
127
+ bun: "./src/loader.ts",
128
+ import: "./dist/loader.js",
129
+ default: "./dist/loader.js",
130
+ },
131
+ },
132
+ scripts: {
133
+ build: "bun run build:js && bun run build:types",
134
+ "build:js":
135
+ "bun build ./src/index.ts ./src/bin.ts ./src/cli.ts ./src/config.ts ./src/environment.ts ./src/lint.ts ./src/loader.ts ./src/prisma.ts ./src/types.ts ./src/core/docker.ts ./src/core/index.ts ./src/core/network.ts ./src/core/ports.ts ./src/core/process.ts ./src/core/utils.ts ./src/core/watchdog.ts ./src/core/watchdog-runner.ts ./src/docker/runtime.ts ./src/docker-compose/index.ts ./src/docker-compose/services/index.ts --outdir ./dist --target node --packages external --splitting",
136
+ "build:types": "tsc -p tsconfig.build.json",
137
+ prepublishOnly: "bun run build",
138
+ "publish:patch": "npm version patch && npm publish",
139
+ "publish:minor": "npm version minor && npm publish",
140
+ "publish:major": "npm version major && npm publish",
141
+ lint: "bun run typecheck && biome check",
142
+ "lint:write": "bun run typecheck && biome check --fix && biome format",
143
+ typecheck: "tsgo --incremental",
144
+ },
145
+ devDependencies: {
146
+ "@types/bun": "1.3.2",
147
+ "@biomejs/biome": "2.3.4",
148
+ "@typescript/native-preview": "7.0.0-dev.20260127.1",
149
+ typescript: "^5.7.0",
150
+ },
151
+ dependencies: {
152
+ "fast-glob": "^3.3.3",
153
+ picocolors: "^1.1.1",
154
+ },
155
+ };
156
+ });
157
+
158
+ // src/cli/commands/help.ts
159
+ function showHelp() {
160
+ console.log(`
161
+ buncargo - Development environment CLI
162
+
163
+ USAGE:
164
+ bunx buncargo <command> [options]
165
+
166
+ COMMANDS:
167
+ dev Start the development environment
168
+ typecheck Run TypeScript typecheck across workspaces
169
+ prisma <args> Run Prisma CLI with correct DATABASE_URL
170
+ env Print environment info as JSON
171
+ help Show this help message
172
+ version Show version
173
+
174
+ EXAMPLES:
175
+ bunx buncargo dev # Start everything
176
+ bunx buncargo dev --help # Show dev command options
177
+ bunx buncargo dev --down # Stop containers
178
+ bunx buncargo typecheck # Run typecheck
179
+ bunx buncargo prisma studio # Open Prisma Studio
180
+ bunx buncargo env # Get ports/urls as JSON
181
+
182
+ CONFIG:
183
+ Create a dev.config.ts with a default export:
184
+
185
+ import { defineDevConfig } from 'buncargo'
186
+
187
+ export default defineDevConfig({
188
+ projectPrefix: 'myapp',
189
+ services: { ... },
190
+ apps: { ... }
191
+ })
192
+
193
+ Run "bunx buncargo dev --help" for dev command options.
194
+ `);
195
+ }
196
+
197
+ // src/cli/commands/runtime.ts
198
+ async function loadEnv() {
199
+ try {
200
+ return await loadDevEnv();
201
+ } catch (error) {
202
+ console.error(`❌ ${error instanceof Error ? error.message : error}`);
203
+ process.exit(1);
204
+ }
205
+ }
206
+ async function handleDev(args) {
207
+ const env = await loadEnv();
208
+ await runCli(env, { args });
209
+ }
210
+ async function handlePrisma(args) {
211
+ const env = await loadEnv();
212
+ if (!env.prisma) {
213
+ console.error("❌ Prisma is not configured in your dev config.");
214
+ console.error("");
215
+ console.error(" Add prisma to your config:");
216
+ console.error("");
217
+ console.error(" export default defineDevConfig({");
218
+ console.error(" ...");
219
+ console.error(" prisma: {");
220
+ console.error(" cwd: 'packages/prisma'");
221
+ console.error(" }");
222
+ console.error(" })");
223
+ process.exit(1);
224
+ }
225
+ const running = await env.isRunning();
226
+ if (!running) {
227
+ console.log("\uD83D\uDC33 Starting database container...");
228
+ await env.start({ startServers: false, wait: true });
229
+ }
230
+ const exitCode = await env.prisma.run(args);
231
+ process.exit(exitCode);
232
+ }
233
+ async function handleEnv() {
234
+ const env = await loadEnv();
235
+ console.log(
236
+ JSON.stringify(
237
+ {
238
+ projectName: env.projectName,
239
+ ports: env.ports,
240
+ urls: env.urls,
241
+ portOffset: env.portOffset,
242
+ isWorktree: env.isWorktree,
243
+ localIp: env.localIp,
244
+ root: env.root,
245
+ },
246
+ null,
247
+ 2,
248
+ ),
249
+ );
250
+ }
251
+ async function handleTypecheck() {
252
+ const env = await loadEnv();
253
+ const { runWorkspaceTypecheck } = await import("../index-5rfqps4b.js");
254
+ const result = await runWorkspaceTypecheck({
255
+ root: env.root,
256
+ verbose: true,
257
+ });
258
+ process.exit(result.success ? 0 : 1);
259
+ }
260
+
261
+ // src/cli/commands/version.ts
262
+ function showVersion() {
263
+ const pkg = require_package();
264
+ console.log(`buncargo v${pkg.version}`);
265
+ }
266
+
267
+ // src/cli/bin.ts
268
+ async function main() {
269
+ const args = process.argv.slice(2);
270
+ const command = args[0];
271
+ const commandArgs = args.slice(1);
272
+ if (
273
+ !command ||
274
+ command === "help" ||
275
+ command === "--help" ||
276
+ command === "-h"
277
+ ) {
278
+ showHelp();
279
+ process.exit(0);
280
+ }
281
+ if (command === "version" || command === "--version" || command === "-v") {
282
+ showVersion();
283
+ process.exit(0);
284
+ }
285
+ switch (command) {
286
+ case "dev":
287
+ await handleDev(commandArgs);
288
+ break;
289
+ case "typecheck":
290
+ await handleTypecheck();
291
+ break;
292
+ case "prisma":
293
+ await handlePrisma(commandArgs);
294
+ break;
295
+ case "env":
296
+ await handleEnv();
297
+ break;
298
+ default:
299
+ console.error(`❌ Unknown command: ${command}`);
300
+ console.error("");
301
+ console.error(' Run "bunx buncargo help" for available commands.');
302
+ process.exit(1);
303
+ }
304
+ }
305
+ main().catch((error) => {
306
+ const message = error instanceof Error ? error.message : String(error);
307
+ console.error(`❌ ${message}`);
308
+ process.exit(1);
309
+ });
@@ -0,0 +1,5 @@
1
+ import { getFlagValue, hasFlag, runCli } from "../index-5gmws6ah.js";
2
+ import "../index-mam0bcyz.js";
3
+ import "../index-mm412dkp.js";
4
+ import "../index-qnx9j3qa.js";
5
+ export { runCli, hasFlag, getFlagValue };
@@ -0,0 +1,15 @@
1
+ import {
2
+ assertValidConfig,
3
+ defineDevConfig,
4
+ definePartialConfig,
5
+ mergeConfigs,
6
+ validateConfig,
7
+ } from "../index-045jksh5.js";
8
+ import "../index-qnx9j3qa.js";
9
+ export {
10
+ validateConfig,
11
+ mergeConfigs,
12
+ definePartialConfig,
13
+ defineDevConfig,
14
+ assertValidConfig,
15
+ };
@@ -0,0 +1,38 @@
1
+ import "../../index-n8v18aeb.js";
2
+ import {
3
+ areContainersRunning,
4
+ assertDockerRunning,
5
+ createBuiltInHealthCheck,
6
+ DOCKER_NOT_RUNNING_MESSAGE,
7
+ getComposeArg,
8
+ isContainerRunning,
9
+ isDockerRunning,
10
+ MAX_ATTEMPTS,
11
+ POLL_INTERVAL,
12
+ startContainers,
13
+ startService,
14
+ stopContainers,
15
+ waitForAllServices,
16
+ waitForService,
17
+ waitForServiceByType,
18
+ } from "../../index-tjbx2r2t.js";
19
+ import "../../index-4gp0az1g.js";
20
+ import "../../index-xkvd0nsd.js";
21
+ import "../../index-qnx9j3qa.js";
22
+ export {
23
+ waitForServiceByType,
24
+ waitForService,
25
+ waitForAllServices,
26
+ stopContainers,
27
+ startService,
28
+ startContainers,
29
+ isDockerRunning,
30
+ isContainerRunning,
31
+ getComposeArg,
32
+ createBuiltInHealthCheck,
33
+ assertDockerRunning,
34
+ areContainersRunning,
35
+ POLL_INTERVAL,
36
+ MAX_ATTEMPTS,
37
+ DOCKER_NOT_RUNNING_MESSAGE,
38
+ };
@@ -0,0 +1,130 @@
1
+ import "../../index-n8v18aeb.js";
2
+ import {
3
+ getEnvVar,
4
+ getLocalIp,
5
+ isCI,
6
+ isPortAvailable,
7
+ logApiUrl,
8
+ logExpoApiUrl,
9
+ logFrontendPort,
10
+ sleep,
11
+ waitForDevServers,
12
+ waitForServer,
13
+ } from "../../index-4gp0az1g.js";
14
+ import {
15
+ getHeartbeatFile,
16
+ getWatchdogComposeArg,
17
+ getWatchdogPid,
18
+ getWatchdogPidFile,
19
+ isWatchdogRunning,
20
+ readHeartbeat,
21
+ removeHeartbeatFile,
22
+ spawnWatchdog,
23
+ startHeartbeat,
24
+ stopHeartbeat,
25
+ stopWatchdog,
26
+ } from "../../index-mam0bcyz.js";
27
+ import {
28
+ buildApps,
29
+ exec,
30
+ execAsync,
31
+ getProcessOnPort,
32
+ isPortInUse,
33
+ isProcessAlive,
34
+ killProcessesOnAppPorts,
35
+ killProcessOnPort,
36
+ killProcessOnPortAndWait,
37
+ spawnDevServer,
38
+ startDevServers,
39
+ stopAllProcesses,
40
+ stopProcess,
41
+ } from "../../index-mm412dkp.js";
42
+ import {
43
+ areContainersRunning,
44
+ assertDockerRunning,
45
+ createBuiltInHealthCheck,
46
+ DOCKER_NOT_RUNNING_MESSAGE,
47
+ getComposeArg,
48
+ isContainerRunning,
49
+ isDockerRunning,
50
+ MAX_ATTEMPTS,
51
+ POLL_INTERVAL,
52
+ startContainers,
53
+ startService,
54
+ stopContainers,
55
+ waitForAllServices,
56
+ waitForService,
57
+ waitForServiceByType,
58
+ } from "../../index-tjbx2r2t.js";
59
+ import {
60
+ calculatePortOffset,
61
+ computeDevIdentity,
62
+ computePorts,
63
+ computeUrls,
64
+ findMonorepoRoot,
65
+ getProjectName,
66
+ getWorktreeName,
67
+ getWorktreeProjectSuffix,
68
+ isWorktree,
69
+ } from "../../index-xkvd0nsd.js";
70
+ import "../../index-qnx9j3qa.js";
71
+ export {
72
+ waitForServiceByType,
73
+ waitForService,
74
+ waitForServer,
75
+ waitForDevServers,
76
+ waitForAllServices,
77
+ stopWatchdog,
78
+ stopProcess,
79
+ stopHeartbeat,
80
+ stopContainers,
81
+ stopAllProcesses,
82
+ startService,
83
+ startHeartbeat,
84
+ startDevServers,
85
+ startContainers,
86
+ spawnWatchdog,
87
+ spawnDevServer,
88
+ sleep,
89
+ removeHeartbeatFile,
90
+ readHeartbeat,
91
+ logFrontendPort,
92
+ logExpoApiUrl,
93
+ logApiUrl,
94
+ killProcessesOnAppPorts,
95
+ killProcessOnPortAndWait,
96
+ killProcessOnPort,
97
+ isWorktree,
98
+ isWatchdogRunning,
99
+ isProcessAlive,
100
+ isPortInUse,
101
+ isPortAvailable,
102
+ isDockerRunning,
103
+ isContainerRunning,
104
+ isCI,
105
+ getWorktreeProjectSuffix,
106
+ getWorktreeName,
107
+ getWatchdogPidFile,
108
+ getWatchdogPid,
109
+ getWatchdogComposeArg,
110
+ getProjectName,
111
+ getProcessOnPort,
112
+ getLocalIp,
113
+ getHeartbeatFile,
114
+ getEnvVar,
115
+ getComposeArg,
116
+ findMonorepoRoot,
117
+ execAsync,
118
+ exec,
119
+ createBuiltInHealthCheck,
120
+ computeUrls,
121
+ computePorts,
122
+ computeDevIdentity,
123
+ calculatePortOffset,
124
+ buildApps,
125
+ assertDockerRunning,
126
+ areContainersRunning,
127
+ POLL_INTERVAL,
128
+ MAX_ATTEMPTS,
129
+ DOCKER_NOT_RUNNING_MESSAGE,
130
+ };
@@ -0,0 +1,9 @@
1
+ import {
2
+ getLocalIp,
3
+ isPortAvailable,
4
+ waitForDevServers,
5
+ waitForServer,
6
+ } from "../../index-4gp0az1g.js";
7
+ import "../../index-xkvd0nsd.js";
8
+ import "../../index-qnx9j3qa.js";
9
+ export { waitForServer, waitForDevServers, isPortAvailable, getLocalIp };
@@ -0,0 +1,23 @@
1
+ import {
2
+ calculatePortOffset,
3
+ computeDevIdentity,
4
+ computePorts,
5
+ computeUrls,
6
+ findMonorepoRoot,
7
+ getProjectName,
8
+ getWorktreeName,
9
+ getWorktreeProjectSuffix,
10
+ isWorktree,
11
+ } from "../../index-xkvd0nsd.js";
12
+ import "../../index-qnx9j3qa.js";
13
+ export {
14
+ isWorktree,
15
+ getWorktreeProjectSuffix,
16
+ getWorktreeName,
17
+ getProjectName,
18
+ findMonorepoRoot,
19
+ computeUrls,
20
+ computePorts,
21
+ computeDevIdentity,
22
+ calculatePortOffset,
23
+ };
@@ -0,0 +1,31 @@
1
+ import {
2
+ buildApps,
3
+ exec,
4
+ execAsync,
5
+ getProcessOnPort,
6
+ isPortInUse,
7
+ isProcessAlive,
8
+ killProcessesOnAppPorts,
9
+ killProcessOnPort,
10
+ killProcessOnPortAndWait,
11
+ spawnDevServer,
12
+ startDevServers,
13
+ stopAllProcesses,
14
+ stopProcess,
15
+ } from "../../index-mm412dkp.js";
16
+ import "../../index-qnx9j3qa.js";
17
+ export {
18
+ stopProcess,
19
+ stopAllProcesses,
20
+ startDevServers,
21
+ spawnDevServer,
22
+ killProcessesOnAppPorts,
23
+ killProcessOnPortAndWait,
24
+ killProcessOnPort,
25
+ isProcessAlive,
26
+ isPortInUse,
27
+ getProcessOnPort,
28
+ execAsync,
29
+ exec,
30
+ buildApps,
31
+ };
@@ -0,0 +1,11 @@
1
+ import {
2
+ getEnvVar,
3
+ isCI,
4
+ logApiUrl,
5
+ logExpoApiUrl,
6
+ logFrontendPort,
7
+ sleep,
8
+ } from "../../index-4gp0az1g.js";
9
+ import "../../index-xkvd0nsd.js";
10
+ import "../../index-qnx9j3qa.js";
11
+ export { sleep, logFrontendPort, logExpoApiUrl, logApiUrl, isCI, getEnvVar };
@@ -0,0 +1,69 @@
1
+ // src/core/watchdog-runner.ts
2
+ import { execSync } from "node:child_process";
3
+ import { existsSync, readFileSync, unlinkSync, writeFileSync } from "node:fs";
4
+
5
+ var PROJECT_NAME = process.env.WATCHDOG_PROJECT_NAME ?? "";
6
+ var HEARTBEAT_FILE = process.env.WATCHDOG_HEARTBEAT_FILE ?? "";
7
+ var PID_FILE = process.env.WATCHDOG_PID_FILE ?? "";
8
+ var IDLE_TIMEOUT = parseInt(process.env.WATCHDOG_TIMEOUT_MS ?? "600000", 10);
9
+ var COMPOSE_ARG = process.env.WATCHDOG_COMPOSE_ARG ?? "";
10
+ var CHECK_INTERVAL = 60000;
11
+ if (!PROJECT_NAME || !HEARTBEAT_FILE || !PID_FILE) {
12
+ console.error("[watchdog] Missing required environment variables");
13
+ process.exit(1);
14
+ }
15
+ var heartbeatFile = HEARTBEAT_FILE;
16
+ var pidFile = PID_FILE;
17
+ writeFileSync(pidFile, process.pid.toString());
18
+ function cleanup() {
19
+ try {
20
+ unlinkSync(pidFile);
21
+ } catch {}
22
+ try {
23
+ unlinkSync(heartbeatFile);
24
+ } catch {}
25
+ }
26
+ process.on("SIGTERM", () => {
27
+ cleanup();
28
+ process.exit(0);
29
+ });
30
+ process.on("SIGINT", () => {
31
+ cleanup();
32
+ process.exit(0);
33
+ });
34
+ console.log(`[watchdog] Started for ${PROJECT_NAME} (PID: ${process.pid})`);
35
+ console.log(`[watchdog] Idle timeout: ${IDLE_TIMEOUT / 60000} minutes`);
36
+ async function watchdog() {
37
+ while (true) {
38
+ await new Promise((r) => setTimeout(r, CHECK_INTERVAL));
39
+ if (!existsSync(heartbeatFile)) {
40
+ continue;
41
+ }
42
+ let lastBeat;
43
+ try {
44
+ const content = readFileSync(heartbeatFile, "utf-8");
45
+ lastBeat = parseInt(content, 10);
46
+ } catch {
47
+ continue;
48
+ }
49
+ if (Number.isNaN(lastBeat)) {
50
+ continue;
51
+ }
52
+ const elapsed = Date.now() - lastBeat;
53
+ if (elapsed > IDLE_TIMEOUT) {
54
+ console.log(
55
+ `[watchdog] No heartbeat for ${Math.ceil(elapsed / 60000)} minutes, shutting down...`,
56
+ );
57
+ try {
58
+ execSync(`docker compose ${COMPOSE_ARG} down`.trim(), {
59
+ env: { ...process.env, COMPOSE_PROJECT_NAME: PROJECT_NAME },
60
+ stdio: "ignore",
61
+ });
62
+ } catch {}
63
+ console.log("[watchdog] Containers stopped");
64
+ cleanup();
65
+ process.exit(0);
66
+ }
67
+ }
68
+ }
69
+ watchdog();
@@ -0,0 +1,28 @@
1
+ import {
2
+ getHeartbeatFile,
3
+ getWatchdogComposeArg,
4
+ getWatchdogPid,
5
+ getWatchdogPidFile,
6
+ isWatchdogRunning,
7
+ readHeartbeat,
8
+ removeHeartbeatFile,
9
+ spawnWatchdog,
10
+ startHeartbeat,
11
+ stopHeartbeat,
12
+ stopWatchdog,
13
+ } from "../../index-mam0bcyz.js";
14
+ import "../../index-mm412dkp.js";
15
+ import "../../index-qnx9j3qa.js";
16
+ export {
17
+ stopWatchdog,
18
+ stopHeartbeat,
19
+ startHeartbeat,
20
+ spawnWatchdog,
21
+ removeHeartbeatFile,
22
+ readHeartbeat,
23
+ isWatchdogRunning,
24
+ getWatchdogPidFile,
25
+ getWatchdogPid,
26
+ getWatchdogComposeArg,
27
+ getHeartbeatFile,
28
+ };