rask-ui 0.10.1 → 0.10.3
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/README.md +27 -6
- package/dist/createState.d.ts +1 -1
- package/dist/createState.d.ts.map +1 -1
- package/dist/createState.js +1 -1
- package/dist/createTask.d.ts +9 -8
- package/dist/createTask.d.ts.map +1 -1
- package/dist/createTask.js +5 -8
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -328,7 +328,7 @@ function Example() {
|
|
|
328
328
|
|
|
329
329
|
#### `assignState<T>(state, newState)`
|
|
330
330
|
|
|
331
|
-
Merges properties from a new state object into an existing reactive state object.
|
|
331
|
+
Merges properties from a new state object into an existing reactive state object. Returns the updated state object.
|
|
332
332
|
|
|
333
333
|
```tsx
|
|
334
334
|
import { assignState, createState } from "rask-ui";
|
|
@@ -341,7 +341,7 @@ function Example() {
|
|
|
341
341
|
});
|
|
342
342
|
|
|
343
343
|
const updateProfile = (updates) => {
|
|
344
|
-
assignState(state, updates);
|
|
344
|
+
return assignState(state, updates);
|
|
345
345
|
};
|
|
346
346
|
|
|
347
347
|
return () => (
|
|
@@ -360,9 +360,11 @@ function Example() {
|
|
|
360
360
|
- `state: T` - The reactive state object to update
|
|
361
361
|
- `newState: T` - Object with properties to merge into the state
|
|
362
362
|
|
|
363
|
+
**Returns:** The updated state object (same reference as input state)
|
|
364
|
+
|
|
363
365
|
**Notes:**
|
|
364
366
|
|
|
365
|
-
- Equivalent to `Object.assign(state, newState)`
|
|
367
|
+
- Equivalent to `Object.assign(state, newState)` - returns the state for chaining
|
|
366
368
|
- Triggers reactivity for all updated properties
|
|
367
369
|
- Useful for bulk state updates from form data or API responses
|
|
368
370
|
|
|
@@ -724,10 +726,12 @@ function Child() {
|
|
|
724
726
|
|
|
725
727
|
### Async Data Management
|
|
726
728
|
|
|
727
|
-
#### `createTask<
|
|
729
|
+
#### `createTask<P, T>(task)`
|
|
728
730
|
|
|
729
731
|
A low-level reactive primitive for managing any async operation. `createTask` provides the foundation for building data fetching, mutations, polling, debouncing, and any other async pattern you need. It gives you full control without prescribing specific patterns.
|
|
730
732
|
|
|
733
|
+
The `Task<P, T>` type is also exported for type annotations. When used with one type parameter, it represents a task with no parameters. With two type parameters, the first is the params type and the second is the return type.
|
|
734
|
+
|
|
731
735
|
```tsx
|
|
732
736
|
import { createTask, createState } from "rask-ui";
|
|
733
737
|
|
|
@@ -864,18 +868,35 @@ function TodoList() {
|
|
|
864
868
|
|
|
865
869
|
```tsx
|
|
866
870
|
// Task without parameters - auto-runs on creation
|
|
867
|
-
createTask<T>(task: () => Promise<T>): Task<T
|
|
871
|
+
createTask<T>(task: () => Promise<T>): Task<T> & {
|
|
868
872
|
run(): Promise<T>;
|
|
869
873
|
rerun(): Promise<T>;
|
|
870
874
|
}
|
|
871
875
|
|
|
872
876
|
// Task with parameters - manual control
|
|
873
|
-
createTask<
|
|
877
|
+
createTask<P, T>(task: (params: P) => Promise<T>): Task<P, T> & {
|
|
874
878
|
run(params: P): Promise<T>;
|
|
875
879
|
rerun(params: P): Promise<T>;
|
|
876
880
|
}
|
|
877
881
|
```
|
|
878
882
|
|
|
883
|
+
**Task Type:**
|
|
884
|
+
|
|
885
|
+
The `Task` type is exported and can be used for type annotations:
|
|
886
|
+
|
|
887
|
+
```tsx
|
|
888
|
+
import { Task } from "rask-ui";
|
|
889
|
+
|
|
890
|
+
// Task that returns a string, no parameters
|
|
891
|
+
const myTask: Task<string>;
|
|
892
|
+
|
|
893
|
+
// Task that accepts string parameters and returns a string
|
|
894
|
+
const myTask: Task<string, string>;
|
|
895
|
+
|
|
896
|
+
// Task that accepts a number parameter and returns a User object
|
|
897
|
+
const myTask: Task<number, User>;
|
|
898
|
+
```
|
|
899
|
+
|
|
879
900
|
**Returns:** Task object with reactive state and methods:
|
|
880
901
|
|
|
881
902
|
**State Properties:**
|
package/dist/createState.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare function assignState<T extends object>(state: T, newState: T):
|
|
1
|
+
export declare function assignState<T extends object>(state: T, newState: T): T;
|
|
2
2
|
/**
|
|
3
3
|
* Creates a reactive state object that tracks property access and notifies observers on changes.
|
|
4
4
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createState.d.ts","sourceRoot":"","sources":["../src/createState.ts"],"names":[],"mappings":"AAGA,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"createState.d.ts","sourceRoot":"","sources":["../src/createState.ts"],"names":[],"mappings":"AAGA,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,KAElE;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAEzD;AAGD,eAAO,MAAM,YAAY,eAAoB,CAAC"}
|
package/dist/createState.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { INSPECT_MARKER, INSPECTOR_ENABLED } from "./inspect";
|
|
2
2
|
import { getCurrentObserver, Signal } from "./observation";
|
|
3
3
|
export function assignState(state, newState) {
|
|
4
|
-
Object.assign(state, newState);
|
|
4
|
+
return Object.assign(state, newState);
|
|
5
5
|
}
|
|
6
6
|
/**
|
|
7
7
|
* Creates a reactive state object that tracks property access and notifies observers on changes.
|
package/dist/createTask.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type
|
|
1
|
+
export type TaskState<P, T> = {
|
|
2
2
|
isRunning: false;
|
|
3
3
|
params: null;
|
|
4
4
|
result: null;
|
|
@@ -19,12 +19,13 @@ export type Task<T, P> = {
|
|
|
19
19
|
result: null;
|
|
20
20
|
error: string;
|
|
21
21
|
};
|
|
22
|
-
export
|
|
23
|
-
run(): Promise<
|
|
24
|
-
rerun(): Promise<
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
rerun(params: P): Promise<T>;
|
|
22
|
+
export type Task<A, B = never> = [B] extends [never] ? TaskState<null, A> & {
|
|
23
|
+
run(): Promise<A>;
|
|
24
|
+
rerun(): Promise<A>;
|
|
25
|
+
} : TaskState<A, B> & {
|
|
26
|
+
run(params: A): Promise<B>;
|
|
27
|
+
rerun(params: A): Promise<B>;
|
|
29
28
|
};
|
|
29
|
+
export declare function createTask<T>(task: () => Promise<T>): Task<T>;
|
|
30
|
+
export declare function createTask<P, T>(task: (params: P) => Promise<T>): Task<P, T>;
|
|
30
31
|
//# sourceMappingURL=createTask.d.ts.map
|
package/dist/createTask.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createTask.d.ts","sourceRoot":"","sources":["../src/createTask.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"createTask.d.ts","sourceRoot":"","sources":["../src/createTask.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,IACtB;IACE,SAAS,EAAE,KAAK,CAAC;IACjB,MAAM,EAAE,IAAI,CAAC;IACb,MAAM,EAAE,IAAI,CAAC;IACb,KAAK,EAAE,IAAI,CAAC;CACb,GACD;IACE,SAAS,EAAE,IAAI,CAAC;IAChB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IACjB,MAAM,EAAE,CAAC,CAAC;IACV,KAAK,EAAE,IAAI,CAAC;CACb,GACD;IACE,SAAS,EAAE,KAAK,CAAC;IACjB,MAAM,EAAE,IAAI,CAAC;IACb,MAAM,EAAE,CAAC,CAAC;IACV,KAAK,EAAE,IAAI,CAAC;CACb,GACD;IACE,SAAS,EAAE,KAAK,CAAC;IACjB,MAAM,EAAE,IAAI,CAAC;IACb,MAAM,EAAE,IAAI,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEN,MAAM,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAChD,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG;IACnB,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IAClB,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;CACrB,GACD,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;IAChB,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC9B,CAAC;AAEN,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/D,wBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC"}
|
package/dist/createTask.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createState } from "./createState";
|
|
1
|
+
import { assignState, createState } from "./createState";
|
|
2
2
|
export function createTask(task) {
|
|
3
3
|
const state = createState({
|
|
4
4
|
isRunning: false,
|
|
@@ -6,9 +6,6 @@ export function createTask(task) {
|
|
|
6
6
|
error: null,
|
|
7
7
|
params: null,
|
|
8
8
|
});
|
|
9
|
-
const assign = (newState) => {
|
|
10
|
-
Object.assign(state, newState);
|
|
11
|
-
};
|
|
12
9
|
let currentAbortController;
|
|
13
10
|
const fetch = (params) => {
|
|
14
11
|
currentAbortController?.abort();
|
|
@@ -19,7 +16,7 @@ export function createTask(task) {
|
|
|
19
16
|
if (abortController.signal.aborted) {
|
|
20
17
|
return;
|
|
21
18
|
}
|
|
22
|
-
|
|
19
|
+
assignState(state, {
|
|
23
20
|
isRunning: false,
|
|
24
21
|
result,
|
|
25
22
|
error: null,
|
|
@@ -30,7 +27,7 @@ export function createTask(task) {
|
|
|
30
27
|
if (abortController.signal.aborted) {
|
|
31
28
|
return;
|
|
32
29
|
}
|
|
33
|
-
|
|
30
|
+
assignState(state, {
|
|
34
31
|
isRunning: false,
|
|
35
32
|
result: null,
|
|
36
33
|
error: String(error),
|
|
@@ -54,7 +51,7 @@ export function createTask(task) {
|
|
|
54
51
|
},
|
|
55
52
|
run(params) {
|
|
56
53
|
const promise = fetch(params);
|
|
57
|
-
|
|
54
|
+
assignState(state, {
|
|
58
55
|
isRunning: true,
|
|
59
56
|
result: null,
|
|
60
57
|
error: null,
|
|
@@ -64,7 +61,7 @@ export function createTask(task) {
|
|
|
64
61
|
},
|
|
65
62
|
rerun(params) {
|
|
66
63
|
const promise = fetch(params);
|
|
67
|
-
|
|
64
|
+
assignState(state, {
|
|
68
65
|
isRunning: true,
|
|
69
66
|
result: state.result,
|
|
70
67
|
error: null,
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export { render } from "./render";
|
|
|
2
2
|
export { createCleanup, createMountEffect, RaskStatefulComponent, RaskStatelessComponent, } from "./component";
|
|
3
3
|
export { createContext } from "./createContext";
|
|
4
4
|
export { createState, assignState } from "./createState";
|
|
5
|
-
export { createTask, Task } from "./createTask";
|
|
5
|
+
export { createTask, TaskState as Task } from "./createTask";
|
|
6
6
|
export { ErrorBoundary } from "./error";
|
|
7
7
|
export { createRef } from "inferno";
|
|
8
8
|
export { createView } from "./createView";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,SAAS,IAAI,IAAI,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,cAAc,EACd,SAAS,GACV,MAAM,SAAS,CAAC"}
|