@litsx/babel-preset-litsx 0.9.1 → 0.10.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.
@@ -11,37 +11,29 @@ var internal_transformLitsxProperties = require('./transform-litsx-properties.cj
11
11
  require('module');
12
12
  require('@litsx/typescript-session');
13
13
 
14
- const RUNTIME_MODULE = "@litsx/core";
15
- const IMPORT_SOURCES = [RUNTIME_MODULE];
16
-
17
- const RUNTIME_HELPERS = [
18
- "useOnConnect",
19
- "useAfterUpdate",
20
- "useOnCommit",
21
- "useMemoValue",
22
- "useStableCallback",
23
- "useEvent",
24
- "useEmit",
25
- "usePrevious",
26
- "useReducedState",
27
- "useState",
28
- "useControlledState",
29
- "useAsyncState",
30
- "useOptimistic",
31
- "useExpose",
32
- "useExternalStore",
33
- "useHost",
34
- "useHostContent",
35
- "useSlot",
36
- "useTextContent",
37
- "useTransition",
38
- "useDeferredValue",
39
- "useStyle",
40
- "useRef",
41
- "useCallbackRef",
42
- "useStableId",
14
+ const LITSX_RUNTIME_MODULE = "@litsx/core";
15
+ const LITSX_CONTEXT_RUNTIME_MODULE = "@litsx/core/context";
16
+
17
+ const LITSX_RUNTIME_IMPORT_SOURCES = [
18
+ LITSX_RUNTIME_MODULE,
19
+ LITSX_CONTEXT_RUNTIME_MODULE,
20
+ ];
21
+
22
+ const LITSX_PRESERVED_RUNTIME_IMPORT_SOURCES = [
23
+ LITSX_CONTEXT_RUNTIME_MODULE,
43
24
  ];
44
25
 
26
+ function isLitsxRuntimeImportSource(source) {
27
+ return LITSX_RUNTIME_IMPORT_SOURCES.includes(source);
28
+ }
29
+
30
+ function isLitsxRuntimeHookName(name) {
31
+ return typeof name === "string" && /^use[A-Z0-9]/.test(name);
32
+ }
33
+
34
+ const RUNTIME_MODULE = LITSX_RUNTIME_MODULE;
35
+ const IMPORT_SOURCES = LITSX_RUNTIME_IMPORT_SOURCES;
36
+
45
37
  const SOURCE_EXTENSIONS = [
46
38
  "",
47
39
  ".litsx",
@@ -86,7 +78,7 @@ function normalizeInMemoryFiles(files) {
86
78
  function createStructuralHookResolver(options = {}) {
87
79
  const inMemoryFiles = normalizeInMemoryFiles(options.inMemoryFiles);
88
80
  const compilationSession = options.__litsxCompilationSession || null;
89
- const moduleCache = compilationSession?.importedModuleAnalysisCache || new Map();
81
+ const moduleCache = compilationSession?.importedHookModuleAnalysisCache || new Map();
90
82
  const resolvedImportCache = compilationSession?.resolvedImportCache || new Map();
91
83
  const providedTypescriptSession =
92
84
  options?.typescriptSession?.projectSession || options?.typescriptSession || null;
@@ -489,17 +481,17 @@ function createStructuralHookResolver(options = {}) {
489
481
  function isNamespaceRuntimeHelperUse(analysis, objectName, propertyName) {
490
482
  const importInfo = analysis.importBindings.get(objectName);
491
483
  return (
492
- importInfo?.source === RUNTIME_MODULE &&
484
+ isLitsxRuntimeImportSource(importInfo?.source) &&
493
485
  importInfo.importedName === "*" &&
494
- RUNTIME_HELPERS.includes(propertyName)
486
+ isLitsxRuntimeHookName(propertyName)
495
487
  );
496
488
  }
497
489
 
498
490
  function isRuntimeHelperImport(analysis, localName) {
499
491
  const importInfo = analysis.importBindings.get(localName);
500
492
  return (
501
- importInfo?.source === RUNTIME_MODULE &&
502
- RUNTIME_HELPERS.includes(importInfo.importedName)
493
+ isLitsxRuntimeImportSource(importInfo?.source) &&
494
+ isLitsxRuntimeHookName(importInfo.importedName)
503
495
  );
504
496
  }
505
497
 
@@ -910,7 +902,8 @@ function transformLitsxHooks(api, options = {}) {
910
902
  pluginName: "transform-litsx-hooks",
911
903
  runtimeModule: RUNTIME_MODULE,
912
904
  importSources: IMPORT_SOURCES,
913
- helperNames: RUNTIME_HELPERS,
905
+ preservedRuntimeImportSources: LITSX_PRESERVED_RUNTIME_IMPORT_SOURCES,
906
+ helperNames: isLitsxRuntimeHookName,
914
907
  callMetadataByHelper: {
915
908
  useStableId: createStableIdCallsiteMetadata,
916
909
  },
@@ -1 +1 @@
1
- {"version":3,"file":"transform-litsx-hooks.cjs","sources":["../../src/internal/transform-litsx-hooks.js"],"sourcesContent":["import { createRuntimeHooksTransform } from \"@litsx/babel-plugin-shared-hooks\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport traverse from \"@babel/traverse\";\nimport parser from \"@litsx/babel-parser\";\nimport { ensureTypescriptModule } from \"./transform-litsx-properties.js\";\n\nconst RUNTIME_MODULE = \"@litsx/core\";\nconst IMPORT_SOURCES = [RUNTIME_MODULE];\n\nconst RUNTIME_HELPERS = [\n \"useOnConnect\",\n \"useAfterUpdate\",\n \"useOnCommit\",\n \"useMemoValue\",\n \"useStableCallback\",\n \"useEvent\",\n \"useEmit\",\n \"usePrevious\",\n \"useReducedState\",\n \"useState\",\n \"useControlledState\",\n \"useAsyncState\",\n \"useOptimistic\",\n \"useExpose\",\n \"useExternalStore\",\n \"useHost\",\n \"useHostContent\",\n \"useSlot\",\n \"useTextContent\",\n \"useTransition\",\n \"useDeferredValue\",\n \"useStyle\",\n \"useRef\",\n \"useCallbackRef\",\n \"useStableId\",\n];\n\nconst SOURCE_EXTENSIONS = [\n \"\",\n \".litsx\",\n \".tsx\",\n \".ts\",\n \".jsx\",\n \".js\",\n \".mjs\",\n \".cjs\",\n];\nconst DEFAULT_MODULE_RESOLUTION_OPTIONS = {\n moduleResolution: 100,\n allowJs: true,\n checkJs: false,\n jsx: 1,\n target: 99,\n module: 99,\n esModuleInterop: true,\n allowSyntheticDefaultImports: true,\n};\n\nfunction normalizeFilePath(value) {\n return normalizePath(value);\n}\n\nfunction getTraverse() {\n return traverse.default || traverse;\n}\n\nfunction normalizeInMemoryFiles(files) {\n const normalized = new Map();\n if (!files || typeof files !== \"object\") {\n return normalized;\n }\n for (const [filename, source] of Object.entries(files)) {\n if (typeof source !== \"string\") continue;\n normalized.set(normalizeFilePath(filename), source);\n }\n return normalized;\n}\n\nfunction createStructuralHookResolver(options = {}) {\n const inMemoryFiles = normalizeInMemoryFiles(options.inMemoryFiles);\n const compilationSession = options.__litsxCompilationSession || null;\n const moduleCache = compilationSession?.importedModuleAnalysisCache || new Map();\n const resolvedImportCache = compilationSession?.resolvedImportCache || new Map();\n const providedTypescriptSession =\n options?.typescriptSession?.projectSession || options?.typescriptSession || null;\n const compilerOptionsCache = new Map();\n const moduleResolutionHostCache = new Map();\n\n function getProgramForFile(filename) {\n if (!providedTypescriptSession?.getProgram || !filename) {\n return null;\n }\n\n try {\n if (providedTypescriptSession.kind === \"project\") {\n return providedTypescriptSession.getProgram();\n }\n if (providedTypescriptSession.kind === \"standalone\") {\n return providedTypescriptSession.getProgram(normalizeFilePath(filename));\n }\n } catch {\n return null;\n }\n\n return null;\n }\n\n function getCompilerOptions(filename) {\n const cacheKey = normalizeFilePath(filename);\n if (compilerOptionsCache.has(cacheKey)) {\n return compilerOptionsCache.get(cacheKey);\n }\n const program = getProgramForFile(filename);\n const compilerOptions =\n program?.getCompilerOptions?.() ||\n options.compilerOptions ||\n DEFAULT_MODULE_RESOLUTION_OPTIONS;\n compilerOptionsCache.set(cacheKey, compilerOptions);\n return compilerOptions;\n }\n\n function getModuleResolutionHost(filename) {\n const cacheKey = normalizeFilePath(filename);\n if (moduleResolutionHostCache.has(cacheKey)) {\n return moduleResolutionHostCache.get(cacheKey);\n }\n const ts = ensureTypescriptModule();\n const host = providedTypescriptSession?.host || ts.sys;\n moduleResolutionHostCache.set(cacheKey, host);\n return host;\n }\n\n function fileExists(filename) {\n const normalized = normalizeFilePath(filename);\n return inMemoryFiles.has(normalized) || fs.existsSync(normalized);\n }\n\n function readFile(filename) {\n const normalized = normalizeFilePath(filename);\n if (inMemoryFiles.has(normalized)) {\n return inMemoryFiles.get(normalized);\n }\n try {\n return fs.readFileSync(normalized, \"utf8\");\n } catch {\n return null;\n }\n }\n\n function resolveWithExtensions(base) {\n const normalizedBase = normalizeFilePath(base);\n for (const ext of SOURCE_EXTENSIONS) {\n const candidate = `${normalizedBase}${ext}`;\n if (fileExists(candidate)) {\n return normalizeFilePath(candidate);\n }\n }\n for (const ext of SOURCE_EXTENSIONS.filter(Boolean)) {\n const candidate = normalizeFilePath(path.join(base, `index${ext}`));\n if (fileExists(candidate)) {\n return candidate;\n }\n }\n return null;\n }\n\n function resolvePathAlias(containingFile, source) {\n const compilerOptions = getCompilerOptions(containingFile) || {};\n const baseUrl = compilerOptions.baseUrl\n ? normalizeFilePath(\n path.isAbsolute(compilerOptions.baseUrl)\n ? compilerOptions.baseUrl\n : path.resolve(path.dirname(containingFile), compilerOptions.baseUrl)\n )\n : normalizeFilePath(path.dirname(containingFile));\n const pathMappings = compilerOptions.paths || {};\n\n for (const [pattern, substitutions] of Object.entries(pathMappings)) {\n const starIndex = pattern.indexOf(\"*\");\n const isStarPattern = starIndex !== -1;\n const prefix = isStarPattern ? pattern.slice(0, starIndex) : pattern;\n const suffix = isStarPattern ? pattern.slice(starIndex + 1) : \"\";\n\n if (isStarPattern) {\n if (!source.startsWith(prefix) || !source.endsWith(suffix)) {\n continue;\n }\n } else if (source !== pattern) {\n continue;\n }\n\n const wildcardValue = isStarPattern\n ? source.slice(prefix.length, source.length - suffix.length)\n : \"\";\n\n for (const substitution of substitutions || []) {\n const substituted = isStarPattern\n ? substitution.replace(\"*\", wildcardValue)\n : substitution;\n const candidateBase = path.isAbsolute(substituted)\n ? substituted\n : path.join(baseUrl, substituted);\n const resolved = resolveWithExtensions(candidateBase);\n if (resolved) {\n return resolved;\n }\n }\n }\n\n return null;\n }\n\n function resolveImport(containingFile, source) {\n if (typeof source !== \"string\" || !containingFile) {\n return null;\n }\n const cacheKey = `${normalizeFilePath(containingFile)}::${source}`;\n if (resolvedImportCache.has(cacheKey)) {\n return resolvedImportCache.get(cacheKey);\n }\n\n const baseDir = path.dirname(containingFile);\n let resolved = source.startsWith(\".\") || source.startsWith(\"/\")\n ? resolveWithExtensions(path.resolve(baseDir, source))\n : resolvePathAlias(containingFile, source);\n\n if (!resolved) {\n const ts = ensureTypescriptModule();\n try {\n const resolution = ts.resolveModuleName(\n source,\n normalizeFilePath(containingFile),\n getCompilerOptions(containingFile),\n getModuleResolutionHost(containingFile)\n );\n const resolvedFileName = resolution?.resolvedModule?.resolvedFileName;\n if (resolvedFileName) {\n resolved = resolveWithExtensions(resolvedFileName) || normalizeFilePath(resolvedFileName);\n }\n } catch {\n resolved = null;\n }\n }\n\n resolvedImportCache.set(cacheKey, resolved);\n return resolved;\n }\n\n function resolveModuleReference(analysis, reference) {\n if (!analysis || !reference?.source || reference.source === RUNTIME_MODULE) {\n return reference?.resolvedSource || null;\n }\n if (Object.prototype.hasOwnProperty.call(reference, \"resolvedSource\")) {\n return reference.resolvedSource;\n }\n reference.resolvedSource = resolveImport(analysis.filename, reference.source);\n return reference.resolvedSource;\n }\n\n function getParserPluginsForModule(filename, source) {\n if (/\\.(?:[cm]?ts|tsx|litsx)$/i.test(filename)) {\n return [\"typescript\"];\n }\n if (/\\b(?:as|satisfies)\\s+[^;,)]+/.test(source)) {\n return [\"typescript\"];\n }\n return [];\n }\n\n function getImportedName(specifier) {\n if (specifier.type === \"ImportDefaultSpecifier\") return \"default\";\n if (specifier.type === \"ImportNamespaceSpecifier\") return \"*\";\n return specifier.imported?.name ?? specifier.imported?.value ?? null;\n }\n\n function isDefineHookCallee(node, analysis) {\n if (!node) return false;\n if (node.type === \"Identifier\") {\n return analysis.defineHookLocals.has(node.name);\n }\n if (\n node.type === \"MemberExpression\" &&\n !node.computed &&\n node.property?.type === \"Identifier\" &&\n node.property.name === \"defineHook\" &&\n node.object?.type === \"Identifier\"\n ) {\n return analysis.runtimeNamespaceLocals.has(node.object.name);\n }\n return false;\n }\n\n function addExportBinding(analysis, exportedName, info) {\n if (exportedName) {\n analysis.exportBindings.set(exportedName, info);\n }\n }\n\n function getDefineHookPhaseInfo(init) {\n const definition = init?.arguments?.[0];\n if (!definition || definition.type !== \"ObjectExpression\") {\n return {\n hasStaticPhase: false,\n hasInstancePhase: true,\n };\n }\n const hasProperty = (name) => definition.properties.some((property) => {\n if (property.type !== \"ObjectProperty\" && property.type !== \"ObjectMethod\") {\n return false;\n }\n const key = property.key;\n return (\n (key.type === \"Identifier\" && key.name === name) ||\n (key.type === \"StringLiteral\" && key.value === name)\n );\n });\n return {\n hasStaticPhase: hasProperty(\"static\"),\n hasInstancePhase: hasProperty(\"setup\") || hasProperty(\"createState\") || hasProperty(\"middlewares\"),\n };\n }\n\n function analyzeModule(filename) {\n const normalizedFilename = normalizeFilePath(filename);\n if (!normalizedFilename) return null;\n if (moduleCache.has(normalizedFilename)) {\n return moduleCache.get(normalizedFilename);\n }\n\n const source = readFile(normalizedFilename);\n if (typeof source !== \"string\") {\n moduleCache.set(normalizedFilename, null);\n return null;\n }\n\n const analysis = {\n filename: normalizedFilename,\n importBindings: new Map(),\n exportBindings: new Map(),\n exportAllSources: [],\n defineHookLocals: new Set(),\n runtimeNamespaceLocals: new Set(),\n structuralLocals: new Set(),\n structuralLocalInfo: new Map(),\n customHookPaths: new Map(),\n customHookUsageCache: new Map(),\n customHookRuntimeUsageCache: new Map(),\n };\n moduleCache.set(normalizedFilename, analysis);\n\n let ast;\n try {\n ast = parser.parse(source, {\n sourceType: \"module\",\n plugins: getParserPluginsForModule(normalizedFilename, source),\n });\n } catch {\n moduleCache.set(normalizedFilename, null);\n return null;\n }\n\n getTraverse()(ast, {\n Program(programPath) {\n for (const statementPath of programPath.get(\"body\")) {\n const node = statementPath.node;\n\n if (statementPath.isImportDeclaration()) {\n const sourceValue = node.source.value;\n for (const specifier of node.specifiers) {\n const localName = specifier.local?.name;\n if (!localName) continue;\n const importedName = getImportedName(specifier);\n analysis.importBindings.set(localName, {\n importedName,\n source: sourceValue,\n });\n if (sourceValue === RUNTIME_MODULE && importedName === \"defineHook\") {\n analysis.defineHookLocals.add(localName);\n }\n if (\n sourceValue === RUNTIME_MODULE &&\n (specifier.type === \"ImportNamespaceSpecifier\" ||\n specifier.type === \"ImportDefaultSpecifier\")\n ) {\n analysis.runtimeNamespaceLocals.add(localName);\n }\n }\n continue;\n }\n\n const declarationPath = statementPath.isExportNamedDeclaration()\n ? statementPath.get(\"declaration\")\n : statementPath;\n\n if (declarationPath?.isFunctionDeclaration?.()) {\n const localName = declarationPath.node.id?.name;\n if (localName && /^use[A-Z0-9]/.test(localName)) {\n analysis.customHookPaths.set(localName, declarationPath);\n }\n }\n\n if (declarationPath?.isVariableDeclaration?.()) {\n for (const declaratorPath of declarationPath.get(\"declarations\")) {\n const id = declaratorPath.node.id;\n if (id?.type !== \"Identifier\") continue;\n const init = declaratorPath.node.init;\n if (init?.type === \"CallExpression\" && isDefineHookCallee(init.callee, analysis)) {\n analysis.structuralLocals.add(id.name);\n analysis.structuralLocalInfo.set(id.name, getDefineHookPhaseInfo(init));\n } else if (\n /^use[A-Z0-9]/.test(id.name) &&\n (\n init?.type === \"FunctionExpression\" ||\n init?.type === \"ArrowFunctionExpression\"\n )\n ) {\n analysis.customHookPaths.set(id.name, declaratorPath.get(\"init\"));\n }\n }\n }\n\n if (statementPath.isExportAllDeclaration()) {\n analysis.exportAllSources.push({\n source: node.source.value,\n });\n continue;\n }\n\n if (statementPath.isExportNamedDeclaration()) {\n const exportNode = statementPath.node;\n const declaration = exportNode.declaration;\n if (declaration?.type === \"VariableDeclaration\") {\n for (const declarator of declaration.declarations) {\n const localName = declarator.id?.name;\n if (localName) {\n addExportBinding(analysis, localName, { localName });\n }\n }\n } else if (\n declaration?.type === \"FunctionDeclaration\" ||\n declaration?.type === \"ClassDeclaration\"\n ) {\n addExportBinding(analysis, declaration.id?.name, {\n localName: declaration.id?.name,\n });\n }\n\n for (const specifier of exportNode.specifiers) {\n const exportedName = specifier.exported?.name ?? specifier.exported?.value ?? null;\n if (!exportedName) continue;\n const localName = specifier.local?.name ?? specifier.local?.value ?? exportedName;\n if (exportNode.source?.value) {\n addExportBinding(analysis, exportedName, {\n importedName: localName,\n source: exportNode.source.value,\n });\n } else {\n addExportBinding(analysis, exportedName, { localName });\n }\n }\n }\n }\n },\n });\n\n return analysis;\n }\n\n function isNamespaceStructuralUse(analysis, objectName, propertyName, seen) {\n const importInfo = analysis.importBindings.get(objectName);\n const resolvedSource = resolveModuleReference(analysis, importInfo);\n if (!resolvedSource || importInfo.importedName !== \"*\") {\n return false;\n }\n const importedModule = analyzeModule(resolvedSource);\n return (\n isStructuralExport(importedModule, propertyName, seen) ||\n isStructuralCustomExport(importedModule, propertyName, seen)\n );\n }\n\n function isNamespaceRuntimeHelperUse(analysis, objectName, propertyName) {\n const importInfo = analysis.importBindings.get(objectName);\n return (\n importInfo?.source === RUNTIME_MODULE &&\n importInfo.importedName === \"*\" &&\n RUNTIME_HELPERS.includes(propertyName)\n );\n }\n\n function isRuntimeHelperImport(analysis, localName) {\n const importInfo = analysis.importBindings.get(localName);\n return (\n importInfo?.source === RUNTIME_MODULE &&\n RUNTIME_HELPERS.includes(importInfo.importedName)\n );\n }\n\n function localCustomHookUsesStructural(analysis, localName, seen = new Set()) {\n if (!analysis || !localName) return false;\n const key = `${analysis.filename}:local:${localName}`;\n if (analysis.customHookUsageCache.has(localName)) {\n return analysis.customHookUsageCache.get(localName);\n }\n if (seen.has(key)) return false;\n const nextSeen = new Set(seen);\n nextSeen.add(key);\n\n const fnPath = analysis.customHookPaths.get(localName);\n if (!fnPath?.traverse) {\n analysis.customHookUsageCache.set(localName, false);\n return false;\n }\n\n let usesStructural = false;\n fnPath.traverse({\n CallExpression(callPath) {\n if (usesStructural) {\n callPath.stop();\n return;\n }\n const callee = callPath.get(\"callee\");\n if (callee.isIdentifier()) {\n const name = callee.node.name;\n if (analysis.structuralLocals.has(name)) {\n usesStructural = true;\n callPath.stop();\n return;\n }\n if (\n analysis.customHookPaths.has(name) &&\n localCustomHookUsesStructural(analysis, name, nextSeen)\n ) {\n usesStructural = true;\n callPath.stop();\n return;\n }\n const importInfo = analysis.importBindings.get(name);\n const resolvedSource = resolveModuleReference(analysis, importInfo);\n if (resolvedSource && importInfo.importedName !== \"*\") {\n const importedModule = analyzeModule(resolvedSource);\n if (\n isStructuralExport(importedModule, importInfo.importedName, nextSeen) ||\n isStructuralCustomExport(importedModule, importInfo.importedName, nextSeen)\n ) {\n usesStructural = true;\n callPath.stop();\n }\n }\n return;\n }\n\n if (callee.isMemberExpression({ computed: false })) {\n const object = callee.get(\"object\");\n const property = callee.get(\"property\");\n if (\n object.isIdentifier() &&\n property.isIdentifier() &&\n isNamespaceStructuralUse(analysis, object.node.name, property.node.name, nextSeen)\n ) {\n usesStructural = true;\n callPath.stop();\n }\n }\n },\n });\n\n analysis.customHookUsageCache.set(localName, usesStructural);\n return usesStructural;\n }\n\n function localCustomHookUsesRuntimeHook(analysis, localName, seen = new Set()) {\n if (!analysis || !localName) return false;\n const key = `${analysis.filename}:runtime-local:${localName}`;\n if (analysis.customHookRuntimeUsageCache.has(localName)) {\n return analysis.customHookRuntimeUsageCache.get(localName);\n }\n if (seen.has(key)) return false;\n const nextSeen = new Set(seen);\n nextSeen.add(key);\n\n const fnPath = analysis.customHookPaths.get(localName);\n if (!fnPath?.traverse) {\n analysis.customHookRuntimeUsageCache.set(localName, false);\n return false;\n }\n\n let usesRuntimeHook = false;\n fnPath.traverse({\n CallExpression(callPath) {\n if (usesRuntimeHook) {\n callPath.stop();\n return;\n }\n const callee = callPath.get(\"callee\");\n if (callee.isIdentifier()) {\n const name = callee.node.name;\n if (isRuntimeHelperImport(analysis, name)) {\n usesRuntimeHook = true;\n callPath.stop();\n return;\n }\n if (\n analysis.customHookPaths.has(name) &&\n localCustomHookUsesRuntimeHook(analysis, name, nextSeen)\n ) {\n usesRuntimeHook = true;\n callPath.stop();\n return;\n }\n const importInfo = analysis.importBindings.get(name);\n const resolvedSource = resolveModuleReference(analysis, importInfo);\n if (resolvedSource && importInfo.importedName !== \"*\") {\n const importedModule = analyzeModule(resolvedSource);\n if (isRuntimeCustomExport(importedModule, importInfo.importedName, nextSeen)) {\n usesRuntimeHook = true;\n callPath.stop();\n }\n }\n return;\n }\n\n if (callee.isMemberExpression({ computed: false })) {\n const object = callee.get(\"object\");\n const property = callee.get(\"property\");\n if (!object.isIdentifier() || !property.isIdentifier()) {\n return;\n }\n if (isNamespaceRuntimeHelperUse(analysis, object.node.name, property.node.name)) {\n usesRuntimeHook = true;\n callPath.stop();\n return;\n }\n const importInfo = analysis.importBindings.get(object.node.name);\n const resolvedSource = resolveModuleReference(analysis, importInfo);\n if (resolvedSource && importInfo.importedName === \"*\") {\n const importedModule = analyzeModule(resolvedSource);\n if (isRuntimeCustomExport(importedModule, property.node.name, nextSeen)) {\n usesRuntimeHook = true;\n callPath.stop();\n }\n }\n }\n },\n });\n\n analysis.customHookRuntimeUsageCache.set(localName, usesRuntimeHook);\n return usesRuntimeHook;\n }\n\n function getStructuralExportInfo(analysis, exportedName, seen = new Set()) {\n if (!analysis || !exportedName) return false;\n const key = `${analysis.filename}:${exportedName}`;\n if (seen.has(key)) return false;\n const nextSeen = new Set(seen);\n nextSeen.add(key);\n\n const exportInfo = analysis.exportBindings.get(exportedName);\n if (!exportInfo) {\n for (const exportAll of analysis.exportAllSources || []) {\n const resolvedSource = resolveModuleReference(analysis, exportAll);\n if (!resolvedSource) continue;\n const info = getStructuralExportInfo(\n analyzeModule(resolvedSource),\n exportedName,\n nextSeen\n );\n if (info) return info;\n }\n return false;\n }\n\n const exportSource = resolveModuleReference(analysis, exportInfo);\n if (exportSource) {\n return getStructuralExportInfo(\n analyzeModule(exportSource),\n exportInfo.importedName,\n nextSeen\n );\n }\n\n if (analysis.structuralLocals.has(exportInfo.localName)) {\n return {\n kind: \"structural-hook\",\n ...(analysis.structuralLocalInfo.get(exportInfo.localName) || {\n hasStaticPhase: false,\n hasInstancePhase: true,\n }),\n };\n }\n\n const importInfo = analysis.importBindings.get(exportInfo.localName);\n const importSource = resolveModuleReference(analysis, importInfo);\n if (importSource && importInfo.importedName !== \"*\") {\n return getStructuralExportInfo(\n analyzeModule(importSource),\n importInfo.importedName,\n nextSeen\n );\n }\n\n return false;\n }\n\n function isStructuralExport(analysis, exportedName, seen = new Set()) {\n return Boolean(getStructuralExportInfo(analysis, exportedName, seen));\n }\n\n function isStructuralCustomExport(analysis, exportedName, seen = new Set()) {\n if (!analysis || !exportedName) return false;\n const key = `${analysis.filename}:custom:${exportedName}`;\n if (seen.has(key)) return false;\n const nextSeen = new Set(seen);\n nextSeen.add(key);\n\n const exportInfo = analysis.exportBindings.get(exportedName);\n if (!exportInfo) {\n for (const exportAll of analysis.exportAllSources || []) {\n const resolvedSource = resolveModuleReference(analysis, exportAll);\n if (!resolvedSource) continue;\n if (\n isStructuralCustomExport(\n analyzeModule(resolvedSource),\n exportedName,\n nextSeen\n )\n ) {\n return true;\n }\n }\n return false;\n }\n\n const exportSource = resolveModuleReference(analysis, exportInfo);\n if (exportSource) {\n return isStructuralCustomExport(\n analyzeModule(exportSource),\n exportInfo.importedName,\n nextSeen\n );\n }\n\n if (localCustomHookUsesStructural(analysis, exportInfo.localName, nextSeen)) {\n return true;\n }\n\n const importInfo = analysis.importBindings.get(exportInfo.localName);\n const importSource = resolveModuleReference(analysis, importInfo);\n if (importSource && importInfo.importedName !== \"*\") {\n return isStructuralCustomExport(\n analyzeModule(importSource),\n importInfo.importedName,\n nextSeen\n );\n }\n\n return false;\n }\n\n function hasExportBinding(analysis, exportedName, seen = new Set()) {\n if (!analysis || !exportedName) return \"unresolved\";\n const key = `${analysis.filename}:has-export:${exportedName}`;\n if (seen.has(key)) return false;\n const nextSeen = new Set(seen);\n nextSeen.add(key);\n\n if (analysis.exportBindings.has(exportedName)) {\n return true;\n }\n\n let sawUnresolvedExportAll = false;\n for (const exportAll of analysis.exportAllSources || []) {\n const resolvedSource = resolveModuleReference(analysis, exportAll);\n if (!resolvedSource) {\n sawUnresolvedExportAll = true;\n continue;\n }\n const result = hasExportBinding(\n analyzeModule(resolvedSource),\n exportedName,\n nextSeen\n );\n if (result === true) return true;\n if (result === \"unresolved\") sawUnresolvedExportAll = true;\n }\n\n return sawUnresolvedExportAll ? \"unresolved\" : false;\n }\n\n function isRuntimeCustomExport(analysis, exportedName, seen = new Set()) {\n if (!analysis || !exportedName) return false;\n const key = `${analysis.filename}:runtime-custom:${exportedName}`;\n if (seen.has(key)) return false;\n const nextSeen = new Set(seen);\n nextSeen.add(key);\n\n const exportInfo = analysis.exportBindings.get(exportedName);\n if (!exportInfo) {\n for (const exportAll of analysis.exportAllSources || []) {\n const resolvedSource = resolveModuleReference(analysis, exportAll);\n if (!resolvedSource) continue;\n if (\n isRuntimeCustomExport(\n analyzeModule(resolvedSource),\n exportedName,\n nextSeen\n )\n ) {\n return true;\n }\n }\n return false;\n }\n\n const exportSource = resolveModuleReference(analysis, exportInfo);\n if (exportSource) {\n return isRuntimeCustomExport(\n analyzeModule(exportSource),\n exportInfo.importedName,\n nextSeen\n );\n }\n\n if (localCustomHookUsesRuntimeHook(analysis, exportInfo.localName, nextSeen)) {\n return true;\n }\n\n const importInfo = analysis.importBindings.get(exportInfo.localName);\n const importSource = resolveModuleReference(analysis, importInfo);\n if (importSource && importInfo.importedName !== \"*\") {\n return isRuntimeCustomExport(\n analyzeModule(importSource),\n importInfo.importedName,\n nextSeen\n );\n }\n\n return false;\n }\n\n return function structuralHookResolver({ filename, source, importedName, runtimeCustomOnly = false }) {\n const resolved = resolveImport(filename, source);\n if (!resolved) return runtimeCustomOnly ? \"unresolved-custom-hook\" : false;\n const analysis = analyzeModule(resolved);\n if (!analysis && runtimeCustomOnly) {\n return \"unresolved-custom-hook\";\n }\n if (runtimeCustomOnly) {\n const exportStatus = hasExportBinding(analysis, importedName);\n if (exportStatus !== true) {\n return \"unresolved-custom-hook\";\n }\n return isRuntimeCustomExport(analysis, importedName)\n ? \"runtime-custom-hook\"\n : false;\n }\n const structuralInfo = getStructuralExportInfo(analysis, importedName);\n if (structuralInfo) {\n return structuralInfo;\n }\n if (isStructuralCustomExport(analysis, importedName)) {\n return \"structural-custom-hook\";\n }\n return false;\n };\n}\n\nfunction normalizePath(value) {\n return String(value || \"\").replace(/\\\\/g, \"/\");\n}\n\nfunction hashStableId(value) {\n let hash = 2166136261;\n const text = String(value);\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(36);\n}\n\nfunction createStableIdCallsiteMetadata(callPath, state, t) {\n const filename =\n state.file?.opts?.sourceFileName ||\n state.file?.opts?.filename ||\n state.filename ||\n \"\";\n const normalizedFilename = normalizePath(filename);\n const loc = callPath.node.loc?.start ?? null;\n const start = typeof callPath.node.start === \"number\"\n ? callPath.node.start\n : 0;\n const line = loc?.line ?? 0;\n const column = loc?.column ?? 0;\n const seed = `${normalizedFilename}:${line}:${column}:${start}`;\n return t.stringLiteral(`litsx-stable-${hashStableId(seed)}`);\n}\n\nexport default function transformLitsxHooks(api, options = {}) {\n const structuralHookResolver = createStructuralHookResolver(options);\n const ignoredCustomHookSources = new Set(options.ignoredCustomHookSources || []);\n const plugin = createRuntimeHooksTransform({\n pluginName: \"transform-litsx-hooks\",\n runtimeModule: RUNTIME_MODULE,\n importSources: IMPORT_SOURCES,\n helperNames: RUNTIME_HELPERS,\n callMetadataByHelper: {\n useStableId: createStableIdCallsiteMetadata,\n },\n });\n\n return plugin(api, {\n ...options,\n structuralHookResolver,\n customHookResolver({ filename, source, importedName }) {\n if (ignoredCustomHookSources.has(source)) {\n return false;\n }\n const result = structuralHookResolver({\n filename,\n source,\n importedName,\n runtimeCustomOnly: true,\n });\n if (result === \"unresolved-custom-hook\") {\n return result;\n }\n return result === \"runtime-custom-hook\";\n },\n });\n}\n"],"names":["ensureTypescriptModule","createRuntimeHooksTransform"],"mappings":"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"}
1
+ {"version":3,"file":"transform-litsx-hooks.cjs","sources":["../../src/internal/runtime-hooks.js","../../src/internal/transform-litsx-hooks.js"],"sourcesContent":["export const LITSX_RUNTIME_MODULE = \"@litsx/core\";\nexport const LITSX_CONTEXT_RUNTIME_MODULE = \"@litsx/core/context\";\n\nexport const LITSX_RUNTIME_IMPORT_SOURCES = [\n LITSX_RUNTIME_MODULE,\n LITSX_CONTEXT_RUNTIME_MODULE,\n];\n\nexport const LITSX_PRESERVED_RUNTIME_IMPORT_SOURCES = [\n LITSX_CONTEXT_RUNTIME_MODULE,\n];\n\nexport function isLitsxRuntimeImportSource(source) {\n return LITSX_RUNTIME_IMPORT_SOURCES.includes(source);\n}\n\nexport function isLitsxRuntimeHookName(name) {\n return typeof name === \"string\" && /^use[A-Z0-9]/.test(name);\n}\n","import { createRuntimeHooksTransform } from \"@litsx/babel-plugin-shared-hooks\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport traverse from \"@babel/traverse\";\nimport parser from \"@litsx/babel-parser\";\nimport { ensureTypescriptModule } from \"./transform-litsx-properties.js\";\nimport {\n isLitsxRuntimeHookName,\n isLitsxRuntimeImportSource,\n LITSX_PRESERVED_RUNTIME_IMPORT_SOURCES,\n LITSX_RUNTIME_IMPORT_SOURCES,\n LITSX_RUNTIME_MODULE,\n} from \"./runtime-hooks.js\";\n\nconst RUNTIME_MODULE = LITSX_RUNTIME_MODULE;\nconst IMPORT_SOURCES = LITSX_RUNTIME_IMPORT_SOURCES;\n\nconst SOURCE_EXTENSIONS = [\n \"\",\n \".litsx\",\n \".tsx\",\n \".ts\",\n \".jsx\",\n \".js\",\n \".mjs\",\n \".cjs\",\n];\nconst DEFAULT_MODULE_RESOLUTION_OPTIONS = {\n moduleResolution: 100,\n allowJs: true,\n checkJs: false,\n jsx: 1,\n target: 99,\n module: 99,\n esModuleInterop: true,\n allowSyntheticDefaultImports: true,\n};\n\nfunction normalizeFilePath(value) {\n return normalizePath(value);\n}\n\nfunction getTraverse() {\n return traverse.default || traverse;\n}\n\nfunction normalizeInMemoryFiles(files) {\n const normalized = new Map();\n if (!files || typeof files !== \"object\") {\n return normalized;\n }\n for (const [filename, source] of Object.entries(files)) {\n if (typeof source !== \"string\") continue;\n normalized.set(normalizeFilePath(filename), source);\n }\n return normalized;\n}\n\nfunction createStructuralHookResolver(options = {}) {\n const inMemoryFiles = normalizeInMemoryFiles(options.inMemoryFiles);\n const compilationSession = options.__litsxCompilationSession || null;\n const moduleCache = compilationSession?.importedHookModuleAnalysisCache || new Map();\n const resolvedImportCache = compilationSession?.resolvedImportCache || new Map();\n const providedTypescriptSession =\n options?.typescriptSession?.projectSession || options?.typescriptSession || null;\n const compilerOptionsCache = new Map();\n const moduleResolutionHostCache = new Map();\n\n function getProgramForFile(filename) {\n if (!providedTypescriptSession?.getProgram || !filename) {\n return null;\n }\n\n try {\n if (providedTypescriptSession.kind === \"project\") {\n return providedTypescriptSession.getProgram();\n }\n if (providedTypescriptSession.kind === \"standalone\") {\n return providedTypescriptSession.getProgram(normalizeFilePath(filename));\n }\n } catch {\n return null;\n }\n\n return null;\n }\n\n function getCompilerOptions(filename) {\n const cacheKey = normalizeFilePath(filename);\n if (compilerOptionsCache.has(cacheKey)) {\n return compilerOptionsCache.get(cacheKey);\n }\n const program = getProgramForFile(filename);\n const compilerOptions =\n program?.getCompilerOptions?.() ||\n options.compilerOptions ||\n DEFAULT_MODULE_RESOLUTION_OPTIONS;\n compilerOptionsCache.set(cacheKey, compilerOptions);\n return compilerOptions;\n }\n\n function getModuleResolutionHost(filename) {\n const cacheKey = normalizeFilePath(filename);\n if (moduleResolutionHostCache.has(cacheKey)) {\n return moduleResolutionHostCache.get(cacheKey);\n }\n const ts = ensureTypescriptModule();\n const host = providedTypescriptSession?.host || ts.sys;\n moduleResolutionHostCache.set(cacheKey, host);\n return host;\n }\n\n function fileExists(filename) {\n const normalized = normalizeFilePath(filename);\n return inMemoryFiles.has(normalized) || fs.existsSync(normalized);\n }\n\n function readFile(filename) {\n const normalized = normalizeFilePath(filename);\n if (inMemoryFiles.has(normalized)) {\n return inMemoryFiles.get(normalized);\n }\n try {\n return fs.readFileSync(normalized, \"utf8\");\n } catch {\n return null;\n }\n }\n\n function resolveWithExtensions(base) {\n const normalizedBase = normalizeFilePath(base);\n for (const ext of SOURCE_EXTENSIONS) {\n const candidate = `${normalizedBase}${ext}`;\n if (fileExists(candidate)) {\n return normalizeFilePath(candidate);\n }\n }\n for (const ext of SOURCE_EXTENSIONS.filter(Boolean)) {\n const candidate = normalizeFilePath(path.join(base, `index${ext}`));\n if (fileExists(candidate)) {\n return candidate;\n }\n }\n return null;\n }\n\n function resolvePathAlias(containingFile, source) {\n const compilerOptions = getCompilerOptions(containingFile) || {};\n const baseUrl = compilerOptions.baseUrl\n ? normalizeFilePath(\n path.isAbsolute(compilerOptions.baseUrl)\n ? compilerOptions.baseUrl\n : path.resolve(path.dirname(containingFile), compilerOptions.baseUrl)\n )\n : normalizeFilePath(path.dirname(containingFile));\n const pathMappings = compilerOptions.paths || {};\n\n for (const [pattern, substitutions] of Object.entries(pathMappings)) {\n const starIndex = pattern.indexOf(\"*\");\n const isStarPattern = starIndex !== -1;\n const prefix = isStarPattern ? pattern.slice(0, starIndex) : pattern;\n const suffix = isStarPattern ? pattern.slice(starIndex + 1) : \"\";\n\n if (isStarPattern) {\n if (!source.startsWith(prefix) || !source.endsWith(suffix)) {\n continue;\n }\n } else if (source !== pattern) {\n continue;\n }\n\n const wildcardValue = isStarPattern\n ? source.slice(prefix.length, source.length - suffix.length)\n : \"\";\n\n for (const substitution of substitutions || []) {\n const substituted = isStarPattern\n ? substitution.replace(\"*\", wildcardValue)\n : substitution;\n const candidateBase = path.isAbsolute(substituted)\n ? substituted\n : path.join(baseUrl, substituted);\n const resolved = resolveWithExtensions(candidateBase);\n if (resolved) {\n return resolved;\n }\n }\n }\n\n return null;\n }\n\n function resolveImport(containingFile, source) {\n if (typeof source !== \"string\" || !containingFile) {\n return null;\n }\n const cacheKey = `${normalizeFilePath(containingFile)}::${source}`;\n if (resolvedImportCache.has(cacheKey)) {\n return resolvedImportCache.get(cacheKey);\n }\n\n const baseDir = path.dirname(containingFile);\n let resolved = source.startsWith(\".\") || source.startsWith(\"/\")\n ? resolveWithExtensions(path.resolve(baseDir, source))\n : resolvePathAlias(containingFile, source);\n\n if (!resolved) {\n const ts = ensureTypescriptModule();\n try {\n const resolution = ts.resolveModuleName(\n source,\n normalizeFilePath(containingFile),\n getCompilerOptions(containingFile),\n getModuleResolutionHost(containingFile)\n );\n const resolvedFileName = resolution?.resolvedModule?.resolvedFileName;\n if (resolvedFileName) {\n resolved = resolveWithExtensions(resolvedFileName) || normalizeFilePath(resolvedFileName);\n }\n } catch {\n resolved = null;\n }\n }\n\n resolvedImportCache.set(cacheKey, resolved);\n return resolved;\n }\n\n function resolveModuleReference(analysis, reference) {\n if (!analysis || !reference?.source || reference.source === RUNTIME_MODULE) {\n return reference?.resolvedSource || null;\n }\n if (Object.prototype.hasOwnProperty.call(reference, \"resolvedSource\")) {\n return reference.resolvedSource;\n }\n reference.resolvedSource = resolveImport(analysis.filename, reference.source);\n return reference.resolvedSource;\n }\n\n function getParserPluginsForModule(filename, source) {\n if (/\\.(?:[cm]?ts|tsx|litsx)$/i.test(filename)) {\n return [\"typescript\"];\n }\n if (/\\b(?:as|satisfies)\\s+[^;,)]+/.test(source)) {\n return [\"typescript\"];\n }\n return [];\n }\n\n function getImportedName(specifier) {\n if (specifier.type === \"ImportDefaultSpecifier\") return \"default\";\n if (specifier.type === \"ImportNamespaceSpecifier\") return \"*\";\n return specifier.imported?.name ?? specifier.imported?.value ?? null;\n }\n\n function isDefineHookCallee(node, analysis) {\n if (!node) return false;\n if (node.type === \"Identifier\") {\n return analysis.defineHookLocals.has(node.name);\n }\n if (\n node.type === \"MemberExpression\" &&\n !node.computed &&\n node.property?.type === \"Identifier\" &&\n node.property.name === \"defineHook\" &&\n node.object?.type === \"Identifier\"\n ) {\n return analysis.runtimeNamespaceLocals.has(node.object.name);\n }\n return false;\n }\n\n function addExportBinding(analysis, exportedName, info) {\n if (exportedName) {\n analysis.exportBindings.set(exportedName, info);\n }\n }\n\n function getDefineHookPhaseInfo(init) {\n const definition = init?.arguments?.[0];\n if (!definition || definition.type !== \"ObjectExpression\") {\n return {\n hasStaticPhase: false,\n hasInstancePhase: true,\n };\n }\n const hasProperty = (name) => definition.properties.some((property) => {\n if (property.type !== \"ObjectProperty\" && property.type !== \"ObjectMethod\") {\n return false;\n }\n const key = property.key;\n return (\n (key.type === \"Identifier\" && key.name === name) ||\n (key.type === \"StringLiteral\" && key.value === name)\n );\n });\n return {\n hasStaticPhase: hasProperty(\"static\"),\n hasInstancePhase: hasProperty(\"setup\") || hasProperty(\"createState\") || hasProperty(\"middlewares\"),\n };\n }\n\n function analyzeModule(filename) {\n const normalizedFilename = normalizeFilePath(filename);\n if (!normalizedFilename) return null;\n if (moduleCache.has(normalizedFilename)) {\n return moduleCache.get(normalizedFilename);\n }\n\n const source = readFile(normalizedFilename);\n if (typeof source !== \"string\") {\n moduleCache.set(normalizedFilename, null);\n return null;\n }\n\n const analysis = {\n filename: normalizedFilename,\n importBindings: new Map(),\n exportBindings: new Map(),\n exportAllSources: [],\n defineHookLocals: new Set(),\n runtimeNamespaceLocals: new Set(),\n structuralLocals: new Set(),\n structuralLocalInfo: new Map(),\n customHookPaths: new Map(),\n customHookUsageCache: new Map(),\n customHookRuntimeUsageCache: new Map(),\n };\n moduleCache.set(normalizedFilename, analysis);\n\n let ast;\n try {\n ast = parser.parse(source, {\n sourceType: \"module\",\n plugins: getParserPluginsForModule(normalizedFilename, source),\n });\n } catch {\n moduleCache.set(normalizedFilename, null);\n return null;\n }\n\n getTraverse()(ast, {\n Program(programPath) {\n for (const statementPath of programPath.get(\"body\")) {\n const node = statementPath.node;\n\n if (statementPath.isImportDeclaration()) {\n const sourceValue = node.source.value;\n for (const specifier of node.specifiers) {\n const localName = specifier.local?.name;\n if (!localName) continue;\n const importedName = getImportedName(specifier);\n analysis.importBindings.set(localName, {\n importedName,\n source: sourceValue,\n });\n if (sourceValue === RUNTIME_MODULE && importedName === \"defineHook\") {\n analysis.defineHookLocals.add(localName);\n }\n if (\n sourceValue === RUNTIME_MODULE &&\n (specifier.type === \"ImportNamespaceSpecifier\" ||\n specifier.type === \"ImportDefaultSpecifier\")\n ) {\n analysis.runtimeNamespaceLocals.add(localName);\n }\n }\n continue;\n }\n\n const declarationPath = statementPath.isExportNamedDeclaration()\n ? statementPath.get(\"declaration\")\n : statementPath;\n\n if (declarationPath?.isFunctionDeclaration?.()) {\n const localName = declarationPath.node.id?.name;\n if (localName && /^use[A-Z0-9]/.test(localName)) {\n analysis.customHookPaths.set(localName, declarationPath);\n }\n }\n\n if (declarationPath?.isVariableDeclaration?.()) {\n for (const declaratorPath of declarationPath.get(\"declarations\")) {\n const id = declaratorPath.node.id;\n if (id?.type !== \"Identifier\") continue;\n const init = declaratorPath.node.init;\n if (init?.type === \"CallExpression\" && isDefineHookCallee(init.callee, analysis)) {\n analysis.structuralLocals.add(id.name);\n analysis.structuralLocalInfo.set(id.name, getDefineHookPhaseInfo(init));\n } else if (\n /^use[A-Z0-9]/.test(id.name) &&\n (\n init?.type === \"FunctionExpression\" ||\n init?.type === \"ArrowFunctionExpression\"\n )\n ) {\n analysis.customHookPaths.set(id.name, declaratorPath.get(\"init\"));\n }\n }\n }\n\n if (statementPath.isExportAllDeclaration()) {\n analysis.exportAllSources.push({\n source: node.source.value,\n });\n continue;\n }\n\n if (statementPath.isExportNamedDeclaration()) {\n const exportNode = statementPath.node;\n const declaration = exportNode.declaration;\n if (declaration?.type === \"VariableDeclaration\") {\n for (const declarator of declaration.declarations) {\n const localName = declarator.id?.name;\n if (localName) {\n addExportBinding(analysis, localName, { localName });\n }\n }\n } else if (\n declaration?.type === \"FunctionDeclaration\" ||\n declaration?.type === \"ClassDeclaration\"\n ) {\n addExportBinding(analysis, declaration.id?.name, {\n localName: declaration.id?.name,\n });\n }\n\n for (const specifier of exportNode.specifiers) {\n const exportedName = specifier.exported?.name ?? specifier.exported?.value ?? null;\n if (!exportedName) continue;\n const localName = specifier.local?.name ?? specifier.local?.value ?? exportedName;\n if (exportNode.source?.value) {\n addExportBinding(analysis, exportedName, {\n importedName: localName,\n source: exportNode.source.value,\n });\n } else {\n addExportBinding(analysis, exportedName, { localName });\n }\n }\n }\n }\n },\n });\n\n return analysis;\n }\n\n function isNamespaceStructuralUse(analysis, objectName, propertyName, seen) {\n const importInfo = analysis.importBindings.get(objectName);\n const resolvedSource = resolveModuleReference(analysis, importInfo);\n if (!resolvedSource || importInfo.importedName !== \"*\") {\n return false;\n }\n const importedModule = analyzeModule(resolvedSource);\n return (\n isStructuralExport(importedModule, propertyName, seen) ||\n isStructuralCustomExport(importedModule, propertyName, seen)\n );\n }\n\n function isNamespaceRuntimeHelperUse(analysis, objectName, propertyName) {\n const importInfo = analysis.importBindings.get(objectName);\n return (\n isLitsxRuntimeImportSource(importInfo?.source) &&\n importInfo.importedName === \"*\" &&\n isLitsxRuntimeHookName(propertyName)\n );\n }\n\n function isRuntimeHelperImport(analysis, localName) {\n const importInfo = analysis.importBindings.get(localName);\n return (\n isLitsxRuntimeImportSource(importInfo?.source) &&\n isLitsxRuntimeHookName(importInfo.importedName)\n );\n }\n\n function localCustomHookUsesStructural(analysis, localName, seen = new Set()) {\n if (!analysis || !localName) return false;\n const key = `${analysis.filename}:local:${localName}`;\n if (analysis.customHookUsageCache.has(localName)) {\n return analysis.customHookUsageCache.get(localName);\n }\n if (seen.has(key)) return false;\n const nextSeen = new Set(seen);\n nextSeen.add(key);\n\n const fnPath = analysis.customHookPaths.get(localName);\n if (!fnPath?.traverse) {\n analysis.customHookUsageCache.set(localName, false);\n return false;\n }\n\n let usesStructural = false;\n fnPath.traverse({\n CallExpression(callPath) {\n if (usesStructural) {\n callPath.stop();\n return;\n }\n const callee = callPath.get(\"callee\");\n if (callee.isIdentifier()) {\n const name = callee.node.name;\n if (analysis.structuralLocals.has(name)) {\n usesStructural = true;\n callPath.stop();\n return;\n }\n if (\n analysis.customHookPaths.has(name) &&\n localCustomHookUsesStructural(analysis, name, nextSeen)\n ) {\n usesStructural = true;\n callPath.stop();\n return;\n }\n const importInfo = analysis.importBindings.get(name);\n const resolvedSource = resolveModuleReference(analysis, importInfo);\n if (resolvedSource && importInfo.importedName !== \"*\") {\n const importedModule = analyzeModule(resolvedSource);\n if (\n isStructuralExport(importedModule, importInfo.importedName, nextSeen) ||\n isStructuralCustomExport(importedModule, importInfo.importedName, nextSeen)\n ) {\n usesStructural = true;\n callPath.stop();\n }\n }\n return;\n }\n\n if (callee.isMemberExpression({ computed: false })) {\n const object = callee.get(\"object\");\n const property = callee.get(\"property\");\n if (\n object.isIdentifier() &&\n property.isIdentifier() &&\n isNamespaceStructuralUse(analysis, object.node.name, property.node.name, nextSeen)\n ) {\n usesStructural = true;\n callPath.stop();\n }\n }\n },\n });\n\n analysis.customHookUsageCache.set(localName, usesStructural);\n return usesStructural;\n }\n\n function localCustomHookUsesRuntimeHook(analysis, localName, seen = new Set()) {\n if (!analysis || !localName) return false;\n const key = `${analysis.filename}:runtime-local:${localName}`;\n if (analysis.customHookRuntimeUsageCache.has(localName)) {\n return analysis.customHookRuntimeUsageCache.get(localName);\n }\n if (seen.has(key)) return false;\n const nextSeen = new Set(seen);\n nextSeen.add(key);\n\n const fnPath = analysis.customHookPaths.get(localName);\n if (!fnPath?.traverse) {\n analysis.customHookRuntimeUsageCache.set(localName, false);\n return false;\n }\n\n let usesRuntimeHook = false;\n fnPath.traverse({\n CallExpression(callPath) {\n if (usesRuntimeHook) {\n callPath.stop();\n return;\n }\n const callee = callPath.get(\"callee\");\n if (callee.isIdentifier()) {\n const name = callee.node.name;\n if (isRuntimeHelperImport(analysis, name)) {\n usesRuntimeHook = true;\n callPath.stop();\n return;\n }\n if (\n analysis.customHookPaths.has(name) &&\n localCustomHookUsesRuntimeHook(analysis, name, nextSeen)\n ) {\n usesRuntimeHook = true;\n callPath.stop();\n return;\n }\n const importInfo = analysis.importBindings.get(name);\n const resolvedSource = resolveModuleReference(analysis, importInfo);\n if (resolvedSource && importInfo.importedName !== \"*\") {\n const importedModule = analyzeModule(resolvedSource);\n if (isRuntimeCustomExport(importedModule, importInfo.importedName, nextSeen)) {\n usesRuntimeHook = true;\n callPath.stop();\n }\n }\n return;\n }\n\n if (callee.isMemberExpression({ computed: false })) {\n const object = callee.get(\"object\");\n const property = callee.get(\"property\");\n if (!object.isIdentifier() || !property.isIdentifier()) {\n return;\n }\n if (isNamespaceRuntimeHelperUse(analysis, object.node.name, property.node.name)) {\n usesRuntimeHook = true;\n callPath.stop();\n return;\n }\n const importInfo = analysis.importBindings.get(object.node.name);\n const resolvedSource = resolveModuleReference(analysis, importInfo);\n if (resolvedSource && importInfo.importedName === \"*\") {\n const importedModule = analyzeModule(resolvedSource);\n if (isRuntimeCustomExport(importedModule, property.node.name, nextSeen)) {\n usesRuntimeHook = true;\n callPath.stop();\n }\n }\n }\n },\n });\n\n analysis.customHookRuntimeUsageCache.set(localName, usesRuntimeHook);\n return usesRuntimeHook;\n }\n\n function getStructuralExportInfo(analysis, exportedName, seen = new Set()) {\n if (!analysis || !exportedName) return false;\n const key = `${analysis.filename}:${exportedName}`;\n if (seen.has(key)) return false;\n const nextSeen = new Set(seen);\n nextSeen.add(key);\n\n const exportInfo = analysis.exportBindings.get(exportedName);\n if (!exportInfo) {\n for (const exportAll of analysis.exportAllSources || []) {\n const resolvedSource = resolveModuleReference(analysis, exportAll);\n if (!resolvedSource) continue;\n const info = getStructuralExportInfo(\n analyzeModule(resolvedSource),\n exportedName,\n nextSeen\n );\n if (info) return info;\n }\n return false;\n }\n\n const exportSource = resolveModuleReference(analysis, exportInfo);\n if (exportSource) {\n return getStructuralExportInfo(\n analyzeModule(exportSource),\n exportInfo.importedName,\n nextSeen\n );\n }\n\n if (analysis.structuralLocals.has(exportInfo.localName)) {\n return {\n kind: \"structural-hook\",\n ...(analysis.structuralLocalInfo.get(exportInfo.localName) || {\n hasStaticPhase: false,\n hasInstancePhase: true,\n }),\n };\n }\n\n const importInfo = analysis.importBindings.get(exportInfo.localName);\n const importSource = resolveModuleReference(analysis, importInfo);\n if (importSource && importInfo.importedName !== \"*\") {\n return getStructuralExportInfo(\n analyzeModule(importSource),\n importInfo.importedName,\n nextSeen\n );\n }\n\n return false;\n }\n\n function isStructuralExport(analysis, exportedName, seen = new Set()) {\n return Boolean(getStructuralExportInfo(analysis, exportedName, seen));\n }\n\n function isStructuralCustomExport(analysis, exportedName, seen = new Set()) {\n if (!analysis || !exportedName) return false;\n const key = `${analysis.filename}:custom:${exportedName}`;\n if (seen.has(key)) return false;\n const nextSeen = new Set(seen);\n nextSeen.add(key);\n\n const exportInfo = analysis.exportBindings.get(exportedName);\n if (!exportInfo) {\n for (const exportAll of analysis.exportAllSources || []) {\n const resolvedSource = resolveModuleReference(analysis, exportAll);\n if (!resolvedSource) continue;\n if (\n isStructuralCustomExport(\n analyzeModule(resolvedSource),\n exportedName,\n nextSeen\n )\n ) {\n return true;\n }\n }\n return false;\n }\n\n const exportSource = resolveModuleReference(analysis, exportInfo);\n if (exportSource) {\n return isStructuralCustomExport(\n analyzeModule(exportSource),\n exportInfo.importedName,\n nextSeen\n );\n }\n\n if (localCustomHookUsesStructural(analysis, exportInfo.localName, nextSeen)) {\n return true;\n }\n\n const importInfo = analysis.importBindings.get(exportInfo.localName);\n const importSource = resolveModuleReference(analysis, importInfo);\n if (importSource && importInfo.importedName !== \"*\") {\n return isStructuralCustomExport(\n analyzeModule(importSource),\n importInfo.importedName,\n nextSeen\n );\n }\n\n return false;\n }\n\n function hasExportBinding(analysis, exportedName, seen = new Set()) {\n if (!analysis || !exportedName) return \"unresolved\";\n const key = `${analysis.filename}:has-export:${exportedName}`;\n if (seen.has(key)) return false;\n const nextSeen = new Set(seen);\n nextSeen.add(key);\n\n if (analysis.exportBindings.has(exportedName)) {\n return true;\n }\n\n let sawUnresolvedExportAll = false;\n for (const exportAll of analysis.exportAllSources || []) {\n const resolvedSource = resolveModuleReference(analysis, exportAll);\n if (!resolvedSource) {\n sawUnresolvedExportAll = true;\n continue;\n }\n const result = hasExportBinding(\n analyzeModule(resolvedSource),\n exportedName,\n nextSeen\n );\n if (result === true) return true;\n if (result === \"unresolved\") sawUnresolvedExportAll = true;\n }\n\n return sawUnresolvedExportAll ? \"unresolved\" : false;\n }\n\n function isRuntimeCustomExport(analysis, exportedName, seen = new Set()) {\n if (!analysis || !exportedName) return false;\n const key = `${analysis.filename}:runtime-custom:${exportedName}`;\n if (seen.has(key)) return false;\n const nextSeen = new Set(seen);\n nextSeen.add(key);\n\n const exportInfo = analysis.exportBindings.get(exportedName);\n if (!exportInfo) {\n for (const exportAll of analysis.exportAllSources || []) {\n const resolvedSource = resolveModuleReference(analysis, exportAll);\n if (!resolvedSource) continue;\n if (\n isRuntimeCustomExport(\n analyzeModule(resolvedSource),\n exportedName,\n nextSeen\n )\n ) {\n return true;\n }\n }\n return false;\n }\n\n const exportSource = resolveModuleReference(analysis, exportInfo);\n if (exportSource) {\n return isRuntimeCustomExport(\n analyzeModule(exportSource),\n exportInfo.importedName,\n nextSeen\n );\n }\n\n if (localCustomHookUsesRuntimeHook(analysis, exportInfo.localName, nextSeen)) {\n return true;\n }\n\n const importInfo = analysis.importBindings.get(exportInfo.localName);\n const importSource = resolveModuleReference(analysis, importInfo);\n if (importSource && importInfo.importedName !== \"*\") {\n return isRuntimeCustomExport(\n analyzeModule(importSource),\n importInfo.importedName,\n nextSeen\n );\n }\n\n return false;\n }\n\n return function structuralHookResolver({ filename, source, importedName, runtimeCustomOnly = false }) {\n const resolved = resolveImport(filename, source);\n if (!resolved) return runtimeCustomOnly ? \"unresolved-custom-hook\" : false;\n const analysis = analyzeModule(resolved);\n if (!analysis && runtimeCustomOnly) {\n return \"unresolved-custom-hook\";\n }\n if (runtimeCustomOnly) {\n const exportStatus = hasExportBinding(analysis, importedName);\n if (exportStatus !== true) {\n return \"unresolved-custom-hook\";\n }\n return isRuntimeCustomExport(analysis, importedName)\n ? \"runtime-custom-hook\"\n : false;\n }\n const structuralInfo = getStructuralExportInfo(analysis, importedName);\n if (structuralInfo) {\n return structuralInfo;\n }\n if (isStructuralCustomExport(analysis, importedName)) {\n return \"structural-custom-hook\";\n }\n return false;\n };\n}\n\nfunction normalizePath(value) {\n return String(value || \"\").replace(/\\\\/g, \"/\");\n}\n\nfunction hashStableId(value) {\n let hash = 2166136261;\n const text = String(value);\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(36);\n}\n\nfunction createStableIdCallsiteMetadata(callPath, state, t) {\n const filename =\n state.file?.opts?.sourceFileName ||\n state.file?.opts?.filename ||\n state.filename ||\n \"\";\n const normalizedFilename = normalizePath(filename);\n const loc = callPath.node.loc?.start ?? null;\n const start = typeof callPath.node.start === \"number\"\n ? callPath.node.start\n : 0;\n const line = loc?.line ?? 0;\n const column = loc?.column ?? 0;\n const seed = `${normalizedFilename}:${line}:${column}:${start}`;\n return t.stringLiteral(`litsx-stable-${hashStableId(seed)}`);\n}\n\nexport default function transformLitsxHooks(api, options = {}) {\n const structuralHookResolver = createStructuralHookResolver(options);\n const ignoredCustomHookSources = new Set(options.ignoredCustomHookSources || []);\n const plugin = createRuntimeHooksTransform({\n pluginName: \"transform-litsx-hooks\",\n runtimeModule: RUNTIME_MODULE,\n importSources: IMPORT_SOURCES,\n preservedRuntimeImportSources: LITSX_PRESERVED_RUNTIME_IMPORT_SOURCES,\n helperNames: isLitsxRuntimeHookName,\n callMetadataByHelper: {\n useStableId: createStableIdCallsiteMetadata,\n },\n });\n\n return plugin(api, {\n ...options,\n structuralHookResolver,\n customHookResolver({ filename, source, importedName }) {\n if (ignoredCustomHookSources.has(source)) {\n return false;\n }\n const result = structuralHookResolver({\n filename,\n source,\n importedName,\n runtimeCustomOnly: true,\n });\n if (result === \"unresolved-custom-hook\") {\n return result;\n }\n return result === \"runtime-custom-hook\";\n },\n });\n}\n"],"names":["ensureTypescriptModule","createRuntimeHooksTransform"],"mappings":"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"}
package/dist/pipeline.cjs CHANGED
@@ -30,7 +30,7 @@ const NATIVE_TRANSFORM_OPTION_KEYS = [
30
30
  "__litsxCompilationSession",
31
31
  ];
32
32
 
33
- const HOOK_FEATURE_PATTERN = /\b(?:defineHook|useOnConnect|useAfterUpdate|useOnCommit|useMemoValue|useStableCallback|useEvent|useEmit|usePrevious|useReducedState|useState|useControlledState|useAsyncState|useOptimistic|useExpose|useExternalStore|useHost|useHostContent|useSlot|useTextContent|useTransition|useDeferredValue|useStyle|useRef|useCallbackRef|useStableId)\b/;
33
+ const HOOK_FEATURE_PATTERN = /\bdefineHook\b/;
34
34
  const DEFAULT_OR_NAMED_IMPORT_PATTERN = /\bimport\s+(?!type\b)([^'";]+?)\s+from\b/g;
35
35
  const NAMESPACE_IMPORT_PATTERN = /\bimport\s+(?!type\b)\*\s+as\s+([A-Za-z_$][\w$]*)\s+from\b/g;
36
36
  const REF_FEATURE_PATTERN = /\buseRef\b|\bref\s*=/;
@@ -1 +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\";\nimport transformLitsxRendererProps from \"./internal/transform-litsx-renderer-props.js\";\n\nconst NATIVE_TRANSFORM_OPTION_KEYS = [\n \"defaultDomMode\",\n \"typeResolutionMode\",\n \"inMemoryFiles\",\n \"compilerOptions\",\n \"typescriptSession\",\n \"suppressNativeClassNameWarning\",\n \"__litsxCompilationSession\",\n];\n\nconst HOOK_FEATURE_PATTERN = /\\b(?:defineHook|useOnConnect|useAfterUpdate|useOnCommit|useMemoValue|useStableCallback|useEvent|useEmit|usePrevious|useReducedState|useState|useControlledState|useAsyncState|useOptimistic|useExpose|useExternalStore|useHost|useHostContent|useSlot|useTextContent|useTransition|useDeferredValue|useStyle|useRef|useCallbackRef|useStableId)\\b/;\nconst DEFAULT_OR_NAMED_IMPORT_PATTERN = /\\bimport\\s+(?!type\\b)([^'\";]+?)\\s+from\\b/g;\nconst NAMESPACE_IMPORT_PATTERN = /\\bimport\\s+(?!type\\b)\\*\\s+as\\s+([A-Za-z_$][\\w$]*)\\s+from\\b/g;\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|static\\s+lightDom\\s*=\\s*true\\b/;\n\nfunction escapeRegExp(value) {\n return String(value).replace(/[\\\\^$.*+?()[\\]{}|]/g, \"\\\\$&\");\n}\n\nfunction hasCallToLocal(text, localName) {\n return new RegExp(`\\\\b${escapeRegExp(localName)}\\\\s*\\\\(`).test(text);\n}\n\nfunction getImportedLocalNames(importClause) {\n const locals = [];\n const namedMatch = importClause.match(/\\{([^}]*)\\}/);\n const beforeNamed = importClause.split(\"{\", 1)[0].replace(/,$/, \"\").trim();\n\n if (beforeNamed && !beforeNamed.includes(\"*\")) {\n locals.push(beforeNamed);\n }\n\n if (namedMatch) {\n for (const rawSpecifier of namedMatch[1].split(\",\")) {\n const specifier = rawSpecifier.trim();\n if (!specifier || specifier.startsWith(\"type \")) continue;\n const parts = specifier.split(/\\s+as\\s+/);\n const localName = (parts[1] || parts[0]).trim();\n if (localName) {\n locals.push(localName);\n }\n }\n }\n\n return locals.filter((name) => /^use[A-Z0-9][A-Za-z0-9_$]*$/.test(name));\n}\n\nfunction hasImportedCustomHookCall(text) {\n DEFAULT_OR_NAMED_IMPORT_PATTERN.lastIndex = 0;\n let match;\n while ((match = DEFAULT_OR_NAMED_IMPORT_PATTERN.exec(text))) {\n for (const localName of getImportedLocalNames(match[1])) {\n if (hasCallToLocal(text, localName)) {\n return true;\n }\n }\n }\n\n NAMESPACE_IMPORT_PATTERN.lastIndex = 0;\n while ((match = NAMESPACE_IMPORT_PATTERN.exec(text))) {\n const namespaceName = match[1];\n if (\n new RegExp(`\\\\b${escapeRegExp(namespaceName)}\\\\s*\\\\.\\\\s*use[A-Z0-9][A-Za-z0-9_$]*\\\\s*\\\\(`)\n .test(text)\n ) {\n return true;\n }\n }\n\n return false;\n}\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:\n HOOK_FEATURE_PATTERN.test(text) ||\n hasImportedCustomHookCall(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 [transformLitsxRendererProps, options.transformLitsxRendererProps || {}],\n [transformLitsxComponents, normalizeTransformLitsxOptions(options)],\n ];\n\n if (shouldIncludeFeaturePlugin(sourceFeatures, \"hooks\")) {\n plugins.push([\n transformLitsxHooks,\n {\n ...normalizeTransformLitsxOptions(options),\n ...(options.transformLitsxHooks || {}),\n },\n ]);\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":["transformLitsxRendererProps","transformLitsxComponents","transformLitsxHooks","transformLitsxDomRefs"],"mappings":"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"}
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\";\nimport transformLitsxRendererProps from \"./internal/transform-litsx-renderer-props.js\";\n\nconst NATIVE_TRANSFORM_OPTION_KEYS = [\n \"defaultDomMode\",\n \"typeResolutionMode\",\n \"inMemoryFiles\",\n \"compilerOptions\",\n \"typescriptSession\",\n \"suppressNativeClassNameWarning\",\n \"__litsxCompilationSession\",\n];\n\nconst HOOK_FEATURE_PATTERN = /\\bdefineHook\\b/;\nconst DEFAULT_OR_NAMED_IMPORT_PATTERN = /\\bimport\\s+(?!type\\b)([^'\";]+?)\\s+from\\b/g;\nconst NAMESPACE_IMPORT_PATTERN = /\\bimport\\s+(?!type\\b)\\*\\s+as\\s+([A-Za-z_$][\\w$]*)\\s+from\\b/g;\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|static\\s+lightDom\\s*=\\s*true\\b/;\n\nfunction escapeRegExp(value) {\n return String(value).replace(/[\\\\^$.*+?()[\\]{}|]/g, \"\\\\$&\");\n}\n\nfunction hasCallToLocal(text, localName) {\n return new RegExp(`\\\\b${escapeRegExp(localName)}\\\\s*\\\\(`).test(text);\n}\n\nfunction getImportedLocalNames(importClause) {\n const locals = [];\n const namedMatch = importClause.match(/\\{([^}]*)\\}/);\n const beforeNamed = importClause.split(\"{\", 1)[0].replace(/,$/, \"\").trim();\n\n if (beforeNamed && !beforeNamed.includes(\"*\")) {\n locals.push(beforeNamed);\n }\n\n if (namedMatch) {\n for (const rawSpecifier of namedMatch[1].split(\",\")) {\n const specifier = rawSpecifier.trim();\n if (!specifier || specifier.startsWith(\"type \")) continue;\n const parts = specifier.split(/\\s+as\\s+/);\n const localName = (parts[1] || parts[0]).trim();\n if (localName) {\n locals.push(localName);\n }\n }\n }\n\n return locals.filter((name) => /^use[A-Z0-9][A-Za-z0-9_$]*$/.test(name));\n}\n\nfunction hasImportedCustomHookCall(text) {\n DEFAULT_OR_NAMED_IMPORT_PATTERN.lastIndex = 0;\n let match;\n while ((match = DEFAULT_OR_NAMED_IMPORT_PATTERN.exec(text))) {\n for (const localName of getImportedLocalNames(match[1])) {\n if (hasCallToLocal(text, localName)) {\n return true;\n }\n }\n }\n\n NAMESPACE_IMPORT_PATTERN.lastIndex = 0;\n while ((match = NAMESPACE_IMPORT_PATTERN.exec(text))) {\n const namespaceName = match[1];\n if (\n new RegExp(`\\\\b${escapeRegExp(namespaceName)}\\\\s*\\\\.\\\\s*use[A-Z0-9][A-Za-z0-9_$]*\\\\s*\\\\(`)\n .test(text)\n ) {\n return true;\n }\n }\n\n return false;\n}\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:\n HOOK_FEATURE_PATTERN.test(text) ||\n hasImportedCustomHookCall(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 [transformLitsxRendererProps, options.transformLitsxRendererProps || {}],\n [transformLitsxComponents, normalizeTransformLitsxOptions(options)],\n ];\n\n if (shouldIncludeFeaturePlugin(sourceFeatures, \"hooks\")) {\n plugins.push([\n transformLitsxHooks,\n {\n ...normalizeTransformLitsxOptions(options),\n ...(options.transformLitsxHooks || {}),\n },\n ]);\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":["transformLitsxRendererProps","transformLitsxComponents","transformLitsxHooks","transformLitsxDomRefs"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@litsx/babel-preset-litsx",
3
- "version": "0.9.1",
3
+ "version": "0.10.0",
4
4
  "description": "Canonical native Babel preset for LitSX-authored source",
5
5
  "author": "LitSX Team",
6
6
  "type": "module",
@@ -82,9 +82,9 @@
82
82
  "@babel/traverse": "^7.28.5",
83
83
  "@litsx/authoring": "^0.5.0",
84
84
  "@litsx/babel-parser": "^0.2.5",
85
- "@litsx/babel-plugin-shared-hooks": "^0.4.1",
85
+ "@litsx/babel-plugin-shared-hooks": "^0.5.0",
86
86
  "@litsx/babel-plugin-transform-jsx-html-template": "^0.3.6",
87
- "@litsx/babel-plugin-transform-litsx-scoped-elements": "^0.4.4",
87
+ "@litsx/babel-plugin-transform-litsx-scoped-elements": "^0.4.5",
88
88
  "@litsx/typescript-session": "^0.2.3"
89
89
  },
90
90
  "scripts": {
@@ -0,0 +1,19 @@
1
+ export const LITSX_RUNTIME_MODULE = "@litsx/core";
2
+ export const LITSX_CONTEXT_RUNTIME_MODULE = "@litsx/core/context";
3
+
4
+ export const LITSX_RUNTIME_IMPORT_SOURCES = [
5
+ LITSX_RUNTIME_MODULE,
6
+ LITSX_CONTEXT_RUNTIME_MODULE,
7
+ ];
8
+
9
+ export const LITSX_PRESERVED_RUNTIME_IMPORT_SOURCES = [
10
+ LITSX_CONTEXT_RUNTIME_MODULE,
11
+ ];
12
+
13
+ export function isLitsxRuntimeImportSource(source) {
14
+ return LITSX_RUNTIME_IMPORT_SOURCES.includes(source);
15
+ }
16
+
17
+ export function isLitsxRuntimeHookName(name) {
18
+ return typeof name === "string" && /^use[A-Z0-9]/.test(name);
19
+ }
@@ -4,37 +4,16 @@ import path from "node:path";
4
4
  import traverse from "@babel/traverse";
5
5
  import parser from "@litsx/babel-parser";
6
6
  import { ensureTypescriptModule } from "./transform-litsx-properties.js";
7
+ import {
8
+ isLitsxRuntimeHookName,
9
+ isLitsxRuntimeImportSource,
10
+ LITSX_PRESERVED_RUNTIME_IMPORT_SOURCES,
11
+ LITSX_RUNTIME_IMPORT_SOURCES,
12
+ LITSX_RUNTIME_MODULE,
13
+ } from "./runtime-hooks.js";
7
14
 
8
- const RUNTIME_MODULE = "@litsx/core";
9
- const IMPORT_SOURCES = [RUNTIME_MODULE];
10
-
11
- const RUNTIME_HELPERS = [
12
- "useOnConnect",
13
- "useAfterUpdate",
14
- "useOnCommit",
15
- "useMemoValue",
16
- "useStableCallback",
17
- "useEvent",
18
- "useEmit",
19
- "usePrevious",
20
- "useReducedState",
21
- "useState",
22
- "useControlledState",
23
- "useAsyncState",
24
- "useOptimistic",
25
- "useExpose",
26
- "useExternalStore",
27
- "useHost",
28
- "useHostContent",
29
- "useSlot",
30
- "useTextContent",
31
- "useTransition",
32
- "useDeferredValue",
33
- "useStyle",
34
- "useRef",
35
- "useCallbackRef",
36
- "useStableId",
37
- ];
15
+ const RUNTIME_MODULE = LITSX_RUNTIME_MODULE;
16
+ const IMPORT_SOURCES = LITSX_RUNTIME_IMPORT_SOURCES;
38
17
 
39
18
  const SOURCE_EXTENSIONS = [
40
19
  "",
@@ -80,7 +59,7 @@ function normalizeInMemoryFiles(files) {
80
59
  function createStructuralHookResolver(options = {}) {
81
60
  const inMemoryFiles = normalizeInMemoryFiles(options.inMemoryFiles);
82
61
  const compilationSession = options.__litsxCompilationSession || null;
83
- const moduleCache = compilationSession?.importedModuleAnalysisCache || new Map();
62
+ const moduleCache = compilationSession?.importedHookModuleAnalysisCache || new Map();
84
63
  const resolvedImportCache = compilationSession?.resolvedImportCache || new Map();
85
64
  const providedTypescriptSession =
86
65
  options?.typescriptSession?.projectSession || options?.typescriptSession || null;
@@ -483,17 +462,17 @@ function createStructuralHookResolver(options = {}) {
483
462
  function isNamespaceRuntimeHelperUse(analysis, objectName, propertyName) {
484
463
  const importInfo = analysis.importBindings.get(objectName);
485
464
  return (
486
- importInfo?.source === RUNTIME_MODULE &&
465
+ isLitsxRuntimeImportSource(importInfo?.source) &&
487
466
  importInfo.importedName === "*" &&
488
- RUNTIME_HELPERS.includes(propertyName)
467
+ isLitsxRuntimeHookName(propertyName)
489
468
  );
490
469
  }
491
470
 
492
471
  function isRuntimeHelperImport(analysis, localName) {
493
472
  const importInfo = analysis.importBindings.get(localName);
494
473
  return (
495
- importInfo?.source === RUNTIME_MODULE &&
496
- RUNTIME_HELPERS.includes(importInfo.importedName)
474
+ isLitsxRuntimeImportSource(importInfo?.source) &&
475
+ isLitsxRuntimeHookName(importInfo.importedName)
497
476
  );
498
477
  }
499
478
 
@@ -904,7 +883,8 @@ export default function transformLitsxHooks(api, options = {}) {
904
883
  pluginName: "transform-litsx-hooks",
905
884
  runtimeModule: RUNTIME_MODULE,
906
885
  importSources: IMPORT_SOURCES,
907
- helperNames: RUNTIME_HELPERS,
886
+ preservedRuntimeImportSources: LITSX_PRESERVED_RUNTIME_IMPORT_SOURCES,
887
+ helperNames: isLitsxRuntimeHookName,
908
888
  callMetadataByHelper: {
909
889
  useStableId: createStableIdCallsiteMetadata,
910
890
  },
package/src/pipeline.js CHANGED
@@ -15,7 +15,7 @@ const NATIVE_TRANSFORM_OPTION_KEYS = [
15
15
  "__litsxCompilationSession",
16
16
  ];
17
17
 
18
- const HOOK_FEATURE_PATTERN = /\b(?:defineHook|useOnConnect|useAfterUpdate|useOnCommit|useMemoValue|useStableCallback|useEvent|useEmit|usePrevious|useReducedState|useState|useControlledState|useAsyncState|useOptimistic|useExpose|useExternalStore|useHost|useHostContent|useSlot|useTextContent|useTransition|useDeferredValue|useStyle|useRef|useCallbackRef|useStableId)\b/;
18
+ const HOOK_FEATURE_PATTERN = /\bdefineHook\b/;
19
19
  const DEFAULT_OR_NAMED_IMPORT_PATTERN = /\bimport\s+(?!type\b)([^'";]+?)\s+from\b/g;
20
20
  const NAMESPACE_IMPORT_PATTERN = /\bimport\s+(?!type\b)\*\s+as\s+([A-Za-z_$][\w$]*)\s+from\b/g;
21
21
  const REF_FEATURE_PATTERN = /\buseRef\b|\bref\s*=/;