UNPKG

@memberjunction/react-runtime

Version:

Platform-agnostic React component runtime for MemberJunction. Provides core compilation, registry, and execution capabilities for React components in any JavaScript environment.

220 lines (191 loc) 5.07 kB
/** * @fileoverview Main entry point for the MemberJunction React Runtime. * Exports all public APIs for platform-agnostic React component compilation and execution. * @module @memberjunction/react-runtime */ // Import necessary classes for createReactRuntime function import { ComponentCompiler } from './compiler'; import { ComponentRegistry } from './registry'; import { ComponentResolver } from './registry'; import { ComponentManager } from './component-manager'; // Export all types export * from './types'; // Export compiler APIs export { ComponentCompiler } from './compiler'; export { DEFAULT_PRESETS, DEFAULT_PLUGINS, PRODUCTION_CONFIG, DEVELOPMENT_CONFIG, getBabelConfig, validateBabelPresets, getJSXConfig } from './compiler'; // Export registry APIs export { ComponentRegistry } from './registry'; export { ComponentResolver, ComponentSpec, ResolvedComponents, ComponentRegistryService, IComponentRegistryClient } from './registry'; // Export unified ComponentManager export { ComponentManager } from './component-manager'; export type { LoadOptions, LoadResult, HierarchyResult, ComponentManagerConfig } from './component-manager'; // Export runtime APIs export { createErrorBoundary, withErrorBoundary, formatComponentError, createErrorLogger } from './runtime'; export { buildComponentProps, normalizeCallbacks, normalizeStyles, validateComponentProps, mergeProps, createPropsTransformer, wrapCallbacksWithLogging, extractPropPaths, PropBuilderOptions } from './runtime'; export { ComponentHierarchyRegistrar, registerComponentHierarchy, validateComponentSpec, flattenComponentHierarchy, countComponentsInHierarchy, HierarchyRegistrationResult, ComponentRegistrationError, HierarchyRegistrationOptions } from './runtime'; export { ReactRootManager, reactRootManager, ManagedReactRoot } from './runtime'; // Export utilities export { SetupStyles, createDefaultComponentStyles } from './utilities/component-styles'; export { StandardLibraries, StandardLibraryManager, createStandardLibraries } from './utilities/standard-libraries'; export { LibraryLoader, LibraryLoadOptions, LibraryLoadResult } from './utilities/library-loader'; export { getCoreRuntimeLibraries, isCoreRuntimeLibrary } from './utilities/core-libraries'; export { LibraryRegistry, LibraryDefinition } from './utilities/library-registry'; export { ComponentErrorAnalyzer, FailedComponentInfo } from './utilities/component-error-analyzer'; export { ResourceManager, resourceManager, ManagedResource } from './utilities/resource-manager'; export { CacheManager, CacheEntry, CacheOptions } from './utilities/cache-manager'; export { unwrapLibraryComponent, unwrapLibraryComponents, unwrapAllLibraryComponents, // Legacy exports for backward compatibility unwrapComponent, unwrapComponents, unwrapAllComponents } from './utilities/component-unwrapper'; // Version information export const VERSION = '2.69.1'; // Default configurations export const DEFAULT_CONFIGS = { compiler: { babel: { presets: ['react'], plugins: [] }, minify: false, sourceMaps: false, cache: true, maxCacheSize: 100 }, registry: { maxComponents: 1000, cleanupInterval: 60000, useLRU: true, enableNamespaces: true } }; /** * Creates a complete React runtime instance with all necessary components * @param babelInstance - Babel standalone instance for compilation * @param config - Optional configuration overrides * @param runtimeContext - Optional runtime context for registry-based components * @param debug - Enable debug logging (defaults to false) * @returns Object containing compiler, registry, and resolver instances */ export function createReactRuntime( babelInstance: any, config?: { compiler?: Partial<import('./types').CompilerConfig>; registry?: Partial<import('./types').RegistryConfig>; manager?: Partial<import('./component-manager').ComponentManagerConfig>; }, runtimeContext?: import('./types').RuntimeContext, debug: boolean = false ) { // Merge debug flag into configs const compilerConfig = { ...config?.compiler, debug: config?.compiler?.debug ?? debug }; const registryConfig = { ...config?.registry, debug: config?.registry?.debug ?? debug }; const managerConfig = { ...config?.manager, debug: config?.manager?.debug ?? debug }; const compiler = new ComponentCompiler(compilerConfig); compiler.setBabelInstance(babelInstance); const registry = new ComponentRegistry(registryConfig); const resolver = new ComponentResolver(registry, compiler, runtimeContext); // Create the unified ComponentManager const manager = new ComponentManager( compiler, registry, runtimeContext || { React: null, ReactDOM: null }, managerConfig ); return { compiler, registry, resolver, manager, // New unified manager version: VERSION, debug }; }