kybernus 2.4.0 → 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 (133) hide show
  1. package/README.md +15 -6
  2. package/add-features/auth/java-spring/AuthController.java +54 -0
  3. package/add-features/auth/java-spring/AuthService.java +85 -0
  4. package/add-features/auth/java-spring/INSTRUCTIONS.md +119 -0
  5. package/add-features/auth/java-spring/dto/LoginRequest.java +22 -0
  6. package/add-features/auth/java-spring/dto/RegisterRequest.java +22 -0
  7. package/add-features/auth/java-spring/security/JwtRequestFilter.java +45 -0
  8. package/add-features/auth/java-spring/security/JwtUtil.java +59 -0
  9. package/add-features/auth/java-spring/security/SecurityConfig.java +39 -0
  10. package/add-features/auth/nestjs/INSTRUCTIONS.md +112 -0
  11. package/add-features/auth/nestjs/auth.controller.ts +27 -0
  12. package/add-features/auth/nestjs/auth.module.ts +20 -0
  13. package/add-features/auth/nestjs/auth.service.ts +81 -0
  14. package/add-features/auth/nestjs/dto/login.dto.ts +4 -0
  15. package/add-features/auth/nestjs/dto/register.dto.ts +4 -0
  16. package/add-features/auth/nestjs/jwt-auth.guard.ts +17 -0
  17. package/add-features/auth/nestjs/jwt.strategy.ts +24 -0
  18. package/add-features/auth/nextjs/INSTRUCTIONS.md +97 -0
  19. package/add-features/auth/nextjs/jwt.ts +21 -0
  20. package/add-features/auth/nextjs/middleware.ts +37 -0
  21. package/add-features/auth/nextjs/routes/login.ts +43 -0
  22. package/add-features/auth/nextjs/routes/register.ts +50 -0
  23. package/add-features/auth/nextjs/session.ts +28 -0
  24. package/add-features/auth/nodejs-express/INSTRUCTIONS.md +109 -0
  25. package/add-features/auth/nodejs-express/auth.controller.ts +59 -0
  26. package/add-features/auth/nodejs-express/auth.middleware.ts +38 -0
  27. package/add-features/auth/nodejs-express/auth.routes.ts +15 -0
  28. package/add-features/auth/nodejs-express/auth.service.ts +73 -0
  29. package/add-features/auth/nodejs-express/jwt.config.ts +17 -0
  30. package/add-features/auth/python-fastapi/INSTRUCTIONS.md +100 -0
  31. package/add-features/auth/python-fastapi/router.py +26 -0
  32. package/add-features/auth/python-fastapi/schemas.py +25 -0
  33. package/add-features/auth/python-fastapi/security.py +37 -0
  34. package/add-features/auth/python-fastapi/service.py +61 -0
  35. package/add-features/deploy/dockerfiles/Dockerfile.java +22 -0
  36. package/add-features/deploy/dockerfiles/Dockerfile.nextjs +32 -0
  37. package/add-features/deploy/dockerfiles/Dockerfile.nodejs +25 -0
  38. package/add-features/deploy/dockerfiles/Dockerfile.python +17 -0
  39. package/add-features/deploy/fly/INSTRUCTIONS.md +39 -0
  40. package/add-features/deploy/fly/java-spring.toml +21 -0
  41. package/add-features/deploy/fly/nextjs.toml +16 -0
  42. package/add-features/deploy/fly/nodejs.toml +21 -0
  43. package/add-features/deploy/fly/python-fastapi.toml +21 -0
  44. package/add-features/deploy/railway/INSTRUCTIONS.md +38 -0
  45. package/add-features/deploy/railway/java-spring.toml +16 -0
  46. package/add-features/deploy/railway/nextjs.toml +14 -0
  47. package/add-features/deploy/railway/nodejs.toml +14 -0
  48. package/add-features/deploy/railway/python-fastapi.toml +13 -0
  49. package/add-features/deploy/render/INSTRUCTIONS.md +35 -0
  50. package/add-features/deploy/render/java-spring.yaml +14 -0
  51. package/add-features/deploy/render/nextjs.yaml +17 -0
  52. package/add-features/deploy/render/nodejs.yaml +15 -0
  53. package/add-features/deploy/render/python-fastapi.yaml +13 -0
  54. package/add-features/deploy/vercel/INSTRUCTIONS.md +40 -0
  55. package/add-features/deploy/vercel/nextjs.json +16 -0
  56. package/add-features/deploy/vercel/nodejs-express.json +21 -0
  57. package/add-features/deploy/vercel/python-fastapi.json +21 -0
  58. package/add-features/husky/INSTRUCTIONS.md +52 -0
  59. package/add-features/husky/commit-msg +4 -0
  60. package/add-features/husky/commitlint.config.js +3 -0
  61. package/add-features/husky/pre-commit +4 -0
  62. package/add-features/redis/.env.snippet +1 -0
  63. package/add-features/redis/INSTRUCTIONS.md +64 -0
  64. package/add-features/redis/docker-compose.snippet.yml +18 -0
  65. package/add-features/redis/java-spring.java +27 -0
  66. package/add-features/redis/nextjs.ts +23 -0
  67. package/add-features/redis/nodejs.ts +14 -0
  68. package/add-features/redis/python.py +22 -0
  69. package/add-features/swagger/INSTRUCTIONS.md +53 -0
  70. package/add-features/swagger/java-spring.java +34 -0
  71. package/add-features/swagger/nestjs.ts +16 -0
  72. package/add-features/swagger/nextjs-route.ts +11 -0
  73. package/add-features/swagger/nextjs-swagger.ts +17 -0
  74. package/add-features/swagger/nodejs-express.ts +30 -0
  75. package/add-features/swagger/python-fastapi.py +21 -0
  76. package/add-features/websocket/INSTRUCTIONS.md +63 -0
  77. package/add-features/websocket/java-spring.java +60 -0
  78. package/add-features/websocket/nestjs.ts +38 -0
  79. package/add-features/websocket/nodejs-express.ts +38 -0
  80. package/add-features/websocket/python-fastapi.py +41 -0
  81. package/dist/cli/commands/add.d.ts +11 -0
  82. package/dist/cli/commands/add.d.ts.map +1 -0
  83. package/dist/cli/commands/add.js +102 -0
  84. package/dist/cli/commands/add.js.map +1 -0
  85. package/dist/cli/commands/auth.d.ts +11 -0
  86. package/dist/cli/commands/auth.d.ts.map +1 -0
  87. package/dist/cli/commands/auth.js +71 -0
  88. package/dist/cli/commands/auth.js.map +1 -0
  89. package/dist/cli/commands/deploy.d.ts +10 -0
  90. package/dist/cli/commands/deploy.d.ts.map +1 -0
  91. package/dist/cli/commands/deploy.js +110 -0
  92. package/dist/cli/commands/deploy.js.map +1 -0
  93. package/dist/cli/commands/doctor.d.ts +3 -0
  94. package/dist/cli/commands/doctor.d.ts.map +1 -0
  95. package/dist/cli/commands/doctor.js +110 -0
  96. package/dist/cli/commands/doctor.js.map +1 -0
  97. package/dist/cli/commands/init.d.ts +1 -0
  98. package/dist/cli/commands/init.d.ts.map +1 -1
  99. package/dist/cli/commands/init.js +1 -0
  100. package/dist/cli/commands/init.js.map +1 -1
  101. package/dist/cli/prompts/wizard.d.ts +1 -0
  102. package/dist/cli/prompts/wizard.d.ts.map +1 -1
  103. package/dist/cli/prompts/wizard.js +23 -15
  104. package/dist/cli/prompts/wizard.js.map +1 -1
  105. package/dist/cli/utils/cli-helpers.d.ts +43 -0
  106. package/dist/cli/utils/cli-helpers.d.ts.map +1 -0
  107. package/dist/cli/utils/cli-helpers.js +107 -0
  108. package/dist/cli/utils/cli-helpers.js.map +1 -0
  109. package/dist/core/deploy/deploy-generator.d.ts +18 -0
  110. package/dist/core/deploy/deploy-generator.d.ts.map +1 -0
  111. package/dist/core/deploy/deploy-generator.js +155 -0
  112. package/dist/core/deploy/deploy-generator.js.map +1 -0
  113. package/dist/core/features/feature-generator.d.ts +26 -0
  114. package/dist/core/features/feature-generator.d.ts.map +1 -0
  115. package/dist/core/features/feature-generator.js +376 -0
  116. package/dist/core/features/feature-generator.js.map +1 -0
  117. package/dist/core/generator/project.d.ts.map +1 -1
  118. package/dist/core/generator/project.js +42 -2
  119. package/dist/core/generator/project.js.map +1 -1
  120. package/dist/core/templates/engine.d.ts.map +1 -1
  121. package/dist/core/templates/engine.js +4 -0
  122. package/dist/core/templates/engine.js.map +1 -1
  123. package/dist/index.js +9 -0
  124. package/dist/index.js.map +1 -1
  125. package/dist/models/config.d.ts +1 -0
  126. package/dist/models/config.d.ts.map +1 -1
  127. package/package.json +15 -3
  128. package/templates/nodejs-express/clean/package.json.hbs +4 -4
  129. package/templates/nodejs-express/hexagonal/package.json.hbs +4 -4
  130. package/templates/nodejs-express/mvc/package.json.hbs +4 -4
  131. /package/templates/nestjs/hexagonal/prisma/{schema.prisma → schema.prisma.hbs} +0 -0
  132. /package/templates/nodejs-express/clean/prisma/{schema.prisma → schema.prisma.hbs} +0 -0
  133. /package/templates/nodejs-express/hexagonal/prisma/{schema.prisma → schema.prisma.hbs} +0 -0
@@ -0,0 +1,26 @@
1
+ /**
2
+ * feature-generator.ts
3
+ *
4
+ * Core engine that copies feature boilerplate files into the user's project.
5
+ *
6
+ * SOLID Design:
7
+ * - SRP: Each private function has exactly one job:
8
+ * resolveDestPaths() → path rewriting for architecture
9
+ * transformFileContent() → import/package rewriting inside file content
10
+ * buildInstallCommand() → build the install command string for a given stack
11
+ * installDependencies() → execute the install command
12
+ * - OCP: Adding a new architecture or stack only requires adding a new entry
13
+ * to the ARCH_PATH_RULES or CONTENT_TRANSFORM_RULES tables.
14
+ * - DIP: `generateFeature` depends on abstractions (config table) not concretions.
15
+ */
16
+ export type SupportedFeature = 'swagger' | 'redis' | 'websocket' | 'husky' | 'auth';
17
+ export type SupportedStack = 'nodejs-express' | 'nestjs' | 'python-fastapi' | 'nextjs' | 'java-spring' | 'n8n';
18
+ export interface GenerateFeatureResult {
19
+ copiedFiles: string[];
20
+ instructionsPath: string | null;
21
+ installedDependencies: string[];
22
+ }
23
+ export declare function generateFeature(feature: SupportedFeature, stack: SupportedStack, projectRoot: string, architecture?: string): Promise<GenerateFeatureResult>;
24
+ export declare function isFeatureSupported(feature: SupportedFeature, stack: SupportedStack): boolean;
25
+ export declare function getSupportedFeatures(stack: SupportedStack): SupportedFeature[];
26
+ //# sourceMappingURL=feature-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-generator.d.ts","sourceRoot":"","sources":["../../../src/core/features/feature-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAmBH,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;AACpF,MAAM,MAAM,cAAc,GAAG,gBAAgB,GAAG,QAAQ,GAAG,gBAAgB,GAAG,QAAQ,GAAG,aAAa,GAAG,KAAK,CAAC;AAE/G,MAAM,WAAW,qBAAqB;IAClC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,qBAAqB,EAAE,MAAM,EAAE,CAAC;CACnC;AAmWD,wBAAsB,eAAe,CACjC,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,cAAc,EACrB,WAAW,EAAE,MAAM,EACnB,YAAY,GAAE,MAAc,GAC7B,OAAO,CAAC,qBAAqB,CAAC,CAqDhC;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAG5F;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,gBAAgB,EAAE,CAI9E"}
@@ -0,0 +1,376 @@
1
+ /**
2
+ * feature-generator.ts
3
+ *
4
+ * Core engine that copies feature boilerplate files into the user's project.
5
+ *
6
+ * SOLID Design:
7
+ * - SRP: Each private function has exactly one job:
8
+ * resolveDestPaths() → path rewriting for architecture
9
+ * transformFileContent() → import/package rewriting inside file content
10
+ * buildInstallCommand() → build the install command string for a given stack
11
+ * installDependencies() → execute the install command
12
+ * - OCP: Adding a new architecture or stack only requires adding a new entry
13
+ * to the ARCH_PATH_RULES or CONTENT_TRANSFORM_RULES tables.
14
+ * - DIP: `generateFeature` depends on abstractions (config table) not concretions.
15
+ */
16
+ import fs from 'fs-extra';
17
+ import path from 'path';
18
+ import { exec } from 'child_process';
19
+ import { promisify } from 'util';
20
+ import { fileURLToPath } from 'url';
21
+ const execAsync = promisify(exec);
22
+ const __filename = fileURLToPath(import.meta.url);
23
+ const __dirname = path.dirname(__filename);
24
+ // Resolve the add-features directory relative to the installed CLI package
25
+ const ADD_FEATURES_DIR = path.resolve(__dirname, '../../../add-features');
26
+ // ─────────────────────────────────────────────────────────────────
27
+ // Feature Map (Data — Open for Extension, Closed for Modification)
28
+ // ─────────────────────────────────────────────────────────────────
29
+ const FEATURE_MAP = {
30
+ swagger: {
31
+ unsupported: ['n8n'],
32
+ files: {
33
+ 'nodejs-express': [
34
+ { src: 'swagger/nodejs-express.ts', dest: 'src/swagger.ts' },
35
+ { src: 'swagger/INSTRUCTIONS.md', dest: 'SWAGGER.md' },
36
+ ],
37
+ 'nestjs': [
38
+ { src: 'swagger/nestjs.ts', dest: 'src/swagger.ts' },
39
+ { src: 'swagger/INSTRUCTIONS.md', dest: 'SWAGGER.md' },
40
+ ],
41
+ 'python-fastapi': [
42
+ { src: 'swagger/python-fastapi.py', dest: 'app/swagger.py' },
43
+ { src: 'swagger/INSTRUCTIONS.md', dest: 'SWAGGER.md' },
44
+ ],
45
+ nextjs: [
46
+ { src: 'swagger/nextjs-swagger.ts', dest: 'src/swagger.ts' },
47
+ { src: 'swagger/nextjs-route.ts', dest: 'src/app/api/docs/route.ts' },
48
+ { src: 'swagger/INSTRUCTIONS.md', dest: 'SWAGGER.md' },
49
+ ],
50
+ 'java-spring': [
51
+ { src: 'swagger/java-spring.java', dest: 'src/main/java/config/SwaggerConfig.java' },
52
+ { src: 'swagger/INSTRUCTIONS.md', dest: 'SWAGGER.md' },
53
+ ],
54
+ },
55
+ },
56
+ redis: {
57
+ unsupported: ['n8n'],
58
+ files: {
59
+ 'nodejs-express': [
60
+ { src: 'redis/nodejs.ts', dest: 'src/redis.ts' },
61
+ { src: 'redis/docker-compose.snippet.yml', dest: 'docker-compose.redis.yml' },
62
+ { src: 'redis/.env.snippet', dest: '.env.redis' },
63
+ { src: 'redis/INSTRUCTIONS.md', dest: 'REDIS.md' },
64
+ ],
65
+ 'nestjs': [
66
+ { src: 'redis/nodejs.ts', dest: 'src/redis.ts' },
67
+ { src: 'redis/docker-compose.snippet.yml', dest: 'docker-compose.redis.yml' },
68
+ { src: 'redis/.env.snippet', dest: '.env.redis' },
69
+ { src: 'redis/INSTRUCTIONS.md', dest: 'REDIS.md' },
70
+ ],
71
+ 'python-fastapi': [
72
+ { src: 'redis/python.py', dest: 'app/redis.py' },
73
+ { src: 'redis/docker-compose.snippet.yml', dest: 'docker-compose.redis.yml' },
74
+ { src: 'redis/.env.snippet', dest: '.env.redis' },
75
+ { src: 'redis/INSTRUCTIONS.md', dest: 'REDIS.md' },
76
+ ],
77
+ nextjs: [
78
+ { src: 'redis/nextjs.ts', dest: 'src/lib/redis.ts' },
79
+ { src: 'redis/docker-compose.snippet.yml', dest: 'docker-compose.redis.yml' },
80
+ { src: 'redis/.env.snippet', dest: '.env.redis' },
81
+ { src: 'redis/INSTRUCTIONS.md', dest: 'REDIS.md' },
82
+ ],
83
+ 'java-spring': [
84
+ { src: 'redis/java-spring.java', dest: 'src/main/java/config/RedisConfig.java' },
85
+ { src: 'redis/docker-compose.snippet.yml', dest: 'docker-compose.redis.yml' },
86
+ { src: 'redis/.env.snippet', dest: '.env.redis' },
87
+ { src: 'redis/INSTRUCTIONS.md', dest: 'REDIS.md' },
88
+ ],
89
+ },
90
+ },
91
+ websocket: {
92
+ unsupported: ['n8n', 'nextjs'],
93
+ files: {
94
+ 'nodejs-express': [
95
+ { src: 'websocket/nodejs-express.ts', dest: 'src/websocket.ts' },
96
+ { src: 'websocket/INSTRUCTIONS.md', dest: 'WEBSOCKET.md' },
97
+ ],
98
+ 'nestjs': [
99
+ { src: 'websocket/nestjs.ts', dest: 'src/app.gateway.ts' },
100
+ { src: 'websocket/INSTRUCTIONS.md', dest: 'WEBSOCKET.md' },
101
+ ],
102
+ 'python-fastapi': [
103
+ { src: 'websocket/python-fastapi.py', dest: 'app/websocket.py' },
104
+ { src: 'websocket/INSTRUCTIONS.md', dest: 'WEBSOCKET.md' },
105
+ ],
106
+ 'java-spring': [
107
+ { src: 'websocket/java-spring.java', dest: 'src/main/java/config/WebSocketConfig.java' },
108
+ { src: 'websocket/INSTRUCTIONS.md', dest: 'WEBSOCKET.md' },
109
+ ],
110
+ },
111
+ },
112
+ husky: {
113
+ // Husky requires npm/package.json — only applies to Node.js stacks
114
+ unsupported: ['java-spring', 'n8n', 'python-fastapi'],
115
+ files: {
116
+ all: [
117
+ { src: 'husky/pre-commit', dest: '.husky/pre-commit' },
118
+ { src: 'husky/commit-msg', dest: '.husky/commit-msg' },
119
+ { src: 'husky/commitlint.config.js', dest: 'commitlint.config.js' },
120
+ { src: 'husky/INSTRUCTIONS.md', dest: 'HUSKY.md' },
121
+ ],
122
+ },
123
+ },
124
+ auth: {
125
+ unsupported: ['n8n'],
126
+ files: {
127
+ 'nodejs-express': [
128
+ { src: 'auth/nodejs-express/auth.controller.ts', dest: 'src/auth/auth.controller.ts' },
129
+ { src: 'auth/nodejs-express/auth.service.ts', dest: 'src/auth/auth.service.ts' },
130
+ { src: 'auth/nodejs-express/auth.middleware.ts', dest: 'src/auth/auth.middleware.ts' },
131
+ { src: 'auth/nodejs-express/jwt.config.ts', dest: 'src/auth/jwt.config.ts' },
132
+ { src: 'auth/nodejs-express/auth.routes.ts', dest: 'src/auth/auth.routes.ts' },
133
+ { src: 'auth/nodejs-express/INSTRUCTIONS.md', dest: 'AUTH.md' },
134
+ ],
135
+ 'nestjs': [
136
+ { src: 'auth/nestjs/auth.module.ts', dest: 'src/auth/auth.module.ts' },
137
+ { src: 'auth/nestjs/auth.controller.ts', dest: 'src/auth/auth.controller.ts' },
138
+ { src: 'auth/nestjs/auth.service.ts', dest: 'src/auth/auth.service.ts' },
139
+ { src: 'auth/nestjs/jwt.strategy.ts', dest: 'src/auth/jwt.strategy.ts' },
140
+ { src: 'auth/nestjs/jwt-auth.guard.ts', dest: 'src/auth/jwt-auth.guard.ts' },
141
+ { src: 'auth/nestjs/dto/login.dto.ts', dest: 'src/auth/dto/login.dto.ts' },
142
+ { src: 'auth/nestjs/dto/register.dto.ts', dest: 'src/auth/dto/register.dto.ts' },
143
+ { src: 'auth/nestjs/INSTRUCTIONS.md', dest: 'AUTH.md' },
144
+ ],
145
+ 'python-fastapi': [
146
+ { src: 'auth/python-fastapi/schemas.py', dest: 'app/auth/schemas.py' },
147
+ { src: 'auth/python-fastapi/security.py', dest: 'app/auth/security.py' },
148
+ { src: 'auth/python-fastapi/service.py', dest: 'app/auth/service.py' },
149
+ { src: 'auth/python-fastapi/router.py', dest: 'app/auth/router.py' },
150
+ { src: 'auth/python-fastapi/INSTRUCTIONS.md', dest: 'AUTH.md' },
151
+ ],
152
+ 'java-spring': [
153
+ { src: 'auth/java-spring/AuthController.java', dest: 'src/main/java/auth/AuthController.java' },
154
+ { src: 'auth/java-spring/AuthService.java', dest: 'src/main/java/auth/AuthService.java' },
155
+ { src: 'auth/java-spring/dto/LoginRequest.java', dest: 'src/main/java/auth/dto/LoginRequest.java' },
156
+ { src: 'auth/java-spring/dto/RegisterRequest.java', dest: 'src/main/java/auth/dto/RegisterRequest.java' },
157
+ { src: 'auth/java-spring/security/JwtUtil.java', dest: 'src/main/java/security/JwtUtil.java' },
158
+ { src: 'auth/java-spring/security/JwtRequestFilter.java', dest: 'src/main/java/security/JwtRequestFilter.java' },
159
+ { src: 'auth/java-spring/security/SecurityConfig.java', dest: 'src/main/java/security/SecurityConfig.java' },
160
+ { src: 'auth/java-spring/INSTRUCTIONS.md', dest: 'AUTH.md' },
161
+ ],
162
+ nextjs: [
163
+ { src: 'auth/nextjs/jwt.ts', dest: 'src/lib/auth/jwt.ts' },
164
+ { src: 'auth/nextjs/session.ts', dest: 'src/lib/auth/session.ts' },
165
+ { src: 'auth/nextjs/routes/login.ts', dest: 'src/app/api/auth/login/route.ts' },
166
+ { src: 'auth/nextjs/routes/register.ts', dest: 'src/app/api/auth/register/route.ts' },
167
+ { src: 'auth/nextjs/middleware.ts', dest: 'src/middleware.ts' },
168
+ { src: 'auth/nextjs/INSTRUCTIONS.md', dest: 'AUTH.md' },
169
+ ],
170
+ },
171
+ dependencies: {
172
+ 'nodejs-express': ['jsonwebtoken', 'bcryptjs'],
173
+ 'nestjs': ['@nestjs/passport', '@nestjs/jwt', 'passport', 'passport-jwt', 'bcryptjs'],
174
+ 'python-fastapi': ['python-jose[cryptography]', 'passlib[bcrypt]', 'python-multipart'],
175
+ nextjs: ['jsonwebtoken', 'bcryptjs'],
176
+ // Java: dependencies go in pom.xml — see AUTH.md for the snippets
177
+ },
178
+ devDependencies: {
179
+ 'nodejs-express': ['@types/jsonwebtoken', '@types/bcryptjs'],
180
+ 'nestjs': ['@types/passport-jwt', '@types/bcryptjs'],
181
+ nextjs: ['@types/jsonwebtoken', '@types/bcryptjs'],
182
+ },
183
+ },
184
+ };
185
+ // ─────────────────────────────────────────────────────────────────
186
+ // Architecture Path Rules (OCP: extend here, not in function)
187
+ // ─────────────────────────────────────────────────────────────────
188
+ /** Maps MVC default dest prefix → Clean/Hexagonal dest prefix, per stack. */
189
+ const ARCH_PATH_RULES = {
190
+ 'nodejs-express': [
191
+ ['src/auth/auth.controller.ts', 'src/presentation/controllers/auth.controller.ts'],
192
+ ['src/auth/auth.service.ts', 'src/application/services/auth.service.ts'],
193
+ ['src/auth/auth.middleware.ts', 'src/infrastructure/security/auth.middleware.ts'],
194
+ ['src/auth/jwt.config.ts', 'src/infrastructure/security/jwt.config.ts'],
195
+ ['src/auth/auth.routes.ts', 'src/presentation/routes/auth.routes.ts'],
196
+ ],
197
+ nestjs: [
198
+ ['src/auth/auth.controller.ts', 'src/presentation/controllers/auth.controller.ts'],
199
+ ['src/auth/auth.service.ts', 'src/application/services/auth.service.ts'],
200
+ ['src/auth/auth.middleware.ts', 'src/infrastructure/security/auth.middleware.ts'],
201
+ ['src/auth/jwt.strategy.ts', 'src/infrastructure/security/jwt.strategy.ts'],
202
+ ['src/auth/jwt-auth.guard.ts', 'src/infrastructure/security/jwt-auth.guard.ts'],
203
+ ['src/auth/auth.module.ts', 'src/infrastructure/modules/auth.module.ts'],
204
+ ['src/auth/dto/login.dto.ts', 'src/application/dtos/login.dto.ts'],
205
+ ['src/auth/dto/register.dto.ts', 'src/application/dtos/register.dto.ts'],
206
+ ],
207
+ 'python-fastapi': [
208
+ ['app/auth/router.py', 'app/presentation/api/auth_router.py'],
209
+ ['app/auth/service.py', 'app/application/services/auth_service.py'],
210
+ ['app/auth/security.py', 'app/infrastructure/security.py'],
211
+ ['app/auth/schemas.py', 'app/application/schemas/auth_schemas.py'],
212
+ ],
213
+ 'java-spring': [
214
+ ['src/main/java/auth/AuthController.java', 'src/main/java/presentation/controllers/AuthController.java'],
215
+ ['src/main/java/auth/AuthService.java', 'src/main/java/application/services/AuthService.java'],
216
+ ['src/main/java/auth/dto/LoginRequest.java', 'src/main/java/application/dtos/LoginRequest.java'],
217
+ ['src/main/java/auth/dto/RegisterRequest.java', 'src/main/java/application/dtos/RegisterRequest.java'],
218
+ ],
219
+ };
220
+ /** Content-level import/package transforms applied when architecture is clean/hexagonal. */
221
+ const CONTENT_TRANSFORM_RULES = {
222
+ 'nodejs-express': [
223
+ { matchDest: 'presentation/controllers', from: /from '\.\/auth\.service'/g, to: "from '../../application/services/auth.service'" },
224
+ { matchDest: 'presentation/controllers', from: /from '\.\/dto\//g, to: "from '../../application/dtos/" },
225
+ { matchDest: 'presentation/routes', from: /from '\.\/auth\.controller'/g, to: "from '../controllers/auth.controller'" },
226
+ { matchDest: 'presentation/routes', from: /from '\.\/auth\.middleware'/g, to: "from '../../infrastructure/security/auth.middleware'" },
227
+ ],
228
+ nestjs: [
229
+ { matchDest: 'presentation/controllers', from: /from '\.\/auth\.service'/g, to: "from '../../application/services/auth.service'" },
230
+ { matchDest: 'presentation/controllers', from: /from '\.\/dto\//g, to: "from '../../application/dtos/" },
231
+ { matchDest: 'infrastructure/modules', from: /from '\.\/auth\.controller'/g, to: "from '../../presentation/controllers/auth.controller'" },
232
+ { matchDest: 'infrastructure/modules', from: /from '\.\/auth\.service'/g, to: "from '../../application/services/auth.service'" },
233
+ { matchDest: 'infrastructure/modules', from: /from '\.\/jwt\.strategy'/g, to: "from '../security/jwt.strategy'" },
234
+ ],
235
+ 'python-fastapi': [
236
+ { matchDest: 'presentation/api', from: 'from .schemas import', to: 'from app.application.schemas.auth_schemas import' },
237
+ { matchDest: 'presentation/api', from: 'from .service import', to: 'from app.application.services.auth_service import' },
238
+ { matchDest: 'presentation/api', from: 'from .security import', to: 'from app.infrastructure.security import' },
239
+ ],
240
+ 'java-spring': [
241
+ {
242
+ matchDest: 'presentation/controllers',
243
+ from: 'package com.example.auth;',
244
+ to: 'package presentation.controllers;\n\nimport application.services.AuthService;\nimport application.dtos.RegisterRequest;\nimport application.dtos.LoginRequest;',
245
+ },
246
+ {
247
+ matchDest: 'application/services',
248
+ from: 'package com.example.auth;',
249
+ to: 'package application.services;\n\nimport application.dtos.RegisterRequest;\nimport application.dtos.LoginRequest;',
250
+ },
251
+ {
252
+ matchDest: 'application/dtos',
253
+ from: 'package com.example.auth;',
254
+ to: 'package application.dtos;',
255
+ },
256
+ ],
257
+ };
258
+ // ─────────────────────────────────────────────────────────────────
259
+ // Private Helpers (SRP: each does ONE thing)
260
+ // ─────────────────────────────────────────────────────────────────
261
+ /**
262
+ * Rewrites the `dest` path of a feature file based on the target architecture.
263
+ * For MVC, it's a no-op. For clean/hexagonal, it applies ARCH_PATH_RULES.
264
+ */
265
+ function resolveDestPath(dest, stack, architecture) {
266
+ if (architecture === 'mvc')
267
+ return dest;
268
+ const rules = ARCH_PATH_RULES[stack];
269
+ if (!rules)
270
+ return dest;
271
+ for (const [from, to] of rules) {
272
+ if (dest === from)
273
+ return to;
274
+ }
275
+ return dest;
276
+ }
277
+ /**
278
+ * Patches file content (imports, package declarations) when files are
279
+ * moved to a clean/hexagonal structure. Applies CONTENT_TRANSFORM_RULES.
280
+ */
281
+ function transformFileContent(content, stack, architecture, dest) {
282
+ if (architecture === 'mvc')
283
+ return content;
284
+ const rules = CONTENT_TRANSFORM_RULES[stack];
285
+ if (!rules)
286
+ return content;
287
+ let result = content;
288
+ for (const rule of rules) {
289
+ if (dest.includes(rule.matchDest)) {
290
+ result = result.replaceAll(rule.from, rule.to);
291
+ }
292
+ }
293
+ return result;
294
+ }
295
+ /**
296
+ * Builds the install command string for the given stack, or null if
297
+ * the stack does not use a CLI package manager for this feature.
298
+ */
299
+ function buildInstallCommand(stack, deps, devDeps) {
300
+ if (stack === 'python-fastapi') {
301
+ return deps.length > 0 ? `pip install ${deps.join(' ')}` : null;
302
+ }
303
+ if (['nodejs-express', 'nestjs', 'nextjs', 'n8n'].includes(stack)) {
304
+ const parts = [];
305
+ if (deps.length > 0)
306
+ parts.push(`npm install ${deps.join(' ')}`);
307
+ if (devDeps.length > 0)
308
+ parts.push(`npm install -D ${devDeps.join(' ')}`);
309
+ return parts.length > 0 ? parts.join(' && ') : null;
310
+ }
311
+ return null; // java-spring: managed via pom.xml
312
+ }
313
+ /**
314
+ * Runs the given install command inside `projectRoot`.
315
+ * Logs a warning (non-fatal) if it fails.
316
+ */
317
+ async function installDependencies(command, deps, projectRoot) {
318
+ try {
319
+ await execAsync(command, { cwd: projectRoot });
320
+ return deps;
321
+ }
322
+ catch {
323
+ console.warn(`\nWarning: Failed to auto-install dependencies. Run manually:\n ${command}`);
324
+ return [];
325
+ }
326
+ }
327
+ // ─────────────────────────────────────────────────────────────────
328
+ // Public API
329
+ // ─────────────────────────────────────────────────────────────────
330
+ export async function generateFeature(feature, stack, projectRoot, architecture = 'mvc') {
331
+ const config = FEATURE_MAP[feature];
332
+ if (!config) {
333
+ throw new Error(`Unknown feature: "${feature}". Supported: ${Object.keys(FEATURE_MAP).join(', ')}`);
334
+ }
335
+ if (config.unsupported?.includes(stack)) {
336
+ throw new Error(`Feature "${feature}" is not supported for stack "${stack}".`);
337
+ }
338
+ const filesToCopy = config.files[stack] ?? config.files['all'] ?? [];
339
+ if (filesToCopy.length === 0) {
340
+ throw new Error(`No files configured for feature "${feature}" with stack "${stack}".`);
341
+ }
342
+ const copiedFiles = [];
343
+ let instructionsPath = null;
344
+ for (const file of filesToCopy) {
345
+ const srcPath = path.join(ADD_FEATURES_DIR, file.src);
346
+ if (!await fs.pathExists(srcPath)) {
347
+ throw new Error(`Feature template not found: ${srcPath}`);
348
+ }
349
+ const dest = resolveDestPath(file.dest, stack, architecture);
350
+ const destPath = path.join(projectRoot, dest);
351
+ let content = await fs.readFile(srcPath, 'utf-8');
352
+ content = transformFileContent(content, stack, architecture, dest);
353
+ await fs.ensureDir(path.dirname(destPath));
354
+ await fs.writeFile(destPath, content, 'utf-8');
355
+ copiedFiles.push(dest);
356
+ if (dest.endsWith('.md')) {
357
+ instructionsPath = dest;
358
+ }
359
+ }
360
+ // Dependency installation
361
+ const deps = config.dependencies?.[stack] ?? [];
362
+ const devDeps = config.devDependencies?.[stack] ?? [];
363
+ const command = buildInstallCommand(stack, deps, devDeps);
364
+ const installedDependencies = command
365
+ ? await installDependencies(command, [...deps, ...devDeps], projectRoot)
366
+ : [];
367
+ return { copiedFiles, instructionsPath, installedDependencies };
368
+ }
369
+ export function isFeatureSupported(feature, stack) {
370
+ const config = FEATURE_MAP[feature];
371
+ return !!config && !config.unsupported?.includes(stack);
372
+ }
373
+ export function getSupportedFeatures(stack) {
374
+ return Object.keys(FEATURE_MAP).filter((f) => isFeatureSupported(f, stack));
375
+ }
376
+ //# sourceMappingURL=feature-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-generator.js","sourceRoot":"","sources":["../../../src/core/features/feature-generator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../src/core/generator/project.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AASvD;;GAEG;AACH,qBAAa,gBAAgB;IACzB,OAAO,CAAC,MAAM,CAAiB;;IAM/B;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkDvE;;;OAGG;YACW,oBAAoB;IAYlC;;OAEG;YACW,uBAAuB;IAyCrC;;OAEG;IAGH;;OAEG;IACH,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,4BAA4B;IA2CpC;;OAEG;YACW,sBAAsB;IAOpC;;OAEG;YACW,uBAAuB;IAgCrC;;OAEG;YACW,kBAAkB;IAsChC;;OAEG;YACW,mBAAmB;CAwCpC"}
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../src/core/generator/project.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AASvD;;GAEG;AACH,qBAAa,gBAAgB;IACzB,OAAO,CAAC,MAAM,CAAiB;;IAM/B;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+FvE;;;OAGG;YACW,oBAAoB;IAYlC;;OAEG;YACW,uBAAuB;IAyCrC;;OAEG;IAGH;;OAEG;IACH,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,4BAA4B;IA2CpC;;OAEG;YACW,sBAAsB;IAOpC;;OAEG;YACW,uBAAuB;IAgCrC;;OAEG;YACW,kBAAkB;IAsChC;;OAEG;YACW,mBAAmB;CAwCpC"}
@@ -4,6 +4,7 @@ import fs from 'fs-extra';
4
4
  import { exec } from 'child_process';
5
5
  import { promisify } from 'util';
6
6
  import * as clack from '@clack/prompts';
7
+ import degit from 'degit';
7
8
  import { TemplateEngine } from '../templates/engine.js';
8
9
  import { buildTemplateContext } from './context-builder.js';
9
10
  const __filename = fileURLToPath(import.meta.url);
@@ -30,8 +31,33 @@ export class ProjectGenerator {
30
31
  spinner.stop('❌ Directory already exists');
31
32
  throw new Error(`Directory "${config.projectName}" already exists!`);
32
33
  }
33
- // 2. Determine template path (Always use local templates)
34
- const templatePath = await this.getLocalTemplatePath(config);
34
+ // 2. Determine template path (Local or Custom Repo)
35
+ let templatePath;
36
+ let tempDir = null;
37
+ if (config.customTemplate) {
38
+ spinner.message(`📥 Downloading custom template: ${config.customTemplate}...`);
39
+ const tmpName = `.kybernus-tmp-${Date.now()}`;
40
+ tempDir = path.join(outputDir, tmpName);
41
+ try {
42
+ const emitter = degit(config.customTemplate, {
43
+ cache: false,
44
+ force: true,
45
+ verbose: true
46
+ });
47
+ await emitter.clone(tempDir);
48
+ templatePath = tempDir;
49
+ spinner.message('🏗️ Gerando projeto a partir do template customizado...');
50
+ }
51
+ catch (err) {
52
+ if (tempDir)
53
+ await fs.remove(tempDir);
54
+ spinner.stop('❌ Erro ao baixar template');
55
+ throw new Error(`Failed to download template "${config.customTemplate}": ${err.message}`);
56
+ }
57
+ }
58
+ else {
59
+ templatePath = await this.getLocalTemplatePath(config);
60
+ }
35
61
  // Check if template exists
36
62
  if (!templatePath || !(await fs.pathExists(templatePath))) {
37
63
  spinner.stop('❌ Template not found');
@@ -42,6 +68,20 @@ export class ProjectGenerator {
42
68
  const context = buildTemplateContext(config);
43
69
  // 4. Render all templates
44
70
  await this.engine.renderTree(templatePath, projectPath, context);
71
+ // Cleanup temp directory immediately after generation
72
+ if (tempDir) {
73
+ await fs.remove(tempDir);
74
+ }
75
+ // 4.5 Save Project Context (.kybernusrc.json) for future commands like "add"
76
+ const rcContent = {
77
+ projectName: config.projectName,
78
+ stack: config.stack,
79
+ architecture: config.architecture || 'mvc',
80
+ buildTool: config.buildTool || 'npm',
81
+ customTemplate: config.customTemplate || null,
82
+ createdAt: new Date().toISOString()
83
+ };
84
+ await fs.writeFile(path.join(projectPath, '.kybernusrc.json'), JSON.stringify(rcContent, null, 2), 'utf-8');
45
85
  // 5. Generate AI documentation (if enabled)
46
86
  if (config.useAI && config.geminiKey) {
47
87
  spinner.message('🤖 Generating AI documentation...');
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../../src/core/generator/project.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../../src/core/generator/project.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/core/templates/engine.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD;;GAEG;AACH,qBAAa,cAAc;IACvB,OAAO,CAAC,UAAU,CAAoB;;IAOtC;;OAEG;IACG,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAMjF;;OAEG;IACG,UAAU,CACZ,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,eAAe,GACzB,OAAO,CAAC,IAAI,CAAC;IAmChB;;OAEG;YACW,mBAAmB;IAkBjC;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAK7B"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/core/templates/engine.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD;;GAEG;AACH,qBAAa,cAAc;IACvB,OAAO,CAAC,UAAU,CAAoB;;IAOtC;;OAEG;IACG,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAMjF;;OAEG;IACG,UAAU,CACZ,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,eAAe,GACzB,OAAO,CAAC,IAAI,CAAC;IAwChB;;OAEG;YACW,mBAAmB;IAkBjC;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAK7B"}
@@ -39,6 +39,10 @@ export class TemplateEngine {
39
39
  }
40
40
  // Renderiza o template
41
41
  const content = await this.renderFile(file, context);
42
+ // Skip files that rendered to nothing (e.g. wrapped in {{#if false}})
43
+ if (!content || !content.trim()) {
44
+ continue;
45
+ }
42
46
  // Escreve o arquivo
43
47
  await fs.ensureDir(path.dirname(outputPath));
44
48
  await fs.writeFile(outputPath, content, 'utf-8');
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/core/templates/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/core/templates/engine.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -2,6 +2,10 @@
2
2
  import { Command } from 'commander';
3
3
  import { initCommand } from './cli/commands/init.js';
4
4
  import { analyticsCommand } from './cli/commands/analytics.js';
5
+ import { doctorCommand } from './cli/commands/doctor.js';
6
+ import { addCommand } from './cli/commands/add.js';
7
+ import { authCommand } from './cli/commands/auth.js';
8
+ import { deployCommand } from './cli/commands/deploy.js';
5
9
  import { createRequire } from 'module';
6
10
  const requirePkg = createRequire(import.meta.url);
7
11
  const pkg = requirePkg('../package.json');
@@ -16,10 +20,15 @@ program
16
20
  .option('-n, --name <name>', 'Project name')
17
21
  .option('-s, --stack <stack>', 'Technology stack (nextjs, java-spring, nodejs-express, python-fastapi, nestjs, n8n)')
18
22
  .option('-a, --architecture <arch>', 'Architecture or Template/Use-case (mvc, clean, hexagonal, default, ai-assistant, crm-tracker, system-monitor)')
23
+ .option('-t, --template <repo>', 'Use a custom template from a Git repository (e.g., github:user/repo)')
19
24
  .option('-b, --build-tool <tool>', 'Build tool (maven, gradle, npm, pnpm, yarn)')
20
25
  .option('--no-ai', 'Skip AI documentation generation')
21
26
  .option('--non-interactive', 'Run in non-interactive mode (requires all options)')
22
27
  .action(initCommand);
23
28
  program.addCommand(analyticsCommand);
29
+ program.addCommand(doctorCommand);
30
+ program.addCommand(addCommand);
31
+ program.addCommand(authCommand);
32
+ program.addCommand(deployCommand);
24
33
  program.parse();
25
34
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,GAAG,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;AAE1C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACF,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,kFAAkF,CAAC;KAC/F,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAE1B,OAAO;KACF,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,mBAAmB,EAAE,cAAc,CAAC;KAC3C,MAAM,CAAC,qBAAqB,EAAE,qFAAqF,CAAC;KACpH,MAAM,CAAC,2BAA2B,EAAE,+GAA+G,CAAC;KACpJ,MAAM,CAAC,yBAAyB,EAAE,6CAA6C,CAAC;KAChF,MAAM,CAAC,SAAS,EAAE,kCAAkC,CAAC;KACrD,MAAM,CAAC,mBAAmB,EAAE,oDAAoD,CAAC;KACjF,MAAM,CAAC,WAAW,CAAC,CAAC;AAEzB,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AAErC,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,GAAG,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;AAE1C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACF,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,kFAAkF,CAAC;KAC/F,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAE1B,OAAO;KACF,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,mBAAmB,EAAE,cAAc,CAAC;KAC3C,MAAM,CAAC,qBAAqB,EAAE,qFAAqF,CAAC;KACpH,MAAM,CAAC,2BAA2B,EAAE,+GAA+G,CAAC;KACpJ,MAAM,CAAC,uBAAuB,EAAE,sEAAsE,CAAC;KACvG,MAAM,CAAC,yBAAyB,EAAE,6CAA6C,CAAC;KAChF,MAAM,CAAC,SAAS,EAAE,kCAAkC,CAAC;KACrD,MAAM,CAAC,mBAAmB,EAAE,oDAAoD,CAAC;KACjF,MAAM,CAAC,WAAW,CAAC,CAAC;AAEzB,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACrC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAElC,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -4,6 +4,7 @@ export type BuildTool = 'maven' | 'gradle' | 'npm' | 'pnpm' | 'yarn';
4
4
  export interface ProjectConfig {
5
5
  projectName: string;
6
6
  stack: Stack;
7
+ customTemplate?: string;
7
8
  architecture?: Architecture;
8
9
  buildTool?: BuildTool;
9
10
  packageName?: string;