aeo.js 0.0.2 → 0.0.4

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.
Files changed (70) hide show
  1. package/README.md +132 -17
  2. package/dist/angular.d.mts +29 -0
  3. package/dist/angular.d.ts +29 -0
  4. package/dist/angular.js +1314 -0
  5. package/dist/angular.js.map +1 -0
  6. package/dist/angular.mjs +1310 -0
  7. package/dist/angular.mjs.map +1 -0
  8. package/dist/astro.d.mts +8 -2
  9. package/dist/astro.d.ts +8 -2
  10. package/dist/astro.js +400 -100
  11. package/dist/astro.js.map +1 -1
  12. package/dist/astro.mjs +400 -100
  13. package/dist/astro.mjs.map +1 -1
  14. package/dist/cli.d.mts +1 -0
  15. package/dist/cli.d.ts +1 -0
  16. package/dist/cli.js +1880 -0
  17. package/dist/cli.js.map +1 -0
  18. package/dist/cli.mjs +1878 -0
  19. package/dist/cli.mjs.map +1 -0
  20. package/dist/index.d.mts +183 -4
  21. package/dist/index.d.ts +183 -4
  22. package/dist/index.js +974 -19
  23. package/dist/index.js.map +1 -1
  24. package/dist/index.mjs +952 -20
  25. package/dist/index.mjs.map +1 -1
  26. package/dist/next.d.mts +2 -17
  27. package/dist/next.d.ts +2 -17
  28. package/dist/next.js +262 -73
  29. package/dist/next.js.map +1 -1
  30. package/dist/next.mjs +262 -73
  31. package/dist/next.mjs.map +1 -1
  32. package/dist/nuxt.d.mts +13 -0
  33. package/dist/nuxt.d.ts +13 -0
  34. package/dist/nuxt.js +1344 -0
  35. package/dist/nuxt.js.map +1 -0
  36. package/dist/nuxt.mjs +1337 -0
  37. package/dist/nuxt.mjs.map +1 -0
  38. package/dist/react.d.mts +1 -1
  39. package/dist/react.d.ts +1 -1
  40. package/dist/react.js +330 -4
  41. package/dist/react.js.map +1 -1
  42. package/dist/react.mjs +330 -4
  43. package/dist/react.mjs.map +1 -1
  44. package/dist/{types-BTY-v-7i.d.mts → types-Cn_Qbkmg.d.mts} +34 -0
  45. package/dist/{types-BTY-v-7i.d.ts → types-Cn_Qbkmg.d.ts} +34 -0
  46. package/dist/vite.d.mts +5 -0
  47. package/dist/vite.d.ts +5 -0
  48. package/dist/vite.js +1370 -0
  49. package/dist/vite.js.map +1 -0
  50. package/dist/vite.mjs +1366 -0
  51. package/dist/vite.mjs.map +1 -0
  52. package/dist/vue.d.mts +19 -0
  53. package/dist/vue.d.ts +19 -0
  54. package/dist/vue.js +1404 -0
  55. package/dist/vue.js.map +1 -0
  56. package/dist/vue.mjs +1398 -0
  57. package/dist/vue.mjs.map +1 -0
  58. package/dist/webpack.d.mts +1 -1
  59. package/dist/webpack.d.ts +1 -1
  60. package/dist/webpack.js +178 -18
  61. package/dist/webpack.js.map +1 -1
  62. package/dist/webpack.mjs +178 -18
  63. package/dist/webpack.mjs.map +1 -1
  64. package/dist/widget.d.mts +11 -1
  65. package/dist/widget.d.ts +11 -1
  66. package/dist/widget.js +330 -4
  67. package/dist/widget.js.map +1 -1
  68. package/dist/widget.mjs +330 -4
  69. package/dist/widget.mjs.map +1 -1
  70. package/package.json +48 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/robots.ts","../src/core/detect.ts","../src/core/utils.ts","../src/core/llms-txt.ts","../src/core/llms-full.ts","../src/core/raw-markdown.ts","../src/core/manifest.ts","../src/core/sitemap.ts","../src/core/ai-index.ts","../src/core/generate-wrapper.ts","../src/plugins/webpack.ts"],"names":["join","existsSync","readFileSync","readdirSync","statSync","extname","relative","mkdirSync","dirname","copyFileSync","writeFileSync","createHash","index"],"mappings":"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","file":"webpack.js","sourcesContent":["import type { ResolvedAeoConfig } from '../types';\n\nconst AI_CRAWLERS = [\n 'GPTBot',\n 'OAI-SearchBot',\n 'ChatGPT-User',\n 'ClaudeBot',\n 'Claude-Web',\n 'anthropic-ai',\n 'PerplexityBot',\n 'Google-Extended',\n 'Gemini-Deep-Research',\n 'Bingbot',\n 'FacebookBot',\n 'meta-externalagent',\n 'Amazonbot',\n 'Applebot',\n 'DeepSeekBot',\n 'Bytespider',\n 'cohere-ai',\n 'CCBot',\n 'DiffBot',\n 'YouBot',\n 'FirecrawlAgent',\n 'Crawl4AI',\n 'BraveBot',\n 'SemrushBot',\n 'AhrefsBot',\n 'MJ12bot',\n 'DotBot',\n 'DataForSeoBot',\n 'Screaming Frog SEO Spider',\n 'SEOkicks',\n 'SEMrushBot',\n 'BLEXBot',\n 'Yandex',\n 'Baiduspider',\n 'Sogou',\n 'Exabot',\n 'facebookexternalhit',\n 'LinkedInBot',\n 'WhatsApp',\n 'Slackbot',\n 'TwitterBot',\n 'TelegramBot',\n 'Discordbot',\n 'PinterestBot',\n 'TumblrBot',\n 'ViberBot',\n 'SkypeUriPreview',\n 'redditbot',\n 'Snapchat',\n 'TikTok',\n];\n\nexport function generateRobotsTxt(config: ResolvedAeoConfig): string {\n const lines: string[] = [\n '# robots.txt generated by aeo.js',\n '# Allow AI crawlers to index this site',\n '',\n '# Traditional search engines',\n 'User-agent: Googlebot',\n 'Allow: /',\n '',\n 'User-agent: Bingbot',\n 'Allow: /',\n '',\n '# AI crawlers and answer engines',\n ];\n \n for (const crawler of AI_CRAWLERS) {\n lines.push(`User-agent: ${crawler}`);\n lines.push('Allow: /');\n lines.push('');\n }\n \n lines.push('# Default for all other bots');\n lines.push('User-agent: *');\n lines.push('Allow: /');\n lines.push('');\n \n if (config.url) {\n lines.push(`Sitemap: ${config.url}/sitemap.xml`);\n }\n \n lines.push('');\n lines.push('# AEO (Answer Engine Optimization) files');\n lines.push('# These help LLMs understand your content better');\n lines.push(`# ${config.url}/llms.txt`);\n lines.push(`# ${config.url}/llms-full.txt`);\n lines.push(`# ${config.url}/docs.json`);\n lines.push(`# ${config.url}/ai-index.json`);\n \n return lines.join('\\n');\n}","import type { FrameworkType, FrameworkInfo } from '../types';\nimport { readPackageJson } from './utils';\n\nexport function detectFramework(projectRoot: string = process.cwd()): FrameworkInfo {\n const packageJson = readPackageJson(projectRoot);\n const dependencies = {\n ...packageJson.dependencies,\n ...packageJson.devDependencies,\n };\n \n if (dependencies['next']) {\n return {\n framework: 'next',\n contentDir: 'app',\n outDir: 'out',\n };\n }\n \n if (dependencies['nuxt'] || dependencies['@nuxt/kit']) {\n return {\n framework: 'nuxt',\n contentDir: 'content',\n outDir: '.output/public',\n };\n }\n \n if (dependencies['astro'] || dependencies['@astrojs/astro']) {\n return {\n framework: 'astro',\n contentDir: 'src/content',\n outDir: 'dist',\n };\n }\n \n if (dependencies['@remix-run/dev']) {\n return {\n framework: 'remix',\n contentDir: 'app',\n outDir: 'build/client',\n };\n }\n \n if (dependencies['@sveltejs/kit']) {\n return {\n framework: 'sveltekit',\n contentDir: 'src',\n outDir: 'build',\n };\n }\n \n if (dependencies['@angular/core']) {\n return {\n framework: 'angular',\n contentDir: 'src',\n outDir: 'dist',\n };\n }\n \n if (dependencies['@docusaurus/core']) {\n return {\n framework: 'docusaurus',\n contentDir: 'docs',\n outDir: 'build',\n };\n }\n \n if (dependencies['vite']) {\n return {\n framework: 'vite',\n contentDir: 'src',\n outDir: 'dist',\n };\n }\n \n return {\n framework: 'unknown',\n contentDir: 'src',\n outDir: 'dist',\n };\n}","import { readFileSync, existsSync, readdirSync, statSync } from 'fs';\nimport { join, relative, extname } from 'path';\nimport type { AeoConfig, ResolvedAeoConfig, MarkdownFile } from '../types';\nimport { detectFramework } from './detect';\nimport { minimatch } from 'minimatch';\n\nexport function resolveConfig(config: AeoConfig = {}): ResolvedAeoConfig {\n const frameworkInfo = detectFramework();\n \n return {\n title: config.title || 'My Site',\n description: config.description || '',\n url: config.url || 'https://example.com',\n contentDir: config.contentDir || frameworkInfo.contentDir,\n outDir: config.outDir || frameworkInfo.outDir,\n pages: config.pages || [],\n generators: {\n robotsTxt: config.generators?.robotsTxt !== false,\n llmsTxt: config.generators?.llmsTxt !== false,\n llmsFullTxt: config.generators?.llmsFullTxt !== false,\n rawMarkdown: config.generators?.rawMarkdown !== false,\n manifest: config.generators?.manifest !== false,\n sitemap: config.generators?.sitemap !== false,\n aiIndex: config.generators?.aiIndex !== false,\n },\n robots: {\n allow: config.robots?.allow || ['/'],\n disallow: config.robots?.disallow || [],\n crawlDelay: config.robots?.crawlDelay || 0,\n sitemap: config.robots?.sitemap || '',\n },\n widget: {\n enabled: config.widget?.enabled !== false,\n position: config.widget?.position || 'bottom-right',\n theme: {\n background: config.widget?.theme?.background || 'rgba(18, 18, 24, 0.9)',\n text: config.widget?.theme?.text || '#C0C0C5',\n accent: config.widget?.theme?.accent || '#E8E8EA',\n badge: config.widget?.theme?.badge || '#4ADE80',\n },\n humanLabel: config.widget?.humanLabel || 'Human',\n aiLabel: config.widget?.aiLabel || 'AI',\n showBadge: config.widget?.showBadge !== false,\n },\n };\n}\n\nexport function parseFrontmatter(content: string): { frontmatter: Record<string, any>; content: string } {\n const frontmatterMatch = content.match(/^---\\s*\\n([\\s\\S]*?)\\n---\\s*\\n([\\s\\S]*)/);\n \n if (frontmatterMatch) {\n const frontmatterStr = frontmatterMatch[1];\n const contentWithoutFrontmatter = frontmatterMatch[2];\n \n const frontmatter: Record<string, any> = {};\n const lines = frontmatterStr.split('\\n');\n \n for (const line of lines) {\n const [key, ...valueParts] = line.split(':');\n if (key && valueParts.length > 0) {\n const value = valueParts.join(':').trim();\n frontmatter[key.trim()] = value.replace(/^[\"']|[\"']$/g, '');\n }\n }\n \n return { frontmatter, content: contentWithoutFrontmatter };\n }\n \n return { frontmatter: {}, content };\n}\n\nexport function bumpHeadings(content: string, levels: number = 1): string {\n return content.replace(/^(#{1,6})\\s/gm, (match, hashes) => {\n const newLevel = Math.min(hashes.length + levels, 6);\n return '#'.repeat(newLevel) + ' ';\n });\n}\n\nexport function extractTitle(content: string): string {\n const h1Match = content.match(/^#\\s+(.+)$/m);\n if (h1Match) return h1Match[1];\n \n const h2Match = content.match(/^##\\s+(.+)$/m);\n if (h2Match) return h2Match[1];\n \n const firstLine = content.split('\\n')[0];\n return firstLine.slice(0, 100);\n}\n\nexport function readPackageJson(projectRoot: string = process.cwd()): Record<string, any> {\n const packageJsonPath = join(projectRoot, 'package.json');\n \n if (!existsSync(packageJsonPath)) {\n return {};\n }\n \n try {\n const content = readFileSync(packageJsonPath, 'utf-8');\n return JSON.parse(content);\n } catch {\n return {};\n }\n}\n\nexport function getAllMarkdownFiles(\n projectRoot: string,\n include: string[] = ['**/*.md'],\n exclude: string[] = ['**/node_modules/**']\n): string[] {\n const files: string[] = [];\n \n function scanDirectory(dir: string): void {\n try {\n const entries = readdirSync(dir);\n \n for (const entry of entries) {\n const fullPath = join(dir, entry);\n const relativePath = relative(projectRoot, fullPath);\n \n // Check if path should be excluded\n const shouldExclude = exclude.some(pattern => \n minimatch(relativePath, pattern) || minimatch(fullPath, pattern)\n );\n \n if (shouldExclude) {\n continue;\n }\n \n const stat = statSync(fullPath);\n \n if (stat.isDirectory()) {\n // Skip hidden directories\n if (!entry.startsWith('.')) {\n scanDirectory(fullPath);\n }\n } else if (stat.isFile()) {\n // Check if file matches include patterns\n const shouldInclude = include.some(pattern =>\n minimatch(relativePath, pattern) || minimatch(fullPath, pattern)\n );\n \n if (shouldInclude) {\n files.push(fullPath);\n }\n }\n }\n } catch (error) {\n // Silently skip directories we can't read\n }\n }\n \n scanDirectory(projectRoot);\n return files;\n}","import { readdirSync, readFileSync, statSync } from 'fs';\nimport { join, relative, extname } from 'path';\nimport type { ResolvedAeoConfig, MarkdownFile } from '../types';\nimport { parseFrontmatter, extractTitle } from './utils';\n\nfunction collectMarkdownFiles(dir: string, base: string = dir): MarkdownFile[] {\n const files: MarkdownFile[] = [];\n \n try {\n const entries = readdirSync(dir);\n \n for (const entry of entries) {\n const fullPath = join(dir, entry);\n const stat = statSync(fullPath);\n \n if (stat.isDirectory() && !entry.startsWith('.') && entry !== 'node_modules') {\n files.push(...collectMarkdownFiles(fullPath, base));\n } else if (stat.isFile() && (extname(entry) === '.md' || extname(entry) === '.mdx')) {\n const content = readFileSync(fullPath, 'utf-8');\n const { frontmatter, content: mainContent } = parseFrontmatter(content);\n const relativePath = relative(base, fullPath);\n \n files.push({\n path: relativePath,\n content: mainContent,\n title: frontmatter.title || extractTitle(mainContent),\n description: frontmatter.description,\n frontmatter,\n });\n }\n }\n } catch (error) {\n console.warn(`Warning: Could not read directory ${dir}:`, error);\n }\n \n return files;\n}\n\nexport function generateLlmsTxt(config: ResolvedAeoConfig): string {\n const lines: string[] = [\n `# ${config.title}`,\n '',\n ];\n \n if (config.description) {\n lines.push(`> ${config.description}`);\n lines.push('');\n }\n \n lines.push('## About');\n lines.push('');\n lines.push('This file provides a structured overview of the documentation and content available on this site,');\n lines.push('optimized for consumption by Large Language Models (LLMs) and AI assistants.');\n lines.push('');\n \n // List discovered pages (from framework plugin)\n if (config.pages && config.pages.length > 0) {\n lines.push('## Pages');\n lines.push('');\n\n for (const page of config.pages) {\n const url = `${config.url}${page.pathname === '/' ? '' : page.pathname}`;\n const title = page.title || page.pathname;\n lines.push(`- [${title}](${url})`);\n if (page.description) {\n lines.push(` ${page.description}`);\n }\n }\n lines.push('');\n }\n\n // List markdown content files\n const markdownFiles = collectMarkdownFiles(config.contentDir);\n\n if (markdownFiles.length > 0) {\n lines.push('## Documentation');\n lines.push('');\n\n const grouped: Record<string, MarkdownFile[]> = {};\n\n for (const file of markdownFiles) {\n const dir = file.path.split('/')[0] || 'root';\n if (!grouped[dir]) grouped[dir] = [];\n grouped[dir].push(file);\n }\n\n for (const [dir, files] of Object.entries(grouped)) {\n lines.push(`### ${dir === 'root' ? 'Main Documentation' : dir}`);\n lines.push('');\n\n for (const file of files) {\n const url = `${config.url}/${file.path.replace(/\\.mdx?$/, '')}`;\n lines.push(`- [${file.title}](${url})`);\n if (file.description) {\n lines.push(` ${file.description}`);\n }\n }\n lines.push('');\n }\n }\n \n lines.push('## Quick Links');\n lines.push('');\n lines.push(`- Full Documentation: ${config.url}/llms-full.txt`);\n lines.push(`- Documentation Manifest: ${config.url}/docs.json`);\n lines.push(`- AI-Optimized Index: ${config.url}/ai-index.json`);\n lines.push(`- Sitemap: ${config.url}/sitemap.xml`);\n lines.push('');\n \n lines.push('## For LLMs');\n lines.push('');\n lines.push('To get the complete documentation in a single file, request:');\n lines.push(`${config.url}/llms-full.txt`);\n lines.push('');\n lines.push('For structured access to individual pages with metadata:');\n lines.push(`${config.url}/docs.json`);\n lines.push('');\n lines.push('For RAG (Retrieval Augmented Generation) systems:');\n lines.push(`${config.url}/ai-index.json`);\n lines.push('');\n \n lines.push('---');\n lines.push('Generated by aeo.js - Answer Engine Optimization for the modern web');\n lines.push('Learn more at https://aeojs.org');\n \n return lines.join('\\n');\n}","import { readdirSync, readFileSync, statSync } from 'fs';\nimport { join, relative, extname } from 'path';\nimport type { ResolvedAeoConfig } from '../types';\nimport { parseFrontmatter, bumpHeadings } from './utils';\n\nfunction collectAndConcatenateMarkdown(dir: string, base: string = dir): string[] {\n const sections: string[] = [];\n \n try {\n const entries = readdirSync(dir).sort();\n \n for (const entry of entries) {\n const fullPath = join(dir, entry);\n const stat = statSync(fullPath);\n \n if (stat.isDirectory() && !entry.startsWith('.') && entry !== 'node_modules') {\n const subSections = collectAndConcatenateMarkdown(fullPath, base);\n if (subSections.length > 0) {\n sections.push(...subSections);\n }\n } else if (stat.isFile() && (extname(entry) === '.md' || extname(entry) === '.mdx')) {\n const content = readFileSync(fullPath, 'utf-8');\n const { frontmatter, content: mainContent } = parseFrontmatter(content);\n const relativePath = relative(base, fullPath);\n \n const sectionLines: string[] = [\n '---',\n '',\n `# ${frontmatter.title || relativePath}`,\n '',\n `Source: ${relativePath}`,\n '',\n ];\n \n if (frontmatter.description) {\n sectionLines.push(`> ${frontmatter.description}`);\n sectionLines.push('');\n }\n \n const bumpedContent = bumpHeadings(mainContent, 1);\n sectionLines.push(bumpedContent);\n sectionLines.push('');\n \n sections.push(sectionLines.join('\\n'));\n }\n }\n } catch (error) {\n console.warn(`Warning: Could not read directory ${dir}:`, error);\n }\n \n return sections;\n}\n\nexport function generateLlmsFull(config: ResolvedAeoConfig): string {\n return generateLlmsFullTxt(config);\n}\n\nexport function generateLlmsFullTxt(config: ResolvedAeoConfig): string {\n const lines: string[] = [\n `# ${config.title} - Complete Documentation`,\n '',\n `This file contains all documentation concatenated into a single file for easy consumption by LLMs.`,\n '',\n ];\n \n if (config.description) {\n lines.push(`> ${config.description}`);\n lines.push('');\n }\n \n lines.push('## Table of Contents');\n lines.push('');\n lines.push('This document includes all content from this project.');\n lines.push('Each section is separated by a horizontal rule (---) for easy parsing.');\n lines.push('');\n\n let hasContent = false;\n\n // Include discovered pages (from framework plugin)\n if (config.pages && config.pages.length > 0) {\n for (const page of config.pages) {\n const url = `${config.url}${page.pathname === '/' ? '' : page.pathname}`;\n const title = page.title || page.pathname;\n const sectionLines: string[] = [\n '---',\n '',\n `# ${title}`,\n '',\n `URL: ${url}`,\n '',\n ];\n if (page.description) {\n sectionLines.push(`> ${page.description}`);\n sectionLines.push('');\n }\n if (page.content) {\n sectionLines.push(page.content);\n sectionLines.push('');\n }\n lines.push(sectionLines.join('\\n'));\n hasContent = true;\n }\n }\n\n // Include markdown content files\n const sections = collectAndConcatenateMarkdown(config.contentDir);\n\n if (sections.length > 0) {\n lines.push(...sections);\n hasContent = true;\n }\n\n if (!hasContent) {\n // Always include site overview so LLMs have basic context\n lines.push('---');\n lines.push('');\n lines.push(`# ${config.title}`);\n lines.push('');\n lines.push(`URL: ${config.url}`);\n lines.push('');\n if (config.description) {\n lines.push(config.description);\n lines.push('');\n }\n }\n \n lines.push('---');\n lines.push('');\n lines.push('## About This Document');\n lines.push('');\n lines.push('This concatenated documentation file is generated automatically by aeo.js');\n lines.push('to make it easier for AI systems to understand the complete context of this project.');\n lines.push('');\n lines.push(`For a structured index, see: ${config.url}/llms.txt`);\n lines.push(`For individual files, see: ${config.url}/docs.json`);\n lines.push('');\n lines.push('Generated by aeo.js - https://aeojs.org');\n \n return lines.join('\\n');\n}","import { readdirSync, statSync, mkdirSync, writeFileSync, copyFileSync } from 'fs';\nimport { join, relative, extname, dirname } from 'path';\nimport type { ResolvedAeoConfig } from '../types';\n\nexport interface CopiedFile {\n source: string;\n destination: string;\n}\n\nexport interface GeneratedMarkdownFile {\n pathname: string;\n destination: string;\n}\n\nfunction ensureDir(path: string): void {\n mkdirSync(path, { recursive: true });\n}\n\nexport function copyRawMarkdown(config: ResolvedAeoConfig): CopiedFile[] {\n return copyMarkdownFiles(config);\n}\n\nexport function copyMarkdownFiles(config: ResolvedAeoConfig): CopiedFile[] {\n const copiedFiles: CopiedFile[] = [];\n \n function copyRecursive(dir: string, base: string = config.contentDir): void {\n try {\n const entries = readdirSync(dir);\n \n for (const entry of entries) {\n const fullPath = join(dir, entry);\n const stat = statSync(fullPath);\n \n if (stat.isDirectory() && !entry.startsWith('.') && entry !== 'node_modules') {\n copyRecursive(fullPath, base);\n } else if (stat.isFile() && extname(entry) === '.md') {\n const relativePath = relative(base, fullPath);\n const destPath = join(config.outDir, relativePath);\n \n ensureDir(dirname(destPath));\n \n try {\n copyFileSync(fullPath, destPath);\n copiedFiles.push({\n source: fullPath,\n destination: destPath,\n });\n } catch (error) {\n console.warn(`Warning: Could not copy ${fullPath}:`, error);\n }\n }\n }\n } catch (error) {\n console.warn(`Warning: Could not read directory ${dir}:`, error);\n }\n }\n \n copyRecursive(config.contentDir);\n return copiedFiles;\n}\n\nexport function generatePageMarkdownFiles(config: ResolvedAeoConfig): GeneratedMarkdownFile[] {\n const generated: GeneratedMarkdownFile[] = [];\n const pages = config.pages || [];\n\n for (const page of pages) {\n // Use site title as fallback for pages without a title\n const pageTitle = page.title || (page.pathname === '/' ? config.title : undefined);\n if (!page.content && !pageTitle) continue;\n\n let filename: string;\n if (page.pathname === '/') {\n filename = 'index.md';\n } else {\n const clean = page.pathname.replace(/^\\//, '').replace(/\\/$/, '');\n filename = clean.includes('/') ? `${clean}.md` : `${clean}.md`;\n }\n\n const destPath = join(config.outDir, filename);\n\n const pageUrl = page.pathname === '/'\n ? config.url\n : `${config.url.replace(/\\/$/, '')}${page.pathname}`;\n\n const lines: string[] = [];\n\n // YAML frontmatter\n lines.push('---');\n if (pageTitle) lines.push(`title: \"${pageTitle}\"`);\n if (page.description) lines.push(`description: \"${page.description}\"`);\n lines.push(`url: ${pageUrl}`);\n lines.push(`source: ${pageUrl}`);\n lines.push(`generated_by: aeo.js`);\n lines.push('---', '');\n\n if (pageTitle) {\n lines.push(`# ${pageTitle}`, '');\n }\n\n if (page.description) {\n lines.push(`${page.description}`, '');\n }\n\n if (page.content) {\n lines.push(page.content);\n }\n\n const content = lines.join('\\n');\n\n ensureDir(dirname(destPath));\n try {\n writeFileSync(destPath, content, 'utf-8');\n generated.push({ pathname: page.pathname, destination: destPath });\n } catch {\n // skip unwritable files\n }\n }\n\n return generated;\n}","import { readdirSync, readFileSync, statSync } from 'fs';\nimport { join, relative, extname } from 'path';\nimport type { ResolvedAeoConfig, ManifestEntry } from '../types';\nimport { parseFrontmatter, extractTitle } from './utils';\n\nfunction collectManifestEntries(dir: string, config: ResolvedAeoConfig, base: string = dir): ManifestEntry[] {\n const entries: ManifestEntry[] = [];\n \n try {\n const files = readdirSync(dir);\n \n for (const file of files) {\n const fullPath = join(dir, file);\n const stat = statSync(fullPath);\n \n if (stat.isDirectory() && !file.startsWith('.') && file !== 'node_modules') {\n entries.push(...collectManifestEntries(fullPath, config, base));\n } else if (stat.isFile() && (extname(file) === '.md' || extname(file) === '.mdx')) {\n const content = readFileSync(fullPath, 'utf-8');\n const { frontmatter, content: mainContent } = parseFrontmatter(content);\n const relativePath = relative(base, fullPath);\n const urlPath = relativePath.replace(/\\.mdx?$/, '');\n \n entries.push({\n url: `${config.url}/${urlPath}`,\n title: frontmatter.title || extractTitle(mainContent),\n description: frontmatter.description,\n lastModified: stat.mtime.toISOString(),\n });\n }\n }\n } catch (error) {\n console.warn(`Warning: Could not read directory ${dir}:`, error);\n }\n \n return entries;\n}\n\nexport function generateManifest(config: ResolvedAeoConfig): string {\n const entries: ManifestEntry[] = [];\n\n // Add discovered pages from framework plugin\n if (config.pages && config.pages.length > 0) {\n for (const page of config.pages) {\n entries.push({\n url: `${config.url}${page.pathname === '/' ? '' : page.pathname}`,\n title: page.title || page.pathname,\n description: page.description,\n });\n }\n }\n\n // Add markdown content files\n entries.push(...collectManifestEntries(config.contentDir, config));\n \n const manifest = {\n version: '1.0',\n generated: new Date().toISOString(),\n site: {\n title: config.title,\n description: config.description,\n url: config.url,\n },\n documents: entries.sort((a, b) => a.url.localeCompare(b.url)),\n metadata: {\n totalDocuments: entries.length,\n generator: 'aeo.js',\n generatorUrl: 'https://aeojs.org',\n },\n };\n \n return JSON.stringify(manifest, null, 2);\n}","import { readdirSync, statSync } from 'fs';\nimport { join, relative, extname } from 'path';\nimport type { ResolvedAeoConfig } from '../types';\n\nfunction collectUrls(dir: string, config: ResolvedAeoConfig, base: string = dir): string[] {\n const urls: string[] = [];\n \n try {\n const entries = readdirSync(dir);\n \n for (const entry of entries) {\n const fullPath = join(dir, entry);\n const stat = statSync(fullPath);\n \n if (stat.isDirectory() && !entry.startsWith('.') && entry !== 'node_modules') {\n urls.push(...collectUrls(fullPath, config, base));\n } else if (stat.isFile() && (extname(entry) === '.md' || extname(entry) === '.mdx' || extname(entry) === '.html')) {\n const relativePath = relative(base, fullPath);\n const urlPath = relativePath.replace(/\\.(md|mdx|html)$/, '');\n urls.push(`${config.url}/${urlPath}`);\n }\n }\n } catch (error) {\n console.warn(`Warning: Could not read directory ${dir}:`, error);\n }\n \n return urls;\n}\n\nfunction escapeXml(str: string): string {\n return str\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&apos;');\n}\n\nexport function generateSitemap(config: ResolvedAeoConfig): string {\n const urls: string[] = [];\n\n // Add discovered pages from framework plugin\n if (config.pages && config.pages.length > 0) {\n for (const page of config.pages) {\n urls.push(`${config.url}${page.pathname === '/' ? '' : page.pathname}`);\n }\n }\n\n // Add markdown/html files from content dir\n if (config.contentDir) {\n urls.push(...collectUrls(config.contentDir, config));\n }\n\n const lines: string[] = [\n '<?xml version=\"1.0\" encoding=\"UTF-8\"?>',\n '<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">',\n ];\n\n // Always include the site root\n urls.push(config.url);\n\n const uniqueUrls = [...new Set(urls)].sort();\n \n for (const url of uniqueUrls) {\n lines.push(' <url>');\n lines.push(` <loc>${escapeXml(url)}</loc>`);\n lines.push(` <lastmod>${new Date().toISOString().split('T')[0]}</lastmod>`);\n lines.push(' <changefreq>weekly</changefreq>');\n lines.push(' <priority>0.8</priority>');\n lines.push(' </url>');\n }\n \n lines.push('</urlset>');\n \n return lines.join('\\n');\n}","import { readdirSync, readFileSync, statSync } from 'fs';\nimport { join, relative, extname } from 'path';\nimport { createHash } from 'crypto';\nimport type { ResolvedAeoConfig, AIIndexEntry } from '../types';\nimport { parseFrontmatter, extractTitle } from './utils';\n\nfunction extractKeywords(content: string): string[] {\n const words = content\n .toLowerCase()\n .replace(/[^a-z0-9\\s]/g, ' ')\n .split(/\\s+/)\n .filter(word => word.length > 3);\n \n const wordCount: Record<string, number> = {};\n \n for (const word of words) {\n wordCount[word] = (wordCount[word] || 0) + 1;\n }\n \n return Object.entries(wordCount)\n .sort((a, b) => b[1] - a[1])\n .slice(0, 10)\n .map(([word]) => word);\n}\n\nfunction chunkContent(content: string, maxLength: number = 2000): string[] {\n const chunks: string[] = [];\n const paragraphs = content.split('\\n\\n');\n \n let currentChunk = '';\n \n for (const paragraph of paragraphs) {\n if (currentChunk.length + paragraph.length > maxLength && currentChunk.length > 0) {\n chunks.push(currentChunk.trim());\n currentChunk = '';\n }\n currentChunk += paragraph + '\\n\\n';\n }\n \n if (currentChunk.trim()) {\n chunks.push(currentChunk.trim());\n }\n \n return chunks;\n}\n\nfunction collectAIIndexEntries(dir: string, config: ResolvedAeoConfig, base: string = dir): AIIndexEntry[] {\n const entries: AIIndexEntry[] = [];\n \n try {\n const files = readdirSync(dir);\n \n for (const file of files) {\n const fullPath = join(dir, file);\n const stat = statSync(fullPath);\n \n if (stat.isDirectory() && !file.startsWith('.') && file !== 'node_modules') {\n entries.push(...collectAIIndexEntries(fullPath, config, base));\n } else if (stat.isFile() && (extname(file) === '.md' || extname(file) === '.mdx')) {\n const content = readFileSync(fullPath, 'utf-8');\n const { frontmatter, content: mainContent } = parseFrontmatter(content);\n const relativePath = relative(base, fullPath);\n const urlPath = relativePath.replace(/\\.mdx?$/, '');\n const url = `${config.url}/${urlPath}`;\n \n const chunks = chunkContent(mainContent);\n const title = frontmatter.title || extractTitle(mainContent);\n const keywords = extractKeywords(mainContent);\n \n chunks.forEach((chunk, index) => {\n const id = createHash('sha256')\n .update(`${url}-${index}`)\n .digest('hex')\n .slice(0, 16);\n \n entries.push({\n id,\n url,\n title: chunks.length > 1 ? `${title} (Part ${index + 1})` : title,\n content: chunk,\n description: frontmatter.description,\n keywords,\n metadata: {\n ...frontmatter,\n chunkIndex: index,\n totalChunks: chunks.length,\n sourcePath: relativePath,\n },\n });\n });\n }\n }\n } catch (error) {\n console.warn(`Warning: Could not read directory ${dir}:`, error);\n }\n \n return entries;\n}\n\nexport function generateAiIndex(config: ResolvedAeoConfig): string {\n return generateAIIndex(config);\n}\n\nexport function generateAIIndex(config: ResolvedAeoConfig): string {\n const entries: AIIndexEntry[] = [];\n\n // Add discovered pages from framework plugin\n if (config.pages && config.pages.length > 0) {\n for (const page of config.pages) {\n const url = `${config.url}${page.pathname === '/' ? '' : page.pathname}`;\n const title = page.title || page.pathname;\n const content = page.content || '';\n\n if (content) {\n const chunks = chunkContent(content);\n const keywords = extractKeywords(content);\n\n chunks.forEach((chunk, index) => {\n const id = createHash('sha256')\n .update(`${url}-${index}`)\n .digest('hex')\n .slice(0, 16);\n\n entries.push({\n id,\n url,\n title: chunks.length > 1 ? `${title} (Part ${index + 1})` : title,\n content: chunk,\n description: page.description,\n keywords,\n metadata: {\n chunkIndex: index,\n totalChunks: chunks.length,\n sourcePath: page.pathname,\n },\n });\n });\n } else {\n const id = createHash('sha256')\n .update(url)\n .digest('hex')\n .slice(0, 16);\n\n entries.push({\n id,\n url,\n title,\n content: page.description || title,\n description: page.description,\n keywords: [],\n });\n }\n }\n }\n\n // Add markdown content files\n entries.push(...collectAIIndexEntries(config.contentDir, config));\n \n const index = {\n version: '1.0',\n generated: new Date().toISOString(),\n site: {\n title: config.title,\n description: config.description,\n url: config.url,\n },\n entries: entries.sort((a, b) => a.id.localeCompare(b.id)),\n metadata: {\n totalEntries: entries.length,\n generator: 'aeo.js',\n generatorUrl: 'https://aeojs.org',\n embedding: {\n recommended: 'text-embedding-ada-002',\n dimensions: 1536,\n },\n },\n };\n \n return JSON.stringify(index, null, 2);\n}","import { generateRobotsTxt as genRobots } from './robots';\nimport { generateLlmsTxt as genLlms } from './llms-txt';\nimport { generateLlmsFullTxt as genLlmsFull } from './llms-full';\nimport { copyMarkdownFiles, generatePageMarkdownFiles } from './raw-markdown';\nimport { generateManifest as genManifest } from './manifest';\nimport { generateSitemap as genSitemap } from './sitemap';\nimport { generateAIIndex as genAIIndex } from './ai-index';\nimport { resolveConfig } from './utils';\nimport { writeFileSync, mkdirSync, existsSync } from 'fs';\nimport { join } from 'path';\nimport type { AeoConfig, ResolvedAeoConfig } from '../types';\n\nexport interface GenerateResult {\n files: string[];\n errors: string[];\n}\n\nexport async function generateAEOFiles(\n configOrRoot?: ResolvedAeoConfig | AeoConfig | string,\n maybeConfig?: Partial<AeoConfig>\n): Promise<GenerateResult> {\n let config: ResolvedAeoConfig;\n\n if (typeof configOrRoot === 'string') {\n config = resolveConfig({ ...maybeConfig, outDir: maybeConfig?.outDir || configOrRoot });\n } else if (\n configOrRoot &&\n typeof configOrRoot === 'object' &&\n 'generators' in configOrRoot &&\n typeof (configOrRoot as ResolvedAeoConfig).generators?.robotsTxt === 'boolean'\n ) {\n config = configOrRoot as ResolvedAeoConfig;\n } else {\n config = resolveConfig(configOrRoot as AeoConfig | undefined);\n }\n\n const outDir = config.outDir;\n const files: string[] = [];\n const errors: string[] = [];\n\n if (!existsSync(outDir)) {\n mkdirSync(outDir, { recursive: true });\n }\n\n if (config.generators.robotsTxt) {\n try {\n const content = genRobots(config);\n writeFileSync(join(outDir, 'robots.txt'), content, 'utf-8');\n files.push('robots.txt');\n } catch (e: any) {\n errors.push(`robots.txt: ${e.message}`);\n }\n }\n\n if (config.generators.llmsTxt) {\n try {\n const content = genLlms(config);\n writeFileSync(join(outDir, 'llms.txt'), '\\uFEFF' + content, 'utf-8');\n files.push('llms.txt');\n } catch (e: any) {\n errors.push(`llms.txt: ${e.message}`);\n }\n }\n\n if (config.generators.llmsFullTxt) {\n try {\n const content = genLlmsFull(config);\n writeFileSync(join(outDir, 'llms-full.txt'), '\\uFEFF' + content, 'utf-8');\n files.push('llms-full.txt');\n } catch (e: any) {\n errors.push(`llms-full.txt: ${e.message}`);\n }\n }\n\n if (config.generators.rawMarkdown) {\n // Generate page .md files first (auto-extracted from build output)\n try {\n const generated = generatePageMarkdownFiles(config);\n for (const f of generated) {\n files.push(f.destination);\n }\n } catch (e: any) {\n errors.push(`page-markdown: ${e.message}`);\n }\n\n // Then copy handwritten .md from contentDir (these take priority, overwriting generated ones)\n try {\n const copied = copyMarkdownFiles(config);\n for (const f of copied) {\n files.push(f.destination);\n }\n } catch (e: any) {\n errors.push(`raw-markdown: ${e.message}`);\n }\n }\n\n if (config.generators.manifest) {\n try {\n const content = genManifest(config);\n writeFileSync(join(outDir, 'docs.json'), content, 'utf-8');\n files.push('docs.json');\n } catch (e: any) {\n errors.push(`docs.json: ${e.message}`);\n }\n }\n\n if (config.generators.sitemap) {\n try {\n const content = genSitemap(config);\n writeFileSync(join(outDir, 'sitemap.xml'), content, 'utf-8');\n files.push('sitemap.xml');\n } catch (e: any) {\n errors.push(`sitemap.xml: ${e.message}`);\n }\n }\n\n if (config.generators.aiIndex) {\n try {\n const content = genAIIndex(config);\n writeFileSync(join(outDir, 'ai-index.json'), content, 'utf-8');\n files.push('ai-index.json');\n } catch (e: any) {\n errors.push(`ai-index.json: ${e.message}`);\n }\n }\n\n return { files, errors };\n}\n","import { generateAEOFiles } from '../core/generate';\nimport { resolveConfig } from '../core/utils';\nimport type { AeoConfig, PageEntry } from '../types';\nimport { join } from 'path';\nimport { existsSync, readFileSync, readdirSync, statSync } from 'fs';\n\nfunction scanHtmlAssets(compilation: any): PageEntry[] {\n const pages: PageEntry[] = [];\n try {\n for (const [name, source] of Object.entries(compilation.assets)) {\n if (name.endsWith('.html') && name !== '404.html' && name !== '500.html') {\n const html = (source as any).source?.().toString() || '';\n const titleMatch = html.match(/<title>([^<]*)<\\/title>/i);\n const descMatch = html.match(/<meta\\s+name=[\"']description[\"']\\s+content=[\"']([^\"']*)[\"']/i);\n let pathname = '/' + name.replace(/\\/?index\\.html$/, '').replace(/\\.html$/, '');\n pathname = pathname.replace(/\\/+/g, '/') || '/';\n pages.push({\n pathname,\n title: titleMatch?.[1]?.split('|')[0]?.trim(),\n description: descMatch?.[1],\n });\n }\n }\n } catch { /* skip */ }\n return pages;\n}\n\nexport class AeoWebpackPlugin {\n private options: AeoConfig;\n private resolvedConfig: ReturnType<typeof resolveConfig>;\n\n constructor(options: AeoConfig = {}) {\n this.options = options;\n this.resolvedConfig = resolveConfig(options);\n }\n\n apply(compiler: any): void {\n const pluginName = 'AeoWebpackPlugin';\n\n compiler.hooks.beforeCompile.tapAsync(pluginName, async (_params: any, callback: any) => {\n this.resolvedConfig = resolveConfig({\n ...this.options,\n outDir: this.options.outDir || compiler.options.output?.path || join(process.cwd(), 'dist'),\n });\n\n console.log('[aeo.js] Generating AEO files...');\n\n try {\n const result = await generateAEOFiles(this.resolvedConfig);\n\n if (result.files.length > 0) {\n console.log(`[aeo.js] Generated ${result.files.length} files:`);\n result.files.forEach((file: string) => {\n console.log(` - ${file}`);\n });\n }\n\n if (result.errors.length > 0) {\n console.error('[aeo.js] Errors during generation:');\n result.errors.forEach((error: string) => {\n console.error(` - ${error}`);\n });\n }\n } catch (error) {\n console.error('[aeo.js] Failed to generate AEO files:', error);\n }\n\n callback();\n });\n\n if (compiler.options.mode === 'development' && this.resolvedConfig.contentDir) {\n const contentPath = join(process.cwd(), this.resolvedConfig.contentDir);\n\n compiler.hooks.afterCompile.tap(pluginName, (compilation: any) => {\n compilation.contextDependencies.add(contentPath);\n });\n\n compiler.hooks.watchRun.tapAsync(pluginName, async (comp: any, callback: any) => {\n const changedFiles = Array.from(comp.modifiedFiles || []) as string[];\n const hasMarkdownChanges = changedFiles.some((file: string) => file.endsWith('.md'));\n\n if (hasMarkdownChanges) {\n console.log('[aeo.js] Markdown files changed, regenerating...');\n\n try {\n const result = await generateAEOFiles(this.resolvedConfig);\n if (result.files.length > 0) {\n console.log(`[aeo.js] Regenerated ${result.files.length} files`);\n }\n if (result.errors.length > 0) {\n console.error('[aeo.js] Errors during regeneration:', result.errors);\n }\n } catch (error) {\n console.error('[aeo.js] Failed to regenerate AEO files:', error);\n }\n }\n\n callback();\n });\n }\n\n compiler.hooks.emit.tapAsync(pluginName, async (compilation: any, callback: any) => {\n // Discover pages from HTML assets in the compilation\n const discoveredPages = scanHtmlAssets(compilation);\n if (discoveredPages.length > 0) {\n console.log(`[aeo.js] Discovered ${discoveredPages.length} pages from build output`);\n this.resolvedConfig = resolveConfig({\n ...this.options,\n outDir: this.resolvedConfig.outDir,\n pages: [...(this.options.pages || []), ...discoveredPages],\n });\n\n // Regenerate with page data\n try {\n await generateAEOFiles(this.resolvedConfig);\n } catch (error) {\n console.error('[aeo.js] Failed to regenerate with pages:', error);\n }\n }\n\n const aeoFiles = ['robots.txt', 'llms.txt', 'llms-full.txt', 'sitemap.xml', 'docs.json', 'ai-index.json'];\n\n aeoFiles.forEach(filename => {\n const filepath = join(this.resolvedConfig.outDir, filename);\n try {\n if (existsSync(filepath)) {\n const content = readFileSync(filepath);\n compilation.assets[filename] = {\n source: () => content,\n size: () => content.length,\n };\n }\n } catch (error) {\n console.warn(`[aeo.js] Could not add ${filename} to assets:`, error);\n }\n });\n\n callback();\n });\n\n if (this.resolvedConfig.widget.enabled) {\n compiler.hooks.compilation.tap(pluginName, (compilation: any) => {\n try {\n const HtmlWebpackPlugin = require('html-webpack-plugin');\n const hooks = HtmlWebpackPlugin.getHooks(compilation);\n\n hooks.beforeEmit.tapAsync(pluginName, (data: any, callback: any) => {\n const widgetScript = `\n<script type=\"module\">\n import { AeoWidget } from 'aeo.js/widget';\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', () => {\n new AeoWidget(${JSON.stringify(this.resolvedConfig.widget)});\n });\n } else {\n new AeoWidget(${JSON.stringify(this.resolvedConfig.widget)});\n }\n</script>`;\n data.html = data.html.replace('</body>', `${widgetScript}\\n</body>`);\n callback(null, data);\n });\n } catch (error) {\n // HtmlWebpackPlugin not available, skip widget injection\n }\n });\n }\n }\n}\n\nexport function createAeoWebpackPlugin(options?: AeoConfig): AeoWebpackPlugin {\n return new AeoWebpackPlugin(options);\n}\n\nexport default AeoWebpackPlugin;\n"]}
1
+ {"version":3,"sources":["../src/core/robots.ts","../src/core/detect.ts","../src/core/utils.ts","../src/core/llms-txt.ts","../src/core/llms-full.ts","../src/core/raw-markdown.ts","../src/core/manifest.ts","../src/core/sitemap.ts","../src/core/ai-index.ts","../src/core/schema.ts","../src/core/generate-wrapper.ts","../src/plugins/webpack.ts"],"names":["join","existsSync","readFileSync","readdirSync","statSync","extname","relative","mkdirSync","dirname","copyFileSync","writeFileSync","createHash","index"],"mappings":"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","file":"webpack.js","sourcesContent":["import type { ResolvedAeoConfig } from '../types';\n\nconst AI_CRAWLERS = [\n 'GPTBot',\n 'OAI-SearchBot',\n 'ChatGPT-User',\n 'ClaudeBot',\n 'Claude-Web',\n 'anthropic-ai',\n 'PerplexityBot',\n 'Google-Extended',\n 'Gemini-Deep-Research',\n 'Bingbot',\n 'FacebookBot',\n 'meta-externalagent',\n 'Amazonbot',\n 'Applebot',\n 'DeepSeekBot',\n 'Bytespider',\n 'cohere-ai',\n 'CCBot',\n 'DiffBot',\n 'YouBot',\n 'FirecrawlAgent',\n 'Crawl4AI',\n 'BraveBot',\n 'SemrushBot',\n 'AhrefsBot',\n 'MJ12bot',\n 'DotBot',\n 'DataForSeoBot',\n 'Screaming Frog SEO Spider',\n 'SEOkicks',\n 'SEMrushBot',\n 'BLEXBot',\n 'Yandex',\n 'Baiduspider',\n 'Sogou',\n 'Exabot',\n 'facebookexternalhit',\n 'LinkedInBot',\n 'WhatsApp',\n 'Slackbot',\n 'TwitterBot',\n 'TelegramBot',\n 'Discordbot',\n 'PinterestBot',\n 'TumblrBot',\n 'ViberBot',\n 'SkypeUriPreview',\n 'redditbot',\n 'Snapchat',\n 'TikTok',\n];\n\nexport function generateRobotsTxt(config: ResolvedAeoConfig): string {\n const lines: string[] = [\n '# robots.txt generated by aeo.js',\n '# Allow AI crawlers to index this site',\n '',\n '# Traditional search engines',\n 'User-agent: Googlebot',\n 'Allow: /',\n '',\n 'User-agent: Bingbot',\n 'Allow: /',\n '',\n '# AI crawlers and answer engines',\n ];\n \n for (const crawler of AI_CRAWLERS) {\n lines.push(`User-agent: ${crawler}`);\n lines.push('Allow: /');\n lines.push('');\n }\n \n lines.push('# Default for all other bots');\n lines.push('User-agent: *');\n lines.push('Allow: /');\n lines.push('');\n \n if (config.url) {\n lines.push(`Sitemap: ${config.url}/sitemap.xml`);\n }\n \n lines.push('');\n lines.push('# AEO (Answer Engine Optimization) files');\n lines.push('# These help LLMs understand your content better');\n lines.push(`# ${config.url}/llms.txt`);\n lines.push(`# ${config.url}/llms-full.txt`);\n lines.push(`# ${config.url}/docs.json`);\n lines.push(`# ${config.url}/ai-index.json`);\n \n return lines.join('\\n');\n}","import type { FrameworkType, FrameworkInfo } from '../types';\nimport { readPackageJson } from './utils';\n\nexport function detectFramework(projectRoot: string = process.cwd()): FrameworkInfo {\n const packageJson = readPackageJson(projectRoot);\n const dependencies = {\n ...packageJson.dependencies,\n ...packageJson.devDependencies,\n };\n \n if (dependencies['next']) {\n return {\n framework: 'next',\n contentDir: 'app',\n outDir: 'out',\n };\n }\n \n if (dependencies['nuxt'] || dependencies['@nuxt/kit']) {\n return {\n framework: 'nuxt',\n contentDir: 'content',\n outDir: '.output/public',\n };\n }\n \n if (dependencies['astro'] || dependencies['@astrojs/astro']) {\n return {\n framework: 'astro',\n contentDir: 'src/content',\n outDir: 'dist',\n };\n }\n \n if (dependencies['@remix-run/dev']) {\n return {\n framework: 'remix',\n contentDir: 'app',\n outDir: 'build/client',\n };\n }\n \n if (dependencies['@sveltejs/kit']) {\n return {\n framework: 'sveltekit',\n contentDir: 'src',\n outDir: 'build',\n };\n }\n \n if (dependencies['@angular/core']) {\n return {\n framework: 'angular',\n contentDir: 'src',\n outDir: 'dist',\n };\n }\n \n if (dependencies['@docusaurus/core']) {\n return {\n framework: 'docusaurus',\n contentDir: 'docs',\n outDir: 'build',\n };\n }\n \n if (dependencies['vite']) {\n return {\n framework: 'vite',\n contentDir: 'src',\n outDir: 'dist',\n };\n }\n \n return {\n framework: 'unknown',\n contentDir: 'src',\n outDir: 'dist',\n };\n}","import { readFileSync, existsSync, readdirSync, statSync } from 'fs';\nimport { join, relative, extname } from 'path';\nimport type { AeoConfig, ResolvedAeoConfig, MarkdownFile } from '../types';\nimport { detectFramework } from './detect';\nimport { minimatch } from 'minimatch';\n\nexport function validateConfig(config: AeoConfig): string[] {\n const warnings: string[] = [];\n\n if (config.url && !/^https?:\\/\\//.test(config.url)) {\n warnings.push(`url \"${config.url}\" should start with http:// or https://`);\n }\n\n if (config.url === 'https://example.com') {\n warnings.push('url is set to the default \"https://example.com\" — set your actual site URL');\n }\n\n if (!config.title) {\n warnings.push('title is not set — your generated files will use \"My Site\"');\n }\n\n if (config.robots?.crawlDelay && config.robots.crawlDelay < 0) {\n warnings.push('robots.crawlDelay should be a positive number');\n }\n\n return warnings;\n}\n\nexport function resolveConfig(config: AeoConfig = {}): ResolvedAeoConfig {\n const frameworkInfo = detectFramework();\n\n return {\n title: config.title || 'My Site',\n description: config.description || '',\n url: config.url || 'https://example.com',\n contentDir: config.contentDir || frameworkInfo.contentDir,\n outDir: config.outDir || frameworkInfo.outDir,\n pages: config.pages || [],\n generators: {\n robotsTxt: config.generators?.robotsTxt !== false,\n llmsTxt: config.generators?.llmsTxt !== false,\n llmsFullTxt: config.generators?.llmsFullTxt !== false,\n rawMarkdown: config.generators?.rawMarkdown !== false,\n manifest: config.generators?.manifest !== false,\n sitemap: config.generators?.sitemap !== false,\n aiIndex: config.generators?.aiIndex !== false,\n schema: config.generators?.schema !== false,\n },\n robots: {\n allow: config.robots?.allow || ['/'],\n disallow: config.robots?.disallow || [],\n crawlDelay: config.robots?.crawlDelay || 0,\n sitemap: config.robots?.sitemap || '',\n },\n schema: {\n enabled: config.schema?.enabled !== false,\n organization: {\n name: config.schema?.organization?.name || config.title || 'My Site',\n url: config.schema?.organization?.url || config.url || 'https://example.com',\n logo: config.schema?.organization?.logo || '',\n sameAs: config.schema?.organization?.sameAs || [],\n },\n defaultType: config.schema?.defaultType || 'WebPage',\n },\n og: {\n enabled: config.og?.enabled !== false,\n image: config.og?.image || '',\n twitterHandle: config.og?.twitterHandle || '',\n type: config.og?.type || 'website',\n },\n widget: {\n enabled: config.widget?.enabled !== false,\n position: config.widget?.position || 'bottom-right',\n theme: {\n background: config.widget?.theme?.background || 'rgba(18, 18, 24, 0.9)',\n text: config.widget?.theme?.text || '#C0C0C5',\n accent: config.widget?.theme?.accent || '#E8E8EA',\n badge: config.widget?.theme?.badge || '#4ADE80',\n },\n humanLabel: config.widget?.humanLabel || 'Human',\n aiLabel: config.widget?.aiLabel || 'AI',\n showBadge: config.widget?.showBadge !== false,\n },\n };\n}\n\nexport function parseFrontmatter(content: string): { frontmatter: Record<string, any>; content: string } {\n const frontmatterMatch = content.match(/^---\\s*\\n([\\s\\S]*?)\\n---\\s*\\n([\\s\\S]*)/);\n \n if (frontmatterMatch) {\n const frontmatterStr = frontmatterMatch[1];\n const contentWithoutFrontmatter = frontmatterMatch[2];\n \n const frontmatter: Record<string, any> = {};\n const lines = frontmatterStr.split('\\n');\n \n for (const line of lines) {\n const [key, ...valueParts] = line.split(':');\n if (key && valueParts.length > 0) {\n const value = valueParts.join(':').trim();\n frontmatter[key.trim()] = value.replace(/^[\"']|[\"']$/g, '');\n }\n }\n \n return { frontmatter, content: contentWithoutFrontmatter };\n }\n \n return { frontmatter: {}, content };\n}\n\nexport function bumpHeadings(content: string, levels: number = 1): string {\n return content.replace(/^(#{1,6})\\s/gm, (match, hashes) => {\n const newLevel = Math.min(hashes.length + levels, 6);\n return '#'.repeat(newLevel) + ' ';\n });\n}\n\nexport function extractTitle(content: string): string {\n const h1Match = content.match(/^#\\s+(.+)$/m);\n if (h1Match) return h1Match[1];\n \n const h2Match = content.match(/^##\\s+(.+)$/m);\n if (h2Match) return h2Match[1];\n \n const firstLine = content.split('\\n')[0];\n return firstLine.slice(0, 100);\n}\n\nexport function readPackageJson(projectRoot: string = process.cwd()): Record<string, any> {\n const packageJsonPath = join(projectRoot, 'package.json');\n \n if (!existsSync(packageJsonPath)) {\n return {};\n }\n \n try {\n const content = readFileSync(packageJsonPath, 'utf-8');\n return JSON.parse(content);\n } catch {\n return {};\n }\n}\n\nexport function getAllMarkdownFiles(\n projectRoot: string,\n include: string[] = ['**/*.md'],\n exclude: string[] = ['**/node_modules/**']\n): string[] {\n const files: string[] = [];\n \n function scanDirectory(dir: string): void {\n try {\n const entries = readdirSync(dir);\n \n for (const entry of entries) {\n const fullPath = join(dir, entry);\n const relativePath = relative(projectRoot, fullPath);\n \n // Check if path should be excluded\n const shouldExclude = exclude.some(pattern => \n minimatch(relativePath, pattern) || minimatch(fullPath, pattern)\n );\n \n if (shouldExclude) {\n continue;\n }\n \n const stat = statSync(fullPath);\n \n if (stat.isDirectory()) {\n // Skip hidden directories\n if (!entry.startsWith('.')) {\n scanDirectory(fullPath);\n }\n } else if (stat.isFile()) {\n // Check if file matches include patterns\n const shouldInclude = include.some(pattern =>\n minimatch(relativePath, pattern) || minimatch(fullPath, pattern)\n );\n \n if (shouldInclude) {\n files.push(fullPath);\n }\n }\n }\n } catch (error) {\n // Silently skip directories we can't read\n }\n }\n \n scanDirectory(projectRoot);\n return files;\n}","import { readdirSync, readFileSync, statSync } from 'fs';\nimport { join, relative, extname } from 'path';\nimport type { ResolvedAeoConfig, MarkdownFile } from '../types';\nimport { parseFrontmatter, extractTitle } from './utils';\n\nfunction collectMarkdownFiles(dir: string, base: string = dir): MarkdownFile[] {\n const files: MarkdownFile[] = [];\n \n try {\n const entries = readdirSync(dir);\n \n for (const entry of entries) {\n const fullPath = join(dir, entry);\n const stat = statSync(fullPath);\n \n if (stat.isDirectory() && !entry.startsWith('.') && entry !== 'node_modules') {\n files.push(...collectMarkdownFiles(fullPath, base));\n } else if (stat.isFile() && (extname(entry) === '.md' || extname(entry) === '.mdx')) {\n const content = readFileSync(fullPath, 'utf-8');\n const { frontmatter, content: mainContent } = parseFrontmatter(content);\n const relativePath = relative(base, fullPath);\n \n files.push({\n path: relativePath,\n content: mainContent,\n title: frontmatter.title || extractTitle(mainContent),\n description: frontmatter.description,\n frontmatter,\n });\n }\n }\n } catch (error) {\n console.warn(`Warning: Could not read directory ${dir}:`, error);\n }\n \n return files;\n}\n\nexport function generateLlmsTxt(config: ResolvedAeoConfig): string {\n const lines: string[] = [\n `# ${config.title}`,\n '',\n ];\n \n if (config.description) {\n lines.push(`> ${config.description}`);\n lines.push('');\n }\n \n lines.push('## About');\n lines.push('');\n lines.push('This file provides a structured overview of the documentation and content available on this site,');\n lines.push('optimized for consumption by Large Language Models (LLMs) and AI assistants.');\n lines.push('');\n \n // List discovered pages (from framework plugin)\n if (config.pages && config.pages.length > 0) {\n lines.push('## Pages');\n lines.push('');\n\n for (const page of config.pages) {\n const url = `${config.url}${page.pathname === '/' ? '' : page.pathname}`;\n const title = page.title || page.pathname;\n lines.push(`- [${title}](${url})`);\n if (page.description) {\n lines.push(` ${page.description}`);\n }\n }\n lines.push('');\n }\n\n // List markdown content files\n const markdownFiles = collectMarkdownFiles(config.contentDir);\n\n if (markdownFiles.length > 0) {\n lines.push('## Documentation');\n lines.push('');\n\n const grouped: Record<string, MarkdownFile[]> = {};\n\n for (const file of markdownFiles) {\n const dir = file.path.split('/')[0] || 'root';\n if (!grouped[dir]) grouped[dir] = [];\n grouped[dir].push(file);\n }\n\n for (const [dir, files] of Object.entries(grouped)) {\n lines.push(`### ${dir === 'root' ? 'Main Documentation' : dir}`);\n lines.push('');\n\n for (const file of files) {\n const url = `${config.url}/${file.path.replace(/\\.mdx?$/, '')}`;\n lines.push(`- [${file.title}](${url})`);\n if (file.description) {\n lines.push(` ${file.description}`);\n }\n }\n lines.push('');\n }\n }\n \n lines.push('## Quick Links');\n lines.push('');\n lines.push(`- Full Documentation: ${config.url}/llms-full.txt`);\n lines.push(`- Documentation Manifest: ${config.url}/docs.json`);\n lines.push(`- AI-Optimized Index: ${config.url}/ai-index.json`);\n lines.push(`- Sitemap: ${config.url}/sitemap.xml`);\n lines.push('');\n \n lines.push('## For LLMs');\n lines.push('');\n lines.push('To get the complete documentation in a single file, request:');\n lines.push(`${config.url}/llms-full.txt`);\n lines.push('');\n lines.push('For structured access to individual pages with metadata:');\n lines.push(`${config.url}/docs.json`);\n lines.push('');\n lines.push('For RAG (Retrieval Augmented Generation) systems:');\n lines.push(`${config.url}/ai-index.json`);\n lines.push('');\n \n lines.push('---');\n lines.push('Generated by aeo.js - Answer Engine Optimization for the modern web');\n lines.push('Learn more at https://aeojs.org');\n \n return lines.join('\\n');\n}","import { readdirSync, readFileSync, statSync } from 'fs';\nimport { join, relative, extname } from 'path';\nimport type { ResolvedAeoConfig } from '../types';\nimport { parseFrontmatter, bumpHeadings } from './utils';\n\nfunction collectAndConcatenateMarkdown(dir: string, base: string = dir): string[] {\n const sections: string[] = [];\n \n try {\n const entries = readdirSync(dir).sort();\n \n for (const entry of entries) {\n const fullPath = join(dir, entry);\n const stat = statSync(fullPath);\n \n if (stat.isDirectory() && !entry.startsWith('.') && entry !== 'node_modules') {\n const subSections = collectAndConcatenateMarkdown(fullPath, base);\n if (subSections.length > 0) {\n sections.push(...subSections);\n }\n } else if (stat.isFile() && (extname(entry) === '.md' || extname(entry) === '.mdx')) {\n const content = readFileSync(fullPath, 'utf-8');\n const { frontmatter, content: mainContent } = parseFrontmatter(content);\n const relativePath = relative(base, fullPath);\n \n const sectionLines: string[] = [\n '---',\n '',\n `# ${frontmatter.title || relativePath}`,\n '',\n `Source: ${relativePath}`,\n '',\n ];\n \n if (frontmatter.description) {\n sectionLines.push(`> ${frontmatter.description}`);\n sectionLines.push('');\n }\n \n const bumpedContent = bumpHeadings(mainContent, 1);\n sectionLines.push(bumpedContent);\n sectionLines.push('');\n \n sections.push(sectionLines.join('\\n'));\n }\n }\n } catch (error) {\n console.warn(`Warning: Could not read directory ${dir}:`, error);\n }\n \n return sections;\n}\n\nexport function generateLlmsFull(config: ResolvedAeoConfig): string {\n return generateLlmsFullTxt(config);\n}\n\nexport function generateLlmsFullTxt(config: ResolvedAeoConfig): string {\n const lines: string[] = [\n `# ${config.title} - Complete Documentation`,\n '',\n `This file contains all documentation concatenated into a single file for easy consumption by LLMs.`,\n '',\n ];\n \n if (config.description) {\n lines.push(`> ${config.description}`);\n lines.push('');\n }\n \n lines.push('## Table of Contents');\n lines.push('');\n lines.push('This document includes all content from this project.');\n lines.push('Each section is separated by a horizontal rule (---) for easy parsing.');\n lines.push('');\n\n let hasContent = false;\n\n // Include discovered pages (from framework plugin)\n if (config.pages && config.pages.length > 0) {\n for (const page of config.pages) {\n const url = `${config.url}${page.pathname === '/' ? '' : page.pathname}`;\n const title = page.title || page.pathname;\n const sectionLines: string[] = [\n '---',\n '',\n `# ${title}`,\n '',\n `URL: ${url}`,\n '',\n ];\n if (page.description) {\n sectionLines.push(`> ${page.description}`);\n sectionLines.push('');\n }\n if (page.content) {\n sectionLines.push(page.content);\n sectionLines.push('');\n }\n lines.push(sectionLines.join('\\n'));\n hasContent = true;\n }\n }\n\n // Include markdown content files\n const sections = collectAndConcatenateMarkdown(config.contentDir);\n\n if (sections.length > 0) {\n lines.push(...sections);\n hasContent = true;\n }\n\n if (!hasContent) {\n // Always include site overview so LLMs have basic context\n lines.push('---');\n lines.push('');\n lines.push(`# ${config.title}`);\n lines.push('');\n lines.push(`URL: ${config.url}`);\n lines.push('');\n if (config.description) {\n lines.push(config.description);\n lines.push('');\n }\n }\n \n lines.push('---');\n lines.push('');\n lines.push('## About This Document');\n lines.push('');\n lines.push('This concatenated documentation file is generated automatically by aeo.js');\n lines.push('to make it easier for AI systems to understand the complete context of this project.');\n lines.push('');\n lines.push(`For a structured index, see: ${config.url}/llms.txt`);\n lines.push(`For individual files, see: ${config.url}/docs.json`);\n lines.push('');\n lines.push('Generated by aeo.js - https://aeojs.org');\n \n return lines.join('\\n');\n}","import { readdirSync, statSync, mkdirSync, writeFileSync, copyFileSync } from 'fs';\nimport { join, relative, extname, dirname } from 'path';\nimport type { ResolvedAeoConfig } from '../types';\n\nexport interface CopiedFile {\n source: string;\n destination: string;\n}\n\nexport interface GeneratedMarkdownFile {\n pathname: string;\n destination: string;\n}\n\nfunction ensureDir(path: string): void {\n mkdirSync(path, { recursive: true });\n}\n\nexport function copyRawMarkdown(config: ResolvedAeoConfig): CopiedFile[] {\n return copyMarkdownFiles(config);\n}\n\nexport function copyMarkdownFiles(config: ResolvedAeoConfig): CopiedFile[] {\n const copiedFiles: CopiedFile[] = [];\n \n function copyRecursive(dir: string, base: string = config.contentDir): void {\n try {\n const entries = readdirSync(dir);\n \n for (const entry of entries) {\n const fullPath = join(dir, entry);\n const stat = statSync(fullPath);\n \n if (stat.isDirectory() && !entry.startsWith('.') && entry !== 'node_modules') {\n copyRecursive(fullPath, base);\n } else if (stat.isFile() && extname(entry) === '.md') {\n const relativePath = relative(base, fullPath);\n const destPath = join(config.outDir, relativePath);\n \n ensureDir(dirname(destPath));\n \n try {\n copyFileSync(fullPath, destPath);\n copiedFiles.push({\n source: fullPath,\n destination: destPath,\n });\n } catch (error) {\n console.warn(`Warning: Could not copy ${fullPath}:`, error);\n }\n }\n }\n } catch (error) {\n console.warn(`Warning: Could not read directory ${dir}:`, error);\n }\n }\n \n copyRecursive(config.contentDir);\n return copiedFiles;\n}\n\nexport function generatePageMarkdownFiles(config: ResolvedAeoConfig): GeneratedMarkdownFile[] {\n const generated: GeneratedMarkdownFile[] = [];\n const pages = config.pages || [];\n\n for (const page of pages) {\n // Only generate .md files for pages that have actual content.\n // Pages discovered from filenames (dev mode) only have pathname/title\n // but no body content — those are useless as standalone markdown files.\n if (!page.content) continue;\n\n const pageTitle = page.title || (page.pathname === '/' ? config.title : undefined);\n\n let filename: string;\n if (page.pathname === '/') {\n filename = 'index.md';\n } else {\n const clean = page.pathname.replace(/^\\//, '').replace(/\\/$/, '');\n filename = clean.includes('/') ? `${clean}.md` : `${clean}.md`;\n }\n\n const destPath = join(config.outDir, filename);\n\n const pageUrl = page.pathname === '/'\n ? config.url\n : `${config.url.replace(/\\/$/, '')}${page.pathname}`;\n\n const lines: string[] = [];\n\n // YAML frontmatter\n lines.push('---');\n if (pageTitle) lines.push(`title: \"${pageTitle}\"`);\n if (page.description) lines.push(`description: \"${page.description}\"`);\n lines.push(`url: ${pageUrl}`);\n lines.push(`source: ${pageUrl}`);\n lines.push(`generated_by: aeo.js`);\n lines.push('---', '');\n\n if (pageTitle) {\n lines.push(`# ${pageTitle}`, '');\n }\n\n if (page.description) {\n lines.push(`${page.description}`, '');\n }\n\n if (page.content) {\n lines.push(page.content);\n }\n\n const content = lines.join('\\n');\n\n ensureDir(dirname(destPath));\n try {\n writeFileSync(destPath, content, 'utf-8');\n generated.push({ pathname: page.pathname, destination: destPath });\n } catch {\n // skip unwritable files\n }\n }\n\n return generated;\n}","import { readdirSync, readFileSync, statSync } from 'fs';\nimport { join, relative, extname } from 'path';\nimport type { ResolvedAeoConfig, ManifestEntry } from '../types';\nimport { parseFrontmatter, extractTitle } from './utils';\n\nfunction collectManifestEntries(dir: string, config: ResolvedAeoConfig, base: string = dir): ManifestEntry[] {\n const entries: ManifestEntry[] = [];\n \n try {\n const files = readdirSync(dir);\n \n for (const file of files) {\n const fullPath = join(dir, file);\n const stat = statSync(fullPath);\n \n if (stat.isDirectory() && !file.startsWith('.') && file !== 'node_modules') {\n entries.push(...collectManifestEntries(fullPath, config, base));\n } else if (stat.isFile() && (extname(file) === '.md' || extname(file) === '.mdx')) {\n const content = readFileSync(fullPath, 'utf-8');\n const { frontmatter, content: mainContent } = parseFrontmatter(content);\n const relativePath = relative(base, fullPath);\n const urlPath = relativePath.replace(/\\.mdx?$/, '');\n \n entries.push({\n url: `${config.url}/${urlPath}`,\n title: frontmatter.title || extractTitle(mainContent),\n description: frontmatter.description,\n lastModified: stat.mtime.toISOString(),\n });\n }\n }\n } catch (error) {\n console.warn(`Warning: Could not read directory ${dir}:`, error);\n }\n \n return entries;\n}\n\nexport function generateManifest(config: ResolvedAeoConfig): string {\n const entries: ManifestEntry[] = [];\n\n // Add discovered pages from framework plugin\n if (config.pages && config.pages.length > 0) {\n for (const page of config.pages) {\n entries.push({\n url: `${config.url}${page.pathname === '/' ? '' : page.pathname}`,\n title: page.title || page.pathname,\n description: page.description,\n });\n }\n }\n\n // Add markdown content files\n entries.push(...collectManifestEntries(config.contentDir, config));\n \n const manifest = {\n version: '1.0',\n generated: new Date().toISOString(),\n site: {\n title: config.title,\n description: config.description,\n url: config.url,\n },\n documents: entries.sort((a, b) => a.url.localeCompare(b.url)),\n metadata: {\n totalDocuments: entries.length,\n generator: 'aeo.js',\n generatorUrl: 'https://aeojs.org',\n },\n };\n \n return JSON.stringify(manifest, null, 2);\n}","import { readdirSync, statSync } from 'fs';\nimport { join, relative, extname } from 'path';\nimport type { ResolvedAeoConfig } from '../types';\n\nfunction collectUrls(dir: string, config: ResolvedAeoConfig, base: string = dir): string[] {\n const urls: string[] = [];\n \n try {\n const entries = readdirSync(dir);\n \n for (const entry of entries) {\n const fullPath = join(dir, entry);\n const stat = statSync(fullPath);\n \n if (stat.isDirectory() && !entry.startsWith('.') && entry !== 'node_modules') {\n urls.push(...collectUrls(fullPath, config, base));\n } else if (stat.isFile() && (extname(entry) === '.md' || extname(entry) === '.mdx' || extname(entry) === '.html')) {\n const relativePath = relative(base, fullPath);\n const urlPath = relativePath.replace(/\\.(md|mdx|html)$/, '');\n urls.push(`${config.url}/${urlPath}`);\n }\n }\n } catch (error) {\n console.warn(`Warning: Could not read directory ${dir}:`, error);\n }\n \n return urls;\n}\n\nfunction escapeXml(str: string): string {\n return str\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&apos;');\n}\n\nexport function generateSitemap(config: ResolvedAeoConfig): string {\n const urls: string[] = [];\n\n // Add discovered pages from framework plugin\n if (config.pages && config.pages.length > 0) {\n for (const page of config.pages) {\n urls.push(`${config.url}${page.pathname === '/' ? '' : page.pathname}`);\n }\n }\n\n // Add markdown/html files from content dir\n if (config.contentDir) {\n urls.push(...collectUrls(config.contentDir, config));\n }\n\n const lines: string[] = [\n '<?xml version=\"1.0\" encoding=\"UTF-8\"?>',\n '<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">',\n ];\n\n // Always include the site root\n urls.push(config.url);\n\n const uniqueUrls = [...new Set(urls)].sort();\n \n for (const url of uniqueUrls) {\n lines.push(' <url>');\n lines.push(` <loc>${escapeXml(url)}</loc>`);\n lines.push(` <lastmod>${new Date().toISOString().split('T')[0]}</lastmod>`);\n lines.push(' <changefreq>weekly</changefreq>');\n lines.push(' <priority>0.8</priority>');\n lines.push(' </url>');\n }\n \n lines.push('</urlset>');\n \n return lines.join('\\n');\n}","import { readdirSync, readFileSync, statSync } from 'fs';\nimport { join, relative, extname } from 'path';\nimport { createHash } from 'crypto';\nimport type { ResolvedAeoConfig, AIIndexEntry } from '../types';\nimport { parseFrontmatter, extractTitle } from './utils';\n\nfunction extractKeywords(content: string): string[] {\n const words = content\n .toLowerCase()\n .replace(/[^a-z0-9\\s]/g, ' ')\n .split(/\\s+/)\n .filter(word => word.length > 3);\n \n const wordCount: Record<string, number> = {};\n \n for (const word of words) {\n wordCount[word] = (wordCount[word] || 0) + 1;\n }\n \n return Object.entries(wordCount)\n .sort((a, b) => b[1] - a[1])\n .slice(0, 10)\n .map(([word]) => word);\n}\n\nfunction chunkContent(content: string, maxLength: number = 2000): string[] {\n const chunks: string[] = [];\n const paragraphs = content.split('\\n\\n');\n \n let currentChunk = '';\n \n for (const paragraph of paragraphs) {\n if (currentChunk.length + paragraph.length > maxLength && currentChunk.length > 0) {\n chunks.push(currentChunk.trim());\n currentChunk = '';\n }\n currentChunk += paragraph + '\\n\\n';\n }\n \n if (currentChunk.trim()) {\n chunks.push(currentChunk.trim());\n }\n \n return chunks;\n}\n\nfunction collectAIIndexEntries(dir: string, config: ResolvedAeoConfig, base: string = dir): AIIndexEntry[] {\n const entries: AIIndexEntry[] = [];\n \n try {\n const files = readdirSync(dir);\n \n for (const file of files) {\n const fullPath = join(dir, file);\n const stat = statSync(fullPath);\n \n if (stat.isDirectory() && !file.startsWith('.') && file !== 'node_modules') {\n entries.push(...collectAIIndexEntries(fullPath, config, base));\n } else if (stat.isFile() && (extname(file) === '.md' || extname(file) === '.mdx')) {\n const content = readFileSync(fullPath, 'utf-8');\n const { frontmatter, content: mainContent } = parseFrontmatter(content);\n const relativePath = relative(base, fullPath);\n const urlPath = relativePath.replace(/\\.mdx?$/, '');\n const url = `${config.url}/${urlPath}`;\n \n const chunks = chunkContent(mainContent);\n const title = frontmatter.title || extractTitle(mainContent);\n const keywords = extractKeywords(mainContent);\n \n chunks.forEach((chunk, index) => {\n const id = createHash('sha256')\n .update(`${url}-${index}`)\n .digest('hex')\n .slice(0, 16);\n \n entries.push({\n id,\n url,\n title: chunks.length > 1 ? `${title} (Part ${index + 1})` : title,\n content: chunk,\n description: frontmatter.description,\n keywords,\n metadata: {\n ...frontmatter,\n chunkIndex: index,\n totalChunks: chunks.length,\n sourcePath: relativePath,\n },\n });\n });\n }\n }\n } catch (error) {\n console.warn(`Warning: Could not read directory ${dir}:`, error);\n }\n \n return entries;\n}\n\nexport function generateAiIndex(config: ResolvedAeoConfig): string {\n return generateAIIndex(config);\n}\n\nexport function generateAIIndex(config: ResolvedAeoConfig): string {\n const entries: AIIndexEntry[] = [];\n\n // Add discovered pages from framework plugin\n if (config.pages && config.pages.length > 0) {\n for (const page of config.pages) {\n const url = `${config.url}${page.pathname === '/' ? '' : page.pathname}`;\n const title = page.title || page.pathname;\n const content = page.content || '';\n\n if (content) {\n const chunks = chunkContent(content);\n const keywords = extractKeywords(content);\n\n chunks.forEach((chunk, index) => {\n const id = createHash('sha256')\n .update(`${url}-${index}`)\n .digest('hex')\n .slice(0, 16);\n\n entries.push({\n id,\n url,\n title: chunks.length > 1 ? `${title} (Part ${index + 1})` : title,\n content: chunk,\n description: page.description,\n keywords,\n metadata: {\n chunkIndex: index,\n totalChunks: chunks.length,\n sourcePath: page.pathname,\n },\n });\n });\n } else {\n const id = createHash('sha256')\n .update(url)\n .digest('hex')\n .slice(0, 16);\n\n entries.push({\n id,\n url,\n title,\n content: page.description || title,\n description: page.description,\n keywords: [],\n });\n }\n }\n }\n\n // Add markdown content files\n entries.push(...collectAIIndexEntries(config.contentDir, config));\n \n const index = {\n version: '1.0',\n generated: new Date().toISOString(),\n site: {\n title: config.title,\n description: config.description,\n url: config.url,\n },\n entries: entries.sort((a, b) => a.id.localeCompare(b.id)),\n metadata: {\n totalEntries: entries.length,\n generator: 'aeo.js',\n generatorUrl: 'https://aeojs.org',\n embedding: {\n recommended: 'text-embedding-ada-002',\n dimensions: 1536,\n },\n },\n };\n \n return JSON.stringify(index, null, 2);\n}","import type { ResolvedAeoConfig, PageEntry } from '../types';\n\nexport interface SchemaOutput {\n site: object[];\n pages: Record<string, object[]>;\n}\n\n/**\n * Generate JSON-LD structured data for the entire site.\n * Returns site-level schemas (WebSite, Organization) and per-page schemas.\n */\nexport function generateSchema(config: ResolvedAeoConfig): string {\n const output = generateSchemaObjects(config);\n return JSON.stringify(output, null, 2);\n}\n\n/**\n * Generate schema objects without serialization (for injection into HTML).\n */\nexport function generateSchemaObjects(config: ResolvedAeoConfig): SchemaOutput {\n const siteSchemas = generateSiteSchemas(config);\n const pageSchemas: Record<string, object[]> = {};\n\n for (const page of config.pages) {\n const schemas = generatePageSchemas(page, config);\n if (schemas.length > 0) {\n pageSchemas[page.pathname] = schemas;\n }\n }\n\n return { site: siteSchemas, pages: pageSchemas };\n}\n\n/**\n * Generate site-level schemas: WebSite + Organization.\n */\nexport function generateSiteSchemas(config: ResolvedAeoConfig): object[] {\n const schemas: object[] = [];\n\n // WebSite schema\n schemas.push({\n '@context': 'https://schema.org',\n '@type': 'WebSite',\n name: config.title,\n description: config.description || undefined,\n url: config.url,\n });\n\n // Organization schema (if name or sameAs provided)\n const org = config.schema.organization;\n if (org.name || org.sameAs.length > 0) {\n const orgSchema: Record<string, any> = {\n '@context': 'https://schema.org',\n '@type': 'Organization',\n name: org.name,\n url: org.url,\n };\n if (org.logo) orgSchema.logo = org.logo;\n if (org.sameAs.length > 0) orgSchema.sameAs = org.sameAs;\n schemas.push(orgSchema);\n }\n\n return schemas;\n}\n\n/**\n * Generate per-page schemas based on page content and config defaults.\n */\nexport function generatePageSchemas(page: PageEntry, config: ResolvedAeoConfig): object[] {\n const schemas: object[] = [];\n const pageUrl = page.pathname === '/'\n ? config.url\n : `${config.url.replace(/\\/$/, '')}${page.pathname}`;\n\n // Detect FAQ patterns in content\n const faqItems = detectFaqPatterns(page.content || '');\n if (faqItems.length > 0) {\n schemas.push({\n '@context': 'https://schema.org',\n '@type': 'FAQPage',\n mainEntity: faqItems.map(({ question, answer }) => ({\n '@type': 'Question',\n name: question,\n acceptedAnswer: {\n '@type': 'Answer',\n text: answer,\n },\n })),\n });\n }\n\n // WebPage or Article schema\n const pageType = config.schema.defaultType;\n const pageSchema: Record<string, any> = {\n '@context': 'https://schema.org',\n '@type': pageType,\n name: page.title || config.title,\n url: pageUrl,\n };\n if (page.description) pageSchema.description = page.description;\n if (pageType === 'Article') {\n pageSchema.headline = page.title || config.title;\n pageSchema.author = {\n '@type': 'Organization',\n name: config.schema.organization.name,\n };\n }\n schemas.push(pageSchema);\n\n // BreadcrumbList for non-root pages\n if (page.pathname !== '/') {\n const breadcrumbs = generateBreadcrumbs(page.pathname, config);\n if (breadcrumbs.length > 1) {\n schemas.push({\n '@context': 'https://schema.org',\n '@type': 'BreadcrumbList',\n itemListElement: breadcrumbs.map((crumb, i) => ({\n '@type': 'ListItem',\n position: i + 1,\n name: crumb.name,\n item: crumb.url,\n })),\n });\n }\n }\n\n return schemas;\n}\n\n/**\n * Generate breadcrumb items from a pathname.\n */\nfunction generateBreadcrumbs(pathname: string, config: ResolvedAeoConfig): { name: string; url: string }[] {\n const baseUrl = config.url.replace(/\\/$/, '');\n const parts = pathname.split('/').filter(Boolean);\n const crumbs: { name: string; url: string }[] = [\n { name: 'Home', url: baseUrl + '/' },\n ];\n\n let currentPath = '';\n for (const part of parts) {\n currentPath += '/' + part;\n crumbs.push({\n name: part.charAt(0).toUpperCase() + part.slice(1).replace(/-/g, ' '),\n url: baseUrl + currentPath,\n });\n }\n\n return crumbs;\n}\n\n/**\n * Detect FAQ-like patterns in markdown/text content.\n * Looks for: headings ending with \"?\" followed by paragraph text.\n */\nfunction detectFaqPatterns(content: string): { question: string; answer: string }[] {\n const items: { question: string; answer: string }[] = [];\n\n // Pattern: ## Question? \\n\\n Answer text\n const lines = content.split('\\n');\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i].trim();\n const headingMatch = line.match(/^#{1,6}\\s+(.+\\?)\\s*$/);\n if (headingMatch) {\n // Collect answer: all non-empty, non-heading lines following\n const answerLines: string[] = [];\n for (let j = i + 1; j < lines.length; j++) {\n const nextLine = lines[j].trim();\n if (!nextLine) {\n if (answerLines.length > 0) break; // empty line after content = end\n continue; // skip leading empty lines\n }\n if (/^#{1,6}\\s/.test(nextLine)) break; // next heading = end\n answerLines.push(nextLine);\n }\n if (answerLines.length > 0) {\n items.push({\n question: headingMatch[1],\n answer: answerLines.join(' ').slice(0, 500),\n });\n }\n }\n }\n\n return items;\n}\n\n/**\n * Generate a JSON-LD script tag string for injection into HTML.\n */\nexport function generateJsonLdScript(schemas: object[]): string {\n if (schemas.length === 0) return '';\n if (schemas.length === 1) {\n return `<script type=\"application/ld+json\">${JSON.stringify(schemas[0])}</script>`;\n }\n return schemas\n .map(s => `<script type=\"application/ld+json\">${JSON.stringify(s)}</script>`)\n .join('\\n');\n}\n","import { generateRobotsTxt as genRobots } from './robots';\nimport { generateLlmsTxt as genLlms } from './llms-txt';\nimport { generateLlmsFullTxt as genLlmsFull } from './llms-full';\nimport { copyMarkdownFiles, generatePageMarkdownFiles } from './raw-markdown';\nimport { generateManifest as genManifest } from './manifest';\nimport { generateSitemap as genSitemap } from './sitemap';\nimport { generateAIIndex as genAIIndex } from './ai-index';\nimport { generateSchema as genSchema } from './schema';\nimport { resolveConfig } from './utils';\nimport { writeFileSync, mkdirSync, existsSync } from 'fs';\nimport { join } from 'path';\nimport type { AeoConfig, ResolvedAeoConfig } from '../types';\n\nexport interface GenerateResult {\n files: string[];\n errors: string[];\n}\n\nexport async function generateAEOFiles(\n configOrRoot?: ResolvedAeoConfig | AeoConfig | string,\n maybeConfig?: Partial<AeoConfig>\n): Promise<GenerateResult> {\n let config: ResolvedAeoConfig;\n\n if (typeof configOrRoot === 'string') {\n config = resolveConfig({ ...maybeConfig, outDir: maybeConfig?.outDir || configOrRoot });\n } else if (\n configOrRoot &&\n typeof configOrRoot === 'object' &&\n 'generators' in configOrRoot &&\n typeof (configOrRoot as ResolvedAeoConfig).generators?.robotsTxt === 'boolean'\n ) {\n config = configOrRoot as ResolvedAeoConfig;\n } else {\n config = resolveConfig(configOrRoot as AeoConfig | undefined);\n }\n\n const outDir = config.outDir;\n const files: string[] = [];\n const errors: string[] = [];\n\n if (!existsSync(outDir)) {\n mkdirSync(outDir, { recursive: true });\n }\n\n if (config.generators.robotsTxt) {\n try {\n const content = genRobots(config);\n writeFileSync(join(outDir, 'robots.txt'), content, 'utf-8');\n files.push('robots.txt');\n } catch (e: any) {\n errors.push(`robots.txt: ${e.message}`);\n }\n }\n\n if (config.generators.llmsTxt) {\n try {\n const content = genLlms(config);\n writeFileSync(join(outDir, 'llms.txt'), content, 'utf-8');\n files.push('llms.txt');\n } catch (e: any) {\n errors.push(`llms.txt: ${e.message}`);\n }\n }\n\n if (config.generators.llmsFullTxt) {\n try {\n const content = genLlmsFull(config);\n writeFileSync(join(outDir, 'llms-full.txt'), content, 'utf-8');\n files.push('llms-full.txt');\n } catch (e: any) {\n errors.push(`llms-full.txt: ${e.message}`);\n }\n }\n\n if (config.generators.rawMarkdown) {\n // Generate page .md files first (auto-extracted from build output)\n try {\n const generated = generatePageMarkdownFiles(config);\n for (const f of generated) {\n files.push(f.destination);\n }\n } catch (e: any) {\n errors.push(`page-markdown: ${e.message}`);\n }\n\n // Then copy handwritten .md from contentDir (these take priority, overwriting generated ones)\n try {\n const copied = copyMarkdownFiles(config);\n for (const f of copied) {\n files.push(f.destination);\n }\n } catch (e: any) {\n errors.push(`raw-markdown: ${e.message}`);\n }\n }\n\n if (config.generators.manifest) {\n try {\n const content = genManifest(config);\n writeFileSync(join(outDir, 'docs.json'), content, 'utf-8');\n files.push('docs.json');\n } catch (e: any) {\n errors.push(`docs.json: ${e.message}`);\n }\n }\n\n if (config.generators.sitemap) {\n try {\n const content = genSitemap(config);\n writeFileSync(join(outDir, 'sitemap.xml'), content, 'utf-8');\n files.push('sitemap.xml');\n } catch (e: any) {\n errors.push(`sitemap.xml: ${e.message}`);\n }\n }\n\n if (config.generators.aiIndex) {\n try {\n const content = genAIIndex(config);\n writeFileSync(join(outDir, 'ai-index.json'), content, 'utf-8');\n files.push('ai-index.json');\n } catch (e: any) {\n errors.push(`ai-index.json: ${e.message}`);\n }\n }\n\n if (config.generators.schema && config.schema.enabled) {\n try {\n const content = genSchema(config);\n writeFileSync(join(outDir, 'schema.json'), content, 'utf-8');\n files.push('schema.json');\n } catch (e: any) {\n errors.push(`schema.json: ${e.message}`);\n }\n }\n\n return { files, errors };\n}\n","import { generateAEOFiles } from '../core/generate';\nimport { resolveConfig } from '../core/utils';\nimport type { AeoConfig, PageEntry } from '../types';\nimport { join } from 'path';\nimport { existsSync, readFileSync, readdirSync, statSync } from 'fs';\n\nfunction scanHtmlAssets(compilation: any): PageEntry[] {\n const pages: PageEntry[] = [];\n try {\n for (const [name, source] of Object.entries(compilation.assets)) {\n if (name.endsWith('.html') && name !== '404.html' && name !== '500.html') {\n const html = (source as any).source?.().toString() || '';\n const titleMatch = html.match(/<title>([^<]*)<\\/title>/i);\n const descMatch = html.match(/<meta\\s+name=[\"']description[\"']\\s+content=[\"']([^\"']*)[\"']/i);\n let pathname = '/' + name.replace(/\\/?index\\.html$/, '').replace(/\\.html$/, '');\n pathname = pathname.replace(/\\/+/g, '/') || '/';\n pages.push({\n pathname,\n title: titleMatch?.[1]?.split('|')[0]?.trim(),\n description: descMatch?.[1],\n });\n }\n }\n } catch { /* skip */ }\n return pages;\n}\n\nexport class AeoWebpackPlugin {\n private options: AeoConfig;\n private resolvedConfig: ReturnType<typeof resolveConfig>;\n\n constructor(options: AeoConfig = {}) {\n this.options = options;\n this.resolvedConfig = resolveConfig(options);\n }\n\n apply(compiler: any): void {\n const pluginName = 'AeoWebpackPlugin';\n\n compiler.hooks.beforeCompile.tapAsync(pluginName, async (_params: any, callback: any) => {\n this.resolvedConfig = resolveConfig({\n ...this.options,\n outDir: this.options.outDir || compiler.options.output?.path || join(process.cwd(), 'dist'),\n });\n\n console.log('[aeo.js] Generating AEO files...');\n\n try {\n const result = await generateAEOFiles(this.resolvedConfig);\n\n if (result.files.length > 0) {\n console.log(`[aeo.js] Generated ${result.files.length} files:`);\n result.files.forEach((file: string) => {\n console.log(` - ${file}`);\n });\n }\n\n if (result.errors.length > 0) {\n console.error('[aeo.js] Errors during generation:');\n result.errors.forEach((error: string) => {\n console.error(` - ${error}`);\n });\n }\n } catch (error) {\n console.error('[aeo.js] Failed to generate AEO files:', error);\n }\n\n callback();\n });\n\n if (compiler.options.mode === 'development' && this.resolvedConfig.contentDir) {\n const contentPath = join(process.cwd(), this.resolvedConfig.contentDir);\n\n compiler.hooks.afterCompile.tap(pluginName, (compilation: any) => {\n compilation.contextDependencies.add(contentPath);\n });\n\n compiler.hooks.watchRun.tapAsync(pluginName, async (comp: any, callback: any) => {\n const changedFiles = Array.from(comp.modifiedFiles || []) as string[];\n const hasMarkdownChanges = changedFiles.some((file: string) => file.endsWith('.md'));\n\n if (hasMarkdownChanges) {\n console.log('[aeo.js] Markdown files changed, regenerating...');\n\n try {\n const result = await generateAEOFiles(this.resolvedConfig);\n if (result.files.length > 0) {\n console.log(`[aeo.js] Regenerated ${result.files.length} files`);\n }\n if (result.errors.length > 0) {\n console.error('[aeo.js] Errors during regeneration:', result.errors);\n }\n } catch (error) {\n console.error('[aeo.js] Failed to regenerate AEO files:', error);\n }\n }\n\n callback();\n });\n }\n\n compiler.hooks.emit.tapAsync(pluginName, async (compilation: any, callback: any) => {\n // Discover pages from HTML assets in the compilation\n const discoveredPages = scanHtmlAssets(compilation);\n if (discoveredPages.length > 0) {\n console.log(`[aeo.js] Discovered ${discoveredPages.length} pages from build output`);\n this.resolvedConfig = resolveConfig({\n ...this.options,\n outDir: this.resolvedConfig.outDir,\n pages: [...(this.options.pages || []), ...discoveredPages],\n });\n\n // Regenerate with page data\n try {\n await generateAEOFiles(this.resolvedConfig);\n } catch (error) {\n console.error('[aeo.js] Failed to regenerate with pages:', error);\n }\n }\n\n const aeoFiles = ['robots.txt', 'llms.txt', 'llms-full.txt', 'sitemap.xml', 'docs.json', 'ai-index.json'];\n\n aeoFiles.forEach(filename => {\n const filepath = join(this.resolvedConfig.outDir, filename);\n try {\n if (existsSync(filepath)) {\n const content = readFileSync(filepath);\n compilation.assets[filename] = {\n source: () => content,\n size: () => content.length,\n };\n }\n } catch (error) {\n console.warn(`[aeo.js] Could not add ${filename} to assets:`, error);\n }\n });\n\n callback();\n });\n\n if (this.resolvedConfig.widget.enabled) {\n compiler.hooks.compilation.tap(pluginName, (compilation: any) => {\n try {\n const HtmlWebpackPlugin = require('html-webpack-plugin');\n const hooks = HtmlWebpackPlugin.getHooks(compilation);\n\n hooks.beforeEmit.tapAsync(pluginName, (data: any, callback: any) => {\n const widgetScript = `\n<script type=\"module\">\n import { AeoWidget } from 'aeo.js/widget';\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', () => {\n new AeoWidget(${JSON.stringify(this.resolvedConfig.widget)});\n });\n } else {\n new AeoWidget(${JSON.stringify(this.resolvedConfig.widget)});\n }\n</script>`;\n data.html = data.html.replace('</body>', `${widgetScript}\\n</body>`);\n callback(null, data);\n });\n } catch (error) {\n // HtmlWebpackPlugin not available, skip widget injection\n }\n });\n }\n }\n}\n\nexport function createAeoWebpackPlugin(options?: AeoConfig): AeoWebpackPlugin {\n return new AeoWebpackPlugin(options);\n}\n\nexport default AeoWebpackPlugin;\n"]}