UNPKG

@ai-growth/nextjs

Version:

Seamlessly integrate Sanity CMS with Next.js applications for automated blog routing and rendering

101 lines (100 loc) 3.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createDefaultTemplateRegistry = createDefaultTemplateRegistry; exports.createMinimalTemplateRegistry = createMinimalTemplateRegistry; exports.createComprehensiveTemplateRegistry = createComprehensiveTemplateRegistry; exports.extendTemplateRegistry = extendTemplateRegistry; exports.createContentTypeRegistry = createContentTypeRegistry; const SimpleDefaultTemplate_1 = require("./SimpleDefaultTemplate"); const PostTemplate_1 = require("./PostTemplate"); const PageTemplate_1 = require("./PageTemplate"); const BlogTemplate_1 = require("./BlogTemplate"); /** * Create a default template registry with common content types * * @param config Configuration options for the registry * @returns Template registry with default templates */ function createDefaultTemplateRegistry(config = {}) { const { includeWildcardPatterns = true, customTemplates = {}, defaultTemplate = SimpleDefaultTemplate_1.SimpleDefaultTemplate, } = config; const registry = { // Base templates post: PostTemplate_1.PostTemplate, page: PageTemplate_1.PageTemplate, blog: BlogTemplate_1.BlogTemplate, default: defaultTemplate, // Wildcard patterns 'blog.*': includeWildcardPatterns ? BlogTemplate_1.BlogTemplate : defaultTemplate, // Custom templates override defaults ...customTemplates, }; return registry; } /** * Create a minimal template registry with just the default template * * @param defaultTemplate The template to use as default (optional) * @returns Minimal template registry */ function createMinimalTemplateRegistry(defaultTemplate = SimpleDefaultTemplate_1.SimpleDefaultTemplate) { return { default: defaultTemplate, }; } /** * Create a comprehensive template registry with all available templates * * @param customTemplates Additional custom templates to include * @returns Comprehensive template registry */ function createComprehensiveTemplateRegistry(customTemplates = {}) { return { // Content type templates post: PostTemplate_1.PostTemplate, page: PageTemplate_1.PageTemplate, blog: BlogTemplate_1.BlogTemplate, article: PostTemplate_1.PostTemplate, // Alias for post // Wildcard patterns 'blog.*': BlogTemplate_1.BlogTemplate, 'post.*': PostTemplate_1.PostTemplate, 'page.*': PageTemplate_1.PageTemplate, 'article.*': PostTemplate_1.PostTemplate, // Default fallback default: SimpleDefaultTemplate_1.SimpleDefaultTemplate, // Custom templates ...customTemplates, }; } /** * Utility function to extend an existing template registry * * @param existingRegistry The existing template registry * @param extensions Additional templates to add * @returns Extended template registry */ function extendTemplateRegistry(existingRegistry, extensions) { return { ...existingRegistry, ...extensions, }; } /** * Utility function to create a template registry for specific content types * * @param contentTypes Array of content types to create templates for * @param templateComponent The template component to use for all types * @returns Template registry with specified content types */ function createContentTypeRegistry(contentTypes, templateComponent = SimpleDefaultTemplate_1.SimpleDefaultTemplate) { const registry = { default: templateComponent, }; contentTypes.forEach(contentType => { registry[contentType] = templateComponent; }); return registry; } /** * Default export - the standard template registry */ exports.default = createDefaultTemplateRegistry;