{"version":3,"file":"index.mjs","names":["normalizePath"],"sources":["../../src/vite/dts.ts","../../src/vite/content-plugin.ts"],"sourcesContent":["import { existsSync } from \"fs\";\nimport { dirname, relative, resolve } from \"path\";\nimport type { PagesmithContentPluginOptions } from \"./content-plugin\";\n\nfunction stripExtension(filePath: string): string {\n  return filePath.replace(/\\.(c|m)?[jt]sx?$/u, \"\");\n}\n\nfunction normalizePath(value: string): string {\n  return value.replace(/\\\\/g, \"/\");\n}\n\nexport function resolveDtsPath(\n  projectRoot: string,\n  dts: PagesmithContentPluginOptions<any>[\"dts\"],\n): string {\n  if (dts === false) {\n    return \"\";\n  }\n\n  if (typeof dts === \"string\") {\n    return resolve(projectRoot, dts);\n  }\n\n  if (typeof dts === \"object\" && dts?.path) {\n    return resolve(projectRoot, dts.path);\n  }\n\n  const srcPath = resolve(projectRoot, \"src\");\n  if (existsSync(srcPath)) {\n    return resolve(srcPath, \"pagesmith-content.d.ts\");\n  }\n\n  return resolve(projectRoot, \"pagesmith-content.d.ts\");\n}\n\nexport function createDtsSource(\n  moduleId: string,\n  collectionNames: string[],\n  dtsPath: string,\n  configPath: string,\n  importSource = \"@pagesmith/core/vite\",\n): string {\n  const configImportPath = normalizePath(\n    stripExtension(relative(dirname(dtsPath), configPath)).replace(/^[^.]/u, \"./$&\"),\n  );\n\n  const moduleLines = collectionNames\n    .map(\n      (name) => `declare module '${moduleId}/${name}' {\n  const collection: import('${importSource}').ContentCollectionModule<\n    __PagesmithCollections['${name.replaceAll(\"\\\\\", \"\\\\\\\\\").replaceAll(\"'\", \"\\\\'\")}']\n  >\n  export default collection\n}`,\n    )\n    .join(\"\\n\\n\");\n\n  return `// Generated by ${importSource}. Do not edit manually.\ntype __PagesmithCollections = typeof import('${configImportPath}').default\n\ndeclare module '${moduleId}' {\n  const content: import('${importSource}').ContentModuleMap<__PagesmithCollections>\n  export default content\n}\n\n${moduleLines}\n`;\n}\n","import { mkdirSync, writeFileSync } from \"fs\";\nimport { dirname, relative, resolve } from \"path\";\nimport { uneval } from \"devalue\";\nimport { createContentLayer } from \"../content-layer\";\nimport { resolveLoader } from \"../loaders\";\nimport type { Heading } from \"../schemas/heading\";\nimport type { CollectionDef, CollectionMap, InferCollectionData } from \"../schemas/collection\";\nimport type { ContentLayerConfig } from \"../schemas/content-config\";\nimport { toSlug } from \"../utils/slug\";\nimport { createDtsSource, resolveDtsPath } from \"./dts\";\n\ntype Simplify<T> = { [K in keyof T]: T[K] } & {};\n\ntype PagesmithResolvedConfig = {\n  root: string;\n};\n\ntype PagesmithModuleGraph = {\n  getModuleById(id: string): unknown;\n  invalidateModule(module: unknown): void;\n};\n\ntype PagesmithDevServer = {\n  moduleGraph: PagesmithModuleGraph;\n  ws: {\n    send(payload: { type: string }): void;\n  };\n};\n\nexport type PagesmithVitePlugin = {\n  name: string;\n  enforce?: \"pre\" | \"post\";\n  configResolved?: (config: PagesmithResolvedConfig) => void;\n  buildStart?: () => void;\n  resolveId?: (id: string) => string | void;\n  load?: (id: string) => Promise<string | void> | string | void;\n  handleHotUpdate?: (context: { file: string; server: PagesmithDevServer }) => void;\n};\n\nexport type BaseContentModuleEntry = {\n  id: string;\n  contentSlug: string;\n};\n\nexport type MarkdownContentModuleEntry<TCollection extends CollectionDef<any, any, any>> = Simplify<\n  BaseContentModuleEntry & {\n    html: string;\n    headings: Heading[];\n    frontmatter: InferCollectionData<TCollection>;\n  }\n>;\n\nexport type DataContentModuleEntry<TCollection extends CollectionDef<any, any, any>> = Simplify<\n  BaseContentModuleEntry & {\n    data: InferCollectionData<TCollection>;\n  }\n>;\n\ntype LoaderKindFromCollection<TCollection extends CollectionDef<any, any, any>> =\n  TCollection[\"loader\"] extends \"markdown\"\n    ? \"markdown\"\n    : TCollection[\"loader\"] extends { kind: infer TKind }\n      ? TKind\n      : \"data\";\n\nexport type ContentCollectionModule<TCollection extends CollectionDef<any, any, any>> =\n  LoaderKindFromCollection<TCollection> extends \"markdown\"\n    ? MarkdownContentModuleEntry<TCollection>[]\n    : DataContentModuleEntry<TCollection>[];\n\nexport type ContentModuleMap<TCollections extends CollectionMap> = {\n  [TName in keyof TCollections]: ContentCollectionModule<TCollections[TName]>;\n};\n\nexport type PagesmithContentPluginOptions<TCollections extends CollectionMap> = Omit<\n  ContentLayerConfig,\n  \"collections\"\n> & {\n  collections: TCollections;\n  /**\n   * Shared content root used to compute `id` and `contentSlug`.\n   * Defaults to the deepest common parent directory across all collection directories.\n   */\n  contentRoot?: string;\n  /**\n   * Root virtual module id.\n   * Per-collection modules are exposed as `${moduleId}/<collection-name>`.\n   */\n  moduleId?: string;\n  /**\n   * Path to the content config module used for generated typings.\n   * Defaults to `./content.config.ts`.\n   */\n  configPath?: string;\n  /**\n   * Generate module declarations for the virtual modules.\n   * Defaults to `src/pagesmith-content.d.ts` when `src/` exists, otherwise `pagesmith-content.d.ts`.\n   */\n  dts?: boolean | string | { path?: string };\n  /**\n   * Internal override used by re-exporting packages to keep generated declaration\n   * imports aligned with the public Vite entry point they expose.\n   */\n  dtsImportSource?: string;\n};\n\nconst DEFAULT_MODULE_ID = \"virtual:content\";\n\nfunction normalizePath(value: string): string {\n  return value.replace(/\\\\/g, \"/\");\n}\n\nfunction isPathWithin(parent: string, candidate: string): boolean {\n  const rel = normalizePath(relative(parent, candidate));\n  return rel === \"\" || (!rel.startsWith(\"..\") && !rel.startsWith(\"/\"));\n}\n\nfunction commonDirectory(paths: string[]): string {\n  const normalized = paths.map((path) => normalizePath(resolve(path)));\n  if (normalized.length === 0) return process.cwd();\n  if (normalized.length === 1) return normalized[0];\n\n  const segments = normalized.map((path) => path.split(\"/\").filter(Boolean));\n  const shared: string[] = [];\n  const first = segments[0]!;\n\n  for (let index = 0; index < first.length; index += 1) {\n    const segment = first[index];\n    if (segments.every((parts) => parts[index] === segment)) {\n      shared.push(segment);\n      continue;\n    }\n    break;\n  }\n\n  if (shared.length === 0) {\n    return resolve(\"/\");\n  }\n\n  return resolve(`/${shared.join(\"/\")}`);\n}\n\nasync function serializeCollection(\n  layer: ReturnType<typeof createContentLayer>,\n  collectionName: string,\n  collectionDef: CollectionDef<any, any, any>,\n  contentRoot: string,\n): Promise<string> {\n  const entries = await layer.getCollection(collectionName);\n  const loader = resolveLoader(collectionDef.loader);\n  const sortedEntries = [...entries].sort((left, right) =>\n    left.filePath.localeCompare(right.filePath),\n  );\n\n  const payload = await Promise.all(\n    sortedEntries.map(async (entry) => {\n      const contentSlug = toSlug(entry.filePath, contentRoot);\n      const base = {\n        id: contentSlug,\n        contentSlug,\n      };\n\n      if (loader.kind === \"markdown\") {\n        const rendered = await entry.render();\n        return {\n          ...base,\n          html: rendered.html,\n          headings: rendered.headings,\n          frontmatter: entry.data,\n        };\n      }\n\n      return {\n        ...base,\n        data: entry.data,\n      };\n    }),\n  );\n\n  return `const collection = ${uneval(payload)};\\nexport default collection;\\n`;\n}\n\nfunction createRootModuleSource(moduleId: string, collectionNames: string[]): string {\n  const imports = collectionNames\n    .map((name, index) => `import collection${index} from '${moduleId}/${name}'`)\n    .join(\"\\n\");\n  const contentMap = collectionNames\n    .map((name, index) => `${JSON.stringify(name)}: collection${index}`)\n    .join(\", \");\n\n  return `${imports}\\n\\nexport default { ${contentMap} };\\n`;\n}\n\nfunction resolvePluginOptions<TCollections extends CollectionMap>(\n  collectionsOrOptions: TCollections | PagesmithContentPluginOptions<TCollections>,\n  maybeOptions: Omit<PagesmithContentPluginOptions<TCollections>, \"collections\"> = {},\n): PagesmithContentPluginOptions<TCollections> {\n  if (\"collections\" in collectionsOrOptions) {\n    return collectionsOrOptions as PagesmithContentPluginOptions<TCollections>;\n  }\n\n  return {\n    ...maybeOptions,\n    collections: collectionsOrOptions,\n  };\n}\n\nexport function pagesmithContent<TCollections extends CollectionMap>(\n  collections: TCollections,\n  options?: Omit<PagesmithContentPluginOptions<TCollections>, \"collections\">,\n): PagesmithVitePlugin;\nexport function pagesmithContent<TCollections extends CollectionMap>(\n  options: PagesmithContentPluginOptions<TCollections>,\n): PagesmithVitePlugin;\nexport function pagesmithContent<TCollections extends CollectionMap>(\n  collectionsOrOptions: TCollections | PagesmithContentPluginOptions<TCollections>,\n  maybeOptions: Omit<PagesmithContentPluginOptions<TCollections>, \"collections\"> = {},\n): PagesmithVitePlugin {\n  const options = resolvePluginOptions(collectionsOrOptions, maybeOptions);\n  const collectionNames = Object.keys(options.collections);\n  const moduleId = options.moduleId ?? DEFAULT_MODULE_ID;\n  const resolvedPrefix = `\\0${moduleId}/`;\n  const resolvedRootId = `\\0${moduleId}`;\n\n  let projectRoot = process.cwd();\n  let layerRoot = projectRoot;\n  let contentRoot = projectRoot;\n  let configPath = resolve(projectRoot, options.configPath ?? \"content.config.ts\");\n  let dtsPath = resolveDtsPath(projectRoot, options.dts);\n  let layer: ReturnType<typeof createContentLayer> | null = null;\n\n  function getLayer(): ReturnType<typeof createContentLayer> {\n    if (!layer) {\n      throw new Error(\n        \"pagesmith-content: ContentLayer not initialized. configResolved has not run yet.\",\n      );\n    }\n    return layer;\n  }\n\n  const ensureDeclarations = (): void => {\n    if (options.dts === false) return;\n\n    const source = createDtsSource(\n      moduleId,\n      collectionNames,\n      dtsPath,\n      configPath,\n      options.dtsImportSource,\n    );\n    mkdirSync(dirname(dtsPath), { recursive: true });\n    writeFileSync(dtsPath, source);\n  };\n\n  return {\n    name: \"pagesmith-content\",\n    enforce: \"pre\",\n\n    configResolved(config) {\n      projectRoot = resolve(config.root);\n      layerRoot = resolve(projectRoot, options.root ?? \".\");\n      configPath = resolve(projectRoot, options.configPath ?? \"content.config.ts\");\n      dtsPath = resolveDtsPath(projectRoot, options.dts);\n\n      const collectionDirectories = collectionNames.map((name) =>\n        resolve(layerRoot, options.collections[name]!.directory),\n      );\n      contentRoot = options.contentRoot\n        ? resolve(layerRoot, options.contentRoot)\n        : commonDirectory(collectionDirectories);\n\n      layer = createContentLayer({\n        ...options,\n        root: layerRoot,\n      });\n\n      ensureDeclarations();\n    },\n\n    buildStart() {\n      ensureDeclarations();\n    },\n\n    resolveId(id) {\n      if (id === moduleId) {\n        return resolvedRootId;\n      }\n\n      for (const name of collectionNames) {\n        if (id === `${moduleId}/${name}`) {\n          return `${resolvedPrefix}${name}`;\n        }\n      }\n    },\n\n    async load(id) {\n      if (id === resolvedRootId) {\n        return createRootModuleSource(moduleId, collectionNames);\n      }\n\n      if (!id.startsWith(resolvedPrefix)) return;\n\n      const collectionName = id.slice(resolvedPrefix.length);\n      const collectionDef = options.collections[collectionName];\n      if (!collectionDef) return;\n\n      return serializeCollection(getLayer(), collectionName, collectionDef, contentRoot);\n    },\n\n    handleHotUpdate({ file, server }) {\n      const resolvedFile = resolve(file);\n      const touchesConfig = resolvedFile === configPath;\n\n      const affectedCollections = collectionNames.filter((name) =>\n        isPathWithin(resolve(layerRoot, options.collections[name]!.directory), resolvedFile),\n      );\n\n      const touchesContent = affectedCollections.length > 0;\n\n      if (!touchesConfig && !touchesContent) return;\n\n      if (touchesConfig) {\n        ensureDeclarations();\n      }\n\n      const rootModule = server.moduleGraph.getModuleById(resolvedRootId);\n      if (rootModule) {\n        server.moduleGraph.invalidateModule(rootModule);\n      }\n\n      if (touchesContent) {\n        for (const name of affectedCollections) {\n          const moduleNode = server.moduleGraph.getModuleById(`${resolvedPrefix}${name}`);\n          if (moduleNode) {\n            server.moduleGraph.invalidateModule(moduleNode);\n          }\n          getLayer()\n            .invalidateCollection(name)\n            .catch((err) => {\n              console.warn(`[pagesmith] Failed to invalidate collection \"${name}\":`, err);\n            });\n        }\n      } else {\n        for (const name of collectionNames) {\n          const moduleNode = server.moduleGraph.getModuleById(`${resolvedPrefix}${name}`);\n          if (moduleNode) {\n            server.moduleGraph.invalidateModule(moduleNode);\n          }\n        }\n        getLayer().invalidateAll();\n      }\n\n      server.ws.send({ type: \"full-reload\" });\n    },\n  };\n}\n"],"mappings":"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"}