vonosan-cli 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.
- package/dist/__tests__/env-parity.pbt.test.d.ts +15 -0
- package/dist/__tests__/env-parity.pbt.test.d.ts.map +1 -0
- package/dist/__tests__/env-parity.pbt.test.js +125 -0
- package/dist/__tests__/env-parity.pbt.test.js.map +1 -0
- package/dist/__tests__/module-generator.pbt.test.d.ts +15 -0
- package/dist/__tests__/module-generator.pbt.test.d.ts.map +1 -0
- package/dist/__tests__/module-generator.pbt.test.js +130 -0
- package/dist/__tests__/module-generator.pbt.test.js.map +1 -0
- package/dist/commands/add.d.ts +21 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +128 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/audit.d.ts +18 -0
- package/dist/commands/audit.d.ts.map +1 -0
- package/dist/commands/audit.js +73 -0
- package/dist/commands/audit.js.map +1 -0
- package/dist/commands/branch-finish.d.ts +19 -0
- package/dist/commands/branch-finish.d.ts.map +1 -0
- package/dist/commands/branch-finish.js +80 -0
- package/dist/commands/branch-finish.js.map +1 -0
- package/dist/commands/branch-new.d.ts +17 -0
- package/dist/commands/branch-new.d.ts.map +1 -0
- package/dist/commands/branch-new.js +70 -0
- package/dist/commands/branch-new.js.map +1 -0
- package/dist/commands/commit.d.ts +21 -0
- package/dist/commands/commit.d.ts.map +1 -0
- package/dist/commands/commit.js +79 -0
- package/dist/commands/commit.js.map +1 -0
- package/dist/commands/db.d.ts +28 -0
- package/dist/commands/db.d.ts.map +1 -0
- package/dist/commands/db.js +83 -0
- package/dist/commands/db.js.map +1 -0
- package/dist/commands/env-add.d.ts +17 -0
- package/dist/commands/env-add.d.ts.map +1 -0
- package/dist/commands/env-add.js +73 -0
- package/dist/commands/env-add.js.map +1 -0
- package/dist/commands/fix-headers.d.ts +15 -0
- package/dist/commands/fix-headers.d.ts.map +1 -0
- package/dist/commands/fix-headers.js +37 -0
- package/dist/commands/fix-headers.js.map +1 -0
- package/dist/commands/fix-logs.d.ts +15 -0
- package/dist/commands/fix-logs.d.ts.map +1 -0
- package/dist/commands/fix-logs.js +87 -0
- package/dist/commands/fix-logs.js.map +1 -0
- package/dist/commands/jobs.d.ts +17 -0
- package/dist/commands/jobs.d.ts.map +1 -0
- package/dist/commands/jobs.js +107 -0
- package/dist/commands/jobs.js.map +1 -0
- package/dist/commands/lint.d.ts +15 -0
- package/dist/commands/lint.d.ts.map +1 -0
- package/dist/commands/lint.js +49 -0
- package/dist/commands/lint.js.map +1 -0
- package/dist/commands/make.d.ts +31 -0
- package/dist/commands/make.d.ts.map +1 -0
- package/dist/commands/make.js +176 -0
- package/dist/commands/make.js.map +1 -0
- package/dist/commands/migrate.d.ts +43 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +120 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/schema-sync.d.ts +17 -0
- package/dist/commands/schema-sync.d.ts.map +1 -0
- package/dist/commands/schema-sync.js +48 -0
- package/dist/commands/schema-sync.js.map +1 -0
- package/dist/commands/test.d.ts +19 -0
- package/dist/commands/test.d.ts.map +1 -0
- package/dist/commands/test.js +113 -0
- package/dist/commands/test.js.map +1 -0
- package/dist/commands/upgrade.d.ts +24 -0
- package/dist/commands/upgrade.d.ts.map +1 -0
- package/dist/commands/upgrade.js +177 -0
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/generators/deployment/docker-compose.d.ts +20 -0
- package/dist/generators/deployment/docker-compose.d.ts.map +1 -0
- package/dist/generators/deployment/docker-compose.js +95 -0
- package/dist/generators/deployment/docker-compose.js.map +1 -0
- package/dist/generators/deployment/dockerfile.d.ts +18 -0
- package/dist/generators/deployment/dockerfile.d.ts.map +1 -0
- package/dist/generators/deployment/dockerfile.js +99 -0
- package/dist/generators/deployment/dockerfile.js.map +1 -0
- package/dist/generators/deployment/pm2.d.ts +17 -0
- package/dist/generators/deployment/pm2.d.ts.map +1 -0
- package/dist/generators/deployment/pm2.js +59 -0
- package/dist/generators/deployment/pm2.js.map +1 -0
- package/dist/generators/deployment/secrets.d.ts +19 -0
- package/dist/generators/deployment/secrets.d.ts.map +1 -0
- package/dist/generators/deployment/secrets.js +41 -0
- package/dist/generators/deployment/secrets.js.map +1 -0
- package/dist/generators/deployment/shutdown.d.ts +17 -0
- package/dist/generators/deployment/shutdown.d.ts.map +1 -0
- package/dist/generators/deployment/shutdown.js +61 -0
- package/dist/generators/deployment/shutdown.js.map +1 -0
- package/dist/generators/deployment/wrangler.d.ts +25 -0
- package/dist/generators/deployment/wrangler.d.ts.map +1 -0
- package/dist/generators/deployment/wrangler.js +93 -0
- package/dist/generators/deployment/wrangler.js.map +1 -0
- package/dist/generators/file-generators.d.ts +38 -0
- package/dist/generators/file-generators.d.ts.map +1 -0
- package/dist/generators/file-generators.js +546 -0
- package/dist/generators/file-generators.js.map +1 -0
- package/dist/generators/module-generator.d.ts +33 -0
- package/dist/generators/module-generator.d.ts.map +1 -0
- package/dist/generators/module-generator.js +61 -0
- package/dist/generators/module-generator.js.map +1 -0
- package/dist/header-generator.d.ts +34 -0
- package/dist/header-generator.d.ts.map +1 -0
- package/dist/header-generator.js +77 -0
- package/dist/header-generator.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +177 -0
- package/dist/index.js.map +1 -0
- package/dist/linter/env-parity.d.ts +28 -0
- package/dist/linter/env-parity.d.ts.map +1 -0
- package/dist/linter/env-parity.js +59 -0
- package/dist/linter/env-parity.js.map +1 -0
- package/dist/linter.d.ts +23 -0
- package/dist/linter.d.ts.map +1 -0
- package/dist/linter.js +207 -0
- package/dist/linter.js.map +1 -0
- package/package.json +32 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ──────────────────────────────────────────────────────────────────
|
|
3
|
+
* 🏢 Company Name: Bonifade Technologies
|
|
4
|
+
* 👨💻 Developer: Bowofade Oyerinde
|
|
5
|
+
* 🐙 GitHub: oyenet1
|
|
6
|
+
* 📅 Created Date: 2026-04-05
|
|
7
|
+
* 🔄 Updated Date: 2026-04-05
|
|
8
|
+
* ──────────────────────────────────────────────────────────────────
|
|
9
|
+
*/
|
|
10
|
+
import { execSync } from 'node:child_process';
|
|
11
|
+
import { runSchemaSync } from './schema-sync.js';
|
|
12
|
+
const green = (s) => `\x1b[32m${s}\x1b[0m`;
|
|
13
|
+
const red = (s) => `\x1b[31m${s}\x1b[0m`;
|
|
14
|
+
const bold = (s) => `\x1b[1m${s}\x1b[0m`;
|
|
15
|
+
/** Runs a shell command, inheriting stdio so output streams to the terminal. */
|
|
16
|
+
function run(cmd) {
|
|
17
|
+
execSync(cmd, { stdio: 'inherit', cwd: process.cwd() });
|
|
18
|
+
}
|
|
19
|
+
/** Runs a shell command and returns stdout as a string. */
|
|
20
|
+
function capture(cmd) {
|
|
21
|
+
return execSync(cmd, { encoding: 'utf8', cwd: process.cwd() }).trim();
|
|
22
|
+
}
|
|
23
|
+
// ─── migrate:run ─────────────────────────────────────────────────────────────
|
|
24
|
+
/**
|
|
25
|
+
* `vonosan migrate:run` — applies all pending Drizzle migrations.
|
|
26
|
+
*/
|
|
27
|
+
export async function runMigrateRun(_args) {
|
|
28
|
+
process.stdout.write(bold('Running migrations …\n'));
|
|
29
|
+
run('bunx drizzle-kit migrate');
|
|
30
|
+
process.stdout.write(green('✔ Migrations applied.\n'));
|
|
31
|
+
}
|
|
32
|
+
// ─── migrate:rollback ─────────────────────────────────────────────────────────
|
|
33
|
+
/**
|
|
34
|
+
* `vonosan migrate:rollback` — rolls back the last applied migration.
|
|
35
|
+
*
|
|
36
|
+
* Drizzle Kit does not have a native rollback command; we implement it by
|
|
37
|
+
* dropping the last entry from the drizzle migrations journal and re-running
|
|
38
|
+
* the remaining migrations. This is a best-effort approach — for production
|
|
39
|
+
* use, write explicit down-migration SQL.
|
|
40
|
+
*/
|
|
41
|
+
export async function runMigrateRollback(_args) {
|
|
42
|
+
process.stdout.write(bold('Rolling back last migration …\n'));
|
|
43
|
+
// Drizzle Kit does not expose a rollback command directly.
|
|
44
|
+
// We delegate to a project-level script if present, otherwise warn.
|
|
45
|
+
try {
|
|
46
|
+
run('bunx drizzle-kit drop');
|
|
47
|
+
process.stdout.write(green('✔ Last migration rolled back.\n'));
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
process.stderr.write(red('✖ drizzle-kit drop failed or is not supported in your version.\n' +
|
|
51
|
+
' Write explicit down-migration SQL and apply it manually.\n'));
|
|
52
|
+
process.exit(1);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// ─── migrate:status ───────────────────────────────────────────────────────────
|
|
56
|
+
/**
|
|
57
|
+
* `vonosan migrate:status` — shows the current migration status.
|
|
58
|
+
*/
|
|
59
|
+
export async function runMigrateStatus(_args) {
|
|
60
|
+
process.stdout.write(bold('Migration status:\n'));
|
|
61
|
+
run('bunx drizzle-kit status');
|
|
62
|
+
}
|
|
63
|
+
// ─── migrate:reset ────────────────────────────────────────────────────────────
|
|
64
|
+
/**
|
|
65
|
+
* `vonosan migrate:reset` — rolls back all migrations then re-runs them.
|
|
66
|
+
*/
|
|
67
|
+
export async function runMigrateReset(_args) {
|
|
68
|
+
process.stdout.write(bold('Resetting database …\n'));
|
|
69
|
+
// Drop all tables by pushing an empty schema, then re-run migrations
|
|
70
|
+
try {
|
|
71
|
+
run('bunx drizzle-kit drop --all');
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
// Some versions don't support --all; continue anyway
|
|
75
|
+
}
|
|
76
|
+
run('bunx drizzle-kit migrate');
|
|
77
|
+
process.stdout.write(green('✔ Database reset complete.\n'));
|
|
78
|
+
}
|
|
79
|
+
// ─── migrate:fresh ────────────────────────────────────────────────────────────
|
|
80
|
+
/**
|
|
81
|
+
* `vonosan migrate:fresh [--seed]`
|
|
82
|
+
*
|
|
83
|
+
* Drops all tables, re-runs all migrations, and optionally runs seeds.
|
|
84
|
+
*/
|
|
85
|
+
export async function runMigrateFresh(args) {
|
|
86
|
+
const seed = args.includes('--seed');
|
|
87
|
+
process.stdout.write(bold('Fresh migration …\n'));
|
|
88
|
+
try {
|
|
89
|
+
run('bunx drizzle-kit drop --all');
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
// Ignore — table may not exist yet
|
|
93
|
+
}
|
|
94
|
+
run('bunx drizzle-kit migrate');
|
|
95
|
+
process.stdout.write(green('✔ Migrations applied.\n'));
|
|
96
|
+
if (seed) {
|
|
97
|
+
process.stdout.write(bold('Running seeds …\n'));
|
|
98
|
+
run('bun run src/db/seeds/index.ts');
|
|
99
|
+
process.stdout.write(green('✔ Seeds complete.\n'));
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// ─── migrate:make ─────────────────────────────────────────────────────────────
|
|
103
|
+
/**
|
|
104
|
+
* `vonosan migrate:make <name>`
|
|
105
|
+
*
|
|
106
|
+
* Syncs the schema barrel first, then generates a new Drizzle migration.
|
|
107
|
+
*/
|
|
108
|
+
export async function runMigrateMake(args) {
|
|
109
|
+
const [name] = args;
|
|
110
|
+
if (!name) {
|
|
111
|
+
process.stderr.write(red('Usage: vonosan migrate:make <name>\n'));
|
|
112
|
+
process.exit(1);
|
|
113
|
+
}
|
|
114
|
+
process.stdout.write(bold('Syncing schema barrel …\n'));
|
|
115
|
+
await runSchemaSync([]);
|
|
116
|
+
process.stdout.write(bold(`Generating migration "${name}" …\n`));
|
|
117
|
+
run(`bunx drizzle-kit generate --name=${name}`);
|
|
118
|
+
process.stdout.write(green(`✔ Migration "${name}" generated.\n`));
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ──────────────────────────────────────────────────────────────────
|
|
3
|
+
* 🏢 Company Name: Bonifade Technologies
|
|
4
|
+
* 👨💻 Developer: Bowofade Oyerinde
|
|
5
|
+
* 🐙 GitHub: oyenet1
|
|
6
|
+
* 📅 Created Date: 2026-04-05
|
|
7
|
+
* 🔄 Updated Date: 2026-04-05
|
|
8
|
+
* ──────────────────────────────────────────────────────────────────
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* `vonosan schema:sync`
|
|
12
|
+
*
|
|
13
|
+
* Scans all `*.schema.ts` files under `src/modules/` and regenerates
|
|
14
|
+
* `src/db/schema.ts` as a re-export barrel.
|
|
15
|
+
*/
|
|
16
|
+
export declare function runSchemaSync(_args: string[]): Promise<void>;
|
|
17
|
+
//# sourceMappingURL=schema-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-sync.d.ts","sourceRoot":"","sources":["../../src/commands/schema-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAYH;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgClE"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ──────────────────────────────────────────────────────────────────
|
|
3
|
+
* 🏢 Company Name: Bonifade Technologies
|
|
4
|
+
* 👨💻 Developer: Bowofade Oyerinde
|
|
5
|
+
* 🐙 GitHub: oyenet1
|
|
6
|
+
* 📅 Created Date: 2026-04-05
|
|
7
|
+
* 🔄 Updated Date: 2026-04-05
|
|
8
|
+
* ──────────────────────────────────────────────────────────────────
|
|
9
|
+
*/
|
|
10
|
+
import { writeFileSync } from 'node:fs';
|
|
11
|
+
import { join, relative } from 'node:path';
|
|
12
|
+
import fg from 'fast-glob';
|
|
13
|
+
import { generateHeader } from '../header-generator.js';
|
|
14
|
+
const green = (s) => `\x1b[32m${s}\x1b[0m`;
|
|
15
|
+
const bold = (s) => `\x1b[1m${s}\x1b[0m`;
|
|
16
|
+
const BARREL_PATH = join(process.cwd(), 'src', 'db', 'schema.ts');
|
|
17
|
+
/**
|
|
18
|
+
* `vonosan schema:sync`
|
|
19
|
+
*
|
|
20
|
+
* Scans all `*.schema.ts` files under `src/modules/` and regenerates
|
|
21
|
+
* `src/db/schema.ts` as a re-export barrel.
|
|
22
|
+
*/
|
|
23
|
+
export async function runSchemaSync(_args) {
|
|
24
|
+
const modulesDir = join(process.cwd(), 'src', 'modules');
|
|
25
|
+
const pattern = join(modulesDir, '**/*.schema.ts').replace(/\\/g, '/');
|
|
26
|
+
const schemaFiles = await fg(pattern, {
|
|
27
|
+
absolute: true,
|
|
28
|
+
ignore: ['**/node_modules/**', '**/dist/**'],
|
|
29
|
+
});
|
|
30
|
+
if (schemaFiles.length === 0) {
|
|
31
|
+
process.stdout.write(`No *.schema.ts files found under src/modules/ — barrel unchanged.\n`);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const barrelDir = join(process.cwd(), 'src', 'db');
|
|
35
|
+
const exports = schemaFiles
|
|
36
|
+
.sort()
|
|
37
|
+
.map((filePath) => {
|
|
38
|
+
// Compute relative path from src/db/ to the schema file
|
|
39
|
+
const rel = relative(barrelDir, filePath).replace(/\\/g, '/').replace(/\.ts$/, '.js');
|
|
40
|
+
return `export * from '${rel.startsWith('.') ? rel : './' + rel}'`;
|
|
41
|
+
})
|
|
42
|
+
.join('\n');
|
|
43
|
+
const header = generateHeader(BARREL_PATH);
|
|
44
|
+
const content = `${header}\n\n// Auto-generated by \`vonosan schema:sync\` — do not edit manually.\n// Re-run \`vonosan schema:sync\` after adding or removing schema files.\n\n${exports}\n`;
|
|
45
|
+
writeFileSync(BARREL_PATH, content, 'utf8');
|
|
46
|
+
process.stdout.write(`${bold('schema:sync')} — regenerated ${green(BARREL_PATH)} with ${schemaFiles.length} schema${schemaFiles.length === 1 ? '' : 's'}.\n`);
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=schema-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-sync.js","sourceRoot":"","sources":["../../src/commands/schema-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAE,MAAM,WAAW,CAAA;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAEvD,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAA;AAClD,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAA;AAEhD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC,CAAA;AAEjE;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAe;IACjD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;IACxD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAEtE,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,OAAO,EAAE;QACpC,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,CAAC,oBAAoB,EAAE,YAAY,CAAC;KAC7C,CAAC,CAAA;IAEF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAA;QAC3F,OAAM;IACR,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;IAClD,MAAM,OAAO,GAAG,WAAW;SACxB,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QAChB,wDAAwD;QACxD,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QACrF,OAAO,kBAAkB,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,CAAA;IACpE,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,MAAM,MAAM,GAAG,cAAc,CAAC,WAAW,CAAC,CAAA;IAC1C,MAAM,OAAO,GAAG,GAAG,MAAM,yJAAyJ,OAAO,IAAI,CAAA;IAE7L,aAAa,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IAE3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,KAAK,CAAC,WAAW,CAAC,SAAS,WAAW,CAAC,MAAM,UAAU,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CACxI,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ──────────────────────────────────────────────────────────────────
|
|
3
|
+
* 🏢 Company Name: Bonifade Technologies
|
|
4
|
+
* 👨💻 Developer: Bowofade Oyerinde
|
|
5
|
+
* 🐙 GitHub: oyenet1
|
|
6
|
+
* 📅 Created Date: 2026-04-05
|
|
7
|
+
* 🔄 Updated Date: 2026-04-05
|
|
8
|
+
* ──────────────────────────────────────────────────────────────────
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* vonosan test — executes the configured test runner and reports results.
|
|
12
|
+
*/
|
|
13
|
+
export declare function runTest(_args: string[]): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* vonosan test:clean — runs tests first, then deletes **\/*.test.ts
|
|
16
|
+
* only if ALL tests pass. Reports error without deleting if any fail.
|
|
17
|
+
*/
|
|
18
|
+
export declare function runTestClean(_args: string[]): Promise<void>;
|
|
19
|
+
//# sourceMappingURL=test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAqDH;;GAEG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB5D;AAID;;;GAGG;AACH,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4CjE"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ──────────────────────────────────────────────────────────────────
|
|
3
|
+
* 🏢 Company Name: Bonifade Technologies
|
|
4
|
+
* 👨💻 Developer: Bowofade Oyerinde
|
|
5
|
+
* 🐙 GitHub: oyenet1
|
|
6
|
+
* 📅 Created Date: 2026-04-05
|
|
7
|
+
* 🔄 Updated Date: 2026-04-05
|
|
8
|
+
* ──────────────────────────────────────────────────────────────────
|
|
9
|
+
*/
|
|
10
|
+
import { spawnSync } from 'node:child_process';
|
|
11
|
+
import { existsSync, readFileSync, unlinkSync } from 'node:fs';
|
|
12
|
+
import { join } from 'node:path';
|
|
13
|
+
import { glob } from 'glob';
|
|
14
|
+
// ─── Helpers ─────────────────────────────────────────────────────────
|
|
15
|
+
const green = (s) => `\x1b[32m${s}\x1b[0m`;
|
|
16
|
+
const red = (s) => `\x1b[31m${s}\x1b[0m`;
|
|
17
|
+
const yellow = (s) => `\x1b[33m${s}\x1b[0m`;
|
|
18
|
+
const bold = (s) => `\x1b[1m${s}\x1b[0m`;
|
|
19
|
+
/**
|
|
20
|
+
* Detect the configured test runner from package.json or vonosan.config.ts.
|
|
21
|
+
* Defaults to 'bun'.
|
|
22
|
+
*/
|
|
23
|
+
function detectTestRunner() {
|
|
24
|
+
const pkgPath = join(process.cwd(), 'package.json');
|
|
25
|
+
if (existsSync(pkgPath)) {
|
|
26
|
+
try {
|
|
27
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'));
|
|
28
|
+
const scripts = pkg.scripts ?? {};
|
|
29
|
+
const testScript = scripts.test ?? '';
|
|
30
|
+
if (testScript.includes('vitest'))
|
|
31
|
+
return 'vitest';
|
|
32
|
+
if (testScript.includes('jest'))
|
|
33
|
+
return 'jest';
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
// fall through
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return 'bun';
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Build the test command for the given runner.
|
|
43
|
+
*/
|
|
44
|
+
function buildTestCommand(runner) {
|
|
45
|
+
switch (runner) {
|
|
46
|
+
case 'bun':
|
|
47
|
+
return { cmd: 'bun', args: ['test'] };
|
|
48
|
+
case 'vitest':
|
|
49
|
+
return { cmd: 'npx', args: ['vitest', 'run'] };
|
|
50
|
+
case 'jest':
|
|
51
|
+
return { cmd: 'npx', args: ['jest', '--passWithNoTests'] };
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// ─── runTest ─────────────────────────────────────────────────────────
|
|
55
|
+
/**
|
|
56
|
+
* vonosan test — executes the configured test runner and reports results.
|
|
57
|
+
*/
|
|
58
|
+
export async function runTest(_args) {
|
|
59
|
+
const runner = detectTestRunner();
|
|
60
|
+
const { cmd, args } = buildTestCommand(runner);
|
|
61
|
+
process.stdout.write(bold(`Running tests with ${runner}...\n\n`));
|
|
62
|
+
const result = spawnSync(cmd, args, {
|
|
63
|
+
stdio: 'inherit',
|
|
64
|
+
cwd: process.cwd(),
|
|
65
|
+
});
|
|
66
|
+
if (result.status !== 0) {
|
|
67
|
+
process.stderr.write(red('\n✖ Tests failed.\n'));
|
|
68
|
+
process.exit(result.status ?? 1);
|
|
69
|
+
}
|
|
70
|
+
process.stdout.write(green('\n✔ All tests passed.\n'));
|
|
71
|
+
}
|
|
72
|
+
// ─── runTestClean ─────────────────────────────────────────────────────
|
|
73
|
+
/**
|
|
74
|
+
* vonosan test:clean — runs tests first, then deletes **\/*.test.ts
|
|
75
|
+
* only if ALL tests pass. Reports error without deleting if any fail.
|
|
76
|
+
*/
|
|
77
|
+
export async function runTestClean(_args) {
|
|
78
|
+
const runner = detectTestRunner();
|
|
79
|
+
const { cmd, args } = buildTestCommand(runner);
|
|
80
|
+
process.stdout.write(bold(`Running tests before cleanup (${runner})...\n\n`));
|
|
81
|
+
const result = spawnSync(cmd, args, {
|
|
82
|
+
stdio: 'inherit',
|
|
83
|
+
cwd: process.cwd(),
|
|
84
|
+
});
|
|
85
|
+
if (result.status !== 0) {
|
|
86
|
+
process.stderr.write(red('\n✖ Tests failed — test files will NOT be deleted.\n') +
|
|
87
|
+
yellow(' Fix all failing tests before running test:clean.\n'));
|
|
88
|
+
process.exit(result.status ?? 1);
|
|
89
|
+
}
|
|
90
|
+
process.stdout.write(green('\n✔ All tests passed. Cleaning up test files...\n\n'));
|
|
91
|
+
// Find all test files
|
|
92
|
+
const testFiles = await glob('**/*.test.ts', {
|
|
93
|
+
cwd: process.cwd(),
|
|
94
|
+
ignore: ['node_modules/**', 'dist/**'],
|
|
95
|
+
absolute: true,
|
|
96
|
+
});
|
|
97
|
+
if (testFiles.length === 0) {
|
|
98
|
+
process.stdout.write('No test files found.\n');
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
for (const file of testFiles) {
|
|
102
|
+
try {
|
|
103
|
+
unlinkSync(file);
|
|
104
|
+
const rel = file.replace(process.cwd() + '/', '');
|
|
105
|
+
process.stdout.write(green(` - ${rel}\n`));
|
|
106
|
+
}
|
|
107
|
+
catch (err) {
|
|
108
|
+
process.stderr.write(red(` Failed to delete ${file}: ${String(err)}\n`));
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
process.stdout.write(green(`\n✔ Deleted ${testFiles.length} test file(s).\n`));
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ──────────────────────────────────────────────────────────────────
|
|
3
|
+
* 🏢 Company Name: Bonifade Technologies
|
|
4
|
+
* 👨💻 Developer: Bowofade Oyerinde
|
|
5
|
+
* 🐙 GitHub: oyenet1
|
|
6
|
+
* 📅 Created Date: 2026-04-05
|
|
7
|
+
* 🔄 Updated Date: 2026-04-05
|
|
8
|
+
* ──────────────────────────────────────────────────────────────────
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* vonosan upgrade --check
|
|
12
|
+
*
|
|
13
|
+
* Reads package.json, checks npm registry for latest versions of
|
|
14
|
+
* vonosan, vonosan-cli (or @vonosan/cli), and all installed @vonosan/* packages.
|
|
15
|
+
*/
|
|
16
|
+
export declare function runUpgradeCheck(_args: string[]): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* vonosan upgrade --apply-codemods
|
|
19
|
+
*
|
|
20
|
+
* Runs automated codemods for major version upgrades.
|
|
21
|
+
* Reports what was changed vs what needs manual review.
|
|
22
|
+
*/
|
|
23
|
+
export declare function runUpgradeApply(_args: string[]): Promise<void>;
|
|
24
|
+
//# sourceMappingURL=upgrade.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAmFH;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqEpE;AAID;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmDpE"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ──────────────────────────────────────────────────────────────────
|
|
3
|
+
* 🏢 Company Name: Bonifade Technologies
|
|
4
|
+
* 👨💻 Developer: Bowofade Oyerinde
|
|
5
|
+
* 🐙 GitHub: oyenet1
|
|
6
|
+
* 📅 Created Date: 2026-04-05
|
|
7
|
+
* 🔄 Updated Date: 2026-04-05
|
|
8
|
+
* ──────────────────────────────────────────────────────────────────
|
|
9
|
+
*/
|
|
10
|
+
import { readFileSync, existsSync } from 'node:fs';
|
|
11
|
+
import { join } from 'node:path';
|
|
12
|
+
// ─── Helpers ─────────────────────────────────────────────────────────
|
|
13
|
+
const green = (s) => `\x1b[32m${s}\x1b[0m`;
|
|
14
|
+
const yellow = (s) => `\x1b[33m${s}\x1b[0m`;
|
|
15
|
+
const red = (s) => `\x1b[31m${s}\x1b[0m`;
|
|
16
|
+
const bold = (s) => `\x1b[1m${s}\x1b[0m`;
|
|
17
|
+
/**
|
|
18
|
+
* Fetch the latest version of a package from the npm registry.
|
|
19
|
+
*/
|
|
20
|
+
async function fetchLatestVersion(packageName) {
|
|
21
|
+
try {
|
|
22
|
+
const res = await fetch(`https://registry.npmjs.org/${encodeURIComponent(packageName)}/latest`);
|
|
23
|
+
if (!res.ok)
|
|
24
|
+
return null;
|
|
25
|
+
const data = (await res.json());
|
|
26
|
+
return data.version;
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Compare semver strings — returns true if latest is a major bump.
|
|
34
|
+
*/
|
|
35
|
+
function isMajorBump(current, latest) {
|
|
36
|
+
const clean = (v) => v.replace(/^[\^~>=<]/, '');
|
|
37
|
+
const [curMajor] = clean(current).split('.').map(Number);
|
|
38
|
+
const [latMajor] = clean(latest).split('.').map(Number);
|
|
39
|
+
return latMajor > curMajor;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Read package.json from cwd.
|
|
43
|
+
*/
|
|
44
|
+
function readPackageJson() {
|
|
45
|
+
const pkgPath = join(process.cwd(), 'package.json');
|
|
46
|
+
if (!existsSync(pkgPath)) {
|
|
47
|
+
throw new Error('No package.json found in current directory.');
|
|
48
|
+
}
|
|
49
|
+
return JSON.parse(readFileSync(pkgPath, 'utf8'));
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Collect all vonosan-related packages from package.json.
|
|
53
|
+
*/
|
|
54
|
+
function collectVonoPackages(pkg) {
|
|
55
|
+
const deps = {
|
|
56
|
+
...(pkg.dependencies ?? {}),
|
|
57
|
+
...(pkg.devDependencies ?? {}),
|
|
58
|
+
};
|
|
59
|
+
const vonoPackages = {};
|
|
60
|
+
for (const [name, version] of Object.entries(deps)) {
|
|
61
|
+
if (name === 'vonosan' ||
|
|
62
|
+
name === 'vonosan-cli' ||
|
|
63
|
+
name === '@vonosan/cli' ||
|
|
64
|
+
name.startsWith('@vonosan/')) {
|
|
65
|
+
vonoPackages[name] = version;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return vonoPackages;
|
|
69
|
+
}
|
|
70
|
+
// ─── runUpgradeCheck ─────────────────────────────────────────────────
|
|
71
|
+
/**
|
|
72
|
+
* vonosan upgrade --check
|
|
73
|
+
*
|
|
74
|
+
* Reads package.json, checks npm registry for latest versions of
|
|
75
|
+
* vonosan, vonosan-cli (or @vonosan/cli), and all installed @vonosan/* packages.
|
|
76
|
+
*/
|
|
77
|
+
export async function runUpgradeCheck(_args) {
|
|
78
|
+
process.stdout.write(bold('Checking for Vonosan updates...\n\n'));
|
|
79
|
+
let pkg;
|
|
80
|
+
try {
|
|
81
|
+
pkg = readPackageJson();
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
process.stderr.write(red(String(err) + '\n'));
|
|
85
|
+
process.exit(1);
|
|
86
|
+
}
|
|
87
|
+
const vonoPackages = collectVonoPackages(pkg);
|
|
88
|
+
if (Object.keys(vonoPackages).length === 0) {
|
|
89
|
+
process.stdout.write('No Vonosan packages found in package.json.\n');
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
const updates = [];
|
|
93
|
+
for (const [name, current] of Object.entries(vonoPackages)) {
|
|
94
|
+
process.stdout.write(` Checking ${name}...`);
|
|
95
|
+
const latest = await fetchLatestVersion(name);
|
|
96
|
+
if (!latest) {
|
|
97
|
+
process.stdout.write(yellow(` (registry unavailable)\n`));
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
const cleanCurrent = current.replace(/^[\^~>=<]/, '');
|
|
101
|
+
if (cleanCurrent === latest) {
|
|
102
|
+
process.stdout.write(green(` ✔ up to date (${latest})\n`));
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
const major = isMajorBump(current, latest);
|
|
106
|
+
process.stdout.write(major
|
|
107
|
+
? red(` ↑ ${cleanCurrent} → ${latest} (MAJOR)\n`)
|
|
108
|
+
: yellow(` ↑ ${cleanCurrent} → ${latest}\n`));
|
|
109
|
+
updates.push({ name, current: cleanCurrent, latest, isMajor: major });
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
process.stdout.write('\n');
|
|
113
|
+
if (updates.length === 0) {
|
|
114
|
+
process.stdout.write(green('✔ All Vonosan packages are up to date.\n'));
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
process.stdout.write(bold(`${updates.length} update(s) available:\n\n`));
|
|
118
|
+
for (const u of updates) {
|
|
119
|
+
const label = u.isMajor ? red('[MAJOR]') : yellow('[minor]');
|
|
120
|
+
process.stdout.write(` ${label} ${u.name}: ${u.current} → ${u.latest}\n`);
|
|
121
|
+
}
|
|
122
|
+
const hasMajor = updates.some((u) => u.isMajor);
|
|
123
|
+
if (hasMajor) {
|
|
124
|
+
process.stdout.write(`\n${yellow('⚠ Major updates may include breaking changes.')}\n` +
|
|
125
|
+
` Run ${bold('vonosan upgrade --apply-codemods')} to apply automated migrations.\n`);
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
process.stdout.write(`\n Run ${bold('bun update')} (or your package manager) to apply updates.\n`);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
// ─── runUpgradeApply ─────────────────────────────────────────────────
|
|
132
|
+
/**
|
|
133
|
+
* vonosan upgrade --apply-codemods
|
|
134
|
+
*
|
|
135
|
+
* Runs automated codemods for major version upgrades.
|
|
136
|
+
* Reports what was changed vs what needs manual review.
|
|
137
|
+
*/
|
|
138
|
+
export async function runUpgradeApply(_args) {
|
|
139
|
+
process.stdout.write(bold('Applying codemods for major version upgrades...\n\n'));
|
|
140
|
+
// Codemods registry — keyed by package@majorVersion
|
|
141
|
+
const codemods = [
|
|
142
|
+
// Placeholder for future codemods
|
|
143
|
+
// {
|
|
144
|
+
// package: 'vonosan',
|
|
145
|
+
// fromMajor: 0,
|
|
146
|
+
// toMajor: 1,
|
|
147
|
+
// description: 'Migrate defineVonosanConfig shape',
|
|
148
|
+
// apply: async () => ({ changed: [], manual: [] }),
|
|
149
|
+
// },
|
|
150
|
+
];
|
|
151
|
+
if (codemods.length === 0) {
|
|
152
|
+
process.stdout.write('No codemods available for the current version range.\n');
|
|
153
|
+
process.stdout.write(`\n${yellow('Manual steps may still be required.')}\n` +
|
|
154
|
+
` Check the changelog at https://github.com/oyenet1/vonosan/releases\n`);
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
const changed = [];
|
|
158
|
+
const manual = [];
|
|
159
|
+
for (const codemod of codemods) {
|
|
160
|
+
process.stdout.write(` Applying: ${codemod.description}...\n`);
|
|
161
|
+
const result = await codemod.apply();
|
|
162
|
+
changed.push(...result.changed);
|
|
163
|
+
manual.push(...result.manual);
|
|
164
|
+
}
|
|
165
|
+
if (changed.length > 0) {
|
|
166
|
+
process.stdout.write(green(`\n✔ Automatically updated:\n`));
|
|
167
|
+
for (const f of changed)
|
|
168
|
+
process.stdout.write(` + ${f}\n`);
|
|
169
|
+
}
|
|
170
|
+
if (manual.length > 0) {
|
|
171
|
+
process.stdout.write(yellow(`\n⚠ Requires manual review:\n`));
|
|
172
|
+
for (const f of manual)
|
|
173
|
+
process.stdout.write(` ! ${f}\n`);
|
|
174
|
+
}
|
|
175
|
+
process.stdout.write(green('\n✔ Codemods applied.\n'));
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=upgrade.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ──────────────────────────────────────────────────────────────────
|
|
3
|
+
* 🏢 Company Name: Bonifade Technologies
|
|
4
|
+
* 👨💻 Developer: Bowofade Oyerinde
|
|
5
|
+
* 🐙 GitHub: oyenet1
|
|
6
|
+
* 📅 Created Date: 2026-04-05
|
|
7
|
+
* 🔄 Updated Date: 2026-04-05
|
|
8
|
+
* ──────────────────────────────────────────────────────────────────
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* generateDockerCompose — docker-compose.yml with app + redis services.
|
|
12
|
+
* Redis uses a healthcheck; app depends_on redis being healthy.
|
|
13
|
+
*/
|
|
14
|
+
export declare function generateDockerCompose(appName: string): string;
|
|
15
|
+
/**
|
|
16
|
+
* generateWaitForRedis — wait-for-redis.sh script.
|
|
17
|
+
* Polls Redis until it responds, then executes the given command.
|
|
18
|
+
*/
|
|
19
|
+
export declare function generateWaitForRedis(): string;
|
|
20
|
+
//# sourceMappingURL=docker-compose.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker-compose.d.ts","sourceRoot":"","sources":["../../../src/generators/deployment/docker-compose.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAmD7D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAwB7C"}
|