Comparing version 0.6.0-alpha.9 to 0.6.0-alpha.10
@@ -442,2 +442,9 @@ "use strict"; | ||
}; | ||
const make_flag = (initial, is_signal) => { | ||
initial = !!initial; | ||
const h = box(initial, 0, is_signal && pure_arrow_fn_returns_undef); | ||
h[key_is_signal] = is_signal; | ||
h[key_has_default] = 1; | ||
return fill_entity(h, proto_entity_writtable_leaf, 1, initial, 0, (v) => h[1](!!v)); | ||
}; | ||
const get_getter_to_reactionable_or_custom = (re) => ((re && re[key_get]) || (typeof re === const_string_function ? re : () => re)); | ||
@@ -453,4 +460,2 @@ const make_value_combine_handler = (cfg, fn) => { | ||
const value_trigger = (initial) => make_trigger(initial); | ||
const value_trigger_flag = (initial) => make_trigger(!!initial, 1); | ||
const value_trigger_flag_invert = (initial) => make_trigger(!initial, 1); | ||
const value_from = (get, set) => { | ||
@@ -464,7 +469,7 @@ const h = sel(get[key_get] || get).slice(0, 1); | ||
const value_combine = (cfg, fn) => fill_entity(make_value_combine_handler(cfg, fn), proto_entity_readable); | ||
value_trigger_flag[key_invert] = value_trigger_flag_invert; | ||
value_trigger[key_flag] = value_trigger_flag; | ||
const value_flag = (initial) => make_flag(initial); | ||
value[key_trigger] = value_trigger; | ||
value[key_from] = value_from; | ||
value[key_combine] = value_combine; | ||
value[key_flag] = value_flag; | ||
const signal = (function (initial) { | ||
@@ -489,2 +494,3 @@ const h = box(initial, 0, pure_arrow_fn_returns_undef); | ||
}; | ||
const signal_flag = (initial) => make_flag(initial, 1); | ||
signal_trigger_flag[key_invert] = signal_trigger_flag_invert; | ||
@@ -494,2 +500,3 @@ signal_trigger[key_flag] = signal_trigger_flag; | ||
signal[key_from] = signal_from; | ||
signal[key_flag] = signal_flag; | ||
// | ||
@@ -496,0 +503,0 @@ // Realar internal |
@@ -10,2 +10,3 @@ import { FC } from 'react'; | ||
} | ((value: T) => void); | ||
declare type Re_Exemplar = Re<any>; | ||
declare type Re_CfgExemplar = { | ||
@@ -44,3 +45,3 @@ [key: string]: Re<any>; | ||
unsafe: () => () => void; | ||
func: <T extends () => any>(fn: T) => T; | ||
func: <T extends (...args: any[]) => any>(fn: T) => T; | ||
}; | ||
@@ -186,10 +187,18 @@ declare type E_SetPartial<T> = Equals<T, void> extends true ? { | ||
(func: (value: Arg) => any, emptyValue: WillExtract<O>): Ret; | ||
(re: Re_Exemplar, emptyValue: WillExtract<O>): Ret; | ||
(func?: (value: Arg) => any): WillRet; | ||
(re?: Re_Exemplar): WillRet; | ||
track(func: (value: Arg) => any, emptyValue: WillExtract<O>): Ret; | ||
track(re: Re_Exemplar, emptyValue: WillExtract<O>): Ret; | ||
track(func?: (value: Arg) => any): WillRet; | ||
track(re?: Re_Exemplar): WillRet; | ||
not: { | ||
(func: (value: Arg) => any, emptyValue: WillExtract<O>): Ret; | ||
(re: Re_Exemplar, emptyValue: WillExtract<O>): Ret; | ||
(func?: (value: Arg) => any): WillRet; | ||
(re?: Re_Exemplar): WillRet; | ||
track(func: (value: Arg) => any, emptyValue: WillExtract<O>): Ret; | ||
track(re: Re_Exemplar, emptyValue: WillExtract<O>): Ret; | ||
track(func?: (value: Arg) => any): WillRet; | ||
track(re?: Re_Exemplar): WillRet; | ||
}; | ||
@@ -201,6 +210,10 @@ }; | ||
(func?: (value: I) => any): Ret; | ||
(re?: Re_Exemplar): Ret; | ||
track(func?: (value: I) => any): Ret; | ||
track(re?: Re_Exemplar): Ret; | ||
not: { | ||
(func?: (value: I) => any): Ret; | ||
(re?: Re_Exemplar): Ret; | ||
track(func?: (value: I) => any): Ret; | ||
track(re?: Re_Exemplar): Ret; | ||
}; | ||
@@ -271,4 +284,5 @@ }; | ||
} | ||
declare type Value<I = undefined, O = I> = E_SetPartial<I> & E_ValPartial<I, WillExpand<O>> & E_Value<I, O>; | ||
declare type Signal<I = void, O = I> = E_SetPartial<I> & E_ValPartial<I, WillExpand<O>> & E_Signal<I, O>; | ||
declare type E_IfAnyInput<I> = Equals<I, any> extends true ? (() => void) : {}; | ||
declare type Value<I = undefined, O = I> = E_SetPartial<I> & E_ValPartial<I, WillExpand<O>> & E_Value<I, O> & E_IfAnyInput<I>; | ||
declare type Signal<I = void, O = I> = E_SetPartial<I> & E_ValPartial<I, WillExpand<O>> & E_Signal<I, O> & E_IfAnyInput<I>; | ||
declare type ValueReadonly<O> = E_ValReadonlyPartial<WillExpand<O>> & E_ValueReadonly<O>; | ||
@@ -282,11 +296,7 @@ declare type SignalReadonly<O> = E_ValReadonlyPartial<WillExpand<O>> & E_SignalReadonly<O>; | ||
<T>(initial: T): Value<T>; | ||
flag: { | ||
(): Value<boolean>; | ||
(initial: boolean): Value<boolean>; | ||
invert: { | ||
(): Value<boolean>; | ||
(initial: boolean): Value<boolean>; | ||
}; | ||
}; | ||
}; | ||
flag: { | ||
(): Value<any, boolean>; | ||
(initial: any): Value<any, boolean>; | ||
}; | ||
from: { | ||
@@ -374,10 +384,14 @@ <O>(get: Re<O>): ValueReadonly<WillExpand<O>>; | ||
flag: { | ||
(): Signal<boolean>; | ||
(initial: boolean): Signal<boolean>; | ||
(): Signal<void, boolean>; | ||
(initial: boolean): Signal<void, boolean>; | ||
invert: { | ||
(): Signal<boolean>; | ||
(initial: boolean): Signal<boolean>; | ||
(): Signal<void, boolean>; | ||
(initial: boolean): Signal<void, boolean>; | ||
}; | ||
}; | ||
}; | ||
flag: { | ||
(): Signal<any, boolean>; | ||
(initial: any): Signal<any, boolean>; | ||
}; | ||
from: { | ||
@@ -384,0 +398,0 @@ <O>(get: Re<O>): SignalReadonly<O>; |
{ | ||
"name": "realar", | ||
"version": "0.6.0-alpha.9", | ||
"version": "0.6.0-alpha.10", | ||
"description": "Advanced state manager for React", | ||
@@ -91,3 +91,3 @@ "repository": { | ||
}, | ||
"gitHead": "5c4a08ac3e7d25f38eedc35d8e13bc18ab34f683" | ||
"gitHead": "3c87cbcdd157178668ebc3db29f126f55e2870e5" | ||
} |
@@ -21,3 +21,3 @@ # Realar | ||
You can make stores and "actions" | ||
You can make stores and "actions" <sup>_[play on runkit](https://runkit.com/betula/60c071ff26dea9001373459c)_</sup> | ||
@@ -31,3 +31,3 @@ ```javascript | ||
And bind to React easily | ||
And bind to React easily <sup>_[play on codesandbox](https://codesandbox.io/s/realar-readme-second-example-ld0g1?file=/src/App.tsx)_</sup> | ||
@@ -38,7 +38,9 @@ ```javascript | ||
return <p>{state} <button onClick={inc}>+</button></p> | ||
return <p>{state} | ||
<button onClick={inc}>+</button> | ||
</p> | ||
} | ||
``` | ||
You can make streams | ||
You can make streams <sup>_[play on runkit](https://runkit.com/betula/60c073765105e1001311b294)_</sup> | ||
@@ -50,6 +52,6 @@ ```javascript | ||
.filter() | ||
.to(add); | ||
.to(add) | ||
``` | ||
And bind to React | ||
And bind to React <sup>_[play on codesandbox](https://codesandbox.io/s/realar-readme-fourth-example-18pcj?file=/src/App.tsx)_</sup> | ||
@@ -71,10 +73,10 @@ ```javascript | ||
class Counter { | ||
@prop state = 0; | ||
@prop state = 0 | ||
add = (num) => this.state += num; | ||
inc = () => this.add(1); | ||
add = (num) => this.state += num | ||
inc = () => this.add(1) | ||
} | ||
``` | ||
And bind to React | ||
And bind to React <sup>_[play on codesandbox](https://codesandbox.io/s/realar-readme-example-with-classes-j4q4e?file=/src/App.tsx)_</sup> | ||
@@ -85,17 +87,20 @@ ```javascript | ||
return <p>{state} <button onClick={inc}>+</button></p> | ||
return <p>{state} | ||
<button onClick={inc}>+</button> | ||
</p> | ||
}) | ||
``` | ||
And you can use it together | ||
And you can use it together <sup>_[play on codesandbox](https://codesandbox.io/s/realar-readme-example-together-cppu6?file=/src/App.tsx)_</sup> | ||
```javascript | ||
class Positive { | ||
@cache get state() { | ||
return store.val > 0 ? 'positive' : 'non' | ||
} | ||
const counter = new Counter() | ||
const store = value.from(() => counter.state) | ||
constructor() { | ||
sync(() => this.state, console.log) | ||
} | ||
const App = () => { | ||
const state = useValue(() => store.val) | ||
return <p>{state} | ||
<button onClick={counter.inc}>+</button> | ||
</p> | ||
} | ||
@@ -108,45 +113,48 @@ ``` | ||
- [Get started](./docs/get-started.md) | ||
- [Classes usage](./docs/classes.md) | ||
- [Core](./docs/core.md) | ||
- [OOP usage](./docs/oop.md) | ||
- Examples | ||
- [Simple form](./docs/examples.md#simple-form) | ||
- [Basic usage](./docs/examples.md#basic-usage) | ||
- API | ||
- Declarative framework | ||
- [value](./docs/api.md#value) | ||
- [signal](./docs/api.md#signal) | ||
- [value](./docs/api-value.md) | ||
- [signal](./docs/api-signal.md) | ||
- Imperative framework | ||
- [on](./docs/api.md#on) | ||
- on.once | ||
- [sync](./docs/api.md#sync) | ||
- [cycle](./docs/api.md#cycle) | ||
- Class decorators for TRFP | ||
- [prop]() | ||
- [prop](./docs/api.md#prop) | ||
- [cache](./docs/api.md#cache) | ||
- Shared technique | ||
- [shared]() | ||
- [initial]() | ||
- [free]() | ||
- [mock]() | ||
- [unmock]() | ||
- [shared](./docs/api.md#shared) | ||
- [initial](./docs/api.md#initial) | ||
- [free](./docs/api.md#free) | ||
- [mock](./docs/api.md#mock) | ||
- [unmock](./docs/api.md#unmock) | ||
- Unsubscribe scopes control | ||
- [isolate]() | ||
- [un]() | ||
- Additional api | ||
- [local.inject]() | ||
- [contextual]() | ||
- [pool]() | ||
- [un](./docs/api.md#un) | ||
- isolate | ||
- Async api | ||
- [pool](./docs/api.md#pool) | ||
- Track and transactions | ||
- [transaction]() | ||
- [untrack]() | ||
- [transaction](./docs/api.md#transaction) | ||
- [untrack](./docs/api.md#untrack) | ||
- [untrack.func](./docs/api.md#untrackfunc) | ||
- React bindings | ||
- [observe]() | ||
- [useValue]() | ||
- [useValues]() | ||
- [useLocal]() | ||
- [useScoped]() | ||
- [useShared]() | ||
- [Scope]() | ||
- [useJsx]() | ||
- [observe](./docs/api.md#observe) | ||
- [useValue](./docs/api.md#usevalue) | ||
- [useValues](./docs/api.md#usevalues) | ||
- useLocal | ||
- [useScoped](./docs/api.md#usescoped) | ||
- useShared | ||
- Scope | ||
- [useJsx](./docs/api.md#usejsx) | ||
### Demos | ||
+ [Basic usage on codesandbox](https://codesandbox.io/s/realar-basic-example-41vvd?file=/src/App.tsx). | ||
+ [Hello](https://github.com/realar-project/hello) - shared state demonstration. | ||
@@ -153,0 +161,0 @@ + [Todos](https://github.com/realar-project/todos) - todomvc implementation. |
@@ -758,2 +758,10 @@ import React, { Context, FC } from 'react'; | ||
const make_flag = (initial, is_signal?) => { | ||
initial = !!initial; | ||
const h = (box as any)(initial, 0, is_signal && pure_arrow_fn_returns_undef); | ||
h[key_is_signal] = is_signal; | ||
h[key_has_default] = 1; | ||
return fill_entity(h, proto_entity_writtable_leaf, 1, initial, 0, (v) => h[1](!!v)); | ||
} | ||
const get_getter_to_reactionable_or_custom = (re) => ( | ||
@@ -779,4 +787,2 @@ (re && re[key_get]) || (typeof re === const_string_function ? re : () => re) | ||
const value_trigger = (initial) => make_trigger(initial); | ||
const value_trigger_flag = (initial) => make_trigger(!!initial, 1); | ||
const value_trigger_flag_invert = (initial) => make_trigger(!initial, 1); | ||
const value_from = (get, set?) => { | ||
@@ -789,8 +795,8 @@ const h = sel(get[key_get] || get).slice(0, 1); | ||
const value_combine = (cfg, fn?) => fill_entity(make_value_combine_handler(cfg, fn), proto_entity_readable); | ||
const value_flag = (initial) => make_flag(initial) | ||
value_trigger_flag[key_invert] = value_trigger_flag_invert; | ||
value_trigger[key_flag] = value_trigger_flag; | ||
value[key_trigger] = value_trigger as any; | ||
value[key_from] = value_from; | ||
value[key_combine] = value_combine; | ||
value[key_flag] = value_flag as any; | ||
@@ -816,2 +822,3 @@ | ||
} | ||
const signal_flag = (initial) => make_flag(initial, 1) | ||
@@ -822,2 +829,3 @@ signal_trigger_flag[key_invert] = signal_trigger_flag_invert; | ||
signal[key_from] = signal_from; | ||
signal[key_flag] = signal_flag as any; | ||
@@ -824,0 +832,0 @@ |
@@ -51,2 +51,3 @@ import { FC } from 'react'; | ||
type Re_Exemplar = Re<any>; | ||
type Re_CfgExemplar = { | ||
@@ -92,3 +93,3 @@ [key: string]: Re<any> | ||
unsafe: () => () => void; | ||
func: <T extends () => any>(fn: T) => T; | ||
func: <T extends (...args: any[]) => any>(fn: T) => T; | ||
} | ||
@@ -241,10 +242,18 @@ | ||
(func: (value: Arg) => any, emptyValue: WillExtract<O>): Ret // untracked by default | ||
(re: Re_Exemplar, emptyValue: WillExtract<O>): Ret | ||
(func?: (value: Arg) => any): WillRet | ||
(re?: Re_Exemplar): WillRet | ||
track(func: (value: Arg) => any, emptyValue: WillExtract<O>): Ret | ||
track(re: Re_Exemplar, emptyValue: WillExtract<O>): Ret | ||
track(func?: (value: Arg) => any): WillRet | ||
track(re?: Re_Exemplar): WillRet | ||
not: { | ||
(func: (value: Arg) => any, emptyValue: WillExtract<O>): Ret // untracked by default | ||
(re: Re_Exemplar, emptyValue: WillExtract<O>): Ret | ||
(func?: (value: Arg) => any): WillRet | ||
(re?: Re_Exemplar): WillRet | ||
track(func: (value: Arg) => any, emptyValue: WillExtract<O>): Ret | ||
track(re: Re_Exemplar, emptyValue: WillExtract<O>): Ret | ||
track(func?: (value: Arg) => any): WillRet | ||
track(re?: Re_Exemplar): WillRet | ||
} | ||
@@ -256,6 +265,10 @@ } | ||
(func?: (value: I) => any): Ret // untracked by default | ||
(re?: Re_Exemplar): Ret | ||
track(func?: (value: I) => any): Ret | ||
track(re?: Re_Exemplar): Ret | ||
not: { | ||
(func?: (value: I) => any): Ret // untracked by default | ||
(re?: Re_Exemplar): Ret | ||
track(func?: (value: I) => any): Ret | ||
track(re?: Re_Exemplar): Ret | ||
} | ||
@@ -358,6 +371,7 @@ } | ||
type E_IfAnyInput<I> = Equals<I, any> extends true ? (() => void) : {}; | ||
type Value<I = undefined, O = I> = E_SetPartial<I> & E_ValPartial<I, WillExpand<O>> & E_Value<I, O> | ||
type Signal<I = void, O = I> = E_SetPartial<I> & E_ValPartial<I, WillExpand<O>> & E_Signal<I, O> | ||
type Value<I = undefined, O = I> = E_SetPartial<I> & E_ValPartial<I, WillExpand<O>> & E_Value<I, O> & E_IfAnyInput<I> | ||
type Signal<I = void, O = I> = E_SetPartial<I> & E_ValPartial<I, WillExpand<O>> & E_Signal<I, O> & E_IfAnyInput<I> | ||
@@ -382,13 +396,7 @@ type ValueReadonly<O> = E_ValReadonlyPartial<WillExpand<O>> & E_ValueReadonly<O> | ||
<T>(initial: T): Value<T>; | ||
flag: { | ||
(): Value<boolean>; | ||
(initial: boolean): Value<boolean>; | ||
invert: { | ||
(): Value<boolean>; | ||
(initial: boolean): Value<boolean>; | ||
} | ||
} | ||
}; | ||
flag: { | ||
(): Value<any, boolean>; | ||
(initial: any): Value<any, boolean>; | ||
} | ||
@@ -482,8 +490,8 @@ from: { | ||
flag: { | ||
(): Signal<boolean>; | ||
(initial: boolean): Signal<boolean>; | ||
(): Signal<void, boolean>; | ||
(initial: boolean): Signal<void, boolean>; | ||
invert: { | ||
(): Signal<boolean>; | ||
(initial: boolean): Signal<boolean>; | ||
(): Signal<void, boolean>; | ||
(initial: boolean): Signal<void, boolean>; | ||
} | ||
@@ -493,2 +501,7 @@ } | ||
flag: { | ||
(): Signal<any, boolean>; | ||
(initial: any): Signal<any, boolean>; | ||
} | ||
from: { | ||
@@ -495,0 +508,0 @@ <O>(get: Re<O>): SignalReadonly<O> |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
218771
2975
181