@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.
- package/README.md +37 -0
- package/dist/index.cjs +30 -0
- package/dist/index.cjs.map +1 -0
- package/dist/internal/transform-litsx-components.cjs +2518 -0
- package/dist/internal/transform-litsx-components.cjs.map +1 -0
- package/dist/internal/transform-litsx-dom-refs.cjs +16 -0
- package/dist/internal/transform-litsx-dom-refs.cjs.map +1 -0
- package/dist/internal/transform-litsx-hooks.cjs +45 -0
- package/dist/internal/transform-litsx-hooks.cjs.map +1 -0
- package/dist/internal/transform-litsx-properties.cjs +1254 -0
- package/dist/internal/transform-litsx-properties.cjs.map +1 -0
- package/dist/pipeline.cjs +97 -0
- package/dist/pipeline.cjs.map +1 -0
- package/package.json +80 -0
- package/src/index.js +15 -0
- package/src/internal/transform-litsx-class-generation.js +109 -0
- package/src/internal/transform-litsx-components.js +549 -0
- package/src/internal/transform-litsx-dom-refs.js +9 -0
- package/src/internal/transform-litsx-handlers.js +220 -0
- package/src/internal/transform-litsx-hooks.js +38 -0
- package/src/internal/transform-litsx-param-rewrites.js +227 -0
- package/src/internal/transform-litsx-program.js +229 -0
- package/src/internal/transform-litsx-properties.js +1246 -0
- package/src/internal/transform-litsx-refs.js +231 -0
- package/src/internal/transform-litsx-static-hoists.js +754 -0
- package/src/internal/transform-litsx-wrapper-utils.js +243 -0
- package/src/pipeline.js +90 -0
|
@@ -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
|
+
}
|