@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.
- package/LICENSE.txt +82 -0
- package/README.md +1464 -0
- package/dist/commands/apply-patches.d.ts +23 -0
- package/dist/commands/apply-patches.d.ts.map +1 -0
- package/dist/commands/apply-patches.js +650 -0
- package/dist/commands/apply-patches.js.map +1 -0
- package/dist/commands/new-app-feature.d.ts +7 -0
- package/dist/commands/new-app-feature.d.ts.map +1 -0
- package/dist/commands/new-app-feature.js +208 -0
- package/dist/commands/new-app-feature.js.map +1 -0
- package/dist/commands/new-app.d.ts +6 -0
- package/dist/commands/new-app.d.ts.map +1 -0
- package/dist/commands/new-app.js +7 -0
- package/dist/commands/new-app.js.map +1 -0
- package/dist/commands/watch-patches.d.ts +4 -0
- package/dist/commands/watch-patches.d.ts.map +1 -0
- package/dist/commands/watch-patches.js +128 -0
- package/dist/commands/watch-patches.js.map +1 -0
- package/dist/core/dependency-resolver.d.ts +40 -0
- package/dist/core/dependency-resolver.d.ts.map +1 -0
- package/dist/core/dependency-resolver.js +126 -0
- package/dist/core/dependency-resolver.js.map +1 -0
- package/dist/core/file-operations.d.ts +55 -0
- package/dist/core/file-operations.d.ts.map +1 -0
- package/dist/core/file-operations.js +350 -0
- package/dist/core/file-operations.js.map +1 -0
- package/dist/core/package-json-merger.d.ts +31 -0
- package/dist/core/package-json-merger.d.ts.map +1 -0
- package/dist/core/package-json-merger.js +149 -0
- package/dist/core/package-json-merger.js.map +1 -0
- package/dist/core/patch-loader.d.ts +18 -0
- package/dist/core/patch-loader.d.ts.map +1 -0
- package/dist/core/patch-loader.js +115 -0
- package/dist/core/patch-loader.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +95 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +28 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/debounce.d.ts +9 -0
- package/dist/utils/debounce.d.ts.map +1 -0
- package/dist/utils/debounce.js +20 -0
- package/dist/utils/debounce.js.map +1 -0
- package/dist/utils/import-merger.d.ts +17 -0
- package/dist/utils/import-merger.d.ts.map +1 -0
- package/dist/utils/import-merger.js +244 -0
- package/dist/utils/import-merger.js.map +1 -0
- package/dist/utils/logger.d.ts +6 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +22 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/path-mappings.d.ts +94 -0
- package/dist/utils/path-mappings.d.ts.map +1 -0
- package/dist/utils/path-mappings.js +139 -0
- package/dist/utils/path-mappings.js.map +1 -0
- package/dist/utils/paths.d.ts +61 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +178 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/route-merger.d.ts +107 -0
- package/dist/utils/route-merger.d.ts.map +1 -0
- package/dist/utils/route-merger.js +358 -0
- package/dist/utils/route-merger.js.map +1 -0
- package/dist/utils/validation.d.ts +35 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +137 -0
- package/dist/utils/validation.js.map +1 -0
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"new-app.d.ts","sourceRoot":"","sources":["../../src/commands/new-app.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"new-app.js","sourceRoot":"","sources":["../../src/commands/new-app.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}
|
|
@@ -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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"}
|