1.0.1 • Published 3 months ago

@soulyard/shared-state-manager v1.0.1

Weekly downloads
-
License
MIT
Repository
-
Last release
3 months ago

Voici un exemple de README.md clair et structuré pour ta bibliothèque shared-state-manager, adaptée pour une utilisation avec des microfrontends en Angular ou tout autre framework moderne supportant ESM.


📦 shared-state-manager

Librairie TypeScript + RxJS pour gérer un état d'application partagé entre plusieurs microfrontends.

✅ Fonctionnalités

  • 📤 Chaque microfrontend peut écrire uniquement dans son propre espace de noms.
  • 👀 Tous les microfrontends peuvent lire l’état global ou s’abonner uniquement à leur propre état.
  • ⚡️ Réactif grâce à RxJS.
  • 📦 Compatible CommonJS (Node) et ESM (Angular, Vite…).

🚀 Installation

npm install shared-state-manager

Assurez-vous que rxjs est aussi installé dans le projet hôte :

npm install rxjs

📚 Utilisation

1. 🔁 Mettre à jour l’état de son propre microfrontend

import sharedStateManager from 'shared-state-manager';

sharedStateManager.setMfeState('dataChooser', {
  selectedIds: [1, 2, 3]
});

2. 👀 Lire un état (snapshot)

const current = sharedStateManager.getMfeState('dataChooser');

3. 🔔 S’abonner aux changements de son propre espace

sharedStateManager.selectMfeState('dataChooser').subscribe(state => {
  console.log('Nouveau state pour dataChooser:', state);
});

4. 📡 S’abonner à l’état global

sharedStateManager.selectAll().subscribe(globalState => {
  console.log('État complet :', globalState);
});

🧱 Exemple d'intégration dans un microfrontend Angular

// app.component.ts
import { Component, OnInit } from '@angular/core';
import sharedStateManager from 'shared-state-manager';

@Component({
  selector: 'app-root',
  template: `<p>État : {{ data | json }}</p>`
})
export class AppComponent implements OnInit {
  data: any;

  ngOnInit(): void {
    sharedStateManager.selectMfeState('dataChooser').subscribe(state => {
      this.data = state;
    });

    sharedStateManager.setMfeState('dataChooser', { active: true });
  }
}

📦 Build local

npm run build

📤 Publication sur npm

npm login
npm publish --access public

Souhaites-tu également un exemple d’intégration dans un projet monorepo Nx ou Turborepo avec Angular et plusieurs microfrontends ?

1.0.1

3 months ago

1.0.0

3 months ago