All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.
Pandino v0.9.22 represents a complete rewrite of the framework, delivering a production-ready TypeScript implementation of OSGi-inspired modular architecture. This release introduces comprehensive service-oriented programming capabilities with first-class React integration, declarative services, and enterprise-grade built-in services.
- Modern TypeScript Implementation: Full rewrite using latest TypeScript features with comprehensive type safety
- OSGi-Inspired Service Registry: Dynamic service discovery and dependency injection with LDAP filtering
- Bundle Lifecycle Management: Complete module lifecycle with automatic dependency resolution
- Zero-Configuration Setup: Sensible defaults with optional configuration for advanced use cases
- Dynamic Service Registration: Register and discover services at runtime with rich metadata
- LDAP Filter Support: Advanced service filtering using industry-standard LDAP syntax
- Service Ranking: Automatic service selection based on configurable ranking
- Service References: Safe service access patterns preventing memory leaks
- Self-Contained Modules: Bundles with independent lifecycles and clean boundaries
- Bundle Activators: Lifecycle hooks for startup and shutdown operations
- Dynamic Loading: Runtime bundle installation and uninstallation
- Dependency Resolution: Automatic service dependency resolution regardless of load order
- Service Factories: Lazy service instantiation and prototype services
- Service Tracking: Reactive service availability monitoring
- Configuration Integration: Services can receive dynamic configuration updates
- Event-Driven Architecture: Publish-subscribe messaging between components
@Component: Define service components with metadata@Service: Expose component interfaces as services@Reference: Inject service dependencies with lifecycle management@Property: Configure component properties@Activate/@Deactivate/@Modified: Lifecycle method decorators
- Automatic Dependency Injection: Zero-boilerplate service wiring
- Lifecycle Management: Automatic component activation/deactivation
- Configuration Binding: Dynamic configuration updates via ConfigAdmin
- Service Cardinality: Support for optional, mandatory, and multiple service references
- Topic-Based Messaging: Hierarchical event topics with wildcard support
- Event Filtering: LDAP-based event filtering for targeted message delivery
- Synchronous & Asynchronous: Support for both sync and async event delivery
- Event Properties: Rich event metadata for complex routing scenarios
- Dynamic Configuration: Runtime configuration updates without restarts
- Managed Services: Automatic configuration injection into services
- Configuration Persistence: Pluggable configuration storage backends
- Factory Configurations: Template-based configuration for multiple instances
- Centralized Logging: Framework-wide logging with contextual information
- Bundle Context: Automatic bundle identification in log entries
- Multiple Log Levels: DEBUG, INFO, WARN, ERROR with configurable filtering
- Structured Logging: JSON-formatted log entries with metadata
- Simplified Service Discovery: High-level API for service monitoring
- Lifecycle Callbacks: React to service availability changes
- Multiple Service Tracking: Track collections of related services
- Filter-Based Tracking: Track services matching specific criteria
- PandinoProvider: Context provider for framework integration
- Automatic Initialization: Framework startup/shutdown handled automatically
- Bundle Loading: Declarative bundle loading via props
- usePandinoContext: Access framework instance and bundle context
- useService: Reactive service discovery with loading states
- useServiceTracker: Track multiple services with real-time updates
- useBundles: Monitor bundle states and lifecycle
- useRegisterService: Register React components as services
- Reactive Service Updates: Components re-render when services change
- Loading States: Built-in loading indicators for service availability
- Error Boundaries: Graceful handling of service failures
- TypeScript Support: Full type safety for service interfaces
- Experimental Decorators: Full decorator support for declarative services
- Type-Safe APIs: Comprehensive TypeScript definitions
- Generic Service References: Type-safe service discovery and injection
- IntelliSense Support: Rich IDE integration with auto-completion
- Complete API restructure
- New package organization (
@pandino/pandino,@pandino/react-hooks) - TypeScript decorators now require
experimentalDecorators: true - Event system redesigned with new interfaces
- @pandino/pandino: Core framework implementation
- @pandino/react-hooks: React integration hooks and components
npm install @pandino/pandino @pandino/react-hooks- TypeScript 5.0+
- Node.js 22+
- React 18+ (for React integration)
{
"compilerOptions": {
"experimentalDecorators": true,
"emitDecoratorMetadata": true
}
}import { OSGiBootstrap, LogLevel } from '@pandino/pandino';
const bootstrap = new OSGiBootstrap({
frameworkLogLevel: LogLevel.INFO
});
const framework = await bootstrap.start();- Microservice architectures
- Plugin systems
- Modular monoliths
- Configuration-driven applications
- Micro-frontends
- Component libraries
- Dynamic feature loading
- Service-oriented UIs
- Examples: Working examples for common use cases
- TypeScript: Full type definitions included
- License: Eclipse Public License 2.0
Examples: Example Applications
For questions and support, please refer to the project documentation or create an issue in the repository.
Note: Version bump only for package pandino-root
Note: Version bump only for package pandino-root
Note: Version bump only for package pandino-root
- react-hooks: add missing service listener cleanup (4783a4c)
- react-hooks: improve service and bundle lifecycle handling (a722ed9)
- pandino: fix root cause of initial service tracking issues (7e2248d)
- react-hooks: fix service tracker initial service detection (154f0d6)
- improve bundle loading stability, fix type exports (41a9508)
- pandino: fix bundle lifecycle issues for bundle chains (be046a2)
- pandino: Add support for ActivatorResolvers (c6b81e3)
- webpack-plugin-generate-manifest: add manifest generator for Webpack (3fe7dc8)
- loader-configuration-dom: introduce default DOM-based bundler loader (ad6756d)
- loader-configuration-nodejs: introduce default NodeJS-based bundler loader (7e7ded7)
- fix types section of package.json files (8c7fd71)
- BundleContext API (389ce0a)
- Configuration admin event handling (252aee7)
- configuration cache delete (83cad32)
- configuration cache delete #2 (780933d)
- Configuration equals method [ci skip] (a98a77b)
- Configuration Manager lifecycle (6fcc24f)
- configuration manager not updating configurations properly (d03b7cb)
- example projects (00ebe60)
- fix rollup plugin pandino react externalize to output all sources (3f747f4)
- misleading NodeJS JavaScript example setup (5b21fb8)
- Pandino now compatible with NodeJs v14.x again (19e3f10)
- pandino typedef mapping (67cb3d9)
- pandino-configuration-management: fix required capability (2c19cab)
- pandino-mission-control-dom: fix typo for bundle state (96685d4)
- pandino: fix bundle lifecycle, bundles not ending up in uninstalled state (16af965)
- pandino: fix inactive bundles not blocking starting of dependent bundles (f10f26e)
- persistence manager interface key (ce78fe6)
- pokedex: fix bundle requirements (f7cfbf2)
- prettier script missing files (a1746e0)
- provide capability for memory-based persistence manager (ae107eb)
- react-dom: pandino-react-dom bundle, missing capability-provide for example (78316b4)
- rollup-plugin-generate-manifest: remove redundant license entry from manifest (acd08b9)
- service loading error (2135fe5)
- test debugger breakpoint issues (f8f0343)
- add BundleTracker and ServiceTracker functionality (3b4edc2)
- add complex React example project, fix bugs, enhance rollup plugin (3a214e5)
- add ConfigAdmin and EventAdmin APIs (735dbe7)
- add EventAdmin implementation (9a5b597)
- add EventAdmin post functionality with tests (c7bc6d5)
- add experimental nodejs installer bundle (1aeff82)
- add experimental Rollup plugin to support externalized React Component projects (d71740f)
- add hasObjectClass API to ServiceReference (62af710)
- add in-memory implementation of the persistence manager api (f611c6b)
- add Log API (3a749d9)
- add more examples [skip ci] (2a28b6a)
- add node cjs example project (b8c7da2)
- add Persistence Manager API (4334373)
- add placeholder event admin implementation package (f56a762)
- add rollup-plugin-generate-manifest plugin (679ee49)
- add service listener filter support (6505a59)
- add targeted pid without support (9a7771f)
- bundle-installer-nodejs: update Bundle (cea16d3)
- ConfigAdmin features and added tests (a43873b)
- finalize configuration manager, with added example project (80160f5)
- finalize simple nodejs example project (20a3b26)
- implement BundleContext listeners support (dbe0f0b)
- implement BundleContext service support (1bf7446)
- improve Bundle update handling (fad4239)
- improve EventAdmin, also fix it not being able to react to Service registrations (9c5a83f)
- init configuration management (2669ec4)
- integrating persistence manager with configuration manager (0494dd9)
- introduce Config Admin (f3f815a)
- NodeJS support and refine public APIs (fa2f53f)
- pandino-mission-control-dom: add bundle list with actions (09fa985)
- pandino-mission-control-dom: add initial version of Pandino Mission Control DOM (9d8a96d)
- pandino-mui-core: add initial version of mui wrapper bundle (3a30c07)
- pandino-prop-types: add prop-types wrapping bundle (22d1a8d)
- pandino-react-dom: add missing default export for React, update typedefs (3d6055a)
- pandino-react-router-dom: add pandino-react-router-dom bundle to extras (29e0ab7)
- pandino: add bundle tracker (cda2032)
- pandino: add Service Tracker (f46e63d)
- pandino: expose ServiceTracker and BundleTracker APIs via BundleContext (89c12a6)
- pandino: prototype service support (71f9c2b)
- persistence manager - localstorage implementation (9f00112)
- provide explicit, separate cjs and esm bundles for pandino (dbd8ae6)
- react-dom: initial implementation of React DOM Bundle with example project (0b2daca)
- rollup-plugin-generate-manifest: add more license handling options (2a8209d)
- support targeted pids in CM (a2b5864)
- update examples, add NodeJS example project (c3297a2)
- update pandino-react-dom to support React 18 (7162164)
- update react component proxy example project (85fe048)
- update react-pandino example project to include the new react-router-dom bundle (c00c911)
- update react-pandino example project with initial version of wrapped MUI bundle (f8b63b6)