@litsx/babel-preset-litsx 0.8.2 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +6 -5
- package/dist/index.cjs.map +1 -1
- package/dist/internal/transform-litsx-components.cjs +71 -37
- package/dist/internal/transform-litsx-components.cjs.map +1 -1
- package/dist/internal/transform-litsx-hooks.cjs +616 -9
- package/dist/internal/transform-litsx-hooks.cjs.map +1 -1
- package/dist/internal/transform-litsx-renderer-props.cjs +2 -1
- package/dist/internal/transform-litsx-renderer-props.cjs.map +1 -1
- package/dist/internal/transform-litsx-static-ir.cjs +189 -0
- package/dist/internal/transform-litsx-static-ir.cjs.map +1 -0
- package/dist/pipeline.cjs +15 -7
- package/dist/pipeline.cjs.map +1 -1
- package/dist/shared/{transform-litsx-element-candidates-D0uvqG4Y.cjs → transform-litsx-element-candidates-D8pSZxpL.cjs} +21 -13
- package/dist/shared/transform-litsx-element-candidates-D8pSZxpL.cjs.map +1 -0
- package/package.json +8 -3
- package/src/internal/transform-litsx-class-generation.js +0 -1
- package/src/internal/transform-litsx-components.js +18 -20
- package/src/internal/transform-litsx-element-candidates.js +21 -10
- package/src/internal/transform-litsx-hooks.js +614 -9
- package/src/internal/transform-litsx-static-hoists.js +57 -15
- package/src/internal/transform-litsx-static-ir.js +176 -0
- package/src/pipeline.js +9 -2
- package/dist/shared/transform-litsx-element-candidates-D0uvqG4Y.cjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform-litsx-element-candidates-D8pSZxpL.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\";\nimport {\n ensureStaticIr,\n setStaticIrBabelTypes,\n} from \"./transform-litsx-static-ir.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 setStaticIrBabelTypes(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 annotateElementCandidates(node, result) {\n if (!node) return;\n const staticIr = ensureStaticIr(node);\n staticIr.elements.localCandidates = [...result.localCandidates];\n staticIr.elements.importedCandidates = [...result.importedCandidates.values()];\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 const localCandidates = path?.node?._litsxStaticIr?.elements?.localCandidates;\n if (Array.isArray(localCandidates)) {\n return new Set(localCandidates);\n }\n\n return collectCandidateResult(path, programPath, options).localCandidates;\n}\n\nexport function getAnnotatedImportedElementCandidates(path, programPath, options = {}) {\n const importedCandidates = path?.node?._litsxStaticIr?.elements?.importedCandidates;\n if (Array.isArray(importedCandidates)) {\n return [...importedCandidates];\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 annotateElementCandidates(path.node, result);\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 annotateElementCandidates(path.node, result);\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 annotateElementCandidates(path.node, result);\n },\n },\n },\n };\n});\n"],"names":["babelTraverse","setStaticIrBabelTypes","ensureStaticIr","normalizeFilePath","ensureTypescriptModule"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@litsx/babel-preset-litsx",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Canonical native Babel preset for LitSX-authored source",
|
|
5
5
|
"author": "LitSX Team",
|
|
6
6
|
"type": "module",
|
|
@@ -41,6 +41,11 @@
|
|
|
41
41
|
"import": "./src/internal/transform-litsx-properties.js",
|
|
42
42
|
"require": "./dist/internal/transform-litsx-properties.cjs",
|
|
43
43
|
"default": "./src/internal/transform-litsx-properties.js"
|
|
44
|
+
},
|
|
45
|
+
"./internal/transform-litsx-static-ir": {
|
|
46
|
+
"import": "./src/internal/transform-litsx-static-ir.js",
|
|
47
|
+
"require": "./dist/internal/transform-litsx-static-ir.cjs",
|
|
48
|
+
"default": "./src/internal/transform-litsx-static-ir.js"
|
|
44
49
|
}
|
|
45
50
|
},
|
|
46
51
|
"files": [
|
|
@@ -77,9 +82,9 @@
|
|
|
77
82
|
"@babel/traverse": "^7.28.5",
|
|
78
83
|
"@litsx/authoring": "^0.5.0",
|
|
79
84
|
"@litsx/babel-parser": "^0.2.5",
|
|
80
|
-
"@litsx/babel-plugin-shared-hooks": "^0.
|
|
85
|
+
"@litsx/babel-plugin-shared-hooks": "^0.4.0",
|
|
81
86
|
"@litsx/babel-plugin-transform-jsx-html-template": "^0.3.6",
|
|
82
|
-
"@litsx/babel-plugin-transform-litsx-scoped-elements": "^0.4.
|
|
87
|
+
"@litsx/babel-plugin-transform-litsx-scoped-elements": "^0.4.4",
|
|
83
88
|
"@litsx/typescript-session": "^0.2.3"
|
|
84
89
|
},
|
|
85
90
|
"scripts": {
|
|
@@ -103,7 +103,6 @@ export function createComponentClass({
|
|
|
103
103
|
|
|
104
104
|
classNode._needsCss = needsCss;
|
|
105
105
|
classNode._needsUnsafeCss = needsUnsafeCss;
|
|
106
|
-
classNode._litsxLightDom = lightDomRequested;
|
|
107
106
|
classNode._needsCallbackRef = needsCallbackRef;
|
|
108
107
|
return classNode;
|
|
109
108
|
}
|
|
@@ -40,6 +40,12 @@ import {
|
|
|
40
40
|
getAnnotatedImportedElementCandidates,
|
|
41
41
|
setElementCandidatesBabelTypes,
|
|
42
42
|
} from "./transform-litsx-element-candidates.js";
|
|
43
|
+
import {
|
|
44
|
+
attachStaticIr,
|
|
45
|
+
collectStaticIr,
|
|
46
|
+
setStaticIrInferredProperties,
|
|
47
|
+
setStaticIrBabelTypes,
|
|
48
|
+
} from "./transform-litsx-static-ir.js";
|
|
43
49
|
import {
|
|
44
50
|
prepareComponentRender,
|
|
45
51
|
setRenderBodyBabelTypes,
|
|
@@ -73,6 +79,7 @@ export function createTransformFunctionToClassPlugin(defaultPluginOptions = {})
|
|
|
73
79
|
setParamRewriteBabelTypes(t);
|
|
74
80
|
setRendererCallsBabelTypes(t);
|
|
75
81
|
setElementCandidatesBabelTypes(t);
|
|
82
|
+
setStaticIrBabelTypes(t);
|
|
76
83
|
setRenderBodyBabelTypes(t);
|
|
77
84
|
setProgramBabelTypes(t);
|
|
78
85
|
const resolvedPluginOptions = {
|
|
@@ -377,6 +384,11 @@ function transformFunction(functionPath, programPath, className, options = {}) {
|
|
|
377
384
|
const { node } = functionPath;
|
|
378
385
|
const elementCandidates = getAnnotatedElementCandidates(functionPath, programPath, options);
|
|
379
386
|
const importedElementCandidates = getAnnotatedImportedElementCandidates(functionPath, programPath, options);
|
|
387
|
+
const staticIr = collectStaticIr({
|
|
388
|
+
functionPath,
|
|
389
|
+
elementCandidates,
|
|
390
|
+
importedElementCandidates,
|
|
391
|
+
});
|
|
380
392
|
let resolvedName = className;
|
|
381
393
|
if (!resolvedName && node && node.id && t.isIdentifier(node.id)) {
|
|
382
394
|
resolvedName = node.id.name;
|
|
@@ -398,6 +410,7 @@ function transformFunction(functionPath, programPath, className, options = {}) {
|
|
|
398
410
|
programPath,
|
|
399
411
|
options
|
|
400
412
|
);
|
|
413
|
+
setStaticIrInferredProperties(staticIr, propertiesStatic);
|
|
401
414
|
|
|
402
415
|
assertStaticHoistsStayTopLevel(functionPath);
|
|
403
416
|
collectNativeClassNameWarnings(functionPath, options.warn, options);
|
|
@@ -448,7 +461,7 @@ function transformFunction(functionPath, programPath, className, options = {}) {
|
|
|
448
461
|
node,
|
|
449
462
|
renderStatements,
|
|
450
463
|
programPath,
|
|
451
|
-
|
|
464
|
+
staticIr,
|
|
452
465
|
classMembers,
|
|
453
466
|
options,
|
|
454
467
|
getOrCreateModuleStaticHoistSymbol,
|
|
@@ -474,25 +487,10 @@ function transformFunction(functionPath, programPath, className, options = {}) {
|
|
|
474
487
|
needsCallbackRef,
|
|
475
488
|
});
|
|
476
489
|
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
}
|
|
482
|
-
|
|
483
|
-
if (classNode && importedElementCandidates.length > 0) {
|
|
484
|
-
classNode._litsxImportedElementCandidates ||= [];
|
|
485
|
-
importedElementCandidates.forEach((candidate) => {
|
|
486
|
-
if (!classNode._litsxImportedElementCandidates.some(
|
|
487
|
-
(entry) =>
|
|
488
|
-
entry.sourceFile === candidate.sourceFile &&
|
|
489
|
-
entry.importedName === candidate.importedName &&
|
|
490
|
-
entry.tagName === candidate.tagName
|
|
491
|
-
)) {
|
|
492
|
-
classNode._litsxImportedElementCandidates.push(candidate);
|
|
493
|
-
}
|
|
494
|
-
});
|
|
495
|
-
}
|
|
490
|
+
attachStaticIr(classNode, {
|
|
491
|
+
...staticIr,
|
|
492
|
+
lightDom: lightDomRequested,
|
|
493
|
+
});
|
|
496
494
|
|
|
497
495
|
return classNode;
|
|
498
496
|
}
|
|
@@ -6,6 +6,10 @@ import fs from "node:fs";
|
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
import { normalizeFilePath } from "@litsx/typescript-session";
|
|
8
8
|
import { ensureTypescriptModule } from "./transform-litsx-properties.js";
|
|
9
|
+
import {
|
|
10
|
+
ensureStaticIr,
|
|
11
|
+
setStaticIrBabelTypes,
|
|
12
|
+
} from "./transform-litsx-static-ir.js";
|
|
9
13
|
|
|
10
14
|
const { declare } = helperPluginUtils;
|
|
11
15
|
const traverse = babelTraverse.default || babelTraverse;
|
|
@@ -32,6 +36,7 @@ let t;
|
|
|
32
36
|
|
|
33
37
|
export function setElementCandidatesBabelTypes(nextTypes) {
|
|
34
38
|
t = nextTypes;
|
|
39
|
+
setStaticIrBabelTypes(nextTypes);
|
|
35
40
|
}
|
|
36
41
|
|
|
37
42
|
function isInsideFunctionOrClass(path) {
|
|
@@ -59,6 +64,13 @@ function createEmptyCandidateResult() {
|
|
|
59
64
|
};
|
|
60
65
|
}
|
|
61
66
|
|
|
67
|
+
function annotateElementCandidates(node, result) {
|
|
68
|
+
if (!node) return;
|
|
69
|
+
const staticIr = ensureStaticIr(node);
|
|
70
|
+
staticIr.elements.localCandidates = [...result.localCandidates];
|
|
71
|
+
staticIr.elements.importedCandidates = [...result.importedCandidates.values()];
|
|
72
|
+
}
|
|
73
|
+
|
|
62
74
|
function cloneCandidateResult(result) {
|
|
63
75
|
return {
|
|
64
76
|
localCandidates: new Set(result?.localCandidates || []),
|
|
@@ -988,16 +1000,18 @@ function collectCandidateResult(functionPath, programPath, options = {}) {
|
|
|
988
1000
|
}
|
|
989
1001
|
|
|
990
1002
|
export function getAnnotatedElementCandidates(path, programPath, options = {}) {
|
|
991
|
-
|
|
992
|
-
|
|
1003
|
+
const localCandidates = path?.node?._litsxStaticIr?.elements?.localCandidates;
|
|
1004
|
+
if (Array.isArray(localCandidates)) {
|
|
1005
|
+
return new Set(localCandidates);
|
|
993
1006
|
}
|
|
994
1007
|
|
|
995
1008
|
return collectCandidateResult(path, programPath, options).localCandidates;
|
|
996
1009
|
}
|
|
997
1010
|
|
|
998
1011
|
export function getAnnotatedImportedElementCandidates(path, programPath, options = {}) {
|
|
999
|
-
|
|
1000
|
-
|
|
1012
|
+
const importedCandidates = path?.node?._litsxStaticIr?.elements?.importedCandidates;
|
|
1013
|
+
if (Array.isArray(importedCandidates)) {
|
|
1014
|
+
return [...importedCandidates];
|
|
1001
1015
|
}
|
|
1002
1016
|
|
|
1003
1017
|
return [...collectCandidateResult(path, programPath, options).importedCandidates.values()];
|
|
@@ -1210,8 +1224,7 @@ export default declare((api) => {
|
|
|
1210
1224
|
filename: state.file?.opts?.filename || "",
|
|
1211
1225
|
}
|
|
1212
1226
|
);
|
|
1213
|
-
path.node
|
|
1214
|
-
path.node._litsxImportedElementCandidates = [...result.importedCandidates.values()];
|
|
1227
|
+
annotateElementCandidates(path.node, result);
|
|
1215
1228
|
},
|
|
1216
1229
|
},
|
|
1217
1230
|
ArrowFunctionExpression: {
|
|
@@ -1229,8 +1242,7 @@ export default declare((api) => {
|
|
|
1229
1242
|
filename: state.file?.opts?.filename || "",
|
|
1230
1243
|
}
|
|
1231
1244
|
);
|
|
1232
|
-
path.node
|
|
1233
|
-
path.node._litsxImportedElementCandidates = [...result.importedCandidates.values()];
|
|
1245
|
+
annotateElementCandidates(path.node, result);
|
|
1234
1246
|
},
|
|
1235
1247
|
},
|
|
1236
1248
|
FunctionExpression: {
|
|
@@ -1248,8 +1260,7 @@ export default declare((api) => {
|
|
|
1248
1260
|
filename: state.file?.opts?.filename || "",
|
|
1249
1261
|
}
|
|
1250
1262
|
);
|
|
1251
|
-
path.node
|
|
1252
|
-
path.node._litsxImportedElementCandidates = [...result.importedCandidates.values()];
|
|
1263
|
+
annotateElementCandidates(path.node, result);
|
|
1253
1264
|
},
|
|
1254
1265
|
},
|
|
1255
1266
|
},
|