storion 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +20 -13
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -566,31 +566,38 @@ const { count } = useCounter((state, actions) => ({ count: state.count }));
566
566
  ### Middleware
567
567
 
568
568
  ```ts
569
- import { applyFor, applyExcept, compose } from "storion";
569
+ import { applyFor, applyExcept } from "storion";
570
+
571
+ // Just pass an array of middleware
572
+ container({ middleware: [logger, devtools, persist] });
570
573
 
571
574
  // Conditional middleware
572
- applyFor("user*", logger); // Wildcard match
573
- applyFor(/Store$/, [logger, devtools]); // RegExp match
574
- applyFor((spec) => spec.meta?.persist, persistMiddleware); // Predicate
575
+ const conditionalLogger = applyFor("user*", logger); // Wildcard match
576
+ const multiMiddleware = applyFor(/Store$/, [logger, devtools]); // RegExp match
577
+ const persistOnly = applyFor((spec) => spec.meta?.persist, persistMiddleware); // Predicate
575
578
 
576
579
  // Exclude middleware
577
- applyExcept("_internal*", logger);
578
-
579
- // Compose multiple
580
- const combined = compose(logger, devtools, persist);
580
+ const noInternalLogging = applyExcept("_internal*", logger);
581
581
 
582
- // Use in container
583
- container({ middleware: [combined] });
582
+ // Combine them
583
+ container({ middleware: [conditionalLogger, persistOnly, noInternalLogging] });
584
584
  ```
585
585
 
586
586
  ### Middleware Signature
587
587
 
588
588
  ```ts
589
589
  type StoreMiddleware = (
590
- instance: StoreInstance,
591
590
  spec: StoreSpec,
592
- container: StoreContainer
593
- ) => void | (() => void); // Return cleanup function
591
+ next: (spec: StoreSpec) => StoreInstance
592
+ ) => StoreInstance;
593
+
594
+ // Example: logging middleware
595
+ const logger: StoreMiddleware = (spec, next) => {
596
+ console.log(`Creating store: ${spec.name}`);
597
+ const instance = next(spec); // Call next to create the instance
598
+ console.log(`Created: ${instance.id}`);
599
+ return instance;
600
+ };
594
601
  ```
595
602
 
596
603
  ---
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "storion",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "description": "Reactive stores for modern apps. Type-safe. Auto-tracked. Effortlessly composable",
5
5
  "type": "module",
6
6
  "main": "./dist/storion.js",