lwc-convert 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +719 -0
- package/dist/cli/commands/aura.d.ts +6 -0
- package/dist/cli/commands/aura.d.ts.map +1 -0
- package/dist/cli/commands/aura.js +225 -0
- package/dist/cli/commands/aura.js.map +1 -0
- package/dist/cli/commands/vf.d.ts +6 -0
- package/dist/cli/commands/vf.d.ts.map +1 -0
- package/dist/cli/commands/vf.js +218 -0
- package/dist/cli/commands/vf.js.map +1 -0
- package/dist/cli/interactive.d.ts +20 -0
- package/dist/cli/interactive.d.ts.map +1 -0
- package/dist/cli/interactive.js +577 -0
- package/dist/cli/interactive.js.map +1 -0
- package/dist/cli/options.d.ts +21 -0
- package/dist/cli/options.d.ts.map +1 -0
- package/dist/cli/options.js +24 -0
- package/dist/cli/options.js.map +1 -0
- package/dist/generators/full-conversion.d.ts +41 -0
- package/dist/generators/full-conversion.d.ts.map +1 -0
- package/dist/generators/full-conversion.js +538 -0
- package/dist/generators/full-conversion.js.map +1 -0
- package/dist/generators/scaffolding.d.ts +40 -0
- package/dist/generators/scaffolding.d.ts.map +1 -0
- package/dist/generators/scaffolding.js +716 -0
- package/dist/generators/scaffolding.js.map +1 -0
- package/dist/generators/test-comparison.d.ts +47 -0
- package/dist/generators/test-comparison.d.ts.map +1 -0
- package/dist/generators/test-comparison.js +855 -0
- package/dist/generators/test-comparison.js.map +1 -0
- package/dist/generators/test-generator.d.ts +27 -0
- package/dist/generators/test-generator.d.ts.map +1 -0
- package/dist/generators/test-generator.js +385 -0
- package/dist/generators/test-generator.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +226 -0
- package/dist/index.js.map +1 -0
- package/dist/mappings/aura-to-lwc.json +321 -0
- package/dist/mappings/vf-to-lwc.json +354 -0
- package/dist/parsers/aura/controller-parser.d.ts +36 -0
- package/dist/parsers/aura/controller-parser.d.ts.map +1 -0
- package/dist/parsers/aura/controller-parser.js +269 -0
- package/dist/parsers/aura/controller-parser.js.map +1 -0
- package/dist/parsers/aura/helper-parser.d.ts +21 -0
- package/dist/parsers/aura/helper-parser.d.ts.map +1 -0
- package/dist/parsers/aura/helper-parser.js +173 -0
- package/dist/parsers/aura/helper-parser.js.map +1 -0
- package/dist/parsers/aura/markup-parser.d.ts +59 -0
- package/dist/parsers/aura/markup-parser.d.ts.map +1 -0
- package/dist/parsers/aura/markup-parser.js +279 -0
- package/dist/parsers/aura/markup-parser.js.map +1 -0
- package/dist/parsers/aura/style-parser.d.ts +37 -0
- package/dist/parsers/aura/style-parser.d.ts.map +1 -0
- package/dist/parsers/aura/style-parser.js +151 -0
- package/dist/parsers/aura/style-parser.js.map +1 -0
- package/dist/parsers/vf/apex-parser.d.ts +51 -0
- package/dist/parsers/vf/apex-parser.d.ts.map +1 -0
- package/dist/parsers/vf/apex-parser.js +251 -0
- package/dist/parsers/vf/apex-parser.js.map +1 -0
- package/dist/parsers/vf/page-parser.d.ts +61 -0
- package/dist/parsers/vf/page-parser.d.ts.map +1 -0
- package/dist/parsers/vf/page-parser.js +403 -0
- package/dist/parsers/vf/page-parser.js.map +1 -0
- package/dist/transformers/aura-to-lwc/controller.d.ts +36 -0
- package/dist/transformers/aura-to-lwc/controller.d.ts.map +1 -0
- package/dist/transformers/aura-to-lwc/controller.js +372 -0
- package/dist/transformers/aura-to-lwc/controller.js.map +1 -0
- package/dist/transformers/aura-to-lwc/events.d.ts +47 -0
- package/dist/transformers/aura-to-lwc/events.d.ts.map +1 -0
- package/dist/transformers/aura-to-lwc/events.js +262 -0
- package/dist/transformers/aura-to-lwc/events.js.map +1 -0
- package/dist/transformers/aura-to-lwc/markup.d.ts +51 -0
- package/dist/transformers/aura-to-lwc/markup.d.ts.map +1 -0
- package/dist/transformers/aura-to-lwc/markup.js +465 -0
- package/dist/transformers/aura-to-lwc/markup.js.map +1 -0
- package/dist/transformers/vf-to-lwc/components.d.ts +40 -0
- package/dist/transformers/vf-to-lwc/components.d.ts.map +1 -0
- package/dist/transformers/vf-to-lwc/components.js +374 -0
- package/dist/transformers/vf-to-lwc/components.js.map +1 -0
- package/dist/transformers/vf-to-lwc/data-binding.d.ts +53 -0
- package/dist/transformers/vf-to-lwc/data-binding.d.ts.map +1 -0
- package/dist/transformers/vf-to-lwc/data-binding.js +660 -0
- package/dist/transformers/vf-to-lwc/data-binding.js.map +1 -0
- package/dist/transformers/vf-to-lwc/markup.d.ts +44 -0
- package/dist/transformers/vf-to-lwc/markup.d.ts.map +1 -0
- package/dist/transformers/vf-to-lwc/markup.js +816 -0
- package/dist/transformers/vf-to-lwc/markup.js.map +1 -0
- package/dist/utils/confidence-scorer.d.ts +100 -0
- package/dist/utils/confidence-scorer.d.ts.map +1 -0
- package/dist/utils/confidence-scorer.js +358 -0
- package/dist/utils/confidence-scorer.js.map +1 -0
- package/dist/utils/file-io.d.ts +62 -0
- package/dist/utils/file-io.d.ts.map +1 -0
- package/dist/utils/file-io.js +248 -0
- package/dist/utils/file-io.js.map +1 -0
- package/dist/utils/logger.d.ts +34 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +130 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/open-folder.d.ts +9 -0
- package/dist/utils/open-folder.d.ts.map +1 -0
- package/dist/utils/open-folder.js +76 -0
- package/dist/utils/open-folder.js.map +1 -0
- package/dist/utils/path-resolver.d.ts +29 -0
- package/dist/utils/path-resolver.d.ts.map +1 -0
- package/dist/utils/path-resolver.js +240 -0
- package/dist/utils/path-resolver.js.map +1 -0
- package/dist/utils/session-store.d.ts +158 -0
- package/dist/utils/session-store.d.ts.map +1 -0
- package/dist/utils/session-store.js +518 -0
- package/dist/utils/session-store.js.map +1 -0
- package/dist/utils/vf-controller-resolver.d.ts +36 -0
- package/dist/utils/vf-controller-resolver.d.ts.map +1 -0
- package/dist/utils/vf-controller-resolver.js +162 -0
- package/dist/utils/vf-controller-resolver.js.map +1 -0
- package/package.json +81 -0
|
@@ -0,0 +1,577 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Interactive TUI for lwc-convert CLI
|
|
4
|
+
* Redesigned with @clack/prompts for a modern, polished experience
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
40
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
41
|
+
};
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.runInteractiveTui = runInteractiveTui;
|
|
44
|
+
const p = __importStar(require("@clack/prompts"));
|
|
45
|
+
const picocolors_1 = __importDefault(require("picocolors"));
|
|
46
|
+
const path = __importStar(require("path"));
|
|
47
|
+
const fs = __importStar(require("fs-extra"));
|
|
48
|
+
const options_1 = require("./options");
|
|
49
|
+
const vf_controller_resolver_1 = require("../utils/vf-controller-resolver");
|
|
50
|
+
// Step definitions for breadcrumbs
|
|
51
|
+
const STEPS = ['Type', 'Source', 'Controllers', 'Options', 'Confirm'];
|
|
52
|
+
/**
|
|
53
|
+
* Display breadcrumb navigation showing current progress
|
|
54
|
+
*/
|
|
55
|
+
function showBreadcrumbs(currentStep, conversionType) {
|
|
56
|
+
const breadcrumb = STEPS.map((step, i) => {
|
|
57
|
+
// Skip Controllers step for Aura
|
|
58
|
+
if (step === 'Controllers' && conversionType === 'aura') {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
if (i < currentStep) {
|
|
62
|
+
return picocolors_1.default.green(`✓ ${step}`);
|
|
63
|
+
}
|
|
64
|
+
else if (i === currentStep) {
|
|
65
|
+
return picocolors_1.default.cyan(`● ${step}`);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
return picocolors_1.default.dim(step);
|
|
69
|
+
}
|
|
70
|
+
}).filter(Boolean).join(picocolors_1.default.dim(' → '));
|
|
71
|
+
console.log(`\n${picocolors_1.default.dim('📍')} ${breadcrumb}\n`);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Find available Aura components in the project
|
|
75
|
+
*/
|
|
76
|
+
async function findAuraComponents() {
|
|
77
|
+
const searchPaths = [
|
|
78
|
+
'force-app/main/default/aura',
|
|
79
|
+
'src/aura',
|
|
80
|
+
'aura',
|
|
81
|
+
];
|
|
82
|
+
const components = [];
|
|
83
|
+
const cwd = process.cwd();
|
|
84
|
+
for (const searchPath of searchPaths) {
|
|
85
|
+
const fullPath = path.join(cwd, searchPath);
|
|
86
|
+
if (await fs.pathExists(fullPath)) {
|
|
87
|
+
try {
|
|
88
|
+
const entries = await fs.readdir(fullPath, { withFileTypes: true });
|
|
89
|
+
for (const entry of entries) {
|
|
90
|
+
if (entry.isDirectory()) {
|
|
91
|
+
const cmpFile = path.join(fullPath, entry.name, `${entry.name}.cmp`);
|
|
92
|
+
if (await fs.pathExists(cmpFile)) {
|
|
93
|
+
components.push({
|
|
94
|
+
value: path.join(searchPath, entry.name),
|
|
95
|
+
label: `⚡ ${entry.name}`,
|
|
96
|
+
hint: searchPath,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
// Ignore errors
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return components;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Find available Visualforce pages in the project
|
|
111
|
+
*/
|
|
112
|
+
async function findVfPages() {
|
|
113
|
+
const searchPaths = [
|
|
114
|
+
'force-app/main/default/pages',
|
|
115
|
+
'src/pages',
|
|
116
|
+
'pages',
|
|
117
|
+
];
|
|
118
|
+
const pages = [];
|
|
119
|
+
const cwd = process.cwd();
|
|
120
|
+
for (const searchPath of searchPaths) {
|
|
121
|
+
const fullPath = path.join(cwd, searchPath);
|
|
122
|
+
if (await fs.pathExists(fullPath)) {
|
|
123
|
+
try {
|
|
124
|
+
const entries = await fs.readdir(fullPath, { withFileTypes: true });
|
|
125
|
+
for (const entry of entries) {
|
|
126
|
+
if (entry.isFile() && entry.name.endsWith('.page')) {
|
|
127
|
+
pages.push({
|
|
128
|
+
value: path.join(searchPath, entry.name),
|
|
129
|
+
label: `📄 ${entry.name.replace('.page', '')}`,
|
|
130
|
+
hint: searchPath,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
// Ignore errors
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return pages;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Find available Apex controllers in the project
|
|
144
|
+
*/
|
|
145
|
+
async function findApexControllers() {
|
|
146
|
+
const searchPaths = [
|
|
147
|
+
'force-app/main/default/classes',
|
|
148
|
+
'src/classes',
|
|
149
|
+
'classes',
|
|
150
|
+
];
|
|
151
|
+
const controllers = [];
|
|
152
|
+
const cwd = process.cwd();
|
|
153
|
+
for (const searchPath of searchPaths) {
|
|
154
|
+
const fullPath = path.join(cwd, searchPath);
|
|
155
|
+
if (await fs.pathExists(fullPath)) {
|
|
156
|
+
try {
|
|
157
|
+
const entries = await fs.readdir(fullPath, { withFileTypes: true });
|
|
158
|
+
for (const entry of entries) {
|
|
159
|
+
if (entry.isFile() && entry.name.endsWith('.cls')) {
|
|
160
|
+
controllers.push({
|
|
161
|
+
value: path.join(searchPath, entry.name),
|
|
162
|
+
label: `📋 ${entry.name.replace('.cls', '')}`,
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
// Ignore errors
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return controllers;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Check if user cancelled
|
|
176
|
+
*/
|
|
177
|
+
function isCancel(value) {
|
|
178
|
+
return p.isCancel(value);
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Handle cancellation
|
|
182
|
+
*/
|
|
183
|
+
function handleCancel() {
|
|
184
|
+
p.cancel('Operation cancelled.');
|
|
185
|
+
return null;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Clear the terminal screen
|
|
189
|
+
*/
|
|
190
|
+
function clearScreen() {
|
|
191
|
+
// Use platform-specific clear command
|
|
192
|
+
const isWindows = process.platform === 'win32';
|
|
193
|
+
if (isWindows) {
|
|
194
|
+
// Synchronously execute cls on Windows
|
|
195
|
+
require('child_process').execSync('cls', { stdio: 'inherit' });
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
// Use ANSI escape codes on Unix-like systems
|
|
199
|
+
process.stdout.write('\x1B[2J\x1B[0f');
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Display the welcome header
|
|
204
|
+
*/
|
|
205
|
+
function showHeader() {
|
|
206
|
+
clearScreen();
|
|
207
|
+
p.intro(picocolors_1.default.bgCyan(picocolors_1.default.black(' 🔄 LWC Convert ')));
|
|
208
|
+
p.note('Convert Aura & Visualforce to Lightning Web Components\n' +
|
|
209
|
+
picocolors_1.default.dim('Use arrow keys to navigate, Enter to select, Ctrl+C to cancel'), 'Welcome');
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Run the interactive TUI
|
|
213
|
+
*/
|
|
214
|
+
async function runInteractiveTui() {
|
|
215
|
+
showHeader();
|
|
216
|
+
// State management
|
|
217
|
+
let currentStep = 0;
|
|
218
|
+
let conversionType;
|
|
219
|
+
let componentPath;
|
|
220
|
+
let controllerPath;
|
|
221
|
+
let controllerPaths = [];
|
|
222
|
+
let detectedControllers = [];
|
|
223
|
+
let outputDir = options_1.DEFAULT_OUTPUT_DIR;
|
|
224
|
+
let conversionMode = 'scaffolding';
|
|
225
|
+
let openFolder = true;
|
|
226
|
+
// Main wizard loop - allows navigation back to any step
|
|
227
|
+
wizardLoop: while (currentStep < 4) {
|
|
228
|
+
// Step 1: Select conversion type
|
|
229
|
+
while (currentStep === 0) {
|
|
230
|
+
showBreadcrumbs(currentStep);
|
|
231
|
+
const typeResult = await p.select({
|
|
232
|
+
message: 'What would you like to convert?',
|
|
233
|
+
options: [
|
|
234
|
+
{ value: 'aura', label: '⚡ Aura Component → LWC', hint: 'Convert Aura bundles' },
|
|
235
|
+
{ value: 'vf', label: '📄 Visualforce Page → LWC', hint: 'Convert VF pages' },
|
|
236
|
+
],
|
|
237
|
+
});
|
|
238
|
+
if (isCancel(typeResult))
|
|
239
|
+
return handleCancel();
|
|
240
|
+
conversionType = typeResult;
|
|
241
|
+
currentStep = 1;
|
|
242
|
+
}
|
|
243
|
+
// Step 2: Select source component/page
|
|
244
|
+
while (currentStep === 1) {
|
|
245
|
+
showBreadcrumbs(currentStep, conversionType);
|
|
246
|
+
if (conversionType === 'aura') {
|
|
247
|
+
const s = p.spinner();
|
|
248
|
+
s.start('Scanning for Aura components...');
|
|
249
|
+
const auraComponents = await findAuraComponents();
|
|
250
|
+
s.stop('Scan complete');
|
|
251
|
+
if (auraComponents.length > 0) {
|
|
252
|
+
const sourceResult = await p.select({
|
|
253
|
+
message: 'Select an Aura component:',
|
|
254
|
+
options: [
|
|
255
|
+
...auraComponents,
|
|
256
|
+
{ value: '__custom__', label: '📝 Enter path manually...', hint: 'Type a custom path' },
|
|
257
|
+
{ value: '__back__', label: picocolors_1.default.yellow('← Back'), hint: 'Return to previous step' },
|
|
258
|
+
],
|
|
259
|
+
});
|
|
260
|
+
if (isCancel(sourceResult))
|
|
261
|
+
return handleCancel();
|
|
262
|
+
if (sourceResult === '__back__') {
|
|
263
|
+
showHeader();
|
|
264
|
+
currentStep = 0;
|
|
265
|
+
continue wizardLoop;
|
|
266
|
+
}
|
|
267
|
+
if (sourceResult === '__custom__') {
|
|
268
|
+
const customPath = await p.text({
|
|
269
|
+
message: 'Enter the path to the Aura component:',
|
|
270
|
+
placeholder: 'force-app/main/default/aura/MyComponent (leave blank to go back)',
|
|
271
|
+
});
|
|
272
|
+
if (isCancel(customPath))
|
|
273
|
+
return handleCancel();
|
|
274
|
+
if (!customPath || !customPath.trim()) {
|
|
275
|
+
// User left blank - go back to selection
|
|
276
|
+
continue;
|
|
277
|
+
}
|
|
278
|
+
componentPath = customPath;
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
componentPath = sourceResult;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
p.log.warn('No Aura components found in project');
|
|
286
|
+
const actionResult = await p.select({
|
|
287
|
+
message: 'What would you like to do?',
|
|
288
|
+
options: [
|
|
289
|
+
{ value: '__custom__', label: '📝 Enter path manually', hint: 'Type a custom path' },
|
|
290
|
+
{ value: '__back__', label: picocolors_1.default.yellow('← Back to menu'), hint: 'Return to conversion type selection' },
|
|
291
|
+
],
|
|
292
|
+
});
|
|
293
|
+
if (isCancel(actionResult))
|
|
294
|
+
return handleCancel();
|
|
295
|
+
if (actionResult === '__back__') {
|
|
296
|
+
showHeader();
|
|
297
|
+
currentStep = 0;
|
|
298
|
+
continue wizardLoop;
|
|
299
|
+
}
|
|
300
|
+
const customPath = await p.text({
|
|
301
|
+
message: 'Enter the path to the Aura component:',
|
|
302
|
+
placeholder: 'force-app/main/default/aura/MyComponent (leave blank to go back)',
|
|
303
|
+
});
|
|
304
|
+
if (isCancel(customPath))
|
|
305
|
+
return handleCancel();
|
|
306
|
+
if (!customPath || !customPath.trim()) {
|
|
307
|
+
// User left blank - go back to type selection
|
|
308
|
+
showHeader();
|
|
309
|
+
currentStep = 0;
|
|
310
|
+
continue wizardLoop;
|
|
311
|
+
}
|
|
312
|
+
componentPath = customPath;
|
|
313
|
+
}
|
|
314
|
+
// Skip controllers step for Aura
|
|
315
|
+
currentStep = 3;
|
|
316
|
+
}
|
|
317
|
+
else {
|
|
318
|
+
// VF page selection
|
|
319
|
+
const s = p.spinner();
|
|
320
|
+
s.start('Scanning for Visualforce pages...');
|
|
321
|
+
const vfPages = await findVfPages();
|
|
322
|
+
s.stop('Scan complete');
|
|
323
|
+
if (vfPages.length > 0) {
|
|
324
|
+
const sourceResult = await p.select({
|
|
325
|
+
message: 'Select a Visualforce page:',
|
|
326
|
+
options: [
|
|
327
|
+
...vfPages,
|
|
328
|
+
{ value: '__custom__', label: '📝 Enter path manually...', hint: 'Type a custom path' },
|
|
329
|
+
{ value: '__back__', label: picocolors_1.default.yellow('← Back'), hint: 'Return to previous step' },
|
|
330
|
+
],
|
|
331
|
+
});
|
|
332
|
+
if (isCancel(sourceResult))
|
|
333
|
+
return handleCancel();
|
|
334
|
+
if (sourceResult === '__back__') {
|
|
335
|
+
showHeader();
|
|
336
|
+
currentStep = 0;
|
|
337
|
+
continue wizardLoop;
|
|
338
|
+
}
|
|
339
|
+
if (sourceResult === '__custom__') {
|
|
340
|
+
const customPath = await p.text({
|
|
341
|
+
message: 'Enter the path to the Visualforce page:',
|
|
342
|
+
placeholder: 'force-app/main/default/pages/MyPage.page (leave blank to go back)',
|
|
343
|
+
});
|
|
344
|
+
if (isCancel(customPath))
|
|
345
|
+
return handleCancel();
|
|
346
|
+
if (!customPath || !customPath.trim()) {
|
|
347
|
+
// User left blank - go back to selection
|
|
348
|
+
continue;
|
|
349
|
+
}
|
|
350
|
+
componentPath = customPath;
|
|
351
|
+
}
|
|
352
|
+
else {
|
|
353
|
+
componentPath = sourceResult;
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
else {
|
|
357
|
+
p.log.warn('No Visualforce pages found in project');
|
|
358
|
+
const actionResult = await p.select({
|
|
359
|
+
message: 'What would you like to do?',
|
|
360
|
+
options: [
|
|
361
|
+
{ value: '__custom__', label: '📝 Enter path manually', hint: 'Type a custom path' },
|
|
362
|
+
{ value: '__back__', label: picocolors_1.default.yellow('← Back to menu'), hint: 'Return to conversion type selection' },
|
|
363
|
+
],
|
|
364
|
+
});
|
|
365
|
+
if (isCancel(actionResult))
|
|
366
|
+
return handleCancel();
|
|
367
|
+
if (actionResult === '__back__') {
|
|
368
|
+
showHeader();
|
|
369
|
+
currentStep = 0;
|
|
370
|
+
continue wizardLoop;
|
|
371
|
+
}
|
|
372
|
+
const customPath = await p.text({
|
|
373
|
+
message: 'Enter the path to the Visualforce page:',
|
|
374
|
+
placeholder: 'force-app/main/default/pages/MyPage.page (leave blank to go back)',
|
|
375
|
+
});
|
|
376
|
+
if (isCancel(customPath))
|
|
377
|
+
return handleCancel();
|
|
378
|
+
if (!customPath || !customPath.trim()) {
|
|
379
|
+
// User left blank - go back to type selection
|
|
380
|
+
showHeader();
|
|
381
|
+
currentStep = 0;
|
|
382
|
+
continue wizardLoop;
|
|
383
|
+
}
|
|
384
|
+
componentPath = customPath;
|
|
385
|
+
}
|
|
386
|
+
currentStep = 2;
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
// Step 3: Controllers (VF only)
|
|
390
|
+
while (currentStep === 2 && conversionType === 'vf' && componentPath) {
|
|
391
|
+
showBreadcrumbs(currentStep, conversionType);
|
|
392
|
+
const resolvedPagePath = path.resolve(componentPath);
|
|
393
|
+
if (await fs.pathExists(resolvedPagePath)) {
|
|
394
|
+
const s = p.spinner();
|
|
395
|
+
s.start('Analyzing page for controller references...');
|
|
396
|
+
const pageContent = await fs.readFile(resolvedPagePath, 'utf-8');
|
|
397
|
+
const result = await (0, vf_controller_resolver_1.findVfControllers)(pageContent);
|
|
398
|
+
detectedControllers = result.controllers;
|
|
399
|
+
s.stop('Analysis complete');
|
|
400
|
+
if (result.hasControllers) {
|
|
401
|
+
// Display detected controllers
|
|
402
|
+
const foundControllers = detectedControllers.filter(c => c.found);
|
|
403
|
+
const missingControllers = detectedControllers.filter(c => !c.found);
|
|
404
|
+
if (foundControllers.length > 0 || missingControllers.length > 0) {
|
|
405
|
+
let message = '';
|
|
406
|
+
if (foundControllers.length > 0) {
|
|
407
|
+
message += picocolors_1.default.green(`✓ Found: ${foundControllers.map(c => c.name).join(', ')}\n`);
|
|
408
|
+
}
|
|
409
|
+
if (missingControllers.length > 0) {
|
|
410
|
+
message += picocolors_1.default.yellow(`⚠ Not found: ${missingControllers.map(c => c.name).join(', ')}`);
|
|
411
|
+
}
|
|
412
|
+
p.note(message, '🔍 Detected Controllers');
|
|
413
|
+
}
|
|
414
|
+
if (foundControllers.length > 0) {
|
|
415
|
+
const selectedControllers = await p.multiselect({
|
|
416
|
+
message: 'Select controllers to include:',
|
|
417
|
+
options: [
|
|
418
|
+
...foundControllers.map(c => ({
|
|
419
|
+
value: c.path,
|
|
420
|
+
label: `${c.name}`,
|
|
421
|
+
hint: (0, vf_controller_resolver_1.getControllerTypeLabel)(c.type),
|
|
422
|
+
})),
|
|
423
|
+
{ value: '__back__', label: picocolors_1.default.yellow('← Back') },
|
|
424
|
+
],
|
|
425
|
+
required: false,
|
|
426
|
+
});
|
|
427
|
+
if (isCancel(selectedControllers))
|
|
428
|
+
return handleCancel();
|
|
429
|
+
const selections = selectedControllers;
|
|
430
|
+
if (selections.includes('__back__')) {
|
|
431
|
+
currentStep = 1;
|
|
432
|
+
continue wizardLoop;
|
|
433
|
+
}
|
|
434
|
+
controllerPaths = selections.filter(s => s !== '__back__');
|
|
435
|
+
if (controllerPaths.length > 0) {
|
|
436
|
+
controllerPath = controllerPaths[0];
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
// Offer to add more controllers
|
|
440
|
+
const addMore = await p.confirm({
|
|
441
|
+
message: 'Add additional controllers manually?',
|
|
442
|
+
initialValue: false,
|
|
443
|
+
});
|
|
444
|
+
if (isCancel(addMore))
|
|
445
|
+
return handleCancel();
|
|
446
|
+
if (addMore) {
|
|
447
|
+
const allControllers = await findApexControllers();
|
|
448
|
+
const availableControllers = allControllers.filter(c => !controllerPaths.includes(path.resolve(c.value)));
|
|
449
|
+
if (availableControllers.length > 0) {
|
|
450
|
+
const additional = await p.multiselect({
|
|
451
|
+
message: 'Select additional controllers:',
|
|
452
|
+
options: availableControllers,
|
|
453
|
+
required: false,
|
|
454
|
+
});
|
|
455
|
+
if (!isCancel(additional)) {
|
|
456
|
+
controllerPaths.push(...additional.map(c => path.resolve(c)));
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
else {
|
|
462
|
+
p.log.info('No controllers detected in page attributes');
|
|
463
|
+
const includeController = await p.confirm({
|
|
464
|
+
message: 'Add a controller manually?',
|
|
465
|
+
initialValue: false,
|
|
466
|
+
});
|
|
467
|
+
if (isCancel(includeController))
|
|
468
|
+
return handleCancel();
|
|
469
|
+
if (includeController) {
|
|
470
|
+
const allControllers = await findApexControllers();
|
|
471
|
+
if (allControllers.length > 0) {
|
|
472
|
+
const selected = await p.select({
|
|
473
|
+
message: 'Select an Apex controller:',
|
|
474
|
+
options: [
|
|
475
|
+
...allControllers,
|
|
476
|
+
{ value: '__back__', label: picocolors_1.default.yellow('← Back') },
|
|
477
|
+
],
|
|
478
|
+
});
|
|
479
|
+
if (isCancel(selected))
|
|
480
|
+
return handleCancel();
|
|
481
|
+
if (selected === '__back__') {
|
|
482
|
+
currentStep = 1;
|
|
483
|
+
continue wizardLoop;
|
|
484
|
+
}
|
|
485
|
+
controllerPath = selected;
|
|
486
|
+
controllerPaths = [path.resolve(controllerPath)];
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
currentStep = 3;
|
|
492
|
+
}
|
|
493
|
+
// Step 4: Options
|
|
494
|
+
while (currentStep === 3) {
|
|
495
|
+
showBreadcrumbs(currentStep, conversionType);
|
|
496
|
+
const modeResult = await p.select({
|
|
497
|
+
message: 'Conversion mode:',
|
|
498
|
+
options: [
|
|
499
|
+
{
|
|
500
|
+
value: 'scaffolding',
|
|
501
|
+
label: '📝 Scaffolding',
|
|
502
|
+
hint: 'Generates skeleton with TODO comments (recommended)'
|
|
503
|
+
},
|
|
504
|
+
{
|
|
505
|
+
value: 'full',
|
|
506
|
+
label: '⚡ Full Conversion',
|
|
507
|
+
hint: 'Attempts complete code transformation'
|
|
508
|
+
},
|
|
509
|
+
{ value: '__back__', label: picocolors_1.default.yellow('← Back') },
|
|
510
|
+
],
|
|
511
|
+
});
|
|
512
|
+
if (isCancel(modeResult))
|
|
513
|
+
return handleCancel();
|
|
514
|
+
if (modeResult === '__back__') {
|
|
515
|
+
currentStep = conversionType === 'aura' ? 1 : 2;
|
|
516
|
+
continue wizardLoop;
|
|
517
|
+
}
|
|
518
|
+
conversionMode = modeResult;
|
|
519
|
+
const outputResult = await p.text({
|
|
520
|
+
message: 'Output directory:',
|
|
521
|
+
initialValue: options_1.DEFAULT_OUTPUT_DIR,
|
|
522
|
+
validate: (value) => {
|
|
523
|
+
if (!value.trim())
|
|
524
|
+
return 'Output directory is required';
|
|
525
|
+
return undefined;
|
|
526
|
+
},
|
|
527
|
+
});
|
|
528
|
+
if (isCancel(outputResult))
|
|
529
|
+
return handleCancel();
|
|
530
|
+
outputDir = outputResult;
|
|
531
|
+
const openResult = await p.confirm({
|
|
532
|
+
message: 'Open output folder after conversion?',
|
|
533
|
+
initialValue: true,
|
|
534
|
+
});
|
|
535
|
+
if (isCancel(openResult))
|
|
536
|
+
return handleCancel();
|
|
537
|
+
openFolder = openResult;
|
|
538
|
+
currentStep = 4;
|
|
539
|
+
}
|
|
540
|
+
} // end wizardLoop
|
|
541
|
+
// Step 5: Confirmation
|
|
542
|
+
showBreadcrumbs(currentStep, conversionType);
|
|
543
|
+
const summaryLines = [
|
|
544
|
+
`${picocolors_1.default.dim('Type:')} ${conversionType === 'aura' ? '⚡ Aura → LWC' : '📄 VF → LWC'}`,
|
|
545
|
+
`${picocolors_1.default.dim('Source:')} ${componentPath}`,
|
|
546
|
+
];
|
|
547
|
+
if (controllerPaths.length > 0) {
|
|
548
|
+
summaryLines.push(`${picocolors_1.default.dim('Controllers:')} ${controllerPaths.length} selected`);
|
|
549
|
+
controllerPaths.forEach(cp => {
|
|
550
|
+
summaryLines.push(` ${picocolors_1.default.dim('•')} ${path.basename(cp)}`);
|
|
551
|
+
});
|
|
552
|
+
}
|
|
553
|
+
summaryLines.push(`${picocolors_1.default.dim('Mode:')} ${conversionMode === 'full' ? '⚡ Full' : '📝 Scaffolding'}`);
|
|
554
|
+
summaryLines.push(`${picocolors_1.default.dim('Output:')} ${outputDir}`);
|
|
555
|
+
summaryLines.push(`${picocolors_1.default.dim('Open folder:')} ${openFolder ? '✓ Yes' : '✗ No'}`);
|
|
556
|
+
p.note(summaryLines.join('\n'), '📋 Conversion Summary');
|
|
557
|
+
const confirm = await p.confirm({
|
|
558
|
+
message: 'Proceed with conversion?',
|
|
559
|
+
initialValue: true,
|
|
560
|
+
});
|
|
561
|
+
if (isCancel(confirm) || !confirm) {
|
|
562
|
+
p.cancel('Conversion cancelled.');
|
|
563
|
+
return null;
|
|
564
|
+
}
|
|
565
|
+
p.outro(picocolors_1.default.green('Starting conversion...'));
|
|
566
|
+
return {
|
|
567
|
+
conversionType: conversionType,
|
|
568
|
+
componentPath: componentPath,
|
|
569
|
+
controllerPath,
|
|
570
|
+
controllerPaths: controllerPaths.length > 0 ? controllerPaths : undefined,
|
|
571
|
+
detectedControllers: detectedControllers.length > 0 ? detectedControllers : undefined,
|
|
572
|
+
outputDir,
|
|
573
|
+
conversionMode,
|
|
574
|
+
openFolder,
|
|
575
|
+
};
|
|
576
|
+
}
|
|
577
|
+
//# sourceMappingURL=interactive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../src/cli/interactive.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI option definitions and types
|
|
3
|
+
*/
|
|
4
|
+
export interface ConversionOptions {
|
|
5
|
+
output: string;
|
|
6
|
+
full: boolean;
|
|
7
|
+
dryRun: boolean;
|
|
8
|
+
verbose: boolean;
|
|
9
|
+
open: boolean;
|
|
10
|
+
controller?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface AuraConversionOptions extends ConversionOptions {
|
|
13
|
+
}
|
|
14
|
+
export interface VfConversionOptions extends ConversionOptions {
|
|
15
|
+
controller?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare const DEFAULT_OUTPUT_DIR = "./lwc-output";
|
|
18
|
+
export declare const CLI_VERSION = "1.0.0";
|
|
19
|
+
export declare const CLI_NAME = "lwc-convert";
|
|
20
|
+
export declare const CLI_DESCRIPTION = "\nConvert Salesforce Aura components and Visualforce pages to Lightning Web Components.\n\nFeatures:\n \u2022 Smart path resolution - just use the component name\n \u2022 Generates LWC bundle with HTML, JS, CSS, and meta.xml\n \u2022 Auto-generates Jest tests for converted components\n \u2022 Creates behavior spec documentation\n \u2022 Handles LMS, wire adapters, and Apex integration\n\nConversion Modes:\n scaffolding (default) LWC skeleton with guided TODO comments\n full (--full) Complete automated code transformation\n";
|
|
21
|
+
//# sourceMappingURL=options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/cli/options.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAsB,SAAQ,iBAAiB;CAE/D;AAED,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AAEjD,eAAO,MAAM,WAAW,UAAU,CAAC;AAEnC,eAAO,MAAM,QAAQ,gBAAgB,CAAC;AAEtC,eAAO,MAAM,eAAe,siBAa3B,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* CLI option definitions and types
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.CLI_DESCRIPTION = exports.CLI_NAME = exports.CLI_VERSION = exports.DEFAULT_OUTPUT_DIR = void 0;
|
|
7
|
+
exports.DEFAULT_OUTPUT_DIR = './lwc-output';
|
|
8
|
+
exports.CLI_VERSION = '1.0.0';
|
|
9
|
+
exports.CLI_NAME = 'lwc-convert';
|
|
10
|
+
exports.CLI_DESCRIPTION = `
|
|
11
|
+
Convert Salesforce Aura components and Visualforce pages to Lightning Web Components.
|
|
12
|
+
|
|
13
|
+
Features:
|
|
14
|
+
• Smart path resolution - just use the component name
|
|
15
|
+
• Generates LWC bundle with HTML, JS, CSS, and meta.xml
|
|
16
|
+
• Auto-generates Jest tests for converted components
|
|
17
|
+
• Creates behavior spec documentation
|
|
18
|
+
• Handles LMS, wire adapters, and Apex integration
|
|
19
|
+
|
|
20
|
+
Conversion Modes:
|
|
21
|
+
scaffolding (default) LWC skeleton with guided TODO comments
|
|
22
|
+
full (--full) Complete automated code transformation
|
|
23
|
+
`;
|
|
24
|
+
//# sourceMappingURL=options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/cli/options.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAmBU,QAAA,kBAAkB,GAAG,cAAc,CAAC;AAEpC,QAAA,WAAW,GAAG,OAAO,CAAC;AAEtB,QAAA,QAAQ,GAAG,aAAa,CAAC;AAEzB,QAAA,eAAe,GAAG;;;;;;;;;;;;;CAa9B,CAAC"}
|