@alwatr/flux 4.1.1 → 6.0.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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,26 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [6.0.2](https://github.com/Alwatr/flux/compare/v6.0.1...v6.0.2) (2025-09-21)
7
+
8
+ ### 🔗 Dependencies update
9
+
10
+ * update dependencies for @alwatr/nano-build, @alwatr/logger, @alwatr/debounce, and @alwatr/delay ([e7cfed5](https://github.com/Alwatr/flux/commit/e7cfed56bd6a7e7cd402e6f38c415de5737f5b24))
11
+
12
+ ## [6.0.1](https://github.com/Alwatr/flux/compare/v6.0.0...v6.0.1) (2025-09-20)
13
+
14
+ ### ⚠ BREAKING CHANGES
15
+
16
+ * Complete rewrite of @alwatr/flux core package
17
+
18
+ ### ✨ Features
19
+
20
+ * add initial implementation of Flux package with README, LICENSE, and configuration files ([778881c](https://github.com/Alwatr/flux/commit/778881c00c8e73bbf7649fcecb641a1689e9eaad))
21
+
22
+ ### 🔗 Dependencies update
23
+
24
+ * update ([c125252](https://github.com/Alwatr/flux/commit/c1252529be17b6b6d90be85d411837fac35ad5df))
25
+
6
26
  ## [4.1.1](https://github.com/Alwatr/flux/compare/v4.1.0...v4.1.1) (2025-09-08)
7
27
 
8
28
  **Note:** Version bump only for package @alwatr/flux
package/README.md CHANGED
@@ -1,41 +1,241 @@
1
- # Flux - Elegant State Management and Event System
1
+ # Flux: The Reactive Brain for Your TypeScript Application
2
2
 
3
- ## Introduction
3
+ [](https://www.google.com/search?q=alwatr+flux)
4
+ [](https://www.google.com/search?q=alwatr+fsm)
5
+ [](https://www.google.com/search?q=alwatr+signal)
6
+ [](https://www.google.com/search?q=alwatr)
7
+ [](https://www.npmjs.com/package/%40alwatr/flux)
8
+ [](https://www.npmjs.com/package/%40alwatr/fsm)
9
+ [](https://www.npmjs.com/package/%40alwatr/signal)
4
10
 
5
- Flux empowers your applications with elegant and powerful state management and event handling capabilities. Built on the observable design pattern, Flux provides a lightweight yet robust foundation for managing global signals and states.
11
+ **Flux** is not just another state management library; it's a paradigm shift. It provides a cohesive, type-safe, and incredibly performant ecosystem for orchestrating application state, from simple reactive values to complex, resilient workflows. Built on the principles of predictability and simplicity, Flux empowers you to write clean, decoupled, and highly maintainable code.
6
12
 
7
- **Key Features:**
13
+ Stop wrestling with unpredictable state changes and bloated frameworks. Embrace a system where logic flows intuitively.
8
14
 
9
- - **Intuitive State Management:** Embrace Flux as an advanced alternative to Redux or Recoil, minus the complexities and unnecessary overhead. Each signal maintains its own value, offering seamless state control.
10
- - **Finite-State Machines (FSM):** Leverage observables to gracefully manage invocations and state transitions within your finite-state machines.
11
- - **Server Context Management:** Effortlessly handle server-side context with Flux's elegant context manager, ensuring optimal organization and control.
12
- - **Remote Context Management:** Manage remote context data with offline-first support and automatic revalidation.
13
- - **Fetch State Machine:** Simplify state management for server requests with built-in support for fetch operations.
15
+ ---
14
16
 
15
- ## Packages
17
+ # فلاکس: مغز متفکر واکنشی برای اپلیکیشن TypeScript شما
16
18
 
17
- ### Core Packages
19
+ **فلاکس** یک کتابخانه مدیریت وضعیت معمولی نیست؛ یک تغییر پارادایم است. این اکوسیستم یکپارچه، تایپ-سیف و فوق‌العاده کارآمد، ابزاری برای سازماندهی وضعیت اپلیکیشن شما فراهم می‌کند؛ از مقادیر واکنشی ساده گرفته تا گردش‌کارهای پیچیده و تاب‌آور. فلاکس بر اساس اصول پیش‌بینی‌پذیری و سادگی ساخته شده و به شما قدرت می‌دهد تا کدی تمیز، مستقل و با قابلیت نگهداری بالا بنویسید.
18
20
 
19
- - **Observable:** Provides the core observable pattern implementation used throughout the Flux ecosystem. See [packages/observable](packages/observable) for more details.
20
- - **Context:** A simple yet powerful TypeScript library for managing application context and facilitating efficient communication between components. See [packages/context](packages/context) for more details.
21
- - **Signal:** A lightweight library for managing global signals and state changes. See [packages/signal](packages/signal) for more details.
21
+ با تغییرات وضعیت غیرقابل‌پیش‌بینی و فریم‌ورک‌های سنگین خداحافظی کنید. سیستمی را بپذیرید که در آن، منطق به شکلی طبیعی و قابل درک جریان دارد.
22
22
 
23
- ### State Machines
23
+ ## Core Packages / پکیج‌های اصلی
24
24
 
25
- - **FSM:** Core finite-state machine implementation. See [packages/fsm](packages/fsm) for more details.
26
- - **FetchStateMachine:** Simplifies state management for server requests with built-in support for fetch operations. See [packages/fetch-state-machine](packages/fetch-state-machine) for more details.
27
- - **RemoteContext:** Manages remote context data with offline-first support and automatic revalidation. See [packages/remote-context](packages/remote-context) for more details.
25
+ Flux is a monorepo containing a suite of powerful, focused packages. The two main pillars are:
26
+ فلاکس یک مونوریپو است که مجموعه‌ای از پکیج‌های قدرتمند و متمرکز را در خود جای داده است. دو ستون اصلی آن عبارتند از:
28
27
 
29
- ## Usage
28
+ - **[@alwatr/signal](https://github.com/Alwatr/flux/tree/next/packages/signal)**: A revolutionary reactive programming library. It provides the foundational blocks for creating and composing streams of data and events with surgical precision.
29
+ <br>یک کتابخانه برنامه‌نویسی واکنشی انقلابی. این پکیج، بلوک‌های بنیادین برای ایجاد و ترکیب جریان‌های داده و رویدادها را با دقتی بی‌نظیر فراهم می‌کند.
30
30
 
31
- Refer to the individual package READMEs for comprehensive usage instructions and examples.
31
+ - **[@alwatr/fsm](https://github.com/Alwatr/flux/tree/next/packages/fsm)**: A tiny, declarative, and type-safe Finite State Machine (FSM) library built on top of signals. It makes modeling complex, multi-step logic feel effortless and robust.
32
+ <br>یک کتابخانه ماشین حالت متناهی (FSM) کوچک، اعلانی و تایپ-سیف که بر پایه سیگنال‌ها ساخته شده است. این ابزار، مدل‌سازی منطق‌های پیچیده و چندمرحله‌ای را به کاری آسان و مستحکم تبدیل می‌کند.
32
33
 
33
- ## Sponsors
34
+ ---
34
35
 
35
- The following companies, organizations, and individuals support flux ongoing maintenance and development. Become a Sponsor to get your logo on our README and website.
36
+ ## 🚀 Deep Dive 1: The Power of Signals
37
+
38
+ Everything in Flux starts with a **Signal**. Think of a signal as a living value—a variable that broadcasts an alert whenever it changes. You can listen to these alerts to run side effects or create new signals that derive their value from others.
39
+
40
+ ### Practical Example: A Smart Search Input
41
+
42
+ Let's build a search component that only triggers a search when the user has typed at least 3 characters and has paused typing for 300ms.
36
43
 
44
+ #### ۱. تعریف سیگنال‌های پایه (Define Core Signals)
37
45
 
38
- ### Contributing
46
+ ```typescript
47
+ import {StateSignal, ComputedSignal, createDebouncedSignal} from '@alwatr/signal';
48
+
49
+ // 1. A StateSignal to hold the raw input from the user.
50
+ // ۱. یک StateSignal برای نگهداری ورودی خام کاربر.
51
+ const searchInput = new StateSignal<string>({
52
+ name: 'search-input',
53
+ initialValue: '',
54
+ });
55
+
56
+ // 2. A ComputedSignal that derives a boolean value.
57
+ // It's true only if the input is long enough.
58
+ // ۲. یک ComputedSignal که یک مقدار boolean را استخراج می‌کند.
59
+ // این سیگنال تنها زمانی true است که طول ورودی کافی باشد.
60
+ const isSearchValid = new ComputedSignal<boolean>({
61
+ name: 'is-search-valid',
62
+ deps: [searchInput],
63
+ get: () => searchInput.get().length >= 3,
64
+ });
65
+ ```
66
+
67
+ #### ۲. ساخت سیگنال Debounce شده (Create the Debounced Signal)
68
+
69
+ Now, we create a new signal that only updates after the user stops typing. This is a powerful "operator" that prevents flooding your application with unnecessary events.
70
+
71
+ ```typescript
72
+ // 3. A debounced signal that waits for 300ms of inactivity on the searchInput.
73
+ // ۳. یک سیگنال debounce شده که ۳۰۰ میلی‌ثانیه پس از توقف فعالیت در searchInput به‌روز می‌شود.
74
+ const debouncedSearch = createDebouncedSignal(searchInput, {
75
+ delay: 300,
76
+ });
77
+ ```
78
+
79
+ #### ۳. اجرای Side Effect نهایی (Execute the Final Side Effect)
80
+
81
+ Finally, an `EffectSignal` listens to our debounced signal and performs the search, but only if the input is valid.
82
+
83
+ ```typescript
84
+ import {EffectSignal} from '@alwatr/signal';
85
+
86
+ // 4. An EffectSignal to run the final logic (e.g., call an API).
87
+ // ۴. یک EffectSignal برای اجرای منطق نهایی (مثلاً فراخوانی یک API).
88
+ const searchEffect = new EffectSignal({
89
+ name: 'api-caller-effect',
90
+ deps: [debouncedSearch], // It only runs when the debounced value changes.
91
+ run: () => {
92
+ // We check our computed signal before proceeding.
93
+ if (isSearchValid.get() === false) {
94
+ console.log('Search is not valid. Skipping API call.');
95
+ return;
96
+ }
97
+
98
+ const query = debouncedSearch.get();
99
+ console.log(`🚀 Calling API with query: "${query}"...`);
100
+ // fetch(`/api/search?q=${query}`);
101
+ },
102
+ });
103
+
104
+ // --- Simulate User Input ---
105
+ searchInput.set('a'); // Logs: Search is not valid.
106
+ searchInput.set('ab'); // Logs: Search is not valid.
107
+ searchInput.set('abc'); // After 300ms, logs: 🚀 Calling API with query: "abc"...
108
+ ```
109
+
110
+ This example shows the true power of composition. We built a sophisticated, performant feature by chaining simple, declarative signals together.
111
+
112
+ ---
113
+
114
+ ## 🧠 Deep Dive 2: Mastering Complexity with State Machines
115
+
116
+ For logic that involves multiple, distinct stages—like data fetching, user onboarding, or a shopping cart—a Finite State Machine (FSM) is your best friend. An FSM ensures that your application can only be in **one defined state at a time** and can only transition between states in ways you explicitly allow.
117
+
118
+ ### Practical Example: A Resilient Data Fetcher
119
+
120
+ Let's model a robust data fetching workflow that handles loading, success, and error states, and even allows for retries.
121
+
122
+ #### ۱. تعریف انواع و پیکربندی (Define Types & Configuration)
123
+
124
+ ```typescript
125
+ import {createFsmService} from '@alwatr/fsm';
126
+ import type {StateMachineConfig} from '@alwatr/fsm';
127
+
128
+ // Types for our machine
129
+ type User = {id: string; name: string};
130
+ type FetchContext = {user: User | null; error: Error | null; retries: number};
131
+ type FetchState = 'idle' | 'pending' | 'success' | 'error';
132
+ type FetchEvent = {type: 'FETCH'; id: string} | {type: 'RESOLVE'; user: User} | {type: 'REJECT'; error: Error} | {type: 'RETRY'};
133
+
134
+ // The entire logic is declared in this single configuration object.
135
+ // تمام منطق در این آبجکت پیکربندی واحد تعریف می‌شود.
136
+ const fetchMachineConfig: StateMachineConfig<FetchState, FetchEvent, FetchContext> = {
137
+ name: 'user-fetcher',
138
+ initial: 'idle',
139
+ context: {user: null, error: null, retries: 0},
140
+ states: {
141
+ idle: {
142
+ on: {
143
+ FETCH: {target: 'pending'},
144
+ },
145
+ },
146
+ pending: {
147
+ // On entering 'pending', this effect runs automatically.
148
+ // با ورود به وضعیت 'pending'، این effect به صورت خودکار اجرا می‌شود.
149
+ entry: [
150
+ async (event) => {
151
+ if (event.type !== 'FETCH') return; // Type guard
152
+ try {
153
+ const response = await fetch(`https://api.example.com/users/${event.id}`);
154
+ if (!response.ok) throw new Error('User not found');
155
+ const user = (await response.json()) as User;
156
+ // An effect can dispatch a new event back to the machine.
157
+ // یک effect می‌تواند یک رویداد جدید را به خود ماشین ارسال کند.
158
+ return {type: 'RESOLVE', user};
159
+ } catch (err) {
160
+ return {type: 'REJECT', error: err as Error};
161
+ }
162
+ },
163
+ ],
164
+ on: {
165
+ RESOLVE: {
166
+ target: 'success',
167
+ assigners: [(event) => ({user: event.user})], // Update context
168
+ },
169
+ REJECT: {
170
+ target: 'error',
171
+ assigners: [(event) => ({error: event.error})], // Update context
172
+ },
173
+ },
174
+ },
175
+ success: {
176
+ on: {
177
+ FETCH: {target: 'pending'}, // Allow re-fetching
178
+ },
179
+ },
180
+ error: {
181
+ on: {
182
+ RETRY: {
183
+ target: 'pending',
184
+ // A transition can be protected by a condition.
185
+ // یک گذار می‌تواند توسط یک شرط محافظت شود.
186
+ condition: (event, context) => context.retries < 3,
187
+ assigners: [(event, context) => ({retries: context.retries + 1})],
188
+ },
189
+ },
190
+ },
191
+ },
192
+ };
193
+ ```
194
+
195
+ #### ۲. استفاده از سرویس FSM (Using the FSM Service)
196
+
197
+ The FSM service exposes signals that you can subscribe to in your UI or other parts of your application. This completely decouples your logic from the presentation layer.
198
+
199
+ ```typescript
200
+ const fetchService = createFsmService(fetchMachineConfig);
201
+
202
+ // Subscribe to state changes to update the UI.
203
+ fetchService.stateSignal.subscribe((state) => {
204
+ console.log(`Current State: ${state.name}`, state.context);
205
+ // In a real app:
206
+ // if (state.name === 'pending') showSpinner();
207
+ // if (state.name === 'success') showUserData(state.context.user);
208
+ // if (state.name === 'error') showError(state.context.error);
209
+ });
210
+
211
+ // Dispatch events to drive the machine.
212
+ fetchService.eventSignal.dispatch({type: 'FETCH', id: '1'});
213
+
214
+ // If it fails, you could dispatch a retry event.
215
+ // setTimeout(() => {
216
+ // if (fetchService.stateSignal.get().name === 'error') {
217
+ // fetchService.eventSignal.dispatch({type: 'RETRY'});
218
+ // }
219
+ // }, 1000);
220
+ ```
221
+
222
+ With this FSM, you have created a predictable, visualizable, and crash-proof workflow. Race conditions and unpredictable states are now a thing of the past.
223
+
224
+ ---
225
+
226
+ ## Learn More / بیشتر بیاموزید
227
+
228
+ This was just a glimpse into the power of the Flux ecosystem. To truly master them, dive into the detailed documentation for each package:
229
+
230
+ این تنها نگاهی کوتاه به قدرت اکوسیستم فلاکس بود. برای تسلط کامل، مستندات دقیق هر پکیج را مطالعه کنید:
231
+
232
+ - **[dive deep into `@alwatr/signal`](https://github.com/Alwatr/flux/tree/next/packages/signal)**
233
+ - **[dive deep into `@alwatr/fsm`](https://github.com/Alwatr/flux/tree/next/packages/fsm)**
234
+
235
+ ## Contributing
39
236
 
40
237
  Contributions are welcome! Please read our [contribution guidelines](https://github.com/Alwatr/.github/blob/next/CONTRIBUTING.md) before submitting a pull request.
41
238
 
239
+ ## Sponsors
240
+
241
+ The following companies, organizations, and individuals support flux ongoing maintenance and development. Become a Sponsor to get your logo on our README and website.
package/dist/main.cjs CHANGED
@@ -1,36 +1,4 @@
1
- /* @alwatr/flux v4.1.1 */
2
- "use strict";
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __copyProps = (to, from, except, desc) => {
8
- if (from && typeof from === "object" || typeof from === "function") {
9
- for (let key of __getOwnPropNames(from))
10
- if (!__hasOwnProp.call(to, key) && key !== except)
11
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
12
- }
13
- return to;
14
- };
15
- var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
16
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
17
-
18
- // src/main.ts
19
- var main_exports = {};
20
- module.exports = __toCommonJS(main_exports);
21
- __reExport(main_exports, require("@alwatr/context"), module.exports);
22
- __reExport(main_exports, require("@alwatr/fetch-state-machine"), module.exports);
23
- __reExport(main_exports, require("@alwatr/fsm"), module.exports);
24
- __reExport(main_exports, require("@alwatr/observable"), module.exports);
25
- __reExport(main_exports, require("@alwatr/remote-context"), module.exports);
26
- __reExport(main_exports, require("@alwatr/signal"), module.exports);
27
- // Annotate the CommonJS export names for ESM import in node:
28
- 0 && (module.exports = {
29
- ...require("@alwatr/context"),
30
- ...require("@alwatr/fetch-state-machine"),
31
- ...require("@alwatr/fsm"),
32
- ...require("@alwatr/observable"),
33
- ...require("@alwatr/remote-context"),
34
- ...require("@alwatr/signal")
35
- });
1
+ /** 📦 @alwatr/flux v6.0.2 */
2
+ __dev_mode__: console.debug("📦 @alwatr/flux v6.0.2");
3
+ "use strict";var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __hasOwnProp=Object.prototype.hasOwnProperty;var __copyProps=(to,from,except,desc)=>{if(from&&typeof from==="object"||typeof from==="function"){for(let key of __getOwnPropNames(from))if(!__hasOwnProp.call(to,key)&&key!==except)__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable})}return to};var __reExport=(target,mod,secondTarget)=>(__copyProps(target,mod,"default"),secondTarget&&__copyProps(secondTarget,mod,"default"));var __toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:true}),mod);var main_exports={};module.exports=__toCommonJS(main_exports);__reExport(main_exports,require("@alwatr/fsm"),module.exports);__reExport(main_exports,require("@alwatr/signal"),module.exports);0&&(module.exports={...require("@alwatr/fsm"),...require("@alwatr/signal")});
36
4
  //# sourceMappingURL=main.cjs.map
package/dist/main.cjs.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/main.ts"],
4
- "sourcesContent": ["export * from '@alwatr/context';\nexport * from '@alwatr/fetch-state-machine';\nexport * from '@alwatr/fsm';\nexport * from '@alwatr/observable';\nexport * from '@alwatr/remote-context';\nexport * from '@alwatr/signal';\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,yBAAc,4BAAd;AACA,yBAAc,wCADd;AAEA,yBAAc,wBAFd;AAGA,yBAAc,+BAHd;AAIA,yBAAc,mCAJd;AAKA,yBAAc,2BALd;",
4
+ "sourcesContent": ["export * from '@alwatr/fsm';\nexport * from '@alwatr/signal';\n"],
5
+ "mappings": ";;isBAAA,sFAAc,uBAAd,gBACA,wBAAc,0BADd",
6
6
  "names": []
7
7
  }
package/dist/main.d.ts CHANGED
@@ -1,7 +1,3 @@
1
- export * from '@alwatr/context';
2
- export * from '@alwatr/fetch-state-machine';
3
1
  export * from '@alwatr/fsm';
4
- export * from '@alwatr/observable';
5
- export * from '@alwatr/remote-context';
6
2
  export * from '@alwatr/signal';
7
3
  //# sourceMappingURL=main.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC"}
package/dist/main.mjs CHANGED
@@ -1,10 +1,4 @@
1
- /* @alwatr/flux v4.1.1 */
2
-
3
- // src/main.ts
4
- export * from "@alwatr/context";
5
- export * from "@alwatr/fetch-state-machine";
6
- export * from "@alwatr/fsm";
7
- export * from "@alwatr/observable";
8
- export * from "@alwatr/remote-context";
9
- export * from "@alwatr/signal";
1
+ /** 📦 @alwatr/flux v6.0.2 */
2
+ __dev_mode__: console.debug("📦 @alwatr/flux v6.0.2");
3
+ export*from"@alwatr/fsm";export*from"@alwatr/signal";
10
4
  //# sourceMappingURL=main.mjs.map
package/dist/main.mjs.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/main.ts"],
4
- "sourcesContent": ["export * from '@alwatr/context';\nexport * from '@alwatr/fetch-state-machine';\nexport * from '@alwatr/fsm';\nexport * from '@alwatr/observable';\nexport * from '@alwatr/remote-context';\nexport * from '@alwatr/signal';\n"],
5
- "mappings": ";;;AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
4
+ "sourcesContent": ["export * from '@alwatr/fsm';\nexport * from '@alwatr/signal';\n"],
5
+ "mappings": ";;AAAA,WAAc,cACd,WAAc",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,23 +1,19 @@
1
1
  {
2
2
  "name": "@alwatr/flux",
3
- "description": "Flux empowers your applications with elegant and powerful state management and event handling capabilities. Built on the observable design pattern, Flux provides a lightweight yet robust foundation for managing global signals and states.",
4
- "version": "4.1.1",
3
+ "description": "Flux is not just another state management library; it's a paradigm shift. It provides a cohesive, type-safe, and incredibly performant ecosystem for orchestrating application state, from simple reactive values to complex, resilient workflows. Built on the principles of predictability and simplicity, Flux empowers you to write clean, decoupled, and highly maintainable code.",
4
+ "version": "6.0.2",
5
5
  "author": "S. Ali Mihandoost <ali.mihandoost@gmail.com>",
6
6
  "bugs": "https://github.com/Alwatr/flux/issues",
7
7
  "dependencies": {
8
- "@alwatr/context": "^4.1.1",
9
- "@alwatr/fetch-state-machine": "^4.1.1",
10
- "@alwatr/fsm": "^4.1.1",
11
- "@alwatr/observable": "^4.1.1",
12
- "@alwatr/remote-context": "^4.1.1",
13
- "@alwatr/signal": "^4.1.1"
8
+ "@alwatr/fsm": "6.0.2",
9
+ "@alwatr/signal": "6.0.2"
14
10
  },
15
11
  "devDependencies": {
16
- "@alwatr/nano-build": "^6.1.0",
17
- "@alwatr/prettier-config": "^5.0.2",
18
- "@alwatr/tsconfig-base": "^6.0.0",
19
- "@alwatr/type-helper": "^6.0.0",
20
- "@types/node": "^22.18.1",
12
+ "@alwatr/nano-build": "^6.3.1",
13
+ "@alwatr/prettier-config": "^5.0.4",
14
+ "@alwatr/tsconfig-base": "^6.0.2",
15
+ "@alwatr/type-helper": "^6.1.1",
16
+ "@types/node": "^22.18.6",
21
17
  "jest": "^30.1.3",
22
18
  "typescript": "^5.9.2"
23
19
  },
@@ -70,5 +66,5 @@
70
66
  },
71
67
  "type": "module",
72
68
  "types": "./dist/main.d.ts",
73
- "gitHead": "d763fe4fcbbb1ffe31aa16915ddbaad936220b78"
69
+ "gitHead": "2737f7356db922ed1985d0779f0503fdb09996a4"
74
70
  }