@alwatr/flux 4.1.0 → 6.0.1
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 +18 -0
- package/README.md +223 -23
- package/dist/main.cjs +2 -35
- package/dist/main.cjs.map +2 -2
- package/dist/main.d.ts +0 -4
- package/dist/main.d.ts.map +1 -1
- package/dist/main.mjs +2 -9
- package/dist/main.mjs.map +2 -2
- package/package.json +10 -14
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,24 @@
|
|
|
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.1](https://github.com/Alwatr/flux/compare/v6.0.0...v6.0.1) (2025-09-20)
|
|
7
|
+
|
|
8
|
+
### ⚠ BREAKING CHANGES
|
|
9
|
+
|
|
10
|
+
* Complete rewrite of @alwatr/flux core package
|
|
11
|
+
|
|
12
|
+
### ✨ Features
|
|
13
|
+
|
|
14
|
+
* add initial implementation of Flux package with README, LICENSE, and configuration files ([778881c](https://github.com/Alwatr/flux/commit/778881c00c8e73bbf7649fcecb641a1689e9eaad))
|
|
15
|
+
|
|
16
|
+
### 🔗 Dependencies update
|
|
17
|
+
|
|
18
|
+
* update ([c125252](https://github.com/Alwatr/flux/commit/c1252529be17b6b6d90be85d411837fac35ad5df))
|
|
19
|
+
|
|
20
|
+
## [4.1.1](https://github.com/Alwatr/flux/compare/v4.1.0...v4.1.1) (2025-09-08)
|
|
21
|
+
|
|
22
|
+
**Note:** Version bump only for package @alwatr/flux
|
|
23
|
+
|
|
6
24
|
## [4.1.0](https://github.com/Alwatr/flux/compare/v4.0.5...v4.1.0) (2025-09-08)
|
|
7
25
|
|
|
8
26
|
### 🧹 Miscellaneous Chores
|
package/README.md
CHANGED
|
@@ -1,41 +1,241 @@
|
|
|
1
|
-
# Flux
|
|
1
|
+
# Flux: The Reactive Brain for Your TypeScript Application
|
|
2
2
|
|
|
3
|
-
|
|
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
|
|
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
|
-
|
|
13
|
+
Stop wrestling with unpredictable state changes and bloated frameworks. Embrace a system where logic flows intuitively.
|
|
8
14
|
|
|
9
|
-
|
|
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
|
-
|
|
17
|
+
# فلاکس: مغز متفکر واکنشی برای اپلیکیشن TypeScript شما
|
|
16
18
|
|
|
17
|
-
|
|
19
|
+
**فلاکس** یک کتابخانه مدیریت وضعیت معمولی نیست؛ یک تغییر پارادایم است. این اکوسیستم یکپارچه، تایپ-سیف و فوقالعاده کارآمد، ابزاری برای سازماندهی وضعیت اپلیکیشن شما فراهم میکند؛ از مقادیر واکنشی ساده گرفته تا گردشکارهای پیچیده و تابآور. فلاکس بر اساس اصول پیشبینیپذیری و سادگی ساخته شده و به شما قدرت میدهد تا کدی تمیز، مستقل و با قابلیت نگهداری بالا بنویسید.
|
|
18
20
|
|
|
19
|
-
|
|
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
|
-
|
|
23
|
+
## Core Packages / پکیجهای اصلی
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
34
|
+
---
|
|
34
35
|
|
|
35
|
-
|
|
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
|
-
|
|
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,3 @@
|
|
|
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.1 */ __dev_mode__: console.log("📦 @alwatr/flux v6.0.1");
|
|
2
|
+
"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
3
|
//# 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/
|
|
5
|
-
"mappings": "
|
|
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
package/dist/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,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,3 @@
|
|
|
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.1 */ __dev_mode__: console.log("📦 @alwatr/flux v6.0.1");
|
|
2
|
+
export*from"@alwatr/fsm";export*from"@alwatr/signal";
|
|
10
3
|
//# 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/
|
|
5
|
-
"mappings": "
|
|
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
|
|
4
|
-
"version": "
|
|
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.1",
|
|
5
5
|
"author": "S. Ali Mihandoost <ali.mihandoost@gmail.com>",
|
|
6
6
|
"bugs": "https://github.com/Alwatr/flux/issues",
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"@alwatr/
|
|
9
|
-
"@alwatr/
|
|
10
|
-
"@alwatr/fsm": "^4.1.0",
|
|
11
|
-
"@alwatr/observable": "^4.1.0",
|
|
12
|
-
"@alwatr/remote-context": "^4.1.0",
|
|
13
|
-
"@alwatr/signal": "^4.1.0"
|
|
8
|
+
"@alwatr/fsm": "6.0.1",
|
|
9
|
+
"@alwatr/signal": "6.0.1"
|
|
14
10
|
},
|
|
15
11
|
"devDependencies": {
|
|
16
|
-
"@alwatr/nano-build": "^6.
|
|
17
|
-
"@alwatr/prettier-config": "^5.0.
|
|
18
|
-
"@alwatr/tsconfig-base": "^6.0.
|
|
19
|
-
"@alwatr/type-helper": "^6.
|
|
20
|
-
"@types/node": "^22.18.
|
|
12
|
+
"@alwatr/nano-build": "^6.3.0",
|
|
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": "
|
|
69
|
+
"gitHead": "b6a3387394fa7af607051514f9a3a8982467080b"
|
|
74
70
|
}
|