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.
Files changed (117) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +719 -0
  3. package/dist/cli/commands/aura.d.ts +6 -0
  4. package/dist/cli/commands/aura.d.ts.map +1 -0
  5. package/dist/cli/commands/aura.js +225 -0
  6. package/dist/cli/commands/aura.js.map +1 -0
  7. package/dist/cli/commands/vf.d.ts +6 -0
  8. package/dist/cli/commands/vf.d.ts.map +1 -0
  9. package/dist/cli/commands/vf.js +218 -0
  10. package/dist/cli/commands/vf.js.map +1 -0
  11. package/dist/cli/interactive.d.ts +20 -0
  12. package/dist/cli/interactive.d.ts.map +1 -0
  13. package/dist/cli/interactive.js +577 -0
  14. package/dist/cli/interactive.js.map +1 -0
  15. package/dist/cli/options.d.ts +21 -0
  16. package/dist/cli/options.d.ts.map +1 -0
  17. package/dist/cli/options.js +24 -0
  18. package/dist/cli/options.js.map +1 -0
  19. package/dist/generators/full-conversion.d.ts +41 -0
  20. package/dist/generators/full-conversion.d.ts.map +1 -0
  21. package/dist/generators/full-conversion.js +538 -0
  22. package/dist/generators/full-conversion.js.map +1 -0
  23. package/dist/generators/scaffolding.d.ts +40 -0
  24. package/dist/generators/scaffolding.d.ts.map +1 -0
  25. package/dist/generators/scaffolding.js +716 -0
  26. package/dist/generators/scaffolding.js.map +1 -0
  27. package/dist/generators/test-comparison.d.ts +47 -0
  28. package/dist/generators/test-comparison.d.ts.map +1 -0
  29. package/dist/generators/test-comparison.js +855 -0
  30. package/dist/generators/test-comparison.js.map +1 -0
  31. package/dist/generators/test-generator.d.ts +27 -0
  32. package/dist/generators/test-generator.d.ts.map +1 -0
  33. package/dist/generators/test-generator.js +385 -0
  34. package/dist/generators/test-generator.js.map +1 -0
  35. package/dist/index.d.ts +6 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +226 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/mappings/aura-to-lwc.json +321 -0
  40. package/dist/mappings/vf-to-lwc.json +354 -0
  41. package/dist/parsers/aura/controller-parser.d.ts +36 -0
  42. package/dist/parsers/aura/controller-parser.d.ts.map +1 -0
  43. package/dist/parsers/aura/controller-parser.js +269 -0
  44. package/dist/parsers/aura/controller-parser.js.map +1 -0
  45. package/dist/parsers/aura/helper-parser.d.ts +21 -0
  46. package/dist/parsers/aura/helper-parser.d.ts.map +1 -0
  47. package/dist/parsers/aura/helper-parser.js +173 -0
  48. package/dist/parsers/aura/helper-parser.js.map +1 -0
  49. package/dist/parsers/aura/markup-parser.d.ts +59 -0
  50. package/dist/parsers/aura/markup-parser.d.ts.map +1 -0
  51. package/dist/parsers/aura/markup-parser.js +279 -0
  52. package/dist/parsers/aura/markup-parser.js.map +1 -0
  53. package/dist/parsers/aura/style-parser.d.ts +37 -0
  54. package/dist/parsers/aura/style-parser.d.ts.map +1 -0
  55. package/dist/parsers/aura/style-parser.js +151 -0
  56. package/dist/parsers/aura/style-parser.js.map +1 -0
  57. package/dist/parsers/vf/apex-parser.d.ts +51 -0
  58. package/dist/parsers/vf/apex-parser.d.ts.map +1 -0
  59. package/dist/parsers/vf/apex-parser.js +251 -0
  60. package/dist/parsers/vf/apex-parser.js.map +1 -0
  61. package/dist/parsers/vf/page-parser.d.ts +61 -0
  62. package/dist/parsers/vf/page-parser.d.ts.map +1 -0
  63. package/dist/parsers/vf/page-parser.js +403 -0
  64. package/dist/parsers/vf/page-parser.js.map +1 -0
  65. package/dist/transformers/aura-to-lwc/controller.d.ts +36 -0
  66. package/dist/transformers/aura-to-lwc/controller.d.ts.map +1 -0
  67. package/dist/transformers/aura-to-lwc/controller.js +372 -0
  68. package/dist/transformers/aura-to-lwc/controller.js.map +1 -0
  69. package/dist/transformers/aura-to-lwc/events.d.ts +47 -0
  70. package/dist/transformers/aura-to-lwc/events.d.ts.map +1 -0
  71. package/dist/transformers/aura-to-lwc/events.js +262 -0
  72. package/dist/transformers/aura-to-lwc/events.js.map +1 -0
  73. package/dist/transformers/aura-to-lwc/markup.d.ts +51 -0
  74. package/dist/transformers/aura-to-lwc/markup.d.ts.map +1 -0
  75. package/dist/transformers/aura-to-lwc/markup.js +465 -0
  76. package/dist/transformers/aura-to-lwc/markup.js.map +1 -0
  77. package/dist/transformers/vf-to-lwc/components.d.ts +40 -0
  78. package/dist/transformers/vf-to-lwc/components.d.ts.map +1 -0
  79. package/dist/transformers/vf-to-lwc/components.js +374 -0
  80. package/dist/transformers/vf-to-lwc/components.js.map +1 -0
  81. package/dist/transformers/vf-to-lwc/data-binding.d.ts +53 -0
  82. package/dist/transformers/vf-to-lwc/data-binding.d.ts.map +1 -0
  83. package/dist/transformers/vf-to-lwc/data-binding.js +660 -0
  84. package/dist/transformers/vf-to-lwc/data-binding.js.map +1 -0
  85. package/dist/transformers/vf-to-lwc/markup.d.ts +44 -0
  86. package/dist/transformers/vf-to-lwc/markup.d.ts.map +1 -0
  87. package/dist/transformers/vf-to-lwc/markup.js +816 -0
  88. package/dist/transformers/vf-to-lwc/markup.js.map +1 -0
  89. package/dist/utils/confidence-scorer.d.ts +100 -0
  90. package/dist/utils/confidence-scorer.d.ts.map +1 -0
  91. package/dist/utils/confidence-scorer.js +358 -0
  92. package/dist/utils/confidence-scorer.js.map +1 -0
  93. package/dist/utils/file-io.d.ts +62 -0
  94. package/dist/utils/file-io.d.ts.map +1 -0
  95. package/dist/utils/file-io.js +248 -0
  96. package/dist/utils/file-io.js.map +1 -0
  97. package/dist/utils/logger.d.ts +34 -0
  98. package/dist/utils/logger.d.ts.map +1 -0
  99. package/dist/utils/logger.js +130 -0
  100. package/dist/utils/logger.js.map +1 -0
  101. package/dist/utils/open-folder.d.ts +9 -0
  102. package/dist/utils/open-folder.d.ts.map +1 -0
  103. package/dist/utils/open-folder.js +76 -0
  104. package/dist/utils/open-folder.js.map +1 -0
  105. package/dist/utils/path-resolver.d.ts +29 -0
  106. package/dist/utils/path-resolver.d.ts.map +1 -0
  107. package/dist/utils/path-resolver.js +240 -0
  108. package/dist/utils/path-resolver.js.map +1 -0
  109. package/dist/utils/session-store.d.ts +158 -0
  110. package/dist/utils/session-store.d.ts.map +1 -0
  111. package/dist/utils/session-store.js +518 -0
  112. package/dist/utils/session-store.js.map +1 -0
  113. package/dist/utils/vf-controller-resolver.d.ts +36 -0
  114. package/dist/utils/vf-controller-resolver.d.ts.map +1 -0
  115. package/dist/utils/vf-controller-resolver.js +162 -0
  116. package/dist/utils/vf-controller-resolver.js.map +1 -0
  117. 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"}