@litsx/babel-preset-litsx 0.1.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.
@@ -0,0 +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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"}
@@ -0,0 +1,97 @@
1
+ 'use strict';
2
+
3
+ var transformJsxHtmlTemplate = require('@litsx/babel-plugin-transform-jsx-html-template');
4
+ var transformLitsxScopedElements = require('@litsx/babel-plugin-transform-litsx-scoped-elements');
5
+ var internal_transformLitsxDomRefs = require('./internal/transform-litsx-dom-refs.cjs');
6
+ var internal_transformLitsxHooks = require('./internal/transform-litsx-hooks.cjs');
7
+ var internal_transformLitsxComponents = require('./internal/transform-litsx-components.cjs');
8
+ var internal_transformLitsxProperties = require('./internal/transform-litsx-properties.cjs');
9
+ require('@litsx/babel-plugin-shared-hooks');
10
+ require('@babel/plugin-syntax-jsx');
11
+ require('module');
12
+ require('@litsx/typescript-session');
13
+
14
+ const NATIVE_TRANSFORM_OPTION_KEYS = [
15
+ "defaultDomMode",
16
+ "typeResolutionMode",
17
+ "inMemoryFiles",
18
+ "typescriptSession",
19
+ "suppressNativeClassNameWarning",
20
+ ];
21
+
22
+ const HOOK_FEATURE_PATTERN = /\b(?:useOnConnect|useAfterUpdate|useOnCommit|useMemoValue|useStableCallback|useEvent|useEmit|usePrevious|useReducedState|useState|useControlledState|useAsyncState|useOptimistic|useExpose|useExternalStore|useHost|useHostContent|useSlot|useTextContent|useTransition|useDeferredValue|useStyle|useRef|useCallbackRef)\b/;
23
+ const REF_FEATURE_PATTERN = /\buseRef\b|\bref\s*=/;
24
+ const SCOPED_ELEMENTS_PATTERN = /<\s*(?:[A-Z][\w.]*(?=[\s/>])|[a-z][\w]*-[\w-]*(?=[\s/>]))/;
25
+ const LIGHT_DOM_PATTERN = /\^lightDom\b/;
26
+
27
+ function normalizeTransformLitsxOptions(options = {}) {
28
+ const transformLitsxOptions = {
29
+ ...(options.transformLitsx || {}),
30
+ };
31
+
32
+ for (const key of NATIVE_TRANSFORM_OPTION_KEYS) {
33
+ if (Object.prototype.hasOwnProperty.call(options, key)) {
34
+ transformLitsxOptions[key] = options[key];
35
+ }
36
+ }
37
+
38
+ return transformLitsxOptions;
39
+ }
40
+
41
+ function detectLitsxSourceFeatures(source, options = {}) {
42
+ const text = typeof source === "string" ? source : "";
43
+ const transformOptions = normalizeTransformLitsxOptions(options);
44
+
45
+ return {
46
+ hooks: HOOK_FEATURE_PATTERN.test(text),
47
+ domRefs: REF_FEATURE_PATTERN.test(text),
48
+ scopedElements:
49
+ transformOptions.defaultDomMode === "light" ||
50
+ LIGHT_DOM_PATTERN.test(text) ||
51
+ SCOPED_ELEMENTS_PATTERN.test(text),
52
+ };
53
+ }
54
+
55
+ function shouldIncludeFeaturePlugin(sourceFeatures, key) {
56
+ if (!sourceFeatures) {
57
+ return true;
58
+ }
59
+
60
+ return sourceFeatures[key] === true;
61
+ }
62
+
63
+ function createLitsxPresetPlugins(options = {}, sourceFeatures = null) {
64
+ const plugins = [
65
+ [internal_transformLitsxComponents.default, normalizeTransformLitsxOptions(options)],
66
+ ];
67
+
68
+ if (shouldIncludeFeaturePlugin(sourceFeatures, "hooks")) {
69
+ plugins.push([internal_transformLitsxHooks.default, options.transformLitsxHooks || {}]);
70
+ }
71
+
72
+ if (shouldIncludeFeaturePlugin(sourceFeatures, "domRefs")) {
73
+ plugins.push([internal_transformLitsxDomRefs.default, options.transformLitsxDomRefs || {}]);
74
+ }
75
+
76
+ if (shouldIncludeFeaturePlugin(sourceFeatures, "scopedElements")) {
77
+ plugins.push([transformLitsxScopedElements, options.transformLitsxScopedElements || {}]);
78
+ }
79
+
80
+ if (options.jsxTemplate !== false) {
81
+ if (options.jsxTemplateOptions && Object.keys(options.jsxTemplateOptions).length > 0) {
82
+ plugins.push([transformJsxHtmlTemplate, options.jsxTemplateOptions]);
83
+ } else {
84
+ plugins.push(transformJsxHtmlTemplate);
85
+ }
86
+ }
87
+
88
+ return plugins;
89
+ }
90
+
91
+ exports.createTransformLitsxComponentsPlugin = internal_transformLitsxComponents.createTransformFunctionToClassPlugin;
92
+ exports.transformLitsxComponents = internal_transformLitsxComponents.default;
93
+ exports.setTypescriptModule = internal_transformLitsxProperties.setTypescriptModule;
94
+ exports.createLitsxPresetPlugins = createLitsxPresetPlugins;
95
+ exports.detectLitsxSourceFeatures = detectLitsxSourceFeatures;
96
+ exports.normalizeTransformLitsxOptions = normalizeTransformLitsxOptions;
97
+ //# sourceMappingURL=pipeline.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.cjs","sources":["../src/pipeline.js"],"sourcesContent":["import transformJsxHtmlTemplate from \"@litsx/babel-plugin-transform-jsx-html-template\";\nimport transformLitsxScopedElements from \"@litsx/babel-plugin-transform-litsx-scoped-elements\";\nimport transformLitsxDomRefs from \"./internal/transform-litsx-dom-refs.js\";\nimport transformLitsxHooks from \"./internal/transform-litsx-hooks.js\";\nimport transformLitsxComponents from \"./internal/transform-litsx-components.js\";\n\nconst NATIVE_TRANSFORM_OPTION_KEYS = [\n \"defaultDomMode\",\n \"typeResolutionMode\",\n \"inMemoryFiles\",\n \"typescriptSession\",\n \"suppressNativeClassNameWarning\",\n];\n\nconst HOOK_FEATURE_PATTERN = /\\b(?:useOnConnect|useAfterUpdate|useOnCommit|useMemoValue|useStableCallback|useEvent|useEmit|usePrevious|useReducedState|useState|useControlledState|useAsyncState|useOptimistic|useExpose|useExternalStore|useHost|useHostContent|useSlot|useTextContent|useTransition|useDeferredValue|useStyle|useRef|useCallbackRef)\\b/;\nconst REF_FEATURE_PATTERN = /\\buseRef\\b|\\bref\\s*=/;\nconst SCOPED_ELEMENTS_PATTERN = /<\\s*(?:[A-Z][\\w.]*(?=[\\s/>])|[a-z][\\w]*-[\\w-]*(?=[\\s/>]))/;\nconst LIGHT_DOM_PATTERN = /\\^lightDom\\b/;\n\nexport function normalizeTransformLitsxOptions(options = {}) {\n const transformLitsxOptions = {\n ...(options.transformLitsx || {}),\n };\n\n for (const key of NATIVE_TRANSFORM_OPTION_KEYS) {\n if (Object.prototype.hasOwnProperty.call(options, key)) {\n transformLitsxOptions[key] = options[key];\n }\n }\n\n return transformLitsxOptions;\n}\n\nexport function detectLitsxSourceFeatures(source, options = {}) {\n const text = typeof source === \"string\" ? source : \"\";\n const transformOptions = normalizeTransformLitsxOptions(options);\n\n return {\n hooks: HOOK_FEATURE_PATTERN.test(text),\n domRefs: REF_FEATURE_PATTERN.test(text),\n scopedElements:\n transformOptions.defaultDomMode === \"light\" ||\n LIGHT_DOM_PATTERN.test(text) ||\n SCOPED_ELEMENTS_PATTERN.test(text),\n };\n}\n\nfunction shouldIncludeFeaturePlugin(sourceFeatures, key) {\n if (!sourceFeatures) {\n return true;\n }\n\n return sourceFeatures[key] === true;\n}\n\nexport function createLitsxPresetPlugins(options = {}, sourceFeatures = null) {\n const plugins = [\n [transformLitsxComponents, normalizeTransformLitsxOptions(options)],\n ];\n\n if (shouldIncludeFeaturePlugin(sourceFeatures, \"hooks\")) {\n plugins.push([transformLitsxHooks, options.transformLitsxHooks || {}]);\n }\n\n if (shouldIncludeFeaturePlugin(sourceFeatures, \"domRefs\")) {\n plugins.push([transformLitsxDomRefs, options.transformLitsxDomRefs || {}]);\n }\n\n if (shouldIncludeFeaturePlugin(sourceFeatures, \"scopedElements\")) {\n plugins.push([transformLitsxScopedElements, options.transformLitsxScopedElements || {}]);\n }\n\n if (options.jsxTemplate !== false) {\n if (options.jsxTemplateOptions && Object.keys(options.jsxTemplateOptions).length > 0) {\n plugins.push([transformJsxHtmlTemplate, options.jsxTemplateOptions]);\n } else {\n plugins.push(transformJsxHtmlTemplate);\n }\n }\n\n return plugins;\n}\n\nexport {\n default as transformLitsxComponents,\n createTransformFunctionToClassPlugin as createTransformLitsxComponentsPlugin,\n} from \"./internal/transform-litsx-components.js\";\nexport {\n setTypescriptModule,\n} from \"./internal/transform-litsx-properties.js\";\n"],"names":["transformLitsxComponents","transformLitsxHooks","transformLitsxDomRefs"],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,80 @@
1
+ {
2
+ "name": "@litsx/babel-preset-litsx",
3
+ "version": "0.1.0",
4
+ "description": "Canonical native Babel preset for LitSX-authored source",
5
+ "type": "module",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./src/index.js",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./src/index.js",
11
+ "require": "./dist/index.cjs",
12
+ "default": "./src/index.js"
13
+ },
14
+ "./pipeline": {
15
+ "import": "./src/pipeline.js",
16
+ "require": "./dist/pipeline.cjs",
17
+ "default": "./src/pipeline.js"
18
+ },
19
+ "./internal/transform-litsx-components": {
20
+ "import": "./src/internal/transform-litsx-components.js",
21
+ "require": "./dist/internal/transform-litsx-components.cjs",
22
+ "default": "./src/internal/transform-litsx-components.js"
23
+ },
24
+ "./internal/transform-litsx-dom-refs": {
25
+ "import": "./src/internal/transform-litsx-dom-refs.js",
26
+ "require": "./dist/internal/transform-litsx-dom-refs.cjs",
27
+ "default": "./src/internal/transform-litsx-dom-refs.js"
28
+ },
29
+ "./internal/transform-litsx-hooks": {
30
+ "import": "./src/internal/transform-litsx-hooks.js",
31
+ "require": "./dist/internal/transform-litsx-hooks.cjs",
32
+ "default": "./src/internal/transform-litsx-hooks.js"
33
+ },
34
+ "./internal/transform-litsx-properties": {
35
+ "import": "./src/internal/transform-litsx-properties.js",
36
+ "require": "./dist/internal/transform-litsx-properties.cjs",
37
+ "default": "./src/internal/transform-litsx-properties.js"
38
+ }
39
+ },
40
+ "files": [
41
+ "dist",
42
+ "src",
43
+ "README.md"
44
+ ],
45
+ "keywords": [
46
+ "babel-preset",
47
+ "litsx",
48
+ "babel",
49
+ "lit"
50
+ ],
51
+ "license": "Apache-2.0",
52
+ "homepage": "https://github.com/litsxdev/litsx/tree/main/packages/babel-preset-litsx",
53
+ "bugs": {
54
+ "url": "https://github.com/litsxdev/litsx/issues"
55
+ },
56
+ "publishConfig": {
57
+ "access": "public",
58
+ "provenance": true
59
+ },
60
+ "repository": {
61
+ "type": "git",
62
+ "url": "https://github.com/litsxdev/litsx.git",
63
+ "directory": "packages/babel-preset-litsx"
64
+ },
65
+ "peerDependencies": {
66
+ "@babel/core": ">=7"
67
+ },
68
+ "dependencies": {
69
+ "@babel/helper-plugin-utils": "^7.28.6",
70
+ "@babel/plugin-syntax-jsx": "^7.28.6",
71
+ "@litsx/babel-plugin-shared-hooks": "workspace:^",
72
+ "@litsx/babel-plugin-transform-jsx-html-template": "workspace:^",
73
+ "@litsx/babel-plugin-transform-litsx-scoped-elements": "workspace:^",
74
+ "@litsx/typescript-session": "workspace:^"
75
+ },
76
+ "scripts": {
77
+ "build": "../../node_modules/.bin/rollup --config rollup.config.mjs",
78
+ "prepack": "yarn build"
79
+ }
80
+ }
package/src/index.js ADDED
@@ -0,0 +1,15 @@
1
+ import { createLitsxPresetPlugins } from "./pipeline.js";
2
+
3
+ export { createLitsxPresetPlugins, detectLitsxSourceFeatures } from "./pipeline.js";
4
+ export {
5
+ createTransformLitsxComponentsPlugin,
6
+ setTypescriptModule,
7
+ } from "./pipeline.js";
8
+
9
+ export default function litsxPreset(api, options = {}) {
10
+ api.assertVersion?.(7);
11
+
12
+ return {
13
+ plugins: createLitsxPresetPlugins(options),
14
+ };
15
+ }
@@ -0,0 +1,109 @@
1
+ let t;
2
+
3
+ export function setClassGenerationBabelTypes(nextTypes) {
4
+ t = nextTypes;
5
+ }
6
+
7
+ function createThisMemberExpression(propName) {
8
+ return t.memberExpression(t.thisExpression(), t.identifier(propName));
9
+ }
10
+
11
+ export function buildClassMembers({
12
+ classMembers = [],
13
+ defaults,
14
+ renderStatements,
15
+ handlerInfos,
16
+ createHandlerClassMember,
17
+ }) {
18
+ if (defaults.size > 0) {
19
+ const constructorStatements = [
20
+ t.expressionStatement(t.callExpression(t.super(), [])),
21
+ ];
22
+
23
+ defaults.forEach((defaultExpression, propName) => {
24
+ constructorStatements.push(
25
+ t.expressionStatement(
26
+ t.assignmentExpression(
27
+ "??=",
28
+ createThisMemberExpression(propName),
29
+ t.cloneNode(defaultExpression)
30
+ )
31
+ )
32
+ );
33
+ });
34
+
35
+ const constructorMethod = t.classMethod(
36
+ "constructor",
37
+ t.identifier("constructor"),
38
+ [],
39
+ t.blockStatement(constructorStatements)
40
+ );
41
+
42
+ const insertionIndex = classMembers.findIndex((member) => !member.static);
43
+ if (insertionIndex === -1) {
44
+ classMembers.push(constructorMethod);
45
+ } else {
46
+ classMembers.splice(insertionIndex, 0, constructorMethod);
47
+ }
48
+ }
49
+
50
+ const handlerMembers = handlerInfos.map((handler) =>
51
+ createHandlerClassMember(handler)
52
+ );
53
+
54
+ const renderMethod = t.classMethod(
55
+ "method",
56
+ t.identifier("render"),
57
+ [],
58
+ t.blockStatement(renderStatements)
59
+ );
60
+
61
+ classMembers.push(...handlerMembers, renderMethod);
62
+ return classMembers;
63
+ }
64
+
65
+ export function createComponentClass({
66
+ className,
67
+ classMembers,
68
+ hoistMembers,
69
+ hoistSymbolDeclarations,
70
+ needsStaticHoistsMixin,
71
+ lightDomRequested,
72
+ needsCss,
73
+ needsUnsafeCss,
74
+ needsCallbackRef = false,
75
+ }) {
76
+ const classNode = t.classDeclaration(
77
+ t.identifier(className),
78
+ t.identifier("LitElement"),
79
+ t.classBody(classMembers)
80
+ );
81
+
82
+ if (hoistMembers.length > 0) {
83
+ classNode.body.body.unshift(...hoistMembers);
84
+ if (hoistSymbolDeclarations.length > 0) {
85
+ classNode._litsxStaticSymbolDeclarations = hoistSymbolDeclarations;
86
+ }
87
+ if (needsStaticHoistsMixin) {
88
+ classNode.superClass = t.callExpression(
89
+ t.identifier("LitsxStaticHoistsMixin"),
90
+ [classNode.superClass]
91
+ );
92
+ classNode._needsStaticHoistsMixin = true;
93
+ }
94
+ }
95
+
96
+ if (lightDomRequested) {
97
+ classNode.superClass = t.callExpression(
98
+ t.identifier("LightDomMixin"),
99
+ [classNode.superClass]
100
+ );
101
+ classNode._needsLightDomMixin = true;
102
+ }
103
+
104
+ classNode._needsCss = needsCss;
105
+ classNode._needsUnsafeCss = needsUnsafeCss;
106
+ classNode._litsxLightDom = lightDomRequested;
107
+ classNode._needsCallbackRef = needsCallbackRef;
108
+ return classNode;
109
+ }