create-warlock 4.0.174 → 4.1.2

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 (173) hide show
  1. package/cjs/index.cjs +780 -0
  2. package/cjs/index.cjs.map +1 -0
  3. package/cjs/paths-Bl9Wn7qV.cjs +247 -0
  4. package/cjs/paths-Bl9Wn7qV.cjs.map +1 -0
  5. package/cjs/project-builder-helpers-DGcgf60P.cjs +27 -0
  6. package/cjs/project-builder-helpers-DGcgf60P.cjs.map +1 -0
  7. package/esm/commands/create-new-app/get-app-path.mjs +17 -0
  8. package/esm/commands/create-new-app/get-app-path.mjs.map +1 -0
  9. package/esm/commands/create-new-app/index.mjs +152 -0
  10. package/esm/commands/create-new-app/index.mjs.map +1 -0
  11. package/esm/commands/create-new-app/types.d.mts +18 -0
  12. package/esm/commands/create-warlock-app/index.mjs +57 -0
  13. package/esm/commands/create-warlock-app/index.mjs.map +1 -0
  14. package/esm/features/database-drivers.mjs +47 -0
  15. package/esm/features/database-drivers.mjs.map +1 -0
  16. package/esm/features/features-map.mjs +157 -0
  17. package/esm/features/features-map.mjs.map +1 -0
  18. package/esm/helpers/app.mjs +157 -0
  19. package/esm/helpers/app.mjs.map +1 -0
  20. package/esm/helpers/exec.mjs +58 -0
  21. package/esm/helpers/exec.mjs.map +1 -0
  22. package/esm/helpers/package-manager.mjs +84 -0
  23. package/esm/helpers/package-manager.mjs.map +1 -0
  24. package/esm/helpers/paths.mjs +16 -0
  25. package/esm/helpers/paths.mjs.map +1 -0
  26. package/esm/helpers/project-builder-helpers.mjs +28 -0
  27. package/esm/helpers/project-builder-helpers.mjs.map +1 -0
  28. package/esm/index.d.mts +14 -0
  29. package/esm/index.mjs +83 -0
  30. package/esm/index.mjs.map +1 -0
  31. package/esm/ui/{banner.js → banner.mjs} +51 -67
  32. package/esm/ui/banner.mjs.map +1 -0
  33. package/esm/ui/spinners.mjs +23 -0
  34. package/esm/ui/spinners.mjs.map +1 -0
  35. package/llms-full.txt +121 -0
  36. package/llms.txt +9 -0
  37. package/package.json +36 -40
  38. package/skills/create-a-warlock-project/SKILL.md +111 -0
  39. package/templates/warlock/.prettierrc.json +10 -11
  40. package/templates/warlock/_.gitignore +0 -1
  41. package/templates/warlock/package.json +71 -66
  42. package/templates/warlock/src/app/auth/controllers/login.controller.ts +5 -6
  43. package/templates/warlock/src/app/auth/controllers/reset-password.controller.ts +5 -6
  44. package/templates/warlock/src/app/auth/models/otp/migrations/22-12-2025_10-30-20.otp-migration.ts +33 -43
  45. package/templates/warlock/src/app/auth/requests/guarded.request.ts +5 -1
  46. package/templates/warlock/src/app/posts/controllers/create-new-post.controller.ts +5 -6
  47. package/templates/warlock/src/app/posts/controllers/update-post.controller.ts +4 -5
  48. package/templates/warlock/src/app/posts/models/post/migrations/09-01-2026_02-07-51-post.migration.ts +21 -34
  49. package/templates/warlock/src/app/posts/models/post/post.model.ts +0 -2
  50. package/templates/warlock/src/app/posts/{validation → schema}/create-post.schema.ts +1 -1
  51. package/templates/warlock/src/app/posts/{validation → schema}/update-post.schema.ts +1 -1
  52. package/templates/warlock/src/app/shared/utils/locales.ts +34 -0
  53. package/templates/warlock/src/app/shared/utils/router.ts +1 -1
  54. package/templates/warlock/src/app/uploads/controllers/fetch-uploaded-file.controller.ts +1 -1
  55. package/templates/warlock/src/app/users/controllers/create-new-user.controller.ts +4 -4
  56. package/templates/warlock/src/app/users/controllers/list-users.controller.ts +3 -12
  57. package/templates/warlock/src/app/users/models/user/migrations/11-12-2025_23-58-03-user.migration.ts +13 -33
  58. package/templates/warlock/src/app/users/{validation → schema}/create-user.schema.ts +1 -1
  59. package/templates/warlock/storage/.gitignore +2 -0
  60. package/templates/warlock/yarn.lock +2332 -0
  61. package/cjs/commands/create-new-app/get-app-path.d.ts +0 -2
  62. package/cjs/commands/create-new-app/get-app-path.d.ts.map +0 -1
  63. package/cjs/commands/create-new-app/get-app-path.js +0 -8
  64. package/cjs/commands/create-new-app/get-app-path.js.map +0 -1
  65. package/cjs/commands/create-new-app/index.d.ts +0 -2
  66. package/cjs/commands/create-new-app/index.d.ts.map +0 -1
  67. package/cjs/commands/create-new-app/index.js +0 -96
  68. package/cjs/commands/create-new-app/index.js.map +0 -1
  69. package/cjs/commands/create-new-app/types.d.ts +0 -16
  70. package/cjs/commands/create-new-app/types.d.ts.map +0 -1
  71. package/cjs/commands/create-warlock-app/index.d.ts +0 -3
  72. package/cjs/commands/create-warlock-app/index.d.ts.map +0 -1
  73. package/cjs/commands/create-warlock-app/index.js +0 -55
  74. package/cjs/commands/create-warlock-app/index.js.map +0 -1
  75. package/cjs/features/database-drivers.d.ts +0 -31
  76. package/cjs/features/database-drivers.d.ts.map +0 -1
  77. package/cjs/features/database-drivers.js +0 -53
  78. package/cjs/features/database-drivers.js.map +0 -1
  79. package/cjs/features/features-map.d.ts +0 -35
  80. package/cjs/features/features-map.d.ts.map +0 -1
  81. package/cjs/features/features-map.js +0 -120
  82. package/cjs/features/features-map.js.map +0 -1
  83. package/cjs/helpers/app.d.ts +0 -71
  84. package/cjs/helpers/app.d.ts.map +0 -1
  85. package/cjs/helpers/app.js +0 -196
  86. package/cjs/helpers/app.js.map +0 -1
  87. package/cjs/helpers/exec.d.ts +0 -10
  88. package/cjs/helpers/exec.d.ts.map +0 -1
  89. package/cjs/helpers/exec.js +0 -69
  90. package/cjs/helpers/exec.js.map +0 -1
  91. package/cjs/helpers/package-manager.d.ts +0 -18
  92. package/cjs/helpers/package-manager.d.ts.map +0 -1
  93. package/cjs/helpers/package-manager.js +0 -104
  94. package/cjs/helpers/package-manager.js.map +0 -1
  95. package/cjs/helpers/paths.d.ts +0 -4
  96. package/cjs/helpers/paths.d.ts.map +0 -1
  97. package/cjs/helpers/paths.js +0 -8
  98. package/cjs/helpers/paths.js.map +0 -1
  99. package/cjs/helpers/project-builder-helpers.d.ts +0 -6
  100. package/cjs/helpers/project-builder-helpers.d.ts.map +0 -1
  101. package/cjs/helpers/project-builder-helpers.js +0 -11
  102. package/cjs/helpers/project-builder-helpers.js.map +0 -1
  103. package/cjs/index.d.ts +0 -2
  104. package/cjs/index.d.ts.map +0 -1
  105. package/cjs/index.js +0 -3
  106. package/cjs/index.js.map +0 -1
  107. package/cjs/ui/banner.d.ts +0 -29
  108. package/cjs/ui/banner.d.ts.map +0 -1
  109. package/cjs/ui/banner.js +0 -142
  110. package/cjs/ui/banner.js.map +0 -1
  111. package/cjs/ui/spinners.d.ts +0 -18
  112. package/cjs/ui/spinners.d.ts.map +0 -1
  113. package/cjs/ui/spinners.js +0 -17
  114. package/cjs/ui/spinners.js.map +0 -1
  115. package/create-app.js +0 -5
  116. package/esm/commands/create-new-app/get-app-path.d.ts +0 -2
  117. package/esm/commands/create-new-app/get-app-path.d.ts.map +0 -1
  118. package/esm/commands/create-new-app/get-app-path.js +0 -8
  119. package/esm/commands/create-new-app/get-app-path.js.map +0 -1
  120. package/esm/commands/create-new-app/index.d.ts +0 -2
  121. package/esm/commands/create-new-app/index.d.ts.map +0 -1
  122. package/esm/commands/create-new-app/index.js +0 -96
  123. package/esm/commands/create-new-app/index.js.map +0 -1
  124. package/esm/commands/create-new-app/types.d.ts +0 -16
  125. package/esm/commands/create-new-app/types.d.ts.map +0 -1
  126. package/esm/commands/create-warlock-app/index.d.ts +0 -3
  127. package/esm/commands/create-warlock-app/index.d.ts.map +0 -1
  128. package/esm/commands/create-warlock-app/index.js +0 -55
  129. package/esm/commands/create-warlock-app/index.js.map +0 -1
  130. package/esm/features/database-drivers.d.ts +0 -31
  131. package/esm/features/database-drivers.d.ts.map +0 -1
  132. package/esm/features/database-drivers.js +0 -53
  133. package/esm/features/database-drivers.js.map +0 -1
  134. package/esm/features/features-map.d.ts +0 -35
  135. package/esm/features/features-map.d.ts.map +0 -1
  136. package/esm/features/features-map.js +0 -120
  137. package/esm/features/features-map.js.map +0 -1
  138. package/esm/helpers/app.d.ts +0 -71
  139. package/esm/helpers/app.d.ts.map +0 -1
  140. package/esm/helpers/app.js +0 -196
  141. package/esm/helpers/app.js.map +0 -1
  142. package/esm/helpers/exec.d.ts +0 -10
  143. package/esm/helpers/exec.d.ts.map +0 -1
  144. package/esm/helpers/exec.js +0 -69
  145. package/esm/helpers/exec.js.map +0 -1
  146. package/esm/helpers/package-manager.d.ts +0 -18
  147. package/esm/helpers/package-manager.d.ts.map +0 -1
  148. package/esm/helpers/package-manager.js +0 -104
  149. package/esm/helpers/package-manager.js.map +0 -1
  150. package/esm/helpers/paths.d.ts +0 -4
  151. package/esm/helpers/paths.d.ts.map +0 -1
  152. package/esm/helpers/paths.js +0 -8
  153. package/esm/helpers/paths.js.map +0 -1
  154. package/esm/helpers/project-builder-helpers.d.ts +0 -6
  155. package/esm/helpers/project-builder-helpers.d.ts.map +0 -1
  156. package/esm/helpers/project-builder-helpers.js +0 -11
  157. package/esm/helpers/project-builder-helpers.js.map +0 -1
  158. package/esm/index.d.ts +0 -2
  159. package/esm/index.d.ts.map +0 -1
  160. package/esm/index.js +0 -3
  161. package/esm/index.js.map +0 -1
  162. package/esm/ui/banner.d.ts +0 -29
  163. package/esm/ui/banner.d.ts.map +0 -1
  164. package/esm/ui/banner.js.map +0 -1
  165. package/esm/ui/spinners.d.ts +0 -18
  166. package/esm/ui/spinners.d.ts.map +0 -1
  167. package/esm/ui/spinners.js +0 -17
  168. package/esm/ui/spinners.js.map +0 -1
  169. package/templates/warlock/src/app/auth/requests/login.request.ts +0 -4
  170. package/templates/warlock/src/app/auth/requests/reset-password.request.ts +0 -4
  171. package/templates/warlock/src/app/posts/requests/create-post.request.ts +0 -4
  172. package/templates/warlock/src/app/posts/requests/update-post.request.ts +0 -4
  173. package/templates/warlock/src/app/users/requests/create-user.request.ts +0 -4
package/cjs/ui/banner.js DELETED
@@ -1,142 +0,0 @@
1
- 'use strict';var copper=require('@mongez/copper');const warlockTextAnsi = `
2
- \x1b[49m
3
- \x1b[49m \x1b[38;2;252;238;36m██╗ ██╗ █████╗ ██████╗ ██╗ ██████╗ ██████╗██╗ ██╗ \x1b[38;2;252;238;36m ██╗ ███████╗\x1b[m
4
- \x1b[49m \x1b[38;2;250;235;34m██║ ██║██╔══██╗██╔══██╗██║ ██╔═══██╗██╔════╝██║ ██╔╝ \x1b[38;2;250;235;34m ██║ ██╔════╝\x1b[m
5
- \x1b[49m \x1b[38;2;248;233;32m██║ █╗ ██║███████║██████╔╝██║ ██║ ██║██║ █████╔╝ \x1b[38;2;248;233;32m ██║ ███████╗\x1b[m
6
- \x1b[49m \x1b[38;2;246;231;30m██║███╗██║██╔══██║██╔══██╗██║ ██║ ██║██║ ██╔═██╗ \x1b[38;2;246;231;30m██ ██║ ╚════██║\x1b[m
7
- \x1b[49m \x1b[38;2;244;229;28m╚███╔███╔╝██║ ██║██║ ██║███████╗╚██████╔╝╚██████╗██║ ██╗ \x1b[38;2;244;229;28m╚█████╔╝ ███████║\x1b[m
8
- \x1b[49m \x1b[38;2;242;227;26m ╚══╝╚══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═════╝╚═╝ ╚═╝ \x1b[38;2;242;227;26m ╚════╝ ╚══════╝\x1b[m
9
- \x1b[49m
10
- `;
11
- const warlockLogoAnsi = `\x1b[49m \x1b[38;2;247;232;77;49m▄\x1b[38;2;235;228;105;49m▄\x1b[49m \x1b[m
12
- \x1b[49m \x1b[38;2;247;241;62;49m▄\x1b[38;2;251;243;29;48;2;245;240;69m▄\x1b[38;2;224;224;112;48;2;246;238;52m▄\x1b[49m \x1b[38;2;246;240;65;49m▄\x1b[38;2;252;238;32;48;2;250;237;68m▄\x1b[38;2;246;236;76;48;2;246;237;52m▄\x1b[49m \x1b[m
13
- \x1b[49m \x1b[38;2;245;234;80;49m▄\x1b[38;2;246;238;58;49m▄\x1b[49m \x1b[49;38;2;240;232;72m▀\x1b[49;38;2;237;237;100m▀\x1b[49m \x1b[38;2;236;236;132;49m▄\x1b[38;2;253;244;30;48;2;255;235;78m▄\x1b[38;2;254;233;21;48;2;247;240;49m▄\x1b[38;2;249;206;52;48;2;253;234;25m▄\x1b[49;38;2;246;212;65m▀\x1b[49m \x1b[m
14
- \x1b[49m \x1b[38;2;246;233;50;49m▄\x1b[38;2;250;235;26;48;2;237;228;118m▄\x1b[38;2;251;232;21;48;2;249;237;38m▄\x1b[38;2;249;231;20;48;2;251;234;21m▄\x1b[38;2;248;230;21;48;2;252;232;20m▄\x1b[38;2;248;230;21;48;2;248;233;25m▄\x1b[38;2;248;231;22;48;2;245;236;68m▄\x1b[38;2;247;233;32;49m▄\x1b[38;2;242;226;87;49m▄\x1b[49m \x1b[38;2;227;227;99;49m▄\x1b[38;2;250;235;43;49m▄\x1b[38;2;253;235;28;48;2;244;233;69m▄\x1b[38;2;254;226;25;48;2;252;237;25m▄\x1b[38;2;253;199;25;48;2;253;229;24m▄\x1b[38;2;247;205;73;48;2;253;201;27m▄\x1b[49;38;2;235;206;88m▀\x1b[49m \x1b[m
15
- \x1b[49m \x1b[38;2;239;226;86;49m▄\x1b[38;2;250;235;34;49m▄\x1b[38;2;252;234;19;48;2;243;231;71m▄\x1b[38;2;251;233;19;48;2;251;234;28m▄\x1b[38;2;250;233;19;48;2;251;233;20m▄\x1b[38;2;251;233;20;48;2;250;232;20m▄\x1b[38;2;253;235;25;48;2;251;231;20m▄\x1b[38;2;245;232;53;48;2;251;232;20m▄\x1b[38;2;245;228;57;48;2;250;232;22m▄\x1b[38;2;247;229;39;48;2;248;231;22m▄\x1b[38;2;247;232;22;48;2;248;229;21m▄\x1b[38;2;247;231;21;48;2;248;229;20m▄\x1b[38;2;247;230;20;48;2;247;230;22m▄\x1b[38;2;248;230;20;48;2;246;234;38m▄\x1b[38;2;250;232;28;48;2;239;230;123m▄\x1b[38;2;250;231;49;49m▄\x1b[38;2;235;216;78;49m▄\x1b[49m \x1b[38;2;246;235;53;49m▄\x1b[38;2;251;236;23;48;2;244;232;75m▄\x1b[38;2;252;233;21;48;2;252;236;27m▄\x1b[38;2;253;227;26;48;2;253;233;23m▄\x1b[38;2;253;201;29;48;2;253;228;30m▄\x1b[38;2;253;199;27;48;2;253;201;26m▄\x1b[38;2;232;197;104;48;2;249;201;47m▄\x1b[49m \x1b[m
16
- \x1b[49m \x1b[38;2;247;232;50;49m▄\x1b[38;2;250;233;28;48;2;245;226;98m▄\x1b[38;2;252;232;20;48;2;249;234;40m▄\x1b[38;2;251;231;20;48;2;253;236;23m▄\x1b[38;2;251;232;20;48;2;252;233;19m▄\x1b[38;2;252;234;22;48;2;250;233;19m▄\x1b[38;2;250;235;38;48;2;251;233;20m▄\x1b[38;2;241;231;68;48;2;252;235;24m▄\x1b[49;38;2;249;234;47m▀\x1b[49;38;2;242;229;78m▀\x1b[49m \x1b[49;38;2;247;229;54m▀\x1b[38;2;241;227;99;48;2;247;231;33m▄\x1b[38;2;248;233;50;48;2;247;232;22m▄\x1b[38;2;250;229;28;48;2;249;230;22m▄\x1b[38;2;254;226;26;48;2;253;224;23m▄\x1b[38;2;235;221;94;48;2;249;221;35m▄\x1b[49m \x1b[38;2;243;237;61;49m▄\x1b[38;2;251;237;28;48;2;243;236;87m▄\x1b[38;2;251;234;20;48;2;250;236;36m▄\x1b[38;2;252;232;21;48;2;252;234;21m▄\x1b[38;2;251;225;23;48;2;251;232;21m▄\x1b[38;2;250;198;26;48;2;251;225;24m▄\x1b[38;2;253;197;26;48;2;251;199;27m▄\x1b[38;2;252;200;38;48;2;255;199;28m▄\x1b[49;38;2;245;202;65m▀\x1b[49m \x1b[m
17
- \x1b[49m \x1b[38;2;244;235;52;48;2;219;219;128m▄\x1b[38;2;247;234;53;49m▄\x1b[38;2;235;216;118;49m▄\x1b[49m \x1b[38;2;246;236;50;49m▄\x1b[38;2;253;238;21;48;2;249;234;58m▄\x1b[38;2;251;234;20;48;2;250;236;33m▄\x1b[38;2;251;233;19;48;2;252;234;21m▄\x1b[38;2;252;233;21;48;2;251;232;19m▄\x1b[38;2;252;233;26;48;2;251;231;20m▄\x1b[38;2;249;233;43;48;2;253;233;21m▄\x1b[49;38;2;252;236;30m▀\x1b[49;38;2;246;236;57m▀\x1b[49m \x1b[38;2;242;235;87;49m▄\x1b[49m \x1b[49;38;2;246;229;106m▀\x1b[49;38;2;247;227;62m▀\x1b[49m \x1b[49;38;2;248;237;47m▀\x1b[38;2;245;232;62;48;2;247;234;35m▄\x1b[38;2;253;231;26;48;2;252;234;23m▄\x1b[38;2;253;204;27;48;2;253;226;23m▄\x1b[38;2;252;199;34;48;2;252;200;26m▄\x1b[38;2;247;203;52;48;2;253;197;26m▄\x1b[49;38;2;251;199;35m▀\x1b[49;38;2;241;207;96m▀\x1b[49m \x1b[38;2;246;238;65;49m▄\x1b[38;2;250;226;39;49m▄\x1b[38;2;238;221;59;49m▄\x1b[49m \x1b[m
18
- \x1b[49m \x1b[38;2;242;235;52;48;2;248;235;48m▄\x1b[38;2;251;234;24;48;2;251;234;23m▄\x1b[38;2;251;232;21;48;2;250;237;38m▄\x1b[38;2;248;233;20;48;2;244;236;69m▄\x1b[38;2;246;236;44;49m▄\x1b[38;2;243;238;64;49m▄\x1b[49m \x1b[49;38;2;235;228;87m▀\x1b[49;38;2;247;231;40m▀\x1b[38;2;242;230;96;48;2;248;234;24m▄\x1b[38;2;239;226;78;48;2;252;235;23m▄\x1b[49;38;2;250;234;35m▀\x1b[49;38;2;239;233;98m▀\x1b[49m \x1b[38;2;252;242;36;48;2;246;243;65m▄\x1b[38;2;252;240;31;48;2;251;245;46m▄\x1b[38;2;248;241;106;49m▄\x1b[49m \x1b[38;2;241;241;85;49m▄\x1b[38;2;250;238;34;48;2;244;234;69m▄\x1b[38;2;246;216;49;48;2;253;234;31m▄\x1b[38;2;228;215;121;48;2;252;210;33m▄\x1b[49;38;2;248;205;53m▀\x1b[49m \x1b[38;2;238;238;85;49m▄\x1b[38;2;243;233;63;49m▄\x1b[38;2;251;237;23;48;2;246;237;79m▄\x1b[38;2;253;234;22;48;2;247;234;52m▄\x1b[38;2;253;214;24;48;2;254;233;26m▄\x1b[38;2;249;210;44;48;2;252;212;31m▄\x1b[49m \x1b[m
19
- \x1b[49m \x1b[49;38;2;228;228;67m▀\x1b[38;2;250;235;32;48;2;252;237;25m▄\x1b[38;2;252;223;25;48;2;250;227;23m▄\x1b[38;2;250;213;27;48;2;248;230;19m▄\x1b[38;2;247;224;25;48;2;247;230;19m▄\x1b[38;2;247;229;19;48;2;246;233;20m▄\x1b[38;2;248;231;22;48;2;243;234;51m▄\x1b[38;2;247;233;22;48;2;236;227;76m▄\x1b[38;2;243;233;67;49m▄\x1b[49m \x1b[38;2;250;238;38;48;2;240;235;82m▄\x1b[38;2;251;235;20;48;2;253;240;20m▄\x1b[38;2;252;232;22;48;2;253;235;23m▄\x1b[38;2;252;237;34;48;2;250;242;52m▄\x1b[49m \x1b[49;38;2;242;234;57m▀\x1b[49;38;2;233;233;78m▀\x1b[49m \x1b[38;2;244;233;98;49m▄\x1b[38;2;251;236;35;49m▄\x1b[38;2;252;236;22;48;2;243;232;72m▄\x1b[38;2;252;235;25;48;2;252;239;28m▄\x1b[38;2;251;233;21;48;2;250;234;20m▄\x1b[38;2;252;220;25;48;2;251;234;21m▄\x1b[38;2;251;203;25;48;2;253;229;23m▄\x1b[38;2;253;205;26;48;2;253;206;25m▄\x1b[38;2;248;209;53;48;2;250;211;51m▄\x1b[49m \x1b[m
20
- \x1b[49m \x1b[49;38;2;242;230;81m▀\x1b[49;38;2;249;218;33m▀\x1b[38;2;242;212;73;48;2;250;214;26m▄\x1b[38;2;248;210;32;48;2;251;212;26m▄\x1b[38;2;248;213;26;48;2;249;210;26m▄\x1b[38;2;251;214;26;48;2;248;228;27m▄\x1b[38;2;250;214;27;48;2;250;231;20m▄\x1b[38;2;248;226;24;48;2;248;232;19m▄\x1b[38;2;247;231;19;48;2;245;234;26m▄\x1b[38;2;247;232;20;48;2;240;230;78m▄\x1b[38;2;245;236;35;49m▄\x1b[38;2;241;234;86;49m▄\x1b[49m \x1b[38;2;250;237;45;49m▄\x1b[38;2;251;234;20;48;2;251;237;25m▄\x1b[38;2;248;231;21;48;2;249;233;22m▄\x1b[38;2;247;230;20;48;2;248;231;21m▄\x1b[38;2;249;230;21;48;2;252;233;22m▄\x1b[38;2;252;238;35;48;2;249;239;60m▄\x1b[49m \x1b[38;2;223;207;143;49m▄\x1b[38;2;248;232;43;49m▄\x1b[38;2;250;233;21;48;2;237;219;109m▄\x1b[38;2;251;232;20;48;2;249;232;44m▄\x1b[38;2;252;232;21;48;2;251;233;22m▄\x1b[38;2;252;230;21;48;2;252;233;20m▄\x1b[38;2;253;215;26;48;2;253;233;20m▄\x1b[38;2;253;200;29;48;2;253;228;27m▄\x1b[38;2;254;203;28;48;2;252;203;26m▄\x1b[38;2;249;207;48;48;2;252;203;26m▄\x1b[38;2;242;215;74;48;2;253;204;27m▄\x1b[49;38;2;249;209;50m▀\x1b[49;38;2;241;213;99m▀\x1b[49m \x1b[m
21
- \x1b[49m \x1b[49;38;2;243;213;61m▀\x1b[38;2;231;219;85;48;2;248;216;32m▄\x1b[38;2;245;214;58;48;2;250;215;26m▄\x1b[38;2;248;214;32;48;2;252;212;27m▄\x1b[38;2;250;215;26;48;2;249;217;27m▄\x1b[38;2;250;215;27;48;2;247;227;23m▄\x1b[38;2;247;220;28;48;2;246;231;20m▄\x1b[38;2;246;230;21;48;2;246;234;23m▄\x1b[38;2;251;235;24;48;2;247;237;45m▄\x1b[38;2;242;237;101;49m▄\x1b[49m \x1b[38;2;248;239;63;49m▄\x1b[38;2;252;235;20;48;2;252;237;26m▄\x1b[48;2;249;232;20m \x1b[38;2;250;231;22;48;2;247;230;20m▄\x1b[38;2;248;232;34;48;2;247;230;21m▄\x1b[38;2;248;232;22;48;2;248;231;21m▄\x1b[38;2;249;233;21;48;2;253;235;25m▄\x1b[38;2;251;240;38;48;2;246;241;79m▄\x1b[49m \x1b[38;2;252;237;26;48;2;244;236;59m▄\x1b[38;2;252;233;20;48;2;250;233;23m▄\x1b[48;2;251;232;20m \x1b[38;2;252;230;22;48;2;251;231;20m▄\x1b[38;2;253;214;24;48;2;251;231;20m▄\x1b[38;2;253;200;28;48;2;252;225;22m▄\x1b[38;2;250;203;41;48;2;252;203;26m▄\x1b[38;2;248;205;64;48;2;253;198;28m▄\x1b[49;38;2;249;202;46m▀\x1b[49;38;2;246;207;62m▀\x1b[49m \x1b[m
22
- \x1b[49m \x1b[49;38;2;245;216;88m▀\x1b[49;38;2;246;216;52m▀\x1b[38;2;242;216;78;48;2;248;216;31m▄\x1b[38;2;249;217;38;48;2;250;215;27m▄\x1b[38;2;250;222;30;48;2;247;227;26m▄\x1b[48;2;248;232;23m \x1b[38;2;252;237;28;48;2;251;241;41m▄\x1b[38;2;238;238;119;49m▄\x1b[49m \x1b[38;2;243;235;85;49m▄\x1b[38;2;252;238;21;48;2;252;240;29m▄\x1b[38;2;252;234;23;48;2;251;234;22m▄\x1b[38;2;254;234;22;48;2;252;233;22m▄\x1b[38;2;248;227;59;48;2;251;232;38m▄\x1b[38;2;244;234;96;48;2;248;235;51m▄\x1b[38;2;251;238;32;48;2;249;235;24m▄\x1b[38;2;250;236;23;48;2;249;234;21m▄\x1b[38;2;252;234;22;48;2;253;236;25m▄\x1b[38;2;251;244;44;48;2;246;246;103m▄\x1b[49m \x1b[38;2;251;240;33;48;2;238;232;81m▄\x1b[38;2;249;233;21;48;2;251;236;19m▄\x1b[38;2;253;227;24;48;2;252;231;21m▄\x1b[38;2;254;204;26;48;2;252;224;23m▄\x1b[38;2;248;206;55;48;2;253;206;27m▄\x1b[49;38;2;250;204;40m▀\x1b[49;38;2;246;207;60m▀\x1b[49m \x1b[m
23
- \x1b[49m \x1b[38;2;246;215;54;48;2;242;211;53m▄\x1b[38;2;253;217;20;48;2;248;216;35m▄\x1b[38;2;250;221;23;48;2;246;219;57m▄\x1b[38;2;245;232;39;49m▄\x1b[38;2;245;234;65;49m▄\x1b[49m \x1b[38;2;243;219;121;48;2;250;221;50m▄\x1b[38;2;252;221;33;48;2;251;222;30m▄\x1b[38;2;250;228;31;48;2;248;231;26m▄\x1b[38;2;249;232;23;48;2;251;234;23m▄\x1b[38;2;253;238;29;48;2;249;242;63m▄\x1b[49m \x1b[38;2;235;235;112;49m▄\x1b[38;2;251;236;21;48;2;251;240;34m▄\x1b[38;2;250;232;23;48;2;251;234;21m▄\x1b[38;2;253;230;24;48;2;252;233;23m▄\x1b[38;2;250;222;52;48;2;251;227;36m▄\x1b[49m \x1b[38;2;248;241;69;48;2;248;238;48m▄\x1b[38;2;251;239;28;48;2;250;238;25m▄\x1b[38;2;250;236;24;48;2;251;235;23m▄\x1b[38;2;252;234;23;48;2;252;238;26m▄\x1b[38;2;248;240;59;48;2;239;239;128m▄\x1b[49m \x1b[38;2;247;239;52;48;2;244;233;100m▄\x1b[38;2;249;234;20;48;2;252;238;23m▄\x1b[38;2;252;231;22;48;2;250;232;22m▄\x1b[38;2;253;207;25;48;2;253;216;26m▄\x1b[38;2;250;208;54;48;2;252;207;37m▄\x1b[49m \x1b[38;2;241;227;71;49m▄\x1b[38;2;247;213;44;49m▄\x1b[38;2;253;208;29;48;2;237;211;88m▄\x1b[38;2;254;205;28;48;2;248;213;47m▄\x1b[49m \x1b[m
24
- \x1b[49m \x1b[38;2;245;230;60;48;2;242;224;49m▄\x1b[38;2;249;236;23;48;2;249;233;21m▄\x1b[38;2;252;235;26;48;2;250;231;20m▄\x1b[38;2;249;234;30;48;2;249;233;21m▄\x1b[38;2;254;236;27;48;2;252;236;25m▄\x1b[38;2;249;238;49;48;2;247;241;52m▄\x1b[49m \x1b[38;2;245;216;64;48;2;250;222;59m▄\x1b[38;2;252;220;31;48;2;252;223;33m▄\x1b[38;2;249;229;27;48;2;248;231;24m▄\x1b[38;2;248;230;21;48;2;251;233;22m▄\x1b[38;2;248;235;29;48;2;242;235;85m▄\x1b[38;2;251;235;24;48;2;250;242;49m▄\x1b[38;2;250;231;23;48;2;250;233;22m▄\x1b[38;2;253;225;23;48;2;252;230;24m▄\x1b[38;2;250;215;49;48;2;253;222;28m▄\x1b[49;38;2;244;222;89m▀\x1b[49m \x1b[38;2;247;234;63;48;2;248;238;46m▄\x1b[38;2;251;238;25;48;2;250;237;25m▄\x1b[38;2;250;233;22;48;2;250;234;21m▄\x1b[38;2;251;233;21;48;2;252;237;26m▄\x1b[38;2;244;232;62;49m▄\x1b[38;2;249;232;21;48;2;252;239;24m▄\x1b[38;2;250;231;22;48;2;249;231;22m▄\x1b[38;2;252;212;25;48;2;252;225;23m▄\x1b[38;2;251;209;55;48;2;253;204;27m▄\x1b[49;38;2;239;206;99m▀\x1b[49m \x1b[38;2;250;237;49;48;2;250;242;50m▄\x1b[38;2;251;234;22;48;2;252;231;25m▄\x1b[38;2;253;227;27;48;2;253;212;26m▄\x1b[38;2;254;206;26;48;2;254;204;25m▄\x1b[49m \x1b[m
25
- \x1b[49m \x1b[38;2;253;239;29;48;2;238;230;84m▄\x1b[38;2;254;234;24;48;2;253;238;23m▄\x1b[38;2;253;209;29;48;2;254;233;26m▄\x1b[38;2;244;216;71;48;2;241;220;99m▄\x1b[49m \x1b[38;2;247;217;53;48;2;250;218;44m▄\x1b[38;2;251;217;31;48;2;250;222;31m▄\x1b[38;2;247;228;24;48;2;245;229;20m▄\x1b[48;2;245;229;19m \x1b[38;2;246;229;19;48;2;247;229;20m▄\x1b[38;2;253;224;24;48;2;251;229;23m▄\x1b[38;2;249;211;52;48;2;253;213;27m▄\x1b[49;38;2;244;210;68m▀\x1b[49m \x1b[38;2;249;234;57;48;2;249;237;39m▄\x1b[38;2;250;235;23;48;2;250;234;24m▄\x1b[38;2;247;231;19;48;2;247;230;19m▄\x1b[38;2;244;229;16;48;2;247;230;18m▄\x1b[38;2;246;229;18;48;2;246;230;19m▄\x1b[38;2;253;223;23;48;2;252;228;21m▄\x1b[38;2;253;206;37;48;2;253;208;26m▄\x1b[49;38;2;251;211;57m▀\x1b[49m \x1b[38;2;250;239;47;48;2;250;239;50m▄\x1b[38;2;250;236;23;48;2;249;235;22m▄\x1b[38;2;254;231;28;48;2;254;229;26m▄\x1b[38;2;255;209;26;48;2;254;209;27m▄\x1b[49m \x1b[m
26
- \x1b[49m \x1b[38;2;245;239;70;49m▄\x1b[38;2;253;241;21;48;2;250;243;39m▄\x1b[38;2;251;208;32;48;2;254;237;23m▄\x1b[38;2;248;210;82;48;2;252;208;31m▄\x1b[49;38;2;245;213;78m▀\x1b[49m \x1b[38;2;246;218;70;48;2;252;217;33m▄\x1b[38;2;250;220;29;48;2;248;225;27m▄\x1b[38;2;248;229;24;48;2;245;229;20m▄\x1b[38;2;253;223;23;48;2;251;228;21m▄\x1b[38;2;252;209;33;48;2;253;211;26m▄\x1b[49;38;2;242;208;64m▀\x1b[49m \x1b[49;38;2;237;237;91m▀\x1b[38;2;246;235;64;48;2;251;237;29m▄\x1b[38;2;248;237;24;48;2;248;233;23m▄\x1b[38;2;247;233;21;48;2;245;231;18m▄\x1b[38;2;253;230;23;48;2;249;230;19m▄\x1b[38;2;253;206;30;48;2;253;209;24m▄\x1b[38;2;239;223;96;48;2;249;207;58m▄\x1b[49m \x1b[38;2;247;239;50;48;2;247;239;47m▄\x1b[38;2;249;236;23;48;2;250;236;23m▄\x1b[48;2;254;230;27m \x1b[38;2;254;209;27;48;2;254;209;26m▄\x1b[49m \x1b[m
27
- \x1b[49m \x1b[38;2;235;235;78;49m▄\x1b[38;2;253;240;32;48;2;234;234;90m▄\x1b[38;2;249;224;34;48;2;253;242;25m▄\x1b[38;2;245;214;92;48;2;251;215;32m▄\x1b[49;38;2;240;209;85m▀\x1b[49m \x1b[38;2;245;235;64;49m▄\x1b[38;2;253;239;32;48;2;239;231;112m▄\x1b[38;2;246;239;82;49m▄\x1b[49m \x1b[49;38;2;246;219;73m▀\x1b[38;2;249;221;48;48;2;252;220;29m▄\x1b[38;2;254;222;27;48;2;253;228;27m▄\x1b[38;2;253;208;28;48;2;254;210;24m▄\x1b[38;2;237;219;73;48;2;244;208;63m▄\x1b[49m \x1b[38;2;249;236;42;49m▄\x1b[38;2;250;234;23;49m▄\x1b[38;2;249;231;24;49m▄\x1b[38;2;248;228;34;49m▄\x1b[38;2;243;226;99;49m▄\x1b[49m \x1b[49;38;2;242;242;67m▀\x1b[38;2;248;238;57;48;2;252;238;26m▄\x1b[38;2;253;236;26;48;2;251;235;23m▄\x1b[38;2;253;213;26;48;2;253;227;24m▄\x1b[38;2;247;209;62;48;2;247;209;61m▄\x1b[49m \x1b[38;2;247;239;49;48;2;247;239;47m▄\x1b[38;2;250;234;23;48;2;250;235;22m▄\x1b[38;2;254;228;28;48;2;254;230;28m▄\x1b[38;2;254;207;26;48;2;254;208;26m▄\x1b[49m \x1b[m
28
- \x1b[49m \x1b[38;2;246;237;59;49m▄\x1b[38;2;249;236;35;48;2;249;240;43m▄\x1b[49;38;2;249;233;39m▀\x1b[49;38;2;237;219;109m▀\x1b[49m \x1b[38;2;239;234;80;49m▄\x1b[38;2;251;241;38;49m▄\x1b[38;2;252;239;32;48;2;252;242;48m▄\x1b[38;2;249;237;37;48;2;253;239;24m▄\x1b[38;2;245;233;57;48;2;254;236;21m▄\x1b[38;2;237;237;128;48;2;251;239;47m▄\x1b[49m \x1b[49;38;2;244;221;68m▀\x1b[38;2;252;216;33;48;2;254;216;24m▄\x1b[38;2;244;211;78;48;2;245;211;57m▄\x1b[49m \x1b[38;2;250;238;31;48;2;250;239;49m▄\x1b[38;2;249;233;20;48;2;251;235;20m▄\x1b[38;2;246;232;19;48;2;249;232;19m▄\x1b[38;2;246;231;19;48;2;248;231;19m▄\x1b[38;2;251;232;21;48;2;251;230;20m▄\x1b[38;2;253;217;25;48;2;250;222;34m▄\x1b[38;2;243;225;103;49m▄\x1b[49m \x1b[49;38;2;238;230;85m▀\x1b[38;2;251;237;40;48;2;253;238;27m▄\x1b[38;2;237;219;83;48;2;250;212;43m▄\x1b[49m \x1b[38;2;248;238;53;49m▄\x1b[38;2;252;234;34;48;2;250;237;49m▄\x1b[38;2;253;220;26;48;2;252;233;23m▄\x1b[38;2;252;202;28;48;2;253;225;29m▄\x1b[38;2;254;204;26;48;2;254;205;26m▄\x1b[49m \x1b[m
29
- \x1b[49m \x1b[38;2;240;229;56;48;2;247;232;62m▄\x1b[49;38;2;249;238;37m▀\x1b[49m \x1b[49;38;2;231;231;110m▀\x1b[49;38;2;244;241;45m▀\x1b[49;38;2;239;239;63m▀\x1b[49m \x1b[49;38;2;241;217;88m▀\x1b[49m \x1b[38;2;249;236;52;48;2;249;237;33m▄\x1b[38;2;250;237;24;48;2;248;234;22m▄\x1b[38;2;250;234;21;48;2;246;233;19m▄\x1b[38;2;251;230;21;48;2;247;233;19m▄\x1b[38;2;253;210;26;48;2;252;230;22m▄\x1b[38;2;251;207;36;48;2;253;209;27m▄\x1b[49;38;2;243;219;95m▀\x1b[49m \x1b[49;38;2;241;223;96m▀\x1b[49m \x1b[38;2;242;233;67;49m▄\x1b[38;2;249;236;41;49m▄\x1b[38;2;253;237;23;48;2;245;232;63m▄\x1b[38;2;253;226;24;48;2;251;238;38m▄\x1b[38;2;251;201;26;48;2;252;234;23m▄\x1b[38;2;251;198;26;48;2;251;210;25m▄\x1b[38;2;253;202;29;48;2;251;199;25m▄\x1b[38;2;251;203;42;48;2;253;201;28m▄\x1b[38;2;229;211;123;48;2;253;203;32m▄\x1b[49m \x1b[m
30
- \x1b[38;2;222;222;144;49m▄\x1b[38;2;229;220;123;48;2;234;225;98m▄\x1b[49;38;2;228;215;121m▀\x1b[49m \x1b[38;2;248;236;46;49m▄\x1b[38;2;252;236;21;48;2;243;230;66m▄\x1b[38;2;251;233;20;48;2;249;234;38m▄\x1b[38;2;251;231;20;48;2;248;234;33m▄\x1b[38;2;248;231;20;48;2;244;229;67m▄\x1b[38;2;244;233;47;49m▄\x1b[38;2;236;236;70;49m▄\x1b[49m \x1b[49;38;2;247;212;46m▀\x1b[49;38;2;250;209;30m▀\x1b[38;2;240;225;150;48;2;251;202;30m▄\x1b[49;38;2;252;203;36m▀\x1b[49;38;2;241;212;90m▀\x1b[49m \x1b[38;2;235;235;98;49m▄\x1b[38;2;243;235;63;49m▄\x1b[38;2;251;238;25;48;2;237;228;73m▄\x1b[38;2;253;236;20;48;2;247;234;52m▄\x1b[38;2;254;230;22;48;2;252;238;23m▄\x1b[38;2;252;206;26;48;2;253;233;21m▄\x1b[38;2;253;198;28;48;2;252;217;25m▄\x1b[38;2;252;201;36;48;2;252;196;26m▄\x1b[38;2;240;205;70;48;2;252;199;28m▄\x1b[49;38;2;250;202;38m▀\x1b[49;38;2;241;213;88m▀\x1b[49m \x1b[m
31
- \x1b[49;38;2;207;207;191m▀\x1b[49m \x1b[38;2;236;232;82;49m▄\x1b[38;2;248;239;48;49m▄\x1b[49m \x1b[49;38;2;244;231;69m▀\x1b[49;38;2;249;233;29m▀\x1b[38;2;244;228;69;48;2;248;234;23m▄\x1b[38;2;249;233;28;48;2;247;231;21m▄\x1b[38;2;247;232;25;48;2;247;230;20m▄\x1b[38;2;248;231;23;48;2;248;231;19m▄\x1b[38;2;249;232;23;48;2;247;233;20m▄\x1b[38;2;249;233;24;48;2;246;237;59m▄\x1b[38;2;248;237;29;48;2;242;242;77m▄\x1b[38;2;244;240;76;49m▄\x1b[49m \x1b[38;2;241;234;99;49m▄\x1b[38;2;250;238;41;49m▄\x1b[38;2;253;237;26;48;2;242;232;79m▄\x1b[38;2;253;236;25;48;2;252;240;27m▄\x1b[38;2;254;233;24;48;2;254;236;20m▄\x1b[38;2;251;210;29;48;2;253;235;21m▄\x1b[38;2;251;197;28;48;2;253;225;23m▄\x1b[38;2;246;202;53;48;2;254;200;27m▄\x1b[49;38;2;253;199;32m▀\x1b[49;38;2;245;207;64m▀\x1b[49m \x1b[m
32
- \x1b[49m \x1b[49;38;2;231;219;97m▀\x1b[49;38;2;243;229;58m▀\x1b[49m \x1b[49;38;2;237;237;91m▀\x1b[49;38;2;246;231;56m▀\x1b[38;2;246;238;68;48;2;246;233;22m▄\x1b[38;2;245;230;48;48;2;246;233;21m▄\x1b[38;2;247;235;23;48;2;247;232;19m▄\x1b[38;2;246;233;21;48;2;247;232;18m▄\x1b[38;2;247;232;20;48;2;248;232;18m▄\x1b[38;2;247;231;19;48;2;246;234;29m▄\x1b[38;2;247;232;20;48;2;240;230;80m▄\x1b[38;2;246;233;34;49m▄\x1b[38;2;245;231;52;49m▄\x1b[38;2;250;233;23;48;2;225;225;105m▄\x1b[38;2;252;233;19;48;2;248;234;46m▄\x1b[38;2;253;233;20;48;2;253;235;21m▄\x1b[38;2;254;232;21;48;2;253;234;20m▄\x1b[38;2;252;217;24;48;2;254;234;20m▄\x1b[38;2;253;202;35;48;2;254;230;23m▄\x1b[38;2;246;211;84;48;2;253;201;28m▄\x1b[49;38;2;250;203;46m▀\x1b[49;38;2;247;206;82m▀\x1b[49m \x1b[m
33
- \x1b[49m \x1b[49;38;2;247;226;63m▀\x1b[49;38;2;247;232;36m▀\x1b[38;2;245;229;57;48;2;246;232;22m▄\x1b[38;2;247;230;31;48;2;248;232;21m▄\x1b[38;2;247;232;21;48;2;247;231;19m▄\x1b[38;2;247;233;19;48;2;246;231;18m▄\x1b[38;2;247;232;17;48;2;246;231;17m▄\x1b[38;2;251;232;19;48;2;249;232;17m▄\x1b[38;2;253;221;24;48;2;252;232;20m▄\x1b[38;2;249;207;48;48;2;253;229;22m▄\x1b[38;2;248;209;72;48;2;253;207;28m▄\x1b[49;38;2;245;202;59m▀\x1b[49;38;2;237;200;109m▀\x1b[49m \x1b[m
34
- \x1b[49m \x1b[49;38;2;242;230;89m▀\x1b[49;38;2;247;232;50m▀\x1b[38;2;244;227;72;48;2;249;233;28m▄\x1b[38;2;244;218;55;48;2;252;231;23m▄\x1b[49;38;2;250;215;37m▀\x1b[49;38;2;244;206;65m▀\x1b[49m \x1b[m
35
- `;
36
- /**
37
- * Get the intro banner with ASCII art
38
- */
39
- function getIntroBanner(version) {
40
- const versionLine = `v${version}`;
41
- const totalWidth = 38; // Total width inside the box
42
- const padding = " ".repeat(totalWidth - 3 - versionLine.length); // 3 is for leading spaces " "
43
- return `
44
- ${copper.colors.magentaBright("╭──────────────────────────────────────╮")}
45
- ${copper.colors.magentaBright("│")} ${copper.colors.magentaBright("│")}
46
- ${copper.colors.magentaBright("│")} 🧙 ${copper.colors.bold(copper.colors.yellowBright("WARLOCK.JS"))} ${copper.colors.magentaBright("│")}
47
- ${copper.colors.magentaBright("│")} ${copper.colors.cyan("The Magical Node.js Framework")} ${copper.colors.magentaBright("│")}
48
- ${copper.colors.magentaBright("│")} ${copper.colors.magentaBright("│")}
49
- ${copper.colors.magentaBright("│")} ${copper.colors.green(versionLine)}${padding}${copper.colors.magentaBright("│")}
50
- ${copper.colors.magentaBright("│")} ${copper.colors.magentaBright("│")}
51
- ${copper.colors.magentaBright("╰──────────────────────────────────────╯")}
52
- `;
53
- }
54
- /**
55
- * Display the intro banner
56
- */
57
- function showIntroBanner(version) {
58
- console.log(warlockLogoAnsi);
59
- console.log(warlockTextAnsi);
60
- console.log(getIntroBanner(version));
61
- }
62
- /**
63
- * Get the success screen with project summary
64
- */
65
- function getSuccessScreen(options) {
66
- const { projectName, database, features, packageManager } = options;
67
- // Format features text
68
- let featuresText = features.join(", ");
69
- if (features.length === 0) {
70
- featuresText = "none";
71
- }
72
- // Calculate dynamic width
73
- const baseLabelLength = 10; // "Project: ".length
74
- const padding = 6; // 3 spaces left, 3 spaces right padding for text inside box
75
- const projectLineLen = projectName.length + baseLabelLength;
76
- const dbLineLen = database.length + baseLabelLength;
77
- const featuresLineLen = featuresText.length + baseLabelLength;
78
- // Find the longest line to determine box width
79
- // Ensure minimum width of 50 for aesthetics
80
- const maxContentLength = Math.max(projectLineLen, dbLineLen, featuresLineLen, 40);
81
- const boxWidth = maxContentLength + padding + 2; // +2 for borders │
82
- // Helper to generate borders
83
- const createBorder = (start, end) => copper.colors.magentaBright(start + "─".repeat(boxWidth - 2) + end);
84
- // Helper to pad content lines
85
- const padLine = (label, value, isFeature = false) => {
86
- const valueColor = (text) => {
87
- if (isFeature && text === "none")
88
- return copper.colors.dim(text);
89
- return copper.colors.white(text);
90
- };
91
- const labelPart = copper.colors.dim(label.padEnd(10)); // "Project: "
92
- const valuePart = valueColor(value);
93
- // Calculate visible length for padding
94
- const contentVisibleLength = 3 + 10 + value.length;
95
- const remaining = boxWidth - 2 - contentVisibleLength; // -2 for borders
96
- return (copper.colors.magentaBright("│") +
97
- " " +
98
- labelPart +
99
- valuePart +
100
- " ".repeat(remaining) +
101
- copper.colors.magentaBright("│"));
102
- };
103
- const emptyLine = copper.colors.magentaBright("│") +
104
- " ".repeat(boxWidth - 2) +
105
- copper.colors.magentaBright("│");
106
- const headerText = "🎉 YOUR PROJECT IS READY! 🎉";
107
- const headerPadding = Math.floor((boxWidth - 2 - headerText.length) / 2);
108
- const headerLine = copper.colors.magentaBright("│") +
109
- " ".repeat(headerPadding) +
110
- copper.colors.bold(copper.colors.green(headerText)) +
111
- " ".repeat(boxWidth - 2 - headerPadding - headerText.length) +
112
- copper.colors.magentaBright("│");
113
- const devCommand = packageManager === "npm" ? "npm run dev" : `${packageManager} dev`;
114
- return `
115
- ${createBorder("╭", "╮")}
116
- ${emptyLine}
117
- ${headerLine}
118
- ${emptyLine}
119
- ${padLine("Project:", projectName)}
120
- ${padLine("Database:", database)}
121
- ${padLine("Features:", featuresText, true)}
122
- ${emptyLine}
123
- ${createBorder("╰", "╯")}
124
-
125
- ${copper.colors.bold(copper.colors.cyan("🚀 Next steps:"))}
126
-
127
- ${copper.colors.cyan("cd")} ${projectName}
128
- ${copper.colors.cyan(devCommand)}
129
-
130
- ${copper.colors.dim("💡 Pro tip: Install the")} ${copper.colors.yellow("Generator Z")} ${copper.colors.dim("extension in VSCode")}
131
- ${copper.colors.dim("for helpful code snippets and productivity boosters!")}
132
-
133
- ${copper.colors.dim("📚 Docs:")} ${copper.colors.cyan("https://warlock.js.org")}
134
- ${copper.colors.dim("⭐ Star us:")} ${copper.colors.cyan("https://github.com/warlockjs/framework")}
135
- `;
136
- }
137
- /**
138
- * Display the success screen
139
- */
140
- function showSuccessScreen(options) {
141
- console.log(getSuccessScreen(options));
142
- }exports.getIntroBanner=getIntroBanner;exports.getSuccessScreen=getSuccessScreen;exports.showIntroBanner=showIntroBanner;exports.showSuccessScreen=showSuccessScreen;exports.warlockLogoAnsi=warlockLogoAnsi;exports.warlockTextAnsi=warlockTextAnsi;//# sourceMappingURL=banner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"banner.js","sources":["../../src/ui/banner.ts"],"sourcesContent":[null],"names":["colors"],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- /**
2
- * Themed spinner messages for the wizard
3
- */
4
- export declare const spinnerMessages: {
5
- readonly installingDeps: "📦 Summoning dependencies...";
6
- readonly depsInstalled: "📦 Dependencies materialized! ✅";
7
- readonly initializingGit: "📂 Initializing grimoire (git)...";
8
- readonly gitInitialized: "📂 Grimoire initialized! ✅";
9
- readonly generatingJwt: "🔐 Forging secret keys...";
10
- readonly jwtGenerated: "🔐 Secret keys forged! ✅";
11
- readonly warmingCache: "⚡ Charging magical circuits...";
12
- readonly cacheWarmed: "⚡ Circuits charged! ✅";
13
- readonly configuringFeatures: "🔧 Configuring enchantments...";
14
- readonly featuresConfigured: "🔧 Enchantments applied! ✅";
15
- readonly copyingTemplate: "📋 Preparing your spellbook...";
16
- readonly templateCopied: "📋 Spellbook ready! ✅";
17
- };
18
- //# sourceMappingURL=spinners.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spinners.d.ts","sourceRoot":"","sources":["../../src/ui/spinners.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;CAkBlB,CAAC"}
@@ -1,17 +0,0 @@
1
- 'use strict';/**
2
- * Themed spinner messages for the wizard
3
- */
4
- const spinnerMessages = {
5
- installingDeps: "📦 Summoning dependencies...",
6
- depsInstalled: "📦 Dependencies materialized! ✅",
7
- initializingGit: "📂 Initializing grimoire (git)...",
8
- gitInitialized: "📂 Grimoire initialized! ✅",
9
- generatingJwt: "🔐 Forging secret keys...",
10
- jwtGenerated: "🔐 Secret keys forged! ✅",
11
- warmingCache: "⚡ Charging magical circuits...",
12
- cacheWarmed: "⚡ Circuits charged! ✅",
13
- configuringFeatures: "🔧 Configuring enchantments...",
14
- featuresConfigured: "🔧 Enchantments applied! ✅",
15
- copyingTemplate: "📋 Preparing your spellbook...",
16
- templateCopied: "📋 Spellbook ready! ✅",
17
- };exports.spinnerMessages=spinnerMessages;//# sourceMappingURL=spinners.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spinners.js","sources":["../../src/ui/spinners.ts"],"sourcesContent":[null],"names":[],"mappings":"aAAA;;AAEG;AACU,MAAA,eAAe,GAAG;AAC7B,IAAA,cAAc,EAAE,8BAA8B;AAC9C,IAAA,aAAa,EAAE,iCAAiC;AAEhD,IAAA,eAAe,EAAE,mCAAmC;AACpD,IAAA,cAAc,EAAE,4BAA4B;AAE5C,IAAA,aAAa,EAAE,2BAA2B;AAC1C,IAAA,YAAY,EAAE,0BAA0B;AAExC,IAAA,YAAY,EAAE,gCAAgC;AAC9C,IAAA,WAAW,EAAE,uBAAuB;AAEpC,IAAA,mBAAmB,EAAE,gCAAgC;AACrD,IAAA,kBAAkB,EAAE,4BAA4B;AAEhD,IAAA,eAAe,EAAE,gCAAgC;AACjD,IAAA,cAAc,EAAE,uBAAuB;"}
package/create-app.js DELETED
@@ -1,5 +0,0 @@
1
- #! /usr/bin/env node
2
-
3
- import createApp from "./esm/index.js";
4
-
5
- createApp();
@@ -1,2 +0,0 @@
1
- export default function getAppPath(appName: string): string;
2
- //# sourceMappingURL=get-app-path.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-app-path.d.ts","sourceRoot":"","sources":["../../../src/commands/create-new-app/get-app-path.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,OAAO,EAAE,MAAM,UAgBjD"}
@@ -1,8 +0,0 @@
1
- import {colors}from'@mongez/copper';import {isDirectory}from'@mongez/fs';import*as path from'path';function getAppPath(appName) {
2
- const appPath = path.resolve(process.cwd(), appName);
3
- if (isDirectory(appPath)) {
4
- console.log(colors.redBright(`${process.cwd()} has an existing directory \`${colors.cyan(appName)}\`, please choose another app name or another directory to run the command from.`));
5
- process.exit(1);
6
- }
7
- return appPath;
8
- }export{getAppPath as default};//# sourceMappingURL=get-app-path.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-app-path.js","sources":["../../../src/commands/create-new-app/get-app-path.ts"],"sourcesContent":[null],"names":[],"mappings":"mGAIwB,SAAA,UAAU,CAAC,OAAe,EAAA;AAChD,IAAA,MAAM,OAAO,GAAW,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;AAE7D,IAAA,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE;QACxB,OAAO,CAAC,GAAG,CACT,MAAM,CAAC,SAAS,CACd,CAAG,EAAA,OAAO,CAAC,GAAG,EAAE,CAAgC,6BAAA,EAAA,MAAM,CAAC,IAAI,CACzD,OAAO,CACR,CAAA,gFAAA,CAAkF,CACpF,CACF,CAAC;AAEF,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,KAAA;AAED,IAAA,OAAO,OAAO,CAAC;AACjB"}
@@ -1,2 +0,0 @@
1
- export default function createNewApp(): Promise<void>;
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/create-new-app/index.ts"],"names":[],"mappings":"AA6BA,wBAA8B,YAAY,kBAsHzC"}
@@ -1,96 +0,0 @@
1
- import {cancel,text,isCancel,select,multiselect,confirm}from'@clack/prompts';import {colors}from'@mongez/copper';import {getJsonFile}from'@mongez/fs';import {getDatabaseDriverOptions,getDatabaseDriver}from'../../features/database-drivers.js';import {getFeatureOptions}from'../../features/features-map.js';import {App}from'../../helpers/app.js';import {detectPackageManagers,getSystemPackageManagers,getPreferredPackageManager,getPackageManager,setPackageManager}from'../../helpers/package-manager.js';import {packageRoot}from'../../helpers/paths.js';import {showIntroBanner}from'../../ui/banner.js';import {createWarlockApp}from'../create-warlock-app/index.js';import getAppPath from'./get-app-path.js';async function createNewApp() {
2
- // Start detecting package managers in the background to avoid delay later
3
- const pmDetectionPromise = detectPackageManagers();
4
- // Get version from package.json
5
- const packageJson = getJsonFile(packageRoot("package.json"));
6
- const createWarlockVersion = packageJson.version;
7
- // Show the intro banner
8
- showIntroBanner(createWarlockVersion);
9
- console.log(colors.cyan("✨ Let's create something magical! ✨\n"));
10
- // Validate Node.js version (minimum v20)
11
- const [major] = process.versions.node.split(".").map(Number);
12
- if (major < 20) {
13
- cancel("Node.js version must be at least 20.0.0");
14
- process.exit(0);
15
- }
16
- // Step 1: Project name
17
- const appName = await text({
18
- message: "What shall we call your project?",
19
- placeholder: "my-warlock-app",
20
- });
21
- if (isCancel(appName) || !appName.trim()) {
22
- cancel("A project name is required to continue");
23
- process.exit(0);
24
- }
25
- const appPath = getAppPath(appName);
26
- if (!appPath)
27
- return;
28
- // Step 2: Package Manager selection
29
- await pmDetectionPromise; // Ensure detection is complete
30
- const packageManager = await select({
31
- message: "Which package manager do you want to use?",
32
- options: getSystemPackageManagers().map(pm => ({
33
- value: pm,
34
- label: pm,
35
- })),
36
- initialValue: getPreferredPackageManager(),
37
- });
38
- if (isCancel(packageManager)) {
39
- cancel("Package manager selection cancelled");
40
- process.exit(0);
41
- }
42
- setPackageManager(packageManager);
43
- // Step 3: Database driver selection
44
- const databaseDriver = await select({
45
- message: "Choose your database driver 🗄️",
46
- options: getDatabaseDriverOptions(),
47
- });
48
- if (isCancel(databaseDriver)) {
49
- cancel("Database selection cancelled");
50
- process.exit(0);
51
- }
52
- const selectedDriver = getDatabaseDriver(databaseDriver);
53
- // Step 4: Features selection
54
- const selectedFeatures = await multiselect({
55
- message: "Select optional features to include ✨",
56
- options: getFeatureOptions(),
57
- initialValues: ["react"],
58
- required: false,
59
- });
60
- if (isCancel(selectedFeatures)) {
61
- cancel("Feature selection cancelled");
62
- process.exit(0);
63
- }
64
- // Step 5: Git initialization
65
- const useGit = (await confirm({
66
- message: "Initialize a Git repository? 📂",
67
- })) === true;
68
- if (isCancel(useGit)) {
69
- cancel("Setup cancelled");
70
- process.exit(0);
71
- }
72
- // Step 6: JWT secret generation
73
- const useJWT = (await confirm({
74
- message: "Generate JWT secret keys? 🔐",
75
- })) === true;
76
- if (isCancel(useJWT)) {
77
- cancel("Setup cancelled");
78
- process.exit(0);
79
- }
80
- // Build app details
81
- const appDetails = {
82
- appName: appName,
83
- appType: "warlock",
84
- appPath: appPath,
85
- pkgManager: getPackageManager(),
86
- options: {
87
- databaseDriver: databaseDriver,
88
- databasePort: selectedDriver?.defaultPort || 27017,
89
- features: selectedFeatures,
90
- useGit,
91
- useJWT,
92
- },
93
- };
94
- // Create the app
95
- await createWarlockApp(new App(appDetails));
96
- }export{createNewApp as default};//# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/commands/create-new-app/index.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- export type AppOptions = {
2
- databaseDriver: string;
3
- databasePort: number;
4
- features: string[];
5
- useGit: boolean;
6
- useJWT: boolean;
7
- };
8
- export type App = {
9
- appName?: string;
10
- appType?: string;
11
- appPath?: string;
12
- options?: AppOptions;
13
- pkgManager?: string;
14
- };
15
- export type Application = Required<App>;
16
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/commands/create-new-app/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,GAAG,GAAG;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- import { App } from "../../helpers/app";
2
- export declare function createWarlockApp(application: App): Promise<void>;
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/create-warlock-app/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAQxC,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,GAAG,iBAuEtD"}
@@ -1,55 +0,0 @@
1
- import {spinner}from'@clack/prompts';import {runPackageManagerCommand,getPackageManager}from'../../helpers/package-manager.js';import {showSuccessScreen}from'../../ui/banner.js';import {spinnerMessages}from'../../ui/spinners.js';async function createWarlockApp(application) {
2
- const options = application.options;
3
- const { useGit, useJWT, features, databaseDriver } = options;
4
- // Step 1: Initialize and copy template
5
- const templateSpinner = spinner();
6
- templateSpinner.start(spinnerMessages.copyingTemplate);
7
- application
8
- .init()
9
- .use("warlock")
10
- .updatePackageJson()
11
- .updateDotEnv()
12
- .addDatabaseDriver(databaseDriver)
13
- .addFeatures(features);
14
- templateSpinner.stop(spinnerMessages.templateCopied);
15
- // Step 2: Install dependencies
16
- const installSpinner = spinner();
17
- installSpinner.start(spinnerMessages.installingDeps);
18
- const installProcess = application.install();
19
- await installProcess.install;
20
- installSpinner.stop(spinnerMessages.depsInstalled);
21
- // Step 3: Configure features (copy config stubs)
22
- if (features.length > 0) {
23
- const configSpinner = spinner();
24
- configSpinner.start(spinnerMessages.configuringFeatures);
25
- application.copyConfigStubs();
26
- configSpinner.stop(spinnerMessages.featuresConfigured);
27
- }
28
- // Step 4: Initialize Git repository if requested
29
- if (useGit) {
30
- const gitSpinner = spinner();
31
- gitSpinner.start(spinnerMessages.initializingGit);
32
- await application.git();
33
- gitSpinner.stop(spinnerMessages.gitInitialized);
34
- }
35
- // Step 5: Generate JWT or warm cache
36
- if (useJWT) {
37
- const jwtSpinner = spinner();
38
- jwtSpinner.start(spinnerMessages.generatingJwt);
39
- await application.exec(runPackageManagerCommand("jwt"));
40
- jwtSpinner.stop(spinnerMessages.jwtGenerated);
41
- }
42
- else {
43
- const warmSpinner = spinner();
44
- warmSpinner.start(spinnerMessages.warmingCache);
45
- await application.exec("npx warlock --warm-cache");
46
- warmSpinner.stop(spinnerMessages.cacheWarmed);
47
- }
48
- // Step 6: Show success screen
49
- showSuccessScreen({
50
- projectName: application.name,
51
- database: databaseDriver === "mongodb" ? "MongoDB" : "PostgreSQL",
52
- features: features,
53
- packageManager: getPackageManager(),
54
- });
55
- }export{createWarlockApp};//# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/commands/create-warlock-app/index.ts"],"sourcesContent":[null],"names":[],"mappings":"qOASO,eAAe,gBAAgB,CAAC,WAAgB,EAAA;AACrD,IAAA,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;IACpC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;;AAG7D,IAAA,MAAM,eAAe,GAAG,OAAO,EAAE,CAAC;AAClC,IAAA,eAAe,CAAC,KAAK,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;IAEvD,WAAW;AACR,SAAA,IAAI,EAAE;SACN,GAAG,CAAC,SAAS,CAAC;AACd,SAAA,iBAAiB,EAAE;AACnB,SAAA,YAAY,EAAE;SACd,iBAAiB,CAAC,cAAc,CAAC;SACjC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAEzB,IAAA,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;;AAGrD,IAAA,MAAM,cAAc,GAAG,OAAO,EAAE,CAAC;AACjC,IAAA,cAAc,CAAC,KAAK,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;AAErD,IAAA,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC;IAC7C,MAAM,cAAc,CAAC,OAAO,CAAC;AAE7B,IAAA,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;;AAGnD,IAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACvB,QAAA,MAAM,aAAa,GAAG,OAAO,EAAE,CAAC;AAChC,QAAA,aAAa,CAAC,KAAK,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;QAEzD,WAAW,CAAC,eAAe,EAAE,CAAC;AAE9B,QAAA,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;AACxD,KAAA;;AAGD,IAAA,IAAI,MAAM,EAAE;AACV,QAAA,MAAM,UAAU,GAAG,OAAO,EAAE,CAAC;AAC7B,QAAA,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;AAElD,QAAA,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC;AAExB,QAAA,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;AACjD,KAAA;;AAGD,IAAA,IAAI,MAAM,EAAE;AACV,QAAA,MAAM,UAAU,GAAG,OAAO,EAAE,CAAC;AAC7B,QAAA,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;QAEhD,MAAM,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC;AAExD,QAAA,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;AAC/C,KAAA;AAAM,SAAA;AACL,QAAA,MAAM,WAAW,GAAG,OAAO,EAAE,CAAC;AAC9B,QAAA,WAAW,CAAC,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;AAEhD,QAAA,MAAM,WAAW,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;AAEnD,QAAA,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;AAC/C,KAAA;;AAGD,IAAA,iBAAiB,CAAC;QAChB,WAAW,EAAE,WAAW,CAAC,IAAI;QAC7B,QAAQ,EAAE,cAAc,KAAK,SAAS,GAAG,SAAS,GAAG,YAAY;AACjE,QAAA,QAAQ,EAAE,QAAQ;QAClB,cAAc,EAAE,iBAAiB,EAAE;AACpC,KAAA,CAAC,CAAC;AACL"}
@@ -1,31 +0,0 @@
1
- /**
2
- * Database driver options and configuration
3
- */
4
- export type DatabaseDriver = {
5
- value: string;
6
- label: string;
7
- package: string;
8
- packageVersion: string;
9
- defaultPort: number;
10
- disabled?: boolean;
11
- hint?: string;
12
- };
13
- export declare const databaseDrivers: DatabaseDriver[];
14
- /**
15
- * Get database driver options for the select prompt
16
- */
17
- export declare function getDatabaseDriverOptions(): {
18
- value: string;
19
- label: string;
20
- hint: string;
21
- disabled: boolean;
22
- }[];
23
- /**
24
- * Get database driver config by value
25
- */
26
- export declare function getDatabaseDriver(value: string): DatabaseDriver | undefined;
27
- /**
28
- * Get database driver dependency
29
- */
30
- export declare function getDatabaseDependency(driverValue: string): Record<string, string>;
31
- //# sourceMappingURL=database-drivers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"database-drivers.d.ts","sourceRoot":"","sources":["../../src/features/database-drivers.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,cAAc,EAwB3C,CAAC;AAEF;;GAEG;AACH,wBAAgB,wBAAwB;;;;;IAOvC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAE3E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,GAClB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOxB"}
@@ -1,53 +0,0 @@
1
- const databaseDrivers = [
2
- {
3
- value: "mongodb",
4
- label: "MongoDB",
5
- package: "mongodb",
6
- packageVersion: "^7.0.0",
7
- defaultPort: 27017,
8
- },
9
- {
10
- value: "postgres",
11
- label: "PostgreSQL",
12
- package: "pg",
13
- packageVersion: "^8.11.0",
14
- defaultPort: 5432,
15
- },
16
- {
17
- value: "mysql",
18
- label: "MySQL (Coming Soon)",
19
- package: "mysql2",
20
- packageVersion: "^3.5.0",
21
- defaultPort: 3306,
22
- disabled: true,
23
- hint: "MySQL support coming in a future release",
24
- },
25
- ];
26
- /**
27
- * Get database driver options for the select prompt
28
- */
29
- function getDatabaseDriverOptions() {
30
- return databaseDrivers.map(driver => ({
31
- value: driver.value,
32
- label: driver.label,
33
- hint: driver.hint,
34
- disabled: driver.disabled,
35
- }));
36
- }
37
- /**
38
- * Get database driver config by value
39
- */
40
- function getDatabaseDriver(value) {
41
- return databaseDrivers.find(driver => driver.value === value);
42
- }
43
- /**
44
- * Get database driver dependency
45
- */
46
- function getDatabaseDependency(driverValue) {
47
- const driver = getDatabaseDriver(driverValue);
48
- if (!driver)
49
- return {};
50
- return {
51
- [driver.package]: driver.packageVersion,
52
- };
53
- }export{databaseDrivers,getDatabaseDependency,getDatabaseDriver,getDatabaseDriverOptions};//# sourceMappingURL=database-drivers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"database-drivers.js","sources":["../../src/features/database-drivers.ts"],"sourcesContent":[null],"names":[],"mappings":"AAaa,MAAA,eAAe,GAAqB;AAC/C,IAAA;AACE,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,cAAc,EAAE,QAAQ;AACxB,QAAA,WAAW,EAAE,KAAK;AACnB,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,cAAc,EAAE,SAAS;AACzB,QAAA,WAAW,EAAE,IAAI;AAClB,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,KAAK,EAAE,qBAAqB;AAC5B,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,cAAc,EAAE,QAAQ;AACxB,QAAA,WAAW,EAAE,IAAI;AACjB,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,IAAI,EAAE,0CAA0C;AACjD,KAAA;EACD;AAEF;;AAEG;SACa,wBAAwB,GAAA;IACtC,OAAO,eAAe,CAAC,GAAG,CAAC,MAAM,KAAK;QACpC,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;AAC1B,KAAA,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;AAEG;AACG,SAAU,iBAAiB,CAAC,KAAa,EAAA;AAC7C,IAAA,OAAO,eAAe,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;AAChE,CAAC;AAED;;AAEG;AACG,SAAU,qBAAqB,CACnC,WAAmB,EAAA;AAEnB,IAAA,MAAM,MAAM,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;AAC9C,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,EAAE,CAAC;IAEvB,OAAO;AACL,QAAA,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,cAAc;KACxC,CAAC;AACJ"}
@@ -1,35 +0,0 @@
1
- /**
2
- * Hardcoded features map with dependencies, devDependencies, and config stubs
3
- */
4
- export type FeatureConfig = {
5
- label: string;
6
- description: string;
7
- dependencies: Record<string, string>;
8
- devDependencies?: Record<string, string>;
9
- configStub?: {
10
- name: string;
11
- content: string;
12
- };
13
- };
14
- export declare const heraldConfigStub = "import { HeraldConfigurations } from \"@warlock.js/herald\";\n\nconst heraldConfigurations: HeraldConfigurations = {\n host: process.env.RABBITMQ_HOST || \"localhost\",\n port: Number(process.env.RABBITMQ_PORT) || 5672,\n username: process.env.RABBITMQ_USER || \"guest\",\n password: process.env.RABBITMQ_PASSWORD || \"guest\",\n};\n\nexport default heraldConfigurations;\n";
15
- export declare const featuresMap: Record<string, FeatureConfig>;
16
- /**
17
- * Get feature options for the multiselect prompt
18
- */
19
- export declare function getFeatureOptions(): {
20
- value: string;
21
- label: string;
22
- hint: string;
23
- }[];
24
- /**
25
- * Get all dependencies for selected features
26
- */
27
- export declare function getFeatureDependencies(selectedFeatures: string[]): {
28
- dependencies: Record<string, string>;
29
- devDependencies: Record<string, string>;
30
- };
31
- /**
32
- * Get config stubs for selected features
33
- */
34
- export declare function getFeatureConfigStubs(selectedFeatures: string[]): Array<FeatureConfig>;
35
- //# sourceMappingURL=features-map.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"features-map.d.ts","sourceRoot":"","sources":["../../src/features/features-map.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,gBAAgB,8XAU5B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAqErD,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB;;;;IAMhC;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,gBAAgB,EAAE,MAAM,EAAE,GAAG;IAClE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC,CAeA;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,gBAAgB,EAAE,MAAM,EAAE,GACzB,KAAK,CAAC,aAAa,CAAC,CAWtB"}