@alwatr/flux 6.2.0 → 9.14.0
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/LICENSE +2 -2
- package/README.md +15 -230
- package/dist/main.d.ts +6 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +5 -0
- package/dist/main.js.map +10 -0
- package/package.json +63 -50
- package/src/main.ts +10 -0
- package/CHANGELOG.md +0 -160
- package/dist/main.cjs +0 -4
- package/dist/main.cjs.map +0 -7
- package/dist/main.mjs +0 -4
- package/dist/main.mjs.map +0 -7
package/LICENSE
CHANGED
|
@@ -357,7 +357,7 @@ Exhibit A - Source Code Form License Notice
|
|
|
357
357
|
|
|
358
358
|
This Source Code Form is subject to the terms of the Mozilla Public
|
|
359
359
|
License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
360
|
-
file, You can obtain one at
|
|
360
|
+
file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
361
361
|
|
|
362
362
|
If it is not possible or desirable to put the notice in a particular
|
|
363
363
|
file, then You may include the notice in a location (such as a LICENSE
|
|
@@ -370,4 +370,4 @@ Exhibit B - "Incompatible With Secondary Licenses" Notice
|
|
|
370
370
|
---------------------------------------------------------
|
|
371
371
|
|
|
372
372
|
This Source Code Form is "Incompatible With Secondary Licenses", as
|
|
373
|
-
defined by the Mozilla Public License, v. 2.0.
|
|
373
|
+
defined by the Mozilla Public License, v. 2.0.
|
package/README.md
CHANGED
|
@@ -1,241 +1,26 @@
|
|
|
1
|
-
# Flux
|
|
1
|
+
# Alwatr Flux
|
|
2
2
|
|
|
3
|
-
|
|
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)
|
|
3
|
+
UI and reactive library bundle for ECMAScript (JavaScript/TypeScript) projects.
|
|
10
4
|
|
|
11
|
-
|
|
5
|
+
Aggregates all UI-layer nanolibs into a single convenient import:
|
|
12
6
|
|
|
13
|
-
|
|
7
|
+
- [`@alwatr/signal`](../nanolib/signal) — reactive primitives: `StateSignal`, `EventSignal`, `ComputedSignal`, `EffectSignal`
|
|
8
|
+
- [`@alwatr/action`](../nanolib/action) — Unidirectional Data Flow action layer with global event delegation
|
|
9
|
+
- [`@alwatr/directive`](../nanolib/directive) — attribute-based DOM directives with lifecycle hooks
|
|
10
|
+
- [`@alwatr/render-state`](../nanolib/render-state) — render state management utility
|
|
11
|
+
- [`@alwatr/local-storage`](../nanolib/local-storage) — versioned JSON in `localStorage`
|
|
12
|
+
- [`@alwatr/session-storage`](../nanolib/session-storage) — versioned JSON in `sessionStorage`
|
|
14
13
|
|
|
15
|
-
|
|
14
|
+
## Usage
|
|
16
15
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
**فلاکس** یک کتابخانه مدیریت وضعیت معمولی نیست؛ یک تغییر پارادایم است. این اکوسیستم یکپارچه، تایپ-سیف و فوقالعاده کارآمد، ابزاری برای سازماندهی وضعیت اپلیکیشن شما فراهم میکند؛ از مقادیر واکنشی ساده گرفته تا گردشکارهای پیچیده و تابآور. فلاکس بر اساس اصول پیشبینیپذیری و سادگی ساخته شده و به شما قدرت میدهد تا کدی تمیز، مستقل و با قابلیت نگهداری بالا بنویسید.
|
|
20
|
-
|
|
21
|
-
با تغییرات وضعیت غیرقابلپیشبینی و فریمورکهای سنگین خداحافظی کنید. سیستمی را بپذیرید که در آن، منطق به شکلی طبیعی و قابل درک جریان دارد.
|
|
22
|
-
|
|
23
|
-
## Core Packages / پکیجهای اصلی
|
|
24
|
-
|
|
25
|
-
Flux is a monorepo containing a suite of powerful, focused packages. The two main pillars are:
|
|
26
|
-
فلاکس یک مونوریپو است که مجموعهای از پکیجهای قدرتمند و متمرکز را در خود جای داده است. دو ستون اصلی آن عبارتند از:
|
|
27
|
-
|
|
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
|
-
|
|
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) کوچک، اعلانی و تایپ-سیف که بر پایه سیگنالها ساخته شده است. این ابزار، مدلسازی منطقهای پیچیده و چندمرحلهای را به کاری آسان و مستحکم تبدیل میکند.
|
|
33
|
-
|
|
34
|
-
---
|
|
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.
|
|
43
|
-
|
|
44
|
-
#### ۱. تعریف سیگنالهای پایه (Define Core Signals)
|
|
45
|
-
|
|
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"...
|
|
16
|
+
```ts
|
|
17
|
+
import {StateSignal, onAction, setupActionDelegation} from '@alwatr/flux';
|
|
108
18
|
```
|
|
109
19
|
|
|
110
|
-
|
|
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
|
-
این تنها نگاهی کوتاه به قدرت اکوسیستم فلاکس بود. برای تسلط کامل، مستندات دقیق هر پکیج را مطالعه کنید:
|
|
20
|
+
## Sponsors
|
|
231
21
|
|
|
232
|
-
|
|
233
|
-
- **[dive deep into `@alwatr/fsm`](https://github.com/Alwatr/flux/tree/next/packages/fsm)**
|
|
22
|
+
The following companies, organizations, and individuals support Nanolib ongoing maintenance and development. Become a Sponsor to get your logo on our README and website.
|
|
234
23
|
|
|
235
|
-
|
|
24
|
+
### Contributing
|
|
236
25
|
|
|
237
26
|
Contributions are welcome! Please read our [contribution guidelines](https://github.com/Alwatr/.github/blob/next/CONTRIBUTING.md) before submitting a pull request.
|
|
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.d.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
-
export * from '@alwatr/fsm';
|
|
2
1
|
export * from '@alwatr/signal';
|
|
2
|
+
export * from '@alwatr/action';
|
|
3
|
+
export * from '@alwatr/directive';
|
|
4
|
+
export * from '@alwatr/render-state';
|
|
5
|
+
export * from '@alwatr/local-storage';
|
|
6
|
+
export * from '@alwatr/session-storage';
|
|
7
|
+
export type * from '@alwatr/type-helper';
|
|
3
8
|
//# sourceMappingURL=main.d.ts.map
|
package/dist/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAGA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,mBAAmB,qBAAqB,CAAC"}
|
package/dist/main.js
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/* 📦 @alwatr/flux v9.14.0 */
|
|
2
|
+
export*from"@alwatr/signal";export*from"@alwatr/action";export*from"@alwatr/directive";export*from"@alwatr/render-state";export*from"@alwatr/local-storage";export*from"@alwatr/session-storage";
|
|
3
|
+
|
|
4
|
+
//# debugId=197D7A98886D053564756E2164756E21
|
|
5
|
+
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/main.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"// UI and reactive bundle — signals, actions, directives, and client-side storage.\n// This package aggregates all UI-layer nanolibs for convenient single-import usage.\n\nexport * from '@alwatr/signal';\nexport * from '@alwatr/action';\nexport * from '@alwatr/directive';\nexport * from '@alwatr/render-state';\nexport * from '@alwatr/local-storage';\nexport * from '@alwatr/session-storage';\nexport type * from '@alwatr/type-helper';\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": ";AAGA,4BACA,4BACA,+BACA,kCACA,mCACA",
|
|
8
|
+
"debugId": "197D7A98886D053564756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
package/package.json
CHANGED
|
@@ -1,71 +1,84 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alwatr/flux",
|
|
3
|
-
"
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
|
|
9
|
-
"
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
"@alwatr/nano-build": "^6.4.1",
|
|
13
|
-
"@alwatr/prettier-config": "^6.0.2",
|
|
14
|
-
"@alwatr/tsconfig-base": "^6.0.3",
|
|
15
|
-
"@alwatr/type-helper": "^7.0.1",
|
|
16
|
-
"@types/node": "^22.19.1",
|
|
17
|
-
"jest": "^30.2.0",
|
|
18
|
-
"typescript": "^5.9.3"
|
|
3
|
+
"version": "9.14.0",
|
|
4
|
+
"description": "UI and reactive library bundle for ECMAScript (JavaScript/TypeScript) projects — signals, actions, directives, and storage.",
|
|
5
|
+
"license": "MPL-2.0",
|
|
6
|
+
"author": "S. Ali Mihandoost <ali.mihandoost@gmail.com> (https://ali.mihandoost.com)",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "https://github.com/Alwatr/alwatr",
|
|
11
|
+
"directory": "pkg/flux"
|
|
19
12
|
},
|
|
13
|
+
"homepage": "https://github.com/Alwatr/alwatr/tree/next/pkg/flux#readme",
|
|
14
|
+
"bugs": "https://github.com/Alwatr/alwatr/issues",
|
|
20
15
|
"exports": {
|
|
21
16
|
".": {
|
|
22
17
|
"types": "./dist/main.d.ts",
|
|
23
|
-
"import": "./dist/main.
|
|
24
|
-
"
|
|
18
|
+
"import": "./dist/main.js",
|
|
19
|
+
"default": "./dist/main.js"
|
|
25
20
|
}
|
|
26
21
|
},
|
|
27
|
-
"
|
|
28
|
-
|
|
29
|
-
"
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
"alwatr",
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"signal",
|
|
37
|
-
"typescript"
|
|
38
|
-
],
|
|
39
|
-
"license": "MPL-2.0",
|
|
40
|
-
"main": "./dist/main.cjs",
|
|
41
|
-
"module": "./dist/main.mjs",
|
|
42
|
-
"prettier": "@alwatr/prettier-config",
|
|
43
|
-
"publishConfig": {
|
|
44
|
-
"access": "public"
|
|
22
|
+
"sideEffects": false,
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"@alwatr/action": "9.14.0",
|
|
25
|
+
"@alwatr/directive": "9.14.0",
|
|
26
|
+
"@alwatr/local-storage": "9.14.0",
|
|
27
|
+
"@alwatr/render-state": "9.14.0",
|
|
28
|
+
"@alwatr/session-storage": "9.14.0",
|
|
29
|
+
"@alwatr/signal": "9.14.0",
|
|
30
|
+
"@alwatr/type-helper": "9.14.0"
|
|
45
31
|
},
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
"
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@alwatr/nano-build": "9.14.0",
|
|
34
|
+
"@alwatr/standard": "9.14.0",
|
|
35
|
+
"typescript": "^6.0.3"
|
|
50
36
|
},
|
|
51
37
|
"scripts": {
|
|
52
38
|
"b": "bun run build",
|
|
53
|
-
"build": "bun run build:ts
|
|
54
|
-
"build:es": "nano-build --preset=module",
|
|
39
|
+
"build": "bun run build:ts && bun run build:es",
|
|
40
|
+
"build:es": "nano-build --preset=module src/*.ts",
|
|
55
41
|
"build:ts": "tsc --build",
|
|
56
|
-
"
|
|
57
|
-
"cb": "bun run clean && bun run build",
|
|
42
|
+
"cl": "bun run clean",
|
|
58
43
|
"clean": "rm -rfv dist *.tsbuildinfo",
|
|
59
|
-
"
|
|
44
|
+
"format": "prettier --write \"src/**/*.ts\"",
|
|
45
|
+
"lint": "eslint src/ --ext .ts",
|
|
60
46
|
"t": "bun run test",
|
|
61
|
-
"test": "
|
|
47
|
+
"test": "ALWATR_DEBUG=0 bun test",
|
|
62
48
|
"w": "bun run watch",
|
|
63
49
|
"watch": "bun run watch:ts & bun run watch:es",
|
|
64
50
|
"watch:es": "bun run build:es --watch",
|
|
65
51
|
"watch:ts": "bun run build:ts --watch --preserveWatchOutput"
|
|
66
52
|
},
|
|
67
|
-
"
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
53
|
+
"files": [
|
|
54
|
+
"dist",
|
|
55
|
+
"src/**/*.ts",
|
|
56
|
+
"!src/**/*.test.ts",
|
|
57
|
+
"README.md",
|
|
58
|
+
"LICENSE"
|
|
59
|
+
],
|
|
60
|
+
"publishConfig": {
|
|
61
|
+
"access": "public"
|
|
62
|
+
},
|
|
63
|
+
"keywords": [
|
|
64
|
+
"alwatr",
|
|
65
|
+
"action",
|
|
66
|
+
"directive",
|
|
67
|
+
"dom",
|
|
68
|
+
"ECMAScript",
|
|
69
|
+
"esm",
|
|
70
|
+
"flux",
|
|
71
|
+
"javascript",
|
|
72
|
+
"local-storage",
|
|
73
|
+
"module",
|
|
74
|
+
"nanolib",
|
|
75
|
+
"reactive",
|
|
76
|
+
"render-state",
|
|
77
|
+
"session-storage",
|
|
78
|
+
"signal",
|
|
79
|
+
"typescript",
|
|
80
|
+
"ui",
|
|
81
|
+
"unidirectional-data-flow"
|
|
82
|
+
],
|
|
83
|
+
"gitHead": "4e499b23191d4460ea60f34cde8a99b472741f1a"
|
|
71
84
|
}
|
package/src/main.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// UI and reactive bundle — signals, actions, directives, and client-side storage.
|
|
2
|
+
// This package aggregates all UI-layer nanolibs for convenient single-import usage.
|
|
3
|
+
|
|
4
|
+
export * from '@alwatr/signal';
|
|
5
|
+
export * from '@alwatr/action';
|
|
6
|
+
export * from '@alwatr/directive';
|
|
7
|
+
export * from '@alwatr/render-state';
|
|
8
|
+
export * from '@alwatr/local-storage';
|
|
9
|
+
export * from '@alwatr/session-storage';
|
|
10
|
+
export type * from '@alwatr/type-helper';
|
package/CHANGELOG.md
DELETED
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
# Change Log
|
|
2
|
-
|
|
3
|
-
All notable changes to this project will be documented in this file.
|
|
4
|
-
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
|
-
|
|
6
|
-
## [6.2.0](https://github.com/Alwatr/flux/compare/v6.1.1...v6.2.0) (2026-02-18)
|
|
7
|
-
|
|
8
|
-
### 🔨 Code Refactoring
|
|
9
|
-
|
|
10
|
-
* migrate to bun package manager ([545c1ae](https://github.com/Alwatr/flux/commit/545c1ae31f04ece1ef1abd4db7237b47b65b0473))
|
|
11
|
-
|
|
12
|
-
### 🔗 Dependencies update
|
|
13
|
-
|
|
14
|
-
* update dependencies across packages to latest versions ([6ac0147](https://github.com/Alwatr/flux/commit/6ac01476b0803d662035d4c291bb5c77ae4207f6))
|
|
15
|
-
|
|
16
|
-
## [6.1.1](https://github.com/Alwatr/flux/compare/v6.1.0...v6.1.1) (2025-11-12)
|
|
17
|
-
|
|
18
|
-
### 🐛 Bug Fixes
|
|
19
|
-
|
|
20
|
-
* add sideEffects property to package.json for better tree-shaking ([b62663c](https://github.com/Alwatr/flux/commit/b62663ceedac43e9f642c59130a6be0cd4bdc90d))
|
|
21
|
-
|
|
22
|
-
### 🔗 Dependencies update
|
|
23
|
-
|
|
24
|
-
* update dependencies and devDependencies versions across packages ([ab923fa](https://github.com/Alwatr/flux/commit/ab923fa8ec7f504a3ce59e0ec944d05d361f60be))
|
|
25
|
-
|
|
26
|
-
## [6.1.0](https://github.com/Alwatr/flux/compare/v6.0.2...v6.1.0) (2025-09-22)
|
|
27
|
-
|
|
28
|
-
### 🔗 Dependencies update
|
|
29
|
-
|
|
30
|
-
* update dependencies to latest versions across packages ([97bd715](https://github.com/Alwatr/flux/commit/97bd71555912053f8b2ba6ad0578b74bf7f1c1d3))
|
|
31
|
-
|
|
32
|
-
## [6.0.2](https://github.com/Alwatr/flux/compare/v6.0.1...v6.0.2) (2025-09-21)
|
|
33
|
-
|
|
34
|
-
### 🔗 Dependencies update
|
|
35
|
-
|
|
36
|
-
* update dependencies for @alwatr/nano-build, @alwatr/logger, @alwatr/debounce, and @alwatr/delay ([e7cfed5](https://github.com/Alwatr/flux/commit/e7cfed56bd6a7e7cd402e6f38c415de5737f5b24))
|
|
37
|
-
|
|
38
|
-
## [6.0.1](https://github.com/Alwatr/flux/compare/v6.0.0...v6.0.1) (2025-09-20)
|
|
39
|
-
|
|
40
|
-
### ⚠ BREAKING CHANGES
|
|
41
|
-
|
|
42
|
-
* Complete rewrite of @alwatr/flux core package
|
|
43
|
-
|
|
44
|
-
### ✨ Features
|
|
45
|
-
|
|
46
|
-
* add initial implementation of Flux package with README, LICENSE, and configuration files ([778881c](https://github.com/Alwatr/flux/commit/778881c00c8e73bbf7649fcecb641a1689e9eaad))
|
|
47
|
-
|
|
48
|
-
### 🔗 Dependencies update
|
|
49
|
-
|
|
50
|
-
* update ([c125252](https://github.com/Alwatr/flux/commit/c1252529be17b6b6d90be85d411837fac35ad5df))
|
|
51
|
-
|
|
52
|
-
## [4.1.1](https://github.com/Alwatr/flux/compare/v4.1.0...v4.1.1) (2025-09-08)
|
|
53
|
-
|
|
54
|
-
**Note:** Version bump only for package @alwatr/flux
|
|
55
|
-
|
|
56
|
-
## [4.1.0](https://github.com/Alwatr/flux/compare/v4.0.5...v4.1.0) (2025-09-08)
|
|
57
|
-
|
|
58
|
-
### 🧹 Miscellaneous Chores
|
|
59
|
-
|
|
60
|
-
* remove Exir Studio sponsorship logo from README files ([df5d19c](https://github.com/Alwatr/flux/commit/df5d19cf9ff3ea723905b3f3bd4f874c42fdcdfc))
|
|
61
|
-
* update devDependencies to latest versions in package.json ([a4e2d7b](https://github.com/Alwatr/flux/commit/a4e2d7bbfdcc393bbc96ce5fc6f54b015d5ee33a))
|
|
62
|
-
* update license to MPL-2.0 ([82d20c8](https://github.com/Alwatr/flux/commit/82d20c88ad1b4ff5909ef0ca6b36b2db8f378279))
|
|
63
|
-
* update package.json files across multiple packages to enhance structure and dependencies ([9df0690](https://github.com/Alwatr/flux/commit/9df0690b0b1ae036293be75da429842f67f8685f))
|
|
64
|
-
|
|
65
|
-
## [4.0.5](https://github.com/Alwatr/flux/compare/v4.0.4...v4.0.5) (2025-03-13)
|
|
66
|
-
|
|
67
|
-
### Dependencies update
|
|
68
|
-
|
|
69
|
-
* update @types/node to version 22.13.10 and bump [@lerna-lite](https://github.com/lerna-lite) packages to version 3.12.3 ([e918359](https://github.com/Alwatr/flux/commit/e918359ec013c32b3224aebf04f92553be31b395)) by @
|
|
70
|
-
|
|
71
|
-
## [4.0.4](https://github.com/Alwatr/flux/compare/v4.0.3...v4.0.4) (2025-03-06)
|
|
72
|
-
|
|
73
|
-
### Dependencies update
|
|
74
|
-
|
|
75
|
-
* bump @alwatr/nanolib, @alwatr/nano-build, and @alwatr/type-helper to version 5.5.0 across multiple packages ([db73076](https://github.com/Alwatr/flux/commit/db7307671b0f14cb19072656bd6021144b27dadb)) by @
|
|
76
|
-
* **deps-dev:** bump the dependencies group across 1 directory with 6 updates ([5978202](https://github.com/Alwatr/flux/commit/5978202acbdc6b2e3db6d315dc3c114daa4f0289)) by @dependabot[bot]
|
|
77
|
-
|
|
78
|
-
## [4.0.3](https://github.com/Alwatr/flux/compare/v4.0.2...v4.0.3) (2025-02-18)
|
|
79
|
-
|
|
80
|
-
### Dependencies update
|
|
81
|
-
|
|
82
|
-
* **deps-dev:** bump the dependencies group across 1 directory with 11 updates ([18e3479](https://github.com/Alwatr/flux/commit/18e34795f826270a407d77440b946f8101513ba9)) by @dependabot[bot]
|
|
83
|
-
* **deps-dev:** bump the dependencies group with 10 updates ([b70907b](https://github.com/Alwatr/flux/commit/b70907bcb78b664c80e7d7acec9acf04c805cb2f)) by @dependabot[bot]
|
|
84
|
-
* **deps:** bump the alwatr group with 4 updates ([7e1b5fd](https://github.com/Alwatr/flux/commit/7e1b5fdde606bd76a443356c74f332015beed275)) by @dependabot[bot]
|
|
85
|
-
|
|
86
|
-
## [4.0.2](https://github.com/Alwatr/flux/compare/v4.0.1...v4.0.2) (2024-11-06)
|
|
87
|
-
|
|
88
|
-
**Note:** Version bump only for package @alwatr/flux
|
|
89
|
-
|
|
90
|
-
## [4.0.1](https://github.com/Alwatr/flux/compare/v4.0.0...v4.0.1) (2024-11-06)
|
|
91
|
-
|
|
92
|
-
**Note:** Version bump only for package @alwatr/flux
|
|
93
|
-
|
|
94
|
-
## [4.0.0](https://github.com/Alwatr/flux/compare/v3.2.2...v4.0.0) (2024-11-06)
|
|
95
|
-
|
|
96
|
-
### Dependencies update
|
|
97
|
-
|
|
98
|
-
* update ([a0c4014](https://github.com/Alwatr/flux/commit/a0c40144c50ba69083864bd4403b7c0dab388a2f)) by @AliMD
|
|
99
|
-
|
|
100
|
-
## [3.2.2](https://github.com/Alwatr/flux/compare/v3.2.1...v3.2.2) (2024-11-02)
|
|
101
|
-
|
|
102
|
-
### Dependencies update
|
|
103
|
-
|
|
104
|
-
* **deps-dev:** bump @types/node from 22.8.1 to 22.8.6 in the dependencies group ([#224](https://github.com/Alwatr/flux/issues/224)) ([2ffa758](https://github.com/Alwatr/flux/commit/2ffa7587f46b55bddc98be25c60940c3eb61f815)) by @dependabot[bot]
|
|
105
|
-
* **deps:** bump the alwatr group with 6 updates ([#225](https://github.com/Alwatr/flux/issues/225)) ([6f22eda](https://github.com/Alwatr/flux/commit/6f22eda4e9ee6c31e4c32b23b870a5c148a818da)) by @dependabot[bot]
|
|
106
|
-
|
|
107
|
-
## [3.2.1](https://github.com/Alwatr/flux/compare/v3.2.0...v3.2.1) (2024-10-28)
|
|
108
|
-
|
|
109
|
-
### Dependencies update
|
|
110
|
-
|
|
111
|
-
* bump the alwatr-dependencies group with 2 updates ([#217](https://github.com/Alwatr/flux/issues/217)) ([a5fd542](https://github.com/Alwatr/flux/commit/a5fd542e8866589a4edcaaf4312bdc4f322dc59f)) by @dependabot[bot]
|
|
112
|
-
* bump the development-dependencies group across 1 directory with 9 updates ([9d1d05d](https://github.com/Alwatr/flux/commit/9d1d05d33e259fd810138a37b36adc910b71c4bb)) by @dependabot[bot]
|
|
113
|
-
* update nanolib v1.4.0 with other deps ([8c0fdcd](https://github.com/Alwatr/flux/commit/8c0fdcd4a827790f7c97bfbf7119ba315450f822)) by @AliMD
|
|
114
|
-
|
|
115
|
-
## [3.2.0](https://github.com/Alwatr/flux/compare/v3.1.1...v3.2.0) (2024-10-11)
|
|
116
|
-
|
|
117
|
-
### Dependencies update
|
|
118
|
-
|
|
119
|
-
* bump the alwatr-dependencies group across 1 directory with 7 updates ([daf1c3f](https://github.com/Alwatr/flux/commit/daf1c3f7ef8d17cf7388df2676b5fe808616ba57)) by @dependabot[bot]
|
|
120
|
-
* bump the alwatr-dependencies group with 4 updates ([7ce1b54](https://github.com/Alwatr/flux/commit/7ce1b54235cc2fd4f386052e7a4c4d324cc74888)) by @dependabot[bot]
|
|
121
|
-
* bump the alwatr-dependencies group with 8 updates ([bc520ba](https://github.com/Alwatr/flux/commit/bc520ba6ac7ed6bcff2c4a3eea81d1a2e502b0cf)) by @dependabot[bot]
|
|
122
|
-
* bump the development-dependencies group with 10 updates ([01de77c](https://github.com/Alwatr/flux/commit/01de77cd1d9fdfb6db06ebd5035c43e46cc8aa17)) by @dependabot[bot]
|
|
123
|
-
* update ([4dc21b2](https://github.com/Alwatr/flux/commit/4dc21b2bf01d7176aea6e0d81cdc3e1f77b97e0f)) by @mohammadhonarvar
|
|
124
|
-
|
|
125
|
-
## [3.1.1](https://github.com/Alwatr/flux/compare/v3.1.0...v3.1.1) (2024-09-29)
|
|
126
|
-
|
|
127
|
-
### Miscellaneous Chores
|
|
128
|
-
|
|
129
|
-
* edited README ([fff9b3f](https://github.com/Alwatr/flux/commit/fff9b3f6ccc52e2257bdfe306e032ded07497b4a)) by @ArmanAsadian
|
|
130
|
-
* **flux:** change the license to AGPL-3.0 ([220ef0c](https://github.com/Alwatr/flux/commit/220ef0ccb69310c28caafbc9f33d5b474bd12e3b)) by @ArmanAsadian
|
|
131
|
-
|
|
132
|
-
### Dependencies update
|
|
133
|
-
|
|
134
|
-
* update ([fb148fd](https://github.com/Alwatr/flux/commit/fb148fdbe7f84acc3eda625e5e8c5773747d32e9)) by @
|
|
135
|
-
|
|
136
|
-
## [3.1.0](https://github.com/Alwatr/flux/compare/v3.0.3...v3.1.0) (2024-09-26)
|
|
137
|
-
|
|
138
|
-
### Dependencies update
|
|
139
|
-
|
|
140
|
-
* bump @types/node in the development-dependencies group ([979223c](https://github.com/Alwatr/flux/commit/979223c3cdbb002a926e72e1a7f79c82ff7395d4)) by @dependabot[bot]
|
|
141
|
-
|
|
142
|
-
## [3.0.3](https://github.com/Alwatr/flux/compare/v3.0.2...v3.0.3) (2024-09-24)
|
|
143
|
-
|
|
144
|
-
**Note:** Version bump only for package @alwatr/flux
|
|
145
|
-
|
|
146
|
-
## [3.0.2](https://github.com/Alwatr/flux/compare/v3.0.1...v3.0.2) (2024-09-21)
|
|
147
|
-
|
|
148
|
-
### Dependencies update
|
|
149
|
-
|
|
150
|
-
* update ([1048410](https://github.com/Alwatr/flux/commit/1048410efb300bb0a0ab7eae9734ca8f7f9d83a8)) by @
|
|
151
|
-
|
|
152
|
-
## [3.0.1](https://github.com/Alwatr/flux/compare/v3.0.0...v3.0.1) (2024-09-17)
|
|
153
|
-
|
|
154
|
-
**Note:** Version bump only for package @alwatr/flux
|
|
155
|
-
|
|
156
|
-
## 3.0.0 (2024-09-17)
|
|
157
|
-
|
|
158
|
-
### Features
|
|
159
|
-
|
|
160
|
-
* Add Alwatr Flux package ([22c59e3](https://github.com/Alwatr/flux/commit/22c59e34aeda7a2d59654d59ec38354a124fedad)) by @
|
package/dist/main.cjs
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/** 📦 @alwatr/flux v6.1.1 */
|
|
2
|
-
__dev_mode__: console.debug("📦 @alwatr/flux v6.1.1");
|
|
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")});
|
|
4
|
-
//# sourceMappingURL=main.cjs.map
|
package/dist/main.cjs.map
DELETED
package/dist/main.mjs
DELETED