@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
JavaScript
;
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;