UNPKG

pixel-forge

Version:

A comprehensive generator for social media previews, favicons, and visual assets across all platforms

132 lines (131 loc) 5.15 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.OpenGraphGenerator = void 0; const path_1 = __importDefault(require("path")); const image_processor_1 = require("../../core/image-processor"); class OpenGraphGenerator { constructor(sourceImage, config) { this.config = config; this.processor = new image_processor_1.ImageProcessor(sourceImage); } /** * Generate OpenGraph images for various platforms */ async generate() { const { socialPreview } = this.config; const options = socialPreview || {}; // Generate Facebook/Default OpenGraph Image await this.generateFacebookImage(options); // Generate LinkedIn Image await this.generateLinkedInImage(options); // Generate Twitter Card Image await this.generateTwitterImage(options); } /** * Generate Facebook OpenGraph Image */ async generateFacebookImage(options) { const { width, height } = image_processor_1.ImageSizes.social.facebook; const outputPath = path_1.default.join(this.config.output.path, 'og-facebook.png'); await this.processor.createSocialPreview({ width, height, title: options.title || this.config.appName, description: options.description, template: options.template, background: this.config.backgroundColor }); await this.processor.save(outputPath, { format: 'png', quality: this.config.output.quality }); } /** * Generate LinkedIn Image */ async generateLinkedInImage(options) { const { width, height } = image_processor_1.ImageSizes.social.linkedin; const outputPath = path_1.default.join(this.config.output.path, 'og-linkedin.png'); await this.processor.createSocialPreview({ width, height, title: options.title || this.config.appName, description: options.description, template: options.template, background: this.config.backgroundColor }); await this.processor.save(outputPath, { format: 'png', quality: this.config.output.quality }); } /** * Generate Twitter Card Image */ async generateTwitterImage(options) { const { width, height } = image_processor_1.ImageSizes.social.twitter; const outputPath = path_1.default.join(this.config.output.path, 'twitter-card.png'); await this.processor.createSocialPreview({ width, height, title: options.title || this.config.appName, description: options.description, template: options.template, background: this.config.backgroundColor }); await this.processor.save(outputPath, { format: 'png', quality: this.config.output.quality }); } /** * Get HTML meta tags for OpenGraph images */ getMetaTags() { const { prefix = '/' } = this.config.output; const tags = [ // Facebook `<meta property="og:image" content="${prefix}og-facebook.png" />`, `<meta property="og:image:width" content="${image_processor_1.ImageSizes.social.facebook.width}" />`, `<meta property="og:image:height" content="${image_processor_1.ImageSizes.social.facebook.height}" />`, // LinkedIn `<meta property="og:image" content="${prefix}og-linkedin.png" />`, `<meta property="og:image:width" content="${image_processor_1.ImageSizes.social.linkedin.width}" />`, `<meta property="og:image:height" content="${image_processor_1.ImageSizes.social.linkedin.height}" />`, // Twitter `<meta name="twitter:card" content="summary_large_image" />`, `<meta name="twitter:image" content="${prefix}twitter-card.png" />` ]; return tags; } /** * Get Next.js metadata configuration */ getNextMetadata() { const { prefix = '/' } = this.config.output; return { openGraph: { images: [ { url: `${prefix}og-facebook.png`, width: image_processor_1.ImageSizes.social.facebook.width, height: image_processor_1.ImageSizes.social.facebook.height }, { url: `${prefix}og-linkedin.png`, width: image_processor_1.ImageSizes.social.linkedin.width, height: image_processor_1.ImageSizes.social.linkedin.height } ] }, twitter: { card: 'summary_large_image', images: [`${prefix}twitter-card.png`] } }; } } exports.OpenGraphGenerator = OpenGraphGenerator;