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,240 @@
1
+ "use strict";
2
+ /**
3
+ * Smart path resolver for Salesforce components
4
+ * Searches common project locations when only a component name is provided
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.resolveAuraPath = resolveAuraPath;
41
+ exports.resolveVfPath = resolveVfPath;
42
+ exports.resolveApexPath = resolveApexPath;
43
+ exports.formatSearchLocations = formatSearchLocations;
44
+ const path = __importStar(require("path"));
45
+ const fs = __importStar(require("fs-extra"));
46
+ // Common Aura component locations in Salesforce projects
47
+ const AURA_SEARCH_PATHS = [
48
+ 'force-app/main/default/aura',
49
+ 'src/aura',
50
+ 'aura',
51
+ 'force-app/main/aura',
52
+ ];
53
+ // Common Visualforce page locations in Salesforce projects
54
+ const VF_SEARCH_PATHS = [
55
+ 'force-app/main/default/pages',
56
+ 'src/pages',
57
+ 'pages',
58
+ 'force-app/main/pages',
59
+ ];
60
+ // Common Apex controller locations
61
+ const APEX_SEARCH_PATHS = [
62
+ 'force-app/main/default/classes',
63
+ 'src/classes',
64
+ 'classes',
65
+ 'force-app/main/classes',
66
+ ];
67
+ /**
68
+ * Check if a path looks like a full path (has directory separators or starts with . or /)
69
+ */
70
+ function isFullPath(inputPath) {
71
+ return (inputPath.includes('/') ||
72
+ inputPath.includes('\\') ||
73
+ inputPath.startsWith('.') ||
74
+ path.isAbsolute(inputPath));
75
+ }
76
+ /**
77
+ * Resolve an Aura component path
78
+ * If just a name is provided, searches common locations
79
+ */
80
+ async function resolveAuraPath(input) {
81
+ // If it's already a full path, just return it
82
+ if (isFullPath(input)) {
83
+ const resolved = path.resolve(input);
84
+ return {
85
+ found: await fs.pathExists(resolved),
86
+ path: resolved,
87
+ };
88
+ }
89
+ // It's just a component name - search for it
90
+ const componentName = input;
91
+ const cwd = process.cwd();
92
+ const searchedLocations = [];
93
+ for (const searchPath of AURA_SEARCH_PATHS) {
94
+ const fullPath = path.join(cwd, searchPath, componentName);
95
+ searchedLocations.push(fullPath);
96
+ if (await fs.pathExists(fullPath)) {
97
+ // Verify it has a .cmp file
98
+ const cmpFile = path.join(fullPath, `${componentName}.cmp`);
99
+ if (await fs.pathExists(cmpFile)) {
100
+ return {
101
+ found: true,
102
+ path: fullPath,
103
+ searchedLocations,
104
+ };
105
+ }
106
+ }
107
+ }
108
+ // Also search recursively in case of nested structure
109
+ for (const searchPath of AURA_SEARCH_PATHS) {
110
+ const basePath = path.join(cwd, searchPath);
111
+ if (await fs.pathExists(basePath)) {
112
+ const found = await searchForComponent(basePath, componentName, '.cmp');
113
+ if (found) {
114
+ return {
115
+ found: true,
116
+ path: found,
117
+ searchedLocations,
118
+ };
119
+ }
120
+ }
121
+ }
122
+ return {
123
+ found: false,
124
+ path: input,
125
+ searchedLocations,
126
+ };
127
+ }
128
+ /**
129
+ * Resolve a Visualforce page path
130
+ * If just a name is provided, searches common locations
131
+ */
132
+ async function resolveVfPath(input) {
133
+ // If it's already a full path, just return it
134
+ if (isFullPath(input)) {
135
+ const resolved = path.resolve(input);
136
+ return {
137
+ found: await fs.pathExists(resolved),
138
+ path: resolved,
139
+ };
140
+ }
141
+ // It's just a page name - search for it
142
+ let pageName = input;
143
+ // Add .page extension if not present
144
+ if (!pageName.endsWith('.page')) {
145
+ pageName = `${pageName}.page`;
146
+ }
147
+ const cwd = process.cwd();
148
+ const searchedLocations = [];
149
+ for (const searchPath of VF_SEARCH_PATHS) {
150
+ const fullPath = path.join(cwd, searchPath, pageName);
151
+ searchedLocations.push(fullPath);
152
+ if (await fs.pathExists(fullPath)) {
153
+ return {
154
+ found: true,
155
+ path: fullPath,
156
+ searchedLocations,
157
+ };
158
+ }
159
+ }
160
+ return {
161
+ found: false,
162
+ path: input,
163
+ searchedLocations,
164
+ };
165
+ }
166
+ /**
167
+ * Resolve an Apex controller path
168
+ * If just a name is provided, searches common locations
169
+ */
170
+ async function resolveApexPath(input) {
171
+ // If it's already a full path, just return it
172
+ if (isFullPath(input)) {
173
+ const resolved = path.resolve(input);
174
+ return {
175
+ found: await fs.pathExists(resolved),
176
+ path: resolved,
177
+ };
178
+ }
179
+ // It's just a class name - search for it
180
+ let className = input;
181
+ // Add .cls extension if not present
182
+ if (!className.endsWith('.cls')) {
183
+ className = `${className}.cls`;
184
+ }
185
+ const cwd = process.cwd();
186
+ const searchedLocations = [];
187
+ for (const searchPath of APEX_SEARCH_PATHS) {
188
+ const fullPath = path.join(cwd, searchPath, className);
189
+ searchedLocations.push(fullPath);
190
+ if (await fs.pathExists(fullPath)) {
191
+ return {
192
+ found: true,
193
+ path: fullPath,
194
+ searchedLocations,
195
+ };
196
+ }
197
+ }
198
+ return {
199
+ found: false,
200
+ path: input,
201
+ searchedLocations,
202
+ };
203
+ }
204
+ /**
205
+ * Recursively search for a component in a directory
206
+ */
207
+ async function searchForComponent(baseDir, componentName, extension) {
208
+ try {
209
+ const entries = await fs.readdir(baseDir, { withFileTypes: true });
210
+ for (const entry of entries) {
211
+ if (entry.isDirectory()) {
212
+ if (entry.name === componentName) {
213
+ const componentPath = path.join(baseDir, entry.name);
214
+ const mainFile = path.join(componentPath, `${componentName}${extension}`);
215
+ if (await fs.pathExists(mainFile)) {
216
+ return componentPath;
217
+ }
218
+ }
219
+ // Search subdirectories (but not too deep)
220
+ const subResult = await searchForComponent(path.join(baseDir, entry.name), componentName, extension);
221
+ if (subResult) {
222
+ return subResult;
223
+ }
224
+ }
225
+ }
226
+ }
227
+ catch {
228
+ // Ignore errors (permission issues, etc.)
229
+ }
230
+ return null;
231
+ }
232
+ /**
233
+ * Format search locations for user-friendly error message
234
+ */
235
+ function formatSearchLocations(locations, cwd) {
236
+ return locations
237
+ .map((loc) => ` - ${path.relative(cwd, loc) || loc}`)
238
+ .join('\n');
239
+ }
240
+ //# sourceMappingURL=path-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-resolver.js","sourceRoot":"","sources":["../../src/utils/path-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * Session Store - Stores conversion data in a temp folder during user's session
3
+ *
4
+ * This allows the tool to:
5
+ * 1. Learn from past conversions in the session
6
+ * 2. Provide suggestions based on similar patterns
7
+ * 3. Track conversion success/failure rates
8
+ * 4. Reuse behavior mappings for similar components
9
+ */
10
+ import { TestComparisonResult } from '../generators/test-comparison';
11
+ export interface ConversionRecord {
12
+ id: string;
13
+ timestamp: Date;
14
+ sourceType: 'aura' | 'vf';
15
+ sourceName: string;
16
+ targetName: string;
17
+ sourcePath: string;
18
+ outputPath: string;
19
+ behaviorCount: number;
20
+ behaviors: BehaviorSummary[];
21
+ patterns: PatternRecord[];
22
+ warnings: string[];
23
+ success: boolean;
24
+ testResults?: TestResultSummary;
25
+ }
26
+ export interface BehaviorSummary {
27
+ id: string;
28
+ category: string;
29
+ name: string;
30
+ auraPattern: string;
31
+ lwcPattern: string;
32
+ verified?: boolean;
33
+ }
34
+ export interface PatternRecord {
35
+ type: 'component' | 'expression' | 'event' | 'apex' | 'lms' | 'lifecycle';
36
+ auraPattern: string;
37
+ lwcPattern: string;
38
+ frequency: number;
39
+ successRate: number;
40
+ }
41
+ export interface TestResultSummary {
42
+ totalTests: number;
43
+ passed: number;
44
+ failed: number;
45
+ skipped: number;
46
+ runAt?: Date;
47
+ }
48
+ export interface SessionSummary {
49
+ sessionId: string;
50
+ startedAt: Date;
51
+ conversions: number;
52
+ totalBehaviors: number;
53
+ patternLibrary: PatternRecord[];
54
+ commonWarnings: Array<{
55
+ warning: string;
56
+ count: number;
57
+ }>;
58
+ }
59
+ declare class SessionStore {
60
+ private sessionId;
61
+ private sessionDir;
62
+ private conversions;
63
+ private patternLibrary;
64
+ private initialized;
65
+ private startedAt;
66
+ constructor();
67
+ /**
68
+ * Try to load an existing active session
69
+ */
70
+ private tryLoadExistingSession;
71
+ /**
72
+ * Load conversions from session directory
73
+ */
74
+ private loadConversions;
75
+ /**
76
+ * Create a new session
77
+ */
78
+ private createNewSession;
79
+ /**
80
+ * Update the active session file
81
+ */
82
+ private updateActiveSessionFile;
83
+ /**
84
+ * Initialize the session store (creates temp directory or loads existing session)
85
+ */
86
+ init(): Promise<void>;
87
+ /**
88
+ * Get the session directory path
89
+ */
90
+ getSessionDir(): string;
91
+ /**
92
+ * Get the session ID
93
+ */
94
+ getSessionId(): string;
95
+ /**
96
+ * Store a conversion record
97
+ */
98
+ storeConversion(sourceType: 'aura' | 'vf', sourceName: string, targetName: string, sourcePath: string, outputPath: string, testComparison: TestComparisonResult, warnings: string[]): Promise<ConversionRecord>;
99
+ /**
100
+ * Extract patterns from behavior tests
101
+ */
102
+ private extractPatterns;
103
+ /**
104
+ * Categorize pattern type
105
+ */
106
+ private categorizePattern;
107
+ /**
108
+ * Update pattern library with new patterns
109
+ */
110
+ private updatePatternLibrary;
111
+ /**
112
+ * Get suggestions based on past conversions
113
+ */
114
+ getSuggestions(auraPattern: string): PatternRecord[];
115
+ /**
116
+ * Get common patterns for a specific type
117
+ */
118
+ getCommonPatterns(type: PatternRecord['type']): PatternRecord[];
119
+ /**
120
+ * Get all conversions in this session
121
+ */
122
+ getConversions(): ConversionRecord[];
123
+ /**
124
+ * Get conversion by ID
125
+ */
126
+ getConversion(id: string): ConversionRecord | undefined;
127
+ /**
128
+ * Update test results for a conversion
129
+ */
130
+ updateTestResults(conversionId: string, results: TestResultSummary): Promise<void>;
131
+ /**
132
+ * Get session summary
133
+ */
134
+ getSessionSummary(): SessionSummary;
135
+ /**
136
+ * Save session summary to file
137
+ */
138
+ private saveSessionSummary;
139
+ /**
140
+ * Generate a report of all conversions in the session
141
+ */
142
+ generateSessionReport(): string;
143
+ /**
144
+ * Clean up session data (call on exit if desired)
145
+ */
146
+ cleanup(): Promise<void>;
147
+ /**
148
+ * Check if a similar component has been converted before
149
+ */
150
+ findSimilarConversion(componentName: string): ConversionRecord | undefined;
151
+ /**
152
+ * Get behavior suggestions based on component type and past conversions
153
+ */
154
+ getBehaviorSuggestions(componentType: 'aura' | 'vf', behaviors: string[]): string[];
155
+ }
156
+ export declare const sessionStore: SessionStore;
157
+ export {};
158
+ //# sourceMappingURL=session-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../src/utils/session-store.ts"],"names":[],"mappings":"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"}