Source identity
| Field | Recorded value |
|---|---|
| Source type | GitHub source |
| Original record | Janady13/llms-txt-hub / apps/web/content-collections.ts |
| Date | Not specified in source |
| Repository | Janady13/llms-txt-hub |
| Revision | e0f4bf978d4df168369c7601d9c5f5ea89e84377 |
| Branch | main |
| Path or archive member | apps/web/content-collections.ts |
| Original SHA-256 | c5b9f4de4c52b3a39baf2477f4ddb1700f7abe3932a153629320af96f8259c7d |
| Git blob SHA | f80de729aa3dd4d0cf5423c2e2aff9e76d766999 |
| Reading-copy SHA-256 | c5b9f4de4c52b3a39baf2477f4ddb1700f7abe3932a153629320af96f8259c7d |
Recovered source transcript
Download complete source text ↓144 lines · 4.0 KB
import { defineCollection, defineConfig } from '@content-collections/core'
// Paths will resolve from the project root
const websitesPath = '../../packages/content/data/websites'
const guidesPath = '../../packages/content/data/guides'
const resourcesPath = '../../packages/content/data/resources'
const legalPath = '../../packages/content/data/legal'
const docsPath = '../../packages/content/data/docs'
const extensionUpdatesPath = '../../packages/content/data/extension-updates'
const websites = defineCollection({
name: 'Website',
directory: websitesPath,
include: '**/*.mdx',
schema: z => ({
slug: z.string().optional(),
name: z.string(),
description: z.string(),
website: z.string().url(),
llmsUrl: z.string().url(),
// Even more flexible validation for llmsFullUrl
llmsFullUrl: z
.union([
z.string().url(),
z.string().refine(val => val === '', {
message: 'Empty string is allowed'
}),
z.null(),
z.undefined()
])
.optional(),
category: z.string(),
publishedAt: z.string(),
isUnofficial: z.boolean().optional().default(false),
priority: z.enum(['high', 'medium', 'low']).optional().default('medium'),
featured: z.boolean().optional().default(false)
}),
transform: document => ({
...document,
slug: document._meta.path || document._meta.fileName.replace(/\.mdx$/, '')
})
})
const guides = defineCollection({
name: 'Guide',
directory: guidesPath,
include: '**/*.mdx',
schema: z => ({
title: z.string(),
description: z.string(),
date: z.string(),
image: z.string().optional(),
authors: z.array(
z.object({
name: z.string(),
url: z.string().url().optional()
})
),
tags: z.array(z.string()).optional(),
difficulty: z.enum(['beginner', 'intermediate', 'advanced']).default('beginner'),
category: z
.enum(['getting-started', 'implementation', 'best-practices', 'integration'])
.default('getting-started'),
published: z.boolean().default(true),
publishedAt: z.string().optional(),
readingTime: z.number().optional()
}),
transform: document => ({
...document,
slug: document._meta.path || document._meta.fileName.replace(/\.mdx$/, '')
})
})
const resources = defineCollection({
name: 'Resource',
directory: resourcesPath,
include: '**/*.mdx',
schema: z => ({
title: z.string(),
description: z.string(),
url: z.string().url().optional(),
category: z.string(),
icon: z.string().optional(),
featured: z.boolean().optional().default(false)
}),
transform: document => ({
...document,
slug: document._meta.path || document._meta.fileName.replace(/\.mdx$/, '')
})
})
const legal = defineCollection({
name: 'Legal',
directory: legalPath,
include: '**/*.mdx',
schema: z => ({
title: z.string().optional(),
lastUpdated: z.string().optional(),
summary: z.string().optional()
}),
transform: document => ({
...document,
slug: document._meta.path || document._meta.fileName.replace(/\.mdx$/, '')
})
})
const docs = defineCollection({
name: 'Doc',
directory: docsPath,
include: '**/*.mdx',
schema: z => ({
title: z.string(),
description: z.string(),
order: z.number(),
published: z.boolean().default(true)
}),
transform: document => ({
...document,
slug: document._meta.path || document._meta.fileName.replace(/\.mdx$/, '')
})
})
const extensionUpdates = defineCollection({
name: 'ExtensionUpdate',
directory: extensionUpdatesPath,
include: '**/*.mdx',
schema: z => ({
version: z.string(),
title: z.string(),
description: z.string(),
date: z.string(),
published: z.boolean().default(true),
highlights: z.array(z.string()).max(5).default([])
}),
transform: document => ({
...document,
slug: document._meta.path || document._meta.fileName.replace(/\.mdx$/, '')
})
})
export default defineConfig({
collections: [websites, guides, resources, legal, docs, extensionUpdates]
})