@salesforce/webapp-template-cli-experimental 1.3.3

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 (71) hide show
  1. package/LICENSE.txt +82 -0
  2. package/README.md +1464 -0
  3. package/dist/commands/apply-patches.d.ts +23 -0
  4. package/dist/commands/apply-patches.d.ts.map +1 -0
  5. package/dist/commands/apply-patches.js +650 -0
  6. package/dist/commands/apply-patches.js.map +1 -0
  7. package/dist/commands/new-app-feature.d.ts +7 -0
  8. package/dist/commands/new-app-feature.d.ts.map +1 -0
  9. package/dist/commands/new-app-feature.js +208 -0
  10. package/dist/commands/new-app-feature.js.map +1 -0
  11. package/dist/commands/new-app.d.ts +6 -0
  12. package/dist/commands/new-app.d.ts.map +1 -0
  13. package/dist/commands/new-app.js +7 -0
  14. package/dist/commands/new-app.js.map +1 -0
  15. package/dist/commands/watch-patches.d.ts +4 -0
  16. package/dist/commands/watch-patches.d.ts.map +1 -0
  17. package/dist/commands/watch-patches.js +128 -0
  18. package/dist/commands/watch-patches.js.map +1 -0
  19. package/dist/core/dependency-resolver.d.ts +40 -0
  20. package/dist/core/dependency-resolver.d.ts.map +1 -0
  21. package/dist/core/dependency-resolver.js +126 -0
  22. package/dist/core/dependency-resolver.js.map +1 -0
  23. package/dist/core/file-operations.d.ts +55 -0
  24. package/dist/core/file-operations.d.ts.map +1 -0
  25. package/dist/core/file-operations.js +350 -0
  26. package/dist/core/file-operations.js.map +1 -0
  27. package/dist/core/package-json-merger.d.ts +31 -0
  28. package/dist/core/package-json-merger.d.ts.map +1 -0
  29. package/dist/core/package-json-merger.js +149 -0
  30. package/dist/core/package-json-merger.js.map +1 -0
  31. package/dist/core/patch-loader.d.ts +18 -0
  32. package/dist/core/patch-loader.d.ts.map +1 -0
  33. package/dist/core/patch-loader.js +115 -0
  34. package/dist/core/patch-loader.js.map +1 -0
  35. package/dist/index.d.ts +3 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +95 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/types.d.ts +28 -0
  40. package/dist/types.d.ts.map +1 -0
  41. package/dist/types.js +2 -0
  42. package/dist/types.js.map +1 -0
  43. package/dist/utils/debounce.d.ts +9 -0
  44. package/dist/utils/debounce.d.ts.map +1 -0
  45. package/dist/utils/debounce.js +20 -0
  46. package/dist/utils/debounce.js.map +1 -0
  47. package/dist/utils/import-merger.d.ts +17 -0
  48. package/dist/utils/import-merger.d.ts.map +1 -0
  49. package/dist/utils/import-merger.js +244 -0
  50. package/dist/utils/import-merger.js.map +1 -0
  51. package/dist/utils/logger.d.ts +6 -0
  52. package/dist/utils/logger.d.ts.map +1 -0
  53. package/dist/utils/logger.js +22 -0
  54. package/dist/utils/logger.js.map +1 -0
  55. package/dist/utils/path-mappings.d.ts +94 -0
  56. package/dist/utils/path-mappings.d.ts.map +1 -0
  57. package/dist/utils/path-mappings.js +139 -0
  58. package/dist/utils/path-mappings.js.map +1 -0
  59. package/dist/utils/paths.d.ts +61 -0
  60. package/dist/utils/paths.d.ts.map +1 -0
  61. package/dist/utils/paths.js +178 -0
  62. package/dist/utils/paths.js.map +1 -0
  63. package/dist/utils/route-merger.d.ts +107 -0
  64. package/dist/utils/route-merger.d.ts.map +1 -0
  65. package/dist/utils/route-merger.js +358 -0
  66. package/dist/utils/route-merger.js.map +1 -0
  67. package/dist/utils/validation.d.ts +35 -0
  68. package/dist/utils/validation.d.ts.map +1 -0
  69. package/dist/utils/validation.js +137 -0
  70. package/dist/utils/validation.js.map +1 -0
  71. package/package.json +44 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-patches.js","sourceRoot":"","sources":["../../src/commands/apply-patches.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Create a new app or feature from the base-reference-app or base-feature template
3
+ *
4
+ * @param appOrFeatureName - Name of the app or feature (without "app-" or "feature-" prefix)
5
+ */
6
+ export declare function newAppOrFeatureCommand(appOrFeatureName: string, appOrFeatureType: "app" | "feature"): Promise<void>;
7
+ //# sourceMappingURL=new-app-feature.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new-app-feature.d.ts","sourceRoot":"","sources":["../../src/commands/new-app-feature.ts"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC3C,gBAAgB,EAAE,MAAM,EACxB,gBAAgB,EAAE,KAAK,GAAG,SAAS,GACjC,OAAO,CAAC,IAAI,CAAC,CAiNf"}
@@ -0,0 +1,208 @@
1
+ /**
2
+ * Copyright (c) 2026, Salesforce, Inc.,
3
+ * All rights reserved.
4
+ * For full license text, see the LICENSE.txt file
5
+ */
6
+ import { cpSync, existsSync, mkdirSync, readFileSync, rmSync, statSync, writeFileSync } from "fs";
7
+ import { join, dirname } from "path";
8
+ import * as logger from "../utils/logger.js";
9
+ import { getMonorepoRoot } from "../utils/paths.js";
10
+ import { validateAppOrFeatureName, ValidationError } from "../utils/validation.js";
11
+ /**
12
+ * Create a new app or feature from the base-reference-app or base-feature template
13
+ *
14
+ * @param appOrFeatureName - Name of the app or feature (without "app-" or "feature-" prefix)
15
+ */
16
+ export async function newAppOrFeatureCommand(appOrFeatureName, appOrFeatureType) {
17
+ let targetDir;
18
+ try {
19
+ logger.heading(`Creating new ${appOrFeatureType}: ${appOrFeatureName}`);
20
+ // Step 1: Validate feature name format
21
+ logger.info(`Validating ${appOrFeatureType} name...`);
22
+ validateAppOrFeatureName(appOrFeatureName);
23
+ // Step 2: Generate full feature name with prefix
24
+ const fullFeatureName = appOrFeatureName.startsWith(`${appOrFeatureType}-`)
25
+ ? appOrFeatureName
26
+ : `${appOrFeatureType}-${appOrFeatureName}`;
27
+ const rawName = fullFeatureName.replace(/^${appOrFeatureType}-/, "");
28
+ logger.success(`${appOrFeatureType} name validated: ${fullFeatureName}`);
29
+ // Step 3: Check if feature already exists
30
+ logger.info(`Checking if ${appOrFeatureType} already exists...`);
31
+ if (checkAppFeatureExists(fullFeatureName, appOrFeatureType)) {
32
+ const dir = appOrFeatureType === "app" ? "app" : "feature";
33
+ throw new ValidationError(`${appOrFeatureType} '${fullFeatureName}' already exists at packages/template/${dir}/${fullFeatureName}.\nPlease choose a different name or remove the existing ${appOrFeatureType}.`);
34
+ }
35
+ logger.success("Feature name available");
36
+ // Step 4: Validate base feature template
37
+ logger.info("Validating base feature template...");
38
+ const baseAppOrFeaturePath = validateBaseAppOrFeature(appOrFeatureType);
39
+ logger.success("Base feature template validated");
40
+ // Step 5: Create target directory and copy
41
+ const monorepoRoot = getMonorepoRoot();
42
+ const targetDirPrefix = appOrFeatureType === "app" ? "packages/template/app" : "packages/template/feature";
43
+ targetDir = join(monorepoRoot, targetDirPrefix, fullFeatureName);
44
+ const dir = appOrFeatureType === "app" ? "app" : "feature";
45
+ logger.info(`Copying base feature template to packages/template/${dir}/${fullFeatureName}...`);
46
+ cpSync(baseAppOrFeaturePath, targetDir, { recursive: true });
47
+ logger.success("Template copied");
48
+ // Step 6: Move to SFDX structure
49
+ logger.info("Moving to SFDX structure...");
50
+ const templateName = appOrFeatureType === "app" ? "reference-app" : "feature";
51
+ // Check for old structure first (for backward compatibility)
52
+ const oldWebAppPath = join(targetDir, `template/webapplications/base-${templateName}`);
53
+ const oldTemplateWebAppPath = join(targetDir, `template/webApp`);
54
+ // New SFDX structure path (use fullFeatureName so package.json script paths match)
55
+ const newSfdxPath = join(targetDir, "src", "force-app", "main", "default", "webapplications", fullFeatureName);
56
+ if (existsSync(oldWebAppPath)) {
57
+ // Old structure: template/webapplications/base-{name}
58
+ mkdirSync(dirname(newSfdxPath), { recursive: true });
59
+ cpSync(oldWebAppPath, newSfdxPath, { recursive: true });
60
+ rmSync(join(targetDir, "template"), { recursive: true, force: true });
61
+ logger.success(`Moved to SFDX structure: ${newSfdxPath}`);
62
+ }
63
+ else if (existsSync(oldTemplateWebAppPath)) {
64
+ // Old structure: template/webApp
65
+ mkdirSync(dirname(newSfdxPath), { recursive: true });
66
+ cpSync(oldTemplateWebAppPath, newSfdxPath, { recursive: true });
67
+ rmSync(join(targetDir, "template"), { recursive: true, force: true });
68
+ logger.success(`Moved to SFDX structure: ${newSfdxPath}`);
69
+ }
70
+ else {
71
+ // Already in SFDX structure - check for template name or base-{name}
72
+ const templateSfdxName = `template-${templateName}`;
73
+ const baseSfdxName = `base-${templateName}`;
74
+ const existingSfdxPathTemplate = join(targetDir, "src", "force-app", "main", "default", "webapplications", templateSfdxName);
75
+ const existingSfdxPathBase = join(targetDir, "src", "force-app", "main", "default", "webapplications", baseSfdxName);
76
+ const newSfdxPathFromBase = join(targetDir, "src", "force-app", "main", "default", "webapplications", fullFeatureName);
77
+ if (existsSync(existingSfdxPathTemplate)) {
78
+ mkdirSync(dirname(newSfdxPathFromBase), { recursive: true });
79
+ cpSync(existingSfdxPathTemplate, newSfdxPathFromBase, { recursive: true });
80
+ rmSync(existingSfdxPathTemplate, { recursive: true, force: true });
81
+ logger.success(`Renamed SFDX structure: ${templateSfdxName} → ${fullFeatureName}`);
82
+ }
83
+ else if (existsSync(existingSfdxPathBase)) {
84
+ mkdirSync(dirname(newSfdxPathFromBase), { recursive: true });
85
+ cpSync(existingSfdxPathBase, newSfdxPathFromBase, { recursive: true });
86
+ rmSync(existingSfdxPathBase, { recursive: true, force: true });
87
+ logger.success(`Renamed SFDX structure: ${baseSfdxName} → ${fullFeatureName}`);
88
+ }
89
+ }
90
+ // Step 7: Update package.json
91
+ logger.info("Updating package.json...");
92
+ const packageJsonPath = join(targetDir, "package.json");
93
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
94
+ packageJson.name = fullFeatureName;
95
+ // Update scripts to reference new app/feature name
96
+ // Replace both "base-{templateName}" and "template-{templateName}" (e.g. base-reference-app, template-reference-app)
97
+ const basePattern = new RegExp(`base-${templateName}`, "g");
98
+ const templatePattern = new RegExp(`template-${templateName}`, "g");
99
+ const commandsToUpdate = ["dev", "build", "watch"];
100
+ commandsToUpdate.forEach((command) => {
101
+ if (packageJson.scripts[command]) {
102
+ packageJson.scripts[command] = packageJson.scripts[command]
103
+ .replace(basePattern, fullFeatureName)
104
+ .replace(templatePattern, fullFeatureName);
105
+ }
106
+ });
107
+ writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + "\n");
108
+ logger.success("package.json updated");
109
+ // Step 8: Update tsconfig.app.json
110
+ logger.info("Updating tsconfig.app.json...");
111
+ const tsconfigAppPath = join(targetDir, "tsconfig.app.json");
112
+ const tsconfigContent = readFileSync(tsconfigAppPath, "utf-8");
113
+ // Replace the include path (handles both single and array format)
114
+ // tsconfigContent = tsconfigContent.replace(
115
+ // /"include":\s*\[.*?\]/s,
116
+ // `"include": ["template/webapplications/${rawName}"]`
117
+ // );
118
+ writeFileSync(tsconfigAppPath, tsconfigContent);
119
+ logger.success("tsconfig.app.json updated");
120
+ // Step 9: Success message
121
+ logger.heading("\n✓ Success");
122
+ logger.success(`Created feature: packages/template/${dir}/${fullFeatureName}`);
123
+ logger.info("\nNext steps:");
124
+ logger.info(` 1. cd packages/template/${dir}/${fullFeatureName}`);
125
+ logger.info(` 2. Customize template files in src/force-app/main/default/webapplications/${rawName}/ directory`);
126
+ logger.info(` 3. Update feature.ts with ${appOrFeatureType} configuration`);
127
+ logger.info(` 4. Test with: npm run apply-patches -- packages/template/${dir}/${fullFeatureName} packages/template/base-app/base-react-app test-app`);
128
+ }
129
+ catch (err) {
130
+ // Cleanup on failure
131
+ if (targetDir && existsSync(targetDir)) {
132
+ logger.info(`\nCleaning up partially created ${appOrFeatureType}...`);
133
+ rmSync(targetDir, { recursive: true, force: true });
134
+ logger.info("Cleanup complete");
135
+ }
136
+ // Handle different error types
137
+ if (err instanceof Error) {
138
+ // Handle permission errors
139
+ if (err.message.includes("EACCES")) {
140
+ logger.error(`\n✗ Permission denied. You do not have permission to create ${appOrFeatureType}s in the packages directory.`);
141
+ logger.info("Try running with appropriate permissions or check directory ownership.");
142
+ throw new ValidationError("Permission denied");
143
+ }
144
+ // Handle disk space errors
145
+ if (err.message.includes("ENOSPC")) {
146
+ logger.error(`\n✗ Not enough disk space to create ${appOrFeatureType}.`);
147
+ logger.info("Free up some disk space and try again.");
148
+ throw new ValidationError("Insufficient disk space");
149
+ }
150
+ }
151
+ // Log error if not already logged
152
+ const errorMessage = err instanceof Error ? err.message : String(err);
153
+ const skipLogging = err instanceof ValidationError;
154
+ if (!skipLogging) {
155
+ logger.error(`\n✗ Failed to create ${appOrFeatureType}: ${errorMessage}`);
156
+ }
157
+ else {
158
+ logger.error(`\n✗ ${errorMessage}`);
159
+ }
160
+ throw err;
161
+ }
162
+ }
163
+ /**
164
+ * Check if a feature already exists in the packages directory
165
+ */
166
+ function checkAppFeatureExists(appOrFeatureName, appOrFeatureType) {
167
+ const monorepoRoot = getMonorepoRoot();
168
+ const dir = appOrFeatureType === "app" ? "app" : "feature";
169
+ const appOrFeaturePath = join(monorepoRoot, "packages", "template", dir, appOrFeatureName);
170
+ return existsSync(appOrFeaturePath);
171
+ }
172
+ /**
173
+ * Validate that the base-feature and base-reference-app template exists and is valid
174
+ * Returns the absolute path to the base-feature or base-reference-app directory
175
+ */
176
+ function validateBaseAppOrFeature(appOrFeatureType) {
177
+ const monorepoRoot = getMonorepoRoot();
178
+ const templateName = appOrFeatureType === "app" ? "reference-app" : "feature";
179
+ const baseAppOrFeaturePath = join(monorepoRoot, `packages/template/template/template-${templateName}`);
180
+ if (!existsSync(baseAppOrFeaturePath)) {
181
+ throw new ValidationError(`Base ${templateName} template not found at packages/template/template/template-${templateName}.\nCannot create new ${appOrFeatureType}.`);
182
+ }
183
+ if (!statSync(baseAppOrFeaturePath).isDirectory()) {
184
+ throw new ValidationError(`Base ${templateName} template at packages/template/template/template-${templateName} is not a directory.`);
185
+ }
186
+ // Check critical files exist
187
+ const requiredFiles = [
188
+ "package.json",
189
+ "feature.ts",
190
+ "tsconfig.app.json",
191
+ "tsconfig.json",
192
+ "tsconfig.node.json",
193
+ ];
194
+ // Check for either old template structure or new SFDX structure
195
+ const hasOldTemplate = existsSync(join(baseAppOrFeaturePath, "template"));
196
+ const hasNewSfdx = existsSync(join(baseAppOrFeaturePath, "src", "force-app"));
197
+ if (!hasOldTemplate && !hasNewSfdx) {
198
+ throw new ValidationError(`Base ${appOrFeatureType} template is incomplete.\nMissing required directory: template/ or src/force-app/`);
199
+ }
200
+ for (const file of requiredFiles) {
201
+ const filePath = join(baseAppOrFeaturePath, file);
202
+ if (!existsSync(filePath)) {
203
+ throw new ValidationError(`Base ${appOrFeatureType} template is incomplete.\nMissing required file: ${file}`);
204
+ }
205
+ }
206
+ return baseAppOrFeaturePath;
207
+ }
208
+ //# sourceMappingURL=new-app-feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new-app-feature.js","sourceRoot":"","sources":["../../src/commands/new-app-feature.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Copyright (c) 2026, Salesforce, Inc.,
3
+ * All rights reserved.
4
+ * For full license text, see the LICENSE.txt file
5
+ */
6
+ //# sourceMappingURL=new-app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new-app.d.ts","sourceRoot":"","sources":["../../src/commands/new-app.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright (c) 2026, Salesforce, Inc.,
4
+ * All rights reserved.
5
+ * For full license text, see the LICENSE.txt file
6
+ */
7
+ //# sourceMappingURL=new-app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new-app.js","sourceRoot":"","sources":["../../src/commands/new-app.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}
@@ -0,0 +1,4 @@
1
+ export declare function watchPatchesCommand(featurePath: string, appPath: string, targetDirName: string): Promise<{
2
+ shutdown: () => Promise<void>;
3
+ }>;
4
+ //# sourceMappingURL=watch-patches.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch-patches.d.ts","sourceRoot":"","sources":["../../src/commands/watch-patches.ts"],"names":[],"mappings":"AAYA,wBAAsB,mBAAmB,CACxC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CA8H5C"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * Copyright (c) 2026, Salesforce, Inc.,
3
+ * All rights reserved.
4
+ * For full license text, see the LICENSE.txt file
5
+ */
6
+ import { join, relative, normalize } from "path";
7
+ import { watch } from "turbowatch";
8
+ import { applyPatchesCommand } from "./apply-patches.js";
9
+ import { loadFeature } from "../core/patch-loader.js";
10
+ import * as logger from "../utils/logger.js";
11
+ import { validateAndResolveFeaturePath, validateAndResolveAppPath } from "../utils/validation.js";
12
+ export async function watchPatchesCommand(featurePath, appPath, targetDirName) {
13
+ try {
14
+ logger.heading(`Starting watch mode for ${featurePath}...`);
15
+ // Step 1: Validate inputs
16
+ logger.info("Validating feature and app path...");
17
+ const featureDir = validateAndResolveFeaturePath(featurePath);
18
+ validateAndResolveAppPath(appPath);
19
+ logger.success("Validation passed");
20
+ // Step 2: Apply feature initially (with dependencies)
21
+ // Always reset to ensure clean state (preserves node_modules)
22
+ logger.info("Applying feature initially...");
23
+ await applyPatchesCommand(featurePath, appPath, {
24
+ targetDirName: targetDirName,
25
+ skipDependencyChanges: false,
26
+ reset: true,
27
+ });
28
+ logger.success("Initial feature applied successfully\n");
29
+ // Step 3: Load feature config to get template directory
30
+ const { templateDir } = await loadFeature(featureDir);
31
+ const watchPath = join(featureDir, templateDir);
32
+ logger.info(`👁 Watching ${watchPath} for changes...`);
33
+ logger.info(" Press Ctrl+C to stop watching\n");
34
+ // Create feature application function
35
+ const applyPatches = async (changedPath) => {
36
+ try {
37
+ // Use path.relative for robust path calculation that handles different separators
38
+ // Normalize paths to handle different formats (absolute vs relative, different separators)
39
+ const normalizedWatchPath = normalize(watchPath);
40
+ const normalizedChangedPath = normalize(changedPath);
41
+ const relativePath = relative(normalizedWatchPath, normalizedChangedPath);
42
+ logger.info(`📝 Change detected in ${relativePath}`);
43
+ logger.info("⟳ Re-applying feature...\n");
44
+ const startTime = Date.now();
45
+ // Reset on file changes to remove stale files (preserves node_modules)
46
+ await applyPatchesCommand(featurePath, appPath, {
47
+ targetDirName: targetDirName,
48
+ skipDependencyChanges: true,
49
+ reset: true,
50
+ });
51
+ const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
52
+ logger.success(`\n✓ Feature re-applied successfully (${elapsed}s)`);
53
+ logger.info("👁 Watching for changes...\n");
54
+ }
55
+ catch (err) {
56
+ const errorMessage = err instanceof Error ? err.message : String(err);
57
+ // Only log if not already handled
58
+ const skipLogging = [
59
+ "Path conflict - cannot proceed",
60
+ "Delete validation failed - cannot proceed",
61
+ "Inherit validation failed - cannot proceed",
62
+ "Prepend validation failed - cannot proceed",
63
+ "Append validation failed - cannot proceed",
64
+ "Route deletion failed - cannot proceed",
65
+ ].includes(errorMessage);
66
+ if (!skipLogging) {
67
+ logger.error(`\n✗ Failed to apply feature: ${errorMessage}`);
68
+ }
69
+ logger.info(" Fix the issue and save again to retry");
70
+ logger.info("👁 Watching for changes...\n");
71
+ }
72
+ };
73
+ // Set up turbowatch watcher
74
+ const controller = await watch({
75
+ project: watchPath,
76
+ debounce: {
77
+ wait: 500,
78
+ },
79
+ triggers: [
80
+ {
81
+ expression: [
82
+ "anyof",
83
+ ["match", "*.tsx", "basename"],
84
+ ["match", "*.ts", "basename"],
85
+ ["match", "*.css", "basename"],
86
+ ],
87
+ name: "source-files",
88
+ onChange: async ({ files }) => {
89
+ //Reset will handle all changes (additions, modifications, deletions)
90
+ // We just need to trigger a single re-apply when any change is detected
91
+ for (const file of files) {
92
+ await applyPatches(file.name);
93
+ break; // Only apply once per batch of changes
94
+ }
95
+ },
96
+ },
97
+ ],
98
+ });
99
+ // Handle graceful shutdown
100
+ const cleanup = async () => {
101
+ logger.info("\n🛑 Stopping watcher...");
102
+ await controller.shutdown();
103
+ logger.success("✓ Watch mode stopped");
104
+ process.exit(0);
105
+ };
106
+ process.on("SIGINT", cleanup);
107
+ process.on("SIGTERM", cleanup);
108
+ // Return controller for tests to use
109
+ return controller;
110
+ }
111
+ catch (err) {
112
+ // Only log error if it's not already been logged
113
+ const errorMessage = err instanceof Error ? err.message : String(err);
114
+ const skipLogging = [
115
+ "Path conflict - cannot proceed",
116
+ "Delete validation failed - cannot proceed",
117
+ "Inherit validation failed - cannot proceed",
118
+ "Prepend validation failed - cannot proceed",
119
+ "Append validation failed - cannot proceed",
120
+ "Route deletion failed - cannot proceed",
121
+ ].includes(errorMessage);
122
+ if (!skipLogging) {
123
+ logger.error(`\nWatch mode failed: ${errorMessage}`);
124
+ }
125
+ throw err;
126
+ }
127
+ }
128
+ //# sourceMappingURL=watch-patches.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch-patches.js","sourceRoot":"","sources":["../../src/commands/watch-patches.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { type FeatureConfig } from "./patch-loader.js";
2
+ /**
3
+ * Represents a resolved feature with its configuration
4
+ */
5
+ export interface ResolvedFeature {
6
+ featurePath: string;
7
+ featureDir: string;
8
+ config: FeatureConfig;
9
+ }
10
+ /**
11
+ * Result of dependency resolution
12
+ */
13
+ export interface DependencyResolutionResult {
14
+ orderedFeatures: ResolvedFeature[];
15
+ dependencyGraph: Map<string, string[]>;
16
+ }
17
+ /**
18
+ * Base error for dependency resolution failures
19
+ */
20
+ export declare class DependencyResolutionError extends Error {
21
+ constructor(message: string);
22
+ }
23
+ /**
24
+ * Error thrown when a circular dependency is detected
25
+ */
26
+ export declare class CircularDependencyError extends DependencyResolutionError {
27
+ cycle: string[];
28
+ constructor(cycle: string[]);
29
+ }
30
+ /**
31
+ * Resolve all dependencies for a feature recursively
32
+ * Returns features in dependency order (dependencies first, main feature last)
33
+ *
34
+ * @param featurePath - Path to the main feature
35
+ * @returns Resolution result with ordered features and dependency graph
36
+ * @throws CircularDependencyError if circular dependencies are detected
37
+ * @throws DependencyResolutionError if a dependency cannot be loaded
38
+ */
39
+ export declare function resolveDependencies(featurePath: string): Promise<DependencyResolutionResult>;
40
+ //# sourceMappingURL=dependency-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-resolver.d.ts","sourceRoot":"","sources":["../../src/core/dependency-resolver.ts"],"names":[],"mappings":"AAMA,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIpE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,aAAa,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IAC1C,eAAe,EAAE,eAAe,EAAE,CAAC;IACnC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,KAAK;gBACvC,OAAO,EAAE,MAAM;CAI3B;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,yBAAyB;IAClD,KAAK,EAAE,MAAM,EAAE;gBAAf,KAAK,EAAE,MAAM,EAAE;CAOlC;AAyFD;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACxC,WAAW,EAAE,MAAM,GACjB,OAAO,CAAC,0BAA0B,CAAC,CA+BrC"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Copyright (c) 2026, Salesforce, Inc.,
3
+ * All rights reserved.
4
+ * For full license text, see the LICENSE.txt file
5
+ */
6
+ import { join, isAbsolute } from "path";
7
+ import { loadFeature } from "./patch-loader.js";
8
+ import { getMonorepoRoot } from "../utils/paths.js";
9
+ import { validateAndResolveFeaturePath } from "../utils/validation.js";
10
+ /**
11
+ * Base error for dependency resolution failures
12
+ */
13
+ export class DependencyResolutionError extends Error {
14
+ constructor(message) {
15
+ super(message);
16
+ this.name = "DependencyResolutionError";
17
+ }
18
+ }
19
+ /**
20
+ * Error thrown when a circular dependency is detected
21
+ */
22
+ export class CircularDependencyError extends DependencyResolutionError {
23
+ cycle;
24
+ constructor(cycle) {
25
+ const cycleStr = cycle.join(" → ");
26
+ super(`Circular dependency detected:\n ${cycleStr}\n\nPlease remove one of these dependencies to break the cycle.`);
27
+ this.cycle = cycle;
28
+ this.name = "CircularDependencyError";
29
+ }
30
+ }
31
+ /**
32
+ * Normalize a feature path to an absolute path for consistent comparison
33
+ *
34
+ * @param featurePath - Relative or absolute feature path
35
+ * @returns Absolute path to the feature
36
+ */
37
+ function normalizePath(featurePath) {
38
+ // If already absolute, return as-is
39
+ if (isAbsolute(featurePath)) {
40
+ return featurePath;
41
+ }
42
+ // If relative, resolve from monorepo root
43
+ return join(getMonorepoRoot(), featurePath);
44
+ }
45
+ /**
46
+ * Recursively resolve dependencies using depth-first search with post-order traversal
47
+ *
48
+ * @param featurePath - Path to the feature to resolve
49
+ * @param visited - Set of features currently being processed (for cycle detection)
50
+ * @param resolved - Set of features that have been fully processed
51
+ * @param result - Accumulator for ordered features
52
+ * @param dependencyGraph - Map of feature paths to their dependencies
53
+ * @param dependencyChain - Current chain of dependencies (for error messages)
54
+ */
55
+ async function resolveDependenciesRecursive(featurePath, visited, resolved, result, dependencyGraph, dependencyChain) {
56
+ const normalizedPath = normalizePath(featurePath);
57
+ // Skip if already resolved (handles diamond dependencies)
58
+ if (resolved.has(normalizedPath)) {
59
+ return;
60
+ }
61
+ // Circular dependency detection
62
+ if (visited.has(normalizedPath)) {
63
+ const cycle = [...dependencyChain, featurePath];
64
+ throw new CircularDependencyError(cycle);
65
+ }
66
+ // Mark as visiting
67
+ visited.add(normalizedPath);
68
+ dependencyChain.push(featurePath);
69
+ try {
70
+ // Validate and load feature
71
+ const featureDir = validateAndResolveFeaturePath(featurePath);
72
+ const config = await loadFeature(featureDir);
73
+ // Store in dependency graph for debugging
74
+ dependencyGraph.set(normalizedPath, config.dependencies);
75
+ // Recursively resolve dependencies (depth-first)
76
+ for (const depPath of config.dependencies) {
77
+ await resolveDependenciesRecursive(depPath, visited, resolved, result, dependencyGraph, [...dependencyChain]);
78
+ }
79
+ // Post-order: add after all dependencies are resolved
80
+ result.push({
81
+ featurePath,
82
+ featureDir,
83
+ config,
84
+ });
85
+ // Mark as resolved
86
+ resolved.add(normalizedPath);
87
+ }
88
+ finally {
89
+ // Clean up visiting state
90
+ visited.delete(normalizedPath);
91
+ dependencyChain.pop();
92
+ }
93
+ }
94
+ /**
95
+ * Resolve all dependencies for a feature recursively
96
+ * Returns features in dependency order (dependencies first, main feature last)
97
+ *
98
+ * @param featurePath - Path to the main feature
99
+ * @returns Resolution result with ordered features and dependency graph
100
+ * @throws CircularDependencyError if circular dependencies are detected
101
+ * @throws DependencyResolutionError if a dependency cannot be loaded
102
+ */
103
+ export async function resolveDependencies(featurePath) {
104
+ const visited = new Set();
105
+ const resolved = new Set();
106
+ const result = [];
107
+ const dependencyGraph = new Map();
108
+ const dependencyChain = [];
109
+ try {
110
+ await resolveDependenciesRecursive(featurePath, visited, resolved, result, dependencyGraph, dependencyChain);
111
+ return {
112
+ orderedFeatures: result,
113
+ dependencyGraph,
114
+ };
115
+ }
116
+ catch (err) {
117
+ // Re-throw our custom errors as-is
118
+ if (err instanceof DependencyResolutionError) {
119
+ throw err;
120
+ }
121
+ // Wrap other errors
122
+ const message = err instanceof Error ? err.message : String(err);
123
+ throw new DependencyResolutionError(`Failed to resolve dependencies: ${message}`);
124
+ }
125
+ }
126
+ //# sourceMappingURL=dependency-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-resolver.js","sourceRoot":"","sources":["../../src/core/dependency-resolver.ts"],"names":[],"mappings":"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"}