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,248 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* File I/O utilities for reading and writing component files
|
|
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.readAuraBundle = readAuraBundle;
|
|
40
|
+
exports.readVfPage = readVfPage;
|
|
41
|
+
exports.writeLwcBundle = writeLwcBundle;
|
|
42
|
+
exports.writeConversionNotes = writeConversionNotes;
|
|
43
|
+
exports.writeFile = writeFile;
|
|
44
|
+
exports.toLwcName = toLwcName;
|
|
45
|
+
exports.toPascalCase = toPascalCase;
|
|
46
|
+
exports.toCamelCase = toCamelCase;
|
|
47
|
+
const fs = __importStar(require("fs-extra"));
|
|
48
|
+
const path = __importStar(require("path"));
|
|
49
|
+
const logger_1 = require("./logger");
|
|
50
|
+
/**
|
|
51
|
+
* Read an Aura component bundle from a directory
|
|
52
|
+
*/
|
|
53
|
+
async function readAuraBundle(bundlePath) {
|
|
54
|
+
const resolvedPath = path.resolve(bundlePath);
|
|
55
|
+
if (!await fs.pathExists(resolvedPath)) {
|
|
56
|
+
throw new Error(`Aura bundle not found at: ${resolvedPath}`);
|
|
57
|
+
}
|
|
58
|
+
const stat = await fs.stat(resolvedPath);
|
|
59
|
+
if (!stat.isDirectory()) {
|
|
60
|
+
throw new Error(`Expected a directory for Aura bundle: ${resolvedPath}`);
|
|
61
|
+
}
|
|
62
|
+
const bundleName = path.basename(resolvedPath);
|
|
63
|
+
const files = await fs.readdir(resolvedPath);
|
|
64
|
+
const bundle = {
|
|
65
|
+
name: bundleName,
|
|
66
|
+
path: resolvedPath,
|
|
67
|
+
};
|
|
68
|
+
for (const file of files) {
|
|
69
|
+
const filePath = path.join(resolvedPath, file);
|
|
70
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
71
|
+
if (file.endsWith('.cmp')) {
|
|
72
|
+
bundle.markup = content;
|
|
73
|
+
logger_1.logger.debug(`Read markup: ${file}`);
|
|
74
|
+
}
|
|
75
|
+
else if (file.endsWith('Controller.js')) {
|
|
76
|
+
bundle.controller = content;
|
|
77
|
+
logger_1.logger.debug(`Read controller: ${file}`);
|
|
78
|
+
}
|
|
79
|
+
else if (file.endsWith('Helper.js')) {
|
|
80
|
+
bundle.helper = content;
|
|
81
|
+
logger_1.logger.debug(`Read helper: ${file}`);
|
|
82
|
+
}
|
|
83
|
+
else if (file.endsWith('.css')) {
|
|
84
|
+
bundle.style = content;
|
|
85
|
+
logger_1.logger.debug(`Read style: ${file}`);
|
|
86
|
+
}
|
|
87
|
+
else if (file.endsWith('.design')) {
|
|
88
|
+
bundle.design = content;
|
|
89
|
+
logger_1.logger.debug(`Read design: ${file}`);
|
|
90
|
+
}
|
|
91
|
+
else if (file.endsWith('.auradoc')) {
|
|
92
|
+
bundle.documentation = content;
|
|
93
|
+
logger_1.logger.debug(`Read documentation: ${file}`);
|
|
94
|
+
}
|
|
95
|
+
else if (file.endsWith('.svg')) {
|
|
96
|
+
bundle.svg = content;
|
|
97
|
+
logger_1.logger.debug(`Read SVG: ${file}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (!bundle.markup) {
|
|
101
|
+
throw new Error(`No .cmp file found in Aura bundle: ${resolvedPath}`);
|
|
102
|
+
}
|
|
103
|
+
return bundle;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Read a Visualforce page file
|
|
107
|
+
*/
|
|
108
|
+
async function readVfPage(pagePath, controllerPath) {
|
|
109
|
+
const resolvedPath = path.resolve(pagePath);
|
|
110
|
+
if (!await fs.pathExists(resolvedPath)) {
|
|
111
|
+
throw new Error(`Visualforce page not found at: ${resolvedPath}`);
|
|
112
|
+
}
|
|
113
|
+
if (!resolvedPath.endsWith('.page')) {
|
|
114
|
+
throw new Error(`Expected a .page file: ${resolvedPath}`);
|
|
115
|
+
}
|
|
116
|
+
const pageName = path.basename(resolvedPath, '.page');
|
|
117
|
+
const markup = await fs.readFile(resolvedPath, 'utf-8');
|
|
118
|
+
const vfPage = {
|
|
119
|
+
name: pageName,
|
|
120
|
+
path: resolvedPath,
|
|
121
|
+
markup,
|
|
122
|
+
};
|
|
123
|
+
// Read associated controller if provided
|
|
124
|
+
if (controllerPath) {
|
|
125
|
+
const resolvedControllerPath = path.resolve(controllerPath);
|
|
126
|
+
if (await fs.pathExists(resolvedControllerPath)) {
|
|
127
|
+
vfPage.controller = await fs.readFile(resolvedControllerPath, 'utf-8');
|
|
128
|
+
vfPage.controllerPath = resolvedControllerPath;
|
|
129
|
+
logger_1.logger.debug(`Read controller: ${controllerPath}`);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
logger_1.logger.warn(`Controller not found: ${resolvedControllerPath}`);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return vfPage;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Write an LWC bundle to the output directory
|
|
139
|
+
* Creates a subfolder with the component name containing all bundle files
|
|
140
|
+
*/
|
|
141
|
+
async function writeLwcBundle(outputDir, bundle, dryRun = false) {
|
|
142
|
+
// Component files go directly into outputDir/componentName/
|
|
143
|
+
const componentDir = path.join(outputDir, bundle.name);
|
|
144
|
+
const writtenFiles = [];
|
|
145
|
+
if (dryRun) {
|
|
146
|
+
logger_1.logger.info(`[DRY RUN] Would create directory: ${componentDir}`);
|
|
147
|
+
logger_1.logger.info(`[DRY RUN] Would write: ${bundle.name}.html`);
|
|
148
|
+
logger_1.logger.info(`[DRY RUN] Would write: ${bundle.name}.js`);
|
|
149
|
+
if (bundle.css) {
|
|
150
|
+
logger_1.logger.info(`[DRY RUN] Would write: ${bundle.name}.css`);
|
|
151
|
+
}
|
|
152
|
+
logger_1.logger.info(`[DRY RUN] Would write: ${bundle.name}.js-meta.xml`);
|
|
153
|
+
return writtenFiles;
|
|
154
|
+
}
|
|
155
|
+
await fs.ensureDir(componentDir);
|
|
156
|
+
// Write HTML template
|
|
157
|
+
const htmlPath = path.join(componentDir, `${bundle.name}.html`);
|
|
158
|
+
await fs.writeFile(htmlPath, bundle.html, 'utf-8');
|
|
159
|
+
writtenFiles.push(htmlPath);
|
|
160
|
+
logger_1.logger.file('CREATE', htmlPath);
|
|
161
|
+
// Write JavaScript
|
|
162
|
+
const jsPath = path.join(componentDir, `${bundle.name}.js`);
|
|
163
|
+
await fs.writeFile(jsPath, bundle.js, 'utf-8');
|
|
164
|
+
writtenFiles.push(jsPath);
|
|
165
|
+
logger_1.logger.file('CREATE', jsPath);
|
|
166
|
+
// Write CSS if present
|
|
167
|
+
if (bundle.css) {
|
|
168
|
+
const cssPath = path.join(componentDir, `${bundle.name}.css`);
|
|
169
|
+
await fs.writeFile(cssPath, bundle.css, 'utf-8');
|
|
170
|
+
writtenFiles.push(cssPath);
|
|
171
|
+
logger_1.logger.file('CREATE', cssPath);
|
|
172
|
+
}
|
|
173
|
+
// Write meta XML
|
|
174
|
+
const metaPath = path.join(componentDir, `${bundle.name}.js-meta.xml`);
|
|
175
|
+
await fs.writeFile(metaPath, bundle.meta, 'utf-8');
|
|
176
|
+
writtenFiles.push(metaPath);
|
|
177
|
+
logger_1.logger.file('CREATE', metaPath);
|
|
178
|
+
return writtenFiles;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Write a conversion notes file
|
|
182
|
+
*/
|
|
183
|
+
async function writeConversionNotes(outputDir, componentName, notes, dryRun = false) {
|
|
184
|
+
const notesPath = path.join(outputDir, componentName, `${componentName}-conversion-notes.md`);
|
|
185
|
+
const content = `# Conversion Notes for ${componentName}
|
|
186
|
+
|
|
187
|
+
This file documents items that require manual attention after automated conversion.
|
|
188
|
+
|
|
189
|
+
## Action Items
|
|
190
|
+
|
|
191
|
+
${notes.map((note, i) => `${i + 1}. ${note}`).join('\n')}
|
|
192
|
+
|
|
193
|
+
## Verification Checklist
|
|
194
|
+
|
|
195
|
+
- [ ] Review all TODO comments in the generated code
|
|
196
|
+
- [ ] Verify Apex method imports and wire adapters
|
|
197
|
+
- [ ] Test event handling and data flow
|
|
198
|
+
- [ ] Validate styling matches original component
|
|
199
|
+
- [ ] Deploy to scratch org and test functionality
|
|
200
|
+
`;
|
|
201
|
+
if (dryRun) {
|
|
202
|
+
logger_1.logger.info(`[DRY RUN] Would write conversion notes: ${notesPath}`);
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
await fs.writeFile(notesPath, content, 'utf-8');
|
|
206
|
+
logger_1.logger.file('CREATE', notesPath);
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Write a generic file with directory creation
|
|
210
|
+
*/
|
|
211
|
+
async function writeFile(filePath, content, dryRun = false) {
|
|
212
|
+
if (dryRun) {
|
|
213
|
+
logger_1.logger.info(`[DRY RUN] Would write: ${filePath}`);
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
// Ensure directory exists
|
|
217
|
+
const dir = path.dirname(filePath);
|
|
218
|
+
await fs.mkdir(dir, { recursive: true });
|
|
219
|
+
await fs.writeFile(filePath, content, 'utf-8');
|
|
220
|
+
logger_1.logger.file('CREATE', filePath);
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Convert a component name to LWC naming convention (camelCase to kebab-case)
|
|
224
|
+
*/
|
|
225
|
+
function toLwcName(name) {
|
|
226
|
+
// Convert PascalCase or camelCase to kebab-case
|
|
227
|
+
return name
|
|
228
|
+
.replace(/([a-z0-9])([A-Z])/g, '$1-$2')
|
|
229
|
+
.replace(/([A-Z])([A-Z][a-z])/g, '$1-$2')
|
|
230
|
+
.toLowerCase();
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Convert kebab-case to PascalCase for class names
|
|
234
|
+
*/
|
|
235
|
+
function toPascalCase(name) {
|
|
236
|
+
return name
|
|
237
|
+
.split('-')
|
|
238
|
+
.map(part => part.charAt(0).toUpperCase() + part.slice(1))
|
|
239
|
+
.join('');
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Convert to camelCase for property names
|
|
243
|
+
*/
|
|
244
|
+
function toCamelCase(name) {
|
|
245
|
+
const pascal = toPascalCase(name);
|
|
246
|
+
return pascal.charAt(0).toLowerCase() + pascal.slice(1);
|
|
247
|
+
}
|
|
248
|
+
//# sourceMappingURL=file-io.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-io.js","sourceRoot":"","sources":["../../src/utils/file-io.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logger utility for colored console output with enhanced UX
|
|
3
|
+
*/
|
|
4
|
+
export interface LoggerOptions {
|
|
5
|
+
verbose: boolean;
|
|
6
|
+
}
|
|
7
|
+
declare class Logger {
|
|
8
|
+
private verbose;
|
|
9
|
+
setVerbose(verbose: boolean): void;
|
|
10
|
+
banner(): void;
|
|
11
|
+
info(message: string): void;
|
|
12
|
+
success(message: string): void;
|
|
13
|
+
warn(message: string): void;
|
|
14
|
+
error(message: string): void;
|
|
15
|
+
debug(message: string): void;
|
|
16
|
+
step(stepNumber: number, message: string): void;
|
|
17
|
+
header(message: string): void;
|
|
18
|
+
subheader(message: string): void;
|
|
19
|
+
divider(): void;
|
|
20
|
+
file(action: string, filePath: string): void;
|
|
21
|
+
conversion(from: string, to: string): void;
|
|
22
|
+
todo(message: string): void;
|
|
23
|
+
done(message: string): void;
|
|
24
|
+
summaryBox(title: string, items: {
|
|
25
|
+
label: string;
|
|
26
|
+
value: string;
|
|
27
|
+
type?: 'success' | 'warn' | 'info';
|
|
28
|
+
}[]): void;
|
|
29
|
+
nextSteps(steps: string[]): void;
|
|
30
|
+
blank(): void;
|
|
31
|
+
}
|
|
32
|
+
export declare const logger: Logger;
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAkCH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,cAAM,MAAM;IACV,OAAO,CAAC,OAAO,CAAkB;IAEjC,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAKlC,MAAM,IAAI,IAAI;IASd,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI9B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAO5B,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAK/C,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAO7B,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIhC,OAAO,IAAI,IAAI;IAKf,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAO5C,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAK1C,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK3B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK3B,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,CAAA;KAAE,EAAE,GAAG,IAAI;IAc9G,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAUhC,KAAK,IAAI,IAAI;CAGd;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Logger utility for colored console output with enhanced UX
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.logger = void 0;
|
|
7
|
+
const COLORS = {
|
|
8
|
+
reset: '\x1b[0m',
|
|
9
|
+
bright: '\x1b[1m',
|
|
10
|
+
dim: '\x1b[2m',
|
|
11
|
+
red: '\x1b[31m',
|
|
12
|
+
green: '\x1b[32m',
|
|
13
|
+
yellow: '\x1b[33m',
|
|
14
|
+
blue: '\x1b[34m',
|
|
15
|
+
magenta: '\x1b[35m',
|
|
16
|
+
cyan: '\x1b[36m',
|
|
17
|
+
white: '\x1b[37m',
|
|
18
|
+
bgBlue: '\x1b[44m',
|
|
19
|
+
bgGreen: '\x1b[42m',
|
|
20
|
+
};
|
|
21
|
+
// Emojis for visual feedback
|
|
22
|
+
const ICONS = {
|
|
23
|
+
success: '✓',
|
|
24
|
+
error: '✗',
|
|
25
|
+
warn: '⚠',
|
|
26
|
+
info: 'ℹ',
|
|
27
|
+
step: '→',
|
|
28
|
+
file: '+',
|
|
29
|
+
folder: '📁',
|
|
30
|
+
component: '⚡',
|
|
31
|
+
test: '🧪',
|
|
32
|
+
docs: '📄',
|
|
33
|
+
lightning: '⚡',
|
|
34
|
+
aura: '🌀',
|
|
35
|
+
vf: '📋',
|
|
36
|
+
};
|
|
37
|
+
class Logger {
|
|
38
|
+
verbose = false;
|
|
39
|
+
setVerbose(verbose) {
|
|
40
|
+
this.verbose = verbose;
|
|
41
|
+
}
|
|
42
|
+
// Brand banner for tool startup
|
|
43
|
+
banner() {
|
|
44
|
+
console.log('');
|
|
45
|
+
console.log(`${COLORS.bright}${COLORS.cyan} ╭─────────────────────────────────────────────╮${COLORS.reset}`);
|
|
46
|
+
console.log(`${COLORS.bright}${COLORS.cyan} │${COLORS.reset} ${COLORS.bright}${COLORS.yellow}⚡ LWC Convert${COLORS.reset} ${COLORS.cyan}│${COLORS.reset}`);
|
|
47
|
+
console.log(`${COLORS.bright}${COLORS.cyan} │${COLORS.reset} ${COLORS.dim}Aura & Visualforce → Lightning Web Components${COLORS.reset} ${COLORS.cyan}│${COLORS.reset}`);
|
|
48
|
+
console.log(`${COLORS.bright}${COLORS.cyan} ╰─────────────────────────────────────────────╯${COLORS.reset}`);
|
|
49
|
+
console.log('');
|
|
50
|
+
}
|
|
51
|
+
info(message) {
|
|
52
|
+
console.log(`${COLORS.blue}${ICONS.info}${COLORS.reset} ${message}`);
|
|
53
|
+
}
|
|
54
|
+
success(message) {
|
|
55
|
+
console.log(`${COLORS.green}${ICONS.success}${COLORS.reset} ${message}`);
|
|
56
|
+
}
|
|
57
|
+
warn(message) {
|
|
58
|
+
console.log(`${COLORS.yellow}${ICONS.warn}${COLORS.reset} ${message}`);
|
|
59
|
+
}
|
|
60
|
+
error(message) {
|
|
61
|
+
console.error(`${COLORS.red}${ICONS.error}${COLORS.reset} ${message}`);
|
|
62
|
+
}
|
|
63
|
+
debug(message) {
|
|
64
|
+
if (this.verbose) {
|
|
65
|
+
console.log(`${COLORS.dim} ${message}${COLORS.reset}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// Step indicator with better visual hierarchy
|
|
69
|
+
step(stepNumber, message) {
|
|
70
|
+
console.log(`${COLORS.cyan}${ICONS.step}${COLORS.reset} ${COLORS.dim}Step ${stepNumber}:${COLORS.reset} ${message}`);
|
|
71
|
+
}
|
|
72
|
+
// Section header
|
|
73
|
+
header(message) {
|
|
74
|
+
console.log('');
|
|
75
|
+
console.log(`${COLORS.bright}${COLORS.white} ${message}${COLORS.reset}`);
|
|
76
|
+
console.log(`${COLORS.dim} ${'─'.repeat(message.length + 2)}${COLORS.reset}`);
|
|
77
|
+
}
|
|
78
|
+
// Sub-section for grouping related output
|
|
79
|
+
subheader(message) {
|
|
80
|
+
console.log(`\n${COLORS.dim} ${message}${COLORS.reset}`);
|
|
81
|
+
}
|
|
82
|
+
divider() {
|
|
83
|
+
console.log('');
|
|
84
|
+
}
|
|
85
|
+
// File creation with icon
|
|
86
|
+
file(action, filePath) {
|
|
87
|
+
const icon = filePath.includes('__tests__') ? ICONS.test :
|
|
88
|
+
filePath.endsWith('.md') ? ICONS.docs : ICONS.file;
|
|
89
|
+
console.log(` ${COLORS.green}${icon}${COLORS.reset} ${COLORS.dim}${action}${COLORS.reset} ${filePath}`);
|
|
90
|
+
}
|
|
91
|
+
// Conversion arrow
|
|
92
|
+
conversion(from, to) {
|
|
93
|
+
console.log(` ${COLORS.yellow}${from}${COLORS.reset} ${COLORS.dim}→${COLORS.reset} ${COLORS.green}${to}${COLORS.reset}`);
|
|
94
|
+
}
|
|
95
|
+
// Todo/action item
|
|
96
|
+
todo(message) {
|
|
97
|
+
console.log(` ${COLORS.yellow}○${COLORS.reset} ${message}`);
|
|
98
|
+
}
|
|
99
|
+
// Completed item
|
|
100
|
+
done(message) {
|
|
101
|
+
console.log(` ${COLORS.green}●${COLORS.reset} ${message}`);
|
|
102
|
+
}
|
|
103
|
+
// Summary box for final output
|
|
104
|
+
summaryBox(title, items) {
|
|
105
|
+
console.log('');
|
|
106
|
+
console.log(`${COLORS.bright} ${title}${COLORS.reset}`);
|
|
107
|
+
console.log(`${COLORS.dim} ${'─'.repeat(40)}${COLORS.reset}`);
|
|
108
|
+
for (const item of items) {
|
|
109
|
+
const color = item.type === 'success' ? COLORS.green :
|
|
110
|
+
item.type === 'warn' ? COLORS.yellow : COLORS.white;
|
|
111
|
+
console.log(` ${COLORS.dim}${item.label}:${COLORS.reset} ${color}${item.value}${COLORS.reset}`);
|
|
112
|
+
}
|
|
113
|
+
console.log('');
|
|
114
|
+
}
|
|
115
|
+
// Next steps guidance
|
|
116
|
+
nextSteps(steps) {
|
|
117
|
+
console.log(`${COLORS.bright} Next Steps${COLORS.reset}`);
|
|
118
|
+
console.log(`${COLORS.dim} ${'─'.repeat(40)}${COLORS.reset}`);
|
|
119
|
+
steps.forEach((step, i) => {
|
|
120
|
+
console.log(` ${COLORS.cyan}${i + 1}.${COLORS.reset} ${step}`);
|
|
121
|
+
});
|
|
122
|
+
console.log('');
|
|
123
|
+
}
|
|
124
|
+
// Blank line
|
|
125
|
+
blank() {
|
|
126
|
+
console.log('');
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
exports.logger = new Logger();
|
|
130
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-platform utility to open a folder in the system file explorer
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Opens the specified folder in the system's file explorer.
|
|
6
|
+
* Works on Windows, macOS, and Linux.
|
|
7
|
+
*/
|
|
8
|
+
export declare function openFolder(folderPath: string): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=open-folder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"open-folder.d.ts","sourceRoot":"","sources":["../../src/utils/open-folder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;;GAGG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8B5D"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Cross-platform utility to open a folder in the system file explorer
|
|
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.openFolder = openFolder;
|
|
40
|
+
const child_process_1 = require("child_process");
|
|
41
|
+
const os = __importStar(require("os"));
|
|
42
|
+
/**
|
|
43
|
+
* Opens the specified folder in the system's file explorer.
|
|
44
|
+
* Works on Windows, macOS, and Linux.
|
|
45
|
+
*/
|
|
46
|
+
function openFolder(folderPath) {
|
|
47
|
+
return new Promise((resolve, _reject) => {
|
|
48
|
+
const platform = os.platform();
|
|
49
|
+
let command;
|
|
50
|
+
switch (platform) {
|
|
51
|
+
case 'win32':
|
|
52
|
+
// Windows: use start command which handles paths better
|
|
53
|
+
command = `start "" "${folderPath}"`;
|
|
54
|
+
break;
|
|
55
|
+
case 'darwin':
|
|
56
|
+
// macOS: use open
|
|
57
|
+
command = `open "${folderPath}"`;
|
|
58
|
+
break;
|
|
59
|
+
default:
|
|
60
|
+
// Linux and others: use xdg-open
|
|
61
|
+
command = `xdg-open "${folderPath}"`;
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
(0, child_process_1.exec)(command, (error) => {
|
|
65
|
+
if (error) {
|
|
66
|
+
// Don't fail the whole conversion if we can't open the folder
|
|
67
|
+
console.warn(`Could not open folder: ${error.message}`);
|
|
68
|
+
resolve();
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
resolve();
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=open-folder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"open-folder.js","sourceRoot":"","sources":["../../src/utils/open-folder.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASH,gCA8BC;AArCD,iDAAqC;AACrC,uCAAyB;AAEzB;;;GAGG;AACH,SAAgB,UAAU,CAAC,UAAkB;IAC3C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;QACtC,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAe,CAAC;QAEpB,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,OAAO;gBACV,wDAAwD;gBACxD,OAAO,GAAG,aAAa,UAAU,GAAG,CAAC;gBACrC,MAAM;YACR,KAAK,QAAQ;gBACX,kBAAkB;gBAClB,OAAO,GAAG,SAAS,UAAU,GAAG,CAAC;gBACjC,MAAM;YACR;gBACE,iCAAiC;gBACjC,OAAO,GAAG,aAAa,UAAU,GAAG,CAAC;gBACrC,MAAM;QACV,CAAC;QAED,IAAA,oBAAI,EAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACtB,IAAI,KAAK,EAAE,CAAC;gBACV,8DAA8D;gBAC9D,OAAO,CAAC,IAAI,CAAC,0BAA0B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACxD,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Smart path resolver for Salesforce components
|
|
3
|
+
* Searches common project locations when only a component name is provided
|
|
4
|
+
*/
|
|
5
|
+
export interface ResolvedPath {
|
|
6
|
+
found: boolean;
|
|
7
|
+
path: string;
|
|
8
|
+
searchedLocations?: string[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Resolve an Aura component path
|
|
12
|
+
* If just a name is provided, searches common locations
|
|
13
|
+
*/
|
|
14
|
+
export declare function resolveAuraPath(input: string): Promise<ResolvedPath>;
|
|
15
|
+
/**
|
|
16
|
+
* Resolve a Visualforce page path
|
|
17
|
+
* If just a name is provided, searches common locations
|
|
18
|
+
*/
|
|
19
|
+
export declare function resolveVfPath(input: string): Promise<ResolvedPath>;
|
|
20
|
+
/**
|
|
21
|
+
* Resolve an Apex controller path
|
|
22
|
+
* If just a name is provided, searches common locations
|
|
23
|
+
*/
|
|
24
|
+
export declare function resolveApexPath(input: string): Promise<ResolvedPath>;
|
|
25
|
+
/**
|
|
26
|
+
* Format search locations for user-friendly error message
|
|
27
|
+
*/
|
|
28
|
+
export declare function formatSearchLocations(locations: string[], cwd: string): string;
|
|
29
|
+
//# sourceMappingURL=path-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-resolver.d.ts","sourceRoot":"","sources":["../../src/utils/path-resolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA6BH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAcD;;;GAGG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAoD1E;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAsCxE;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAsC1E;AAyCD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAI9E"}
|