All files / src/express coherent-express.d.ts

0% Statements 0/1
100% Branches 1/1
100% Functions 1/1
0% Lines 0/1

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147                                                                                                                                                                                                                                                                                                     
// Type definitions for Coherent.js Express.js Integration
 
import { Request, Response, NextFunction, Application } from 'express';
import { CoherentNode, ComponentFunction } from '../coherent';
 
export interface CoherentMiddlewareOptions {
  /**
   * Enable performance monitoring for rendered components
   * @default false
   */
  enablePerformanceMonitoring?: boolean;
  
  /**
   * HTML template to wrap rendered components
   * @default '<!DOCTYPE html><html><body>{{content}}</body></html>'
   */
  template?: string;
  
  /**
   * Enable server-side rendering
   * @default true
   */
  enableSSR?: boolean;
}
 
export interface CoherentHandlerOptions {
  /**
   * Enable performance monitoring for rendered components
   * @default false
   */
  enablePerformanceMonitoring?: boolean;
  
  /**
   * HTML template to wrap rendered components
   * @default '<!DOCTYPE html><html><body>{{content}}</body></html>'
   */
  template?: string;
  
  /**
   * Enable streaming rendering for large components
   * @default false
   */
  enableStreaming?: boolean;
}
 
export interface SetupCoherentExpressOptions {
  /**
   * Use Coherent.js middleware for all routes
   * @default true
   */
  useMiddleware?: boolean;
  
  /**
   * Use Coherent.js view engine
   * @default true
   */
  useEngine?: boolean;
  
  /**
   * Name of the view engine
   * @default 'coherent'
   */
  engineName?: string;
  
  /**
   * Enable performance monitoring
   * @default false
   */
  enablePerformanceMonitoring?: boolean;
  
  /**
   * Static file directory for client-side assets
   * @default 'public'
   */
  staticDir?: string;
}
 
/**
 * Coherent.js Express middleware
 * Adds Coherent.js rendering capabilities to Express
 * @param options Configuration options
 * @returns Express middleware function
 */
export function coherentMiddleware(options?: CoherentMiddlewareOptions): (
  req: Request,
  res: Response,
  next: NextFunction
) => void;
 
/**
 * Create an Express route handler for Coherent.js components
 * @param componentFactory Function that returns a Coherent component
 * @param options Configuration options
 * @returns Express route handler
 */
export function createCoherentHandler(
  componentFactory: (req: Request, res: Response, next: NextFunction) => CoherentNode | Promise<CoherentNode>,
  options?: CoherentHandlerOptions
): (req: Request, res: Response, next: NextFunction) => void;
 
/**
 * Enhanced Express engine for Coherent.js views
 * @param filePath Path to the view file
 * @param options Rendering options
 * @param callback Callback function
 */
export function enhancedExpressEngine(
  filePath: string,
  options: any,
  callback: (err: Error | null, html?: string) => void
): void;
 
/**
 * Setup Coherent.js with Express app
 * Configures middleware, view engine, and static files
 * @param app Express application instance
 * @param options Configuration options
 */
export function setupCoherentExpress(
  app: Application,
  options?: SetupCoherentExpressOptions
): void;
 
/**
 * Render a Coherent component to HTML string
 * @param component Coherent component to render
 * @param options Rendering options
 * @returns Rendered HTML string
 */
export function renderComponent(
  component: CoherentNode,
  options?: CoherentMiddlewareOptions
): string;
 
/**
 * Default export with all utilities
 */
declare const coherentExpress: {
  coherentMiddleware: typeof coherentMiddleware;
  createCoherentHandler: typeof createCoherentHandler;
  enhancedExpressEngine: typeof enhancedExpressEngine;
  setupCoherentExpress: typeof setupCoherentExpress;
  renderComponent: typeof renderComponent;
};
 
export default coherentExpress;