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.
Files changed (121) hide show
  1. package/dist/__tests__/env-parity.pbt.test.d.ts +15 -0
  2. package/dist/__tests__/env-parity.pbt.test.d.ts.map +1 -0
  3. package/dist/__tests__/env-parity.pbt.test.js +125 -0
  4. package/dist/__tests__/env-parity.pbt.test.js.map +1 -0
  5. package/dist/__tests__/module-generator.pbt.test.d.ts +15 -0
  6. package/dist/__tests__/module-generator.pbt.test.d.ts.map +1 -0
  7. package/dist/__tests__/module-generator.pbt.test.js +130 -0
  8. package/dist/__tests__/module-generator.pbt.test.js.map +1 -0
  9. package/dist/commands/add.d.ts +21 -0
  10. package/dist/commands/add.d.ts.map +1 -0
  11. package/dist/commands/add.js +128 -0
  12. package/dist/commands/add.js.map +1 -0
  13. package/dist/commands/audit.d.ts +18 -0
  14. package/dist/commands/audit.d.ts.map +1 -0
  15. package/dist/commands/audit.js +73 -0
  16. package/dist/commands/audit.js.map +1 -0
  17. package/dist/commands/branch-finish.d.ts +19 -0
  18. package/dist/commands/branch-finish.d.ts.map +1 -0
  19. package/dist/commands/branch-finish.js +80 -0
  20. package/dist/commands/branch-finish.js.map +1 -0
  21. package/dist/commands/branch-new.d.ts +17 -0
  22. package/dist/commands/branch-new.d.ts.map +1 -0
  23. package/dist/commands/branch-new.js +70 -0
  24. package/dist/commands/branch-new.js.map +1 -0
  25. package/dist/commands/commit.d.ts +21 -0
  26. package/dist/commands/commit.d.ts.map +1 -0
  27. package/dist/commands/commit.js +79 -0
  28. package/dist/commands/commit.js.map +1 -0
  29. package/dist/commands/db.d.ts +28 -0
  30. package/dist/commands/db.d.ts.map +1 -0
  31. package/dist/commands/db.js +83 -0
  32. package/dist/commands/db.js.map +1 -0
  33. package/dist/commands/env-add.d.ts +17 -0
  34. package/dist/commands/env-add.d.ts.map +1 -0
  35. package/dist/commands/env-add.js +73 -0
  36. package/dist/commands/env-add.js.map +1 -0
  37. package/dist/commands/fix-headers.d.ts +15 -0
  38. package/dist/commands/fix-headers.d.ts.map +1 -0
  39. package/dist/commands/fix-headers.js +37 -0
  40. package/dist/commands/fix-headers.js.map +1 -0
  41. package/dist/commands/fix-logs.d.ts +15 -0
  42. package/dist/commands/fix-logs.d.ts.map +1 -0
  43. package/dist/commands/fix-logs.js +87 -0
  44. package/dist/commands/fix-logs.js.map +1 -0
  45. package/dist/commands/jobs.d.ts +17 -0
  46. package/dist/commands/jobs.d.ts.map +1 -0
  47. package/dist/commands/jobs.js +107 -0
  48. package/dist/commands/jobs.js.map +1 -0
  49. package/dist/commands/lint.d.ts +15 -0
  50. package/dist/commands/lint.d.ts.map +1 -0
  51. package/dist/commands/lint.js +49 -0
  52. package/dist/commands/lint.js.map +1 -0
  53. package/dist/commands/make.d.ts +31 -0
  54. package/dist/commands/make.d.ts.map +1 -0
  55. package/dist/commands/make.js +176 -0
  56. package/dist/commands/make.js.map +1 -0
  57. package/dist/commands/migrate.d.ts +43 -0
  58. package/dist/commands/migrate.d.ts.map +1 -0
  59. package/dist/commands/migrate.js +120 -0
  60. package/dist/commands/migrate.js.map +1 -0
  61. package/dist/commands/schema-sync.d.ts +17 -0
  62. package/dist/commands/schema-sync.d.ts.map +1 -0
  63. package/dist/commands/schema-sync.js +48 -0
  64. package/dist/commands/schema-sync.js.map +1 -0
  65. package/dist/commands/test.d.ts +19 -0
  66. package/dist/commands/test.d.ts.map +1 -0
  67. package/dist/commands/test.js +113 -0
  68. package/dist/commands/test.js.map +1 -0
  69. package/dist/commands/upgrade.d.ts +24 -0
  70. package/dist/commands/upgrade.d.ts.map +1 -0
  71. package/dist/commands/upgrade.js +177 -0
  72. package/dist/commands/upgrade.js.map +1 -0
  73. package/dist/generators/deployment/docker-compose.d.ts +20 -0
  74. package/dist/generators/deployment/docker-compose.d.ts.map +1 -0
  75. package/dist/generators/deployment/docker-compose.js +95 -0
  76. package/dist/generators/deployment/docker-compose.js.map +1 -0
  77. package/dist/generators/deployment/dockerfile.d.ts +18 -0
  78. package/dist/generators/deployment/dockerfile.d.ts.map +1 -0
  79. package/dist/generators/deployment/dockerfile.js +99 -0
  80. package/dist/generators/deployment/dockerfile.js.map +1 -0
  81. package/dist/generators/deployment/pm2.d.ts +17 -0
  82. package/dist/generators/deployment/pm2.d.ts.map +1 -0
  83. package/dist/generators/deployment/pm2.js +59 -0
  84. package/dist/generators/deployment/pm2.js.map +1 -0
  85. package/dist/generators/deployment/secrets.d.ts +19 -0
  86. package/dist/generators/deployment/secrets.d.ts.map +1 -0
  87. package/dist/generators/deployment/secrets.js +41 -0
  88. package/dist/generators/deployment/secrets.js.map +1 -0
  89. package/dist/generators/deployment/shutdown.d.ts +17 -0
  90. package/dist/generators/deployment/shutdown.d.ts.map +1 -0
  91. package/dist/generators/deployment/shutdown.js +61 -0
  92. package/dist/generators/deployment/shutdown.js.map +1 -0
  93. package/dist/generators/deployment/wrangler.d.ts +25 -0
  94. package/dist/generators/deployment/wrangler.d.ts.map +1 -0
  95. package/dist/generators/deployment/wrangler.js +93 -0
  96. package/dist/generators/deployment/wrangler.js.map +1 -0
  97. package/dist/generators/file-generators.d.ts +38 -0
  98. package/dist/generators/file-generators.d.ts.map +1 -0
  99. package/dist/generators/file-generators.js +546 -0
  100. package/dist/generators/file-generators.js.map +1 -0
  101. package/dist/generators/module-generator.d.ts +33 -0
  102. package/dist/generators/module-generator.d.ts.map +1 -0
  103. package/dist/generators/module-generator.js +61 -0
  104. package/dist/generators/module-generator.js.map +1 -0
  105. package/dist/header-generator.d.ts +34 -0
  106. package/dist/header-generator.d.ts.map +1 -0
  107. package/dist/header-generator.js +77 -0
  108. package/dist/header-generator.js.map +1 -0
  109. package/dist/index.d.ts +12 -0
  110. package/dist/index.d.ts.map +1 -0
  111. package/dist/index.js +177 -0
  112. package/dist/index.js.map +1 -0
  113. package/dist/linter/env-parity.d.ts +28 -0
  114. package/dist/linter/env-parity.d.ts.map +1 -0
  115. package/dist/linter/env-parity.js +59 -0
  116. package/dist/linter/env-parity.js.map +1 -0
  117. package/dist/linter.d.ts +23 -0
  118. package/dist/linter.d.ts.map +1 -0
  119. package/dist/linter.js +207 -0
  120. package/dist/linter.js.map +1 -0
  121. package/package.json +32 -0
@@ -0,0 +1,95 @@
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 function generateDockerCompose(appName) {
15
+ return `# ──────────────────────────────────────────────────────────────────
16
+ # 🏢 Bonifade Technologies — docker-compose.yml
17
+ # ──────────────────────────────────────────────────────────────────
18
+
19
+ services:
20
+ app:
21
+ build:
22
+ context: .
23
+ dockerfile: Dockerfile
24
+ container_name: ${appName}
25
+ restart: unless-stopped
26
+ ports:
27
+ - "4000:4000"
28
+ env_file:
29
+ - .env
30
+ environment:
31
+ - NODE_ENV=production
32
+ - REDIS_URL=redis://redis:6379
33
+ depends_on:
34
+ redis:
35
+ condition: service_healthy
36
+ volumes:
37
+ - ./logs:/app/logs
38
+ networks:
39
+ - app-network
40
+
41
+ redis:
42
+ image: redis:7-alpine
43
+ container_name: ${appName}-redis
44
+ restart: unless-stopped
45
+ ports:
46
+ - "6379:6379"
47
+ volumes:
48
+ - redis-data:/data
49
+ healthcheck:
50
+ test: ["CMD", "redis-cli", "ping"]
51
+ interval: 10s
52
+ timeout: 5s
53
+ retries: 5
54
+ start_period: 5s
55
+ networks:
56
+ - app-network
57
+
58
+ volumes:
59
+ redis-data:
60
+
61
+ networks:
62
+ app-network:
63
+ driver: bridge
64
+ `;
65
+ }
66
+ /**
67
+ * generateWaitForRedis — wait-for-redis.sh script.
68
+ * Polls Redis until it responds, then executes the given command.
69
+ */
70
+ export function generateWaitForRedis() {
71
+ return `#!/bin/sh
72
+ # ──────────────────────────────────────────────────────────────────
73
+ # 🏢 Bonifade Technologies — wait-for-redis.sh
74
+ # ──────────────────────────────────────────────────────────────────
75
+ # Usage: ./wait-for-redis.sh redis:6379 -- pm2-runtime ecosystem.config.js
76
+
77
+ set -e
78
+
79
+ HOST=$(echo "$1" | cut -d: -f1)
80
+ PORT=$(echo "$1" | cut -d: -f2)
81
+ shift
82
+ shift # skip '--'
83
+
84
+ echo "Waiting for Redis at $HOST:$PORT..."
85
+
86
+ until redis-cli -h "$HOST" -p "$PORT" ping 2>/dev/null | grep -q PONG; do
87
+ echo "Redis not ready — retrying in 2s..."
88
+ sleep 2
89
+ done
90
+
91
+ echo "Redis is ready. Starting application..."
92
+ exec "$@"
93
+ `;
94
+ }
95
+ //# sourceMappingURL=docker-compose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker-compose.js","sourceRoot":"","sources":["../../../src/generators/deployment/docker-compose.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,OAAO;;;;;;;;;sBASa,OAAO;;;;;;;;;;;;;;;;;;;sBAmBP,OAAO;;;;;;;;;;;;;;;;;;;;;CAqB5B,CAAA;AACD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO;;;;;;;;;;;;;;;;;;;;;;CAsBR,CAAA;AACD,CAAC"}
@@ -0,0 +1,18 @@
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
+ * generateDockerfileBun — multi-stage Dockerfile using oven/bun:1.
12
+ */
13
+ export declare function generateDockerfileBun(): string;
14
+ /**
15
+ * generateDockerfileNode — multi-stage Dockerfile using node:22-alpine.
16
+ */
17
+ export declare function generateDockerfileNode(): string;
18
+ //# sourceMappingURL=dockerfile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dockerfile.d.ts","sourceRoot":"","sources":["../../../src/generators/deployment/dockerfile.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAwC9C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAyC/C"}
@@ -0,0 +1,99 @@
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
+ * generateDockerfileBun — multi-stage Dockerfile using oven/bun:1.
12
+ */
13
+ export function generateDockerfileBun() {
14
+ return `# ──────────────────────────────────────────────────────────────────
15
+ # 🏢 Bonifade Technologies — Dockerfile (Bun)
16
+ # ──────────────────────────────────────────────────────────────────
17
+
18
+ # ── Stage 1: deps ────────────────────────────────────────────────────
19
+ FROM oven/bun:1 AS deps
20
+ WORKDIR /app
21
+ COPY package.json bun.lock* ./
22
+ RUN bun install --frozen-lockfile
23
+
24
+ # ── Stage 2: builder ─────────────────────────────────────────────────
25
+ FROM oven/bun:1 AS builder
26
+ WORKDIR /app
27
+ COPY --from=deps /app/node_modules ./node_modules
28
+ COPY . .
29
+ RUN bun run build
30
+
31
+ # ── Stage 3: runner ──────────────────────────────────────────────────
32
+ FROM oven/bun:1 AS runner
33
+ WORKDIR /app
34
+
35
+ ENV NODE_ENV=production
36
+
37
+ # Install PM2 globally
38
+ RUN bun add -g pm2
39
+
40
+ COPY --from=builder /app/dist ./dist
41
+ COPY --from=builder /app/package.json ./package.json
42
+ COPY --from=builder /app/ecosystem.config.js ./ecosystem.config.js
43
+
44
+ RUN mkdir -p logs
45
+
46
+ EXPOSE 4000
47
+
48
+ HEALTHCHECK --interval=30s --timeout=10s --start-period=10s --retries=3 \\
49
+ CMD bun -e "fetch('http://localhost:4000/').then(r => r.ok ? process.exit(0) : process.exit(1)).catch(() => process.exit(1))"
50
+
51
+ CMD ["pm2-runtime", "ecosystem.config.js"]
52
+ `;
53
+ }
54
+ /**
55
+ * generateDockerfileNode — multi-stage Dockerfile using node:22-alpine.
56
+ */
57
+ export function generateDockerfileNode() {
58
+ return `# ──────────────────────────────────────────────────────────────────
59
+ # 🏢 Bonifade Technologies — Dockerfile (Node)
60
+ # ──────────────────────────────────────────────────────────────────
61
+
62
+ # ── Stage 1: deps ────────────────────────────────────────────────────
63
+ FROM node:22-alpine AS deps
64
+ WORKDIR /app
65
+ COPY package.json package-lock.json* ./
66
+ RUN npm ci --omit=dev
67
+
68
+ # ── Stage 2: builder ─────────────────────────────────────────────────
69
+ FROM node:22-alpine AS builder
70
+ WORKDIR /app
71
+ COPY package.json package-lock.json* ./
72
+ RUN npm ci
73
+ COPY . .
74
+ RUN npm run build
75
+
76
+ # ── Stage 3: runner ──────────────────────────────────────────────────
77
+ FROM node:22-alpine AS runner
78
+ WORKDIR /app
79
+
80
+ ENV NODE_ENV=production
81
+
82
+ RUN npm install -g pm2
83
+
84
+ COPY --from=deps /app/node_modules ./node_modules
85
+ COPY --from=builder /app/dist ./dist
86
+ COPY --from=builder /app/package.json ./package.json
87
+ COPY --from=builder /app/ecosystem.config.js ./ecosystem.config.js
88
+
89
+ RUN mkdir -p logs
90
+
91
+ EXPOSE 4000
92
+
93
+ HEALTHCHECK --interval=30s --timeout=10s --start-period=10s --retries=3 \\
94
+ CMD node -e "require('http').get('http://localhost:4000/', (r) => process.exit(r.statusCode === 200 ? 0 : 1)).on('error', () => process.exit(1))"
95
+
96
+ CMD ["pm2-runtime", "ecosystem.config.js"]
97
+ `;
98
+ }
99
+ //# sourceMappingURL=dockerfile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dockerfile.js","sourceRoot":"","sources":["../../../src/generators/deployment/dockerfile.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCR,CAAA;AACD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCR,CAAA;AACD,CAAC"}
@@ -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
+ * generateEcosystemConfig — generates a PM2 ecosystem.config.js file.
12
+ *
13
+ * Bun: fork mode, interpreter: 'bun', instances: 1
14
+ * Node: cluster mode, instances: 'max'
15
+ */
16
+ export declare function generateEcosystemConfig(runtime: 'bun' | 'node', appName: string): string;
17
+ //# sourceMappingURL=pm2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pm2.d.ts","sourceRoot":"","sources":["../../../src/generators/deployment/pm2.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,KAAK,GAAG,MAAM,EACvB,OAAO,EAAE,MAAM,GACd,MAAM,CA4CR"}
@@ -0,0 +1,59 @@
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
+ * generateEcosystemConfig — generates a PM2 ecosystem.config.js file.
12
+ *
13
+ * Bun: fork mode, interpreter: 'bun', instances: 1
14
+ * Node: cluster mode, instances: 'max'
15
+ */
16
+ export function generateEcosystemConfig(runtime, appName) {
17
+ const isBun = runtime === 'bun';
18
+ const runtimeConfig = isBun
19
+ ? ` exec_mode: 'fork',
20
+ interpreter: 'bun',
21
+ instances: 1,`
22
+ : ` exec_mode: 'cluster',
23
+ instances: 'max',`;
24
+ return `/**
25
+ * ──────────────────────────────────────────────────────────────────
26
+ * 🏢 Company Name: Bonifade Technologies
27
+ * 👨‍💻 Developer: Bowofade Oyerinde
28
+ * 🐙 GitHub: oyenet1
29
+ * 📅 Created Date: ${new Date().toISOString().slice(0, 10)}
30
+ * 🔄 Updated Date: ${new Date().toISOString().slice(0, 10)}
31
+ * ──────────────────────────────────────────────────────────────────
32
+ */
33
+
34
+ module.exports = {
35
+ apps: [
36
+ {
37
+ name: '${appName}',
38
+ script: './dist/server/index.js',
39
+ ${runtimeConfig}
40
+ error_file: './logs/pm2-error.log',
41
+ out_file: './logs/pm2-out.log',
42
+ log_date_format: 'YYYY-MM-DD HH:mm:ss Z',
43
+ combine_logs: true,
44
+ min_uptime: '5s',
45
+ max_restarts: 10,
46
+ restart_delay: 4000,
47
+ max_memory_restart: '512M',
48
+ kill_timeout: 5000,
49
+ autorestart: true,
50
+ env: {
51
+ NODE_ENV: 'production',
52
+ PORT: 4000,
53
+ },
54
+ },
55
+ ],
56
+ }
57
+ `;
58
+ }
59
+ //# sourceMappingURL=pm2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pm2.js","sourceRoot":"","sources":["../../../src/generators/deployment/pm2.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAAuB,EACvB,OAAe;IAEf,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,CAAA;IAE/B,MAAM,aAAa,GAAG,KAAK;QACzB,CAAC,CAAC;;kBAEY;QACd,CAAC,CAAC;sBACgB,CAAA;IAEpB,OAAO;;;;;sBAKa,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;sBACrC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;;;;;;;eAO5C,OAAO;;EAEpB,aAAa;;;;;;;;;;;;;;;;;;CAkBd,CAAA;AACD,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
+ * generateSetSecrets — generates a set-secrets.sh script.
12
+ *
13
+ * Iterates over the provided env keys and calls
14
+ * `wrangler secret put <KEY>` for each one.
15
+ *
16
+ * @param envKeys — list of environment variable names to upload
17
+ */
18
+ export declare function generateSetSecrets(envKeys: string[]): string;
19
+ //# sourceMappingURL=secrets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../../src/generators/deployment/secrets.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAuB5D"}
@@ -0,0 +1,41 @@
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
+ * generateSetSecrets — generates a set-secrets.sh script.
12
+ *
13
+ * Iterates over the provided env keys and calls
14
+ * `wrangler secret put <KEY>` for each one.
15
+ *
16
+ * @param envKeys — list of environment variable names to upload
17
+ */
18
+ export function generateSetSecrets(envKeys) {
19
+ const commands = envKeys
20
+ .map((key) => `echo "Setting secret: ${key}"\nwrangler secret put ${key}`)
21
+ .join('\n\n');
22
+ return `#!/bin/bash
23
+ # ──────────────────────────────────────────────────────────────────
24
+ # 🏢 Bonifade Technologies — set-secrets.sh
25
+ # ──────────────────────────────────────────────────────────────────
26
+ # Uploads secrets to Cloudflare Workers via wrangler.
27
+ # Run: bash set-secrets.sh
28
+ # Each command will prompt you to enter the secret value.
29
+
30
+ set -e
31
+
32
+ echo "Uploading secrets to Cloudflare Workers..."
33
+ echo ""
34
+
35
+ ${commands}
36
+
37
+ echo ""
38
+ echo "✔ All secrets uploaded successfully."
39
+ `;
40
+ }
41
+ //# sourceMappingURL=secrets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../../src/generators/deployment/secrets.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAiB;IAClD,MAAM,QAAQ,GAAG,OAAO;SACrB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,yBAAyB,GAAG,0BAA0B,GAAG,EAAE,CAAC;SACzE,IAAI,CAAC,MAAM,CAAC,CAAA;IAEf,OAAO;;;;;;;;;;;;;EAaP,QAAQ;;;;CAIT,CAAA;AACD,CAAC"}
@@ -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
+ * generateGracefulShutdown — returns a SIGINT handler code snippet.
12
+ *
13
+ * Closes DB connections and queue connections before exiting.
14
+ * Inject this into the generated src/server.ts or src/index.ts.
15
+ */
16
+ export declare function generateGracefulShutdown(): string;
17
+ //# sourceMappingURL=shutdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shutdown.d.ts","sourceRoot":"","sources":["../../../src/generators/deployment/shutdown.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;GAKG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CA4CjD"}
@@ -0,0 +1,61 @@
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
+ * generateGracefulShutdown — returns a SIGINT handler code snippet.
12
+ *
13
+ * Closes DB connections and queue connections before exiting.
14
+ * Inject this into the generated src/server.ts or src/index.ts.
15
+ */
16
+ export function generateGracefulShutdown() {
17
+ return `/**
18
+ * ──────────────────────────────────────────────────────────────────
19
+ * 🏢 Company Name: Bonifade Technologies
20
+ * 👨‍💻 Developer: Bowofade Oyerinde
21
+ * 🐙 GitHub: oyenet1
22
+ * 📅 Created Date: ${new Date().toISOString().slice(0, 10)}
23
+ * 🔄 Updated Date: ${new Date().toISOString().slice(0, 10)}
24
+ * ──────────────────────────────────────────────────────────────────
25
+ */
26
+
27
+ import { Logger } from 'vonosan/server'
28
+
29
+ // ─── Graceful shutdown ───────────────────────────────────────────────
30
+
31
+ /**
32
+ * Registers a SIGINT handler that closes all open connections
33
+ * before the process exits.
34
+ *
35
+ * Call this once at the top of your server entry file.
36
+ */
37
+ export function registerGracefulShutdown(options?: {
38
+ /** Called before process.exit — close DB, queue, etc. */
39
+ onShutdown?: () => Promise<void>
40
+ }): void {
41
+ const shutdown = async (signal: string) => {
42
+ Logger.info(\`[vonosan] Received \${signal} — shutting down gracefully...\`)
43
+
44
+ try {
45
+ if (options?.onShutdown) {
46
+ await options.onShutdown()
47
+ }
48
+ Logger.info('[vonosan] Shutdown complete.')
49
+ } catch (err) {
50
+ Logger.error('[vonosan] Error during shutdown', { error: String(err) })
51
+ } finally {
52
+ process.exit(0)
53
+ }
54
+ }
55
+
56
+ process.on('SIGINT', () => shutdown('SIGINT'))
57
+ process.on('SIGTERM', () => shutdown('SIGTERM'))
58
+ }
59
+ `;
60
+ }
61
+ //# sourceMappingURL=shutdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shutdown.js","sourceRoot":"","sources":["../../../src/generators/deployment/shutdown.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO;;;;;sBAKa,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;sBACrC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoC1D,CAAA;AACD,CAAC"}
@@ -0,0 +1,25 @@
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
+ export interface WranglerOptions {
11
+ appName: string;
12
+ hasHyperdrive?: boolean;
13
+ hasKV?: boolean;
14
+ hasR2?: boolean;
15
+ hasQueues?: boolean;
16
+ cronJobs?: string[];
17
+ }
18
+ /**
19
+ * generateWranglerConfig — generates wrangler.jsonc content.
20
+ *
21
+ * Includes optional bindings for Hyperdrive, KV, R2, Queues,
22
+ * and cron triggers based on the provided options.
23
+ */
24
+ export declare function generateWranglerConfig(options: WranglerOptions): string;
25
+ //# sourceMappingURL=wrangler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrangler.d.ts","sourceRoot":"","sources":["../../../src/generators/deployment/wrangler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CA2FvE"}
@@ -0,0 +1,93 @@
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
+ * generateWranglerConfig — generates wrangler.jsonc content.
12
+ *
13
+ * Includes optional bindings for Hyperdrive, KV, R2, Queues,
14
+ * and cron triggers based on the provided options.
15
+ */
16
+ export function generateWranglerConfig(options) {
17
+ const { appName, hasHyperdrive = false, hasKV = false, hasR2 = false, hasQueues = false, cronJobs = [], } = options;
18
+ const sections = [];
19
+ if (hasHyperdrive) {
20
+ sections.push(` // Hyperdrive — accelerated database connections
21
+ "hyperdrive": [
22
+ {
23
+ "binding": "HYPERDRIVE",
24
+ "id": "<YOUR_HYPERDRIVE_ID>"
25
+ }
26
+ ]`);
27
+ }
28
+ if (hasKV) {
29
+ sections.push(` // KV Namespace — key-value storage
30
+ "kv_namespaces": [
31
+ {
32
+ "binding": "KV",
33
+ "id": "<YOUR_KV_NAMESPACE_ID>",
34
+ "preview_id": "<YOUR_KV_PREVIEW_ID>"
35
+ }
36
+ ]`);
37
+ }
38
+ if (hasR2) {
39
+ sections.push(` // R2 Bucket — object storage
40
+ "r2_buckets": [
41
+ {
42
+ "binding": "R2",
43
+ "bucket_name": "${appName}-storage"
44
+ }
45
+ ]`);
46
+ }
47
+ if (hasQueues) {
48
+ sections.push(` // Queues — message queuing
49
+ "queues": {
50
+ "producers": [
51
+ {
52
+ "binding": "QUEUE",
53
+ "queue": "${appName}-queue"
54
+ }
55
+ ],
56
+ "consumers": [
57
+ {
58
+ "queue": "${appName}-queue",
59
+ "max_batch_size": 10,
60
+ "max_batch_timeout": 30
61
+ }
62
+ ]
63
+ }`);
64
+ }
65
+ if (cronJobs.length > 0) {
66
+ const triggers = cronJobs.map((cron) => ` { "cron": "${cron}" }`).join(',\n');
67
+ sections.push(` // Cron triggers
68
+ "triggers": {
69
+ "crons": [
70
+ ${triggers}
71
+ ]
72
+ }`);
73
+ }
74
+ const bindingsBlock = sections.length > 0 ? `,\n${sections.join(',\n')}` : '';
75
+ return `{
76
+ // ──────────────────────────────────────────────────────────────────
77
+ // 🏢 Bonifade Technologies — wrangler.jsonc
78
+ // ──────────────────────────────────────────────────────────────────
79
+ "name": "${appName}",
80
+ "main": "./dist/server/index.js",
81
+ "compatibility_date": "${new Date().toISOString().slice(0, 10)}",
82
+ "compatibility_flags": ["nodejs_compat"],
83
+ "assets": {
84
+ "directory": "./dist/client",
85
+ "binding": "ASSETS"
86
+ },
87
+ "vars": {
88
+ "NODE_ENV": "production"
89
+ }${bindingsBlock}
90
+ }
91
+ `;
92
+ }
93
+ //# sourceMappingURL=wrangler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrangler.js","sourceRoot":"","sources":["../../../src/generators/deployment/wrangler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAwB;IAC7D,MAAM,EACJ,OAAO,EACP,aAAa,GAAG,KAAK,EACrB,KAAK,GAAG,KAAK,EACb,KAAK,GAAG,KAAK,EACb,SAAS,GAAG,KAAK,EACjB,QAAQ,GAAG,EAAE,GACd,GAAG,OAAO,CAAA;IAEX,MAAM,QAAQ,GAAa,EAAE,CAAA;IAE7B,IAAI,aAAa,EAAE,CAAC;QAClB,QAAQ,CAAC,IAAI,CAAC;;;;;;IAMd,CAAC,CAAA;IACH,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,QAAQ,CAAC,IAAI,CAAC;;;;;;;IAOd,CAAC,CAAA;IACH,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,QAAQ,CAAC,IAAI,CAAC;;;;wBAIM,OAAO;;IAE3B,CAAC,CAAA;IACH,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,QAAQ,CAAC,IAAI,CAAC;;;;;oBAKE,OAAO;;;;;oBAKP,OAAO;;;;;IAKvB,CAAC,CAAA;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAChF,QAAQ,CAAC,IAAI,CAAC;;;EAGhB,QAAQ;;IAEN,CAAC,CAAA;IACH,CAAC;IAED,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAE7E,OAAO;;;;aAII,OAAO;;2BAEO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;;;;;;;;KAQ3D,aAAa;;CAEjB,CAAA;AACD,CAAC"}
@@ -0,0 +1,38 @@
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
+ /** "user-profile" → "UserProfile" */
11
+ export declare function toPascalCase(name: string): string;
12
+ /** "user-profile" → "userProfile" */
13
+ export declare function toCamelCase(name: string): string;
14
+ /** "UserProfile" → "user_profiles" (simple pluralisation) */
15
+ export declare function toTableName(name: string): string;
16
+ export declare function generateService(name: string): string;
17
+ export declare function generateController(name: string): string;
18
+ export declare function generateDto(name: string): string;
19
+ export declare function generateRoutes(name: string): string;
20
+ export declare function generateSchema(name: string, saas?: boolean): string;
21
+ export declare function generateResource(name: string): string;
22
+ export declare function generatePolicy(name: string): string;
23
+ export declare function generateScopes(name: string): string;
24
+ export declare function generateMiddleware(name: string): string;
25
+ export declare function generatePage(name: string): string;
26
+ export declare function generateComposable(name: string): string;
27
+ export declare function generateStore(name: string): string;
28
+ export declare function generateMigration(name: string): string;
29
+ export declare function generateSeed(name: string): string;
30
+ export declare function generateTest(name: string): string;
31
+ export declare function generateIntegrationTest(name: string): string;
32
+ export declare function generateE2ETest(name: string): string;
33
+ export declare function generateNotification(name: string): string;
34
+ export declare function generateJob(name: string): string;
35
+ export declare function generateEmail(name: string): string;
36
+ export declare function generateHelper(name: string): string;
37
+ export declare function generateComponent(name: string): string;
38
+ //# sourceMappingURL=file-generators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-generators.d.ts","sourceRoot":"","sources":["../../src/generators/file-generators.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,qCAAqC;AACrC,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKjD;AAED,qCAAqC;AACrC,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED,6DAA6D;AAC7D,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKhD;AAID,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAyCpD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA4CvD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgBhD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAmBnD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,UAAQ,GAAG,MAAM,CAkBjE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA8BrD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA4BnD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAkBnD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAoBvD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAwBjD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAsCvD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAuBlD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAetD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAsBjD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAejD;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAc5D;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAcpD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgBzD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAmBhD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAsBlD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAiBnD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAmBtD"}