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,21 @@
1
+ /**
2
+ * Parser for Aura JavaScript helper files
3
+ */
4
+ export interface AuraHelperFunction {
5
+ name: string;
6
+ params: string[];
7
+ body: string;
8
+ hasComponent: boolean;
9
+ isAsync: boolean;
10
+ callsOtherHelpers: string[];
11
+ serverCalls: string[];
12
+ }
13
+ export interface ParsedAuraHelper {
14
+ functions: AuraHelperFunction[];
15
+ rawSource: string;
16
+ }
17
+ /**
18
+ * Parse Aura helper JavaScript
19
+ */
20
+ export declare function parseAuraHelper(source: string): ParsedAuraHelper;
21
+ //# sourceMappingURL=helper-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helper-parser.d.ts","sourceRoot":"","sources":["../../../src/parsers/aura/helper-parser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,kBAAkB,EAAE,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;CACnB;AAcD;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAgJhE"}
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+ /**
3
+ * Parser for Aura JavaScript helper 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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.parseAuraHelper = parseAuraHelper;
43
+ const parser = __importStar(require("@babel/parser"));
44
+ const traverse_1 = __importDefault(require("@babel/traverse"));
45
+ const t = __importStar(require("@babel/types"));
46
+ const logger_1 = require("../../utils/logger");
47
+ /**
48
+ * Extract the body of a function as a string
49
+ */
50
+ function extractFunctionBody(node, source) {
51
+ if (node.body.start != null && node.body.end != null) {
52
+ let body = source.substring(node.body.start, node.body.end);
53
+ body = body.replace(/^\{/, '').replace(/\}$/, '').trim();
54
+ return body;
55
+ }
56
+ return '';
57
+ }
58
+ /**
59
+ * Parse Aura helper JavaScript
60
+ */
61
+ function parseAuraHelper(source) {
62
+ const result = {
63
+ functions: [],
64
+ rawSource: source,
65
+ };
66
+ // Handle the Aura helper pattern similar to controller
67
+ let objectSource = source.trim();
68
+ if (objectSource.startsWith('(')) {
69
+ objectSource = objectSource.substring(1);
70
+ }
71
+ if (objectSource.endsWith(')')) {
72
+ objectSource = objectSource.substring(0, objectSource.length - 1);
73
+ }
74
+ const wrappedSource = `const __auraHelper = ${objectSource}`;
75
+ let ast;
76
+ try {
77
+ ast = parser.parse(wrappedSource, {
78
+ sourceType: 'script',
79
+ plugins: [],
80
+ });
81
+ }
82
+ catch (error) {
83
+ logger_1.logger.warn(`Failed to parse helper: ${error.message}`);
84
+ return result;
85
+ }
86
+ // Collect all helper function names first
87
+ const helperFunctionNames = new Set();
88
+ (0, traverse_1.default)(ast, {
89
+ ObjectExpression(path) {
90
+ if (path.parent.type === 'VariableDeclarator' &&
91
+ t.isIdentifier(path.parent.id, {
92
+ name: '__auraHelper',
93
+ })) {
94
+ for (const prop of path.node.properties) {
95
+ if (t.isObjectProperty(prop) && t.isIdentifier(prop.key)) {
96
+ helperFunctionNames.add(prop.key.name);
97
+ }
98
+ }
99
+ }
100
+ },
101
+ });
102
+ // Now parse each function
103
+ (0, traverse_1.default)(ast, {
104
+ ObjectExpression(path) {
105
+ if (path.parent.type === 'VariableDeclarator' &&
106
+ t.isIdentifier(path.parent.id, {
107
+ name: '__auraHelper',
108
+ })) {
109
+ for (const prop of path.node.properties) {
110
+ if (t.isObjectProperty(prop) &&
111
+ t.isIdentifier(prop.key) &&
112
+ t.isFunctionExpression(prop.value)) {
113
+ const funcName = prop.key.name;
114
+ const funcExpr = prop.value;
115
+ const funcDef = {
116
+ name: funcName,
117
+ params: funcExpr.params
118
+ .filter((p) => t.isIdentifier(p))
119
+ .map((p) => p.name),
120
+ body: extractFunctionBody(funcExpr, wrappedSource),
121
+ hasComponent: false,
122
+ isAsync: funcExpr.async || false,
123
+ callsOtherHelpers: [],
124
+ serverCalls: [],
125
+ };
126
+ // Check if has component parameter
127
+ funcDef.hasComponent = funcDef.params.some((p) => p === 'component' || p === 'cmp');
128
+ // Traverse function body
129
+ const funcPath = path.get('properties').find((propPath) => {
130
+ const propNode = propPath.node;
131
+ return (t.isObjectProperty(propNode) &&
132
+ t.isIdentifier(propNode.key, { name: funcName }));
133
+ });
134
+ if (funcPath) {
135
+ funcPath.traverse({
136
+ CallExpression(callPath) {
137
+ const callee = callPath.node.callee;
138
+ // Check for calls to other helper functions (this.otherHelper or direct name)
139
+ if (t.isMemberExpression(callee)) {
140
+ if (t.isThisExpression(callee.object) &&
141
+ t.isIdentifier(callee.property)) {
142
+ const calledName = callee.property.name;
143
+ if (helperFunctionNames.has(calledName) &&
144
+ calledName !== funcName) {
145
+ funcDef.callsOtherHelpers.push(calledName);
146
+ }
147
+ }
148
+ }
149
+ // Check for server action patterns
150
+ if (t.isMemberExpression(callee) &&
151
+ t.isIdentifier(callee.property, { name: 'get' })) {
152
+ const args = callPath.node.arguments;
153
+ if (args.length > 0 && t.isStringLiteral(args[0])) {
154
+ const value = args[0].value;
155
+ if (value.startsWith('c.')) {
156
+ funcDef.serverCalls.push(value.substring(2));
157
+ }
158
+ }
159
+ }
160
+ },
161
+ });
162
+ }
163
+ result.functions.push(funcDef);
164
+ logger_1.logger.debug(`Parsed helper function: ${funcName}(${funcDef.params.join(', ')})`);
165
+ }
166
+ }
167
+ }
168
+ },
169
+ });
170
+ logger_1.logger.debug(`Parsed ${result.functions.length} helper functions`);
171
+ return result;
172
+ }
173
+ //# sourceMappingURL=helper-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helper-parser.js","sourceRoot":"","sources":["../../../src/parsers/aura/helper-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Parser for Aura component markup (.cmp files)
3
+ */
4
+ import { Node } from 'domhandler';
5
+ export interface AuraAttribute {
6
+ name: string;
7
+ type: string;
8
+ default?: string;
9
+ description?: string;
10
+ required?: boolean;
11
+ access?: string;
12
+ }
13
+ export interface AuraHandler {
14
+ name: string;
15
+ event: string;
16
+ action: string;
17
+ phase?: string;
18
+ }
19
+ export interface AuraEvent {
20
+ name: string;
21
+ type: string;
22
+ }
23
+ export interface AuraMethod {
24
+ name: string;
25
+ action: string;
26
+ attributes: Array<{
27
+ name: string;
28
+ type: string;
29
+ }>;
30
+ }
31
+ export interface AuraExpression {
32
+ original: string;
33
+ type: 'attribute' | 'controller' | 'helper' | 'label' | 'globalId' | 'other';
34
+ reference: string;
35
+ }
36
+ export interface ParsedAuraMarkup {
37
+ componentName: string;
38
+ implements?: string[];
39
+ extensible?: boolean;
40
+ abstract?: boolean;
41
+ controller?: string;
42
+ attributes: AuraAttribute[];
43
+ handlers: AuraHandler[];
44
+ registeredEvents: AuraEvent[];
45
+ methods: AuraMethod[];
46
+ body: Node[];
47
+ expressions: AuraExpression[];
48
+ dependencies: string[];
49
+ facets: Map<string, Node[]>;
50
+ }
51
+ /**
52
+ * Parse Aura component markup
53
+ */
54
+ export declare function parseAuraMarkup(markup: string, componentName: string): ParsedAuraMarkup;
55
+ /**
56
+ * Serialize DOM nodes back to string (for debugging)
57
+ */
58
+ export declare function serializeNodes(nodes: Node[]): string;
59
+ //# sourceMappingURL=markup-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markup-parser.d.ts","sourceRoot":"","sources":["../../../src/parsers/aura/markup-parser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAuB,IAAI,EAAQ,MAAM,YAAY,CAAC;AAG7D,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,WAAW,GAAG,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;IAC7E,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,gBAAgB,EAAE,SAAS,EAAE,CAAC;IAC9B,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,IAAI,EAAE,IAAI,EAAE,CAAC;IACb,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;CAC7B;AAyED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,gBAAgB,CA0LvF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,CAGpD"}
@@ -0,0 +1,279 @@
1
+ "use strict";
2
+ /**
3
+ * Parser for Aura component markup (.cmp 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.parseAuraMarkup = parseAuraMarkup;
40
+ exports.serializeNodes = serializeNodes;
41
+ const htmlparser2 = __importStar(require("htmlparser2"));
42
+ const domhandler_1 = require("domhandler");
43
+ const logger_1 = require("../../utils/logger");
44
+ /**
45
+ * Extract expressions from Aura markup (e.g., {!v.name}, {!c.handleClick})
46
+ */
47
+ function extractExpressions(content) {
48
+ const expressions = [];
49
+ const regex = /\{!([^}]+)\}/g;
50
+ let match;
51
+ while ((match = regex.exec(content)) !== null) {
52
+ const expr = match[1].trim();
53
+ let type = 'other';
54
+ let reference = expr;
55
+ if (expr.startsWith('v.')) {
56
+ type = 'attribute';
57
+ reference = expr.substring(2);
58
+ }
59
+ else if (expr.startsWith('c.')) {
60
+ type = 'controller';
61
+ reference = expr.substring(2);
62
+ }
63
+ else if (expr.startsWith('helper.')) {
64
+ type = 'helper';
65
+ reference = expr.substring(7);
66
+ }
67
+ else if (expr.startsWith('$Label.')) {
68
+ type = 'label';
69
+ reference = expr.substring(7);
70
+ }
71
+ else if (expr === 'globalId') {
72
+ type = 'globalId';
73
+ }
74
+ expressions.push({
75
+ original: match[0],
76
+ type,
77
+ reference,
78
+ });
79
+ }
80
+ return expressions;
81
+ }
82
+ /**
83
+ * Find all component dependencies in markup
84
+ */
85
+ function findDependencies(nodes) {
86
+ const deps = new Set();
87
+ function traverse(node) {
88
+ if (node.type === 'tag') {
89
+ const element = node;
90
+ const tagName = element.name;
91
+ // Track lightning:*, ui:*, force:*, and custom c:* components
92
+ if (tagName.startsWith('lightning:') ||
93
+ tagName.startsWith('ui:') ||
94
+ tagName.startsWith('force:') ||
95
+ tagName.startsWith('c:')) {
96
+ deps.add(tagName);
97
+ }
98
+ // Recurse into children
99
+ if (element.children) {
100
+ element.children.forEach(traverse);
101
+ }
102
+ }
103
+ }
104
+ nodes.forEach(traverse);
105
+ return Array.from(deps);
106
+ }
107
+ /**
108
+ * Parse Aura component markup
109
+ */
110
+ function parseAuraMarkup(markup, componentName) {
111
+ const result = {
112
+ componentName,
113
+ attributes: [],
114
+ handlers: [],
115
+ registeredEvents: [],
116
+ methods: [],
117
+ body: [],
118
+ expressions: [],
119
+ dependencies: [],
120
+ facets: new Map(),
121
+ };
122
+ // Parse HTML/XML
123
+ const handler = new domhandler_1.DomHandler((error, _dom) => {
124
+ if (error) {
125
+ throw new Error(`Failed to parse Aura markup: ${error.message}`);
126
+ }
127
+ });
128
+ const parser = new htmlparser2.Parser(handler, {
129
+ xmlMode: true,
130
+ recognizeSelfClosing: true,
131
+ });
132
+ parser.write(markup);
133
+ parser.end();
134
+ const dom = handler.dom;
135
+ // Find aura:component root
136
+ function findAuraComponent(nodes) {
137
+ for (const node of nodes) {
138
+ if (node.type === 'tag') {
139
+ const element = node;
140
+ if (element.name === 'aura:component') {
141
+ return element;
142
+ }
143
+ if (element.children) {
144
+ const found = findAuraComponent(element.children);
145
+ if (found)
146
+ return found;
147
+ }
148
+ }
149
+ }
150
+ return null;
151
+ }
152
+ const auraComponent = findAuraComponent(dom);
153
+ if (!auraComponent) {
154
+ throw new Error('No <aura:component> found in markup');
155
+ }
156
+ // Extract component-level attributes
157
+ const attrs = auraComponent.attribs || {};
158
+ if (attrs.implements) {
159
+ result.implements = attrs.implements.split(',').map((s) => s.trim());
160
+ }
161
+ if (attrs.extensible === 'true') {
162
+ result.extensible = true;
163
+ }
164
+ if (attrs.abstract === 'true') {
165
+ result.abstract = true;
166
+ }
167
+ if (attrs.controller) {
168
+ result.controller = attrs.controller;
169
+ }
170
+ // Process children of aura:component
171
+ const bodyNodes = [];
172
+ for (const child of auraComponent.children || []) {
173
+ if (child.type === 'tag') {
174
+ const element = child;
175
+ switch (element.name) {
176
+ case 'aura:attribute': {
177
+ const attrDef = {
178
+ name: element.attribs.name || '',
179
+ type: element.attribs.type || 'String',
180
+ };
181
+ if (element.attribs.default !== undefined) {
182
+ attrDef.default = element.attribs.default;
183
+ }
184
+ if (element.attribs.description) {
185
+ attrDef.description = element.attribs.description;
186
+ }
187
+ if (element.attribs.required === 'true') {
188
+ attrDef.required = true;
189
+ }
190
+ if (element.attribs.access) {
191
+ attrDef.access = element.attribs.access;
192
+ }
193
+ result.attributes.push(attrDef);
194
+ logger_1.logger.debug(`Found attribute: ${attrDef.name} (${attrDef.type})`);
195
+ break;
196
+ }
197
+ case 'aura:handler': {
198
+ const handlerDef = {
199
+ name: element.attribs.name || '',
200
+ event: element.attribs.event || '',
201
+ action: element.attribs.action || '',
202
+ };
203
+ if (element.attribs.phase) {
204
+ handlerDef.phase = element.attribs.phase;
205
+ }
206
+ result.handlers.push(handlerDef);
207
+ logger_1.logger.debug(`Found handler: ${handlerDef.name} -> ${handlerDef.action}`);
208
+ break;
209
+ }
210
+ case 'aura:registerEvent': {
211
+ const eventDef = {
212
+ name: element.attribs.name || '',
213
+ type: element.attribs.type || '',
214
+ };
215
+ result.registeredEvents.push(eventDef);
216
+ logger_1.logger.debug(`Found registered event: ${eventDef.name}`);
217
+ break;
218
+ }
219
+ case 'aura:method': {
220
+ const methodDef = {
221
+ name: element.attribs.name || '',
222
+ action: element.attribs.action || '',
223
+ attributes: [],
224
+ };
225
+ // Parse method attributes
226
+ for (const methodChild of element.children || []) {
227
+ if (methodChild.type === 'tag' &&
228
+ methodChild.name === 'aura:attribute') {
229
+ const methodAttr = methodChild;
230
+ methodDef.attributes.push({
231
+ name: methodAttr.attribs.name || '',
232
+ type: methodAttr.attribs.type || 'Object',
233
+ });
234
+ }
235
+ }
236
+ result.methods.push(methodDef);
237
+ logger_1.logger.debug(`Found method: ${methodDef.name}`);
238
+ break;
239
+ }
240
+ case 'aura:set': {
241
+ // Handle facet/slot content
242
+ const facetAttr = element.attribs.attribute;
243
+ if (facetAttr) {
244
+ result.facets.set(facetAttr, element.children || []);
245
+ }
246
+ break;
247
+ }
248
+ default:
249
+ // Add to body
250
+ bodyNodes.push(child);
251
+ }
252
+ }
253
+ else if (child.type === 'text') {
254
+ const text = child;
255
+ if (text.data.trim()) {
256
+ bodyNodes.push(child);
257
+ }
258
+ }
259
+ }
260
+ result.body = bodyNodes;
261
+ // Extract all expressions from markup
262
+ result.expressions = extractExpressions(markup);
263
+ // Find component dependencies
264
+ result.dependencies = findDependencies(bodyNodes);
265
+ logger_1.logger.debug(`Parsed ${result.attributes.length} attributes`);
266
+ logger_1.logger.debug(`Parsed ${result.handlers.length} handlers`);
267
+ logger_1.logger.debug(`Parsed ${result.registeredEvents.length} events`);
268
+ logger_1.logger.debug(`Found ${result.expressions.length} expressions`);
269
+ logger_1.logger.debug(`Found ${result.dependencies.length} dependencies`);
270
+ return result;
271
+ }
272
+ /**
273
+ * Serialize DOM nodes back to string (for debugging)
274
+ */
275
+ function serializeNodes(nodes) {
276
+ const { render } = require('dom-serializer');
277
+ return render(nodes, { xmlMode: true });
278
+ }
279
+ //# sourceMappingURL=markup-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markup-parser.js","sourceRoot":"","sources":["../../../src/parsers/aura/markup-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Parser for Aura CSS style files
3
+ */
4
+ export interface CssRule {
5
+ selector: string;
6
+ declarations: CssDeclaration[];
7
+ isThisScoped: boolean;
8
+ }
9
+ export interface CssDeclaration {
10
+ property: string;
11
+ value: string;
12
+ important: boolean;
13
+ }
14
+ export interface CssAtRule {
15
+ name: string;
16
+ params: string;
17
+ rules: CssRule[];
18
+ }
19
+ export interface ParsedAuraStyle {
20
+ rules: CssRule[];
21
+ atRules: CssAtRule[];
22
+ usesThisSelector: boolean;
23
+ usesTokens: boolean;
24
+ tokenReferences: string[];
25
+ rawSource: string;
26
+ }
27
+ /**
28
+ * Parse Aura CSS styles
29
+ */
30
+ export declare function parseAuraStyle(source: string): ParsedAuraStyle;
31
+ /**
32
+ * Convert Aura CSS to LWC CSS
33
+ * - Removes .THIS prefix (LWC auto-scopes)
34
+ * - Converts token() to CSS custom properties where possible
35
+ */
36
+ export declare function convertAuraStyleToLwc(parsed: ParsedAuraStyle): string;
37
+ //# sourceMappingURL=style-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style-parser.d.ts","sourceRoot":"","sources":["../../../src/parsers/aura/style-parser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AA8CD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CA+E9D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CA2BrE"}