@litsx/babel-preset-litsx 0.3.0 → 0.5.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.
@@ -1115,7 +1115,7 @@ function extractProperties(functionPath, programPath, options = {}) {
1115
1115
  if (!propertyMap.has(propName) && warn) {
1116
1116
  warn({
1117
1117
  code: 91018,
1118
- message: `Falling back to String for prop "${propName}" inferred from opaque props access. Prefer destructuring, TypeScript types, or ^properties(...) for stronger property metadata.`,
1118
+ message: `Falling back to String for prop "${propName}" inferred from opaque props access. Prefer destructuring, TypeScript types, or static properties = ... for stronger property metadata.`,
1119
1119
  propName,
1120
1120
  localName: bindingName,
1121
1121
  line: memberPath.node.loc?.start?.line ?? null,
@@ -1 +1 @@
1
- {"version":3,"file":"transform-litsx-properties.cjs","sources":["../../src/internal/transform-litsx-properties.js"],"sourcesContent":["import { createRequire } from \"module\";\nimport {\n createInMemoryTsSession,\n getOrCreateStandaloneTsSession,\n normalizeFilePath,\n dirname,\n} from \"@litsx/typescript-session\";\n\nlet ts;\nlet t;\nconst TYPE_RESOLVER_CACHE = new Map();\nconst TYPE_RESOLVER_CACHE_LIMIT = 200;\nconst nodeRequire = (() => {\n try {\n return createRequire(import.meta.url);\n } catch {\n return null;\n }\n})();\n\nconst TYPE_RESOLUTION_MODES = {\n AUTO: \"auto\",\n IN_MEMORY: \"in-memory\",\n};\n\nconst VIRTUAL_SOURCE_FILENAME = \"/__litsx_virtual__/inline-input.tsx\";\nconst VIRTUAL_LIB_FILENAME = \"/__litsx_virtual__/lib.playground.d.ts\";\nconst DEFAULT_IN_MEMORY_LIB = `\ntype PropertyKey = string | number | symbol;\ninterface Object {}\ninterface Function {}\ninterface CallableFunction extends Function {}\ninterface NewableFunction extends Function {}\ninterface IArguments {\n length: number;\n callee: Function;\n [index: number]: any;\n}\ninterface String {}\ninterface Number {}\ninterface Boolean {}\ninterface Symbol {}\ninterface Array<T> {\n length: number;\n [n: number]: T;\n}\ninterface ReadonlyArray<T> {\n readonly length: number;\n readonly [n: number]: T;\n}\ninterface Date {}\ntype Partial<T> = { [P in keyof T]?: T[P] };\ntype Required<T> = { [P in keyof T]-?: T[P] };\ntype Readonly<T> = { readonly [P in keyof T]: T[P] };\ntype Pick<T, K extends keyof T> = { [P in K]: T[P] };\ntype Exclude<T, U> = T extends U ? never : T;\ntype Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>>;\ntype Record<K extends keyof any, T> = { [P in K]: T };\n`;\n\nconst DEFAULT_IN_MEMORY_FILES = {\n [VIRTUAL_LIB_FILENAME]: DEFAULT_IN_MEMORY_LIB,\n};\n\nfunction normalizeTypescriptModule(moduleValue) {\n return moduleValue?.default ?? moduleValue ?? null;\n}\n\nexport function ensureTypescriptModule() {\n if (ts) {\n return ts;\n }\n\n if (\n nodeRequire &&\n (typeof process === \"undefined\" || process.browser !== true)\n ) {\n try {\n ts = normalizeTypescriptModule(nodeRequire(\"typescript\"));\n return ts;\n } catch {\n // Fall through to the explicit runtime error below.\n }\n }\n\n throw new Error(\n \"The LitSX transform needs a TypeScript runtime. Load it before using the transform in browser workers, or install the local 'typescript' package for Node-based transforms.\"\n );\n}\n\nexport function setTypescriptModule(moduleValue) {\n ts = normalizeTypescriptModule(moduleValue);\n return ts;\n}\n\nexport function setPropertyBabelTypes(types) {\n t = types;\n}\n\nfunction normalizeInMemoryFiles(files = {}) {\n const normalizedFiles = new Map();\n Object.entries({\n ...DEFAULT_IN_MEMORY_FILES,\n ...files,\n }).forEach(([filePath, fileSource]) => {\n normalizedFiles.set(normalizeFilePath(filePath), fileSource);\n });\n return normalizedFiles;\n}\n\nfunction hashSource(text) {\n let hash = 2166136261;\n for (let index = 0; index < text.length; index += 1) {\n hash ^= text.charCodeAt(index);\n hash = Math.imul(hash, 16777619);\n }\n return (hash >>> 0).toString(16);\n}\n\nfunction getTypeResolverCacheKey(\n filename,\n source,\n mode = TYPE_RESOLUTION_MODES.AUTO,\n sessionKey = \"\",\n) {\n const normalizedFilename = filename\n ? normalizeFilePath(filename)\n : VIRTUAL_SOURCE_FILENAME;\n return `${mode}:${sessionKey}:${normalizedFilename}:${hashSource(source)}`;\n}\n\nfunction getTypeResolutionSessionKey(filename, compilerOptions, sessionKey = \"\") {\n return JSON.stringify({\n directory: dirname(filename),\n compilerOptions,\n sessionKey,\n });\n}\n\nfunction rememberTypeResolver(cacheKey, resolver) {\n TYPE_RESOLVER_CACHE.set(cacheKey, resolver);\n if (TYPE_RESOLVER_CACHE.size <= TYPE_RESOLVER_CACHE_LIMIT) return resolver;\n\n const oldestKey = TYPE_RESOLVER_CACHE.keys().next().value;\n if (oldestKey) {\n TYPE_RESOLVER_CACHE.delete(oldestKey);\n }\n return resolver;\n}\n\nfunction createSpanNodeLookup(sourceFile) {\n const baseCache = new Map();\n const predicateCache = new WeakMap();\n\n function getCacheKey(start, end) {\n return `${start}:${end}`;\n }\n\n function lookup(start, end, predicate) {\n const cacheKey = getCacheKey(start, end);\n if (!predicate) {\n if (baseCache.has(cacheKey)) {\n return baseCache.get(cacheKey);\n }\n const resolved = findTsNodeAtSpan(sourceFile, start, end, null);\n baseCache.set(cacheKey, resolved);\n return resolved;\n }\n\n let cache = predicateCache.get(predicate);\n if (!cache) {\n cache = new Map();\n predicateCache.set(predicate, cache);\n }\n\n if (cache.has(cacheKey)) {\n return cache.get(cacheKey);\n }\n\n const resolved = findTsNodeAtSpan(sourceFile, start, end, predicate);\n cache.set(cacheKey, resolved);\n return resolved;\n }\n\n return lookup;\n}\n\nexport function createTypeResolver(filename, source, options = {}) {\n if (!source) {\n return null;\n }\n\n ensureTypescriptModule();\n\n const providedTypescriptSession =\n options?.typescriptSession?.projectSession || options?.typescriptSession || null;\n const typeResolutionMode =\n options?.typeResolutionMode === TYPE_RESOLUTION_MODES.IN_MEMORY\n ? TYPE_RESOLUTION_MODES.IN_MEMORY\n : TYPE_RESOLUTION_MODES.AUTO;\n\n const cacheKey = providedTypescriptSession\n ? null\n : getTypeResolverCacheKey(\n filename,\n source,\n typeResolutionMode,\n \"\",\n );\n if (cacheKey) {\n const cached = TYPE_RESOLVER_CACHE.get(cacheKey);\n if (cached) {\n TYPE_RESOLVER_CACHE.delete(cacheKey);\n TYPE_RESOLVER_CACHE.set(cacheKey, cached);\n return cached;\n }\n }\n\n const shouldUseInMemoryResolution = typeResolutionMode === TYPE_RESOLUTION_MODES.IN_MEMORY;\n const resolvedFilename =\n shouldUseInMemoryResolution || !filename\n ? VIRTUAL_SOURCE_FILENAME\n : normalizeFilePath(filename);\n const normalizedFilename = normalizeFilePath(resolvedFilename);\n const compilerOptions = {\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n moduleResolution: ts.ModuleResolutionKind.Bundler,\n jsx: ts.JsxEmit.Preserve,\n allowJs: true,\n checkJs: false,\n skipLibCheck: true,\n strict: false,\n esModuleInterop: true,\n allowSyntheticDefaultImports: true,\n types: [],\n };\n\n if (shouldUseInMemoryResolution || !filename) {\n return createInMemoryTypeResolver(\n normalizedFilename,\n source,\n compilerOptions,\n cacheKey,\n options?.inMemoryFiles,\n providedTypescriptSession,\n );\n }\n\n try {\n const sharedSession =\n providedTypescriptSession ||\n getOrCreateStandaloneTsSession(\n getTypeResolutionSessionKey(normalizedFilename, compilerOptions),\n {\n typescript: ts,\n compilerOptions,\n },\n );\n\n return createResolvedTypeResolver(\n cacheKey ? rememberTypeResolver : (_, resolver) => resolver,\n cacheKey,\n sharedSession.getTypeResolver(normalizedFilename, source),\n );\n } catch {\n return null;\n }\n}\n\nfunction createInMemoryTypeResolver(\n filename,\n source,\n compilerOptions,\n cacheKey,\n inMemoryFiles = {},\n providedSession = null,\n) {\n const sourceFilename = normalizeFilePath(filename || VIRTUAL_SOURCE_FILENAME);\n const files = normalizeInMemoryFiles(inMemoryFiles);\n files.set(sourceFilename, source);\n\n const inMemoryCompilerOptions = {\n ...compilerOptions,\n noLib: true,\n };\n\n try {\n const session = providedSession || createInMemoryTsSession({\n typescript: ts,\n compilerOptions: inMemoryCompilerOptions,\n files: Object.fromEntries(files),\n sourceFilename,\n defaultLibFileName: VIRTUAL_LIB_FILENAME,\n rootNames: [sourceFilename, VIRTUAL_LIB_FILENAME],\n });\n\n return createResolvedTypeResolver(\n cacheKey ? rememberTypeResolver : (_, resolver) => resolver,\n cacheKey,\n session.getTypeResolver(sourceFilename, source),\n );\n } catch {\n return null;\n }\n}\n\nfunction createResolvedTypeResolver(remember, cacheKey, resolved) {\n if (!resolved?.sourceFile || !resolved?.checker) {\n return null;\n }\n\n return remember(cacheKey, {\n filename: resolved.filename,\n sourceFile: resolved.sourceFile,\n checker: resolved.checker,\n checkerTypeCache: new Map(),\n checkerPropertyMapCache: new Map(),\n checkerTypeConfigCache:\n resolved.getSemanticCache?.(\"checkerTypeConfigCache\", () => new WeakMap()) ?? new WeakMap(),\n checkerTypeConfigInProgress: new WeakSet(),\n checkerPropertyMapByTypeCache:\n resolved.getSemanticCache?.(\"checkerPropertyMapByTypeCache\", () => new WeakMap()) ?? new WeakMap(),\n getNodeAtSpan: createSpanNodeLookup(resolved.sourceFile),\n });\n}\n\nfunction findTsNodeAtSpan(sourceFile, start, end, predicate) {\n let found = null;\n\n function visit(node) {\n if (found) return;\n if (start < node.pos || end > node.end) return;\n\n if (node.pos === start && node.end === end && (!predicate || predicate(node))) {\n found = node;\n return;\n }\n\n ts.forEachChild(node, visit);\n\n if (!found && start >= node.getStart(sourceFile) && end <= node.end && (!predicate || predicate(node))) {\n found = node;\n }\n }\n\n visit(sourceFile);\n return found;\n}\n\nexport function createPropertyConfig(type = null, options = {}) {\n return {\n type: type ? t.cloneNode(type) : null,\n attribute: options.attribute,\n };\n}\n\nfunction normalizePropertyConfigInput(input) {\n if (!input) return createPropertyConfig();\n if (t.isIdentifier(input)) return createPropertyConfig(input);\n return clonePropertyConfig(input);\n}\n\nfunction clonePropertyConfig(config) {\n return createPropertyConfig(config?.type || null, { attribute: config?.attribute });\n}\n\nexport function createPropertyValue(config, defaultType = true) {\n const normalized = config || createPropertyConfig();\n const properties = [];\n const typeNode = normalized.type || (defaultType ? t.identifier(\"String\") : null);\n\n if (typeNode) {\n properties.push(t.objectProperty(t.identifier(\"type\"), t.cloneNode(typeNode)));\n }\n\n if (normalized.attribute === false) {\n properties.push(\n t.objectProperty(t.identifier(\"attribute\"), t.booleanLiteral(false))\n );\n }\n\n return t.objectExpression(properties);\n}\n\nexport function mergePropertyConfig(entry, config, defaultType = false) {\n if (!entry || !entry.node || !t.isObjectExpression(entry.node.value) || !config) {\n return;\n }\n\n const value = entry.node.value;\n\n if (config.type) {\n const typeProp = value.properties.find(\n (prop) =>\n t.isObjectProperty(prop) &&\n t.isIdentifier(prop.key, { name: \"type\" })\n );\n\n if (!typeProp) {\n value.properties.unshift(\n t.objectProperty(t.identifier(\"type\"), t.cloneNode(config.type))\n );\n } else if (\n t.isIdentifier(typeProp.value) &&\n typeProp.value.name === \"String\" &&\n t.isIdentifier(config.type) &&\n config.type.name !== \"String\"\n ) {\n typeProp.value = t.cloneNode(config.type);\n }\n } else if (defaultType) {\n const hasType = value.properties.some(\n (prop) =>\n t.isObjectProperty(prop) &&\n t.isIdentifier(prop.key, { name: \"type\" })\n );\n if (!hasType) {\n value.properties.unshift(\n t.objectProperty(t.identifier(\"type\"), t.identifier(\"String\"))\n );\n }\n }\n\n if (config.attribute === false) {\n const attributeProp = value.properties.find(\n (prop) =>\n t.isObjectProperty(prop) &&\n t.isIdentifier(prop.key, { name: \"attribute\" })\n );\n\n if (!attributeProp) {\n value.properties.push(\n t.objectProperty(t.identifier(\"attribute\"), t.booleanLiteral(false))\n );\n } else {\n attributeProp.value = t.booleanLiteral(false);\n }\n }\n}\n\nfunction mapLiteralTypeToLit(tsType) {\n if (!t.isTSLiteralType(tsType)) return null;\n const literal = tsType.literal;\n if (t.isStringLiteral(literal)) return t.identifier(\"String\");\n if (t.isNumericLiteral(literal)) return t.identifier(\"Number\");\n if (literal.type === \"BooleanLiteral\") return t.identifier(\"Boolean\");\n return null;\n}\n\nfunction mapCheckerTypeToPropertyConfig(type, checker, cacheState = null, seen = new Set()) {\n if (!type) return createPropertyConfig(t.identifier(\"Object\"));\n\n const nonNullable = checker.getNonNullableType\n ? checker.getNonNullableType(type)\n : type;\n const typeConfigCache = cacheState?.cache;\n const inProgress = cacheState?.inProgress;\n\n if (typeConfigCache?.has(nonNullable)) {\n return typeConfigCache.get(nonNullable);\n }\n\n if (inProgress?.has(nonNullable)) {\n return createPropertyConfig(t.identifier(\"Object\"));\n }\n\n inProgress?.add(nonNullable);\n\n let resolvedConfig;\n\n if (nonNullable.isUnion?.()) {\n const configs = nonNullable.types.map((item) =>\n mapCheckerTypeToPropertyConfig(item, checker, cacheState, seen)\n );\n const uniqueTypes = [...new Set(\n configs\n .map((config) => (config?.type && t.isIdentifier(config.type) ? config.type.name : null))\n .filter(Boolean)\n )];\n const attributeFalse = configs.every((config) => config?.attribute === false);\n if (uniqueTypes.length === 1) {\n resolvedConfig = createPropertyConfig(t.identifier(uniqueTypes[0]), {\n attribute: attributeFalse ? false : undefined,\n });\n } else {\n resolvedConfig = createPropertyConfig(t.identifier(\"Object\"), {\n attribute: attributeFalse ? false : undefined,\n });\n }\n } else if (nonNullable.isIntersection?.()) {\n const configs = nonNullable.types.map((item) =>\n mapCheckerTypeToPropertyConfig(item, checker, cacheState, seen)\n );\n const primitiveNames = [\"String\", \"Number\", \"Boolean\", \"Array\", \"Date\"];\n const uniqueTypes = [...new Set(\n configs\n .map((config) => (config?.type && t.isIdentifier(config.type) ? config.type.name : null))\n .filter(Boolean)\n )];\n const preferredPrimitive = primitiveNames.find((name) => uniqueTypes.includes(name));\n const attributeFalse = configs.every((config) => config?.attribute === false);\n if (preferredPrimitive) {\n resolvedConfig = createPropertyConfig(t.identifier(preferredPrimitive), {\n attribute: attributeFalse ? false : undefined,\n });\n } else if (uniqueTypes.length === 1) {\n resolvedConfig = createPropertyConfig(t.identifier(uniqueTypes[0]), {\n attribute: attributeFalse ? false : undefined,\n });\n } else {\n resolvedConfig = createPropertyConfig(t.identifier(\"Object\"), {\n attribute: attributeFalse ? false : undefined,\n });\n }\n } else {\n const callSignatures = checker.getSignaturesOfType(nonNullable, ts.SignatureKind.Call);\n if (callSignatures.length) {\n resolvedConfig = createPropertyConfig(t.identifier(\"Object\"), { attribute: false });\n } else if (nonNullable.flags & (ts.TypeFlags.String | ts.TypeFlags.StringLike)) {\n resolvedConfig = createPropertyConfig(t.identifier(\"String\"));\n } else if (nonNullable.flags & (ts.TypeFlags.Number | ts.TypeFlags.NumberLike)) {\n resolvedConfig = createPropertyConfig(t.identifier(\"Number\"));\n } else if (nonNullable.flags & (ts.TypeFlags.Boolean | ts.TypeFlags.BooleanLike)) {\n resolvedConfig = createPropertyConfig(t.identifier(\"Boolean\"));\n } else if (nonNullable.flags & ts.TypeFlags.BigIntLike) {\n resolvedConfig = createPropertyConfig(t.identifier(\"Object\"));\n } else if (checker.isArrayType?.(nonNullable) || checker.isTupleType?.(nonNullable)) {\n resolvedConfig = createPropertyConfig(t.identifier(\"Array\"));\n } else {\n const symbol = nonNullable.getSymbol?.();\n const symbolName = symbol?.getName?.();\n if (symbolName === \"Date\") {\n resolvedConfig = createPropertyConfig(t.identifier(\"Date\"));\n } else {\n if (symbol && !seen.has(symbol)) {\n seen.add(symbol);\n }\n resolvedConfig = createPropertyConfig(t.identifier(\"Object\"));\n }\n }\n }\n\n inProgress?.delete(nonNullable);\n typeConfigCache?.set(nonNullable, resolvedConfig);\n return resolvedConfig;\n}\n\nfunction getBabelNodeSpanCacheKey(node) {\n if (typeof node?.start !== \"number\" || typeof node?.end !== \"number\") {\n return null;\n }\n return `${node.start}:${node.end}`;\n}\n\nfunction getCheckerTypeForBabelNode(node, typeResolver) {\n const cacheKey = getBabelNodeSpanCacheKey(node);\n if (!typeResolver || !cacheKey) {\n return null;\n }\n\n const typeCache = typeResolver.checkerTypeCache;\n if (typeCache?.has(cacheKey)) {\n return typeCache.get(cacheKey);\n }\n\n const tsNode = typeResolver.getNodeAtSpan(node.start, node.end);\n if (!tsNode) {\n typeCache?.set(cacheKey, null);\n return null;\n }\n\n try {\n const resolvedType = typeResolver.checker.getTypeAtLocation(tsNode);\n typeCache?.set(cacheKey, resolvedType);\n return resolvedType;\n } catch {\n typeCache?.set(cacheKey, null);\n return null;\n }\n}\n\nfunction getCheckerPropertyMapForPattern(node, typeResolver) {\n const cacheKey = getBabelNodeSpanCacheKey(node);\n if (!typeResolver || !cacheKey) {\n return null;\n }\n\n const propertyMapCache = typeResolver.checkerPropertyMapCache;\n if (propertyMapCache?.has(cacheKey)) {\n return propertyMapCache.get(cacheKey);\n }\n\n const type = getCheckerTypeForBabelNode(node, typeResolver);\n if (!type) {\n propertyMapCache?.set(cacheKey, null);\n return null;\n }\n const checker = typeResolver.checker;\n const nonNullable = checker.getNonNullableType\n ? checker.getNonNullableType(type)\n : type;\n const propertyMapByTypeCache = typeResolver.checkerPropertyMapByTypeCache;\n\n if (propertyMapByTypeCache?.has(nonNullable)) {\n const cachedPropertyMap = propertyMapByTypeCache.get(nonNullable);\n propertyMapCache?.set(cacheKey, cachedPropertyMap);\n return cachedPropertyMap;\n }\n\n if (\n checker.isArrayType?.(nonNullable) ||\n checker.isTupleType?.(nonNullable) ||\n (nonNullable.flags & (\n ts.TypeFlags.StringLike |\n ts.TypeFlags.NumberLike |\n ts.TypeFlags.BooleanLike |\n ts.TypeFlags.BigIntLike\n ))\n ) {\n propertyMapCache?.set(cacheKey, null);\n return null;\n }\n\n if (checker.getSignaturesOfType(nonNullable, ts.SignatureKind.Call).length) {\n propertyMapCache?.set(cacheKey, null);\n return null;\n }\n\n const typeConfigCacheState = {\n cache: typeResolver.checkerTypeConfigCache,\n inProgress: typeResolver.checkerTypeConfigInProgress,\n };\n const propertyMap = new Map();\n for (const symbol of checker.getPropertiesOfType(nonNullable)) {\n const valueDeclaration = symbol.valueDeclaration || symbol.declarations?.[0];\n if (!valueDeclaration) continue;\n const symbolType = checker.getTypeOfSymbolAtLocation(symbol, valueDeclaration);\n propertyMap.set(\n symbol.getName(),\n mapCheckerTypeToPropertyConfig(symbolType, checker, typeConfigCacheState)\n );\n }\n\n const resolvedPropertyMap = propertyMap.size ? propertyMap : null;\n propertyMapByTypeCache?.set(nonNullable, resolvedPropertyMap);\n propertyMapCache?.set(cacheKey, resolvedPropertyMap);\n return resolvedPropertyMap;\n}\n\nfunction findTypeDeclaration(programPath, name) {\n if (!programPath) return null;\n const bodyPaths = programPath.get(\"body\");\n for (const path of bodyPaths) {\n if (path.isTSTypeAliasDeclaration() && path.node.id.name === name) {\n return path.node;\n }\n if (path.isTSInterfaceDeclaration() && path.node.id.name === name) {\n return path.node;\n }\n }\n return null;\n}\n\nfunction getTypeLiteralMembers(node, programPath, seen = new Set()) {\n if (!node) return [];\n\n if (t.isTSTypeAliasDeclaration(node)) {\n return getTypeLiteralMembers(node.typeAnnotation, programPath, seen);\n }\n\n if (t.isTSInterfaceDeclaration(node)) {\n const members = [...node.body.body];\n for (const extension of node.extends || []) {\n if (!t.isIdentifier(extension.expression)) continue;\n const name = extension.expression.name;\n if (seen.has(name)) continue;\n seen.add(name);\n const declaration = findTypeDeclaration(programPath, name);\n members.unshift(...getTypeLiteralMembers(declaration, programPath, seen));\n }\n return members;\n }\n\n if (t.isTSTypeLiteral(node)) {\n return [...node.members];\n }\n\n if (t.isTSIntersectionType(node)) {\n return node.types.flatMap((typeNode) =>\n getTypeLiteralMembers(typeNode, programPath, seen)\n );\n }\n\n if (t.isTSParenthesizedType(node)) {\n return getTypeLiteralMembers(node.typeAnnotation, programPath, seen);\n }\n\n if (t.isTSTypeReference(node) && programPath && t.isIdentifier(node.typeName)) {\n const name = node.typeName.name;\n if (seen.has(name)) return [];\n seen.add(name);\n const declaration = findTypeDeclaration(programPath, name);\n return getTypeLiteralMembers(declaration, programPath, seen);\n }\n\n return [];\n}\n\nfunction mapTsTypeToLit(tsType, programPath, seen = new Set()) {\n if (!tsType) return createPropertyConfig(t.identifier(\"Object\"));\n\n if (t.isTSParenthesizedType(tsType)) {\n return mapTsTypeToLit(tsType.typeAnnotation, programPath, seen);\n }\n\n switch (tsType.type) {\n case \"TSStringKeyword\":\n return createPropertyConfig(t.identifier(\"String\"));\n case \"TSNumberKeyword\":\n return createPropertyConfig(t.identifier(\"Number\"));\n case \"TSBooleanKeyword\":\n return createPropertyConfig(t.identifier(\"Boolean\"));\n case \"TSArrayType\":\n case \"TSTupleType\":\n return createPropertyConfig(t.identifier(\"Array\"));\n case \"TSFunctionType\":\n case \"TSConstructorType\":\n return createPropertyConfig(t.identifier(\"Object\"), { attribute: false });\n case \"TSLiteralType\": {\n const literalType = mapLiteralTypeToLit(tsType);\n return createPropertyConfig(literalType || t.identifier(\"Object\"));\n }\n case \"TSUnionType\": {\n const inferred = tsType.types\n .map((typeNode) => mapTsTypeToLit(typeNode, programPath, seen))\n .filter(Boolean);\n const uniqueTypes = [...new Set(\n inferred\n .map((config) => (t.isIdentifier(config.type) ? config.type.name : null))\n .filter(Boolean)\n )];\n const attributeFalse = inferred.every((config) => config.attribute === false);\n if (uniqueTypes.length === 1) {\n return createPropertyConfig(t.identifier(uniqueTypes[0]), {\n attribute: attributeFalse ? false : undefined,\n });\n }\n return createPropertyConfig(t.identifier(\"Object\"), {\n attribute: attributeFalse ? false : undefined,\n });\n }\n case \"TSIntersectionType\": {\n if (\n getTypeLiteralMembers(tsType, programPath, new Set(seen)).length > 0\n ) {\n return createPropertyConfig(t.identifier(\"Object\"));\n }\n return createPropertyConfig(t.identifier(\"Object\"));\n }\n case \"TSTypeReference\": {\n if (\n t.isIdentifier(tsType.typeName) &&\n (tsType.typeName.name === \"Array\" || tsType.typeName.name === \"ReadonlyArray\")\n ) {\n return createPropertyConfig(t.identifier(\"Array\"));\n }\n if (t.isIdentifier(tsType.typeName) && tsType.typeName.name === \"Record\") {\n return createPropertyConfig(t.identifier(\"Object\"));\n }\n if (t.isIdentifier(tsType.typeName) && tsType.typeName.name === \"Date\") {\n return createPropertyConfig(t.identifier(\"Date\"));\n }\n if (t.isIdentifier(tsType.typeName)) {\n const name = tsType.typeName.name;\n if (seen.has(name)) {\n return createPropertyConfig(t.identifier(\"Object\"));\n }\n const nextSeen = new Set(seen);\n nextSeen.add(name);\n const declaration = findTypeDeclaration(programPath, name);\n if (declaration) {\n if (getTypeLiteralMembers(declaration, programPath, nextSeen).length > 0) {\n return createPropertyConfig(t.identifier(\"Object\"));\n }\n if (t.isTSTypeAliasDeclaration(declaration)) {\n return mapTsTypeToLit(declaration.typeAnnotation, programPath, nextSeen);\n }\n if (t.isTSInterfaceDeclaration(declaration)) {\n return createPropertyConfig(t.identifier(\"Object\"));\n }\n }\n }\n return createPropertyConfig(t.identifier(\"Object\"));\n }\n default:\n return createPropertyConfig(t.identifier(\"Object\"));\n }\n}\n\nfunction inferTypeFromDefault(node) {\n if (t.isNumericLiteral(node)) {\n return t.identifier(\"Number\");\n }\n if (t.isBooleanLiteral(node)) {\n return t.identifier(\"Boolean\");\n }\n if (t.isArrayExpression(node)) {\n return t.identifier(\"Array\");\n }\n if (t.isObjectExpression(node)) {\n return t.identifier(\"Object\");\n }\n return t.identifier(\"String\");\n}\n\nfunction extractParamName(param) {\n if (t.isIdentifier(param)) return param.name;\n if (t.isRestElement(param) && t.isIdentifier(param.argument)) {\n return param.argument.name;\n }\n if (t.isAssignmentPattern(param) && t.isIdentifier(param.left)) {\n return param.left.name;\n }\n if (t.isObjectProperty(param) && t.isIdentifier(param.value)) {\n return param.value.name;\n }\n if (\n t.isObjectProperty(param) &&\n t.isAssignmentPattern(param.value) &&\n t.isIdentifier(param.value.left)\n ) {\n return param.value.left.name;\n }\n if (\n t.isObjectProperty(param) &&\n t.isIdentifier(param.key) &&\n !param.shorthand &&\n !t.isIdentifier(param.value)\n ) {\n return param.key.name;\n }\n return null;\n}\n\nfunction getTsLiteralPropertyTypes(typeAnnotation, programPath, seen = new Set()) {\n const map = new Map();\n if (!typeAnnotation) return map;\n const tsType =\n typeAnnotation.type === \"TSTypeAnnotation\"\n ? typeAnnotation.typeAnnotation\n : typeAnnotation;\n if (!tsType) return map;\n\n if (t.isTSTypeAliasDeclaration(tsType)) {\n return getTsLiteralPropertyTypes(tsType.typeAnnotation, programPath, seen);\n } else if (t.isTSTypeLiteral(tsType)) {\n tsType.members.forEach((member) => {\n if (\n t.isTSPropertySignature(member) &&\n t.isIdentifier(member.key) &&\n member.typeAnnotation\n ) {\n map.set(\n member.key.name,\n mapTsTypeToLit(member.typeAnnotation.typeAnnotation, programPath, seen)\n );\n }\n });\n } else if (t.isTSInterfaceDeclaration(tsType)) {\n getTypeLiteralMembers(tsType, programPath, seen).forEach((member) => {\n if (\n t.isTSPropertySignature(member) &&\n t.isIdentifier(member.key) &&\n member.typeAnnotation\n ) {\n map.set(\n member.key.name,\n mapTsTypeToLit(member.typeAnnotation.typeAnnotation, programPath, seen)\n );\n }\n });\n } else if (t.isTSIntersectionType(tsType)) {\n tsType.types.forEach((typeNode) => {\n const nextMap = getTsLiteralPropertyTypes(typeNode, programPath, seen);\n nextMap.forEach((value, key) => {\n if (!map.has(key)) map.set(key, value);\n });\n });\n } else if (t.isTSMappedType(tsType)) {\n map.set(\"default\", createPropertyConfig(t.identifier(\"Object\")));\n } else if (t.isTSTypeReference(tsType) && programPath) {\n const typeName = tsType.typeName;\n if (t.isIdentifier(typeName)) {\n const aliasName = typeName.name;\n if (!seen.has(aliasName)) {\n seen.add(aliasName);\n const declaration = findTypeDeclaration(programPath, aliasName);\n if (declaration) {\n const aliasMap = getTsLiteralPropertyTypes(\n declaration,\n programPath,\n seen\n );\n aliasMap.forEach((value, key) => {\n if (!map.has(key)) {\n map.set(key, value);\n }\n });\n }\n }\n }\n }\n\n return map;\n}\n\nexport function extractProperties(functionPath, programPath, options = {}) {\n const typeResolver = options.typeResolver || null;\n const warn =\n typeof options.warn === \"function\"\n ? options.warn\n : null;\n const propertyMap = new Map();\n const bindings = new Map();\n const defaults = new Map();\n const nestedInitializers = [];\n const forwardRefOptions = options.forwardRef;\n\n function isSpecialRefPropName(name) {\n return name === \"ref\";\n }\n\n function getSpecialRefPropertyConfig() {\n return createPropertyConfig(t.identifier(\"Object\"), { attribute: false });\n }\n\n function addNestedInitializer(pattern, rootName, defaultValue) {\n nestedInitializers.push({\n pattern: t.cloneNode(pattern),\n root: rootName,\n defaultValue: defaultValue ? t.cloneNode(defaultValue) : null,\n });\n }\n\n function ensureProperty(propName, config, options = {}) {\n if (!propName || propName === \"props\") return null;\n let normalizedConfig = normalizePropertyConfigInput(config);\n if (isSpecialRefPropName(propName)) {\n const refConfig = getSpecialRefPropertyConfig();\n normalizedConfig = createPropertyConfig(\n normalizedConfig.type || refConfig.type,\n {\n attribute:\n normalizedConfig.attribute === false || refConfig.attribute === false\n ? false\n : normalizedConfig.attribute,\n }\n );\n }\n let entry = propertyMap.get(propName);\n\n if (!entry) {\n entry = {\n node: t.objectProperty(\n t.identifier(propName),\n createPropertyValue(normalizedConfig, options.defaultType !== false)\n ),\n };\n propertyMap.set(propName, entry);\n return entry;\n }\n\n mergePropertyConfig(entry, normalizedConfig, options.defaultType !== false);\n\n return entry;\n }\n\n function registerBinding(localName, propName) {\n if (!localName || !propName) return;\n bindings.set(localName, propName);\n }\n\n function recordDefault(propName, expression) {\n if (!propName || !expression) return;\n if (!defaults.has(propName)) {\n defaults.set(propName, t.cloneNode(expression));\n }\n }\n\n function handleIdentifier(identifier, config, options = {}) {\n const propertyConfig = isSpecialRefPropName(identifier.name)\n ? getSpecialRefPropertyConfig()\n : config || createPropertyConfig(t.identifier(\"String\"));\n ensureProperty(identifier.name, propertyConfig);\n if (options.bindKey) {\n registerBinding(identifier.name, options.bindKey);\n } else {\n registerBinding(identifier.name, identifier.name);\n }\n }\n\n function handleRestElement(restEl, explicitType, options = {}) {\n const name = extractParamName(restEl);\n if (!name) return;\n const propertyConfig = isSpecialRefPropName(name)\n ? getSpecialRefPropertyConfig()\n : explicitType || createPropertyConfig(t.identifier(\"Array\"));\n ensureProperty(name, propertyConfig);\n registerBinding(name, options.bindKey || name);\n }\n\n function handleAssignmentPattern(pattern, explicitType) {\n const name = extractParamName(pattern);\n if (!name) return;\n let propertyConfig = isSpecialRefPropName(name)\n ? getSpecialRefPropertyConfig()\n : explicitType || createPropertyConfig(t.identifier(\"String\"));\n if (!explicitType && pattern.right) {\n propertyConfig = createPropertyConfig(inferTypeFromDefault(pattern.right));\n }\n if (isSpecialRefPropName(name)) {\n propertyConfig = getSpecialRefPropertyConfig();\n }\n ensureProperty(name, propertyConfig);\n registerBinding(name, name);\n if (pattern.right) {\n recordDefault(name, pattern.right);\n }\n }\n\n function handleObjectPattern(pattern) {\n const typeMap =\n getCheckerPropertyMapForPattern(pattern, typeResolver) ||\n getTsLiteralPropertyTypes(pattern.typeAnnotation, programPath);\n pattern.properties.forEach((prop) => {\n if (t.isRestElement(prop) && t.isIdentifier(prop.argument)) {\n const restName = prop.argument.name;\n ensureProperty(restName, createPropertyConfig(t.identifier(\"Object\")));\n registerBinding(restName, restName);\n return;\n }\n\n if (!t.isObjectProperty(prop)) return;\n\n const keyName = t.isIdentifier(prop.key)\n ? prop.key.name\n : t.isStringLiteral(prop.key)\n ? prop.key.value\n : null;\n\n if (!keyName) return;\n\n let localName;\n let propertyConfig = isSpecialRefPropName(keyName)\n ? getSpecialRefPropertyConfig()\n : typeMap.get(keyName) || createPropertyConfig(t.identifier(\"String\"));\n\n if (t.isIdentifier(prop.value)) {\n localName = prop.value.name;\n } else if (t.isAssignmentPattern(prop.value)) {\n const assignment = prop.value;\n if (t.isIdentifier(assignment.left)) {\n localName = assignment.left.name;\n if (\n t.isIdentifier(propertyConfig.type) &&\n propertyConfig.type.name === \"String\"\n ) {\n propertyConfig = createPropertyConfig(inferTypeFromDefault(assignment.right));\n }\n } else if (t.isObjectPattern(assignment.left)) {\n propertyConfig = createPropertyConfig(t.identifier(\"Object\"));\n addNestedInitializer(assignment.left, keyName, assignment.right);\n } else if (t.isArrayPattern(assignment.left)) {\n propertyConfig = createPropertyConfig(t.identifier(\"Array\"));\n addNestedInitializer(assignment.left, keyName, assignment.right);\n }\n } else if (prop.shorthand && t.isIdentifier(prop.key)) {\n localName = prop.key.name;\n } else if (t.isObjectPattern(prop.value)) {\n propertyConfig = createPropertyConfig(t.identifier(\"Object\"));\n addNestedInitializer(prop.value, keyName, null);\n } else if (t.isArrayPattern(prop.value)) {\n propertyConfig = createPropertyConfig(t.identifier(\"Array\"));\n addNestedInitializer(prop.value, keyName, null);\n }\n\n ensureProperty(keyName, propertyConfig);\n registerBinding(localName || keyName, keyName);\n if (t.isAssignmentPattern(prop.value)) {\n recordDefault(keyName, prop.value.right);\n }\n });\n }\n\n function ensureAttributeFalse(entry) {\n mergePropertyConfig(entry, createPropertyConfig(null, { attribute: false }));\n }\n\n function inferOpaquePropsMemberAccess(bindingName) {\n if (!bindingName) return;\n\n const binding = functionPath.scope.getBinding(bindingName);\n if (!binding) return;\n\n binding.referencePaths.forEach((refPath) => {\n if (!refPath.node) return;\n if (!refPath.parentPath || !refPath.parentPath.isMemberExpression()) return;\n if (refPath.parentKey !== \"object\") return;\n\n const memberPath = refPath.parentPath;\n if (memberPath.node.computed || !t.isIdentifier(memberPath.node.property)) return;\n\n const propName = memberPath.node.property.name;\n if (!propName || propName === \"props\") return;\n\n if (!propertyMap.has(propName) && warn) {\n warn({\n code: 91018,\n message: `Falling back to String for prop \"${propName}\" inferred from opaque props access. Prefer destructuring, TypeScript types, or ^properties(...) for stronger property metadata.`,\n propName,\n localName: bindingName,\n line: memberPath.node.loc?.start?.line ?? null,\n column: memberPath.node.loc?.start?.column ?? null,\n });\n }\n\n ensureProperty(propName, createPropertyConfig(t.identifier(\"String\")));\n });\n }\n\n function tryRegisterTypedAliasBinding(identifier) {\n if (!t.isIdentifier(identifier)) return false;\n\n const checkerPropertyMap = getCheckerPropertyMapForPattern(identifier, typeResolver);\n if (checkerPropertyMap?.size) {\n registerBinding(identifier.name, {\n kind: \"alias\",\n properties: checkerPropertyMap,\n });\n checkerPropertyMap.forEach((propType, propName) => {\n ensureProperty(propName, propType);\n });\n return true;\n }\n\n const typeAnnotation = identifier.typeAnnotation && identifier.typeAnnotation.typeAnnotation;\n if (t.isTSTypeReference(typeAnnotation) && t.isIdentifier(typeAnnotation.typeName)) {\n const declaration = findTypeDeclaration(programPath, typeAnnotation.typeName.name);\n if (declaration) {\n const typeMembers = getTypeLiteralMembers(declaration, programPath, new Set());\n if (typeMembers.length > 0) {\n const aliasProperties = new Map();\n typeMembers.forEach((member) => {\n if (\n t.isTSPropertySignature(member) &&\n t.isIdentifier(member.key) &&\n member.typeAnnotation\n ) {\n const propName = member.key.name;\n const propType = mapTsTypeToLit(member.typeAnnotation.typeAnnotation, programPath);\n ensureProperty(propName, propType);\n aliasProperties.set(propName, propType);\n }\n });\n registerBinding(identifier.name, {\n kind: \"alias\",\n properties: aliasProperties,\n });\n return true;\n }\n }\n }\n\n return false;\n }\n\n functionPath.node.params.forEach((param, paramIndex) => {\n if (\n forwardRefOptions &&\n paramIndex === forwardRefOptions.paramIndex &&\n t.isIdentifier(param)\n ) {\n const propName = forwardRefOptions.propName || param.name;\n const entry = ensureProperty(propName, createPropertyConfig(t.identifier(\"Object\")));\n ensureAttributeFalse(entry);\n registerBinding(param.name, propName);\n return;\n }\n\n if (t.isIdentifier(param)) {\n let propertyConfig = createPropertyConfig(t.identifier(\"String\"));\n const checkerType = getCheckerTypeForBabelNode(param, typeResolver);\n if (checkerType) {\n propertyConfig = mapCheckerTypeToPropertyConfig(checkerType, typeResolver.checker, {\n cache: typeResolver.checkerTypeConfigCache,\n inProgress: typeResolver.checkerTypeConfigInProgress,\n });\n } else if (param.typeAnnotation) {\n propertyConfig = mapTsTypeToLit(param.typeAnnotation.typeAnnotation, programPath);\n }\n if (tryRegisterTypedAliasBinding(param)) return;\n\n handleIdentifier(param, propertyConfig);\n\n if (param.name === \"props\") {\n inferOpaquePropsMemberAccess(param.name);\n }\n\n return;\n }\n\n if (t.isRestElement(param)) {\n const typeAnnotation = param.typeAnnotation\n ? mapTsTypeToLit(param.typeAnnotation.typeAnnotation, programPath)\n : createPropertyConfig(t.identifier(\"Array\"));\n handleRestElement(param, typeAnnotation);\n return;\n }\n\n if (t.isAssignmentPattern(param)) {\n if (t.isIdentifier(param.left) && tryRegisterTypedAliasBinding(param.left)) {\n if (param.left.name === \"props\") {\n inferOpaquePropsMemberAccess(param.left.name);\n }\n return;\n }\n\n const explicitType = param.left.typeAnnotation\n ? mapTsTypeToLit(param.left.typeAnnotation.typeAnnotation, programPath)\n : null;\n handleAssignmentPattern(param, explicitType);\n return;\n }\n\n if (t.isObjectPattern(param)) {\n handleObjectPattern(param);\n return;\n }\n });\n\n const properties = Array.from(propertyMap.values()).map((entry) => entry.node);\n const propertyNames = new Set(propertyMap.keys());\n\n return { properties, propertyNames, bindings, defaults, nestedInitializers };\n}\n"],"names":["createRequire","normalizeFilePath","dirname","getOrCreateStandaloneTsSession","createInMemoryTsSession"],"mappings":"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"}
1
+ {"version":3,"file":"transform-litsx-properties.cjs","sources":["../../src/internal/transform-litsx-properties.js"],"sourcesContent":["import { createRequire } from \"module\";\nimport {\n createInMemoryTsSession,\n getOrCreateStandaloneTsSession,\n normalizeFilePath,\n dirname,\n} from \"@litsx/typescript-session\";\n\nlet ts;\nlet t;\nconst TYPE_RESOLVER_CACHE = new Map();\nconst TYPE_RESOLVER_CACHE_LIMIT = 200;\nconst nodeRequire = (() => {\n try {\n return createRequire(import.meta.url);\n } catch {\n return null;\n }\n})();\n\nconst TYPE_RESOLUTION_MODES = {\n AUTO: \"auto\",\n IN_MEMORY: \"in-memory\",\n};\n\nconst VIRTUAL_SOURCE_FILENAME = \"/__litsx_virtual__/inline-input.tsx\";\nconst VIRTUAL_LIB_FILENAME = \"/__litsx_virtual__/lib.playground.d.ts\";\nconst DEFAULT_IN_MEMORY_LIB = `\ntype PropertyKey = string | number | symbol;\ninterface Object {}\ninterface Function {}\ninterface CallableFunction extends Function {}\ninterface NewableFunction extends Function {}\ninterface IArguments {\n length: number;\n callee: Function;\n [index: number]: any;\n}\ninterface String {}\ninterface Number {}\ninterface Boolean {}\ninterface Symbol {}\ninterface Array<T> {\n length: number;\n [n: number]: T;\n}\ninterface ReadonlyArray<T> {\n readonly length: number;\n readonly [n: number]: T;\n}\ninterface Date {}\ntype Partial<T> = { [P in keyof T]?: T[P] };\ntype Required<T> = { [P in keyof T]-?: T[P] };\ntype Readonly<T> = { readonly [P in keyof T]: T[P] };\ntype Pick<T, K extends keyof T> = { [P in K]: T[P] };\ntype Exclude<T, U> = T extends U ? never : T;\ntype Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>>;\ntype Record<K extends keyof any, T> = { [P in K]: T };\n`;\n\nconst DEFAULT_IN_MEMORY_FILES = {\n [VIRTUAL_LIB_FILENAME]: DEFAULT_IN_MEMORY_LIB,\n};\n\nfunction normalizeTypescriptModule(moduleValue) {\n return moduleValue?.default ?? moduleValue ?? null;\n}\n\nexport function ensureTypescriptModule() {\n if (ts) {\n return ts;\n }\n\n if (\n nodeRequire &&\n (typeof process === \"undefined\" || process.browser !== true)\n ) {\n try {\n ts = normalizeTypescriptModule(nodeRequire(\"typescript\"));\n return ts;\n } catch {\n // Fall through to the explicit runtime error below.\n }\n }\n\n throw new Error(\n \"The LitSX transform needs a TypeScript runtime. Load it before using the transform in browser workers, or install the local 'typescript' package for Node-based transforms.\"\n );\n}\n\nexport function setTypescriptModule(moduleValue) {\n ts = normalizeTypescriptModule(moduleValue);\n return ts;\n}\n\nexport function setPropertyBabelTypes(types) {\n t = types;\n}\n\nfunction normalizeInMemoryFiles(files = {}) {\n const normalizedFiles = new Map();\n Object.entries({\n ...DEFAULT_IN_MEMORY_FILES,\n ...files,\n }).forEach(([filePath, fileSource]) => {\n normalizedFiles.set(normalizeFilePath(filePath), fileSource);\n });\n return normalizedFiles;\n}\n\nfunction hashSource(text) {\n let hash = 2166136261;\n for (let index = 0; index < text.length; index += 1) {\n hash ^= text.charCodeAt(index);\n hash = Math.imul(hash, 16777619);\n }\n return (hash >>> 0).toString(16);\n}\n\nfunction getTypeResolverCacheKey(\n filename,\n source,\n mode = TYPE_RESOLUTION_MODES.AUTO,\n sessionKey = \"\",\n) {\n const normalizedFilename = filename\n ? normalizeFilePath(filename)\n : VIRTUAL_SOURCE_FILENAME;\n return `${mode}:${sessionKey}:${normalizedFilename}:${hashSource(source)}`;\n}\n\nfunction getTypeResolutionSessionKey(filename, compilerOptions, sessionKey = \"\") {\n return JSON.stringify({\n directory: dirname(filename),\n compilerOptions,\n sessionKey,\n });\n}\n\nfunction rememberTypeResolver(cacheKey, resolver) {\n TYPE_RESOLVER_CACHE.set(cacheKey, resolver);\n if (TYPE_RESOLVER_CACHE.size <= TYPE_RESOLVER_CACHE_LIMIT) return resolver;\n\n const oldestKey = TYPE_RESOLVER_CACHE.keys().next().value;\n if (oldestKey) {\n TYPE_RESOLVER_CACHE.delete(oldestKey);\n }\n return resolver;\n}\n\nfunction createSpanNodeLookup(sourceFile) {\n const baseCache = new Map();\n const predicateCache = new WeakMap();\n\n function getCacheKey(start, end) {\n return `${start}:${end}`;\n }\n\n function lookup(start, end, predicate) {\n const cacheKey = getCacheKey(start, end);\n if (!predicate) {\n if (baseCache.has(cacheKey)) {\n return baseCache.get(cacheKey);\n }\n const resolved = findTsNodeAtSpan(sourceFile, start, end, null);\n baseCache.set(cacheKey, resolved);\n return resolved;\n }\n\n let cache = predicateCache.get(predicate);\n if (!cache) {\n cache = new Map();\n predicateCache.set(predicate, cache);\n }\n\n if (cache.has(cacheKey)) {\n return cache.get(cacheKey);\n }\n\n const resolved = findTsNodeAtSpan(sourceFile, start, end, predicate);\n cache.set(cacheKey, resolved);\n return resolved;\n }\n\n return lookup;\n}\n\nexport function createTypeResolver(filename, source, options = {}) {\n if (!source) {\n return null;\n }\n\n ensureTypescriptModule();\n\n const providedTypescriptSession =\n options?.typescriptSession?.projectSession || options?.typescriptSession || null;\n const typeResolutionMode =\n options?.typeResolutionMode === TYPE_RESOLUTION_MODES.IN_MEMORY\n ? TYPE_RESOLUTION_MODES.IN_MEMORY\n : TYPE_RESOLUTION_MODES.AUTO;\n\n const cacheKey = providedTypescriptSession\n ? null\n : getTypeResolverCacheKey(\n filename,\n source,\n typeResolutionMode,\n \"\",\n );\n if (cacheKey) {\n const cached = TYPE_RESOLVER_CACHE.get(cacheKey);\n if (cached) {\n TYPE_RESOLVER_CACHE.delete(cacheKey);\n TYPE_RESOLVER_CACHE.set(cacheKey, cached);\n return cached;\n }\n }\n\n const shouldUseInMemoryResolution = typeResolutionMode === TYPE_RESOLUTION_MODES.IN_MEMORY;\n const resolvedFilename =\n shouldUseInMemoryResolution || !filename\n ? VIRTUAL_SOURCE_FILENAME\n : normalizeFilePath(filename);\n const normalizedFilename = normalizeFilePath(resolvedFilename);\n const compilerOptions = {\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n moduleResolution: ts.ModuleResolutionKind.Bundler,\n jsx: ts.JsxEmit.Preserve,\n allowJs: true,\n checkJs: false,\n skipLibCheck: true,\n strict: false,\n esModuleInterop: true,\n allowSyntheticDefaultImports: true,\n types: [],\n };\n\n if (shouldUseInMemoryResolution || !filename) {\n return createInMemoryTypeResolver(\n normalizedFilename,\n source,\n compilerOptions,\n cacheKey,\n options?.inMemoryFiles,\n providedTypescriptSession,\n );\n }\n\n try {\n const sharedSession =\n providedTypescriptSession ||\n getOrCreateStandaloneTsSession(\n getTypeResolutionSessionKey(normalizedFilename, compilerOptions),\n {\n typescript: ts,\n compilerOptions,\n },\n );\n\n return createResolvedTypeResolver(\n cacheKey ? rememberTypeResolver : (_, resolver) => resolver,\n cacheKey,\n sharedSession.getTypeResolver(normalizedFilename, source),\n );\n } catch {\n return null;\n }\n}\n\nfunction createInMemoryTypeResolver(\n filename,\n source,\n compilerOptions,\n cacheKey,\n inMemoryFiles = {},\n providedSession = null,\n) {\n const sourceFilename = normalizeFilePath(filename || VIRTUAL_SOURCE_FILENAME);\n const files = normalizeInMemoryFiles(inMemoryFiles);\n files.set(sourceFilename, source);\n\n const inMemoryCompilerOptions = {\n ...compilerOptions,\n noLib: true,\n };\n\n try {\n const session = providedSession || createInMemoryTsSession({\n typescript: ts,\n compilerOptions: inMemoryCompilerOptions,\n files: Object.fromEntries(files),\n sourceFilename,\n defaultLibFileName: VIRTUAL_LIB_FILENAME,\n rootNames: [sourceFilename, VIRTUAL_LIB_FILENAME],\n });\n\n return createResolvedTypeResolver(\n cacheKey ? rememberTypeResolver : (_, resolver) => resolver,\n cacheKey,\n session.getTypeResolver(sourceFilename, source),\n );\n } catch {\n return null;\n }\n}\n\nfunction createResolvedTypeResolver(remember, cacheKey, resolved) {\n if (!resolved?.sourceFile || !resolved?.checker) {\n return null;\n }\n\n return remember(cacheKey, {\n filename: resolved.filename,\n sourceFile: resolved.sourceFile,\n checker: resolved.checker,\n checkerTypeCache: new Map(),\n checkerPropertyMapCache: new Map(),\n checkerTypeConfigCache:\n resolved.getSemanticCache?.(\"checkerTypeConfigCache\", () => new WeakMap()) ?? new WeakMap(),\n checkerTypeConfigInProgress: new WeakSet(),\n checkerPropertyMapByTypeCache:\n resolved.getSemanticCache?.(\"checkerPropertyMapByTypeCache\", () => new WeakMap()) ?? new WeakMap(),\n getNodeAtSpan: createSpanNodeLookup(resolved.sourceFile),\n });\n}\n\nfunction findTsNodeAtSpan(sourceFile, start, end, predicate) {\n let found = null;\n\n function visit(node) {\n if (found) return;\n if (start < node.pos || end > node.end) return;\n\n if (node.pos === start && node.end === end && (!predicate || predicate(node))) {\n found = node;\n return;\n }\n\n ts.forEachChild(node, visit);\n\n if (!found && start >= node.getStart(sourceFile) && end <= node.end && (!predicate || predicate(node))) {\n found = node;\n }\n }\n\n visit(sourceFile);\n return found;\n}\n\nexport function createPropertyConfig(type = null, options = {}) {\n return {\n type: type ? t.cloneNode(type) : null,\n attribute: options.attribute,\n };\n}\n\nfunction normalizePropertyConfigInput(input) {\n if (!input) return createPropertyConfig();\n if (t.isIdentifier(input)) return createPropertyConfig(input);\n return clonePropertyConfig(input);\n}\n\nfunction clonePropertyConfig(config) {\n return createPropertyConfig(config?.type || null, { attribute: config?.attribute });\n}\n\nexport function createPropertyValue(config, defaultType = true) {\n const normalized = config || createPropertyConfig();\n const properties = [];\n const typeNode = normalized.type || (defaultType ? t.identifier(\"String\") : null);\n\n if (typeNode) {\n properties.push(t.objectProperty(t.identifier(\"type\"), t.cloneNode(typeNode)));\n }\n\n if (normalized.attribute === false) {\n properties.push(\n t.objectProperty(t.identifier(\"attribute\"), t.booleanLiteral(false))\n );\n }\n\n return t.objectExpression(properties);\n}\n\nexport function mergePropertyConfig(entry, config, defaultType = false) {\n if (!entry || !entry.node || !t.isObjectExpression(entry.node.value) || !config) {\n return;\n }\n\n const value = entry.node.value;\n\n if (config.type) {\n const typeProp = value.properties.find(\n (prop) =>\n t.isObjectProperty(prop) &&\n t.isIdentifier(prop.key, { name: \"type\" })\n );\n\n if (!typeProp) {\n value.properties.unshift(\n t.objectProperty(t.identifier(\"type\"), t.cloneNode(config.type))\n );\n } else if (\n t.isIdentifier(typeProp.value) &&\n typeProp.value.name === \"String\" &&\n t.isIdentifier(config.type) &&\n config.type.name !== \"String\"\n ) {\n typeProp.value = t.cloneNode(config.type);\n }\n } else if (defaultType) {\n const hasType = value.properties.some(\n (prop) =>\n t.isObjectProperty(prop) &&\n t.isIdentifier(prop.key, { name: \"type\" })\n );\n if (!hasType) {\n value.properties.unshift(\n t.objectProperty(t.identifier(\"type\"), t.identifier(\"String\"))\n );\n }\n }\n\n if (config.attribute === false) {\n const attributeProp = value.properties.find(\n (prop) =>\n t.isObjectProperty(prop) &&\n t.isIdentifier(prop.key, { name: \"attribute\" })\n );\n\n if (!attributeProp) {\n value.properties.push(\n t.objectProperty(t.identifier(\"attribute\"), t.booleanLiteral(false))\n );\n } else {\n attributeProp.value = t.booleanLiteral(false);\n }\n }\n}\n\nfunction mapLiteralTypeToLit(tsType) {\n if (!t.isTSLiteralType(tsType)) return null;\n const literal = tsType.literal;\n if (t.isStringLiteral(literal)) return t.identifier(\"String\");\n if (t.isNumericLiteral(literal)) return t.identifier(\"Number\");\n if (literal.type === \"BooleanLiteral\") return t.identifier(\"Boolean\");\n return null;\n}\n\nfunction mapCheckerTypeToPropertyConfig(type, checker, cacheState = null, seen = new Set()) {\n if (!type) return createPropertyConfig(t.identifier(\"Object\"));\n\n const nonNullable = checker.getNonNullableType\n ? checker.getNonNullableType(type)\n : type;\n const typeConfigCache = cacheState?.cache;\n const inProgress = cacheState?.inProgress;\n\n if (typeConfigCache?.has(nonNullable)) {\n return typeConfigCache.get(nonNullable);\n }\n\n if (inProgress?.has(nonNullable)) {\n return createPropertyConfig(t.identifier(\"Object\"));\n }\n\n inProgress?.add(nonNullable);\n\n let resolvedConfig;\n\n if (nonNullable.isUnion?.()) {\n const configs = nonNullable.types.map((item) =>\n mapCheckerTypeToPropertyConfig(item, checker, cacheState, seen)\n );\n const uniqueTypes = [...new Set(\n configs\n .map((config) => (config?.type && t.isIdentifier(config.type) ? config.type.name : null))\n .filter(Boolean)\n )];\n const attributeFalse = configs.every((config) => config?.attribute === false);\n if (uniqueTypes.length === 1) {\n resolvedConfig = createPropertyConfig(t.identifier(uniqueTypes[0]), {\n attribute: attributeFalse ? false : undefined,\n });\n } else {\n resolvedConfig = createPropertyConfig(t.identifier(\"Object\"), {\n attribute: attributeFalse ? false : undefined,\n });\n }\n } else if (nonNullable.isIntersection?.()) {\n const configs = nonNullable.types.map((item) =>\n mapCheckerTypeToPropertyConfig(item, checker, cacheState, seen)\n );\n const primitiveNames = [\"String\", \"Number\", \"Boolean\", \"Array\", \"Date\"];\n const uniqueTypes = [...new Set(\n configs\n .map((config) => (config?.type && t.isIdentifier(config.type) ? config.type.name : null))\n .filter(Boolean)\n )];\n const preferredPrimitive = primitiveNames.find((name) => uniqueTypes.includes(name));\n const attributeFalse = configs.every((config) => config?.attribute === false);\n if (preferredPrimitive) {\n resolvedConfig = createPropertyConfig(t.identifier(preferredPrimitive), {\n attribute: attributeFalse ? false : undefined,\n });\n } else if (uniqueTypes.length === 1) {\n resolvedConfig = createPropertyConfig(t.identifier(uniqueTypes[0]), {\n attribute: attributeFalse ? false : undefined,\n });\n } else {\n resolvedConfig = createPropertyConfig(t.identifier(\"Object\"), {\n attribute: attributeFalse ? false : undefined,\n });\n }\n } else {\n const callSignatures = checker.getSignaturesOfType(nonNullable, ts.SignatureKind.Call);\n if (callSignatures.length) {\n resolvedConfig = createPropertyConfig(t.identifier(\"Object\"), { attribute: false });\n } else if (nonNullable.flags & (ts.TypeFlags.String | ts.TypeFlags.StringLike)) {\n resolvedConfig = createPropertyConfig(t.identifier(\"String\"));\n } else if (nonNullable.flags & (ts.TypeFlags.Number | ts.TypeFlags.NumberLike)) {\n resolvedConfig = createPropertyConfig(t.identifier(\"Number\"));\n } else if (nonNullable.flags & (ts.TypeFlags.Boolean | ts.TypeFlags.BooleanLike)) {\n resolvedConfig = createPropertyConfig(t.identifier(\"Boolean\"));\n } else if (nonNullable.flags & ts.TypeFlags.BigIntLike) {\n resolvedConfig = createPropertyConfig(t.identifier(\"Object\"));\n } else if (checker.isArrayType?.(nonNullable) || checker.isTupleType?.(nonNullable)) {\n resolvedConfig = createPropertyConfig(t.identifier(\"Array\"));\n } else {\n const symbol = nonNullable.getSymbol?.();\n const symbolName = symbol?.getName?.();\n if (symbolName === \"Date\") {\n resolvedConfig = createPropertyConfig(t.identifier(\"Date\"));\n } else {\n if (symbol && !seen.has(symbol)) {\n seen.add(symbol);\n }\n resolvedConfig = createPropertyConfig(t.identifier(\"Object\"));\n }\n }\n }\n\n inProgress?.delete(nonNullable);\n typeConfigCache?.set(nonNullable, resolvedConfig);\n return resolvedConfig;\n}\n\nfunction getBabelNodeSpanCacheKey(node) {\n if (typeof node?.start !== \"number\" || typeof node?.end !== \"number\") {\n return null;\n }\n return `${node.start}:${node.end}`;\n}\n\nfunction getCheckerTypeForBabelNode(node, typeResolver) {\n const cacheKey = getBabelNodeSpanCacheKey(node);\n if (!typeResolver || !cacheKey) {\n return null;\n }\n\n const typeCache = typeResolver.checkerTypeCache;\n if (typeCache?.has(cacheKey)) {\n return typeCache.get(cacheKey);\n }\n\n const tsNode = typeResolver.getNodeAtSpan(node.start, node.end);\n if (!tsNode) {\n typeCache?.set(cacheKey, null);\n return null;\n }\n\n try {\n const resolvedType = typeResolver.checker.getTypeAtLocation(tsNode);\n typeCache?.set(cacheKey, resolvedType);\n return resolvedType;\n } catch {\n typeCache?.set(cacheKey, null);\n return null;\n }\n}\n\nfunction getCheckerPropertyMapForPattern(node, typeResolver) {\n const cacheKey = getBabelNodeSpanCacheKey(node);\n if (!typeResolver || !cacheKey) {\n return null;\n }\n\n const propertyMapCache = typeResolver.checkerPropertyMapCache;\n if (propertyMapCache?.has(cacheKey)) {\n return propertyMapCache.get(cacheKey);\n }\n\n const type = getCheckerTypeForBabelNode(node, typeResolver);\n if (!type) {\n propertyMapCache?.set(cacheKey, null);\n return null;\n }\n const checker = typeResolver.checker;\n const nonNullable = checker.getNonNullableType\n ? checker.getNonNullableType(type)\n : type;\n const propertyMapByTypeCache = typeResolver.checkerPropertyMapByTypeCache;\n\n if (propertyMapByTypeCache?.has(nonNullable)) {\n const cachedPropertyMap = propertyMapByTypeCache.get(nonNullable);\n propertyMapCache?.set(cacheKey, cachedPropertyMap);\n return cachedPropertyMap;\n }\n\n if (\n checker.isArrayType?.(nonNullable) ||\n checker.isTupleType?.(nonNullable) ||\n (nonNullable.flags & (\n ts.TypeFlags.StringLike |\n ts.TypeFlags.NumberLike |\n ts.TypeFlags.BooleanLike |\n ts.TypeFlags.BigIntLike\n ))\n ) {\n propertyMapCache?.set(cacheKey, null);\n return null;\n }\n\n if (checker.getSignaturesOfType(nonNullable, ts.SignatureKind.Call).length) {\n propertyMapCache?.set(cacheKey, null);\n return null;\n }\n\n const typeConfigCacheState = {\n cache: typeResolver.checkerTypeConfigCache,\n inProgress: typeResolver.checkerTypeConfigInProgress,\n };\n const propertyMap = new Map();\n for (const symbol of checker.getPropertiesOfType(nonNullable)) {\n const valueDeclaration = symbol.valueDeclaration || symbol.declarations?.[0];\n if (!valueDeclaration) continue;\n const symbolType = checker.getTypeOfSymbolAtLocation(symbol, valueDeclaration);\n propertyMap.set(\n symbol.getName(),\n mapCheckerTypeToPropertyConfig(symbolType, checker, typeConfigCacheState)\n );\n }\n\n const resolvedPropertyMap = propertyMap.size ? propertyMap : null;\n propertyMapByTypeCache?.set(nonNullable, resolvedPropertyMap);\n propertyMapCache?.set(cacheKey, resolvedPropertyMap);\n return resolvedPropertyMap;\n}\n\nfunction findTypeDeclaration(programPath, name) {\n if (!programPath) return null;\n const bodyPaths = programPath.get(\"body\");\n for (const path of bodyPaths) {\n if (path.isTSTypeAliasDeclaration() && path.node.id.name === name) {\n return path.node;\n }\n if (path.isTSInterfaceDeclaration() && path.node.id.name === name) {\n return path.node;\n }\n }\n return null;\n}\n\nfunction getTypeLiteralMembers(node, programPath, seen = new Set()) {\n if (!node) return [];\n\n if (t.isTSTypeAliasDeclaration(node)) {\n return getTypeLiteralMembers(node.typeAnnotation, programPath, seen);\n }\n\n if (t.isTSInterfaceDeclaration(node)) {\n const members = [...node.body.body];\n for (const extension of node.extends || []) {\n if (!t.isIdentifier(extension.expression)) continue;\n const name = extension.expression.name;\n if (seen.has(name)) continue;\n seen.add(name);\n const declaration = findTypeDeclaration(programPath, name);\n members.unshift(...getTypeLiteralMembers(declaration, programPath, seen));\n }\n return members;\n }\n\n if (t.isTSTypeLiteral(node)) {\n return [...node.members];\n }\n\n if (t.isTSIntersectionType(node)) {\n return node.types.flatMap((typeNode) =>\n getTypeLiteralMembers(typeNode, programPath, seen)\n );\n }\n\n if (t.isTSParenthesizedType(node)) {\n return getTypeLiteralMembers(node.typeAnnotation, programPath, seen);\n }\n\n if (t.isTSTypeReference(node) && programPath && t.isIdentifier(node.typeName)) {\n const name = node.typeName.name;\n if (seen.has(name)) return [];\n seen.add(name);\n const declaration = findTypeDeclaration(programPath, name);\n return getTypeLiteralMembers(declaration, programPath, seen);\n }\n\n return [];\n}\n\nfunction mapTsTypeToLit(tsType, programPath, seen = new Set()) {\n if (!tsType) return createPropertyConfig(t.identifier(\"Object\"));\n\n if (t.isTSParenthesizedType(tsType)) {\n return mapTsTypeToLit(tsType.typeAnnotation, programPath, seen);\n }\n\n switch (tsType.type) {\n case \"TSStringKeyword\":\n return createPropertyConfig(t.identifier(\"String\"));\n case \"TSNumberKeyword\":\n return createPropertyConfig(t.identifier(\"Number\"));\n case \"TSBooleanKeyword\":\n return createPropertyConfig(t.identifier(\"Boolean\"));\n case \"TSArrayType\":\n case \"TSTupleType\":\n return createPropertyConfig(t.identifier(\"Array\"));\n case \"TSFunctionType\":\n case \"TSConstructorType\":\n return createPropertyConfig(t.identifier(\"Object\"), { attribute: false });\n case \"TSLiteralType\": {\n const literalType = mapLiteralTypeToLit(tsType);\n return createPropertyConfig(literalType || t.identifier(\"Object\"));\n }\n case \"TSUnionType\": {\n const inferred = tsType.types\n .map((typeNode) => mapTsTypeToLit(typeNode, programPath, seen))\n .filter(Boolean);\n const uniqueTypes = [...new Set(\n inferred\n .map((config) => (t.isIdentifier(config.type) ? config.type.name : null))\n .filter(Boolean)\n )];\n const attributeFalse = inferred.every((config) => config.attribute === false);\n if (uniqueTypes.length === 1) {\n return createPropertyConfig(t.identifier(uniqueTypes[0]), {\n attribute: attributeFalse ? false : undefined,\n });\n }\n return createPropertyConfig(t.identifier(\"Object\"), {\n attribute: attributeFalse ? false : undefined,\n });\n }\n case \"TSIntersectionType\": {\n if (\n getTypeLiteralMembers(tsType, programPath, new Set(seen)).length > 0\n ) {\n return createPropertyConfig(t.identifier(\"Object\"));\n }\n return createPropertyConfig(t.identifier(\"Object\"));\n }\n case \"TSTypeReference\": {\n if (\n t.isIdentifier(tsType.typeName) &&\n (tsType.typeName.name === \"Array\" || tsType.typeName.name === \"ReadonlyArray\")\n ) {\n return createPropertyConfig(t.identifier(\"Array\"));\n }\n if (t.isIdentifier(tsType.typeName) && tsType.typeName.name === \"Record\") {\n return createPropertyConfig(t.identifier(\"Object\"));\n }\n if (t.isIdentifier(tsType.typeName) && tsType.typeName.name === \"Date\") {\n return createPropertyConfig(t.identifier(\"Date\"));\n }\n if (t.isIdentifier(tsType.typeName)) {\n const name = tsType.typeName.name;\n if (seen.has(name)) {\n return createPropertyConfig(t.identifier(\"Object\"));\n }\n const nextSeen = new Set(seen);\n nextSeen.add(name);\n const declaration = findTypeDeclaration(programPath, name);\n if (declaration) {\n if (getTypeLiteralMembers(declaration, programPath, nextSeen).length > 0) {\n return createPropertyConfig(t.identifier(\"Object\"));\n }\n if (t.isTSTypeAliasDeclaration(declaration)) {\n return mapTsTypeToLit(declaration.typeAnnotation, programPath, nextSeen);\n }\n if (t.isTSInterfaceDeclaration(declaration)) {\n return createPropertyConfig(t.identifier(\"Object\"));\n }\n }\n }\n return createPropertyConfig(t.identifier(\"Object\"));\n }\n default:\n return createPropertyConfig(t.identifier(\"Object\"));\n }\n}\n\nfunction inferTypeFromDefault(node) {\n if (t.isNumericLiteral(node)) {\n return t.identifier(\"Number\");\n }\n if (t.isBooleanLiteral(node)) {\n return t.identifier(\"Boolean\");\n }\n if (t.isArrayExpression(node)) {\n return t.identifier(\"Array\");\n }\n if (t.isObjectExpression(node)) {\n return t.identifier(\"Object\");\n }\n return t.identifier(\"String\");\n}\n\nfunction extractParamName(param) {\n if (t.isIdentifier(param)) return param.name;\n if (t.isRestElement(param) && t.isIdentifier(param.argument)) {\n return param.argument.name;\n }\n if (t.isAssignmentPattern(param) && t.isIdentifier(param.left)) {\n return param.left.name;\n }\n if (t.isObjectProperty(param) && t.isIdentifier(param.value)) {\n return param.value.name;\n }\n if (\n t.isObjectProperty(param) &&\n t.isAssignmentPattern(param.value) &&\n t.isIdentifier(param.value.left)\n ) {\n return param.value.left.name;\n }\n if (\n t.isObjectProperty(param) &&\n t.isIdentifier(param.key) &&\n !param.shorthand &&\n !t.isIdentifier(param.value)\n ) {\n return param.key.name;\n }\n return null;\n}\n\nfunction getTsLiteralPropertyTypes(typeAnnotation, programPath, seen = new Set()) {\n const map = new Map();\n if (!typeAnnotation) return map;\n const tsType =\n typeAnnotation.type === \"TSTypeAnnotation\"\n ? typeAnnotation.typeAnnotation\n : typeAnnotation;\n if (!tsType) return map;\n\n if (t.isTSTypeAliasDeclaration(tsType)) {\n return getTsLiteralPropertyTypes(tsType.typeAnnotation, programPath, seen);\n } else if (t.isTSTypeLiteral(tsType)) {\n tsType.members.forEach((member) => {\n if (\n t.isTSPropertySignature(member) &&\n t.isIdentifier(member.key) &&\n member.typeAnnotation\n ) {\n map.set(\n member.key.name,\n mapTsTypeToLit(member.typeAnnotation.typeAnnotation, programPath, seen)\n );\n }\n });\n } else if (t.isTSInterfaceDeclaration(tsType)) {\n getTypeLiteralMembers(tsType, programPath, seen).forEach((member) => {\n if (\n t.isTSPropertySignature(member) &&\n t.isIdentifier(member.key) &&\n member.typeAnnotation\n ) {\n map.set(\n member.key.name,\n mapTsTypeToLit(member.typeAnnotation.typeAnnotation, programPath, seen)\n );\n }\n });\n } else if (t.isTSIntersectionType(tsType)) {\n tsType.types.forEach((typeNode) => {\n const nextMap = getTsLiteralPropertyTypes(typeNode, programPath, seen);\n nextMap.forEach((value, key) => {\n if (!map.has(key)) map.set(key, value);\n });\n });\n } else if (t.isTSMappedType(tsType)) {\n map.set(\"default\", createPropertyConfig(t.identifier(\"Object\")));\n } else if (t.isTSTypeReference(tsType) && programPath) {\n const typeName = tsType.typeName;\n if (t.isIdentifier(typeName)) {\n const aliasName = typeName.name;\n if (!seen.has(aliasName)) {\n seen.add(aliasName);\n const declaration = findTypeDeclaration(programPath, aliasName);\n if (declaration) {\n const aliasMap = getTsLiteralPropertyTypes(\n declaration,\n programPath,\n seen\n );\n aliasMap.forEach((value, key) => {\n if (!map.has(key)) {\n map.set(key, value);\n }\n });\n }\n }\n }\n }\n\n return map;\n}\n\nexport function extractProperties(functionPath, programPath, options = {}) {\n const typeResolver = options.typeResolver || null;\n const warn =\n typeof options.warn === \"function\"\n ? options.warn\n : null;\n const propertyMap = new Map();\n const bindings = new Map();\n const defaults = new Map();\n const nestedInitializers = [];\n const forwardRefOptions = options.forwardRef;\n\n function isSpecialRefPropName(name) {\n return name === \"ref\";\n }\n\n function getSpecialRefPropertyConfig() {\n return createPropertyConfig(t.identifier(\"Object\"), { attribute: false });\n }\n\n function addNestedInitializer(pattern, rootName, defaultValue) {\n nestedInitializers.push({\n pattern: t.cloneNode(pattern),\n root: rootName,\n defaultValue: defaultValue ? t.cloneNode(defaultValue) : null,\n });\n }\n\n function ensureProperty(propName, config, options = {}) {\n if (!propName || propName === \"props\") return null;\n let normalizedConfig = normalizePropertyConfigInput(config);\n if (isSpecialRefPropName(propName)) {\n const refConfig = getSpecialRefPropertyConfig();\n normalizedConfig = createPropertyConfig(\n normalizedConfig.type || refConfig.type,\n {\n attribute:\n normalizedConfig.attribute === false || refConfig.attribute === false\n ? false\n : normalizedConfig.attribute,\n }\n );\n }\n let entry = propertyMap.get(propName);\n\n if (!entry) {\n entry = {\n node: t.objectProperty(\n t.identifier(propName),\n createPropertyValue(normalizedConfig, options.defaultType !== false)\n ),\n };\n propertyMap.set(propName, entry);\n return entry;\n }\n\n mergePropertyConfig(entry, normalizedConfig, options.defaultType !== false);\n\n return entry;\n }\n\n function registerBinding(localName, propName) {\n if (!localName || !propName) return;\n bindings.set(localName, propName);\n }\n\n function recordDefault(propName, expression) {\n if (!propName || !expression) return;\n if (!defaults.has(propName)) {\n defaults.set(propName, t.cloneNode(expression));\n }\n }\n\n function handleIdentifier(identifier, config, options = {}) {\n const propertyConfig = isSpecialRefPropName(identifier.name)\n ? getSpecialRefPropertyConfig()\n : config || createPropertyConfig(t.identifier(\"String\"));\n ensureProperty(identifier.name, propertyConfig);\n if (options.bindKey) {\n registerBinding(identifier.name, options.bindKey);\n } else {\n registerBinding(identifier.name, identifier.name);\n }\n }\n\n function handleRestElement(restEl, explicitType, options = {}) {\n const name = extractParamName(restEl);\n if (!name) return;\n const propertyConfig = isSpecialRefPropName(name)\n ? getSpecialRefPropertyConfig()\n : explicitType || createPropertyConfig(t.identifier(\"Array\"));\n ensureProperty(name, propertyConfig);\n registerBinding(name, options.bindKey || name);\n }\n\n function handleAssignmentPattern(pattern, explicitType) {\n const name = extractParamName(pattern);\n if (!name) return;\n let propertyConfig = isSpecialRefPropName(name)\n ? getSpecialRefPropertyConfig()\n : explicitType || createPropertyConfig(t.identifier(\"String\"));\n if (!explicitType && pattern.right) {\n propertyConfig = createPropertyConfig(inferTypeFromDefault(pattern.right));\n }\n if (isSpecialRefPropName(name)) {\n propertyConfig = getSpecialRefPropertyConfig();\n }\n ensureProperty(name, propertyConfig);\n registerBinding(name, name);\n if (pattern.right) {\n recordDefault(name, pattern.right);\n }\n }\n\n function handleObjectPattern(pattern) {\n const typeMap =\n getCheckerPropertyMapForPattern(pattern, typeResolver) ||\n getTsLiteralPropertyTypes(pattern.typeAnnotation, programPath);\n pattern.properties.forEach((prop) => {\n if (t.isRestElement(prop) && t.isIdentifier(prop.argument)) {\n const restName = prop.argument.name;\n ensureProperty(restName, createPropertyConfig(t.identifier(\"Object\")));\n registerBinding(restName, restName);\n return;\n }\n\n if (!t.isObjectProperty(prop)) return;\n\n const keyName = t.isIdentifier(prop.key)\n ? prop.key.name\n : t.isStringLiteral(prop.key)\n ? prop.key.value\n : null;\n\n if (!keyName) return;\n\n let localName;\n let propertyConfig = isSpecialRefPropName(keyName)\n ? getSpecialRefPropertyConfig()\n : typeMap.get(keyName) || createPropertyConfig(t.identifier(\"String\"));\n\n if (t.isIdentifier(prop.value)) {\n localName = prop.value.name;\n } else if (t.isAssignmentPattern(prop.value)) {\n const assignment = prop.value;\n if (t.isIdentifier(assignment.left)) {\n localName = assignment.left.name;\n if (\n t.isIdentifier(propertyConfig.type) &&\n propertyConfig.type.name === \"String\"\n ) {\n propertyConfig = createPropertyConfig(inferTypeFromDefault(assignment.right));\n }\n } else if (t.isObjectPattern(assignment.left)) {\n propertyConfig = createPropertyConfig(t.identifier(\"Object\"));\n addNestedInitializer(assignment.left, keyName, assignment.right);\n } else if (t.isArrayPattern(assignment.left)) {\n propertyConfig = createPropertyConfig(t.identifier(\"Array\"));\n addNestedInitializer(assignment.left, keyName, assignment.right);\n }\n } else if (prop.shorthand && t.isIdentifier(prop.key)) {\n localName = prop.key.name;\n } else if (t.isObjectPattern(prop.value)) {\n propertyConfig = createPropertyConfig(t.identifier(\"Object\"));\n addNestedInitializer(prop.value, keyName, null);\n } else if (t.isArrayPattern(prop.value)) {\n propertyConfig = createPropertyConfig(t.identifier(\"Array\"));\n addNestedInitializer(prop.value, keyName, null);\n }\n\n ensureProperty(keyName, propertyConfig);\n registerBinding(localName || keyName, keyName);\n if (t.isAssignmentPattern(prop.value)) {\n recordDefault(keyName, prop.value.right);\n }\n });\n }\n\n function ensureAttributeFalse(entry) {\n mergePropertyConfig(entry, createPropertyConfig(null, { attribute: false }));\n }\n\n function inferOpaquePropsMemberAccess(bindingName) {\n if (!bindingName) return;\n\n const binding = functionPath.scope.getBinding(bindingName);\n if (!binding) return;\n\n binding.referencePaths.forEach((refPath) => {\n if (!refPath.node) return;\n if (!refPath.parentPath || !refPath.parentPath.isMemberExpression()) return;\n if (refPath.parentKey !== \"object\") return;\n\n const memberPath = refPath.parentPath;\n if (memberPath.node.computed || !t.isIdentifier(memberPath.node.property)) return;\n\n const propName = memberPath.node.property.name;\n if (!propName || propName === \"props\") return;\n\n if (!propertyMap.has(propName) && warn) {\n warn({\n code: 91018,\n message: `Falling back to String for prop \"${propName}\" inferred from opaque props access. Prefer destructuring, TypeScript types, or static properties = ... for stronger property metadata.`,\n propName,\n localName: bindingName,\n line: memberPath.node.loc?.start?.line ?? null,\n column: memberPath.node.loc?.start?.column ?? null,\n });\n }\n\n ensureProperty(propName, createPropertyConfig(t.identifier(\"String\")));\n });\n }\n\n function tryRegisterTypedAliasBinding(identifier) {\n if (!t.isIdentifier(identifier)) return false;\n\n const checkerPropertyMap = getCheckerPropertyMapForPattern(identifier, typeResolver);\n if (checkerPropertyMap?.size) {\n registerBinding(identifier.name, {\n kind: \"alias\",\n properties: checkerPropertyMap,\n });\n checkerPropertyMap.forEach((propType, propName) => {\n ensureProperty(propName, propType);\n });\n return true;\n }\n\n const typeAnnotation = identifier.typeAnnotation && identifier.typeAnnotation.typeAnnotation;\n if (t.isTSTypeReference(typeAnnotation) && t.isIdentifier(typeAnnotation.typeName)) {\n const declaration = findTypeDeclaration(programPath, typeAnnotation.typeName.name);\n if (declaration) {\n const typeMembers = getTypeLiteralMembers(declaration, programPath, new Set());\n if (typeMembers.length > 0) {\n const aliasProperties = new Map();\n typeMembers.forEach((member) => {\n if (\n t.isTSPropertySignature(member) &&\n t.isIdentifier(member.key) &&\n member.typeAnnotation\n ) {\n const propName = member.key.name;\n const propType = mapTsTypeToLit(member.typeAnnotation.typeAnnotation, programPath);\n ensureProperty(propName, propType);\n aliasProperties.set(propName, propType);\n }\n });\n registerBinding(identifier.name, {\n kind: \"alias\",\n properties: aliasProperties,\n });\n return true;\n }\n }\n }\n\n return false;\n }\n\n functionPath.node.params.forEach((param, paramIndex) => {\n if (\n forwardRefOptions &&\n paramIndex === forwardRefOptions.paramIndex &&\n t.isIdentifier(param)\n ) {\n const propName = forwardRefOptions.propName || param.name;\n const entry = ensureProperty(propName, createPropertyConfig(t.identifier(\"Object\")));\n ensureAttributeFalse(entry);\n registerBinding(param.name, propName);\n return;\n }\n\n if (t.isIdentifier(param)) {\n let propertyConfig = createPropertyConfig(t.identifier(\"String\"));\n const checkerType = getCheckerTypeForBabelNode(param, typeResolver);\n if (checkerType) {\n propertyConfig = mapCheckerTypeToPropertyConfig(checkerType, typeResolver.checker, {\n cache: typeResolver.checkerTypeConfigCache,\n inProgress: typeResolver.checkerTypeConfigInProgress,\n });\n } else if (param.typeAnnotation) {\n propertyConfig = mapTsTypeToLit(param.typeAnnotation.typeAnnotation, programPath);\n }\n if (tryRegisterTypedAliasBinding(param)) return;\n\n handleIdentifier(param, propertyConfig);\n\n if (param.name === \"props\") {\n inferOpaquePropsMemberAccess(param.name);\n }\n\n return;\n }\n\n if (t.isRestElement(param)) {\n const typeAnnotation = param.typeAnnotation\n ? mapTsTypeToLit(param.typeAnnotation.typeAnnotation, programPath)\n : createPropertyConfig(t.identifier(\"Array\"));\n handleRestElement(param, typeAnnotation);\n return;\n }\n\n if (t.isAssignmentPattern(param)) {\n if (t.isIdentifier(param.left) && tryRegisterTypedAliasBinding(param.left)) {\n if (param.left.name === \"props\") {\n inferOpaquePropsMemberAccess(param.left.name);\n }\n return;\n }\n\n const explicitType = param.left.typeAnnotation\n ? mapTsTypeToLit(param.left.typeAnnotation.typeAnnotation, programPath)\n : null;\n handleAssignmentPattern(param, explicitType);\n return;\n }\n\n if (t.isObjectPattern(param)) {\n handleObjectPattern(param);\n return;\n }\n });\n\n const properties = Array.from(propertyMap.values()).map((entry) => entry.node);\n const propertyNames = new Set(propertyMap.keys());\n\n return { properties, propertyNames, bindings, defaults, nestedInitializers };\n}\n"],"names":["createRequire","normalizeFilePath","dirname","getOrCreateStandaloneTsSession","createInMemoryTsSession"],"mappings":"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"}
@@ -3,6 +3,15 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var jsxSyntaxPlugin = require('@babel/plugin-syntax-jsx');
6
+ var transformLitsxElementCandidates = require('../shared/transform-litsx-element-candidates-JMFlPFXK.cjs');
7
+ require('@babel/helper-plugin-utils');
8
+ require('@babel/traverse');
9
+ require('@litsx/babel-parser');
10
+ require('node:fs');
11
+ require('node:path');
12
+ require('@litsx/typescript-session');
13
+ require('./transform-litsx-properties.cjs');
14
+ require('module');
6
15
 
7
16
  const KIND_TO_PREFIX = {
8
17
  event: "@",
@@ -258,7 +267,7 @@ function expressionNeedsRendererContext(node, scope, seenBindings = new Set()) {
258
267
  return false;
259
268
  }
260
269
 
261
- function isBindableFunctionReference(expressionPath) {
270
+ function isBindableFunctionReference(expressionPath, options = {}) {
262
271
  const expression = unwrapExpression(expressionPath.node);
263
272
  if (
264
273
  t.isArrowFunctionExpression(expression) ||
@@ -271,7 +280,12 @@ function isBindableFunctionReference(expressionPath) {
271
280
  const binding = expressionPath.scope.getBinding(expression.name);
272
281
  const functionNode = getFunctionNodeFromBinding(binding);
273
282
  if (!functionNode) {
274
- return false;
283
+ const programPath = expressionPath.findParent((entry) => entry.isProgram?.());
284
+ return transformLitsxElementCandidates.importedBindingNeedsRendererContext(
285
+ programPath,
286
+ expression.name,
287
+ options
288
+ );
275
289
  }
276
290
  return functionBodyNeedsRendererContext(functionNode.body, binding.path.scope, new Set([binding]));
277
291
  }
@@ -279,7 +293,7 @@ function isBindableFunctionReference(expressionPath) {
279
293
  return false;
280
294
  }
281
295
 
282
- function shouldBindRendererContext(attributePath, rawName, expressionPath) {
296
+ function shouldBindRendererContext(attributePath, rawName, expressionPath, options = {}) {
283
297
  if (typeof rawName !== "string" || rawName[0] !== ".") {
284
298
  return false;
285
299
  }
@@ -294,7 +308,7 @@ function shouldBindRendererContext(attributePath, rawName, expressionPath) {
294
308
  return false;
295
309
  }
296
310
 
297
- return isBindableFunctionReference(expressionPath);
311
+ return isBindableFunctionReference(expressionPath, options);
298
312
  }
299
313
 
300
314
  function ensureRendererBindingImport(programPath) {
@@ -362,7 +376,9 @@ function transformLitsxRendererProps(api) {
362
376
  return;
363
377
  }
364
378
 
365
- if (!shouldBindRendererContext(path, rawName, expressionPath)) {
379
+ if (!shouldBindRendererContext(path, rawName, expressionPath, {
380
+ filename: state.file?.opts?.filename || "",
381
+ })) {
366
382
  return;
367
383
  }
368
384