@litsx/babel-preset-litsx 0.8.2 → 0.9.1

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.
@@ -238,6 +238,46 @@ function mergeStaticPropsIntoProperties(propertiesStatic, staticProps) {
238
238
  });
239
239
  }
240
240
 
241
+ function normalizePropertiesIr(staticIr, renderStatements) {
242
+ const properties = {
243
+ inferred: (staticIr?.properties?.inferred || []).map((entry, index) => ({
244
+ index: entry.index ?? index,
245
+ expression: entry.expression ? t.cloneNode(entry.expression) : null,
246
+ })),
247
+ authored: (staticIr?.properties?.authored || []).map((entry, index) => ({
248
+ index: entry.index ?? index,
249
+ expression: entry.expression ? t.cloneNode(entry.expression) : null,
250
+ })),
251
+ legacy: (staticIr?.properties?.legacy || []).map((entry, index) => ({
252
+ index: entry.index ?? index,
253
+ expression: entry.expression ? t.cloneNode(entry.expression) : null,
254
+ })),
255
+ };
256
+
257
+ if (!staticIr && Array.isArray(renderStatements)) {
258
+ renderStatements.forEach((statement, index) => {
259
+ const propertyOptions = getStaticPropsExpression(statement);
260
+ if (!propertyOptions) return;
261
+
262
+ if (propertyOptions.__litsxHoistedProperties) {
263
+ properties.authored.push({
264
+ index,
265
+ expression: propertyOptions.expression,
266
+ });
267
+ } else {
268
+ properties.legacy.push({
269
+ index,
270
+ expression: propertyOptions,
271
+ });
272
+ }
273
+ });
274
+ }
275
+
276
+ properties.authored.sort((left, right) => left.index - right.index);
277
+ properties.legacy.sort((left, right) => left.index - right.index);
278
+ return properties;
279
+ }
280
+
241
281
  function normalizeStylesTemplate(argument, functionPath) {
242
282
  if (t.isTemplateLiteral(argument)) {
243
283
  if (
@@ -615,28 +655,30 @@ export function processStaticHoists({
615
655
  node,
616
656
  renderStatements,
617
657
  programPath,
618
- propertiesStatic,
658
+ staticIr = null,
619
659
  classMembers,
620
660
  options = {},
621
661
  getOrCreateModuleStaticHoistSymbol,
622
662
  }) {
623
663
  const staticStyles = [];
624
- const staticProps = [];
625
- const staticHoists = [];
664
+ const propertiesIr = normalizePropertiesIr(staticIr, renderStatements);
665
+ const effectivePropertiesStatic = propertiesIr.inferred
666
+ .map((entry) => entry.expression)
667
+ .filter(Boolean);
668
+ const staticProps = propertiesIr.legacy
669
+ .map((entry) => entry.expression)
670
+ .filter(Boolean);
671
+ const staticHoists = propertiesIr.authored
672
+ .map((entry) => ({
673
+ name: "properties",
674
+ expression: entry.expression,
675
+ }));
626
676
  let lightDomRequested = options.defaultDomMode === "light";
627
677
 
628
678
  if (t.isBlockStatement(node.body)) {
629
679
  for (let index = renderStatements.length - 1; index >= 0; index -= 1) {
630
680
  const propertyOptions = getStaticPropsExpression(renderStatements[index]);
631
681
  if (propertyOptions) {
632
- if (propertyOptions.__litsxHoistedProperties) {
633
- staticHoists.unshift({
634
- name: "properties",
635
- expression: propertyOptions.expression,
636
- });
637
- } else {
638
- staticProps.unshift(propertyOptions);
639
- }
640
682
  renderStatements.splice(index, 1);
641
683
  continue;
642
684
  }
@@ -678,14 +720,14 @@ export function processStaticHoists({
678
720
  }
679
721
 
680
722
  if (staticProps.length > 0) {
681
- mergeStaticPropsIntoProperties(propertiesStatic, staticProps);
723
+ mergeStaticPropsIntoProperties(effectivePropertiesStatic, staticProps);
682
724
  }
683
725
 
684
726
  const hasHoistedProperties = staticHoists.some((entry) => entry.name === "properties");
685
- if (propertiesStatic.length > 0 && !hasHoistedProperties) {
727
+ if (effectivePropertiesStatic.length > 0 && !hasHoistedProperties) {
686
728
  const classProperties = t.classProperty(
687
729
  t.identifier("properties"),
688
- t.objectExpression(propertiesStatic),
730
+ t.objectExpression(effectivePropertiesStatic),
689
731
  null,
690
732
  [],
691
733
  false
@@ -729,7 +771,7 @@ export function processStaticHoists({
729
771
  return createStaticHoistGetter(
730
772
  "properties",
731
773
  symbolId,
732
- createPropertiesHoistResolver(propertiesStatic, staticProps, hoist.expression)
774
+ createPropertiesHoistResolver(effectivePropertiesStatic, staticProps, hoist.expression)
733
775
  );
734
776
  }
735
777
 
@@ -0,0 +1,176 @@
1
+ let t;
2
+
3
+ export function setStaticIrBabelTypes(nextTypes) {
4
+ t = nextTypes;
5
+ }
6
+
7
+ export function createEmptyStaticIr() {
8
+ return {
9
+ properties: {
10
+ inferred: [],
11
+ authored: [],
12
+ legacy: [],
13
+ },
14
+ elements: {
15
+ localCandidates: [],
16
+ importedCandidates: [],
17
+ needsRegistry: false,
18
+ },
19
+ lightDom: false,
20
+ };
21
+ }
22
+
23
+ function cloneImportedCandidate(candidate) {
24
+ if (!candidate || typeof candidate !== "object") {
25
+ return candidate;
26
+ }
27
+
28
+ return {
29
+ ...candidate,
30
+ };
31
+ }
32
+
33
+ export function normalizeStaticIr(ir = null) {
34
+ const next = createEmptyStaticIr();
35
+ if (!ir) {
36
+ return next;
37
+ }
38
+
39
+ next.properties.inferred = (ir.properties?.inferred || []).map((entry) => ({
40
+ ...entry,
41
+ expression: entry.expression ? t.cloneNode(entry.expression) : null,
42
+ }));
43
+ next.properties.authored = (ir.properties?.authored || []).map((entry) => ({
44
+ ...entry,
45
+ expression: entry.expression ? t.cloneNode(entry.expression) : null,
46
+ }));
47
+ next.properties.legacy = (ir.properties?.legacy || []).map((entry) => ({
48
+ ...entry,
49
+ expression: entry.expression ? t.cloneNode(entry.expression) : null,
50
+ }));
51
+ next.elements.localCandidates = [...(ir.elements?.localCandidates || [])];
52
+ next.elements.importedCandidates = (ir.elements?.importedCandidates || [])
53
+ .map(cloneImportedCandidate);
54
+ next.elements.needsRegistry = Boolean(ir.elements?.needsRegistry);
55
+ next.lightDom = Boolean(ir.lightDom);
56
+ return next;
57
+ }
58
+
59
+ export function ensureStaticIr(node) {
60
+ if (!node) {
61
+ return createEmptyStaticIr();
62
+ }
63
+
64
+ node._litsxStaticIr = normalizeStaticIr(node._litsxStaticIr);
65
+ return node._litsxStaticIr;
66
+ }
67
+
68
+ function isStaticPropertiesCall(statement) {
69
+ if (!t.isExpressionStatement(statement)) return null;
70
+ if (!t.isCallExpression(statement.expression)) return null;
71
+ if (statement.expression.arguments.length !== 1) return null;
72
+
73
+ const callee = statement.expression.callee;
74
+ if (t.isIdentifier(callee, { name: "__litsx_static_properties" })) {
75
+ return "authored";
76
+ }
77
+ if (t.isIdentifier(callee, { name: "staticProps" })) {
78
+ return "legacy";
79
+ }
80
+ return null;
81
+ }
82
+
83
+ function isStaticLightDomCall(statement) {
84
+ if (!t.isExpressionStatement(statement)) return false;
85
+ if (!t.isCallExpression(statement.expression)) return false;
86
+ if (!t.isIdentifier(statement.expression.callee, { name: "__litsx_static_lightDom" })) {
87
+ return false;
88
+ }
89
+
90
+ const args = statement.expression.arguments;
91
+ return args.length === 0 || (
92
+ args.length === 1 &&
93
+ t.isBooleanLiteral(args[0], { value: true })
94
+ );
95
+ }
96
+
97
+ export function collectStaticIr({
98
+ functionPath,
99
+ elementCandidates = new Set(),
100
+ importedElementCandidates = [],
101
+ } = {}) {
102
+ const ir = createEmptyStaticIr();
103
+
104
+ if (elementCandidates instanceof Set) {
105
+ ir.elements.localCandidates = [...elementCandidates];
106
+ } else if (Array.isArray(elementCandidates)) {
107
+ ir.elements.localCandidates = [...elementCandidates];
108
+ }
109
+
110
+ ir.elements.importedCandidates = importedElementCandidates.map(cloneImportedCandidate);
111
+
112
+ const statements = functionPath?.node?.body?.body;
113
+ if (!Array.isArray(statements)) {
114
+ return ir;
115
+ }
116
+
117
+ statements.forEach((statement, index) => {
118
+ const propertiesKind = isStaticPropertiesCall(statement);
119
+ if (propertiesKind) {
120
+ const [expression] = statement.expression.arguments;
121
+ ir.properties[propertiesKind].push({
122
+ index,
123
+ expression: t.cloneNode(expression),
124
+ });
125
+ return;
126
+ }
127
+
128
+ if (isStaticLightDomCall(statement)) {
129
+ ir.lightDom = true;
130
+ }
131
+ });
132
+
133
+ return ir;
134
+ }
135
+
136
+ export function setStaticIrInferredProperties(ir, properties = []) {
137
+ if (!ir) {
138
+ return ir;
139
+ }
140
+
141
+ ir.properties ||= {
142
+ inferred: [],
143
+ authored: [],
144
+ legacy: [],
145
+ };
146
+ ir.properties.inferred = properties.map((expression, index) => ({
147
+ index,
148
+ expression: t.cloneNode(expression),
149
+ }));
150
+ return ir;
151
+ }
152
+
153
+ export function attachStaticIr(node, ir) {
154
+ if (!node) {
155
+ return null;
156
+ }
157
+
158
+ node._litsxStaticIr = normalizeStaticIr(ir);
159
+ return node._litsxStaticIr;
160
+ }
161
+
162
+ export function getStaticIr(node) {
163
+ if (!node?._litsxStaticIr) {
164
+ return null;
165
+ }
166
+
167
+ return normalizeStaticIr(node._litsxStaticIr);
168
+ }
169
+
170
+ export function consumeStaticIr(node) {
171
+ const ir = getStaticIr(node);
172
+ if (node) {
173
+ delete node._litsxStaticIr;
174
+ }
175
+ return ir;
176
+ }
package/src/pipeline.js CHANGED
@@ -9,16 +9,76 @@ const NATIVE_TRANSFORM_OPTION_KEYS = [
9
9
  "defaultDomMode",
10
10
  "typeResolutionMode",
11
11
  "inMemoryFiles",
12
+ "compilerOptions",
12
13
  "typescriptSession",
13
14
  "suppressNativeClassNameWarning",
14
15
  "__litsxCompilationSession",
15
16
  ];
16
17
 
17
- const HOOK_FEATURE_PATTERN = /\b(?:useOnConnect|useAfterUpdate|useOnCommit|useMemoValue|useStableCallback|useEvent|useEmit|usePrevious|useReducedState|useState|useControlledState|useAsyncState|useOptimistic|useExpose|useExternalStore|useHost|useHostContent|useSlot|useTextContent|useTransition|useDeferredValue|useStyle|useRef|useCallbackRef|useStableId)\b/;
18
+ const HOOK_FEATURE_PATTERN = /\b(?:defineHook|useOnConnect|useAfterUpdate|useOnCommit|useMemoValue|useStableCallback|useEvent|useEmit|usePrevious|useReducedState|useState|useControlledState|useAsyncState|useOptimistic|useExpose|useExternalStore|useHost|useHostContent|useSlot|useTextContent|useTransition|useDeferredValue|useStyle|useRef|useCallbackRef|useStableId)\b/;
19
+ const DEFAULT_OR_NAMED_IMPORT_PATTERN = /\bimport\s+(?!type\b)([^'";]+?)\s+from\b/g;
20
+ const NAMESPACE_IMPORT_PATTERN = /\bimport\s+(?!type\b)\*\s+as\s+([A-Za-z_$][\w$]*)\s+from\b/g;
18
21
  const REF_FEATURE_PATTERN = /\buseRef\b|\bref\s*=/;
19
22
  const SCOPED_ELEMENTS_PATTERN = /<\s*(?:[A-Z][\w.]*(?=[\s/>])|[a-z][\w]*-[\w-]*(?=[\s/>]))/;
20
23
  const LIGHT_DOM_PATTERN = /\^lightDom\b|static\s+lightDom\s*=\s*true\b/;
21
24
 
25
+ function escapeRegExp(value) {
26
+ return String(value).replace(/[\\^$.*+?()[\]{}|]/g, "\\$&");
27
+ }
28
+
29
+ function hasCallToLocal(text, localName) {
30
+ return new RegExp(`\\b${escapeRegExp(localName)}\\s*\\(`).test(text);
31
+ }
32
+
33
+ function getImportedLocalNames(importClause) {
34
+ const locals = [];
35
+ const namedMatch = importClause.match(/\{([^}]*)\}/);
36
+ const beforeNamed = importClause.split("{", 1)[0].replace(/,$/, "").trim();
37
+
38
+ if (beforeNamed && !beforeNamed.includes("*")) {
39
+ locals.push(beforeNamed);
40
+ }
41
+
42
+ if (namedMatch) {
43
+ for (const rawSpecifier of namedMatch[1].split(",")) {
44
+ const specifier = rawSpecifier.trim();
45
+ if (!specifier || specifier.startsWith("type ")) continue;
46
+ const parts = specifier.split(/\s+as\s+/);
47
+ const localName = (parts[1] || parts[0]).trim();
48
+ if (localName) {
49
+ locals.push(localName);
50
+ }
51
+ }
52
+ }
53
+
54
+ return locals.filter((name) => /^use[A-Z0-9][A-Za-z0-9_$]*$/.test(name));
55
+ }
56
+
57
+ function hasImportedCustomHookCall(text) {
58
+ DEFAULT_OR_NAMED_IMPORT_PATTERN.lastIndex = 0;
59
+ let match;
60
+ while ((match = DEFAULT_OR_NAMED_IMPORT_PATTERN.exec(text))) {
61
+ for (const localName of getImportedLocalNames(match[1])) {
62
+ if (hasCallToLocal(text, localName)) {
63
+ return true;
64
+ }
65
+ }
66
+ }
67
+
68
+ NAMESPACE_IMPORT_PATTERN.lastIndex = 0;
69
+ while ((match = NAMESPACE_IMPORT_PATTERN.exec(text))) {
70
+ const namespaceName = match[1];
71
+ if (
72
+ new RegExp(`\\b${escapeRegExp(namespaceName)}\\s*\\.\\s*use[A-Z0-9][A-Za-z0-9_$]*\\s*\\(`)
73
+ .test(text)
74
+ ) {
75
+ return true;
76
+ }
77
+ }
78
+
79
+ return false;
80
+ }
81
+
22
82
  export function normalizeTransformLitsxOptions(options = {}) {
23
83
  const transformLitsxOptions = {
24
84
  ...(options.transformLitsx || {}),
@@ -38,7 +98,9 @@ export function detectLitsxSourceFeatures(source, options = {}) {
38
98
  const transformOptions = normalizeTransformLitsxOptions(options);
39
99
 
40
100
  return {
41
- hooks: HOOK_FEATURE_PATTERN.test(text),
101
+ hooks:
102
+ HOOK_FEATURE_PATTERN.test(text) ||
103
+ hasImportedCustomHookCall(text),
42
104
  domRefs: REF_FEATURE_PATTERN.test(text),
43
105
  scopedElements:
44
106
  transformOptions.defaultDomMode === "light" ||
@@ -62,7 +124,13 @@ export function createLitsxPresetPlugins(options = {}, sourceFeatures = null) {
62
124
  ];
63
125
 
64
126
  if (shouldIncludeFeaturePlugin(sourceFeatures, "hooks")) {
65
- plugins.push([transformLitsxHooks, options.transformLitsxHooks || {}]);
127
+ plugins.push([
128
+ transformLitsxHooks,
129
+ {
130
+ ...normalizeTransformLitsxOptions(options),
131
+ ...(options.transformLitsxHooks || {}),
132
+ },
133
+ ]);
66
134
  }
67
135
 
68
136
  if (shouldIncludeFeaturePlugin(sourceFeatures, "domRefs")) {
@@ -1 +0,0 @@
1
- {"version":3,"file":"transform-litsx-element-candidates-D0uvqG4Y.cjs","sources":["../../src/internal/transform-litsx-element-candidates.js"],"sourcesContent":["import helperPluginUtils from \"@babel/helper-plugin-utils\";\nimport babelTraverse from \"@babel/traverse\";\nimport jsxSyntaxPlugin from \"@babel/plugin-syntax-jsx\";\nimport parser from \"@litsx/babel-parser\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { normalizeFilePath } from \"@litsx/typescript-session\";\nimport { ensureTypescriptModule } from \"./transform-litsx-properties.js\";\n\nconst { declare } = helperPluginUtils;\nconst traverse = babelTraverse.default || babelTraverse;\nconst IMPORT_RESOLUTION_EXTENSIONS = [\n \".litsx\",\n \".litsx.jsx\",\n \".jsx\",\n \".js\",\n \".tsx\",\n \".ts\",\n];\nconst DEFAULT_MODULE_RESOLUTION_OPTIONS = {\n moduleResolution: 100,\n allowJs: true,\n checkJs: false,\n jsx: 1,\n target: 99,\n module: 99,\n esModuleInterop: true,\n allowSyntheticDefaultImports: true,\n};\n\nlet t;\n\nexport function setElementCandidatesBabelTypes(nextTypes) {\n t = nextTypes;\n}\n\nfunction isInsideFunctionOrClass(path) {\n return path.findParent(\n (p) =>\n p.isFunctionDeclaration() ||\n p.isFunctionExpression() ||\n p.isArrowFunctionExpression() ||\n p.isClassDeclaration()\n );\n}\n\nfunction isRelativeSpecifier(value) {\n return typeof value === \"string\" && (\n value.startsWith(\"./\") ||\n value.startsWith(\"../\") ||\n value.startsWith(\"/\")\n );\n}\n\nfunction createEmptyCandidateResult() {\n return {\n localCandidates: new Set(),\n importedCandidates: new Map(),\n };\n}\n\nfunction cloneCandidateResult(result) {\n return {\n localCandidates: new Set(result?.localCandidates || []),\n importedCandidates: new Map(result?.importedCandidates || []),\n };\n}\n\nfunction mergeCandidateResults(target, source) {\n source.localCandidates.forEach((candidate) => target.localCandidates.add(candidate));\n source.importedCandidates.forEach((candidate, key) => {\n if (!target.importedCandidates.has(key)) {\n target.importedCandidates.set(key, candidate);\n }\n });\n}\n\nfunction toImportRecordKey(record) {\n return `${record.sourceFile}:${record.importedName}:${record.tagName}`;\n}\n\nfunction toRelativeModuleSpecifier(fromFilename, targetFilename) {\n const fromDir = path.dirname(fromFilename);\n let relativePath = normalizeFilePath(path.relative(fromDir, targetFilename));\n\n if (!relativePath.startsWith(\".\") && !relativePath.startsWith(\"/\")) {\n relativePath = `./${relativePath}`;\n }\n\n return relativePath;\n}\n\nfunction hasSupportedExtension(filePath) {\n return IMPORT_RESOLUTION_EXTENSIONS.some((extension) => filePath.endsWith(extension));\n}\n\nfunction resolveImportSource(fromFilename, sourceValue, context) {\n const cacheKey = `${normalizeFilePath(fromFilename)}::${sourceValue}`;\n if (context.resolvedImportCache.has(cacheKey)) {\n return context.resolvedImportCache.get(cacheKey);\n }\n\n const existingFile = (candidatePath) => {\n try {\n return fs.existsSync(candidatePath) && fs.statSync(candidatePath).isFile();\n } catch {\n return false;\n }\n };\n\n const resolveWithExtensions = (basePath) => {\n const normalizedBasePath = normalizeFilePath(basePath);\n const candidates = [];\n\n if (hasSupportedExtension(normalizedBasePath)) {\n candidates.push(normalizedBasePath);\n } else {\n IMPORT_RESOLUTION_EXTENSIONS.forEach((extension) => {\n candidates.push(`${normalizedBasePath}${extension}`);\n });\n IMPORT_RESOLUTION_EXTENSIONS.forEach((extension) => {\n candidates.push(normalizeFilePath(path.join(normalizedBasePath, `index${extension}`)));\n });\n }\n\n return candidates.find(existingFile) || null;\n };\n\n const resolvePathAlias = () => {\n const compilerOptions = context.getCompilerOptions?.(fromFilename) || {};\n const baseUrl = compilerOptions.baseUrl\n ? normalizeFilePath(\n path.isAbsolute(compilerOptions.baseUrl)\n ? compilerOptions.baseUrl\n : path.resolve(path.dirname(fromFilename), compilerOptions.baseUrl)\n )\n : normalizeFilePath(path.dirname(fromFilename));\n const pathMappings = compilerOptions.paths || {};\n\n for (const [pattern, substitutions] of Object.entries(pathMappings)) {\n const starIndex = pattern.indexOf(\"*\");\n const isStarPattern = starIndex !== -1;\n const prefix = isStarPattern ? pattern.slice(0, starIndex) : pattern;\n const suffix = isStarPattern ? pattern.slice(starIndex + 1) : \"\";\n\n if (isStarPattern) {\n if (!sourceValue.startsWith(prefix) || !sourceValue.endsWith(suffix)) {\n continue;\n }\n } else if (sourceValue !== pattern) {\n continue;\n }\n\n const wildcardValue = isStarPattern\n ? sourceValue.slice(prefix.length, sourceValue.length - suffix.length)\n : \"\";\n\n for (const substitution of substitutions || []) {\n const substituted = isStarPattern\n ? substitution.replace(\"*\", wildcardValue)\n : substitution;\n const candidateBase = path.isAbsolute(substituted)\n ? substituted\n : path.join(baseUrl, substituted);\n const resolvedPath = resolveWithExtensions(candidateBase);\n if (resolvedPath) {\n return resolvedPath;\n }\n }\n }\n\n return null;\n };\n\n let resolved = null;\n if (fromFilename && isRelativeSpecifier(sourceValue)) {\n resolved = resolveWithExtensions(\n path.resolve(path.dirname(fromFilename), sourceValue)\n );\n } else if (fromFilename) {\n resolved = resolvePathAlias();\n if (!resolved) {\n const ts = ensureTypescriptModule();\n const compilerOptions = context.getCompilerOptions?.(fromFilename) || DEFAULT_MODULE_RESOLUTION_OPTIONS;\n const moduleResolutionHost = context.getModuleResolutionHost?.(fromFilename) || ts.sys;\n try {\n const resolution = ts.resolveModuleName(\n sourceValue,\n normalizeFilePath(fromFilename),\n compilerOptions,\n moduleResolutionHost\n );\n const resolvedFileName = resolution?.resolvedModule?.resolvedFileName;\n if (resolvedFileName) {\n resolved = resolveWithExtensions(resolvedFileName) || normalizeFilePath(resolvedFileName);\n }\n } catch {\n resolved = null;\n }\n }\n }\n\n context.resolvedImportCache.set(cacheKey, resolved);\n return resolved;\n}\n\nfunction createCompilerContextResolver(options = {}) {\n const providedTypescriptSession =\n options?.typescriptSession?.projectSession || options?.typescriptSession || null;\n\n const compilerOptionsCache = new Map();\n const moduleResolutionHostCache = new Map();\n\n function getProgramForFile(filename) {\n if (!providedTypescriptSession?.getProgram || !filename) {\n return null;\n }\n\n try {\n if (providedTypescriptSession.kind === \"project\") {\n return providedTypescriptSession.getProgram();\n }\n\n if (providedTypescriptSession.kind === \"standalone\") {\n return providedTypescriptSession.getProgram(normalizeFilePath(filename));\n }\n } catch {\n return null;\n }\n\n return null;\n }\n\n return {\n getCompilerOptions(filename) {\n const cacheKey = normalizeFilePath(filename);\n if (compilerOptionsCache.has(cacheKey)) {\n return compilerOptionsCache.get(cacheKey);\n }\n\n const program = getProgramForFile(filename);\n const compilerOptions = program?.getCompilerOptions?.() || DEFAULT_MODULE_RESOLUTION_OPTIONS;\n compilerOptionsCache.set(cacheKey, compilerOptions);\n return compilerOptions;\n },\n getModuleResolutionHost(filename) {\n const cacheKey = normalizeFilePath(filename);\n if (moduleResolutionHostCache.has(cacheKey)) {\n return moduleResolutionHostCache.get(cacheKey);\n }\n\n const ts = ensureTypescriptModule();\n const program = getProgramForFile(filename);\n const host = providedTypescriptSession?.host || ts.sys;\n moduleResolutionHostCache.set(cacheKey, host);\n return host;\n },\n };\n}\n\nfunction getOrCreateAvailableNames(programPath) {\n const cached = programPath.getData(\"__litsxAvailableNames\");\n if (cached) {\n return cached;\n }\n\n const availableNames = new Set();\n programPath.get(\"body\").forEach((nodePath) => {\n if (nodePath.isImportDeclaration()) {\n nodePath.node.specifiers.forEach((specifier) => {\n if (specifier.local?.name) {\n availableNames.add(specifier.local.name);\n }\n });\n return;\n }\n\n if (nodePath.isClassDeclaration() && nodePath.node.id?.name) {\n availableNames.add(nodePath.node.id.name);\n return;\n }\n\n if (\n (nodePath.isExportNamedDeclaration() || nodePath.isExportDefaultDeclaration()) &&\n nodePath.get(\"declaration\")?.isClassDeclaration?.() &&\n nodePath.node.declaration?.id?.name\n ) {\n availableNames.add(nodePath.node.declaration.id.name);\n return;\n }\n\n if (nodePath.isFunctionDeclaration() && nodePath.node.id?.name) {\n availableNames.add(nodePath.node.id.name);\n return;\n }\n\n if (\n (nodePath.isExportNamedDeclaration() || nodePath.isExportDefaultDeclaration()) &&\n nodePath.get(\"declaration\")?.isFunctionDeclaration?.() &&\n nodePath.node.declaration?.id?.name\n ) {\n availableNames.add(nodePath.node.declaration.id.name);\n return;\n }\n\n if (\n (nodePath.isExportNamedDeclaration() || nodePath.isExportDefaultDeclaration()) &&\n nodePath.get(\"declaration\")?.isVariableDeclaration?.()\n ) {\n nodePath.get(\"declaration.declarations\").forEach((declaratorPath) => {\n const declarator = declaratorPath.node;\n if (t.isIdentifier(declarator.id)) {\n availableNames.add(declarator.id.name);\n }\n });\n return;\n }\n\n if (!nodePath.isVariableDeclaration()) return;\n nodePath.get(\"declarations\").forEach((declaratorPath) => {\n const declarator = declaratorPath.node;\n if (t.isIdentifier(declarator.id)) {\n availableNames.add(declarator.id.name);\n }\n });\n });\n\n programPath.setData(\"__litsxAvailableNames\", availableNames);\n return availableNames;\n}\n\nfunction getOrCreateHelperPaths(programPath) {\n const cached = programPath.getData(\"__litsxHelperPaths\");\n if (cached) {\n return cached;\n }\n\n const helperPaths = new Map();\n programPath.get(\"body\").forEach((nodePath) => {\n if (nodePath.isFunctionDeclaration() && nodePath.node.id?.name) {\n helperPaths.set(nodePath.node.id.name, nodePath);\n return;\n }\n\n if (\n (nodePath.isExportNamedDeclaration() || nodePath.isExportDefaultDeclaration()) &&\n nodePath.get(\"declaration\")?.isFunctionDeclaration?.() &&\n nodePath.node.declaration?.id?.name\n ) {\n helperPaths.set(nodePath.node.declaration.id.name, nodePath.get(\"declaration\"));\n return;\n }\n\n if (\n (nodePath.isExportNamedDeclaration() || nodePath.isExportDefaultDeclaration()) &&\n nodePath.get(\"declaration\")?.isVariableDeclaration?.()\n ) {\n nodePath.get(\"declaration.declarations\").forEach((declaratorPath) => {\n const declarator = declaratorPath.node;\n if (!t.isIdentifier(declarator.id)) {\n return;\n }\n\n const initPath = declaratorPath.get(\"init\");\n if (\n initPath?.isArrowFunctionExpression?.() ||\n initPath?.isFunctionExpression?.()\n ) {\n helperPaths.set(declarator.id.name, initPath);\n }\n });\n return;\n }\n\n if (!nodePath.isVariableDeclaration()) return;\n nodePath.get(\"declarations\").forEach((declaratorPath) => {\n const declarator = declaratorPath.node;\n if (!t.isIdentifier(declarator.id)) {\n return;\n }\n\n const initPath = declaratorPath.get(\"init\");\n if (\n initPath?.isArrowFunctionExpression?.() ||\n initPath?.isFunctionExpression?.()\n ) {\n helperPaths.set(declarator.id.name, initPath);\n }\n });\n });\n\n programPath.setData(\"__litsxHelperPaths\", helperPaths);\n return helperPaths;\n}\n\nfunction buildModuleAnalysis(programPath, filename, context) {\n const availableNames = getOrCreateAvailableNames(programPath);\n const helperPaths = getOrCreateHelperPaths(programPath);\n const importBindings = new Map();\n const exportBindings = new Map();\n\n programPath.get(\"body\").forEach((nodePath) => {\n if (nodePath.isImportDeclaration()) {\n const sourceValue = nodePath.node.source.value;\n const resolvedSource = resolveImportSource(filename, sourceValue, context);\n\n nodePath.node.specifiers.forEach((specifier) => {\n if (!specifier.local?.name) {\n return;\n }\n\n let importedName = null;\n if (specifier.type === \"ImportDefaultSpecifier\") {\n importedName = \"default\";\n } else if (specifier.type === \"ImportSpecifier\") {\n importedName = specifier.imported?.name ?? specifier.imported?.value ?? null;\n } else if (specifier.type === \"ImportNamespaceSpecifier\") {\n importedName = \"*\";\n }\n\n importBindings.set(specifier.local.name, {\n localName: specifier.local.name,\n importedName,\n sourceValue,\n resolvedSource,\n });\n });\n\n return;\n }\n\n if (nodePath.isExportNamedDeclaration()) {\n const declarationPath = nodePath.get(\"declaration\");\n if (declarationPath?.node) {\n if (declarationPath.isFunctionDeclaration() || declarationPath.isClassDeclaration()) {\n const localName = declarationPath.node.id?.name;\n if (localName) {\n exportBindings.set(localName, { localName });\n }\n } else if (declarationPath.isVariableDeclaration()) {\n declarationPath.get(\"declarations\").forEach((declaratorPath) => {\n const localName = declaratorPath.node.id?.name;\n if (localName) {\n exportBindings.set(localName, { localName });\n }\n });\n }\n }\n\n nodePath.get(\"specifiers\").forEach((specifierPath) => {\n const exportedName =\n specifierPath.node.exported?.name ?? specifierPath.node.exported?.value ?? null;\n if (!exportedName) {\n return;\n }\n\n const sourceValue = nodePath.node.source?.value ?? null;\n if (sourceValue) {\n const localName =\n specifierPath.node.local?.name ?? specifierPath.node.local?.value ?? exportedName;\n exportBindings.set(exportedName, {\n reexportSource: resolveImportSource(filename, sourceValue, context),\n importedName: localName === \"default\" ? \"default\" : localName,\n });\n return;\n }\n\n const localName =\n specifierPath.node.local?.name ?? specifierPath.node.local?.value ?? null;\n if (localName) {\n exportBindings.set(exportedName, { localName });\n }\n });\n\n return;\n }\n\n if (!nodePath.isExportDefaultDeclaration()) {\n return;\n }\n\n const declarationPath = nodePath.get(\"declaration\");\n if (declarationPath.isIdentifier()) {\n exportBindings.set(\"default\", { localName: declarationPath.node.name });\n return;\n }\n\n if (\n declarationPath.isFunctionDeclaration() ||\n declarationPath.isClassDeclaration()\n ) {\n const localName = declarationPath.node.id?.name;\n if (localName) {\n exportBindings.set(\"default\", { localName });\n } else {\n exportBindings.set(\"default\", { path: declarationPath });\n }\n return;\n }\n\n if (\n declarationPath.isArrowFunctionExpression() ||\n declarationPath.isFunctionExpression()\n ) {\n exportBindings.set(\"default\", { path: declarationPath });\n }\n });\n\n return {\n filename,\n programPath,\n availableNames,\n helperPaths,\n importBindings,\n exportBindings,\n compatPascalNames: new Set(),\n };\n}\n\nfunction getOrCreateModuleAnalysis(filename, context) {\n const normalizedFilename = normalizeFilePath(filename);\n if (!normalizedFilename) {\n return null;\n }\n\n if (context.moduleAnalysisCache.has(normalizedFilename)) {\n return context.moduleAnalysisCache.get(normalizedFilename);\n }\n\n let source;\n try {\n source = fs.readFileSync(normalizedFilename, \"utf8\");\n } catch {\n return null;\n }\n\n let programPath = null;\n try {\n const ast = parser.parse(source, {\n sourceType: \"module\",\n plugins: getParserPluginsForModule(normalizedFilename, source),\n });\n traverse(ast, {\n Program(path) {\n if (!programPath) {\n programPath = path;\n path.scope.crawl();\n }\n },\n });\n } catch {\n return null;\n }\n\n if (!programPath) {\n return null;\n }\n\n const analysis = buildModuleAnalysis(programPath, normalizedFilename, context);\n context.moduleAnalysisCache.set(normalizedFilename, analysis);\n return analysis;\n}\n\nfunction isCapitalizedName(name) {\n if (typeof name !== \"string\" || name.length === 0) {\n return false;\n }\n\n const first = name[0];\n return first === first.toUpperCase() && first !== first.toLowerCase();\n}\n\nfunction isProgramLevelBinding(binding) {\n return binding?.scope?.path?.isProgram?.() === true;\n}\n\nfunction validateComponentName(nameNode, pathForErrors, context) {\n if (!nameNode || nameNode.type !== \"JSXIdentifier\") return null;\n const originalName = nameNode.__scopedOriginal || nameNode.name;\n if (!isCapitalizedName(originalName)) return null;\n\n const binding = pathForErrors?.scope?.getBinding?.(originalName) || null;\n if (!binding) {\n if (context.availableNames.has(originalName)) {\n return originalName;\n }\n if (context.compatPascalNames.has(originalName)) {\n return null;\n }\n if (context.options?.allowUnknownPascalCase === true) {\n return null;\n }\n throw (pathForErrors?.buildCodeFrameError?.(\n `Unknown LitSX component \"${originalName}\". Add an import or declare it in this module before using it in JSX.`\n ) || new Error(\n `Unknown LitSX component \"${originalName}\". Add an import or declare it in this module before using it in JSX.`\n ));\n }\n\n if (!isProgramLevelBinding(binding)) {\n return null;\n }\n\n return originalName;\n}\n\nfunction resolveImportedHelper(moduleAnalysis, helperName, context, seen = new Set()) {\n const importInfo = moduleAnalysis.importBindings.get(helperName);\n if (!importInfo?.resolvedSource || importInfo.importedName === \"*\") {\n return null;\n }\n\n const visitedKey = `${moduleAnalysis.filename}:${helperName}:${importInfo.resolvedSource}:${importInfo.importedName}`;\n if (seen.has(visitedKey)) {\n return null;\n }\n const nextSeen = new Set(seen);\n nextSeen.add(visitedKey);\n\n const importedModule = getOrCreateModuleAnalysis(importInfo.resolvedSource, context);\n if (!importedModule) {\n return null;\n }\n\n return resolveExportedHelper(importedModule, importInfo.importedName, context, nextSeen);\n}\n\nfunction resolveExportedHelper(moduleAnalysis, exportedName, context, seen = new Set()) {\n const exportInfo = moduleAnalysis.exportBindings.get(exportedName);\n if (!exportInfo) {\n return null;\n }\n\n if (exportInfo.path?.node) {\n return {\n moduleAnalysis,\n path: exportInfo.path,\n };\n }\n\n if (exportInfo.localName) {\n const helperPath = moduleAnalysis.helperPaths.get(exportInfo.localName);\n if (!helperPath?.node) {\n if (moduleAnalysis.importBindings.has(exportInfo.localName)) {\n return resolveImportedHelper(moduleAnalysis, exportInfo.localName, context, seen);\n }\n return null;\n }\n return {\n moduleAnalysis,\n path: helperPath,\n };\n }\n\n if (exportInfo.reexportSource) {\n const reexportedModule = getOrCreateModuleAnalysis(exportInfo.reexportSource, context);\n if (!reexportedModule) {\n return null;\n }\n return resolveExportedHelper(\n reexportedModule,\n exportInfo.importedName,\n context,\n seen\n );\n }\n\n return null;\n}\n\nfunction getParserPluginsForModule(filename, source) {\n if (/\\.(?:[cm]?ts|tsx|litsx)$/i.test(filename)) {\n return [\"typescript\"];\n }\n\n if (/\\b(?:as|satisfies)\\s+[^;,)]+/.test(source)) {\n return [\"typescript\"];\n }\n\n return [];\n}\n\nfunction unwrapNamespaceAliasExpression(node) {\n let current = node;\n while (\n t.isTSAsExpression(current) ||\n t.isTSTypeAssertion(current) ||\n t.isTSNonNullExpression(current) ||\n t.isTSSatisfiesExpression?.(current)\n ) {\n current = current.expression;\n }\n return current;\n}\n\nfunction getNamespaceMemberAliasInfo(candidateName, moduleAnalysis) {\n const binding = moduleAnalysis.programPath.scope.getBinding(candidateName);\n if (!binding || !isProgramLevelBinding(binding)) {\n return null;\n }\n\n const declaratorPath = binding.path.isVariableDeclarator?.()\n ? binding.path\n : binding.path.parentPath;\n if (!declaratorPath?.isVariableDeclarator?.()) {\n return null;\n }\n\n const init = unwrapNamespaceAliasExpression(declaratorPath.node.init);\n if (\n !t.isMemberExpression(init) ||\n init.computed ||\n !t.isIdentifier(unwrapNamespaceAliasExpression(init.object)) ||\n !t.isIdentifier(init.property)\n ) {\n return null;\n }\n\n const namespaceObject = unwrapNamespaceAliasExpression(init.object);\n const namespaceImport = moduleAnalysis.importBindings.get(namespaceObject.name);\n if (\n !namespaceImport ||\n namespaceImport.importedName !== \"*\" ||\n !namespaceImport.resolvedSource\n ) {\n return null;\n }\n\n return {\n localName: candidateName,\n namespaceName: namespaceObject.name,\n importedName: init.property.name,\n sourceValue: namespaceImport.sourceValue,\n resolvedSource: namespaceImport.resolvedSource,\n };\n}\n\nfunction resolveImportedElementRequirement(candidateName, moduleAnalysis, context, rootFilename) {\n const binding = moduleAnalysis.programPath.scope.getBinding(candidateName);\n if (!binding || !isProgramLevelBinding(binding)) {\n return null;\n }\n\n if (\n binding.path.isImportSpecifier?.() ||\n binding.path.isImportDefaultSpecifier?.()\n ) {\n const importInfo = moduleAnalysis.importBindings.get(candidateName);\n if (!importInfo?.resolvedSource || importInfo.importedName === \"*\") {\n return null;\n }\n\n return {\n sourceFile: importInfo.resolvedSource,\n sourceSpecifier: isRelativeSpecifier(importInfo.sourceValue)\n ? null\n : importInfo.sourceValue,\n importedName: importInfo.importedName,\n originalName: candidateName,\n tagName: candidateName.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase(),\n rootFilename,\n };\n }\n\n const namespaceAliasInfo = getNamespaceMemberAliasInfo(candidateName, moduleAnalysis);\n if (namespaceAliasInfo) {\n return {\n sourceFile: namespaceAliasInfo.resolvedSource,\n sourceSpecifier: isRelativeSpecifier(namespaceAliasInfo.sourceValue)\n ? null\n : namespaceAliasInfo.sourceValue,\n importedName: namespaceAliasInfo.importedName,\n originalName: candidateName,\n tagName: candidateName.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase(),\n rootFilename,\n };\n }\n\n const exportInfo =\n moduleAnalysis.exportBindings.get(candidateName) ||\n moduleAnalysis.exportBindings.get(\"default\");\n if (!exportInfo) {\n throw new Error(\n `Imported renderer helper transitively renders \"${candidateName}\" from \"${moduleAnalysis.filename}\", but that symbol is not exported and cannot be added to static elements in \"${rootFilename}\".`\n );\n }\n\n const importedName = exportInfo.localName === candidateName\n ? candidateName\n : [...moduleAnalysis.exportBindings.entries()].find(\n ([, entry]) => entry.localName === candidateName\n )?.[0] ?? null;\n\n if (!importedName) {\n throw new Error(\n `Imported renderer helper transitively renders \"${candidateName}\" from \"${moduleAnalysis.filename}\", but that symbol cannot be resolved as an importable export for \"${rootFilename}\".`\n );\n }\n\n return {\n sourceFile: moduleAnalysis.filename,\n sourceSpecifier: null,\n importedName,\n originalName: candidateName,\n tagName: candidateName.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase(),\n rootFilename,\n };\n}\n\nfunction collectCandidateResult(functionPath, programPath, options = {}) {\n const result = createEmptyCandidateResult();\n if (!programPath || !functionPath?.node) return result;\n programPath.scope.crawl();\n const compilationSession = options.__litsxCompilationSession || null;\n\n const rootFilename = normalizeFilePath(\n options.filename || programPath.hub.file?.opts?.filename || \"\"\n );\n const helperCandidateCache =\n programPath.getData(\"__litsxHelperCandidateCache\") || new WeakMap();\n programPath.setData(\"__litsxHelperCandidateCache\", helperCandidateCache);\n const moduleAnalysisCache =\n compilationSession?.importedModuleAnalysisCache ||\n programPath.getData(\"__litsxImportedModuleAnalyses\") ||\n new Map();\n programPath.setData(\"__litsxImportedModuleAnalyses\", moduleAnalysisCache);\n const resolvedImportCache =\n compilationSession?.resolvedImportCache ||\n programPath.getData(\"__litsxResolvedImports\") ||\n new Map();\n programPath.setData(\"__litsxResolvedImports\", resolvedImportCache);\n\n const rootModule = {\n filename: rootFilename,\n programPath,\n availableNames: getOrCreateAvailableNames(programPath),\n helperPaths: getOrCreateHelperPaths(programPath),\n compatPascalNames: programPath.getData(\"__litsxCompatPascalNames\") || new Set(),\n importBindings: new Map(),\n exportBindings: new Map(),\n };\n\n programPath.get(\"body\").forEach((nodePath) => {\n if (!nodePath.isImportDeclaration()) {\n return;\n }\n\n const sourceValue = nodePath.node.source.value;\n const resolvedSource = resolveImportSource(rootFilename, sourceValue, {\n moduleAnalysisCache,\n resolvedImportCache,\n });\n\n nodePath.node.specifiers.forEach((specifier) => {\n if (!specifier.local?.name) {\n return;\n }\n\n let importedName = null;\n if (specifier.type === \"ImportDefaultSpecifier\") {\n importedName = \"default\";\n } else if (specifier.type === \"ImportSpecifier\") {\n importedName = specifier.imported?.name ?? specifier.imported?.value ?? null;\n } else if (specifier.type === \"ImportNamespaceSpecifier\") {\n importedName = \"*\";\n }\n\n rootModule.importBindings.set(specifier.local.name, {\n localName: specifier.local.name,\n importedName,\n sourceValue,\n resolvedSource,\n });\n });\n });\n\n const context = {\n rootFilename,\n rootModule,\n options,\n helperCandidateCache,\n moduleAnalysisCache,\n resolvedImportCache,\n ...createCompilerContextResolver(options),\n };\n\n function scanFunction(path, moduleAnalysis, seen = new Set()) {\n if (!path?.node) {\n return createEmptyCandidateResult();\n }\n\n if (context.helperCandidateCache.has(path.node)) {\n return cloneCandidateResult(context.helperCandidateCache.get(path.node));\n }\n\n if (seen.has(path.node)) {\n return createEmptyCandidateResult();\n }\n\n const nextSeen = new Set(seen);\n nextSeen.add(path.node);\n const localResult = createEmptyCandidateResult();\n const referencedHelpers = [];\n const scanContext = {\n availableNames: moduleAnalysis.availableNames,\n helperPaths: moduleAnalysis.helperPaths,\n compatPascalNames: moduleAnalysis.compatPascalNames,\n options,\n };\n\n path.traverse({\n JSXOpeningElement(jsxPath) {\n const candidate = validateComponentName(jsxPath.node.name, jsxPath, scanContext);\n if (candidate) {\n if (moduleAnalysis.filename === context.rootFilename) {\n localResult.localCandidates.add(candidate);\n } else {\n const requirement = resolveImportedElementRequirement(\n candidate,\n moduleAnalysis,\n context,\n context.rootFilename\n );\n if (requirement) {\n localResult.importedCandidates.set(\n toImportRecordKey(requirement),\n requirement\n );\n }\n }\n }\n },\n JSXClosingElement(jsxPath) {\n validateComponentName(jsxPath.node.name, jsxPath, scanContext);\n },\n Identifier(identifierPath) {\n if (!identifierPath.isReferencedIdentifier()) {\n return;\n }\n\n if (moduleAnalysis.helperPaths.has(identifierPath.node.name)) {\n referencedHelpers.push({\n moduleAnalysis,\n path: moduleAnalysis.helperPaths.get(identifierPath.node.name),\n });\n return;\n }\n\n const binding = identifierPath.scope.getBinding(identifierPath.node.name);\n if (!binding) {\n return;\n }\n\n if (\n !binding.path.isImportSpecifier?.() &&\n !binding.path.isImportDefaultSpecifier?.()\n ) {\n return;\n }\n\n const resolvedHelper = resolveImportedHelper(\n moduleAnalysis,\n identifierPath.node.name,\n context\n );\n if (!resolvedHelper?.path?.node) {\n return;\n }\n\n referencedHelpers.push(resolvedHelper);\n },\n });\n\n referencedHelpers.forEach((helperEntry) => {\n const helperCandidates = scanFunction(\n helperEntry.path,\n helperEntry.moduleAnalysis,\n nextSeen\n );\n mergeCandidateResults(localResult, helperCandidates);\n });\n\n context.helperCandidateCache.set(path.node, cloneCandidateResult(localResult));\n return localResult;\n }\n\n return scanFunction(functionPath, rootModule);\n}\n\nexport function getAnnotatedElementCandidates(path, programPath, options = {}) {\n if (path?.node?._litsxElementCandidates instanceof Set) {\n return new Set(path.node._litsxElementCandidates);\n }\n\n return collectCandidateResult(path, programPath, options).localCandidates;\n}\n\nexport function getAnnotatedImportedElementCandidates(path, programPath, options = {}) {\n if (Array.isArray(path?.node?._litsxImportedElementCandidates)) {\n return [...path.node._litsxImportedElementCandidates];\n }\n\n return [...collectCandidateResult(path, programPath, options).importedCandidates.values()];\n}\n\nexport function importedBindingNeedsRendererContext(programPath, localName, options = {}) {\n if (!programPath?.node || !localName) {\n return false;\n }\n\n programPath.scope.crawl();\n const compilationSession = options.__litsxCompilationSession || null;\n const rootFilename = normalizeFilePath(\n options.filename || programPath.hub.file?.opts?.filename || \"\"\n );\n const helperCandidateCache =\n programPath.getData(\"__litsxHelperCandidateCache\") || new WeakMap();\n programPath.setData(\"__litsxHelperCandidateCache\", helperCandidateCache);\n const moduleAnalysisCache =\n compilationSession?.importedModuleAnalysisCache ||\n programPath.getData(\"__litsxImportedModuleAnalyses\") ||\n new Map();\n programPath.setData(\"__litsxImportedModuleAnalyses\", moduleAnalysisCache);\n const resolvedImportCache =\n compilationSession?.resolvedImportCache ||\n programPath.getData(\"__litsxResolvedImports\") ||\n new Map();\n programPath.setData(\"__litsxResolvedImports\", resolvedImportCache);\n\n const rootModule = {\n filename: rootFilename,\n programPath,\n availableNames: getOrCreateAvailableNames(programPath),\n helperPaths: getOrCreateHelperPaths(programPath),\n compatPascalNames: programPath.getData(\"__litsxCompatPascalNames\") || new Set(),\n importBindings: new Map(),\n exportBindings: new Map(),\n };\n\n programPath.get(\"body\").forEach((nodePath) => {\n if (!nodePath.isImportDeclaration()) {\n return;\n }\n\n const sourceValue = nodePath.node.source.value;\n const resolvedSource = resolveImportSource(rootFilename, sourceValue, {\n moduleAnalysisCache,\n resolvedImportCache,\n });\n\n nodePath.node.specifiers.forEach((specifier) => {\n if (!specifier.local?.name) {\n return;\n }\n\n let importedName = null;\n if (specifier.type === \"ImportDefaultSpecifier\") {\n importedName = \"default\";\n } else if (specifier.type === \"ImportSpecifier\") {\n importedName = specifier.imported?.name ?? specifier.imported?.value ?? null;\n } else if (specifier.type === \"ImportNamespaceSpecifier\") {\n importedName = \"*\";\n }\n\n rootModule.importBindings.set(specifier.local.name, {\n localName: specifier.local.name,\n importedName,\n sourceValue,\n resolvedSource,\n });\n });\n });\n\n const context = {\n rootFilename,\n rootModule,\n options,\n helperCandidateCache,\n moduleAnalysisCache,\n resolvedImportCache,\n ...createCompilerContextResolver(options),\n };\n\n const resolvedHelper = resolveImportedHelper(rootModule, localName, context);\n if (!resolvedHelper?.path?.node) {\n return false;\n }\n\n function scanFunction(path, moduleAnalysis, seen = new Set()) {\n if (!path?.node) {\n return false;\n }\n\n const cacheKey = path.node;\n if (context.helperCandidateCache.has(cacheKey)) {\n const cached = context.helperCandidateCache.get(cacheKey);\n return cached.localCandidates.size > 0 || cached.importedCandidates.size > 0;\n }\n\n if (seen.has(path.node)) {\n return false;\n }\n\n const nextSeen = new Set(seen);\n nextSeen.add(path.node);\n let needsContext = false;\n const referencedHelpers = [];\n const scanContext = {\n availableNames: moduleAnalysis.availableNames,\n helperPaths: moduleAnalysis.helperPaths,\n compatPascalNames: moduleAnalysis.compatPascalNames,\n options,\n };\n\n path.traverse({\n JSXOpeningElement(jsxPath) {\n const candidate = validateComponentName(jsxPath.node.name, jsxPath, scanContext);\n if (candidate) {\n needsContext = true;\n }\n },\n JSXClosingElement(jsxPath) {\n validateComponentName(jsxPath.node.name, jsxPath, scanContext);\n },\n Identifier(identifierPath) {\n if (!identifierPath.isReferencedIdentifier()) {\n return;\n }\n\n if (moduleAnalysis.helperPaths.has(identifierPath.node.name)) {\n referencedHelpers.push({\n moduleAnalysis,\n path: moduleAnalysis.helperPaths.get(identifierPath.node.name),\n });\n return;\n }\n\n const binding = identifierPath.scope.getBinding(identifierPath.node.name);\n if (\n !binding ||\n (\n !binding.path.isImportSpecifier?.() &&\n !binding.path.isImportDefaultSpecifier?.()\n )\n ) {\n return;\n }\n\n const importedHelper = resolveImportedHelper(\n moduleAnalysis,\n identifierPath.node.name,\n context\n );\n if (importedHelper?.path?.node) {\n referencedHelpers.push(importedHelper);\n }\n },\n });\n\n if (!needsContext) {\n needsContext = referencedHelpers.some((helperEntry) =>\n scanFunction(helperEntry.path, helperEntry.moduleAnalysis, nextSeen)\n );\n }\n\n context.helperCandidateCache.set(cacheKey, needsContext\n ? {\n localCandidates: new Set([\"__context\"]),\n importedCandidates: new Map(),\n }\n : createEmptyCandidateResult()\n );\n\n return needsContext;\n }\n\n return scanFunction(resolvedHelper.path, resolvedHelper.moduleAnalysis);\n}\n\nexport default declare((api) => {\n api.assertVersion(7);\n t = api.types;\n\n return {\n name: \"transform-litsx-element-candidates\",\n inherits: jsxSyntaxPlugin.default || jsxSyntaxPlugin,\n visitor: {\n Program: {\n enter(path) {\n path.scope.crawl();\n path.setData(\"__litsxAvailableNames\", null);\n path.setData(\"__litsxHelperPaths\", null);\n path.setData(\"__litsxHelperCandidateCache\", new WeakMap());\n path.setData(\"__litsxImportedModuleAnalyses\", new Map());\n path.setData(\"__litsxResolvedImports\", new Map());\n },\n },\n FunctionDeclaration: {\n exit(path, state) {\n if (isInsideFunctionOrClass(path)) {\n return;\n }\n\n const programPath = path.findParent((entry) => entry.isProgram());\n const result = collectCandidateResult(\n path,\n programPath,\n {\n ...(state.opts || {}),\n filename: state.file?.opts?.filename || \"\",\n }\n );\n path.node._litsxElementCandidates = result.localCandidates;\n path.node._litsxImportedElementCandidates = [...result.importedCandidates.values()];\n },\n },\n ArrowFunctionExpression: {\n exit(path, state) {\n if (isInsideFunctionOrClass(path)) {\n return;\n }\n\n const programPath = path.findParent((entry) => entry.isProgram());\n const result = collectCandidateResult(\n path,\n programPath,\n {\n ...(state.opts || {}),\n filename: state.file?.opts?.filename || \"\",\n }\n );\n path.node._litsxElementCandidates = result.localCandidates;\n path.node._litsxImportedElementCandidates = [...result.importedCandidates.values()];\n },\n },\n FunctionExpression: {\n exit(path, state) {\n if (isInsideFunctionOrClass(path)) {\n return;\n }\n\n const programPath = path.findParent((entry) => entry.isProgram());\n const result = collectCandidateResult(\n path,\n programPath,\n {\n ...(state.opts || {}),\n filename: state.file?.opts?.filename || \"\",\n }\n );\n path.node._litsxElementCandidates = result.localCandidates;\n path.node._litsxImportedElementCandidates = [...result.importedCandidates.values()];\n },\n },\n },\n };\n});\n"],"names":["normalizeFilePath","ensureTypescriptModule"],"mappings":"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"}