{"version":3,"file":"authored-input-wRQ_4wkb.cjs","sources":["../../src/module-analysis.js","../../src/warnings.js","../../src/filename-syntax.js","../../src/authored-input.js"],"sourcesContent":["import * as babelTypes from \"@babel/types\";\nimport { componentNameToTagName } from \"@litsx/authoring\";\n\nfunction isPascalCaseIdentifier(value) {\n  return typeof value === \"string\" && /^[A-Z][A-Za-z0-9_$]*$/.test(value);\n}\n\nfunction isObjectExpressionLike(node) {\n  return node?.type === \"ObjectExpression\";\n}\n\nfunction classifyDeclarationNode(node) {\n  if (!node) {\n    return \"unknown\";\n  }\n\n  switch (node.type) {\n    case \"FunctionDeclaration\":\n      return \"function\";\n    case \"ClassDeclaration\":\n      return \"class\";\n    case \"ObjectExpression\":\n      return \"const-object\";\n    case \"FunctionExpression\":\n      return \"const-function\";\n    case \"ArrowFunctionExpression\":\n      return \"const-arrow-function\";\n    default:\n      return \"variable\";\n  }\n}\n\nfunction classifyExportNode(node) {\n  if (!node) {\n    return \"unknown\";\n  }\n\n  switch (node.type) {\n    case \"ObjectExpression\":\n      return \"default-object\";\n    case \"FunctionDeclaration\":\n      return \"function\";\n    case \"ClassDeclaration\":\n      return \"class\";\n    case \"VariableDeclaration\": {\n      const declarator = node.declarations?.[0];\n      return isObjectExpressionLike(declarator?.init) ? \"named-object\" : \"variable\";\n    }\n    default:\n      return \"unknown\";\n  }\n}\n\nfunction classifyImportKind(node) {\n  const declarationKind = node.importKind === \"type\" ? \"type\" : \"value\";\n  let hasValue = declarationKind === \"value\";\n  let hasType = declarationKind === \"type\";\n\n  for (const specifier of node.specifiers || []) {\n    const kind = specifier.importKind === \"type\" ? \"type\" : declarationKind;\n    hasValue ||= kind === \"value\";\n    hasType ||= kind === \"type\";\n  }\n\n  if (hasValue && hasType) {\n    return \"mixed\";\n  }\n\n  return hasType ? \"type\" : \"value\";\n}\n\nfunction isLikelyAuthoredModuleSource(source) {\n  return typeof source === \"string\" && (\n    source.startsWith(\"./\") ||\n    source.startsWith(\"../\") ||\n    source.startsWith(\"/\")\n  ) && /\\.(?:tsx|jsx|ts|mts|cts|mjs|cjs|js)$/.test(source);\n}\n\nfunction collectTopLevelDeclarations(program, declarations, declarationsByLocalName) {\n  for (const statement of program.body || []) {\n    const node = statement.type === \"ExportNamedDeclaration\"\n      ? statement.declaration\n      : statement.type === \"ExportDefaultDeclaration\"\n        ? statement.declaration\n        : statement;\n\n    if (!node) {\n      continue;\n    }\n\n    if (node.type === \"FunctionDeclaration\" || node.type === \"ClassDeclaration\") {\n      const localName = node.id?.name;\n      if (!localName) {\n        continue;\n      }\n\n      const entry = {\n        localName,\n        kind: classifyDeclarationNode(node),\n      };\n      declarations.push(entry);\n      declarationsByLocalName.set(localName, entry);\n      continue;\n    }\n\n    if (node.type !== \"VariableDeclaration\") {\n      continue;\n    }\n\n    for (const declarator of node.declarations || []) {\n      if (declarator.id?.type !== \"Identifier\") {\n        continue;\n      }\n\n      const entry = {\n        localName: declarator.id.name,\n        kind: classifyDeclarationNode(declarator.init),\n      };\n      declarations.push(entry);\n      declarationsByLocalName.set(entry.localName, entry);\n    }\n  }\n}\n\nfunction collectImports(program, imports, importsByLocalName) {\n  for (const statement of program.body || []) {\n    if (statement.type !== \"ImportDeclaration\") {\n      continue;\n    }\n\n    const entry = {\n      source: statement.source?.value || \"\",\n      kind: classifyImportKind(statement),\n      specifiers: [],\n    };\n\n    for (const specifier of statement.specifiers || []) {\n      let importedName = \"default\";\n      if (specifier.type === \"ImportSpecifier\") {\n        importedName = specifier.imported?.type === \"Identifier\"\n          ? specifier.imported.name\n          : specifier.imported?.value;\n      } else if (specifier.type === \"ImportNamespaceSpecifier\") {\n        importedName = \"*\";\n      }\n\n      const kind = specifier.importKind === \"type\"\n        ? \"type\"\n        : statement.importKind === \"type\"\n          ? \"type\"\n          : \"value\";\n      const specifierEntry = {\n        importedName,\n        localName: specifier.local.name,\n        kind,\n      };\n\n      entry.specifiers.push(specifierEntry);\n      importsByLocalName.set(specifier.local.name, {\n        source: entry.source,\n        kind,\n      });\n    }\n\n    imports.push(entry);\n  }\n}\n\nfunction collectExports(program, exports, declarationsByLocalName) {\n  for (const statement of program.body || []) {\n    if (statement.type === \"ExportDefaultDeclaration\") {\n      const declaration = statement.declaration;\n      if (declaration?.type === \"Identifier\") {\n        const resolved = declarationsByLocalName.get(declaration.name);\n        exports.push({\n          exportName: \"default\",\n          localName: declaration.name,\n          kind: resolved?.kind === \"const-object\" ? \"default-object\" : resolved?.kind || \"unknown\",\n        });\n        continue;\n      }\n\n      exports.push({\n        exportName: \"default\",\n        localName: declaration?.id?.name ?? null,\n        kind: classifyExportNode(declaration),\n      });\n      continue;\n    }\n\n    if (statement.type !== \"ExportNamedDeclaration\") {\n      continue;\n    }\n\n    if (statement.declaration) {\n      const declaration = statement.declaration;\n\n      if (declaration.type === \"FunctionDeclaration\" || declaration.type === \"ClassDeclaration\") {\n        exports.push({\n          exportName: declaration.id?.name ?? null,\n          localName: declaration.id?.name ?? null,\n          kind: classifyExportNode(declaration),\n        });\n        continue;\n      }\n\n      if (declaration.type === \"VariableDeclaration\") {\n        for (const declarator of declaration.declarations || []) {\n          if (declarator.id?.type !== \"Identifier\") {\n            continue;\n          }\n\n          exports.push({\n            exportName: declarator.id.name,\n            localName: declarator.id.name,\n            kind: isObjectExpressionLike(declarator.init) ? \"named-object\" : \"variable\",\n          });\n        }\n      }\n\n      continue;\n    }\n\n    for (const specifier of statement.specifiers || []) {\n      const localName = specifier.local?.name ?? null;\n      exports.push({\n        exportName: specifier.exported?.name ?? specifier.exported?.value ?? localName,\n        localName,\n        kind: statement.source\n          ? \"re-export\"\n          : (localName && declarationsByLocalName.get(localName)?.kind === \"const-object\")\n            ? \"named-object\"\n            : (localName && declarationsByLocalName.get(localName)?.kind) || \"unknown\",\n      });\n    }\n  }\n}\n\nfunction visitNode(node, visitor) {\n  if (!node || typeof node !== \"object\") {\n    return;\n  }\n\n  visitor(node);\n\n  const visitorKeys = babelTypes.VISITOR_KEYS?.[node.type];\n  if (!visitorKeys) {\n    return;\n  }\n\n  for (const key of visitorKeys) {\n    const value = node[key];\n    if (Array.isArray(value)) {\n      for (const child of value) {\n        visitNode(child, visitor);\n      }\n      continue;\n    }\n\n    visitNode(value, visitor);\n  }\n}\n\nfunction collectJsxReferences(program, jsxReferences, importsByLocalName, declarationsByLocalName) {\n  const seen = new Set();\n\n  visitNode(program, (node) => {\n    if (node.type !== \"JSXOpeningElement\") {\n      return;\n    }\n\n    const nameNode = node.name;\n    if (nameNode?.type !== \"JSXIdentifier\" || !isPascalCaseIdentifier(nameNode.name)) {\n      return;\n    }\n\n    const localName = nameNode.name;\n    if (seen.has(localName)) {\n      return;\n    }\n    seen.add(localName);\n\n    const imported = importsByLocalName.get(localName);\n    let source = \"unknown\";\n    let importSource = null;\n\n    if (imported) {\n      importSource = imported.source;\n      source = isLikelyAuthoredModuleSource(imported.source)\n        ? \"imported-authored-module\"\n        : \"imported-js-module\";\n    } else if (declarationsByLocalName.has(localName)) {\n      source = \"local-declaration\";\n    }\n\n    jsxReferences.push({\n      localName,\n      tagName: componentNameToTagName(localName),\n      source,\n      importSource,\n    });\n  });\n}\n\nexport function analyzeLitsxModule(ast) {\n  const program = ast?.program ?? ast;\n  const imports = [];\n  const exports = [];\n  const declarations = [];\n  const jsxReferences = [];\n  const importsByLocalName = new Map();\n  const declarationsByLocalName = new Map();\n\n  if (!program || program.type !== \"Program\") {\n    return {\n      imports,\n      exports,\n      declarations,\n      jsxReferences,\n    };\n  }\n\n  collectImports(program, imports, importsByLocalName);\n  collectTopLevelDeclarations(program, declarations, declarationsByLocalName);\n  collectExports(program, exports, declarationsByLocalName);\n  collectJsxReferences(program, jsxReferences, importsByLocalName, declarationsByLocalName);\n\n  return {\n    imports,\n    exports,\n    declarations,\n    jsxReferences,\n  };\n}\n","function normalizeLocationNumber(value) {\n  return typeof value === \"number\" && Number.isFinite(value) ? value : null;\n}\n\nexport function normalizeLitsxWarning(warning, context = {}) {\n  const normalized = warning && typeof warning === \"object\" ? { ...warning } : {};\n\n  normalized.code =\n    (typeof normalized.code === \"string\" && normalized.code !== \"\") ||\n    (typeof normalized.code === \"number\" && Number.isFinite(normalized.code))\n      ? normalized.code\n      : null;\n  normalized.message =\n    typeof normalized.message === \"string\" && normalized.message !== \"\"\n      ? normalized.message\n      : \"LitSX emitted a warning during compilation.\";\n  normalized.filename =\n    typeof normalized.filename === \"string\" && normalized.filename !== \"\"\n      ? normalized.filename\n      : typeof context.filename === \"string\" && context.filename !== \"\"\n        ? context.filename\n        : null;\n  normalized.line = normalizeLocationNumber(normalized.line);\n  normalized.column = normalizeLocationNumber(normalized.column);\n  normalized.attributeName =\n    typeof normalized.attributeName === \"string\" && normalized.attributeName !== \"\"\n      ? normalized.attributeName\n      : null;\n  normalized.tagName =\n    typeof normalized.tagName === \"string\" && normalized.tagName !== \"\"\n      ? normalized.tagName\n      : null;\n  normalized.propName =\n    typeof normalized.propName === \"string\" && normalized.propName !== \"\"\n      ? normalized.propName\n      : null;\n\n  return normalized;\n}\n\nexport function mergeLitsxWarnings(existingWarnings = [], additionalWarnings = [], context = {}) {\n  const merged = [];\n  const seen = new Set();\n\n  for (const rawWarning of [...existingWarnings, ...additionalWarnings]) {\n    const warning = normalizeLitsxWarning(rawWarning, context);\n    const key = [\n      warning.code ?? \"\",\n      warning.attributeName ?? \"\",\n      warning.tagName ?? \"\",\n      warning.propName ?? \"\",\n      warning.line ?? \"\",\n      warning.column ?? \"\",\n      warning.message ?? \"\",\n    ].join(\":\");\n\n    if (seen.has(key)) {\n      continue;\n    }\n\n    seen.add(key);\n    merged.push(warning);\n  }\n\n  return merged;\n}\n","export function normalizeLitsxSyntaxFilename(filename) {\n  return typeof filename === \"string\"\n    ? filename.split(/[?#]/, 1)[0].toLowerCase()\n    : \"\";\n}\n\nexport function resolveLitsxRequireJsx(filename, requireJsx) {\n  if (typeof requireJsx === \"boolean\") {\n    return requireJsx;\n  }\n\n  const normalizedFilename = normalizeLitsxSyntaxFilename(filename);\n  if (/\\.(?:ts|mts|cts)$/.test(normalizedFilename)) {\n    return false;\n  }\n  if (/\\.(?:jsx|tsx|mtsx|ctsx)$/.test(normalizedFilename)) {\n    return true;\n  }\n\n  return true;\n}\n","import * as babelParser from \"@babel/parser\";\nimport {\n  collectComponentNameDiagnostics,\n  collectHookDiagnostics,\n  collectNativeClassNameWarnings,\n  collectReactMemoWarnings,\n} from \"@litsx/authoring\";\nimport { analyzeLitsxModule } from \"./module-analysis.js\";\nimport { mergeLitsxWarnings } from \"./warnings.js\";\nimport {\n  normalizeLitsxSyntaxFilename,\n  resolveLitsxRequireJsx,\n} from \"./filename-syntax.js\";\n\nfunction normalizeParserPlugins(filename, parserPlugins = []) {\n  if (Array.isArray(parserPlugins) && parserPlugins.length > 0) {\n    return parserPlugins;\n  }\n\n  if (/\\.(?:[cm]?ts|[cm]?tsx)$/.test(normalizeLitsxSyntaxFilename(filename))) {\n    return [\"typescript\"];\n  }\n\n  return [];\n}\n\nfunction normalizePluginList(plugins) {\n  return Array.isArray(plugins) ? plugins : [];\n}\n\nfunction assertNoRemovedAuthoringCalls(ast) {\n  function visit(node) {\n    if (!node || typeof node !== \"object\") return;\n\n    if (\n      node.type === \"CallExpression\" &&\n      node.callee?.type === \"Identifier\" &&\n      (\n        node.callee.name === \"staticProps\" ||\n        node.callee.name === \"staticStyles\" ||\n        node.callee.name.startsWith(\"__litsx_static_\")\n      )\n    ) {\n      throw new SyntaxError(\n        `LitSX no longer accepts ${node.callee.name}(...) in authored source. ` +\n        \"Assign metadata with Component.properties, Component.styles, or the corresponding Component field.\",\n      );\n    }\n\n    for (const value of Object.values(node)) {\n      if (Array.isArray(value)) {\n        value.forEach(visit);\n      } else if (value && typeof value === \"object\") {\n        visit(value);\n      }\n    }\n  }\n\n  visit(ast?.program ?? ast);\n}\n\nfunction assertNoAuthoringErrors(ast) {\n  const diagnostics = [\n    ...collectComponentNameDiagnostics(ast),\n    ...collectHookDiagnostics(ast),\n  ].sort((left, right) => (left.start ?? 0) - (right.start ?? 0));\n  const diagnostic = diagnostics.find((entry) => entry.severity === \"error\");\n  if (!diagnostic) return;\n\n  const error = new SyntaxError(`[${diagnostic.code}] ${diagnostic.message}`);\n  error.code = diagnostic.code;\n  if (typeof diagnostic.line === \"number\" && typeof diagnostic.column === \"number\") {\n    error.loc = { line: diagnostic.line, column: diagnostic.column };\n  }\n  throw error;\n}\n\nexport function ensureLitsxParserPlugins(filename, parserPlugins = [], { requireJsx = false } = {}) {\n  const normalized = normalizeParserPlugins(filename, parserPlugins);\n  if (!requireJsx) {\n    return normalized;\n  }\n\n  const hasJsx = normalized.some((plugin) => {\n    if (typeof plugin === \"string\") {\n      return plugin === \"jsx\";\n    }\n    return Array.isArray(plugin) && plugin[0] === \"jsx\";\n  });\n\n  return hasJsx ? normalized : [...normalized, \"jsx\"];\n}\n\nexport function prepareLitsxAuthoredInput(\n  source,\n  options = {},\n  runtime = {}\n) {\n  const runtimeImpl = {\n    parse: babelParser.parse,\n    transformFromAstSync: null,\n    ...runtime,\n  };\n  const filename = options.filename;\n  const parserPlugins = ensureLitsxParserPlugins(filename, options.parserPlugins, {\n    requireJsx: resolveLitsxRequireJsx(filename, options.requireJsx),\n  });\n  const parsedAst = runtimeImpl.parse(source, {\n    sourceType: \"module\",\n    plugins: parserPlugins,\n    sourceFileName: filename,\n  });\n  assertNoRemovedAuthoringCalls(parsedAst);\n  assertNoAuthoringErrors(parsedAst);\n  const authoredWarnings = mergeLitsxWarnings(\n    collectNativeClassNameWarnings(parsedAst).map((warning) => ({\n      ...warning,\n      code: \"LITSX_NATIVE_CLASSNAME\",\n    })),\n    collectReactMemoWarnings(parsedAst),\n    { filename }\n  );\n  const authoringPlugins = normalizePluginList(options.authoringPlugins);\n\n  let inputAst = parsedAst;\n  if (authoringPlugins.length > 0) {\n    if (typeof runtimeImpl.transformFromAstSync !== \"function\") {\n      throw new Error(\n        \"prepareLitsxAuthoredInput(...) requires runtime.transformFromAstSync when authoringPlugins are provided.\"\n      );\n    }\n\n    const authoringPass = runtimeImpl.transformFromAstSync(parsedAst, source, {\n      filename,\n      sourceFileName: filename,\n      configFile: false,\n      babelrc: false,\n      ast: true,\n      code: false,\n      sourceMaps: false,\n      plugins: authoringPlugins,\n    });\n\n    inputAst = authoringPass?.ast ?? parsedAst;\n  }\n\n  return {\n    filename,\n    inputAst,\n    authoredWarnings,\n    moduleAnalysis: analyzeLitsxModule(inputAst),\n  };\n}\n"],"names":["babelTypes","componentNameToTagName","collectComponentNameDiagnostics","collectHookDiagnostics","babelParser","collectNativeClassNameWarnings","collectReactMemoWarnings"],"mappings":"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"}