@bernierllc/content-management-suite 0.4.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +399 -800
- package/dist/index.d.ts +399 -800
- package/dist/index.js +436 -852
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +428 -851
- package/dist/index.mjs.map +1 -1
- package/dist/ui.d.mts +1 -0
- package/dist/ui.d.ts +1 -0
- package/dist/ui.js +37 -0
- package/dist/ui.js.map +1 -0
- package/dist/ui.mjs +14 -0
- package/dist/ui.mjs.map +1 -0
- package/dist/utils.d.mts +9 -0
- package/dist/utils.d.ts +9 -0
- package/dist/utils.js +117 -0
- package/dist/utils.js.map +1 -0
- package/dist/utils.mjs +88 -0
- package/dist/utils.mjs.map +1 -0
- package/package.json +54 -42
- package/dist/server.d.mts +0 -1
- package/dist/server.d.ts +0 -1
- package/dist/server.js +0 -1102
- package/dist/server.js.map +0 -1
- package/dist/server.mjs +0 -1089
- package/dist/server.mjs.map +0 -1
package/dist/server.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types.ts","../src/index.ts","../src/content-management-suite.ts","../src/server.ts"],"sourcesContent":["/*\nCopyright (c) 2025 Bernier LLC\n\nThis file is licensed to the client under a limited-use license.\nThe client may use and modify this code *only within the scope of the project it was delivered for*.\nRedistribution or use in other products or commercial offerings is not permitted without written consent from Bernier LLC.\n*/\n\nimport { z } from 'zod';\n\n// Content Management Suite Configuration Schema\nexport const ContentManagementConfigSchema = z.object({\n // Server Configuration\n server: z.object({\n port: z.number().default(3000),\n host: z.string().default('localhost'),\n cors: z.object({\n origin: z.union([z.string(), z.array(z.string())]).default('*'),\n credentials: z.boolean().default(true)\n }).default({}),\n security: z.object({\n helmet: z.boolean().default(true),\n rateLimit: z.object({\n enabled: z.boolean().default(true),\n windowMs: z.number().default(15 * 60 * 1000), // 15 minutes\n max: z.number().default(100) // limit each IP to 100 requests per windowMs\n }).default({})\n }).default({})\n }).default({}),\n\n // Database Configuration\n database: z.object({\n type: z.enum(['sqlite', 'postgresql', 'mysql', 'mongodb']).default('sqlite'),\n url: z.string().optional(),\n host: z.string().default('localhost'),\n port: z.number().optional(),\n name: z.string().default('content_management'),\n username: z.string().optional(),\n password: z.string().optional(),\n ssl: z.boolean().default(false),\n pool: z.object({\n min: z.number().default(2),\n max: z.number().default(10)\n }).default({})\n }).default({}),\n\n // Content Configuration\n content: z.object({\n // Default editorial workflow\n defaultWorkflow: z.object({\n id: z.string().default('standard'),\n name: z.string().default('Standard Workflow'),\n description: z.string().default('Standard editorial workflow'),\n stages: z.array(z.object({\n id: z.string(),\n name: z.string(),\n order: z.number(),\n isPublishStage: z.boolean().default(false),\n allowsScheduling: z.boolean().default(false),\n description: z.string().optional(),\n permissions: z.array(z.string()).default([])\n })).default([\n {\n id: 'write',\n name: 'Write',\n order: 1,\n isPublishStage: false,\n allowsScheduling: false,\n description: 'Write content',\n permissions: ['content.edit']\n },\n {\n id: 'publish',\n name: 'Publish',\n order: 2,\n isPublishStage: true,\n allowsScheduling: true,\n description: 'Publish content',\n permissions: ['content.publish']\n }\n ]),\n transitions: z.array(z.object({\n id: z.string(),\n from: z.string(),\n to: z.string(),\n description: z.string().optional(),\n permissions: z.array(z.string()).default([])\n })).default([\n {\n id: 'write-to-publish',\n from: 'write',\n to: 'publish',\n description: 'Move from write to publish',\n permissions: ['content.publish']\n }\n ])\n }).default({}),\n\n // Content types\n contentTypes: z.array(z.string()).default(['text', 'image', 'audio', 'video']),\n\n // Auto-save configuration\n autoSave: z.object({\n enabled: z.boolean().default(true),\n debounceMs: z.number().default(1000),\n maxRetries: z.number().default(3),\n backoffMs: z.number().default(1000)\n }).default({}),\n\n // Soft delete configuration\n softDelete: z.object({\n enabled: z.boolean().default(true),\n showDeletedToUsers: z.boolean().default(false),\n retentionDays: z.number().default(30)\n }).default({}),\n\n // File upload configuration\n upload: z.object({\n maxFileSize: z.number().default(104857600), // 100MB\n allowedTypes: z.array(z.string()).default([\n 'image/jpeg',\n 'image/png',\n 'image/webp',\n 'image/gif',\n 'audio/mpeg',\n 'audio/wav',\n 'audio/ogg',\n 'video/mp4',\n 'video/webm',\n 'video/ogg'\n ]),\n storage: z.object({\n type: z.enum(['local', 's3', 'gcs', 'azure']).default('local'),\n path: z.string().default('./uploads'),\n bucket: z.string().optional(),\n region: z.string().optional(),\n accessKey: z.string().optional(),\n secretKey: z.string().optional()\n }).default({})\n }).default({})\n }).default({}),\n\n // UI Configuration\n ui: z.object({\n theme: z.object({\n mode: z.enum(['light', 'dark', 'auto']).default('auto'),\n primaryColor: z.string().default('#007bff'),\n secondaryColor: z.string().default('#6c757d'),\n accentColor: z.string().default('#17a2b8')\n }).default({}),\n editor: z.object({\n showToolbar: z.boolean().default(true),\n showStatusBar: z.boolean().default(true),\n showWordCount: z.boolean().default(true),\n showCharacterCount: z.boolean().default(true),\n autoSave: z.boolean().default(true),\n placeholder: z.string().default('Start writing your content...')\n }).default({}),\n list: z.object({\n defaultView: z.enum(['table', 'list', 'grid', 'kanban']).default('table'),\n pageSize: z.number().default(20),\n showSearch: z.boolean().default(true),\n showFilters: z.boolean().default(true),\n showSorting: z.boolean().default(true),\n showPagination: z.boolean().default(true)\n }).default({})\n }).default({}),\n\n // Integration Configuration\n integrations: z.object({\n neverAdmin: z.object({\n enabled: z.boolean().default(false),\n url: z.string().optional(),\n apiKey: z.string().optional(),\n syncInterval: z.number().default(300000) // 5 minutes\n }).default({}),\n neverHub: z.object({\n enabled: z.boolean().default(false),\n url: z.string().optional(),\n apiKey: z.string().optional(),\n packageDiscovery: z.boolean().default(true)\n }).default({}),\n analytics: z.object({\n enabled: z.boolean().default(false),\n provider: z.enum(['google', 'mixpanel', 'amplitude', 'custom']).optional(),\n trackingId: z.string().optional(),\n config: z.record(z.any()).default({})\n }).default({})\n }).default({}),\n\n // Security Configuration\n security: z.object({\n jwt: z.object({\n secret: z.string().default('your-secret-key'),\n expiresIn: z.string().default('24h'),\n issuer: z.string().default('content-management-suite')\n }).default({}),\n permissions: z.object({\n enabled: z.boolean().default(true),\n defaultRole: z.string().default('user'),\n roles: z.array(z.object({\n name: z.string(),\n permissions: z.array(z.string()),\n description: z.string().optional()\n })).default([\n {\n name: 'admin',\n permissions: ['*'],\n description: 'Full administrative access'\n },\n {\n name: 'editor',\n permissions: ['content.edit', 'content.publish', 'content.schedule'],\n description: 'Content editing and publishing'\n },\n {\n name: 'author',\n permissions: ['content.edit'],\n description: 'Content creation and editing'\n },\n {\n name: 'user',\n permissions: ['content.view'],\n description: 'Content viewing only'\n }\n ])\n }).default({})\n }).default({}),\n\n // Logging Configuration\n logging: z.object({\n level: z.enum(['error', 'warn', 'info', 'debug']).default('info'),\n format: z.enum(['json', 'text']).default('json'),\n file: z.object({\n enabled: z.boolean().default(true),\n path: z.string().default('./logs'),\n maxSize: z.string().default('10MB'),\n maxFiles: z.number().default(5)\n }).default({}),\n console: z.object({\n enabled: z.boolean().default(true),\n colorize: z.boolean().default(true)\n }).default({})\n }).default({}),\n\n // Performance Configuration\n performance: z.object({\n cache: z.object({\n enabled: z.boolean().default(true),\n ttl: z.number().default(300), // 5 minutes\n maxSize: z.number().default(1000)\n }).default({}),\n compression: z.object({\n enabled: z.boolean().default(true),\n level: z.number().min(1).max(9).default(6)\n }).default({}),\n rateLimit: z.object({\n enabled: z.boolean().default(true),\n windowMs: z.number().default(15 * 60 * 1000), // 15 minutes\n max: z.number().default(100)\n }).default({})\n }).default({})\n});\n\nexport type ContentManagementConfig = z.infer<typeof ContentManagementConfigSchema>;\n\n// Content Management Suite Types\nexport interface ContentManagementSuite {\n // Core Services\n configManager: any;\n workflowService: any;\n editorService: any;\n \n // Content Types\n contentTypes: Map<string, any>;\n \n // UI Components\n editor: any;\n workflow: any;\n list: any;\n \n // Admin Interface\n admin: any;\n \n // Server\n server: any;\n \n // Methods\n start(): Promise<void>;\n stop(): Promise<void>;\n getConfig(): ContentManagementConfig;\n updateConfig(config: Partial<ContentManagementConfig>): Promise<void>;\n registerContentType(contentType: any): void;\n unregisterContentType(contentTypeId: string): void;\n getContentType(contentTypeId: string): any;\n listContentTypes(): any[];\n}\n\n// Content Management Suite Options\nexport interface ContentManagementSuiteOptions {\n config?: Partial<ContentManagementConfig>;\n configFile?: string;\n database?: any;\n logger?: any;\n plugins?: any[];\n}\n\n// Content Management Suite Events\nexport interface ContentManagementSuiteEvents {\n 'content:created': (content: any) => void;\n 'content:updated': (content: any) => void;\n 'content:deleted': (content: any) => void;\n 'content:published': (content: any) => void;\n 'content:scheduled': (content: any, date: Date) => void;\n 'workflow:transition': (content: any, from: string, to: string) => void;\n 'config:updated': (config: ContentManagementConfig) => void;\n 'error': (error: Error) => void;\n}\n\n// Content Management Suite API\nexport interface ContentManagementSuiteAPI {\n // Content Management\n createContent(type: string, data: any): Promise<any>;\n getContent(id: string): Promise<any>;\n updateContent(id: string, data: any): Promise<any>;\n deleteContent(id: string, soft?: boolean): Promise<void>;\n listContent(filters?: any): Promise<any[]>;\n searchContent(query: string, options?: any): Promise<any[]>;\n \n // Workflow Management\n getWorkflow(id: string): Promise<any>;\n createWorkflow(data: any): Promise<any>;\n updateWorkflow(id: string, data: any): Promise<any>;\n deleteWorkflow(id: string): Promise<void>;\n listWorkflows(): Promise<any[]>;\n \n // Content Type Management\n getContentType(id: string): Promise<any>;\n createContentType(data: any): Promise<any>;\n updateContentType(id: string, data: any): Promise<any>;\n deleteContentType(id: string): Promise<void>;\n listContentTypes(): Promise<any[]>;\n \n // Configuration Management\n getConfig(): Promise<ContentManagementConfig>;\n updateConfig(config: Partial<ContentManagementConfig>): Promise<void>;\n \n // User Management\n createUser(data: any): Promise<any>;\n getUser(id: string): Promise<any>;\n updateUser(id: string, data: any): Promise<any>;\n deleteUser(id: string): Promise<void>;\n listUsers(): Promise<any[]>;\n \n // Permission Management\n checkPermission(userId: string, permission: string): Promise<boolean>;\n grantPermission(userId: string, permission: string): Promise<void>;\n revokePermission(userId: string, permission: string): Promise<void>;\n}\n\n// Content Management Suite Plugin\nexport interface ContentManagementSuitePlugin {\n name: string;\n version: string;\n description: string;\n dependencies?: string[];\n install(suite: ContentManagementSuite): Promise<void>;\n uninstall(suite: ContentManagementSuite): Promise<void>;\n enable(suite: ContentManagementSuite): Promise<void>;\n disable(suite: ContentManagementSuite): Promise<void>;\n}\n\n// Content Management Suite Middleware\nexport interface ContentManagementSuiteMiddleware {\n name: string;\n handler: (req: any, res: any, next: any) => void;\n order?: number;\n}\n\n// Content Management Suite Hook\nexport interface ContentManagementSuiteHook {\n name: string;\n handler: (...args: any[]) => Promise<any> | any;\n priority?: number;\n}\n\n// Content Management Suite Validation\nexport interface ContentManagementSuiteValidation {\n validateConfig(config: any): boolean;\n validateContent(content: any, type: string): boolean;\n validateWorkflow(workflow: any): boolean;\n validateUser(user: any): boolean;\n}\n\n// Content Management Suite Storage\nexport interface ContentManagementSuiteStorage {\n // Content Storage\n saveContent(content: any): Promise<void>;\n loadContent(id: string): Promise<any>;\n deleteContent(id: string): Promise<void>;\n listContent(filters?: any): Promise<any[]>;\n searchContent(query: string, options?: any): Promise<any[]>;\n \n // Workflow Storage\n saveWorkflow(workflow: any): Promise<void>;\n loadWorkflow(id: string): Promise<any>;\n deleteWorkflow(id: string): Promise<void>;\n listWorkflows(): Promise<any[]>;\n \n // Configuration Storage\n saveConfig(config: ContentManagementConfig): Promise<void>;\n loadConfig(): Promise<ContentManagementConfig>;\n \n // User Storage\n saveUser(user: any): Promise<void>;\n loadUser(id: string): Promise<any>;\n deleteUser(id: string): Promise<void>;\n listUsers(): Promise<any[]>;\n}\n\n// Content Management Suite Cache\nexport interface ContentManagementSuiteCache {\n get(key: string): Promise<any>;\n set(key: string, value: any, ttl?: number): Promise<void>;\n delete(key: string): Promise<void>;\n clear(): Promise<void>;\n has(key: string): Promise<boolean>;\n}\n\n// Content Management Suite Logger\nexport interface ContentManagementSuiteLogger {\n error(message: string, meta?: any): void;\n warn(message: string, meta?: any): void;\n info(message: string, meta?: any): void;\n debug(message: string, meta?: any): void;\n}\n\n// Content Management Suite Metrics\nexport interface ContentManagementSuiteMetrics {\n increment(name: string, value?: number): void;\n decrement(name: string, value?: number): void;\n gauge(name: string, value: number): void;\n histogram(name: string, value: number): void;\n counter(name: string, value?: number): void;\n}\n\n// Content Management Suite Health Check\nexport interface ContentManagementSuiteHealthCheck {\n name: string;\n check(): Promise<boolean>;\n timeout?: number;\n interval?: number;\n}\n\n// Content Management Suite Error\nexport class ContentManagementSuiteError extends Error {\n public code: string;\n public statusCode: number;\n public details?: any;\n\n constructor(message: string, code: string, statusCode: number = 500, details?: any) {\n super(message);\n this.name = 'ContentManagementSuiteError';\n this.code = code;\n this.statusCode = statusCode;\n this.details = details;\n }\n}\n\n// Content Management Suite Validation Error\nexport class ContentManagementSuiteValidationError extends ContentManagementSuiteError {\n constructor(message: string, details?: any) {\n super(message, 'VALIDATION_ERROR', 400, details);\n this.name = 'ContentManagementSuiteValidationError';\n }\n}\n\n// Content Management Suite Not Found Error\nexport class ContentManagementSuiteNotFoundError extends ContentManagementSuiteError {\n constructor(message: string, details?: any) {\n super(message, 'NOT_FOUND', 404, details);\n this.name = 'ContentManagementSuiteNotFoundError';\n }\n}\n\n// Content Management Suite Unauthorized Error\nexport class ContentManagementSuiteUnauthorizedError extends ContentManagementSuiteError {\n constructor(message: string, details?: any) {\n super(message, 'UNAUTHORIZED', 401, details);\n this.name = 'ContentManagementSuiteUnauthorizedError';\n }\n}\n\n// Content Management Suite Forbidden Error\nexport class ContentManagementSuiteForbiddenError extends ContentManagementSuiteError {\n constructor(message: string, details?: any) {\n super(message, 'FORBIDDEN', 403, details);\n this.name = 'ContentManagementSuiteForbiddenError';\n }\n}\n\n// Content Management Suite Conflict Error\nexport class ContentManagementSuiteConflictError extends ContentManagementSuiteError {\n constructor(message: string, details?: any) {\n super(message, 'CONFLICT', 409, details);\n this.name = 'ContentManagementSuiteConflictError';\n }\n}\n\n// Content Management Suite Internal Error\nexport class ContentManagementSuiteInternalError extends ContentManagementSuiteError {\n constructor(message: string, details?: any) {\n super(message, 'INTERNAL_ERROR', 500, details);\n this.name = 'ContentManagementSuiteInternalError';\n }\n}\n","/*\nCopyright (c) 2025 Bernier LLC\n\nThis file is licensed to the client under a limited-use license.\nThe client may use and modify this code *only within the scope of the project it was delivered for*.\nRedistribution or use in other products or commercial offerings is not permitted without written consent from Bernier LLC.\n*/\n\n// Export types separately to avoid duplicate export issues\nexport type {\n ContentManagementConfig,\n ContentManagementSuiteOptions,\n ContentManagementSuiteEvents,\n ContentManagementSuiteAPI,\n ContentManagementSuitePlugin,\n ContentManagementSuiteMiddleware,\n ContentManagementSuiteHook,\n ContentManagementSuiteValidation,\n ContentManagementSuiteStorage,\n ContentManagementSuiteCache,\n ContentManagementSuiteLogger,\n ContentManagementSuiteMetrics,\n ContentManagementSuiteHealthCheck\n} from './types';\n\n// Export schema and interface (non-type exports)\nexport { ContentManagementConfigSchema } from './types';\nexport type { ContentManagementSuite } from './types';\n\n// Export error classes\nexport {\n ContentManagementSuiteError,\n ContentManagementSuiteValidationError,\n ContentManagementSuiteNotFoundError,\n ContentManagementSuiteUnauthorizedError,\n ContentManagementSuiteForbiddenError,\n ContentManagementSuiteConflictError,\n ContentManagementSuiteInternalError\n} from './types';\n\n// Re-export UI components (only published packages)\nexport {\n WorkflowStepper,\n StageActionButtons,\n WorkflowTimeline,\n WorkflowAdminConfig\n} from '@bernierllc/content-workflow-ui';\n\n// Re-export all content types for convenience\nexport { TextContentType } from '@bernierllc/content-type-text';\nexport { ImageContentType } from '@bernierllc/content-type-image';\nexport { AudioContentTypeManager } from '@bernierllc/content-type-audio';\nexport { VideoContentType } from '@bernierllc/content-type-video';\n\n// Re-export core services for advanced usage (only published packages)\nexport { ContentTypeRegistry } from '@bernierllc/content-type-registry';\nexport { EditorialWorkflowEngine, WorkflowBuilder, WorkflowTemplates, WorkflowFactory } from '@bernierllc/content-editorial-workflow';\nexport { AutosaveManager } from '@bernierllc/content-autosave-manager';\nexport { ContentSoftDelete } from '@bernierllc/content-soft-delete';\n\n// Main suite export\nexport { createContentManagementSuite } from './content-management-suite';\n","/*\nCopyright (c) 2025 Bernier LLC\n\nThis file is licensed to the client under a limited-use license.\nThe client may use and modify this code *only within the scope of the project it was delivered for*.\nRedistribution or use in other products or commercial offerings is not permitted without written consent from Bernier LLC.\n*/\n\nimport { EventEmitter } from 'events';\nimport express from 'express';\nimport cors from 'cors';\nimport helmet from 'helmet';\nimport morgan from 'morgan';\nimport compression from 'compression';\nimport { v4 as uuidv4 } from 'uuid';\n\n// Import published packages only\nimport { ContentTypeRegistry } from '@bernierllc/content-type-registry';\nimport { EditorialWorkflowEngine, WorkflowBuilder as _WorkflowBuilder } from '@bernierllc/content-editorial-workflow';\nimport { AutosaveManager } from '@bernierllc/content-autosave-manager';\nimport { ContentSoftDelete } from '@bernierllc/content-soft-delete';\n\n// Import content types\nimport { TextContentType } from '@bernierllc/content-type-text';\nimport { ImageContentType } from '@bernierllc/content-type-image';\nimport { AudioContentTypeManager } from '@bernierllc/content-type-audio';\nimport { VideoContentType } from '@bernierllc/content-type-video';\n\n// Import UI components (only published packages)\nimport {\n WorkflowStepper,\n StageActionButtons,\n WorkflowTimeline,\n WorkflowAdminConfig\n} from '@bernierllc/content-workflow-ui';\n\nimport {\n ContentManagementConfig,\n ContentManagementConfigSchema,\n ContentManagementSuite,\n ContentManagementSuiteOptions,\n ContentManagementSuitePlugin,\n ContentManagementSuiteMiddleware,\n ContentManagementSuiteHook,\n ContentManagementSuiteError,\n ContentManagementSuiteValidationError,\n ContentManagementSuiteNotFoundError,\n ContentManagementSuiteConflictError,\n ContentManagementSuiteInternalError\n} from './types';\n\nexport class ContentManagementSuiteImpl extends EventEmitter implements ContentManagementSuite {\n // Core Services (using published packages)\n public configManager: any; // Stub until @bernierllc/content-config-manager is published\n public workflowService: any; // Stub until @bernierllc/content-workflow-service is updated\n public editorService: any; // Stub until @bernierllc/content-editor-service is published\n public autosaveManager: AutosaveManager | null = null;\n public softDelete: ContentSoftDelete | null = null;\n public workflowEngine: EditorialWorkflowEngine | null = null;\n public contentTypeRegistry: ContentTypeRegistry;\n\n // Content Types\n public contentTypes: Map<string, any> = new Map();\n\n // UI Components (only published packages)\n public workflow: {\n stepper: typeof WorkflowStepper;\n actions: typeof StageActionButtons;\n timeline: typeof WorkflowTimeline;\n admin: typeof WorkflowAdminConfig;\n };\n\n // Editor Interface (stub until @bernierllc/content-editor-ui is published)\n public editor: any;\n\n // List Interface (stub until @bernierllc/content-list-ui is published)\n public list: any;\n\n // Admin Interface\n public admin: any;\n\n // Server\n public server: express.Application;\n\n // Configuration\n private config: ContentManagementConfig;\n private options: ContentManagementSuiteOptions;\n\n // Plugins and Middleware\n private plugins: Map<string, ContentManagementSuitePlugin> = new Map();\n private middleware: ContentManagementSuiteMiddleware[] = [];\n private hooks: Map<string, ContentManagementSuiteHook[]> = new Map();\n\n // State\n private isStarted: boolean = false;\n private isStopped: boolean = false;\n private httpServer: any = null;\n\n constructor(options: ContentManagementSuiteOptions = {}) {\n super();\n\n this.options = options;\n this.config = this.loadConfiguration();\n\n // Initialize content type registry\n this.contentTypeRegistry = new ContentTypeRegistry();\n\n // Initialize stub services (will be replaced when packages are published)\n this.configManager = this.createConfigManagerStub();\n this.workflowService = this.createWorkflowServiceStub();\n this.editorService = this.createEditorServiceStub();\n\n // Initialize UI components (only published packages)\n this.workflow = {\n stepper: WorkflowStepper,\n actions: StageActionButtons,\n timeline: WorkflowTimeline,\n admin: WorkflowAdminConfig\n };\n\n // Initialize Express server\n this.server = express();\n this.setupMiddleware();\n this.setupRoutes();\n\n // Initialize stub editor interface (until @bernierllc/content-editor-ui is published)\n this.editor = this.createEditorStub();\n\n // Initialize stub list interface (until @bernierllc/content-list-ui is published)\n this.list = this.createListStub();\n\n // Register default content types\n this.registerDefaultContentTypes();\n\n // Register plugins\n if (options.plugins) {\n options.plugins.forEach((plugin: ContentManagementSuitePlugin) => this.registerPlugin(plugin));\n }\n }\n\n // Stub creators for services not yet published\n private createConfigManagerStub(): any {\n return {\n getConfig: () => this.config,\n updateConfig: async (config: any) => { this.config = { ...this.config, ...config }; },\n start: async () => {},\n stop: async () => {}\n };\n }\n\n private createWorkflowServiceStub(): any {\n return {\n listWorkflows: async () => [],\n getWorkflow: async (id: string) => ({ id, name: 'Default Workflow' }),\n createWorkflow: async (data: any) => ({ id: uuidv4(), ...data }),\n updateWorkflow: async (id: string, data: any) => ({ id, ...data }),\n deleteWorkflow: async (_id: string) => {},\n publishContent: async (id: string) => ({ id, status: 'published' }),\n scheduleContent: async (id: string, date: Date) => ({ id, scheduledFor: date }),\n unpublishContent: async (id: string) => ({ id, status: 'draft' }),\n start: async () => {},\n stop: async () => {}\n };\n }\n\n private createEditorServiceStub(): any {\n const contentStore = new Map<string, any>();\n return {\n listContent: async (_filters: any) => ({ items: Array.from(contentStore.values()), total: contentStore.size }),\n getContent: async (id: string) => contentStore.get(id) || null,\n createContent: async (type: string, data: any) => {\n const content = { id: uuidv4(), type, ...data, createdAt: new Date().toISOString() };\n contentStore.set(content.id, content);\n return content;\n },\n updateContent: async (id: string, data: any) => {\n const existing = contentStore.get(id);\n if (!existing) throw new Error('Content not found');\n const updated = { ...existing, ...data, updatedAt: new Date().toISOString() };\n contentStore.set(id, updated);\n return updated;\n },\n deleteContent: async (id: string, _soft: boolean) => {\n contentStore.delete(id);\n },\n start: async () => {},\n stop: async () => {}\n };\n }\n\n // Stub for editor interface (until @bernierllc/content-editor-ui is published)\n private createEditorStub(): any {\n return {\n render: () => null,\n getValue: () => '',\n setValue: (_value: string) => {},\n focus: () => {},\n blur: () => {},\n on: (_event: string, _callback: (...args: any[]) => void) => {},\n off: (_event: string, _callback: (...args: any[]) => void) => {}\n };\n }\n\n // Stub for list interface (until @bernierllc/content-list-ui is published)\n private createListStub(): any {\n return {\n render: () => null,\n getItems: () => [],\n setItems: (_items: any[]) => {},\n getSelectedItems: () => [],\n setSelectedItems: (_items: any[]) => {},\n on: (_event: string, _callback: (...args: any[]) => void) => {},\n off: (_event: string, _callback: (...args: any[]) => void) => {}\n };\n }\n\n private loadConfiguration(): ContentManagementConfig {\n try {\n // Load from options first\n if (this.options.config) {\n return ContentManagementConfigSchema.parse(this.options.config);\n }\n \n // Load from config manager\n const config = this.configManager?.getConfig() || {};\n return ContentManagementConfigSchema.parse(config);\n } catch (error) {\n console.error('Failed to load configuration:', error);\n return ContentManagementConfigSchema.parse({});\n }\n }\n\n private setupMiddleware(): void {\n // Security middleware\n if (this.config.server.security.helmet) {\n this.server.use(helmet());\n }\n \n // CORS middleware\n this.server.use(cors(this.config.server.cors));\n \n // Compression middleware\n if (this.config.performance.compression.enabled) {\n this.server.use(compression({\n level: this.config.performance.compression.level\n }));\n }\n \n // Logging middleware\n if (this.options.logger) {\n this.server.use(morgan('combined', {\n stream: {\n write: (message: string) => {\n this.options.logger?.info(message.trim());\n }\n }\n }));\n }\n \n // Body parsing middleware\n this.server.use(express.json({ limit: '10mb' }));\n this.server.use(express.urlencoded({ extended: true, limit: '10mb' }));\n \n // Custom middleware\n this.middleware\n .sort((a, b) => (a.order || 0) - (b.order || 0))\n .forEach(middleware => {\n this.server.use(middleware.handler);\n });\n }\n\n private setupRoutes(): void {\n // Health check endpoint\n this.server.get('/health', (req, res) => {\n res.json({\n status: 'healthy',\n timestamp: new Date().toISOString(),\n version: '0.1.0',\n uptime: process.uptime()\n });\n });\n \n // API routes\n this.server.use('/api', this.createAPIRoutes());\n \n // Admin routes\n this.server.use('/admin', this.createAdminRoutes());\n \n // Static files\n this.server.use('/static', express.static('public'));\n \n // Error handling middleware\n this.server.use(this.errorHandler.bind(this));\n }\n\n private createAPIRoutes(): express.Router {\n const router = express.Router();\n \n // Content routes\n router.get('/content', this.getContentList.bind(this));\n router.get('/content/:id', this.getContent.bind(this));\n router.post('/content', this.createContent.bind(this));\n router.put('/content/:id', this.updateContent.bind(this));\n router.delete('/content/:id', this.deleteContent.bind(this));\n router.post('/content/:id/publish', this.publishContent.bind(this));\n router.post('/content/:id/schedule', this.scheduleContent.bind(this));\n router.post('/content/:id/unpublish', this.unpublishContent.bind(this));\n \n // Workflow routes\n router.get('/workflows', this.getWorkflows.bind(this));\n router.get('/workflows/:id', this.getWorkflow.bind(this));\n router.post('/workflows', this.createWorkflow.bind(this));\n router.put('/workflows/:id', this.updateWorkflow.bind(this));\n router.delete('/workflows/:id', this.deleteWorkflow.bind(this));\n \n // Content type routes\n router.get('/content-types', this.getContentTypes.bind(this));\n router.get('/content-types/:id', this.handleGetContentType.bind(this));\n router.post('/content-types', this.createContentType.bind(this));\n router.put('/content-types/:id', this.updateContentType.bind(this));\n router.delete('/content-types/:id', this.deleteContentType.bind(this));\n \n // Configuration routes\n router.get('/config', this.handleGetConfig.bind(this));\n router.put('/config', this.handleUpdateConfig.bind(this));\n \n // User routes\n router.get('/users', this.getUsers.bind(this));\n router.get('/users/:id', this.getUser.bind(this));\n router.post('/users', this.createUser.bind(this));\n router.put('/users/:id', this.updateUser.bind(this));\n router.delete('/users/:id', this.deleteUser.bind(this));\n \n return router;\n }\n\n private createAdminRoutes(): express.Router {\n const router = express.Router();\n \n // Admin dashboard\n router.get('/', (req, res) => {\n res.json({\n message: 'Content Management Suite Admin',\n version: '0.1.0',\n endpoints: [\n '/workflows',\n '/content-types',\n '/config',\n '/users'\n ]\n });\n });\n \n // Workflow management\n router.get('/workflows', this.getWorkflows.bind(this));\n router.post('/workflows', this.createWorkflow.bind(this));\n router.put('/workflows/:id', this.updateWorkflow.bind(this));\n router.delete('/workflows/:id', this.deleteWorkflow.bind(this));\n \n // Content type management\n router.get('/content-types', this.getContentTypes.bind(this));\n router.post('/content-types', this.createContentType.bind(this));\n router.put('/content-types/:id', this.updateContentType.bind(this));\n router.delete('/content-types/:id', this.deleteContentType.bind(this));\n \n // Configuration management\n router.get('/config', this.handleGetConfig.bind(this));\n router.put('/config', this.handleUpdateConfig.bind(this));\n \n return router;\n }\n\n private errorHandler(error: Error, _req: express.Request, res: express.Response, _next: express.NextFunction): void {\n this.emit('error', error);\n \n if (error instanceof ContentManagementSuiteError) {\n res.status(error.statusCode).json({\n error: {\n code: error.code,\n message: error.message,\n details: error.details\n }\n });\n } else {\n res.status(500).json({\n error: {\n code: 'INTERNAL_ERROR',\n message: 'An unexpected error occurred',\n details: process.env.NODE_ENV === 'development' ? error.message : undefined\n }\n });\n }\n }\n\n private registerDefaultContentTypes(): void {\n // Register all content types (using correct export names)\n // Note: These content type packages export managers/classes, not static definitions\n // We store references for use in content creation/validation\n this.contentTypes.set('text', TextContentType);\n this.contentTypes.set('image', ImageContentType);\n this.contentTypes.set('audio', AudioContentTypeManager);\n this.contentTypes.set('video', VideoContentType);\n }\n\n // Public API Methods\n async start(): Promise<void> {\n if (this.isStarted) {\n throw new ContentManagementSuiteError('Suite is already started', 'ALREADY_STARTED');\n }\n\n try {\n // Start stub services\n await this.configManager.start();\n await this.workflowService.start();\n await this.editorService.start();\n\n // Start server\n const port = this.config.server.port;\n const host = this.config.server.host;\n\n return new Promise((resolve, reject) => {\n this.httpServer = this.server.listen(port, host, () => {\n console.log(`Content Management Suite started on http://${host}:${port}`);\n this.isStarted = true;\n this.emit('started');\n resolve();\n });\n\n this.httpServer.on('error', (err: Error) => {\n this.emit('error', err);\n reject(new ContentManagementSuiteInternalError('Failed to start server', err));\n });\n });\n } catch (error) {\n this.emit('error', error);\n throw new ContentManagementSuiteInternalError('Failed to start suite', error);\n }\n }\n\n async stop(): Promise<void> {\n if (this.isStopped) {\n throw new ContentManagementSuiteError('Suite is already stopped', 'ALREADY_STOPPED');\n }\n\n try {\n // Stop stub services\n await this.configManager.stop();\n await this.workflowService.stop();\n await this.editorService.stop();\n\n // Stop server\n if (this.httpServer) {\n return new Promise((resolve) => {\n this.httpServer.close(() => {\n console.log('Content Management Suite stopped');\n this.isStopped = true;\n this.emit('stopped');\n resolve();\n });\n });\n }\n\n this.isStopped = true;\n } catch (error) {\n this.emit('error', error);\n throw new ContentManagementSuiteInternalError('Failed to stop suite', error);\n }\n }\n\n getConfig(): ContentManagementConfig {\n return this.config;\n }\n\n async updateConfig(config: Partial<ContentManagementConfig>): Promise<void> {\n try {\n const newConfig = ContentManagementConfigSchema.parse({\n ...this.config,\n ...config\n });\n \n this.config = newConfig;\n await this.configManager.updateConfig(newConfig);\n \n this.emit('config:updated', newConfig);\n } catch (error) {\n throw new ContentManagementSuiteValidationError('Invalid configuration', error);\n }\n }\n\n registerContentType(contentType: any): void {\n const id = contentType?.id || contentType?.name || 'unknown';\n this.contentTypes.set(id, contentType);\n this.emit('contentType:registered', contentType);\n }\n\n unregisterContentType(contentTypeId: string): void {\n if (!this.contentTypes.has(contentTypeId)) {\n throw new ContentManagementSuiteNotFoundError('Content type not found');\n }\n\n this.contentTypes.delete(contentTypeId);\n this.emit('contentType:unregistered', contentTypeId);\n }\n\n getContentType(contentTypeId: string): any {\n const contentType = this.contentTypes.get(contentTypeId);\n if (!contentType) {\n throw new ContentManagementSuiteNotFoundError('Content type not found');\n }\n return contentType;\n }\n\n listContentTypes(): any[] {\n return Array.from(this.contentTypes.entries()).map(([id, contentType]) => ({\n id,\n contentType,\n ...contentType\n }));\n }\n\n // Plugin Management\n registerPlugin(plugin: ContentManagementSuitePlugin): void {\n if (this.plugins.has(plugin.name)) {\n throw new ContentManagementSuiteConflictError('Plugin already registered');\n }\n \n this.plugins.set(plugin.name, plugin);\n plugin.install(this);\n \n this.emit('plugin:registered', plugin);\n }\n\n unregisterPlugin(pluginName: string): void {\n const plugin = this.plugins.get(pluginName);\n if (!plugin) {\n throw new ContentManagementSuiteNotFoundError('Plugin not found');\n }\n \n plugin.uninstall(this);\n this.plugins.delete(pluginName);\n \n this.emit('plugin:unregistered', pluginName);\n }\n\n // Middleware Management\n addMiddleware(middleware: ContentManagementSuiteMiddleware): void {\n this.middleware.push(middleware);\n this.emit('middleware:added', middleware);\n }\n\n removeMiddleware(middlewareName: string): void {\n const index = this.middleware.findIndex(m => m.name === middlewareName);\n if (index === -1) {\n throw new ContentManagementSuiteNotFoundError('Middleware not found');\n }\n \n this.middleware.splice(index, 1);\n this.emit('middleware:removed', middlewareName);\n }\n\n // Hook Management\n addHook(hook: ContentManagementSuiteHook): void {\n if (!this.hooks.has(hook.name)) {\n this.hooks.set(hook.name, []);\n }\n \n this.hooks.get(hook.name)!.push(hook);\n this.hooks.get(hook.name)!.sort((a, b) => (a.priority || 0) - (b.priority || 0));\n \n this.emit('hook:added', hook);\n }\n\n removeHook(hookName: string, handler?: (...args: any[]) => void): void {\n const hooks = this.hooks.get(hookName);\n if (!hooks) {\n throw new ContentManagementSuiteNotFoundError('Hook not found');\n }\n \n if (handler) {\n const index = hooks.findIndex(h => h.handler === handler);\n if (index === -1) {\n throw new ContentManagementSuiteNotFoundError('Hook handler not found');\n }\n hooks.splice(index, 1);\n } else {\n this.hooks.delete(hookName);\n }\n \n this.emit('hook:removed', hookName);\n }\n\n // API Route Handlers\n private async getContentList(req: express.Request, res: express.Response): Promise<void> {\n try {\n const { type, status, page = 1, limit = 20 } = req.query;\n const filters = { type, status, page: parseInt(page as string), limit: parseInt(limit as string) };\n \n const content = await this.editorService.listContent(filters);\n res.json(content);\n } catch (error) {\n throw new ContentManagementSuiteInternalError('Failed to get content list', error);\n }\n }\n\n private async getContent(req: express.Request, res: express.Response): Promise<void> {\n try {\n const { id } = req.params;\n const content = await this.editorService.getContent(id);\n res.json(content);\n } catch (error) {\n throw new ContentManagementSuiteNotFoundError('Content not found', error);\n }\n }\n\n private async createContent(req: express.Request, res: express.Response): Promise<void> {\n try {\n const { type, data } = req.body;\n const content = await this.editorService.createContent(type, data);\n this.emit('content:created', content);\n res.status(201).json(content);\n } catch (error) {\n throw new ContentManagementSuiteInternalError('Failed to create content', error);\n }\n }\n\n private async updateContent(req: express.Request, res: express.Response): Promise<void> {\n try {\n const { id } = req.params;\n const { data } = req.body;\n const content = await this.editorService.updateContent(id, data);\n this.emit('content:updated', content);\n res.json(content);\n } catch (error) {\n throw new ContentManagementSuiteInternalError('Failed to update content', error);\n }\n }\n\n private async deleteContent(req: express.Request, res: express.Response): Promise<void> {\n try {\n const { id } = req.params;\n const { soft = true } = req.query;\n await this.editorService.deleteContent(id, soft === 'true');\n this.emit('content:deleted', { id });\n res.status(204).send();\n } catch (error) {\n throw new ContentManagementSuiteInternalError('Failed to delete content', error);\n }\n }\n\n private async publishContent(req: express.Request, res: express.Response): Promise<void> {\n try {\n const { id } = req.params;\n const content = await this.workflowService.publishContent(id);\n this.emit('content:published', content);\n res.json(content);\n } catch (error) {\n throw new ContentManagementSuiteInternalError('Failed to publish content', error);\n }\n }\n\n private async scheduleContent(req: express.Request, res: express.Response): Promise<void> {\n try {\n const { id } = req.params;\n const { date } = req.body;\n const content = await this.workflowService.scheduleContent(id, new Date(date));\n this.emit('content:scheduled', content, new Date(date));\n res.json(content);\n } catch (error) {\n throw new ContentManagementSuiteInternalError('Failed to schedule content', error);\n }\n }\n\n private async unpublishContent(req: express.Request, res: express.Response): Promise<void> {\n try {\n const { id } = req.params;\n const content = await this.workflowService.unpublishContent(id);\n res.json(content);\n } catch (error) {\n throw new ContentManagementSuiteInternalError('Failed to unpublish content', error);\n }\n }\n\n private async getWorkflows(req: express.Request, res: express.Response): Promise<void> {\n try {\n const workflows = await this.workflowService.listWorkflows();\n res.json(workflows);\n } catch (error) {\n throw new ContentManagementSuiteInternalError('Failed to get workflows', error);\n }\n }\n\n private async getWorkflow(req: express.Request, res: express.Response): Promise<void> {\n try {\n const { id } = req.params;\n const workflow = await this.workflowService.getWorkflow(id);\n res.json(workflow);\n } catch (error) {\n throw new ContentManagementSuiteNotFoundError('Workflow not found', error);\n }\n }\n\n private async createWorkflow(req: express.Request, res: express.Response): Promise<void> {\n try {\n const { data } = req.body;\n const workflow = await this.workflowService.createWorkflow(data);\n res.status(201).json(workflow);\n } catch (error) {\n throw new ContentManagementSuiteInternalError('Failed to create workflow', error);\n }\n }\n\n private async updateWorkflow(req: express.Request, res: express.Response): Promise<void> {\n try {\n const { id } = req.params;\n const { data } = req.body;\n const workflow = await this.workflowService.updateWorkflow(id, data);\n res.json(workflow);\n } catch (error) {\n throw new ContentManagementSuiteInternalError('Failed to update workflow', error);\n }\n }\n\n private async deleteWorkflow(req: express.Request, res: express.Response): Promise<void> {\n try {\n const { id } = req.params;\n await this.workflowService.deleteWorkflow(id);\n res.status(204).send();\n } catch (error) {\n throw new ContentManagementSuiteInternalError('Failed to delete workflow', error);\n }\n }\n\n private async getContentTypes(req: express.Request, res: express.Response): Promise<void> {\n try {\n const contentTypes = this.listContentTypes();\n res.json(contentTypes);\n } catch (error) {\n throw new ContentManagementSuiteInternalError('Failed to get content types', error);\n }\n }\n\n private async handleGetContentType(req: express.Request, res: express.Response): Promise<void> {\n try {\n const id = req.params.id;\n if (!id) {\n throw new ContentManagementSuiteNotFoundError('Content type ID required');\n }\n const contentType = this.contentTypes.get(id);\n if (!contentType) {\n throw new ContentManagementSuiteNotFoundError('Content type not found');\n }\n res.json(contentType);\n } catch (error) {\n throw new ContentManagementSuiteNotFoundError('Content type not found', error);\n }\n }\n\n private async createContentType(req: express.Request, res: express.Response): Promise<void> {\n try {\n const { data } = req.body;\n this.registerContentType(data);\n res.status(201).json(data);\n } catch (error) {\n throw new ContentManagementSuiteInternalError('Failed to create content type', error);\n }\n }\n\n private async updateContentType(req: express.Request, res: express.Response): Promise<void> {\n try {\n const id = req.params.id;\n if (!id) {\n throw new ContentManagementSuiteNotFoundError('Content type ID required');\n }\n const { data } = req.body;\n this.unregisterContentType(id);\n this.registerContentType(data);\n res.json(data);\n } catch (error) {\n throw new ContentManagementSuiteInternalError('Failed to update content type', error);\n }\n }\n\n private async deleteContentType(req: express.Request, res: express.Response): Promise<void> {\n try {\n const id = req.params.id;\n if (!id) {\n throw new ContentManagementSuiteNotFoundError('Content type ID required');\n }\n this.unregisterContentType(id);\n res.status(204).send();\n } catch (error) {\n throw new ContentManagementSuiteInternalError('Failed to delete content type', error);\n }\n }\n\n private async handleGetConfig(req: express.Request, res: express.Response): Promise<void> {\n try {\n res.json(this.config);\n } catch (error) {\n throw new ContentManagementSuiteInternalError('Failed to get config', error);\n }\n }\n\n private async handleUpdateConfig(req: express.Request, res: express.Response): Promise<void> {\n try {\n const { config } = req.body;\n const newConfig = ContentManagementConfigSchema.parse({\n ...this.config,\n ...config\n });\n this.config = newConfig;\n await this.configManager.updateConfig(newConfig);\n this.emit('config:updated', newConfig);\n res.json(this.config);\n } catch (error) {\n throw new ContentManagementSuiteValidationError('Invalid configuration', error);\n }\n }\n\n private async getUsers(req: express.Request, res: express.Response): Promise<void> {\n try {\n // Placeholder for user management\n res.json([]);\n } catch (error) {\n throw new ContentManagementSuiteInternalError('Failed to get users', error);\n }\n }\n\n private async getUser(req: express.Request, res: express.Response): Promise<void> {\n try {\n const { id } = req.params;\n // Placeholder for user management\n res.json({ id, name: 'User' });\n } catch (error) {\n throw new ContentManagementSuiteNotFoundError('User not found', error);\n }\n }\n\n private async createUser(req: express.Request, res: express.Response): Promise<void> {\n try {\n const { data } = req.body;\n // Placeholder for user management\n res.status(201).json({ id: uuidv4(), ...data });\n } catch (error) {\n throw new ContentManagementSuiteInternalError('Failed to create user', error);\n }\n }\n\n private async updateUser(req: express.Request, res: express.Response): Promise<void> {\n try {\n const { id } = req.params;\n const { data } = req.body;\n // Placeholder for user management\n res.json({ id, ...data });\n } catch (error) {\n throw new ContentManagementSuiteInternalError('Failed to update user', error);\n }\n }\n\n private async deleteUser(req: express.Request, res: express.Response): Promise<void> {\n try {\n const { id: _id } = req.params;\n // Placeholder for user management\n res.status(204).send();\n } catch (error) {\n throw new ContentManagementSuiteInternalError('Failed to delete user', error);\n }\n }\n}\n\n// Factory function\nexport function createContentManagementSuite(options: ContentManagementSuiteOptions = {}): ContentManagementSuite {\n return new ContentManagementSuiteImpl(options);\n}\n","#!/usr/bin/env node\n\n/*\nCopyright (c) 2025 Bernier LLC\n\nThis file is licensed to the client under a limited-use license.\nThe client may use and modify this code *only within the scope of the project it was delivered for*.\nRedistribution or use in other products or commercial offerings is not permitted without written consent from Bernier LLC.\n*/\n\nimport { createContentManagementSuite } from './index';\nimport { config } from 'dotenv';\n\n// Load environment variables\nconfig();\n\nasync function main() {\n try {\n console.log('Starting Content Management Suite...');\n\n // Create suite with minimal config - Zod schema applies defaults for all missing fields\n const suite = createContentManagementSuite({\n config: {\n server: {\n port: parseInt(process.env.CONTENT_MANAGEMENT_PORT || '3000'),\n host: process.env.CONTENT_MANAGEMENT_HOST || 'localhost',\n cors: {\n origin: process.env.CONTENT_MANAGEMENT_CORS_ORIGIN || '*',\n credentials: true\n },\n security: {\n helmet: true,\n rateLimit: {\n enabled: true,\n windowMs: 15 * 60 * 1000,\n max: 100\n }\n }\n },\n database: {\n type: (process.env.CONTENT_MANAGEMENT_DATABASE_TYPE as 'sqlite' | 'postgresql' | 'mysql' | 'mongodb') || 'sqlite',\n url: process.env.CONTENT_MANAGEMENT_DATABASE_URL,\n host: process.env.CONTENT_MANAGEMENT_DATABASE_HOST || 'localhost',\n name: process.env.CONTENT_MANAGEMENT_DATABASE_NAME || 'content_management',\n ssl: process.env.CONTENT_MANAGEMENT_DATABASE_SSL === 'true',\n pool: {\n min: 2,\n max: 10\n }\n },\n security: {\n jwt: {\n secret: process.env.CONTENT_MANAGEMENT_JWT_SECRET || 'your-secret-key',\n expiresIn: process.env.CONTENT_MANAGEMENT_JWT_EXPIRES_IN || '24h',\n issuer: 'content-management-suite'\n },\n permissions: {\n enabled: true,\n defaultRole: 'user',\n roles: [\n { name: 'admin', permissions: ['*'], description: 'Full administrative access' },\n { name: 'editor', permissions: ['content.edit', 'content.publish', 'content.schedule'], description: 'Content editing and publishing' },\n { name: 'author', permissions: ['content.edit'], description: 'Content creation and editing' },\n { name: 'user', permissions: ['content.view'], description: 'Content viewing only' }\n ]\n }\n },\n integrations: {\n neverAdmin: {\n enabled: process.env.CONTENT_MANAGEMENT_NEVERADMIN_ENABLED === 'true',\n url: process.env.CONTENT_MANAGEMENT_NEVERADMIN_URL,\n apiKey: process.env.CONTENT_MANAGEMENT_NEVERADMIN_API_KEY,\n syncInterval: 300000\n },\n neverHub: {\n enabled: process.env.CONTENT_MANAGEMENT_NEVERHUB_ENABLED === 'true',\n url: process.env.CONTENT_MANAGEMENT_NEVERHUB_URL,\n apiKey: process.env.CONTENT_MANAGEMENT_NEVERHUB_API_KEY,\n packageDiscovery: true\n },\n analytics: {\n enabled: false,\n config: {}\n }\n }\n }\n });\n\n // Handle graceful shutdown\n process.on('SIGINT', async () => {\n console.log('\\nReceived SIGINT, shutting down gracefully...');\n try {\n await suite.stop();\n console.log('Suite stopped successfully');\n process.exit(0);\n } catch (error) {\n console.error('Error during shutdown:', error);\n process.exit(1);\n }\n });\n\n process.on('SIGTERM', async () => {\n console.log('\\nReceived SIGTERM, shutting down gracefully...');\n try {\n await suite.stop();\n console.log('Suite stopped successfully');\n process.exit(0);\n } catch (error) {\n console.error('Error during shutdown:', error);\n process.exit(1);\n }\n });\n\n // Start the suite\n await suite.start();\n\n console.log('Content Management Suite is running');\n console.log(`Server: http://${process.env.CONTENT_MANAGEMENT_HOST || 'localhost'}:${process.env.CONTENT_MANAGEMENT_PORT || '3000'}`);\n console.log('Press Ctrl+C to stop');\n\n } catch (error) {\n console.error('Failed to start Content Management Suite:', error);\n process.exit(1);\n }\n}\n\nmain();\n"],"mappings":"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","names":["WorkflowStepper","StageActionButtons","WorkflowTimeline","WorkflowAdminConfig","TextContentType","ImageContentType","AudioContentTypeManager","VideoContentType","ContentTypeRegistry","config"]}
|