Skip to content

Latest commit

 

History

History
344 lines (254 loc) · 20.9 KB

File metadata and controls

344 lines (254 loc) · 20.9 KB

(2023-11-11)

Change Log

All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.

0.9.22 (2025-08-01)

🚀 Overview

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.

⭐ What's New

🏗️ Complete Framework Architecture Rewrite

  • 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

🔧 Core Framework Features

Service Registry & Discovery

  • 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

Bundle System

  • 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

Advanced Service Management

  • 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

🎯 Declarative Services (SCR Support)

Component Decorators

  • @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

Features

  • 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

🏢 Enterprise Built-in Services

EventAdmin Service

  • 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

Configuration Admin Service

  • 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

Log Service

  • 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

Service Tracker

  • 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

⚛️ React Integration (@pandino/react-hooks)

Provider Component

  • PandinoProvider: Context provider for framework integration
  • Automatic Initialization: Framework startup/shutdown handled automatically
  • Bundle Loading: Declarative bundle loading via props

React Hooks

  • 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

Features

  • 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

🛠️ Developer Experience

TypeScript Support

  • 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

🔄 Migration Guide

Breaking Changes

  • Complete API restructure
  • New package organization (@pandino/pandino, @pandino/react-hooks)
  • TypeScript decorators now require experimentalDecorators: true
  • Event system redesigned with new interfaces

📦 Package Information

Core Packages

  • @pandino/pandino: Core framework implementation
  • @pandino/react-hooks: React integration hooks and components

Installation

npm install @pandino/pandino @pandino/react-hooks

Requirements

  • TypeScript 5.0+
  • Node.js 22+
  • React 18+ (for React integration)

🔧 Configuration

TypeScript Setup

{
  "compilerOptions": {
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true
  }
}

Basic Framework Setup

import { OSGiBootstrap, LogLevel } from '@pandino/pandino';

const bootstrap = new OSGiBootstrap({
  frameworkLogLevel: LogLevel.INFO
});
const framework = await bootstrap.start();

🎯 Use Cases

Enterprise Applications

  • Microservice architectures
  • Plugin systems
  • Modular monoliths
  • Configuration-driven applications

React Applications

  • Micro-frontends
  • Component libraries
  • Dynamic feature loading
  • Service-oriented UIs

🤝 Community & Support

  • 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.

0.8.30 (2023-11-11)

Note: Version bump only for package pandino-root

0.8.29 (2023-07-24)

Note: Version bump only for package pandino-root

0.8.28 (2023-07-24)

Note: Version bump only for package pandino-root

0.8.27 (2023-03-06)

Bug Fixes

  • react-hooks: add missing service listener cleanup (4783a4c)

0.8.26 (2023-03-01)

Bug Fixes

  • react-hooks: improve service and bundle lifecycle handling (a722ed9)

0.8.25 (2023-02-28)

Bug Fixes

  • pandino: fix root cause of initial service tracking issues (7e2248d)

0.8.24 (2023-02-27)

Bug Fixes

  • react-hooks: fix service tracker initial service detection (154f0d6)

0.8.23 (2023-02-24)

Features

  • react-hooks: introduce react hooks (#54) (6e01203)

0.8.21 (2023-02-17)

Bug Fixes

  • improve bundle loading stability, fix type exports (41a9508)

0.8.20 (2023-02-15)

Bug Fixes

  • pandino: fix bundle lifecycle issues for bundle chains (be046a2)

0.8.18 (2022-10-06)

Features

  • pandino: Add support for ActivatorResolvers (c6b81e3)

0.8.16 (2022-09-08)

Features

  • webpack-plugin-generate-manifest: add manifest generator for Webpack (3fe7dc8)

0.8.13 (2022-09-02)

Features

  • loader-configuration-dom: introduce default DOM-based bundler loader (ad6756d)
  • loader-configuration-nodejs: introduce default NodeJS-based bundler loader (7e7ded7)

0.8.1 (2022-08-25)

Bug Fixes

  • fix types section of package.json files (8c7fd71)

0.8.0 (2022-08-23)

Bug Fixes

  • 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)

Features

  • 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)