import './server-only.ts'

import type { RenderableTreeNode } from '@markdoc/markdoc'
import KeyV from 'keyv'
import { createHash } from 'node:crypto'
import { storage } from './keyv-cache.server.ts'

const markdocVersion = '1'

export const markdocCache = new KeyV<RenderableTreeNode>({
  store: storage,
  namespace: `markdoc-cache-${markdocVersion}`,
  ttl: 1000 * 60 * 60 * 24 * 7,
})
export const generateCacheKey = (content: string) => {
  return createHash('sha256')
    .update(content)
    .update(markdocVersion)
    .digest('hex')
}
