@litsx/babel-preset-litsx 0.4.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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"}