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 @@
|
|
|
1
|
+
{"version":3,"file":"aura.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/aura.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAanD,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAgNf"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Aura to LWC conversion command
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.convertAura = convertAura;
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
const file_io_1 = require("../../utils/file-io");
|
|
42
|
+
const logger_1 = require("../../utils/logger");
|
|
43
|
+
const markup_parser_1 = require("../../parsers/aura/markup-parser");
|
|
44
|
+
const controller_parser_1 = require("../../parsers/aura/controller-parser");
|
|
45
|
+
const helper_parser_1 = require("../../parsers/aura/helper-parser");
|
|
46
|
+
const style_parser_1 = require("../../parsers/aura/style-parser");
|
|
47
|
+
const markup_1 = require("../../transformers/aura-to-lwc/markup");
|
|
48
|
+
const scaffolding_1 = require("../../generators/scaffolding");
|
|
49
|
+
const full_conversion_1 = require("../../generators/full-conversion");
|
|
50
|
+
const path_resolver_1 = require("../../utils/path-resolver");
|
|
51
|
+
const session_store_1 = require("../../utils/session-store");
|
|
52
|
+
async function convertAura(inputPath, options) {
|
|
53
|
+
// Resolve the path (supports just component name)
|
|
54
|
+
const resolved = await (0, path_resolver_1.resolveAuraPath)(inputPath);
|
|
55
|
+
if (!resolved.found) {
|
|
56
|
+
logger_1.logger.error(`Component not found: ${inputPath}`);
|
|
57
|
+
if (resolved.searchedLocations && resolved.searchedLocations.length > 0) {
|
|
58
|
+
logger_1.logger.subheader('Searched in:');
|
|
59
|
+
console.log((0, path_resolver_1.formatSearchLocations)(resolved.searchedLocations, process.cwd()));
|
|
60
|
+
}
|
|
61
|
+
logger_1.logger.blank();
|
|
62
|
+
logger_1.logger.info('Tip: You can provide just the component name (e.g., "AccountCard")');
|
|
63
|
+
logger_1.logger.info(' or a full path (e.g., "./force-app/main/default/aura/AccountCard")');
|
|
64
|
+
process.exit(1);
|
|
65
|
+
}
|
|
66
|
+
const bundlePath = resolved.path;
|
|
67
|
+
// Show banner and conversion info
|
|
68
|
+
logger_1.logger.banner();
|
|
69
|
+
logger_1.logger.header('Aura → LWC Conversion');
|
|
70
|
+
logger_1.logger.info(`Source: ${bundlePath}`);
|
|
71
|
+
logger_1.logger.info(`Mode: ${options.full ? 'Full Conversion' : 'Scaffolding'}`);
|
|
72
|
+
logger_1.logger.info(`Output: ${options.output}`);
|
|
73
|
+
if (options.dryRun) {
|
|
74
|
+
logger_1.logger.warn('Dry run mode - no files will be written');
|
|
75
|
+
}
|
|
76
|
+
logger_1.logger.divider();
|
|
77
|
+
try {
|
|
78
|
+
// Step 1: Read Aura bundle
|
|
79
|
+
logger_1.logger.step(1, 'Reading Aura component bundle...');
|
|
80
|
+
const bundle = await (0, file_io_1.readAuraBundle)(bundlePath);
|
|
81
|
+
logger_1.logger.success(`Read component: ${bundle.name}`);
|
|
82
|
+
// Step 2: Parse markup
|
|
83
|
+
logger_1.logger.step(2, 'Parsing component markup...');
|
|
84
|
+
if (!bundle.markup) {
|
|
85
|
+
throw new Error('No markup (.cmp) file found in bundle');
|
|
86
|
+
}
|
|
87
|
+
const parsedMarkup = (0, markup_parser_1.parseAuraMarkup)(bundle.markup, bundle.name);
|
|
88
|
+
logger_1.logger.success(`Parsed ${parsedMarkup.attributes.length} attributes, ${parsedMarkup.handlers.length} handlers`);
|
|
89
|
+
// Step 3: Parse controller (if exists)
|
|
90
|
+
let parsedController;
|
|
91
|
+
if (bundle.controller) {
|
|
92
|
+
logger_1.logger.step(3, 'Parsing JavaScript controller...');
|
|
93
|
+
parsedController = (0, controller_parser_1.parseAuraController)(bundle.controller);
|
|
94
|
+
logger_1.logger.success(`Parsed ${parsedController.functions.length} controller functions`);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
logger_1.logger.step(3, 'No JavaScript controller found');
|
|
98
|
+
}
|
|
99
|
+
// Step 4: Parse helper (if exists)
|
|
100
|
+
let parsedHelper;
|
|
101
|
+
if (bundle.helper) {
|
|
102
|
+
logger_1.logger.step(4, 'Parsing JavaScript helper...');
|
|
103
|
+
parsedHelper = (0, helper_parser_1.parseAuraHelper)(bundle.helper);
|
|
104
|
+
logger_1.logger.success(`Parsed ${parsedHelper.functions.length} helper functions`);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
logger_1.logger.step(4, 'No JavaScript helper found');
|
|
108
|
+
}
|
|
109
|
+
// Step 5: Parse styles (if exists)
|
|
110
|
+
let parsedStyle;
|
|
111
|
+
if (bundle.style) {
|
|
112
|
+
logger_1.logger.step(5, 'Parsing CSS styles...');
|
|
113
|
+
parsedStyle = (0, style_parser_1.parseAuraStyle)(bundle.style);
|
|
114
|
+
logger_1.logger.success(`Parsed ${parsedStyle.rules.length} CSS rules`);
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
logger_1.logger.step(5, 'No CSS styles found');
|
|
118
|
+
}
|
|
119
|
+
// Step 6: Transform and generate
|
|
120
|
+
logger_1.logger.step(6, options.full ? 'Generating full conversion...' : 'Generating scaffolding...');
|
|
121
|
+
let result;
|
|
122
|
+
if (options.full) {
|
|
123
|
+
result = (0, full_conversion_1.generateAuraFullConversion)(parsedMarkup, parsedController, parsedHelper, parsedStyle);
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
const transformedMarkup = (0, markup_1.transformAuraMarkup)(parsedMarkup);
|
|
127
|
+
result = (0, scaffolding_1.generateAuraScaffolding)(parsedMarkup, transformedMarkup, parsedController, parsedHelper, parsedStyle);
|
|
128
|
+
}
|
|
129
|
+
logger_1.logger.success(`Generated LWC: ${result.bundle.name}`);
|
|
130
|
+
// Step 7: Write output
|
|
131
|
+
logger_1.logger.step(7, 'Writing output files...');
|
|
132
|
+
const outputDir = path.resolve(options.output);
|
|
133
|
+
const writtenFiles = await (0, file_io_1.writeLwcBundle)(outputDir, result.bundle, options.dryRun);
|
|
134
|
+
// Write conversion notes
|
|
135
|
+
if (result.notes.length > 0) {
|
|
136
|
+
await (0, file_io_1.writeConversionNotes)(outputDir, result.bundle.name, result.notes, options.dryRun);
|
|
137
|
+
}
|
|
138
|
+
// Write Jest tests if generated
|
|
139
|
+
if (result.tests) {
|
|
140
|
+
const testDir = path.join(outputDir, result.bundle.name, '__tests__');
|
|
141
|
+
const testFilePath = path.join(testDir, result.tests.filename);
|
|
142
|
+
const { writeFile } = await Promise.resolve().then(() => __importStar(require('../../utils/file-io')));
|
|
143
|
+
await writeFile(testFilePath, result.tests.content, options.dryRun);
|
|
144
|
+
}
|
|
145
|
+
// Write behavior spec document
|
|
146
|
+
if (result.behaviorSpec) {
|
|
147
|
+
const specFilePath = path.join(outputDir, result.bundle.name, `${result.bundle.name}-behavior-spec.md`);
|
|
148
|
+
const { writeFile } = await Promise.resolve().then(() => __importStar(require('../../utils/file-io')));
|
|
149
|
+
await writeFile(specFilePath, result.behaviorSpec, options.dryRun);
|
|
150
|
+
}
|
|
151
|
+
// Write test comparison files (before/after tests)
|
|
152
|
+
if (result.testComparison) {
|
|
153
|
+
const { writeFile } = await Promise.resolve().then(() => __importStar(require('../../utils/file-io')));
|
|
154
|
+
const testDir = path.join(outputDir, result.bundle.name, '__tests__');
|
|
155
|
+
// Write "before" test documentation (Aura behaviors)
|
|
156
|
+
const beforeTestPath = path.join(testDir, `${result.bundle.name}.before.spec.js`);
|
|
157
|
+
await writeFile(beforeTestPath, result.testComparison.beforeTestFile, options.dryRun);
|
|
158
|
+
// Write "after" test file (LWC verification)
|
|
159
|
+
const afterTestPath = path.join(testDir, `${result.bundle.name}.after.test.js`);
|
|
160
|
+
await writeFile(afterTestPath, result.testComparison.afterTestFile, options.dryRun);
|
|
161
|
+
// Write comparison report
|
|
162
|
+
const comparisonReportPath = path.join(outputDir, result.bundle.name, `${result.bundle.name}-test-comparison.md`);
|
|
163
|
+
await writeFile(comparisonReportPath, result.testComparison.comparisonReport, options.dryRun);
|
|
164
|
+
}
|
|
165
|
+
logger_1.logger.divider();
|
|
166
|
+
logger_1.logger.success('Conversion complete!');
|
|
167
|
+
// Store conversion in session for learning
|
|
168
|
+
if (result.testComparison) {
|
|
169
|
+
const conversionRecord = await session_store_1.sessionStore.storeConversion('aura', bundle.name, result.bundle.name, bundlePath, path.join(outputDir, result.bundle.name), result.testComparison, result.warnings);
|
|
170
|
+
logger_1.logger.debug(`Session stored: ${conversionRecord.id}`);
|
|
171
|
+
}
|
|
172
|
+
// Calculate file count
|
|
173
|
+
let totalFiles = writtenFiles.length + 1; // +1 for notes
|
|
174
|
+
if (result.tests)
|
|
175
|
+
totalFiles++;
|
|
176
|
+
if (result.behaviorSpec)
|
|
177
|
+
totalFiles++;
|
|
178
|
+
if (result.testComparison)
|
|
179
|
+
totalFiles += 3; // before spec, after test, comparison report
|
|
180
|
+
// Summary box with key info
|
|
181
|
+
const sessionSummary = session_store_1.sessionStore.getSessionSummary();
|
|
182
|
+
logger_1.logger.summaryBox('Conversion Summary', [
|
|
183
|
+
{ label: 'Component', value: `${bundle.name} → ${result.bundle.name}`, type: 'success' },
|
|
184
|
+
{ label: 'Files created', value: `${totalFiles}`, type: 'info' },
|
|
185
|
+
{ label: 'Behaviors mapped', value: `${result.testComparison?.behaviorTests.length || 0}`, type: 'info' },
|
|
186
|
+
{ label: 'Warnings', value: `${result.warnings.length}`, type: result.warnings.length > 0 ? 'warn' : 'success' },
|
|
187
|
+
{ label: 'Session conversions', value: `${sessionSummary.conversions}`, type: 'info' },
|
|
188
|
+
{ label: 'Output', value: path.join(outputDir, result.bundle.name), type: 'info' },
|
|
189
|
+
]);
|
|
190
|
+
if (result.warnings.length > 0) {
|
|
191
|
+
if (options.verbose) {
|
|
192
|
+
logger_1.logger.subheader('Warnings:');
|
|
193
|
+
for (const warning of result.warnings) {
|
|
194
|
+
logger_1.logger.todo(warning);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
logger_1.logger.info('Run with --verbose to see all warnings');
|
|
199
|
+
}
|
|
200
|
+
logger_1.logger.blank();
|
|
201
|
+
}
|
|
202
|
+
// Next steps guidance
|
|
203
|
+
logger_1.logger.nextSteps([
|
|
204
|
+
`Review generated files in ${result.bundle.name}/`,
|
|
205
|
+
'Check conversion-notes.md for manual action items',
|
|
206
|
+
'Run Jest tests: npm test -- --findRelatedTests',
|
|
207
|
+
'Verify behavior matches original component',
|
|
208
|
+
`Session data stored in: ${session_store_1.sessionStore.getSessionDir()}`,
|
|
209
|
+
]);
|
|
210
|
+
// Open folder if requested
|
|
211
|
+
if (options.open && !options.dryRun) {
|
|
212
|
+
const { openFolder } = await Promise.resolve().then(() => __importStar(require('../../utils/open-folder')));
|
|
213
|
+
logger_1.logger.info('Opening output folder...');
|
|
214
|
+
await openFolder(outputDir);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
catch (error) {
|
|
218
|
+
logger_1.logger.error(error.message);
|
|
219
|
+
if (options.verbose && error.stack) {
|
|
220
|
+
console.error(error.stack);
|
|
221
|
+
}
|
|
222
|
+
process.exit(1);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=aura.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aura.js","sourceRoot":"","sources":["../../../src/cli/commands/aura.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vf.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/vf.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAUjD,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAiMf"}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Visualforce to LWC conversion command
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.convertVf = convertVf;
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
const file_io_1 = require("../../utils/file-io");
|
|
42
|
+
const logger_1 = require("../../utils/logger");
|
|
43
|
+
const page_parser_1 = require("../../parsers/vf/page-parser");
|
|
44
|
+
const apex_parser_1 = require("../../parsers/vf/apex-parser");
|
|
45
|
+
const markup_1 = require("../../transformers/vf-to-lwc/markup");
|
|
46
|
+
const scaffolding_1 = require("../../generators/scaffolding");
|
|
47
|
+
const full_conversion_1 = require("../../generators/full-conversion");
|
|
48
|
+
const path_resolver_1 = require("../../utils/path-resolver");
|
|
49
|
+
async function convertVf(inputPath, options) {
|
|
50
|
+
// Resolve the VF page path (supports just page name)
|
|
51
|
+
const resolved = await (0, path_resolver_1.resolveVfPath)(inputPath);
|
|
52
|
+
if (!resolved.found) {
|
|
53
|
+
logger_1.logger.error(`Page not found: ${inputPath}`);
|
|
54
|
+
if (resolved.searchedLocations && resolved.searchedLocations.length > 0) {
|
|
55
|
+
logger_1.logger.subheader('Searched in:');
|
|
56
|
+
console.log((0, path_resolver_1.formatSearchLocations)(resolved.searchedLocations, process.cwd()));
|
|
57
|
+
}
|
|
58
|
+
logger_1.logger.blank();
|
|
59
|
+
logger_1.logger.info('Tip: You can provide just the page name (e.g., "ContactList")');
|
|
60
|
+
logger_1.logger.info(' or a full path (e.g., "./force-app/main/default/pages/ContactList.page")');
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
const pagePath = resolved.path;
|
|
64
|
+
// Resolve controller path if provided
|
|
65
|
+
let controllerPath = options.controller;
|
|
66
|
+
if (controllerPath) {
|
|
67
|
+
const resolvedController = await (0, path_resolver_1.resolveApexPath)(controllerPath);
|
|
68
|
+
if (!resolvedController.found) {
|
|
69
|
+
logger_1.logger.warn(`Controller not found: ${controllerPath}`);
|
|
70
|
+
if (resolvedController.searchedLocations && resolvedController.searchedLocations.length > 0) {
|
|
71
|
+
logger_1.logger.subheader('Searched in:');
|
|
72
|
+
console.log((0, path_resolver_1.formatSearchLocations)(resolvedController.searchedLocations, process.cwd()));
|
|
73
|
+
}
|
|
74
|
+
logger_1.logger.info('Continuing without controller analysis...');
|
|
75
|
+
logger_1.logger.blank();
|
|
76
|
+
controllerPath = undefined;
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
controllerPath = resolvedController.path;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// Update options with resolved controller path
|
|
83
|
+
// Controller path is used directly below
|
|
84
|
+
// Show banner and conversion info
|
|
85
|
+
logger_1.logger.banner();
|
|
86
|
+
logger_1.logger.header('Visualforce → LWC Conversion');
|
|
87
|
+
logger_1.logger.info(`Source: ${pagePath}`);
|
|
88
|
+
logger_1.logger.info(`Mode: ${options.full ? 'Full Conversion' : 'Scaffolding'}`);
|
|
89
|
+
logger_1.logger.info(`Output: ${options.output}`);
|
|
90
|
+
if (controllerPath) {
|
|
91
|
+
logger_1.logger.info(`Controller: ${controllerPath}`);
|
|
92
|
+
}
|
|
93
|
+
if (options.dryRun) {
|
|
94
|
+
logger_1.logger.warn('Dry run mode - no files will be written');
|
|
95
|
+
}
|
|
96
|
+
logger_1.logger.divider();
|
|
97
|
+
try {
|
|
98
|
+
// Step 1: Read VF page
|
|
99
|
+
logger_1.logger.step(1, 'Reading Visualforce page...');
|
|
100
|
+
const vfPage = await (0, file_io_1.readVfPage)(pagePath, controllerPath);
|
|
101
|
+
logger_1.logger.success(`Read page: ${vfPage.name}`);
|
|
102
|
+
// Step 2: Parse VF markup
|
|
103
|
+
logger_1.logger.step(2, 'Parsing Visualforce markup...');
|
|
104
|
+
const parsedPage = (0, page_parser_1.parseVfPage)(vfPage.markup, vfPage.name);
|
|
105
|
+
logger_1.logger.success(`Parsed ${parsedPage.components.length} components, ${parsedPage.expressions.length} expressions`);
|
|
106
|
+
// Log page attributes
|
|
107
|
+
if (parsedPage.pageAttributes.controller) {
|
|
108
|
+
logger_1.logger.info(` Controller: ${parsedPage.pageAttributes.controller}`);
|
|
109
|
+
}
|
|
110
|
+
if (parsedPage.pageAttributes.standardController) {
|
|
111
|
+
logger_1.logger.info(` Standard Controller: ${parsedPage.pageAttributes.standardController}`);
|
|
112
|
+
}
|
|
113
|
+
if (parsedPage.pageAttributes.extensions) {
|
|
114
|
+
logger_1.logger.info(` Extensions: ${parsedPage.pageAttributes.extensions.join(', ')}`);
|
|
115
|
+
}
|
|
116
|
+
// Step 3: Parse Apex controller (if provided or detected)
|
|
117
|
+
let parsedController;
|
|
118
|
+
if (vfPage.controller) {
|
|
119
|
+
logger_1.logger.step(3, 'Parsing Apex controller...');
|
|
120
|
+
parsedController = (0, apex_parser_1.parseApexController)(vfPage.controller);
|
|
121
|
+
logger_1.logger.success(`Parsed ${parsedController.properties.length} properties, ${parsedController.methods.length} methods`);
|
|
122
|
+
// Log useful info
|
|
123
|
+
const auraEnabled = parsedController.methods.filter((m) => m.isAuraEnabled);
|
|
124
|
+
const remoteActions = parsedController.methods.filter((m) => m.isRemoteAction);
|
|
125
|
+
if (auraEnabled.length > 0) {
|
|
126
|
+
logger_1.logger.info(` @AuraEnabled methods: ${auraEnabled.map((m) => m.name).join(', ')}`);
|
|
127
|
+
}
|
|
128
|
+
if (remoteActions.length > 0) {
|
|
129
|
+
logger_1.logger.info(` @RemoteAction methods: ${remoteActions.map((m) => m.name).join(', ')}`);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
logger_1.logger.step(3, 'No Apex controller provided');
|
|
134
|
+
if (parsedPage.pageAttributes.controller) {
|
|
135
|
+
logger_1.logger.warn(`Page references controller "${parsedPage.pageAttributes.controller}" - provide with --controller flag for better conversion`);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
// Step 4: Log page analysis
|
|
139
|
+
logger_1.logger.step(4, 'Analyzing page structure...');
|
|
140
|
+
if (parsedPage.actionFunctions.length > 0) {
|
|
141
|
+
logger_1.logger.info(` Action functions: ${parsedPage.actionFunctions.map((af) => af.name).join(', ')}`);
|
|
142
|
+
}
|
|
143
|
+
if (parsedPage.remoteActions.length > 0) {
|
|
144
|
+
logger_1.logger.info(` Remote actions: ${parsedPage.remoteActions.map((ra) => `${ra.controller}.${ra.method}`).join(', ')}`);
|
|
145
|
+
}
|
|
146
|
+
if (parsedPage.rerenderedSections.length > 0) {
|
|
147
|
+
logger_1.logger.info(` Rerendered sections: ${parsedPage.rerenderedSections.join(', ')}`);
|
|
148
|
+
}
|
|
149
|
+
if (parsedPage.includedScripts.length > 0) {
|
|
150
|
+
logger_1.logger.info(` Included scripts: ${parsedPage.includedScripts.length}`);
|
|
151
|
+
}
|
|
152
|
+
// Step 5: Transform and generate
|
|
153
|
+
logger_1.logger.step(5, options.full ? 'Generating full conversion...' : 'Generating scaffolding...');
|
|
154
|
+
let result;
|
|
155
|
+
if (options.full) {
|
|
156
|
+
result = (0, full_conversion_1.generateVfFullConversion)(parsedPage, parsedController);
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
const transformedMarkup = (0, markup_1.transformVfMarkup)(parsedPage);
|
|
160
|
+
result = (0, scaffolding_1.generateVfScaffolding)(parsedPage, transformedMarkup, parsedController);
|
|
161
|
+
}
|
|
162
|
+
logger_1.logger.success(`Generated LWC: ${result.bundle.name}`);
|
|
163
|
+
// Step 6: Write output
|
|
164
|
+
logger_1.logger.step(6, 'Writing output files...');
|
|
165
|
+
const outputDir = path.resolve(options.output);
|
|
166
|
+
const writtenFiles = await (0, file_io_1.writeLwcBundle)(outputDir, result.bundle, options.dryRun);
|
|
167
|
+
// Write conversion notes
|
|
168
|
+
if (result.notes.length > 0) {
|
|
169
|
+
await (0, file_io_1.writeConversionNotes)(outputDir, result.bundle.name, result.notes, options.dryRun);
|
|
170
|
+
}
|
|
171
|
+
logger_1.logger.divider();
|
|
172
|
+
logger_1.logger.success('Conversion complete!');
|
|
173
|
+
// Summary box with key info
|
|
174
|
+
logger_1.logger.summaryBox('Conversion Summary', [
|
|
175
|
+
{ label: 'Page', value: `${vfPage.name} → ${result.bundle.name}`, type: 'success' },
|
|
176
|
+
{ label: 'Files created', value: `${writtenFiles.length + 1}`, type: 'info' },
|
|
177
|
+
{ label: 'Warnings', value: `${result.warnings.length}`, type: result.warnings.length > 0 ? 'warn' : 'success' },
|
|
178
|
+
{ label: 'Output', value: path.join(outputDir, result.bundle.name), type: 'info' },
|
|
179
|
+
]);
|
|
180
|
+
if (result.warnings.length > 0) {
|
|
181
|
+
if (options.verbose) {
|
|
182
|
+
logger_1.logger.subheader('Warnings:');
|
|
183
|
+
for (const warning of result.warnings) {
|
|
184
|
+
logger_1.logger.todo(warning);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
logger_1.logger.info('Run with --verbose to see all warnings');
|
|
189
|
+
}
|
|
190
|
+
logger_1.logger.blank();
|
|
191
|
+
}
|
|
192
|
+
// Display important notes
|
|
193
|
+
if (parsedPage.pageAttributes.renderAs === 'pdf') {
|
|
194
|
+
logger_1.logger.warn('Page renders as PDF - LWC cannot directly render PDFs');
|
|
195
|
+
}
|
|
196
|
+
// Next steps guidance
|
|
197
|
+
logger_1.logger.nextSteps([
|
|
198
|
+
`Review generated files in ${result.bundle.name}/`,
|
|
199
|
+
'Check conversion-notes.md for manual action items',
|
|
200
|
+
'Verify Apex @AuraEnabled methods are configured',
|
|
201
|
+
'Test in a scratch org before deploying',
|
|
202
|
+
]);
|
|
203
|
+
// Open folder if requested
|
|
204
|
+
if (options.open && !options.dryRun) {
|
|
205
|
+
const { openFolder } = await Promise.resolve().then(() => __importStar(require('../../utils/open-folder')));
|
|
206
|
+
logger_1.logger.info('Opening output folder...');
|
|
207
|
+
await openFolder(outputDir);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
catch (error) {
|
|
211
|
+
logger_1.logger.error(error.message);
|
|
212
|
+
if (options.verbose && error.stack) {
|
|
213
|
+
console.error(error.stack);
|
|
214
|
+
}
|
|
215
|
+
process.exit(1);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=vf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vf.js","sourceRoot":"","sources":["../../../src/cli/commands/vf.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interactive TUI for lwc-convert CLI
|
|
3
|
+
* Redesigned with @clack/prompts for a modern, polished experience
|
|
4
|
+
*/
|
|
5
|
+
import { VfControllerReference } from '../utils/vf-controller-resolver';
|
|
6
|
+
export interface TuiAnswers {
|
|
7
|
+
conversionType: 'aura' | 'vf';
|
|
8
|
+
componentPath: string;
|
|
9
|
+
controllerPath?: string;
|
|
10
|
+
controllerPaths?: string[];
|
|
11
|
+
detectedControllers?: VfControllerReference[];
|
|
12
|
+
outputDir: string;
|
|
13
|
+
conversionMode: 'scaffolding' | 'full';
|
|
14
|
+
openFolder: boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Run the interactive TUI
|
|
18
|
+
*/
|
|
19
|
+
export declare function runInteractiveTui(): Promise<TuiAnswers | null>;
|
|
20
|
+
//# sourceMappingURL=interactive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../src/cli/interactive.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAEL,qBAAqB,EAEtB,MAAM,iCAAiC,CAAC;AAEzC,MAAM,WAAW,UAAU;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,mBAAmB,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,aAAa,GAAG,MAAM,CAAC;IACvC,UAAU,EAAE,OAAO,CAAC;CACrB;AAoLD;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAqZpE"}
|