{"version":3,"sources":["../src/api-reference.ts","../src/blog.ts","../src/case-study.ts","../src/glossary.ts","../src/integration.ts","../src/legal.ts","../src/compare.ts","../src/tool.ts","../src/video.ts","../src/feature.ts","../src/pseo.ts","../src/changelog.ts","../src/status-page.ts","../src/pricing.ts","../src/docs.ts","../src/index.ts"],"names":["joinLines","cleanBody","normalizeUnicode","fmtDate","renderFAQSection","slugToTitle"],"mappings":"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","file":"index.cjs","sourcesContent":["import { cleanBody, joinLines, normalizeUnicode } from \"@dualmark/core\";\nimport type { BaseConverterConfig, CollectionEntry, Converter } from \"./types.js\";\n\nexport interface ApiReferenceConverterConfig extends BaseConverterConfig {\n  basePath?: string;\n}\n\nexport interface OpenAPISchema {\n  type?: string | string[];\n  properties?: Record<string, OpenAPISchema>;\n  items?: OpenAPISchema;\n  required?: string[];\n  description?: string;\n  $ref?: string;\n  [key: string]: unknown;\n}\n\nexport interface OpenAPIParameter {\n  name: string;\n  in: string;\n  required?: boolean;\n  schema?: OpenAPISchema;\n  description?: string;\n  [key: string]: unknown;\n}\n\nexport interface OpenAPIMediaType {\n  schema?: OpenAPISchema;\n  [key: string]: unknown;\n}\n\nexport interface OpenAPIRequestBody {\n  description?: string;\n  content?: Record<string, OpenAPIMediaType>;\n  required?: boolean;\n  [key: string]: unknown;\n}\n\nexport interface OpenAPIResponse {\n  description?: string;\n  content?: Record<string, OpenAPIMediaType>;\n  [key: string]: unknown;\n}\n\nexport interface OpenAPIOperation {\n  operationId?: string;\n  summary?: string;\n  description?: string;\n  tags?: string[];\n  parameters?: OpenAPIParameter[];\n  requestBody?: OpenAPIRequestBody;\n  responses?: Record<string, OpenAPIResponse>;\n  \"x-codeSamples\"?: Array<{ lang: string; source: string; label?: string }>;\n  [key: string]: unknown;\n}\n\nexport interface ApiReferenceEntryData {\n  title: string;\n  summary?: string;\n  description?: string;\n  method: string;\n  path: string;\n  tags?: string[];\n  parameters?: OpenAPIParameter[];\n  requestBody?: OpenAPIRequestBody;\n  responses?: Record<string, OpenAPIResponse>;\n  codeSamples?: Array<{ lang: string; source: string; label?: string }>;\n}\n\nexport function apiReferenceConverter(\n  config: ApiReferenceConverterConfig,\n): Converter<CollectionEntry<ApiReferenceEntryData>> {\n  const basePath = config.basePath ?? \"/docs\";\n  return (entry) => {\n    const d = entry.data;\n\n    const parts: string[] = [`# ${d.title}`];\n    if (d.summary) {\n      parts.push(`\\n> ${d.summary}`);\n    }\n\n    parts.push(\"\");\n    parts.push(`- **Method**: ${d.method.toUpperCase()}`);\n    parts.push(`- **Path**: \\`${d.path}\\``);\n    parts.push(`- **URL**: ${config.siteUrl}${basePath}/${entry.id}`);\n\n    if (d.description) {\n      parts.push(`\\n${d.description}`);\n    }\n\n    if (d.parameters && d.parameters.length > 0) {\n      parts.push(\"\\n## Parameters\\n\");\n      parts.push(\"| Name | In | Type | Required | Description |\");\n      parts.push(\"| --- | --- | --- | --- | --- |\");\n      for (const p of d.parameters) {\n        const typeStr = formatSchemaType(p.schema);\n        const reqStr = p.required ? \"Yes\" : \"No\";\n        const desc = p.description ? p.description.replace(/\\n/g, \" \") : \"\";\n        parts.push(`| \\`${escapeCell(p.name)}\\` | ${escapeCell(p.in)} | ${escapeCell(typeStr)} | ${reqStr} | ${escapeCell(desc)} |`);\n      }\n    }\n\n    if (d.requestBody) {\n      parts.push(\"\\n## Request Body\\n\");\n      parts.push(formatRequestBody(d.requestBody));\n    }\n\n    if (d.responses && Object.keys(d.responses).length > 0) {\n      parts.push(\"\\n## Responses\\n\");\n      parts.push(formatResponses(d.responses));\n    }\n\n    if (d.codeSamples && d.codeSamples.length > 0) {\n      parts.push(\"\\n## Code Samples\\n\");\n      for (const cs of d.codeSamples) {\n        if (cs.label) parts.push(`### ${cs.label}`);\n        parts.push(\"```\" + cs.lang);\n        parts.push(cs.source);\n        parts.push(\"```\");\n      }\n    }\n\n    const md = joinLines(\n      ...parts,\n      entry.body && \"\\n---\",\n      entry.body && `\\n${cleanBody(entry.body)}`,\n      config.brandFooter && \"\\n---\",\n      config.brandFooter && `\\n${config.brandFooter}`,\n    );\n    return normalizeUnicode(md);\n  };\n}\n\nfunction escapeCell(val?: string): string {\n  return val ? String(val).replace(/\\|/g, \"\\\\|\") : \"\";\n}\n\nfunction formatSchemaType(schema?: OpenAPISchema): string {\n  if (!schema) return \"Any\";\n  if (schema.$ref && typeof schema.$ref === \"string\") return `\\`${schema.$ref}\\``;\n  let t = schema.type;\n  if (Array.isArray(t)) {\n    // OpenAPI 3.1 nullable\n    t = t.join(\" | \");\n  }\n  return t ? `\\`${t}\\`` : \"Any\";\n}\n\ninterface FlattenedField {\n  name: string;\n  type: string;\n  required: boolean;\n  description: string;\n}\n\nfunction flattenSchema(schema?: OpenAPISchema, prefix = \"\"): FlattenedField[] {\n  if (!schema) return [];\n  if (schema.$ref && typeof schema.$ref === \"string\") return [];\n\n  const fields: FlattenedField[] = [];\n  if (schema.type === \"object\" && schema.properties) {\n    const reqSet = new Set(schema.required || []);\n    for (const [key, prop] of Object.entries(schema.properties)) {\n      const propName = prefix ? `${prefix}.${key}` : key;\n      const typeStr = formatSchemaType(prop);\n      fields.push({\n        name: propName,\n        type: typeStr,\n        required: reqSet.has(key),\n        description: prop.description ? prop.description.replace(/\\n/g, \" \") : \"\",\n      });\n      // recurse\n      if (prop.type === \"object\" && prop.properties) {\n        fields.push(...flattenSchema(prop, propName));\n      } else if (prop.type === \"array\" && prop.items && typeof prop.items === \"object\") {\n        if (prop.items.type === \"object\" && prop.items.properties) {\n          fields.push(...flattenSchema(prop.items, `${propName}[]`));\n        }\n      }\n    }\n  } else if (schema.type === \"array\" && schema.items && typeof schema.items === \"object\") {\n    if (schema.items.type === \"object\" && schema.items.properties) {\n      fields.push(...flattenSchema(schema.items, `${prefix ? prefix + \"[]\" : \"[]\"}`));\n    }\n  }\n  return fields;\n}\n\nfunction formatRequestBody(reqBody: OpenAPIRequestBody): string {\n  let out = \"\";\n  if (reqBody.description) {\n    out += reqBody.description + \"\\n\\n\";\n  }\n  if (reqBody.content) {\n    for (const [mediaType, media] of Object.entries(reqBody.content)) {\n      out += `**Content-Type**: \\`${mediaType}\\`\\n\\n`;\n      if (media.schema) {\n        const fields = flattenSchema(media.schema);\n        if (fields.length > 0) {\n          out += \"| Name | Type | Required | Description |\\n\";\n          out += \"| --- | --- | --- | --- |\\n\";\n          for (const f of fields) {\n            const reqStr = f.required ? \"Yes\" : \"No\";\n            out += `| \\`${escapeCell(f.name)}\\` | ${escapeCell(f.type)} | ${reqStr} | ${escapeCell(f.description)} |\\n`;\n          }\n          out += \"\\n\";\n        }\n      }\n    }\n  }\n  return out.trim();\n}\n\nfunction formatResponses(responses: Record<string, OpenAPIResponse>): string {\n  let out = \"\";\n  for (const [code, info] of Object.entries(responses)) {\n    out += `### ${code}\\n\\n`;\n    if (info.description) {\n      out += `${info.description}\\n\\n`;\n    }\n    if (info.content) {\n      for (const [mediaType, media] of Object.entries(info.content)) {\n        out += `**Content-Type**: \\`${mediaType}\\`\\n\\n`;\n        if (media.schema) {\n          const fields = flattenSchema(media.schema);\n          if (fields.length > 0) {\n            out += \"| Name | Type | Required | Description |\\n\";\n            out += \"| --- | --- | --- | --- |\\n\";\n            for (const f of fields) {\n              const reqStr = f.required ? \"Yes\" : \"No\";\n              out += `| \\`${escapeCell(f.name)}\\` | ${escapeCell(f.type)} | ${reqStr} | ${escapeCell(f.description)} |\\n`;\n            }\n            out += \"\\n\";\n          }\n        }\n      }\n    }\n  }\n  return out.trim();\n}\n\nexport function fromOpenAPI(spec: any, operationId: string): CollectionEntry<ApiReferenceEntryData> {\n  if (!spec || !spec.paths) throw new Error(\"Dualmark: Invalid OpenAPI spec\");\n\n  const allOps: string[] = [];\n  let foundPath: string | null = null;\n  let foundMethod: string | null = null;\n  let foundOp: OpenAPIOperation | null = null;\n  let foundPathItem: any = null;\n\n  for (const [path, pathItem] of Object.entries(spec.paths)) {\n    for (const [method, operation] of Object.entries(pathItem as any)) {\n      if (\n        typeof operation === \"object\" &&\n        operation !== null &&\n        \"operationId\" in operation &&\n        typeof (operation as any).operationId === \"string\"\n      ) {\n        allOps.push((operation as any).operationId);\n        if ((operation as any).operationId === operationId) {\n          foundPath = path;\n          foundMethod = method;\n          foundOp = operation as OpenAPIOperation;\n          foundPathItem = pathItem;\n        }\n      }\n    }\n  }\n\n  if (!foundOp) {\n    throw new Error(\n      `Dualmark: operationId '${operationId}' not found. Available ids: ${allOps.join(\", \")}`,\n    );\n  }\n\n  const resolveRef = (obj: any, seen = new Set<string>()): any => {\n    if (!obj || typeof obj !== \"object\") return obj;\n    if (obj.$ref && typeof obj.$ref === \"string\") {\n      if (seen.has(obj.$ref)) {\n        return { $ref: obj.$ref }; // Stop circular recursion\n      }\n      seen.add(obj.$ref);\n      let target = spec;\n      const parts = obj.$ref.replace(/^#\\//, \"\").split(\"/\");\n      for (const part of parts) {\n        if (target && part in target) {\n          target = target[part];\n        } else {\n          target = undefined;\n          break;\n        }\n      }\n      return target ? resolveRef(target, new Set(seen)) : obj;\n    }\n    const resolved: any = Array.isArray(obj) ? [] : {};\n    for (const [k, v] of Object.entries(obj)) {\n      resolved[k] = resolveRef(v, new Set(seen));\n    }\n    return resolved;\n  };\n\n  const pathParams = Array.isArray(foundPathItem.parameters)\n    ? foundPathItem.parameters.map((p: any) => resolveRef(p))\n    : [];\n  const opParams = Array.isArray(foundOp.parameters)\n    ? foundOp.parameters.map((p: any) => resolveRef(p))\n    : [];\n\n  const mergedParams = [...pathParams];\n  for (const p of opParams) {\n    const idx = mergedParams.findIndex((x) => x.name === p.name && x.in === p.in);\n    if (idx >= 0) mergedParams[idx] = p;\n    else mergedParams.push(p);\n  }\n\n  return {\n    id: operationId,\n    data: {\n      title: foundOp.summary || operationId,\n      summary: foundOp.summary !== (foundOp.summary || operationId) ? foundOp.summary : undefined,\n      description: foundOp.description,\n      method: foundMethod as string,\n      path: foundPath as string,\n      tags: foundOp.tags,\n      parameters: mergedParams.length > 0 ? mergedParams : undefined,\n      requestBody: resolveRef(foundOp.requestBody),\n      responses: resolveRef(foundOp.responses),\n      codeSamples: foundOp[\"x-codeSamples\"] || [],\n    },\n  };\n}\n","import { joinLines, fmtDate, cleanBody, normalizeUnicode } from \"@dualmark/core\";\nimport type { BaseConverterConfig, CollectionEntry, Converter } from \"./types.js\";\n\nexport interface BlogConverterConfig extends BaseConverterConfig {\n  basePath?: string;\n  categoryBasePath?: string;\n  showAllArticlesLink?: boolean;\n}\n\nexport interface BlogEntryData {\n  title: string;\n  description?: string;\n  author?: string;\n  publishedDate: Date;\n  modifiedDate?: Date;\n  category?: string | string[];\n}\n\nexport function blogConverter(\n  config: BlogConverterConfig,\n): Converter<CollectionEntry<BlogEntryData>> {\n  const basePath = config.basePath ?? \"/blog\";\n  const categoryBasePath = config.categoryBasePath ?? `${basePath}/category`;\n  const showAllArticles = config.showAllArticlesLink !== false;\n\n  return (entry) => {\n    const d = entry.data;\n    const cats = d.category ? (Array.isArray(d.category) ? d.category : [d.category]) : [];\n\n    const base = joinLines(\n      `# ${d.title}`,\n      d.description && `\\n> ${d.description}`,\n      \"\",\n      d.author && `- **Author**: ${d.author}`,\n      `- **Published**: ${fmtDate(d.publishedDate)}`,\n      d.modifiedDate && `- **Modified**: ${fmtDate(d.modifiedDate)}`,\n      cats.length > 0 && `- **Category**: ${cats.join(\", \")}`,\n      `- **URL**: ${config.siteUrl}${basePath}/${entry.id}`,\n      \"\\n---\",\n      entry.body && `\\n${cleanBody(entry.body)}`,\n    );\n\n    const footer: string[] = [\"\\n---\"];\n    if (cats.length > 0 && cats[0]) {\n      const catSlug = cats[0]\n        .toLowerCase()\n        .replace(/[^a-z0-9]+/g, \"-\")\n        .replace(/(^-|-$)/g, \"\");\n      footer.push(`- [More ${cats[0]} articles](${config.siteUrl}${categoryBasePath}/${catSlug})`);\n    }\n    if (showAllArticles) {\n      footer.push(`- [All articles](${config.siteUrl}${basePath})`);\n    }\n    if (config.brandFooter) footer.push(\"\", config.brandFooter);\n    // Separate the body from the footer with a blank line. `base` ends with the\n    // body's last line (no trailing newline) and `footer` starts with \"---\";\n    // without the blank line CommonMark parses \"lastline\\n---\" as a setext H2,\n    // turning the final body line into a heading and swallowing the rule.\n    return normalizeUnicode(base + \"\\n\" + footer.join(\"\\n\"));\n  };\n}\n","import { joinLines, fmtDate, cleanBody, normalizeUnicode } from \"@dualmark/core\";\nimport type { BaseConverterConfig, CollectionEntry, Converter } from \"./types.js\";\n\nexport interface CaseStudyConverterConfig extends BaseConverterConfig {\n  basePath?: string;\n}\n\nexport interface CaseStudyEntryData {\n  title: string;\n  description?: string;\n  company: string;\n  industry?: string;\n  publishedDate: Date;\n  stats?: Array<{ value: string; label: string }>;\n  quote?: { text: string; attribution?: string };\n}\n\nexport function caseStudyConverter(\n  config: CaseStudyConverterConfig,\n): Converter<CollectionEntry<CaseStudyEntryData>> {\n  const basePath = config.basePath ?? \"/case-studies\";\n  return (entry) => {\n    const d = entry.data;\n    const statsBlock =\n      d.stats && d.stats.length > 0\n        ? \"\\n## Key Metrics\\n\\n\" + d.stats.map((s) => `- **${s.value}** -- ${s.label}`).join(\"\\n\")\n        : \"\";\n\n    const quoteBlock =\n      d.quote && d.quote.text\n        ? `\\n## Quote\\n\\n> ${d.quote.text}` +\n          (d.quote.attribution ? `\\n>\\n> -- ${d.quote.attribution}` : \"\")\n        : \"\";\n\n    const md = joinLines(\n      `# ${d.title}`,\n      d.description && `\\n> ${d.description}`,\n      \"\",\n      `- **Company**: ${d.company}`,\n      d.industry && `- **Industry**: ${d.industry}`,\n      `- **Published**: ${fmtDate(d.publishedDate)}`,\n      `- **URL**: ${config.siteUrl}${basePath}/${entry.id}`,\n      statsBlock,\n      quoteBlock,\n      \"\\n---\",\n      entry.body && `\\n${cleanBody(entry.body)}`,\n      config.brandFooter && \"\\n---\",\n      config.brandFooter && `\\n${config.brandFooter}`,\n    );\n    return normalizeUnicode(md);\n  };\n}\n","import { joinLines, cleanBody, normalizeUnicode } from \"@dualmark/core\";\nimport type { BaseConverterConfig, CollectionEntry, Converter } from \"./types.js\";\n\nexport interface GlossaryConverterConfig extends BaseConverterConfig {\n  basePath?: string;\n}\n\nexport interface GlossaryEntryData {\n  title: string;\n  summary?: string;\n  learnMore?: Array<{ title: string; href: string }>;\n  canonicalBlog?: string;\n}\n\nexport function glossaryConverter(\n  config: GlossaryConverterConfig,\n): Converter<CollectionEntry<GlossaryEntryData>> {\n  const basePath = config.basePath ?? \"/glossary\";\n  return (entry) => {\n    const parts: string[] = [];\n    parts.push(\n      joinLines(\n        `# ${entry.data.title}`,\n        entry.data.summary && `\\n> ${entry.data.summary}`,\n        `\\n- **URL**: ${config.siteUrl}${basePath}/${entry.id}`,\n        \"\\n---\",\n        entry.body && `\\n${cleanBody(entry.body)}`,\n      ),\n    );\n\n    const learnMore = entry.data.learnMore;\n    if (learnMore && learnMore.length > 0) {\n      parts.push(\"\\n## Learn More\\n\");\n      for (const link of learnMore) {\n        const href = link.href.startsWith(\"http\") ? link.href : `${config.siteUrl}${link.href}`;\n        parts.push(`- [${link.title}](${href})`);\n      }\n    }\n\n    if (entry.data.canonicalBlog) {\n      const href = entry.data.canonicalBlog.startsWith(\"http\")\n        ? entry.data.canonicalBlog\n        : `${config.siteUrl}${entry.data.canonicalBlog}`;\n      parts.push(`\\n- [Read the full guide](${href})`);\n    }\n\n    if (config.brandFooter) parts.push(\"\", \"---\", config.brandFooter);\n\n    return normalizeUnicode(parts.join(\"\\n\"));\n  };\n}\n","import { cleanBody, normalizeUnicode } from \"@dualmark/core\";\nimport type { BaseConverterConfig, CollectionEntry, Converter } from \"./types.js\";\n\nexport interface IntegrationConverterConfig extends BaseConverterConfig {\n  basePath: string;\n}\n\nexport interface IntegrationEntryData {\n  title: string;\n  vendor: string;\n  categories: string[];\n  description: string;\n  capabilities: string[];\n  setupSteps?: string[];\n  pricing?: string;\n  requirements?: string[];\n}\n\nfunction resolveIntegrationHeading(\n  entry: CollectionEntry<IntegrationEntryData>,\n  data: IntegrationEntryData,\n): string {\n  const fromTitle = typeof data.title === \"string\" ? data.title.trim() : \"\";\n  if (fromTitle !== \"\") return fromTitle;\n\n  const fromVendor = typeof data.vendor === \"string\" ? data.vendor.trim() : \"\";\n  if (fromVendor !== \"\") return fromVendor;\n\n  return entry.id;\n}\n\nexport function integrationConverter(\n  config: IntegrationConverterConfig,\n): Converter<CollectionEntry<IntegrationEntryData>> {\n  const { basePath, siteUrl, brandFooter } = config;\n  return (entry) => {\n    const d = entry.data;\n    const parts: string[] = [`# ${resolveIntegrationHeading(entry, d)}`];\n\n    parts.push(`\\n- **URL**: ${siteUrl}${basePath}/${entry.id}`);\n    parts.push(`- **Vendor**: ${d.vendor}`);\n    if (d.categories.length > 0) {\n      parts.push(`- **Categories**: ${d.categories.join(\", \")}`);\n    }\n\n    if (d.description) {\n      parts.push(`\\n> ${d.description}`);\n    }\n\n    if (d.capabilities.length > 0) {\n      parts.push(`\\n## Capabilities\\n\\n${d.capabilities.map((c) => `- ${c}`).join(\"\\n\")}`);\n    }\n\n    if (d.setupSteps && d.setupSteps.length > 0) {\n      parts.push(`\\n## Setup\\n\\n${d.setupSteps.map((s, i) => `${i + 1}. ${s}`).join(\"\\n\")}`);\n    }\n\n    if (d.pricing) {\n      parts.push(`\\n## Pricing\\n\\n${d.pricing}`);\n    }\n\n    if (d.requirements && d.requirements.length > 0) {\n      parts.push(`\\n## Requirements\\n\\n${d.requirements.map((r) => `- ${r}`).join(\"\\n\")}`);\n    }\n\n    if (entry.body) {\n      parts.push(`\\n---\\n\\n${cleanBody(entry.body)}`);\n    }\n\n    if (brandFooter) {\n      parts.push(`\\n---\\n${brandFooter}`);\n    }\n\n    return normalizeUnicode(parts.join(\"\\n\"));\n  };\n}\n","import { joinLines, fmtDate, cleanBody } from \"@dualmark/core\";\nimport type { BaseConverterConfig, CollectionEntry, Converter } from \"./types.js\";\n\nexport interface LegalConverterConfig extends BaseConverterConfig {\n  basePath?: string;\n}\n\nexport interface LegalEntryData {\n  title: string;\n  lastUpdated?: Date;\n}\n\nexport function legalConverter(\n  config: LegalConverterConfig,\n): Converter<CollectionEntry<LegalEntryData>> {\n  const basePath = config.basePath ?? \"/legal\";\n  return (entry) =>\n    joinLines(\n      `# ${entry.data.title}`,\n      entry.data.lastUpdated && `\\n- **Last Updated**: ${fmtDate(entry.data.lastUpdated)}`,\n      `- **URL**: ${config.siteUrl}${basePath}/${entry.id}`,\n      \"\\n---\",\n      entry.body && `\\n${cleanBody(entry.body)}`,\n      config.brandFooter && \"\\n---\",\n      config.brandFooter && `\\n${config.brandFooter}`,\n    );\n}\n","import { cleanBody, normalizeUnicode } from \"@dualmark/core\";\nimport type { BaseConverterConfig, CollectionEntry, Converter } from \"./types.js\";\n\nexport interface CompareConverterConfig extends BaseConverterConfig {\n  basePath?: string;\n  ourBrandColumn: string;\n}\n\nexport interface CompareEntryData {\n  title: string;\n  description?: string;\n  competitorName?: string;\n  featureCards?: Array<{ title: string; description: string }>;\n  comparison?: Array<{ feature: string; ours: string; competitor: string }>;\n}\n\nexport function compareConverter(\n  config: CompareConverterConfig,\n): Converter<CollectionEntry<CompareEntryData>> {\n  const basePath = config.basePath ?? \"/compare\";\n  return (entry) => {\n    const d = entry.data;\n    const parts: string[] = [`# ${d.title}`];\n    if (d.description) parts.push(`\\n> ${d.description}`);\n    parts.push(`\\n- **URL**: ${config.siteUrl}${basePath}/${entry.id}`);\n\n    if (d.featureCards && d.featureCards.length > 0) {\n      parts.push(\"\\n## Key Advantages\\n\");\n      for (const card of d.featureCards) {\n        parts.push(`### ${card.title}\\n`);\n        parts.push(`${card.description}\\n`);\n      }\n    }\n\n    if (d.comparison && d.comparison.length > 0) {\n      parts.push(\"## Comparison\\n\");\n      const comp = d.competitorName || \"Competitor\";\n      parts.push(`| Feature | ${config.ourBrandColumn} | ${comp} |`);\n      parts.push(\"|---|---|---|\");\n      for (const row of d.comparison) {\n        parts.push(`| ${row.feature} | ${row.ours} | ${row.competitor} |`);\n      }\n      parts.push(\"\");\n    }\n\n    if (entry.body) {\n      parts.push(\"---\");\n      parts.push(`\\n${cleanBody(entry.body)}`);\n    }\n\n    if (config.brandFooter) {\n      parts.push(\"\\n---\");\n      parts.push(config.brandFooter);\n    }\n\n    return normalizeUnicode(parts.join(\"\\n\"));\n  };\n}\n","import { joinLines, cleanBody } from \"@dualmark/core\";\nimport type { BaseConverterConfig, CollectionEntry, Converter } from \"./types.js\";\n\nexport interface ToolConverterConfig extends BaseConverterConfig {\n  basePath?: string;\n}\n\nexport interface ToolEntryData {\n  title: string;\n  description: string;\n}\n\nexport function toolConverter(\n  config: ToolConverterConfig,\n): Converter<CollectionEntry<ToolEntryData>> {\n  const basePath = config.basePath ?? \"/tools\";\n  return (entry) =>\n    joinLines(\n      `# ${entry.data.title}`,\n      `\\n> ${entry.data.description}`,\n      `\\n- **URL**: ${config.siteUrl}${basePath}/${entry.id}`,\n      \"\\n---\",\n      entry.body && `\\n${cleanBody(entry.body)}`,\n      config.brandFooter && \"\\n---\",\n      config.brandFooter && `\\n${config.brandFooter}`,\n    );\n}\n","import { joinLines, cleanBody } from \"@dualmark/core\";\nimport type { BaseConverterConfig, CollectionEntry, Converter } from \"./types.js\";\n\nexport interface VideoConverterConfig extends BaseConverterConfig {\n  basePath?: string;\n}\n\nexport interface VideoEntryData {\n  title: string;\n  description?: string;\n  videoUrl: string;\n}\n\nexport function videoConverter(\n  config: VideoConverterConfig,\n): Converter<CollectionEntry<VideoEntryData>> {\n  const basePath = config.basePath ?? \"/videos\";\n  return (entry) =>\n    joinLines(\n      `# ${entry.data.title}`,\n      entry.data.description && `\\n> ${entry.data.description}`,\n      `\\n- **URL**: ${config.siteUrl}${basePath}/${entry.id}`,\n      `- **Video**: ${entry.data.videoUrl}`,\n      \"\\n---\",\n      entry.body && `\\n${cleanBody(entry.body)}`,\n      config.brandFooter && \"\\n---\",\n      config.brandFooter && `\\n${config.brandFooter}`,\n    );\n}\n","import { cleanBody, normalizeUnicode, renderFAQSection, type FAQItem } from \"@dualmark/core\";\nimport type { BaseConverterConfig, CollectionEntry, Converter } from \"./types.js\";\n\nexport interface FeatureSection {\n  title: string;\n  content: string;\n}\n\nexport interface FeatureRelatedLink {\n  title: string;\n  href: string;\n}\n\nexport interface FeatureConverterConfig extends BaseConverterConfig {\n  basePath: string;\n  category?: string;\n  siblings?: Array<{ slug: string; title: string }>;\n}\n\nexport interface FeatureEntryData {\n  title: string;\n  description?: string;\n  problem?: FeatureSection[];\n  solution?: FeatureSection[];\n  sections?: FeatureSection[];\n  audience?: string[];\n  useCases?: string[];\n  docsUrl?: string;\n  faqs?: FAQItem[];\n  related?: FeatureRelatedLink[];\n}\n\nfunction renderSections(heading: string, items?: FeatureSection[]): string {\n  if (!items || items.length === 0) return \"\";\n  const blocks = items.map((s) => `### ${s.title}\\n\\n${s.content}`);\n  return `\\n## ${heading}\\n\\n${blocks.join(\"\\n\\n\")}`;\n}\n\nexport function featureConverter(\n  config: FeatureConverterConfig,\n): Converter<CollectionEntry<FeatureEntryData>> {\n  const { basePath, siteUrl, category, siblings } = config;\n  return (entry) => {\n    const d = entry.data;\n    const parts: string[] = [`# ${d.title}`];\n    if (d.description) parts.push(`\\n> ${d.description}`);\n\n    parts.push(`\\n- **URL**: ${siteUrl}${basePath}/${entry.id}`);\n    if (category) parts.push(`- **Category**: ${category}`);\n    if (d.docsUrl) parts.push(`- **Documentation**: ${d.docsUrl}`);\n    if (d.audience && d.audience.length > 0) {\n      parts.push(`- **For**: ${d.audience.join(\", \")}`);\n    }\n\n    const problemBlock = renderSections(\"The problem\", d.problem);\n    if (problemBlock) parts.push(problemBlock);\n\n    const solutionBlock = renderSections(\"The solution\", d.solution);\n    if (solutionBlock) parts.push(solutionBlock);\n\n    const customBlock = renderSections(\"Details\", d.sections);\n    if (customBlock) parts.push(customBlock);\n\n    if (d.useCases && d.useCases.length > 0) {\n      parts.push(`\\n## Use cases\\n\\n${d.useCases.map((u) => `- ${u}`).join(\"\\n\")}`);\n    }\n\n    if (entry.body) {\n      parts.push(`\\n---\\n\\n${cleanBody(entry.body)}`);\n    }\n\n    if (d.faqs && d.faqs.length > 0) {\n      parts.push(`\\n${renderFAQSection(d.faqs)}`);\n    }\n\n    const relatedLinks: FeatureRelatedLink[] = [];\n    if (d.related) relatedLinks.push(...d.related);\n    if (siblings) {\n      for (const s of siblings) {\n        if (s.slug === entry.id) continue;\n        relatedLinks.push({ title: s.title, href: `${siteUrl}${basePath}/${s.slug}` });\n      }\n    }\n    if (relatedLinks.length > 0) {\n      parts.push(\"\\n## Related\");\n      parts.push(relatedLinks.map((l) => `- [${l.title}](${l.href})`).join(\"\\n\"));\n    }\n\n    if (config.brandFooter) {\n      parts.push(`\\n---\\n${config.brandFooter}`);\n    }\n\n    return normalizeUnicode(parts.join(\"\\n\"));\n  };\n}\n","import { cleanBody, joinLines, normalizeUnicode, slugToTitle } from \"@dualmark/core\";\nimport type { BaseConverterConfig, CollectionEntry, Converter } from \"./types.js\";\n\nexport interface PseoFact {\n  label: string;\n  value: string;\n}\n\nexport interface PseoRelatedGroup {\n  title: string;\n  basePath: string;\n  slugs: string[];\n  titleTransform?: \"slug-to-title\" | \"uppercase\" | ((slug: string) => string);\n}\n\nexport interface PseoConverterConfig extends BaseConverterConfig {\n  basePath: string;\n}\n\nexport interface PseoEntryData {\n  title: string;\n  description?: string;\n  facts?: PseoFact[];\n  related?: PseoRelatedGroup[];\n}\n\nfunction applyTitleTransform(\n  slug: string,\n  transform: PseoRelatedGroup[\"titleTransform\"],\n): string {\n  if (!transform || transform === \"slug-to-title\") return slugToTitle(slug);\n  if (transform === \"uppercase\") return slug.toUpperCase();\n  return transform(slug);\n}\n\nexport function pseoConverter(\n  config: PseoConverterConfig,\n): Converter<CollectionEntry<PseoEntryData>> {\n  const { basePath, siteUrl } = config;\n  return (entry) => {\n    const d = entry.data;\n    const factLines = (d.facts ?? []).map((f) => `- **${f.label}**: ${f.value}`);\n\n    const head = joinLines(\n      `# ${d.title}`,\n      d.description && `\\n> ${d.description}`,\n      \"\",\n      ...factLines,\n      `- **URL**: ${siteUrl}${basePath}/${entry.id}`,\n      \"\\n---\",\n      entry.body && `\\n${cleanBody(entry.body)}`,\n    );\n\n    const relatedSections: string[] = [];\n    for (const group of d.related ?? []) {\n      if (group.slugs.length === 0) continue;\n      const items = group.slugs.map((slug) => {\n        const title = applyTitleTransform(slug, group.titleTransform);\n        return `- [${title}](${siteUrl}${group.basePath}/${slug})`;\n      });\n      relatedSections.push(`\\n## ${group.title}\\n\\n${items.join(\"\\n\")}`);\n    }\n\n    const footer = config.brandFooter ? `\\n---\\n${config.brandFooter}` : \"\";\n    return normalizeUnicode(head + relatedSections.join(\"\") + footer);\n  };\n}\n","import { cleanBody, fmtDate, joinLines, normalizeUnicode } from \"@dualmark/core\";\nimport type { BaseConverterConfig, CollectionEntry, Converter } from \"./types.js\";\n\nexport type ChangelogChangeType = \"added\" | \"changed\" | \"deprecated\" | \"removed\" | \"fixed\" | \"security\";\n\nexport interface ChangelogChange {\n  type: ChangelogChangeType;\n  description: string;\n}\n\nexport interface ChangelogConverterConfig extends BaseConverterConfig {\n  basePath?: string;\n}\n\nexport interface ChangelogEntryData {\n  version: string;\n  title?: string;\n  releasedDate: Date;\n  summary?: string;\n  changes?: ChangelogChange[];\n}\n\nconst ORDER: ChangelogChangeType[] = [\"added\", \"changed\", \"deprecated\", \"removed\", \"fixed\", \"security\"];\nconst HEADING: Record<ChangelogChangeType, string> = {\n  added: \"Added\",\n  changed: \"Changed\",\n  deprecated: \"Deprecated\",\n  removed: \"Removed\",\n  fixed: \"Fixed\",\n  security: \"Security\",\n};\n\nexport function changelogConverter(\n  config: ChangelogConverterConfig,\n): Converter<CollectionEntry<ChangelogEntryData>> {\n  const basePath = config.basePath ?? \"/changelog\";\n  return (entry) => {\n    const d = entry.data;\n    const grouped = new Map<ChangelogChangeType, string[]>();\n    for (const ch of d.changes ?? []) {\n      const list = grouped.get(ch.type) ?? [];\n      list.push(`- ${ch.description}`);\n      grouped.set(ch.type, list);\n    }\n\n    const sections: string[] = [];\n    for (const t of ORDER) {\n      const items = grouped.get(t);\n      if (items && items.length > 0) {\n        sections.push(`\\n## ${HEADING[t]}\\n\\n${items.join(\"\\n\")}`);\n      }\n    }\n\n    const md = joinLines(\n      `# ${d.title ?? d.version}`,\n      d.summary && `\\n> ${d.summary}`,\n      \"\",\n      `- **Version**: ${d.version}`,\n      `- **Released**: ${fmtDate(d.releasedDate)}`,\n      `- **URL**: ${config.siteUrl}${basePath}/${entry.id}`,\n      sections.join(\"\"),\n      \"\\n---\",\n      entry.body && `\\n${cleanBody(entry.body)}`,\n      config.brandFooter && \"\\n---\",\n      config.brandFooter && `\\n${config.brandFooter}`,\n    );\n    return normalizeUnicode(md);\n  };\n}\n","import { cleanBody, fmtDate, joinLines, normalizeUnicode } from \"@dualmark/core\";\nimport type { BaseConverterConfig, CollectionEntry, Converter } from \"./types.js\";\n\nexport type StatusPageOverallStatus =\n  | \"operational\"\n  | \"degraded\"\n  | \"partial-outage\"\n  | \"major-outage\";\n\nexport interface StatusPageComponent {\n  name: string;\n  status: string;\n  uptime90d?: number;\n}\n\nexport interface StatusPageIncident {\n  title: string;\n  date: string;\n  resolved: boolean;\n  summary: string;\n}\n\nexport interface StatusPageConverterConfig extends BaseConverterConfig {\n  /** Collection URL prefix (e.g. `/status`). Set automatically by framework adapters. */\n  basePath?: string;\n}\n\nexport interface StatusPageEntryData {\n  title: string;\n  /** Canonical status page URL. When omitted or blank, defaults to `siteUrl + basePath + / + entry.id`. */\n  url?: string;\n  overall: StatusPageOverallStatus;\n  components: StatusPageComponent[];\n  incidents?: StatusPageIncident[];\n}\n\ntype IncidentGroup = \"ongoing\" | \"resolved\";\n\nconst OVERALL_LABEL: Record<StatusPageOverallStatus, string> = {\n  operational: \"Operational\",\n  degraded: \"Degraded\",\n  \"partial-outage\": \"Partial outage\",\n  \"major-outage\": \"Major outage\",\n};\n\nconst INCIDENT_ORDER: IncidentGroup[] = [\"ongoing\", \"resolved\"];\nconst INCIDENT_HEADING: Record<IncidentGroup, string> = {\n  ongoing: \"Ongoing incidents\",\n  resolved: \"Resolved incidents\",\n};\n\nfunction formatUptime90d(uptime: number): string {\n  if (!Number.isFinite(uptime)) return String(uptime);\n  return `${uptime.toFixed(2)}%`;\n}\n\nfunction formatIncidentDate(date: string): string {\n  const parsed = new Date(date);\n  if (Number.isNaN(parsed.getTime())) return date;\n  return fmtDate(parsed);\n}\n\nfunction sortIncidentsNewestFirst(incidents: StatusPageIncident[]): StatusPageIncident[] {\n  return [...incidents].sort((a, b) => {\n    const aTime = new Date(a.date).getTime();\n    const bTime = new Date(b.date).getTime();\n    const aVal = Number.isNaN(aTime) ? -Infinity : aTime;\n    const bVal = Number.isNaN(bTime) ? -Infinity : bTime;\n    return bVal - aVal;\n  });\n}\n\nexport function statusPageConverter(\n  config: StatusPageConverterConfig,\n): Converter<CollectionEntry<StatusPageEntryData>> {\n  return (entry) => {\n    const d = entry.data;\n    const overallLabel = OVERALL_LABEL[d.overall];\n    const basePathTrim = config.basePath?.replace(/\\/$/, \"\") ?? \"\";\n    const site = config.siteUrl.replace(/\\/$/, \"\");\n    const resolvedUrl =\n      d.url !== undefined && d.url.trim() !== \"\"\n        ? d.url\n        : basePathTrim\n          ? `${site}${basePathTrim.startsWith(\"/\") ? basePathTrim : `/${basePathTrim}`}/${entry.id}`\n          : `${site}/${entry.id}`;\n\n    const components = d.components.map((component) => {\n      const uptime =\n        typeof component.uptime90d === \"number\"\n          ? ` (90d uptime ${formatUptime90d(component.uptime90d)})`\n          : \"\";\n      return `- **${component.name}**: ${component.status}${uptime}`;\n    });\n\n    const incidents = sortIncidentsNewestFirst(d.incidents ?? []);\n    const grouped = new Map<IncidentGroup, string[]>();\n    for (const incident of incidents) {\n      const key: IncidentGroup = incident.resolved ? \"resolved\" : \"ongoing\";\n      const list = grouped.get(key) ?? [];\n      const date = formatIncidentDate(incident.date);\n      list.push(`- **${incident.title}** (${date}): ${incident.summary}`);\n      grouped.set(key, list);\n    }\n\n    let incidentsSection = \"\\n## Incidents\\n\\nNo incidents reported.\";\n    if (incidents.length > 0) {\n      const sections: string[] = [];\n      for (const key of INCIDENT_ORDER) {\n        const items = grouped.get(key);\n        if (items && items.length > 0) {\n          sections.push(`\\n\\n### ${INCIDENT_HEADING[key]}\\n\\n${items.join(\"\\n\")}`);\n        }\n      }\n      incidentsSection = `\\n## Incidents${sections.join(\"\")}`;\n    }\n\n    const md = joinLines(\n      `# ${d.title}`,\n      `\\n> ${overallLabel}\\n`,\n      `- **Overall**: ${overallLabel}`,\n      `- **URL**: ${resolvedUrl}`,\n      \"\\n## Components\\n\\n\" +\n        (components.length > 0 ? components.join(\"\\n\") : \"No components listed.\"),\n      incidentsSection,\n      entry.body && \"\\n---\",\n      entry.body && `\\n${cleanBody(entry.body)}`,\n      config.brandFooter && \"\\n---\",\n      config.brandFooter && `\\n${config.brandFooter}`,\n    );\n\n    return normalizeUnicode(md);\n  };\n}\n","import { cleanBody, joinLines, normalizeUnicode, renderFAQSection, type FAQItem } from \"@dualmark/core\";\nimport type { BaseConverterConfig, CollectionEntry, Converter } from \"./types.js\";\n\nexport interface PricingTier {\n  name: string;\n  price: string;\n  billingPeriod?: string;\n  description?: string;\n  highlights?: string[];\n  cta?: { label: string; href: string };\n  recommended?: boolean;\n}\n\nexport interface PricingConverterConfig extends BaseConverterConfig {\n  basePath?: string;\n}\n\nexport interface PricingEntryData {\n  title: string;\n  description?: string;\n  tiers: PricingTier[];\n  comparisonNotes?: string;\n  faqs?: FAQItem[];\n}\n\nfunction renderTier(tier: PricingTier): string {\n  const parts: string[] = [];\n  const heading = tier.recommended ? `### ${tier.name} — recommended` : `### ${tier.name}`;\n  parts.push(heading);\n  const priceLine = tier.billingPeriod\n    ? `**${tier.price}** / ${tier.billingPeriod}`\n    : `**${tier.price}**`;\n  parts.push(priceLine);\n  if (tier.description) parts.push(tier.description);\n  if (tier.highlights && tier.highlights.length > 0) {\n    parts.push(tier.highlights.map((h) => `- ${h}`).join(\"\\n\"));\n  }\n  if (tier.cta) {\n    parts.push(`[${tier.cta.label}](${tier.cta.href})`);\n  }\n  return parts.join(\"\\n\\n\");\n}\n\nexport function pricingConverter(\n  config: PricingConverterConfig,\n): Converter<CollectionEntry<PricingEntryData>> {\n  const basePath = config.basePath ?? \"/pricing\";\n  return (entry) => {\n    const d = entry.data;\n    const tierBlocks = d.tiers.map(renderTier).join(\"\\n\\n---\\n\\n\");\n\n    const md = joinLines(\n      `# ${d.title}`,\n      d.description && `\\n> ${d.description}`,\n      \"\",\n      `- **URL**: ${config.siteUrl}${basePath}/${entry.id}`,\n      \"\\n## Plans\\n\",\n      tierBlocks,\n      d.comparisonNotes && `\\n## Notes\\n\\n${d.comparisonNotes}`,\n      d.faqs && d.faqs.length > 0 && `\\n${renderFAQSection(d.faqs)}`,\n      entry.body && \"\\n---\\n\",\n      entry.body && cleanBody(entry.body),\n      config.brandFooter && \"\\n---\",\n      config.brandFooter && `\\n${config.brandFooter}`,\n    );\n    return normalizeUnicode(md);\n  };\n}\n","import { cleanBody, joinLines, normalizeUnicode } from \"@dualmark/core\";\nimport type { BaseConverterConfig, CollectionEntry, Converter } from \"./types.js\";\n\nexport interface DocsConverterConfig extends BaseConverterConfig {\n  basePath?: string;\n}\n\nexport interface DocsEntryData {\n  title: string;\n  description?: string;\n  section?: string;\n  order?: number;\n  updatedDate?: Date;\n}\n\nexport function docsConverter(\n  config: DocsConverterConfig,\n): Converter<CollectionEntry<DocsEntryData>> {\n  const basePath = config.basePath ?? \"/docs\";\n  return (entry) => {\n    const d = entry.data;\n    const md = joinLines(\n      `# ${d.title}`,\n      d.description && `\\n> ${d.description}`,\n      \"\",\n      d.section && `- **Section**: ${d.section}`,\n      `- **URL**: ${config.siteUrl}${basePath}/${entry.id}`,\n      d.updatedDate && `- **Updated**: ${d.updatedDate.toISOString().slice(0, 10)}`,\n      \"\\n---\",\n      entry.body && `\\n${cleanBody(entry.body)}`,\n      config.brandFooter && \"\\n---\",\n      config.brandFooter && `\\n${config.brandFooter}`,\n    );\n    return normalizeUnicode(md);\n  };\n}\n","export {\n  apiReferenceConverter,\n  fromOpenAPI,\n  type ApiReferenceConverterConfig,\n  type ApiReferenceEntryData,\n} from \"./api-reference.js\";\nexport { blogConverter, type BlogConverterConfig, type BlogEntryData } from \"./blog.js\";\nexport {\n  caseStudyConverter,\n  type CaseStudyConverterConfig,\n  type CaseStudyEntryData,\n} from \"./case-study.js\";\nexport {\n  glossaryConverter,\n  type GlossaryConverterConfig,\n  type GlossaryEntryData,\n} from \"./glossary.js\";\nexport {\n  integrationConverter,\n  type IntegrationConverterConfig,\n  type IntegrationEntryData,\n} from \"./integration.js\";\nexport { legalConverter, type LegalConverterConfig, type LegalEntryData } from \"./legal.js\";\nexport { compareConverter, type CompareConverterConfig, type CompareEntryData } from \"./compare.js\";\nexport { toolConverter, type ToolConverterConfig, type ToolEntryData } from \"./tool.js\";\nexport { videoConverter, type VideoConverterConfig, type VideoEntryData } from \"./video.js\";\nexport {\n  featureConverter,\n  type FeatureConverterConfig,\n  type FeatureEntryData,\n  type FeatureSection,\n  type FeatureRelatedLink,\n} from \"./feature.js\";\nexport {\n  pseoConverter,\n  type PseoConverterConfig,\n  type PseoEntryData,\n  type PseoFact,\n  type PseoRelatedGroup,\n} from \"./pseo.js\";\nexport {\n  changelogConverter,\n  type ChangelogConverterConfig,\n  type ChangelogEntryData,\n  type ChangelogChange,\n  type ChangelogChangeType,\n} from \"./changelog.js\";\nexport {\n  statusPageConverter,\n  type StatusPageConverterConfig,\n  type StatusPageEntryData,\n  type StatusPageComponent,\n  type StatusPageIncident,\n  type StatusPageOverallStatus,\n} from \"./status-page.js\";\nexport {\n  pricingConverter,\n  type PricingConverterConfig,\n  type PricingEntryData,\n  type PricingTier,\n} from \"./pricing.js\";\nexport { docsConverter, type DocsConverterConfig, type DocsEntryData } from \"./docs.js\";\n\nexport type {\n  BaseConverterConfig,\n  CollectionEntry,\n  Converter,\n  ConverterFactory,\n  RelatedLinkRef,\n} from \"./types.js\";\n\nexport const BUILT_IN_CONVERTERS = [\n  \"api-reference\",\n  \"blog\",\n  \"case-study\",\n  \"changelog\",\n  \"compare\",\n  \"docs\",\n  \"feature\",\n  \"glossary\",\n  \"integration\",\n  \"legal\",\n  \"pricing\",\n  \"pseo\",\n  \"status-page\",\n  \"tool\",\n  \"video\",\n] as const;\n\nexport type BuiltInConverterName = (typeof BUILT_IN_CONVERTERS)[number];\n"]}