@fnd-platform/cli 1.0.0-alpha.3 → 1.0.0-alpha.31

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 (237) hide show
  1. package/LICENSE +21 -0
  2. package/lib/bin/fnd.js +101 -4
  3. package/lib/bin/fnd.js.map +1 -1
  4. package/lib/commands/add.d.ts.map +1 -1
  5. package/lib/commands/add.js +134 -67
  6. package/lib/commands/add.js.map +1 -1
  7. package/lib/commands/build.js +29 -34
  8. package/lib/commands/build.js.map +1 -1
  9. package/lib/commands/deploy.d.ts +34 -9
  10. package/lib/commands/deploy.d.ts.map +1 -1
  11. package/lib/commands/deploy.js +246 -52
  12. package/lib/commands/deploy.js.map +1 -1
  13. package/lib/commands/destroy.d.ts +69 -0
  14. package/lib/commands/destroy.d.ts.map +1 -0
  15. package/lib/commands/destroy.js +172 -0
  16. package/lib/commands/destroy.js.map +1 -0
  17. package/lib/commands/index.d.ts +2 -0
  18. package/lib/commands/index.d.ts.map +1 -1
  19. package/lib/commands/index.js +7 -13
  20. package/lib/commands/index.js.map +1 -1
  21. package/lib/commands/new.js +46 -50
  22. package/lib/commands/new.js.map +1 -1
  23. package/lib/commands/synth.d.ts +8 -1
  24. package/lib/commands/synth.d.ts.map +1 -1
  25. package/lib/commands/synth.js +82 -22
  26. package/lib/commands/synth.js.map +1 -1
  27. package/lib/commands/test.d.ts +73 -0
  28. package/lib/commands/test.d.ts.map +1 -0
  29. package/lib/commands/test.js +193 -0
  30. package/lib/commands/test.js.map +1 -0
  31. package/lib/index.d.ts +11 -2
  32. package/lib/index.d.ts.map +1 -1
  33. package/lib/index.js +31 -15
  34. package/lib/index.js.map +1 -1
  35. package/lib/lib/deploy-utils.d.ts +190 -0
  36. package/lib/lib/deploy-utils.d.ts.map +1 -0
  37. package/lib/lib/deploy-utils.js +372 -0
  38. package/lib/lib/deploy-utils.js.map +1 -0
  39. package/lib/lib/infra-generator.d.ts +118 -0
  40. package/lib/lib/infra-generator.d.ts.map +1 -1
  41. package/lib/lib/infra-generator.js +1051 -59
  42. package/lib/lib/infra-generator.js.map +1 -1
  43. package/lib/lib/logger.js +23 -29
  44. package/lib/lib/logger.js.map +1 -1
  45. package/lib/lib/nx-stats.js +12 -18
  46. package/lib/lib/nx-stats.js.map +1 -1
  47. package/lib/lib/project.js +7 -11
  48. package/lib/lib/project.js.map +1 -1
  49. package/lib/lib/templates.js +2 -6
  50. package/lib/lib/templates.js.map +1 -1
  51. package/lib/lib/timer.js +2 -7
  52. package/lib/lib/timer.js.map +1 -1
  53. package/lib/lib/validation.d.ts +135 -0
  54. package/lib/lib/validation.d.ts.map +1 -0
  55. package/lib/lib/validation.js +233 -0
  56. package/lib/lib/validation.js.map +1 -0
  57. package/lib/tui/App.d.ts +11 -0
  58. package/lib/tui/App.d.ts.map +1 -0
  59. package/lib/tui/App.js +98 -0
  60. package/lib/tui/App.js.map +1 -0
  61. package/lib/tui/components/branding/AsciiBanner.d.ts +21 -0
  62. package/lib/tui/components/branding/AsciiBanner.d.ts.map +1 -0
  63. package/lib/tui/components/branding/AsciiBanner.js +15 -0
  64. package/lib/tui/components/branding/AsciiBanner.js.map +1 -0
  65. package/lib/tui/components/branding/index.d.ts +5 -0
  66. package/lib/tui/components/branding/index.d.ts.map +1 -0
  67. package/lib/tui/components/branding/index.js +5 -0
  68. package/lib/tui/components/branding/index.js.map +1 -0
  69. package/lib/tui/components/feedback/Notification.d.ts +51 -0
  70. package/lib/tui/components/feedback/Notification.d.ts.map +1 -0
  71. package/lib/tui/components/feedback/Notification.js +89 -0
  72. package/lib/tui/components/feedback/Notification.js.map +1 -0
  73. package/lib/tui/components/feedback/ProgressBar.d.ts +46 -0
  74. package/lib/tui/components/feedback/ProgressBar.d.ts.map +1 -0
  75. package/lib/tui/components/feedback/ProgressBar.js +30 -0
  76. package/lib/tui/components/feedback/ProgressBar.js.map +1 -0
  77. package/lib/tui/components/feedback/ProgressSteps.d.ts +35 -0
  78. package/lib/tui/components/feedback/ProgressSteps.d.ts.map +1 -0
  79. package/lib/tui/components/feedback/ProgressSteps.js +37 -0
  80. package/lib/tui/components/feedback/ProgressSteps.js.map +1 -0
  81. package/lib/tui/components/feedback/Spinner.d.ts +18 -0
  82. package/lib/tui/components/feedback/Spinner.d.ts.map +1 -0
  83. package/lib/tui/components/feedback/Spinner.js +28 -0
  84. package/lib/tui/components/feedback/Spinner.js.map +1 -0
  85. package/lib/tui/components/feedback/index.d.ts +8 -0
  86. package/lib/tui/components/feedback/index.d.ts.map +1 -0
  87. package/lib/tui/components/feedback/index.js +8 -0
  88. package/lib/tui/components/feedback/index.js.map +1 -0
  89. package/lib/tui/components/index.d.ts +8 -0
  90. package/lib/tui/components/index.d.ts.map +1 -0
  91. package/lib/tui/components/index.js +8 -0
  92. package/lib/tui/components/index.js.map +1 -0
  93. package/lib/tui/components/input/Checkbox.d.ts +26 -0
  94. package/lib/tui/components/input/Checkbox.d.ts.map +1 -0
  95. package/lib/tui/components/input/Checkbox.js +20 -0
  96. package/lib/tui/components/input/Checkbox.js.map +1 -0
  97. package/lib/tui/components/input/SelectInput.d.ts +41 -0
  98. package/lib/tui/components/input/SelectInput.d.ts.map +1 -0
  99. package/lib/tui/components/input/SelectInput.js +53 -0
  100. package/lib/tui/components/input/SelectInput.js.map +1 -0
  101. package/lib/tui/components/input/TextInput.d.ts +30 -0
  102. package/lib/tui/components/input/TextInput.d.ts.map +1 -0
  103. package/lib/tui/components/input/TextInput.js +48 -0
  104. package/lib/tui/components/input/TextInput.js.map +1 -0
  105. package/lib/tui/components/input/index.d.ts +7 -0
  106. package/lib/tui/components/input/index.d.ts.map +1 -0
  107. package/lib/tui/components/input/index.js +7 -0
  108. package/lib/tui/components/input/index.js.map +1 -0
  109. package/lib/tui/components/layout/Breadcrumbs.d.ts +11 -0
  110. package/lib/tui/components/layout/Breadcrumbs.d.ts.map +1 -0
  111. package/lib/tui/components/layout/Breadcrumbs.js +34 -0
  112. package/lib/tui/components/layout/Breadcrumbs.js.map +1 -0
  113. package/lib/tui/components/layout/Footer.d.ts +11 -0
  114. package/lib/tui/components/layout/Footer.d.ts.map +1 -0
  115. package/lib/tui/components/layout/Footer.js +20 -0
  116. package/lib/tui/components/layout/Footer.js.map +1 -0
  117. package/lib/tui/components/layout/Header.d.ts +21 -0
  118. package/lib/tui/components/layout/Header.d.ts.map +1 -0
  119. package/lib/tui/components/layout/Header.js +21 -0
  120. package/lib/tui/components/layout/Header.js.map +1 -0
  121. package/lib/tui/components/layout/Screen.d.ts +27 -0
  122. package/lib/tui/components/layout/Screen.d.ts.map +1 -0
  123. package/lib/tui/components/layout/Screen.js +11 -0
  124. package/lib/tui/components/layout/Screen.js.map +1 -0
  125. package/lib/tui/components/layout/index.d.ts +8 -0
  126. package/lib/tui/components/layout/index.d.ts.map +1 -0
  127. package/lib/tui/components/layout/index.js +8 -0
  128. package/lib/tui/components/layout/index.js.map +1 -0
  129. package/lib/tui/hooks/index.d.ts +20 -0
  130. package/lib/tui/hooks/index.d.ts.map +1 -0
  131. package/lib/tui/hooks/index.js +18 -0
  132. package/lib/tui/hooks/index.js.map +1 -0
  133. package/lib/tui/hooks/useAddPackage.d.ts +120 -0
  134. package/lib/tui/hooks/useAddPackage.d.ts.map +1 -0
  135. package/lib/tui/hooks/useAddPackage.js +357 -0
  136. package/lib/tui/hooks/useAddPackage.js.map +1 -0
  137. package/lib/tui/hooks/useCreateProject.d.ts +66 -0
  138. package/lib/tui/hooks/useCreateProject.d.ts.map +1 -0
  139. package/lib/tui/hooks/useCreateProject.js +158 -0
  140. package/lib/tui/hooks/useCreateProject.js.map +1 -0
  141. package/lib/tui/hooks/useDeploy.d.ts +93 -0
  142. package/lib/tui/hooks/useDeploy.d.ts.map +1 -0
  143. package/lib/tui/hooks/useDeploy.js +254 -0
  144. package/lib/tui/hooks/useDeploy.js.map +1 -0
  145. package/lib/tui/hooks/useKeyboard.d.ts +66 -0
  146. package/lib/tui/hooks/useKeyboard.d.ts.map +1 -0
  147. package/lib/tui/hooks/useKeyboard.js +102 -0
  148. package/lib/tui/hooks/useKeyboard.js.map +1 -0
  149. package/lib/tui/hooks/useNavigation.d.ts +33 -0
  150. package/lib/tui/hooks/useNavigation.d.ts.map +1 -0
  151. package/lib/tui/hooks/useNavigation.js +27 -0
  152. package/lib/tui/hooks/useNavigation.js.map +1 -0
  153. package/lib/tui/hooks/useProject.d.ts +36 -0
  154. package/lib/tui/hooks/useProject.d.ts.map +1 -0
  155. package/lib/tui/hooks/useProject.js +47 -0
  156. package/lib/tui/hooks/useProject.js.map +1 -0
  157. package/lib/tui/index.d.ts +15 -0
  158. package/lib/tui/index.d.ts.map +1 -0
  159. package/lib/tui/index.js +16 -0
  160. package/lib/tui/index.js.map +1 -0
  161. package/lib/tui/lib/add-package-tui.d.ts +130 -0
  162. package/lib/tui/lib/add-package-tui.d.ts.map +1 -0
  163. package/lib/tui/lib/add-package-tui.js +492 -0
  164. package/lib/tui/lib/add-package-tui.js.map +1 -0
  165. package/lib/tui/lib/create-project-tui.d.ts +92 -0
  166. package/lib/tui/lib/create-project-tui.d.ts.map +1 -0
  167. package/lib/tui/lib/create-project-tui.js +181 -0
  168. package/lib/tui/lib/create-project-tui.js.map +1 -0
  169. package/lib/tui/lib/deploy-tui.d.ts +131 -0
  170. package/lib/tui/lib/deploy-tui.d.ts.map +1 -0
  171. package/lib/tui/lib/deploy-tui.js +347 -0
  172. package/lib/tui/lib/deploy-tui.js.map +1 -0
  173. package/lib/tui/screens/AddPackageScreen.d.ts +12 -0
  174. package/lib/tui/screens/AddPackageScreen.d.ts.map +1 -0
  175. package/lib/tui/screens/AddPackageScreen.js +436 -0
  176. package/lib/tui/screens/AddPackageScreen.js.map +1 -0
  177. package/lib/tui/screens/CreateProjectScreen.d.ts +12 -0
  178. package/lib/tui/screens/CreateProjectScreen.d.ts.map +1 -0
  179. package/lib/tui/screens/CreateProjectScreen.js +261 -0
  180. package/lib/tui/screens/CreateProjectScreen.js.map +1 -0
  181. package/lib/tui/screens/DeployScreen.d.ts +11 -0
  182. package/lib/tui/screens/DeployScreen.d.ts.map +1 -0
  183. package/lib/tui/screens/DeployScreen.js +224 -0
  184. package/lib/tui/screens/DeployScreen.js.map +1 -0
  185. package/lib/tui/screens/ProjectDashboard.d.ts +11 -0
  186. package/lib/tui/screens/ProjectDashboard.d.ts.map +1 -0
  187. package/lib/tui/screens/ProjectDashboard.js +81 -0
  188. package/lib/tui/screens/ProjectDashboard.js.map +1 -0
  189. package/lib/tui/screens/WelcomeScreen.d.ts +11 -0
  190. package/lib/tui/screens/WelcomeScreen.d.ts.map +1 -0
  191. package/lib/tui/screens/WelcomeScreen.js +26 -0
  192. package/lib/tui/screens/WelcomeScreen.js.map +1 -0
  193. package/lib/tui/screens/index.d.ts +9 -0
  194. package/lib/tui/screens/index.d.ts.map +1 -0
  195. package/lib/tui/screens/index.js +9 -0
  196. package/lib/tui/screens/index.js.map +1 -0
  197. package/lib/tui/services/ConfigService.d.ts +133 -0
  198. package/lib/tui/services/ConfigService.d.ts.map +1 -0
  199. package/lib/tui/services/ConfigService.js +221 -0
  200. package/lib/tui/services/ConfigService.js.map +1 -0
  201. package/lib/tui/services/ProjectService.d.ts +55 -0
  202. package/lib/tui/services/ProjectService.d.ts.map +1 -0
  203. package/lib/tui/services/ProjectService.js +179 -0
  204. package/lib/tui/services/ProjectService.js.map +1 -0
  205. package/lib/tui/services/index.d.ts +6 -0
  206. package/lib/tui/services/index.d.ts.map +1 -0
  207. package/lib/tui/services/index.js +6 -0
  208. package/lib/tui/services/index.js.map +1 -0
  209. package/lib/tui/state/AppContext.d.ts +58 -0
  210. package/lib/tui/state/AppContext.d.ts.map +1 -0
  211. package/lib/tui/state/AppContext.js +75 -0
  212. package/lib/tui/state/AppContext.js.map +1 -0
  213. package/lib/tui/state/index.d.ts +7 -0
  214. package/lib/tui/state/index.d.ts.map +1 -0
  215. package/lib/tui/state/index.js +7 -0
  216. package/lib/tui/state/index.js.map +1 -0
  217. package/lib/tui/state/reducer.d.ts +13 -0
  218. package/lib/tui/state/reducer.d.ts.map +1 -0
  219. package/lib/tui/state/reducer.js +136 -0
  220. package/lib/tui/state/reducer.js.map +1 -0
  221. package/lib/tui/state/types.d.ts +132 -0
  222. package/lib/tui/state/types.d.ts.map +1 -0
  223. package/lib/tui/state/types.js +38 -0
  224. package/lib/tui/state/types.js.map +1 -0
  225. package/lib/tui/utils/ascii.d.ts +42 -0
  226. package/lib/tui/utils/ascii.d.ts.map +1 -0
  227. package/lib/tui/utils/ascii.js +63 -0
  228. package/lib/tui/utils/ascii.js.map +1 -0
  229. package/lib/tui/utils/colors.d.ts +65 -0
  230. package/lib/tui/utils/colors.d.ts.map +1 -0
  231. package/lib/tui/utils/colors.js +65 -0
  232. package/lib/tui/utils/colors.js.map +1 -0
  233. package/lib/tui/utils/index.d.ts +6 -0
  234. package/lib/tui/utils/index.d.ts.map +1 -0
  235. package/lib/tui/utils/index.js +6 -0
  236. package/lib/tui/utils/index.js.map +1 -0
  237. package/package.json +23 -14
@@ -0,0 +1,69 @@
1
+ import { Command } from 'commander';
2
+ /**
3
+ * Options for the destroy command.
4
+ */
5
+ export interface DestroyCommandOptions {
6
+ stage: string;
7
+ stack?: string;
8
+ force?: boolean;
9
+ verbose?: boolean;
10
+ }
11
+ /**
12
+ * Creates the `fnd destroy` command.
13
+ *
14
+ * @returns Commander command instance
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * import { destroyCommand } from '@fnd-platform/cli';
19
+ *
20
+ * const program = new Command();
21
+ * program.addCommand(destroyCommand());
22
+ *
23
+ * // Destroy dev environment (with confirmation prompt)
24
+ * program.parse(['node', 'fnd', 'destroy', '--stage=dev']);
25
+ *
26
+ * // Force destroy without confirmation (for CI/CD)
27
+ * program.parse(['node', 'fnd', 'destroy', '--stage=dev', '--force']);
28
+ *
29
+ * // Destroy specific stack
30
+ * program.parse(['node', 'fnd', 'destroy', '--stage=dev', '--stack=Frontend']);
31
+ * ```
32
+ */
33
+ export declare function destroyCommand(): Command;
34
+ /**
35
+ * Runs the CDK destroy operation.
36
+ *
37
+ * @param options - Command options
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * // Destroy dev environment (with confirmation)
42
+ * await runDestroy({ stage: 'dev' });
43
+ *
44
+ * // Force destroy (no confirmation)
45
+ * await runDestroy({ stage: 'dev', force: true });
46
+ *
47
+ * // Destroy specific stack
48
+ * await runDestroy({ stage: 'dev', stack: 'Frontend' });
49
+ * ```
50
+ */
51
+ export declare function runDestroy(options: DestroyCommandOptions): Promise<void>;
52
+ /**
53
+ * Builds the CDK destroy command.
54
+ *
55
+ * @param stage - Deployment stage
56
+ * @param stack - Optional specific stack to destroy
57
+ * @returns Command string
58
+ *
59
+ * @example
60
+ * ```typescript
61
+ * buildCdkDestroyCommand('dev');
62
+ * // Returns: 'pnpm exec cdk destroy --all -c stage=dev --force'
63
+ *
64
+ * buildCdkDestroyCommand('dev', 'Frontend');
65
+ * // Returns: 'pnpm exec cdk destroy "*Frontend*" -c stage=dev --force'
66
+ * ```
67
+ */
68
+ export declare function buildCdkDestroyCommand(stage: string, stack?: string): string;
69
+ //# sourceMappingURL=destroy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"destroy.d.ts","sourceRoot":"","sources":["../../src/commands/destroy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAUxC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsE9E;AAiCD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAgB5E"}
@@ -0,0 +1,172 @@
1
+ import { Command } from 'commander';
2
+ import { execSync } from 'child_process';
3
+ import { existsSync } from 'fs';
4
+ import { join } from 'path';
5
+ import { requireProjectRoot } from '../lib/project.js';
6
+ import { logger } from '../lib/logger.js';
7
+ import { validateAwsCli, getProjectName, promptConfirmation, listProjectStacks, } from '../lib/deploy-utils.js';
8
+ /**
9
+ * Creates the `fnd destroy` command.
10
+ *
11
+ * @returns Commander command instance
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * import { destroyCommand } from '@fnd-platform/cli';
16
+ *
17
+ * const program = new Command();
18
+ * program.addCommand(destroyCommand());
19
+ *
20
+ * // Destroy dev environment (with confirmation prompt)
21
+ * program.parse(['node', 'fnd', 'destroy', '--stage=dev']);
22
+ *
23
+ * // Force destroy without confirmation (for CI/CD)
24
+ * program.parse(['node', 'fnd', 'destroy', '--stage=dev', '--force']);
25
+ *
26
+ * // Destroy specific stack
27
+ * program.parse(['node', 'fnd', 'destroy', '--stage=dev', '--stack=Frontend']);
28
+ * ```
29
+ */
30
+ export function destroyCommand() {
31
+ return new Command('destroy')
32
+ .description('Destroy AWS resources created by fnd-platform')
33
+ .requiredOption('--stage <stage>', 'Deployment stage to destroy (e.g., dev, staging, prod)')
34
+ .option('--stack <stack>', 'Destroy specific stack only (e.g., Api, Frontend, Cms)')
35
+ .option('--force', 'Skip confirmation prompt (required for CI/CD)')
36
+ .option('-v, --verbose', 'Verbose output')
37
+ .action(async (options) => {
38
+ await runDestroy(options);
39
+ });
40
+ }
41
+ /**
42
+ * Runs the CDK destroy operation.
43
+ *
44
+ * @param options - Command options
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * // Destroy dev environment (with confirmation)
49
+ * await runDestroy({ stage: 'dev' });
50
+ *
51
+ * // Force destroy (no confirmation)
52
+ * await runDestroy({ stage: 'dev', force: true });
53
+ *
54
+ * // Destroy specific stack
55
+ * await runDestroy({ stage: 'dev', stack: 'Frontend' });
56
+ * ```
57
+ */
58
+ export async function runDestroy(options) {
59
+ let projectRoot;
60
+ try {
61
+ projectRoot = requireProjectRoot();
62
+ }
63
+ catch (error) {
64
+ logger.error(error.message);
65
+ process.exit(1);
66
+ }
67
+ // Validate infra package exists
68
+ const infraDir = join(projectRoot, 'packages', 'infra');
69
+ if (!existsSync(infraDir)) {
70
+ logger.error('Infrastructure package not found at packages/infra. ' +
71
+ 'Make sure you have added an API package with `fnd add api`, ' +
72
+ 'which generates the infrastructure package.');
73
+ process.exit(1);
74
+ }
75
+ // Validate AWS CLI
76
+ try {
77
+ validateAwsCli();
78
+ }
79
+ catch (error) {
80
+ logger.error(error.message);
81
+ process.exit(1);
82
+ }
83
+ const { stage, stack, force } = options;
84
+ const projectName = getProjectName(projectRoot);
85
+ // Build confirmation message
86
+ let confirmMessage;
87
+ if (stack) {
88
+ confirmMessage = `Are you sure you want to destroy the ${stack} stack in ${stage} for ${projectName}?`;
89
+ }
90
+ else {
91
+ confirmMessage = `Are you sure you want to destroy ALL resources in ${stage} for ${projectName}?`;
92
+ }
93
+ // Prompt for confirmation unless --force is used
94
+ if (!force) {
95
+ logger.warn('This action is destructive and cannot be undone!');
96
+ logger.warn('Data in DynamoDB and S3 will be deleted unless retention policies are configured.');
97
+ const confirmed = await promptConfirmation(confirmMessage);
98
+ if (!confirmed) {
99
+ logger.info('Destroy operation cancelled.');
100
+ process.exit(0);
101
+ }
102
+ }
103
+ // List stacks that will be destroyed
104
+ if (!stack) {
105
+ const stacks = listProjectStacks(projectRoot, stage);
106
+ if (stacks.length > 0) {
107
+ logger.info('Stacks to be destroyed:');
108
+ for (const stackName of stacks) {
109
+ logger.info(` - ${stackName}`);
110
+ }
111
+ }
112
+ }
113
+ // Run CDK destroy
114
+ logger.info(`Destroying ${stack ? `${stack} stack` : 'all stacks'} in stage: ${stage}`);
115
+ await runCdkDestroy(infraDir, stage, stack, options.verbose);
116
+ logger.success(`Destroy operation for ${stage} complete`);
117
+ }
118
+ /**
119
+ * Runs CDK destroy.
120
+ *
121
+ * @param infraDir - Path to the infrastructure package
122
+ * @param stage - Deployment stage
123
+ * @param stack - Optional specific stack to destroy
124
+ * @param verbose - Show verbose output
125
+ */
126
+ async function runCdkDestroy(infraDir, stage, stack, verbose) {
127
+ logger.debug(`Running CDK destroy in: ${infraDir}`);
128
+ const command = buildCdkDestroyCommand(stage, stack);
129
+ logger.debug(`Command: ${command}`);
130
+ try {
131
+ execSync(command, {
132
+ cwd: infraDir,
133
+ stdio: 'inherit',
134
+ });
135
+ }
136
+ catch (error) {
137
+ logger.error('CDK destroy failed');
138
+ logger.debug(`Error: ${error.message}`);
139
+ process.exit(1);
140
+ }
141
+ }
142
+ /**
143
+ * Builds the CDK destroy command.
144
+ *
145
+ * @param stage - Deployment stage
146
+ * @param stack - Optional specific stack to destroy
147
+ * @returns Command string
148
+ *
149
+ * @example
150
+ * ```typescript
151
+ * buildCdkDestroyCommand('dev');
152
+ * // Returns: 'pnpm exec cdk destroy --all -c stage=dev --force'
153
+ *
154
+ * buildCdkDestroyCommand('dev', 'Frontend');
155
+ * // Returns: 'pnpm exec cdk destroy "*Frontend*" -c stage=dev --force'
156
+ * ```
157
+ */
158
+ export function buildCdkDestroyCommand(stage, stack) {
159
+ const args = ['pnpm', 'exec', 'cdk', 'destroy'];
160
+ if (stack) {
161
+ args.push(`"*${stack}*"`);
162
+ }
163
+ else {
164
+ args.push('--all');
165
+ }
166
+ args.push(`-c stage=${stage}`);
167
+ // Always use --force for CDK destroy to skip its internal confirmation
168
+ // (we handle confirmation at the CLI level)
169
+ args.push('--force');
170
+ return args.join(' ');
171
+ }
172
+ //# sourceMappingURL=destroy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"destroy.js","sourceRoot":"","sources":["../../src/commands/destroy.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  export { newCommand } from './new.js';
2
2
  export { synthCommand } from './synth.js';
3
3
  export { buildCommand } from './build.js';
4
+ export { testCommand } from './test.js';
4
5
  export { addCommand } from './add.js';
5
6
  export { deployCommand } from './deploy.js';
7
+ export { destroyCommand } from './destroy.js';
6
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
@@ -1,14 +1,8 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deployCommand = exports.addCommand = exports.buildCommand = exports.synthCommand = exports.newCommand = void 0;
4
- var new_js_1 = require("./new.js");
5
- Object.defineProperty(exports, "newCommand", { enumerable: true, get: function () { return new_js_1.newCommand; } });
6
- var synth_js_1 = require("./synth.js");
7
- Object.defineProperty(exports, "synthCommand", { enumerable: true, get: function () { return synth_js_1.synthCommand; } });
8
- var build_js_1 = require("./build.js");
9
- Object.defineProperty(exports, "buildCommand", { enumerable: true, get: function () { return build_js_1.buildCommand; } });
10
- var add_js_1 = require("./add.js");
11
- Object.defineProperty(exports, "addCommand", { enumerable: true, get: function () { return add_js_1.addCommand; } });
12
- var deploy_js_1 = require("./deploy.js");
13
- Object.defineProperty(exports, "deployCommand", { enumerable: true, get: function () { return deploy_js_1.deployCommand; } });
1
+ export { newCommand } from './new.js';
2
+ export { synthCommand } from './synth.js';
3
+ export { buildCommand } from './build.js';
4
+ export { testCommand } from './test.js';
5
+ export { addCommand } from './add.js';
6
+ export { deployCommand } from './deploy.js';
7
+ export { destroyCommand } from './destroy.js';
14
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":";;;AAAA,mCAAsC;AAA7B,oGAAA,UAAU,OAAA;AACnB,uCAA0C;AAAjC,wGAAA,YAAY,OAAA;AACrB,uCAA0C;AAAjC,wGAAA,YAAY,OAAA;AACrB,mCAAsC;AAA7B,oGAAA,UAAU,OAAA;AACnB,yCAA4C;AAAnC,0GAAA,aAAa,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
@@ -1,21 +1,15 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PROJECT_NAME_PATTERN = void 0;
4
- exports.newCommand = newCommand;
5
- exports.createProject = createProject;
6
- const commander_1 = require("commander");
7
- const child_process_1 = require("child_process");
8
- const fs_1 = require("fs");
9
- const path_1 = require("path");
10
- const logger_js_1 = require("../lib/logger.js");
11
- const templates_js_1 = require("../lib/templates.js");
12
- const timer_js_1 = require("../lib/timer.js");
1
+ import { Command } from 'commander';
2
+ import { execSync } from 'child_process';
3
+ import { existsSync, mkdirSync, rmSync, writeFileSync } from 'fs';
4
+ import { join, resolve } from 'path';
5
+ import { logger } from '../lib/logger.js';
6
+ import { getProjenrcTemplate, getInitialPackageJson } from '../lib/templates.js';
7
+ import { PerformanceTimer } from '../lib/timer.js';
13
8
  /**
14
9
  * Valid project name pattern: lowercase alphanumeric with hyphens.
15
10
  * Must start with a letter.
16
11
  */
17
12
  const PROJECT_NAME_PATTERN = /^[a-z][a-z0-9-]*$/;
18
- exports.PROJECT_NAME_PATTERN = PROJECT_NAME_PATTERN;
19
13
  /**
20
14
  * Creates the `fnd new` command.
21
15
  *
@@ -30,8 +24,8 @@ exports.PROJECT_NAME_PATTERN = PROJECT_NAME_PATTERN;
30
24
  * program.parse(['node', 'fnd', 'new', 'my-app']);
31
25
  * ```
32
26
  */
33
- function newCommand() {
34
- return new commander_1.Command('new')
27
+ export function newCommand() {
28
+ return new Command('new')
35
29
  .description('Create a new fnd-platform monorepo project')
36
30
  .argument('<name>', 'Project name (lowercase alphanumeric with hyphens)')
37
31
  .option('--package-manager <pm>', 'Package manager to use (pnpm or yarn)', 'pnpm')
@@ -56,84 +50,84 @@ function newCommand() {
56
50
  * });
57
51
  * ```
58
52
  */
59
- async function createProject(name, options) {
53
+ export async function createProject(name, options) {
60
54
  // Initialize profiling if enabled
61
- const timer = timer_js_1.PerformanceTimer.isEnabled() ? new timer_js_1.PerformanceTimer('fnd new') : null;
55
+ const timer = PerformanceTimer.isEnabled() ? new PerformanceTimer('fnd new') : null;
62
56
  // Validate project name
63
57
  if (!PROJECT_NAME_PATTERN.test(name)) {
64
- logger_js_1.logger.error(`Invalid project name: '${name}'. ` +
58
+ logger.error(`Invalid project name: '${name}'. ` +
65
59
  'Project name must start with a letter and contain only lowercase letters, numbers, and hyphens.');
66
60
  process.exit(1);
67
61
  }
68
- const projectDir = (0, path_1.resolve)(process.cwd(), name);
62
+ const projectDir = resolve(process.cwd(), name);
69
63
  // Check if directory already exists
70
- if ((0, fs_1.existsSync)(projectDir)) {
71
- logger_js_1.logger.error(`Directory '${name}' already exists. ` +
64
+ if (existsSync(projectDir)) {
65
+ logger.error(`Directory '${name}' already exists. ` +
72
66
  'Please choose a different name or remove the existing directory.');
73
67
  process.exit(1);
74
68
  }
75
- logger_js_1.logger.info(`Creating new fnd-platform project: ${name}`);
69
+ logger.info(`Creating new fnd-platform project: ${name}`);
76
70
  try {
77
71
  // Step 1: Create project directory and write files
78
72
  timer?.start('file-generation');
79
- logger_js_1.logger.debug(`Creating directory: ${projectDir}`);
80
- (0, fs_1.mkdirSync)(projectDir, { recursive: true });
73
+ logger.debug(`Creating directory: ${projectDir}`);
74
+ mkdirSync(projectDir, { recursive: true });
81
75
  // Step 2: Write .projenrc.ts
82
- logger_js_1.logger.debug('Writing .projenrc.ts');
83
- (0, fs_1.writeFileSync)((0, path_1.join)(projectDir, '.projenrc.ts'), (0, templates_js_1.getProjenrcTemplate)(name));
76
+ logger.debug('Writing .projenrc.ts');
77
+ writeFileSync(join(projectDir, '.projenrc.ts'), getProjenrcTemplate(name));
84
78
  // Step 3: Write initial package.json
85
- logger_js_1.logger.debug('Writing initial package.json');
86
- (0, fs_1.writeFileSync)((0, path_1.join)(projectDir, 'package.json'), JSON.stringify((0, templates_js_1.getInitialPackageJson)(name, options.packageManager), null, 2));
79
+ logger.debug('Writing initial package.json');
80
+ writeFileSync(join(projectDir, 'package.json'), JSON.stringify(getInitialPackageJson(name, options.packageManager), null, 2));
87
81
  const fileGenResult = timer?.end('file-generation');
88
82
  if (fileGenResult) {
89
- logger_js_1.logger.timing('file-generation', fileGenResult.durationMs);
83
+ logger.timing('file-generation', fileGenResult.durationMs);
90
84
  }
91
85
  // Step 4: Initialize git repository (unless --no-git)
92
86
  if (options.git) {
93
87
  timer?.start('git-init');
94
- logger_js_1.logger.debug('Initializing git repository');
88
+ logger.debug('Initializing git repository');
95
89
  initializeGit(projectDir);
96
90
  const gitResult = timer?.end('git-init');
97
91
  if (gitResult) {
98
- logger_js_1.logger.timing('git-init', gitResult.durationMs);
92
+ logger.timing('git-init', gitResult.durationMs);
99
93
  }
100
94
  }
101
95
  // Step 5: Install dependencies and run Projen (unless --no-install)
102
96
  if (options.install) {
103
97
  timer?.start('install-dependencies');
104
- logger_js_1.logger.info('Installing dependencies...');
98
+ logger.info('Installing dependencies...');
105
99
  installDependencies(projectDir, options.packageManager);
106
100
  const installResult = timer?.end('install-dependencies');
107
101
  if (installResult) {
108
- logger_js_1.logger.timing('install-dependencies', installResult.durationMs);
102
+ logger.timing('install-dependencies', installResult.durationMs);
109
103
  }
110
104
  timer?.start('projen-synth');
111
- logger_js_1.logger.info('Running Projen synthesis...');
105
+ logger.info('Running Projen synthesis...');
112
106
  runProjen(projectDir);
113
107
  const synthResult = timer?.end('projen-synth');
114
108
  if (synthResult) {
115
- logger_js_1.logger.timing('projen-synth', synthResult.durationMs);
109
+ logger.timing('projen-synth', synthResult.durationMs);
116
110
  }
117
111
  }
118
- logger_js_1.logger.success(`Project '${name}' created successfully!`);
112
+ logger.success(`Project '${name}' created successfully!`);
119
113
  printNextSteps(name, options);
120
114
  // Output profile report if enabled
121
115
  if (timer) {
122
116
  const report = timer.getReport(true);
123
- logger_js_1.logger.report(report);
117
+ logger.report(report);
124
118
  }
125
119
  }
126
120
  catch (error) {
127
121
  // Output profile report even on failure
128
122
  if (timer) {
129
123
  const report = timer.getReport(false);
130
- logger_js_1.logger.report(report);
124
+ logger.report(report);
131
125
  }
132
- logger_js_1.logger.error(`Failed to create project: ${error.message}`);
126
+ logger.error(`Failed to create project: ${error.message}`);
133
127
  // Clean up partial project on failure
134
- if ((0, fs_1.existsSync)(projectDir)) {
135
- logger_js_1.logger.debug('Cleaning up partial project directory');
136
- (0, fs_1.rmSync)(projectDir, { recursive: true, force: true });
128
+ if (existsSync(projectDir)) {
129
+ logger.debug('Cleaning up partial project directory');
130
+ rmSync(projectDir, { recursive: true, force: true });
137
131
  }
138
132
  process.exit(1);
139
133
  }
@@ -143,22 +137,22 @@ async function createProject(name, options) {
143
137
  */
144
138
  function initializeGit(projectDir) {
145
139
  try {
146
- (0, child_process_1.execSync)('git init', {
140
+ execSync('git init', {
147
141
  cwd: projectDir,
148
142
  stdio: 'pipe',
149
143
  });
150
- (0, child_process_1.execSync)('git add -A', {
144
+ execSync('git add -A', {
151
145
  cwd: projectDir,
152
146
  stdio: 'pipe',
153
147
  });
154
- (0, child_process_1.execSync)('git commit -m "Initial commit from fnd-platform"', {
148
+ execSync('git commit -m "Initial commit from fnd-platform"', {
155
149
  cwd: projectDir,
156
150
  stdio: 'pipe',
157
151
  });
158
152
  }
159
153
  catch (error) {
160
- logger_js_1.logger.warn('Git initialization failed (git may not be configured)');
161
- logger_js_1.logger.debug(`Git error: ${error.message}`);
154
+ logger.warn('Git initialization failed (git may not be configured)');
155
+ logger.debug(`Git error: ${error.message}`);
162
156
  }
163
157
  }
164
158
  /**
@@ -166,7 +160,7 @@ function initializeGit(projectDir) {
166
160
  */
167
161
  function installDependencies(projectDir, packageManager) {
168
162
  const installCmd = packageManager === 'pnpm' ? 'pnpm install' : 'yarn install';
169
- (0, child_process_1.execSync)(installCmd, {
163
+ execSync(installCmd, {
170
164
  cwd: projectDir,
171
165
  stdio: 'inherit',
172
166
  });
@@ -175,7 +169,7 @@ function installDependencies(projectDir, packageManager) {
175
169
  * Run Projen synthesis.
176
170
  */
177
171
  function runProjen(projectDir) {
178
- (0, child_process_1.execSync)('npx tsx .projenrc.ts', {
172
+ execSync('npx tsx .projenrc.ts', {
179
173
  cwd: projectDir,
180
174
  stdio: 'inherit',
181
175
  });
@@ -185,7 +179,7 @@ function runProjen(projectDir) {
185
179
  */
186
180
  function printNextSteps(name, options) {
187
181
  console.log('');
188
- logger_js_1.logger.info('Next steps:');
182
+ logger.info('Next steps:');
189
183
  console.log(` cd ${name}`);
190
184
  if (!options.install) {
191
185
  const pm = options.packageManager;
@@ -196,4 +190,6 @@ function printNextSteps(name, options) {
196
190
  console.log(' fnd add frontend --name=frontend --api=api');
197
191
  console.log('');
198
192
  }
193
+ // Export for testing
194
+ export { PROJECT_NAME_PATTERN };
199
195
  //# sourceMappingURL=new.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"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"}
@@ -30,10 +30,17 @@ export declare function synthCommand(): Command;
30
30
  * // Run synthesis with default options
31
31
  * await runSynth({});
32
32
  *
33
- * // Run synthesis with watch mode (when implemented)
33
+ * // Run synthesis with watch mode
34
34
  * await runSynth({ watch: true });
35
35
  * ```
36
36
  */
37
37
  export declare function runSynth(options: SynthCommandOptions): Promise<void>;
38
+ /**
39
+ * Runs the Projen synthesis command.
40
+ *
41
+ * @param projectRoot - Root directory of the project
42
+ * @returns true if successful, false otherwise
43
+ */
44
+ export declare function runProjenSynth(projectRoot: string): boolean;
38
45
  export {};
39
46
  //# sourceMappingURL=synth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"synth.d.ts","sourceRoot":"","sources":["../../src/commands/synth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC;;GAEG;AACH,UAAU,mBAAmB;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAOtC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B1E"}
1
+ {"version":3,"file":"synth.d.ts","sourceRoot":"","sources":["../../src/commands/synth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC;;GAEG;AACH,UAAU,mBAAmB;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAOtC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB1E;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAa3D"}