openboot 0.1.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 (79) hide show
  1. package/LICENSE +110 -0
  2. package/README.md +273 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +132 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/clean.d.ts +7 -0
  8. package/dist/commands/clean.d.ts.map +1 -0
  9. package/dist/commands/clean.js +173 -0
  10. package/dist/commands/clean.js.map +1 -0
  11. package/dist/commands/dev.d.ts +7 -0
  12. package/dist/commands/dev.d.ts.map +1 -0
  13. package/dist/commands/dev.js +92 -0
  14. package/dist/commands/dev.js.map +1 -0
  15. package/dist/commands/down.d.ts +5 -0
  16. package/dist/commands/down.d.ts.map +1 -0
  17. package/dist/commands/down.js +33 -0
  18. package/dist/commands/down.js.map +1 -0
  19. package/dist/commands/init.d.ts +5 -0
  20. package/dist/commands/init.d.ts.map +1 -0
  21. package/dist/commands/init.js +560 -0
  22. package/dist/commands/init.js.map +1 -0
  23. package/dist/commands/logs.d.ts +14 -0
  24. package/dist/commands/logs.d.ts.map +1 -0
  25. package/dist/commands/logs.js +243 -0
  26. package/dist/commands/logs.js.map +1 -0
  27. package/dist/commands/reboot.d.ts +5 -0
  28. package/dist/commands/reboot.d.ts.map +1 -0
  29. package/dist/commands/reboot.js +15 -0
  30. package/dist/commands/reboot.js.map +1 -0
  31. package/dist/commands/setup.d.ts +5 -0
  32. package/dist/commands/setup.d.ts.map +1 -0
  33. package/dist/commands/setup.js +200 -0
  34. package/dist/commands/setup.js.map +1 -0
  35. package/dist/commands/status.d.ts +5 -0
  36. package/dist/commands/status.d.ts.map +1 -0
  37. package/dist/commands/status.js +200 -0
  38. package/dist/commands/status.js.map +1 -0
  39. package/dist/commands/up.d.ts +7 -0
  40. package/dist/commands/up.d.ts.map +1 -0
  41. package/dist/commands/up.js +325 -0
  42. package/dist/commands/up.js.map +1 -0
  43. package/dist/lib/config.d.ts +18 -0
  44. package/dist/lib/config.d.ts.map +1 -0
  45. package/dist/lib/config.js +95 -0
  46. package/dist/lib/config.js.map +1 -0
  47. package/dist/lib/docker.d.ts +19 -0
  48. package/dist/lib/docker.d.ts.map +1 -0
  49. package/dist/lib/docker.js +511 -0
  50. package/dist/lib/docker.js.map +1 -0
  51. package/dist/lib/health.d.ts +5 -0
  52. package/dist/lib/health.d.ts.map +1 -0
  53. package/dist/lib/health.js +80 -0
  54. package/dist/lib/health.js.map +1 -0
  55. package/dist/lib/log.d.ts +11 -0
  56. package/dist/lib/log.d.ts.map +1 -0
  57. package/dist/lib/log.js +51 -0
  58. package/dist/lib/log.js.map +1 -0
  59. package/dist/lib/ports.d.ts +13 -0
  60. package/dist/lib/ports.d.ts.map +1 -0
  61. package/dist/lib/ports.js +45 -0
  62. package/dist/lib/ports.js.map +1 -0
  63. package/dist/lib/prereqs.d.ts +8 -0
  64. package/dist/lib/prereqs.d.ts.map +1 -0
  65. package/dist/lib/prereqs.js +78 -0
  66. package/dist/lib/prereqs.js.map +1 -0
  67. package/dist/lib/process.d.ts +38 -0
  68. package/dist/lib/process.d.ts.map +1 -0
  69. package/dist/lib/process.js +285 -0
  70. package/dist/lib/process.js.map +1 -0
  71. package/dist/lib/tail.d.ts +12 -0
  72. package/dist/lib/tail.d.ts.map +1 -0
  73. package/dist/lib/tail.js +136 -0
  74. package/dist/lib/tail.js.map +1 -0
  75. package/dist/types.d.ts +71 -0
  76. package/dist/types.d.ts.map +1 -0
  77. package/dist/types.js +3 -0
  78. package/dist/types.js.map +1 -0
  79. package/package.json +29 -0
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.clean = clean;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const config_1 = require("../lib/config");
40
+ const log_1 = require("../lib/log");
41
+ /**
42
+ * Common cache and build output directories to clean.
43
+ */
44
+ const CACHE_DIRS = [
45
+ ".nuxt",
46
+ ".next",
47
+ ".output",
48
+ ".turbo",
49
+ ".parcel-cache",
50
+ ".vite",
51
+ ];
52
+ const BUILD_DIRS = ["dist", "build", ".output"];
53
+ const LOCKFILES = [
54
+ "package-lock.json",
55
+ "yarn.lock",
56
+ ];
57
+ /**
58
+ * `boot clean` — nuke dependencies, caches, and build outputs for a fresh start.
59
+ */
60
+ async function clean(options = {}) {
61
+ let config;
62
+ try {
63
+ config = (0, config_1.loadConfig)();
64
+ }
65
+ catch {
66
+ config = null;
67
+ }
68
+ const projectName = config?.name || path.basename(process.cwd());
69
+ log_1.log.header(`Cleaning ${projectName}`);
70
+ const cwd = process.cwd();
71
+ let removed = 0;
72
+ // 1. Collect all app directories
73
+ const appDirs = [cwd];
74
+ if (config?.apps) {
75
+ for (const app of config.apps) {
76
+ if (app.path) {
77
+ const appDir = path.resolve(cwd, app.path);
78
+ if (fs.existsSync(appDir)) {
79
+ appDirs.push(appDir);
80
+ }
81
+ }
82
+ }
83
+ }
84
+ // Also scan apps/ directory for monorepo sub-apps not in config
85
+ const monorepoAppsDir = path.join(cwd, "apps");
86
+ if (fs.existsSync(monorepoAppsDir) && fs.statSync(monorepoAppsDir).isDirectory()) {
87
+ for (const dir of fs.readdirSync(monorepoAppsDir)) {
88
+ const fullPath = path.join(monorepoAppsDir, dir);
89
+ if (fs.statSync(fullPath).isDirectory() &&
90
+ fs.existsSync(path.join(fullPath, "package.json"))) {
91
+ if (!appDirs.includes(fullPath)) {
92
+ appDirs.push(fullPath);
93
+ }
94
+ }
95
+ }
96
+ }
97
+ // 2. Remove node_modules in all app dirs
98
+ log_1.log.info("Removing node_modules...");
99
+ for (const dir of appDirs) {
100
+ const nm = path.join(dir, "node_modules");
101
+ if (fs.existsSync(nm)) {
102
+ const label = path.relative(cwd, nm) || "node_modules";
103
+ fs.rmSync(nm, { recursive: true, force: true });
104
+ log_1.log.success(`Removed ${label}`);
105
+ removed++;
106
+ }
107
+ }
108
+ // 3. Remove lockfiles (except pnpm-lock.yaml unless --all)
109
+ log_1.log.info("Removing lockfiles...");
110
+ for (const dir of appDirs) {
111
+ for (const lockfile of LOCKFILES) {
112
+ const lf = path.join(dir, lockfile);
113
+ if (fs.existsSync(lf)) {
114
+ fs.rmSync(lf, { force: true });
115
+ const label = path.relative(cwd, lf) || lockfile;
116
+ log_1.log.success(`Removed ${label}`);
117
+ removed++;
118
+ }
119
+ }
120
+ }
121
+ if (options.all) {
122
+ // Also remove pnpm-lock.yaml
123
+ const pnpmLock = path.join(cwd, "pnpm-lock.yaml");
124
+ if (fs.existsSync(pnpmLock)) {
125
+ fs.rmSync(pnpmLock, { force: true });
126
+ log_1.log.success("Removed pnpm-lock.yaml");
127
+ removed++;
128
+ }
129
+ }
130
+ // 4. Remove caches
131
+ log_1.log.info("Removing caches...");
132
+ for (const dir of appDirs) {
133
+ for (const cache of CACHE_DIRS) {
134
+ const cd = path.join(dir, cache);
135
+ if (fs.existsSync(cd)) {
136
+ fs.rmSync(cd, { recursive: true, force: true });
137
+ const label = path.relative(cwd, cd) || cache;
138
+ log_1.log.success(`Removed ${label}`);
139
+ removed++;
140
+ }
141
+ }
142
+ }
143
+ // 5. Remove build outputs
144
+ log_1.log.info("Removing build outputs...");
145
+ for (const dir of appDirs) {
146
+ for (const build of BUILD_DIRS) {
147
+ const bd = path.join(dir, build);
148
+ if (fs.existsSync(bd)) {
149
+ fs.rmSync(bd, { recursive: true, force: true });
150
+ const label = path.relative(cwd, bd) || build;
151
+ log_1.log.success(`Removed ${label}`);
152
+ removed++;
153
+ }
154
+ }
155
+ }
156
+ // 6. Remove .boot runtime data
157
+ const bootDir = path.join(cwd, ".boot");
158
+ if (fs.existsSync(bootDir)) {
159
+ fs.rmSync(bootDir, { recursive: true, force: true });
160
+ log_1.log.success("Removed .boot/");
161
+ removed++;
162
+ }
163
+ log_1.log.blank();
164
+ if (removed === 0) {
165
+ log_1.log.step("Nothing to clean");
166
+ }
167
+ else {
168
+ log_1.log.success(`Cleaned ${removed} items`);
169
+ log_1.log.step("Run 'boot setup' or 'boot up' to reinstall and start fresh.");
170
+ }
171
+ log_1.log.blank();
172
+ }
173
+ //# sourceMappingURL=clean.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clean.js","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * `boot dev` — interactive development mode.
3
+ * Starts everything (docker + apps) and streams all logs in the foreground.
4
+ * Ctrl+C gracefully stops all services.
5
+ */
6
+ export declare function dev(): Promise<void>;
7
+ //# sourceMappingURL=dev.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AASA;;;;GAIG;AACH,wBAAsB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAyFzC"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dev = dev;
4
+ const config_1 = require("../lib/config");
5
+ const docker_1 = require("../lib/docker");
6
+ const process_1 = require("../lib/process");
7
+ const docker_2 = require("../lib/docker");
8
+ const health_1 = require("../lib/health");
9
+ const log_1 = require("../lib/log");
10
+ const prereqs_1 = require("../lib/prereqs");
11
+ const tail_1 = require("../lib/tail");
12
+ /**
13
+ * `boot dev` — interactive development mode.
14
+ * Starts everything (docker + apps) and streams all logs in the foreground.
15
+ * Ctrl+C gracefully stops all services.
16
+ */
17
+ async function dev() {
18
+ const config = (0, config_1.loadConfig)();
19
+ if (!config)
20
+ return;
21
+ const needsDocker = !!(config.docker?.composeFile ||
22
+ (config.docker?.containers && config.docker.containers.length > 0));
23
+ if (!(0, prereqs_1.checkPrerequisites)({ needsDocker })) {
24
+ return;
25
+ }
26
+ const projectRoot = process.cwd();
27
+ log_1.log.header(`${config.name} — dev mode`);
28
+ log_1.log.blank();
29
+ // Start Docker services
30
+ if (config.docker) {
31
+ (0, docker_1.startDocker)(config);
32
+ log_1.log.blank();
33
+ }
34
+ // Start app processes
35
+ if (config.apps) {
36
+ for (const app of config.apps) {
37
+ (0, process_1.startApp)(app, projectRoot);
38
+ }
39
+ // Wait for health checks
40
+ for (const app of config.apps) {
41
+ if (app.health) {
42
+ log_1.log.info(`Waiting for ${app.name} to be healthy...`);
43
+ const healthy = await (0, health_1.waitForHealth)(app.health, 45);
44
+ if (healthy) {
45
+ log_1.log.success(`${app.name} is ready`);
46
+ }
47
+ else {
48
+ log_1.log.warn(`${app.name} may not be ready (timed out)`);
49
+ }
50
+ }
51
+ }
52
+ }
53
+ // Summary
54
+ log_1.log.blank();
55
+ log_1.log.header(`${config.name} is running`);
56
+ if (config.apps) {
57
+ for (const app of config.apps) {
58
+ if (app.port) {
59
+ log_1.log.step(`${app.name}: http://localhost:${app.port}`);
60
+ }
61
+ else {
62
+ log_1.log.step(`${app.name}: started`);
63
+ }
64
+ }
65
+ }
66
+ log_1.log.blank();
67
+ // Stream logs — Ctrl+C stops everything
68
+ const handle = (0, tail_1.tailAllLogs)(config);
69
+ await new Promise((resolve) => {
70
+ const shutdown = () => {
71
+ handle.stop();
72
+ log_1.log.blank();
73
+ log_1.log.header("Shutting down...");
74
+ log_1.log.blank();
75
+ // Stop apps
76
+ if (config.apps) {
77
+ (0, process_1.stopAllApps)(config.apps);
78
+ }
79
+ // Stop Docker
80
+ if (config.docker) {
81
+ (0, docker_2.stopDocker)(config);
82
+ }
83
+ log_1.log.blank();
84
+ log_1.log.success(`${config.name} stopped`);
85
+ log_1.log.blank();
86
+ resolve();
87
+ };
88
+ process.on("SIGINT", shutdown);
89
+ process.on("SIGTERM", shutdown);
90
+ });
91
+ }
92
+ //# sourceMappingURL=dev.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * `boot down` — stop all services.
3
+ */
4
+ export declare function down(): Promise<void>;
5
+ //# sourceMappingURL=down.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"down.d.ts","sourceRoot":"","sources":["../../src/commands/down.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAwB1C"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.down = down;
4
+ const config_1 = require("../lib/config");
5
+ const docker_1 = require("../lib/docker");
6
+ const process_1 = require("../lib/process");
7
+ const log_1 = require("../lib/log");
8
+ /**
9
+ * `boot down` — stop all services.
10
+ */
11
+ async function down() {
12
+ let config;
13
+ try {
14
+ config = (0, config_1.loadConfig)();
15
+ }
16
+ catch {
17
+ // Even without config, try to stop any running apps
18
+ log_1.log.info("No boot.yaml found — stopping any tracked processes...");
19
+ (0, process_1.stopAllApps)();
20
+ return;
21
+ }
22
+ log_1.log.header(`Stopping ${config.name}`);
23
+ // Stop app processes first (pass configs for pkill fallback + port cleanup)
24
+ (0, process_1.stopAllApps)(config.apps);
25
+ // Stop Docker services
26
+ if (config.docker) {
27
+ (0, docker_1.stopDocker)(config);
28
+ }
29
+ log_1.log.blank();
30
+ log_1.log.success("All services stopped");
31
+ log_1.log.blank();
32
+ }
33
+ //# sourceMappingURL=down.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"down.js","sourceRoot":"","sources":["../../src/commands/down.ts"],"names":[],"mappings":";;AAQA,oBAwBC;AAhCD,0CAA2C;AAC3C,0CAA2C;AAC3C,4CAA6C;AAC7C,oCAAiC;AAEjC;;GAEG;AACI,KAAK,UAAU,IAAI;IACxB,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,oDAAoD;QACpD,SAAG,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;QACnE,IAAA,qBAAW,GAAE,CAAC;QACd,OAAO;IACT,CAAC;IAED,SAAG,CAAC,MAAM,CAAC,YAAY,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAEtC,4EAA4E;IAC5E,IAAA,qBAAW,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEzB,uBAAuB;IACvB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,IAAA,mBAAU,EAAC,MAAM,CAAC,CAAC;IACrB,CAAC;IAED,SAAG,CAAC,KAAK,EAAE,CAAC;IACZ,SAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACpC,SAAG,CAAC,KAAK,EAAE,CAAC;AACd,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * `boot init` — auto-detect project structure and create boot.yaml.
3
+ */
4
+ export declare function init(): Promise<void>;
5
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAYA;;GAEG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAuN1C"}