UNPKG

@re-shell/cli

Version:

Full-stack development platform uniting microservices and microfrontends. Build complete applications with .NET (ASP.NET Core Web API, Minimal API), Java (Spring Boot, Quarkus, Micronaut, Vert.x), Rust (Actix-Web, Warp, Rocket, Axum), Python (FastAPI, Dja

179 lines (178 loc) 5.03 kB
import { EventEmitter } from 'events'; import { TemplateCategory } from './template-engine'; export interface MarketplaceTemplate { id: string; name: string; description: string; category: TemplateCategory; author: string; authorProfile?: AuthorProfile; version: string; downloads: number; rating: number; ratingCount: number; tags: string[]; featured: boolean; verified: boolean; createdAt: Date; updatedAt: Date; repository?: string; homepage?: string; license?: string; preview?: TemplatePreview; stats: TemplateStats; } export interface AuthorProfile { username: string; displayName: string; avatar?: string; bio?: string; website?: string; templatesCount: number; totalDownloads: number; joinedAt: Date; verified: boolean; } export interface TemplatePreview { screenshots: string[]; demoUrl?: string; videoUrl?: string; codeExamples: CodeExample[]; } export interface CodeExample { title: string; description?: string; language: string; code: string; } export interface TemplateStats { weeklyDownloads: number; monthlyDownloads: number; yearlyDownloads: number; forks: number; stars: number; issues: number; pullRequests: number; lastCommit: Date; commitCount: number; contributors: number; } export interface TemplateReview { id: string; templateId: string; userId: string; username: string; rating: number; title?: string; comment?: string; createdAt: Date; updatedAt?: Date; helpful: number; verified: boolean; } export interface SearchOptions { query?: string; category?: TemplateCategory; tags?: string[]; author?: string; minRating?: number; verified?: boolean; featured?: boolean; sortBy?: 'downloads' | 'rating' | 'updated' | 'created' | 'trending'; order?: 'asc' | 'desc'; limit?: number; offset?: number; } export interface SearchResult { templates: MarketplaceTemplate[]; total: number; page: number; pageSize: number; totalPages: number; facets?: SearchFacets; } export interface SearchFacets { categories: Array<{ category: TemplateCategory; count: number; }>; tags: Array<{ tag: string; count: number; }>; authors: Array<{ author: string; count: number; }>; licenses: Array<{ license: string; count: number; }>; } export interface PublishOptions { private?: boolean; beta?: boolean; dryRun?: boolean; force?: boolean; } export interface PublishResult { success: boolean; templateId: string; version: string; url?: string; warnings?: string[]; errors?: string[]; } export interface MarketplaceConfig { apiUrl?: string; apiKey?: string; cacheDir?: string; cacheTTL?: number; enableAnalytics?: boolean; enableOfflineMode?: boolean; maxCacheSize?: number; userAgent?: string; } export declare class TemplateMarketplace extends EventEmitter { private localTemplatesDir; private config; private cache; private validator; private versionManager; private offlineTemplates; private defaultConfig; constructor(localTemplatesDir: string, config?: MarketplaceConfig); private initialize; private loadOfflineTemplates; search(options?: SearchOptions): Promise<SearchResult>; private searchOnline; private searchOffline; private sortTemplates; getTemplate(templateId: string): Promise<MarketplaceTemplate | null>; getReviews(templateId: string, limit?: number, offset?: number): Promise<TemplateReview[]>; submitReview(templateId: string, rating: number, title?: string, comment?: string): Promise<boolean>; install(templateId: string, version?: string): Promise<string>; publish(templatePath: string, options?: PublishOptions): Promise<PublishResult>; unpublish(templateId: string, version?: string): Promise<boolean>; getFeaturedTemplates(): Promise<MarketplaceTemplate[]>; getTrendingTemplates(): Promise<MarketplaceTemplate[]>; getTemplatesByAuthor(author: string): Promise<MarketplaceTemplate[]>; getAuthorProfile(username: string): Promise<AuthorProfile | null>; private apiRequest; private transformTemplate; private getDownloadUrl; private downloadAndExtract; private loadTemplateFromPath; private packageTemplate; private trackInstall; private updateOfflineCache; private cleanupOfflineCache; private getCacheKey; private getFromCache; private setCache; private invalidateCache; clearCache(): void; } export declare function createTemplateMarketplace(localTemplatesDir: string, config?: MarketplaceConfig): TemplateMarketplace; export declare function getGlobalTemplateMarketplace(): TemplateMarketplace; export declare function setGlobalTemplateMarketplace(marketplace: TemplateMarketplace): void;