aeo.js 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +188 -6
- package/dist/astro.d.mts +9 -0
- package/dist/astro.d.ts +9 -0
- package/dist/astro.js +1179 -0
- package/dist/astro.js.map +1 -0
- package/dist/astro.mjs +1172 -0
- package/dist/astro.mjs.map +1 -0
- package/dist/index.d.mts +17 -0
- package/dist/index.d.ts +17 -1
- package/dist/index.js +876 -1
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +869 -1
- package/dist/index.mjs.map +1 -0
- package/dist/next.d.mts +33 -0
- package/dist/next.d.ts +33 -0
- package/dist/next.js +1113 -0
- package/dist/next.js.map +1 -0
- package/dist/next.mjs +1106 -0
- package/dist/next.mjs.map +1 -0
- package/dist/react.d.mts +10 -0
- package/dist/react.d.ts +10 -0
- package/dist/react.js +1023 -0
- package/dist/react.js.map +1 -0
- package/dist/react.mjs +1020 -0
- package/dist/react.mjs.map +1 -0
- package/dist/types-BTY-v-7i.d.mts +132 -0
- package/dist/types-BTY-v-7i.d.ts +132 -0
- package/dist/webpack.d.mts +11 -0
- package/dist/webpack.d.ts +11 -0
- package/dist/webpack.js +1019 -0
- package/dist/webpack.js.map +1 -0
- package/dist/webpack.mjs +1013 -0
- package/dist/webpack.mjs.map +1 -0
- package/dist/widget.d.mts +37 -0
- package/dist/widget.d.ts +37 -0
- package/dist/widget.js +1004 -0
- package/dist/widget.js.map +1 -0
- package/dist/widget.mjs +1001 -0
- package/dist/widget.mjs.map +1 -0
- package/package.json +64 -10
- package/dist/cli.js +0 -2
|
@@ -0,0 +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, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\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"]}
|