realar
Advanced tools
Comparing version 0.6.0-alpha.4 to 0.6.0-alpha.5
import { FC } from 'react'; | ||
import { Contextual, Isolate, Local, Observe, PoolEntry, SelectorEntry, SignalEntry, Transaction, Untrack, UseJsx, UseLocal, UseScoped, UseValue, UseValues, ValueEntry } from './types'; | ||
export { value, selector, signal, on, sync, cycle, prop, cache, shared, initial, free, mock, unmock, isolate, un, local, contextual, pool, transaction, untrack, observe, useValue, useValues, useLocal, useScoped, shared as useShared, Scope, useJsx, }; | ||
declare const selector: SelectorEntry; | ||
import { Contextual, Isolate, Local, Observe, On, PoolEntry, SignalEntry, Sync, Transaction, Untrack, UseJsx, UseLocal, UseScoped, UseValue, UseValues, ValueEntry } from './types'; | ||
export { value, signal, on, sync, cycle, prop, cache, shared, initial, free, mock, unmock, isolate, un, local, contextual, pool, transaction, untrack, observe, useValue, useValues, useLocal, useScoped, shared as useShared, Scope, useJsx, }; | ||
declare const value: ValueEntry; | ||
@@ -12,13 +11,13 @@ declare const signal: SignalEntry; | ||
declare const local: Local; | ||
declare const on: (target: any, fn: any) => void; | ||
declare const sync: (target: any, fn: any) => void; | ||
declare const cycle: (body: any) => void; | ||
declare const on: On; | ||
declare const sync: Sync; | ||
declare const cycle: (body: () => void) => void; | ||
declare const contextual: Contextual; | ||
declare const initial: (data: any) => void; | ||
declare const shared: <M>(target: (new (init?: any) => M) | ((init?: any) => M)) => M; | ||
declare const shared: <M>(target: (new (init: any) => M) | ((init: any) => M)) => M; | ||
declare const free: () => void; | ||
declare const mock: <M>(target: (new (init?: any) => M) | ((init?: any) => M), mocked: M) => M; | ||
declare const unmock: (target: (new (init?: any) => any) | ((init?: any) => any), ...targets: ((new (init?: any) => any) | ((init?: any) => any))[]) => void; | ||
declare const prop: (_t: any, key: any, descriptor?: any) => any; | ||
declare const cache: (_proto: any, key: any, descriptor: any) => any; | ||
declare const mock: <M>(target: (new (init: any) => M) | ((init: any) => M), mocked: M) => M; | ||
declare const unmock: (target: (new (init: any) => any) | ((init: any) => any), ...targets: ((new (init: any) => any) | ((init: any) => any))[]) => void; | ||
declare const prop: (_target: any, key: any, descriptor?: any) => any; | ||
declare const cache: (_target: any, key: any, descriptor: any) => any; | ||
declare const observe: Observe; | ||
@@ -25,0 +24,0 @@ declare const Scope: FC; |
@@ -6,3 +6,3 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.useJsx = exports.Scope = exports.useShared = exports.useScoped = exports.useLocal = exports.useValues = exports.useValue = exports.observe = exports.untrack = exports.transaction = exports.pool = exports.contextual = exports.local = exports.un = exports.isolate = exports.unmock = exports.mock = exports.free = exports.initial = exports.shared = exports.cache = exports.prop = exports.cycle = exports.sync = exports.on = exports.signal = exports.selector = exports.value = void 0; | ||
exports.useJsx = exports.Scope = exports.useShared = exports.useScoped = exports.useLocal = exports.useValues = exports.useValue = exports.observe = exports.untrack = exports.transaction = exports.pool = exports.contextual = exports.local = exports.un = exports.isolate = exports.unmock = exports.mock = exports.free = exports.initial = exports.shared = exports.cache = exports.prop = exports.cycle = exports.sync = exports.on = exports.signal = exports.value = void 0; | ||
const reactive_box_1 = __importDefault(require("reactive-box")); | ||
@@ -112,3 +112,2 @@ // | ||
const key_combine = 'combine'; | ||
const key_join = 'join'; | ||
const key_value = 'value'; | ||
@@ -121,2 +120,3 @@ const key_as = 'as'; | ||
const key_updater = key_update + 'r'; | ||
const key_wrap = 'wrap'; | ||
const obj_def_prop_value = (obj, key, value) => (obj_def_prop(obj, key, { value }), value); | ||
@@ -211,26 +211,6 @@ const obj_def_prop_trait = (obj, key, trait) => obj_def_prop(obj, key, { | ||
}; | ||
const make_join_entity = (fn_get, join_cfg, is_signal, set, is_untrack) => { | ||
const fns = join_cfg.map(is_signal | ||
? (fn) => fn[key_get] || fn | ||
: (fn) => sel(fn[key_get] || fn)[0]); | ||
const h = [ | ||
() => { | ||
const ret = [fn_get()]; | ||
const finish = is_untrack && internal_untrack(); | ||
try { | ||
return ret.concat(fns.map(f => f())); | ||
} | ||
finally { | ||
finish && finish(); | ||
} | ||
}, | ||
set && set.bind() | ||
]; | ||
h[key_is_signal] = is_signal; | ||
return fill_entity(h, set ? proto_entity_writtable : proto_entity_readable); | ||
}; | ||
const make_trait_ent_pure_fn_untrack = (trait_fn) => (ctx, fn) => trait_fn(ctx, fn && ((a, b) => { | ||
const make_trait_ent_pure_fn_untrack = (trait_fn) => (ctx, fn) => trait_fn(ctx, fn && ((a, b, c) => { | ||
const finish = internal_untrack(); | ||
try { | ||
return fn(a, b); | ||
return fn(a, b, c); | ||
} | ||
@@ -309,3 +289,3 @@ finally { | ||
const trait_ent_pre = (ctx, fn) => (fn | ||
? fill_entity(ctx[key_handler], ctx[key_proto], 0, 0, ctx[key_get], (v) => ctx[key_set](fn(v))) | ||
? fill_entity(ctx[key_handler], ctx[key_proto], 0, 0, ctx[key_get], (v) => ctx[key_set](fn(v, untrack(ctx[key_get])))) | ||
: ctx); | ||
@@ -323,3 +303,5 @@ const trait_ent_pre_untrack = make_trait_ent_pure_fn_untrack(trait_ent_pre); | ||
const trait_ent_pre_filter_not_untrack = make_trait_ent_untrack(trait_ent_pre_filter_not); | ||
const trait_ent_flow = (ctx, fn) => { | ||
const trait_ent_wrap = (ctx, fn_pre, fn_map) => (trait_ent_map(trait_ent_pre(ctx, fn_pre), fn_map)); | ||
const trait_ent_wrap_untrack = (ctx, fn_pre, fn_map) => (trait_ent_map_untrack(trait_ent_pre_untrack(ctx, fn_pre), fn_map)); | ||
const trait_ent_flow = (ctx, fn, empty_val) => { | ||
fn || (fn = pure_arrow_fn_returns_arg); | ||
@@ -336,3 +318,3 @@ let started, prev; | ||
} | ||
}, const_undef, is_signal && pure_arrow_fn_returns_undef); | ||
}, empty_val, is_signal && pure_arrow_fn_returns_undef); | ||
const h = [ | ||
@@ -346,13 +328,11 @@ () => ((started || (f[0](), (started = 1))), f[1]()), | ||
const trait_ent_flow_untrack = make_trait_ent_pure_fn_untrack(trait_ent_flow); | ||
const trait_ent_filter = (ctx, fn) => (trait_ent_flow(ctx, fn | ||
const trait_ent_filter = (ctx, fn, empty_val) => (trait_ent_flow(ctx, fn | ||
? (fn[key_get] && (fn = fn[key_get]), | ||
(v, prev) => (fn(v, prev) ? v : internal_flow_stop)) | ||
: (v) => v || internal_flow_stop)); | ||
: (v) => v || internal_flow_stop, empty_val)); | ||
const trait_ent_filter_untrack = make_trait_ent_untrack(trait_ent_filter); | ||
const trait_ent_filter_not = (ctx, fn) => (trait_ent_filter(ctx, fn | ||
const trait_ent_filter_not = (ctx, fn, empty_val) => (trait_ent_filter(ctx, fn | ||
? (fn[key_get] && (fn = fn[key_get]), (v) => !fn(v)) | ||
: pure_arrow_fn_returns_not_arg)); | ||
: pure_arrow_fn_returns_not_arg, empty_val)); | ||
const trait_ent_filter_not_untrack = make_trait_ent_untrack(trait_ent_filter_not); | ||
const trait_ent_join = (ctx, cfg) => (make_join_entity(ctx[key_get], cfg, ctx[key_handler][key_is_signal], ctx[key_set])); | ||
const trait_ent_join_untrack = (ctx, cfg) => (make_join_entity(ctx[key_get], cfg, ctx[key_handler][key_is_signal], ctx[key_set], 1)); | ||
const trait_ent_as_value = (ctx) => (value_from(ctx[key_get], ctx[key_set])); | ||
@@ -392,3 +372,2 @@ const trait_ent_op = (ctx, f) => ((f = f(ctx)), (f === const_undef ? ctx : f)); | ||
// .to | ||
// .join (track|untrack) | ||
// .as:readable.as:ns | ||
@@ -405,3 +384,2 @@ // .as.value | ||
obj_def_prop_trait_with_ns(proto_entity_readable, key_map, op_trait_if_not_signal(trait_ent_map, trait_ent_map_untrack), proto_entity_readable_map_ns, 1); | ||
obj_def_prop_trait_with_ns(proto_entity_readable, key_join, trait_ent_join, make_proto_for_trackable_ns(trait_ent_join, trait_ent_join_untrack)); | ||
obj_def_prop_with_ns(proto_entity_readable, key_as, proto_entity_readable_as_ns); | ||
@@ -441,2 +419,3 @@ obj_def_prop_promise(proto_entity_readable); | ||
obj_def_prop_trait_with_ns(proto_entity_writtable, key_pre, op_trait_if_not_signal(trait_ent_pre, trait_ent_pre_untrack), proto_entity_writtable_pre_ns, 1); | ||
obj_def_prop_trait_with_ns(proto_entity_writtable, key_wrap, op_trait_if_not_signal(trait_ent_wrap, trait_ent_wrap_untrack), make_proto_for_trackable_ns(trait_ent_wrap, trait_ent_wrap_untrack), 1); | ||
// writtable_leaf.reset.by:ns | ||
@@ -478,15 +457,8 @@ // .reset.by.once | ||
const get_getter_to_reactionable_or_custom = (re) => ((re && re[key_get]) || (typeof re === const_string_function ? re : () => re)); | ||
const make_combine = (cfg, is_signal) => { | ||
const make_value_combine_handler = (cfg, fn) => { | ||
const keys = obj_keys(cfg); | ||
const fns = keys.map(is_signal | ||
? (key) => get_getter_to_reactionable_or_custom(cfg[key]) | ||
: (key) => sel(get_getter_to_reactionable_or_custom(cfg[key]))[0]); | ||
const h = [ | ||
() => keys.reduce((ret, key, key_index) => ((ret[key] = fns[key_index]()), ret), obj_empty_from(cfg)) | ||
]; | ||
h[key_is_signal] = is_signal; | ||
return fill_entity(h, proto_entity_readable); | ||
const fns = keys.map((key) => sel(get_getter_to_reactionable_or_custom(cfg[key]))[0]); | ||
const re = () => keys.reduce((ret, key, key_index) => ((ret[key] = fns[key_index]()), ret), obj_empty_from(cfg)); | ||
return [fn ? sel(() => fn(re()))[0] : re]; | ||
}; | ||
const selector = (fn) => (fill_entity(sel(fn).slice(0, 1), proto_entity_readable)); | ||
exports.selector = selector; | ||
const value = ((initial) => (fill_entity(box(initial), proto_entity_writtable_leaf, 1, initial))); | ||
@@ -497,6 +469,10 @@ exports.value = value; | ||
const value_trigger_flag_invert = (initial) => make_trigger(!initial, 1); | ||
const value_from = (get, set) => ((get = sel(get[key_get] || get).slice(0, 1), | ||
set && ((set = set[key_set] || set), (get[1] = set.bind()))), | ||
fill_entity(get, set ? proto_entity_writtable : proto_entity_readable)); | ||
const value_combine = (cfg) => make_combine(cfg); | ||
const value_from = (get, set) => { | ||
const h = sel(get[key_get] || get).slice(0, 1); | ||
if (set) | ||
h[1] = set[key_set] ? set[key_set].bind() : (v) => set(v, untrack(ctx[key_get])); | ||
const ctx = fill_entity(h, set ? proto_entity_writtable : proto_entity_readable); | ||
return ctx; | ||
}; | ||
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; | ||
@@ -516,7 +492,10 @@ value_trigger[key_flag] = value_trigger_flag; | ||
const signal_trigger_flag_invert = (initial) => make_trigger(!initial, 1, 1); | ||
const signal_from = (get, set) => ((get = [get[key_get] || get], | ||
(get[key_is_signal] = 1), | ||
set && ((set = set[key_set] || set), (get[1] = set.bind()))), | ||
fill_entity(get, set ? proto_entity_writtable : proto_entity_readable)); | ||
const signal_combine = (cfg) => make_combine(cfg, 1); | ||
const signal_from = (get, set) => { | ||
const h = [get[key_get] || get]; | ||
h[key_is_signal] = 1; | ||
if (set) | ||
h[1] = set[key_set] ? set[key_set].bind() : (v) => set(v, untrack(ctx[key_get])); | ||
const ctx = fill_entity(h, set ? proto_entity_writtable : proto_entity_readable); | ||
return ctx; | ||
}; | ||
signal_trigger_flag[key_invert] = signal_trigger_flag_invert; | ||
@@ -526,3 +505,2 @@ signal_trigger[key_flag] = signal_trigger_flag; | ||
signal[key_from] = signal_from; | ||
signal[key_combine] = signal_combine; | ||
// | ||
@@ -595,3 +573,3 @@ // Realar internal | ||
const on_once = (target, fn) => reactionable_subscribe(target, fn, 1); | ||
const on = (target, fn) => reactionable_subscribe(target, fn); | ||
const on = ((target, fn) => reactionable_subscribe(target, fn)); | ||
exports.on = on; | ||
@@ -686,9 +664,9 @@ on[key_once] = on_once; | ||
obj_def_prop(o, p, { get: init[0], set: init[1] })); | ||
const prop = (_t, key, descriptor) => ((_t = descriptor === null || descriptor === void 0 ? void 0 : descriptor.initializer), { | ||
const prop = (_target, key, descriptor) => ((_target = descriptor && descriptor.initializer), { | ||
get() { | ||
obj_def_box_prop(this, key, _t); | ||
obj_def_box_prop(this, key, _target); | ||
return this[key]; | ||
}, | ||
set(value) { | ||
obj_def_box_prop(this, key, _t); | ||
obj_def_box_prop(this, key, _target); | ||
this[key] = value; | ||
@@ -698,3 +676,3 @@ }, | ||
exports.prop = prop; | ||
const cache = (_proto, key, descriptor) => ({ | ||
const cache = (_target, key, descriptor) => ({ | ||
get() { | ||
@@ -809,3 +787,3 @@ const [get] = sel(descriptor.get); | ||
deps || (deps = []); | ||
const h = useMemo(() => value.combine(targets), deps); | ||
const h = useMemo(() => value_combine(targets), deps); | ||
return useValue(h, [h]); | ||
@@ -821,7 +799,7 @@ }; | ||
const threads = value([]); | ||
const count = threads.select(t => t.length); | ||
const pending = count.select(c => c > 0); | ||
const count = trait_ent_select(threads, t => t.length); | ||
const pending = trait_ent_select(count, c => c > 0); | ||
function run() { | ||
const stop = () => threads.update(t => t.filter(ctx => ctx !== stop)); | ||
threads.update(t => t.concat(stop)); | ||
const stop = () => trait_ent_update(threads, t => t.filter(ctx => ctx !== stop)); | ||
trait_ent_update(threads, t => t.concat(stop)); | ||
const stack = context_contextual_stop; | ||
@@ -828,0 +806,0 @@ context_contextual_stop = stop; |
import { FC } from 'react'; | ||
export { ValueEntry, SignalEntry, SelectorEntry, Local, Contextual, Observe, UseScoped, UseLocal, UseValue, UseValues, UseJsx, Transaction, Untrack, Isolate, PoolEntry, }; | ||
export { ValueEntry, SignalEntry, Local, Contextual, Observe, UseScoped, UseLocal, UseValue, UseValues, UseJsx, On, Sync, Transaction, Untrack, Isolate, PoolEntry, }; | ||
declare type Equals<X, Y> = (<T>() => T extends X ? 1 : 2) extends (<T>() => T extends Y ? 1 : 2) ? ([X] extends [Y] ? ([Y] extends [X] ? true : false) : false) : false; | ||
@@ -7,43 +7,159 @@ declare type Re<T> = { | ||
} | (() => T); | ||
interface E_UpdaterPartial<I, O> { | ||
updater: { | ||
<U>(func?: (state: O, upValue: U, upPrev: U) => I): Equals<U, unknown> extends true ? Signal : Signal<U>; | ||
value<U>(func?: (state: O, upValue: U, upPrev: U) => I): Equals<U, unknown> extends true ? Value : Value<U>; | ||
}; | ||
declare type ReWrit<T> = { | ||
set: (value: T) => void; | ||
} | ((value: T) => void); | ||
declare type Re_CfgExemplar = { | ||
[key: string]: Re<any>; | ||
}; | ||
declare type Will<T> = T | undefined; | ||
declare type WillExpand<T> = ((p: T) => 0) extends ((p: Will<T>) => 0) ? [T] extends [Will<infer P>] ? P | undefined : T : T; | ||
declare type WillExtract<T> = ((p: T) => 0) extends ((p: Will<T>) => 0) ? [T] extends [Will<infer P>] ? P : T : T; | ||
declare type WillEnsure<T> = ((p: T) => 0) extends ((p: Will<T>) => 0) ? [T] extends [Will<infer P>] ? Will<P> : Will<T> : Will<T>; | ||
declare type On = { | ||
<T>(target: Re<Will<T>>, fn: (value: T, prev: WillExpand<Will<T>>) => void): void; | ||
<T>(target: Re<T>, fn: (value: T, prev: T) => void): void; | ||
}; | ||
declare type Sync = { | ||
<T>(target: Re<Will<T>>, fn: (value: T, prev: WillExpand<Will<T>>) => void): void; | ||
<T>(target: Re<T>, fn: (value: T, prev: T) => void): void; | ||
}; | ||
declare type Local = { | ||
inject(fn: () => void): void; | ||
}; | ||
declare type Contextual = { | ||
stop: () => void; | ||
}; | ||
declare type Isolate = { | ||
(fn: any): () => void; | ||
unsafe: () => () => () => void; | ||
}; | ||
declare type Transaction = { | ||
<T>(fn: () => T): T; | ||
unsafe: () => () => void; | ||
}; | ||
declare type Untrack = { | ||
<T>(fn: () => T): T; | ||
unsafe: () => () => void; | ||
}; | ||
declare type E_SetPartial<T> = Equals<T, void> extends true ? { | ||
(): void; | ||
set(): void; | ||
} : { | ||
(value: T): void; | ||
set(value: T): void; | ||
}; | ||
declare type E_ValReadonlyPartial<O> = { | ||
readonly val: O; | ||
}; | ||
declare type E_ValPartial<I, O> = Equals<I, O> extends true ? { | ||
val: O; | ||
} : E_ValReadonlyPartial<O>; | ||
interface E_PromisePartial<O> { | ||
promise: Promise<WillExtract<O>>; | ||
} | ||
interface E_GetPartial<T> { | ||
get: () => T; | ||
interface E_GetPartial<O> { | ||
get: () => O; | ||
} | ||
interface E_SyncToPartial<T, Ret> { | ||
sync(func: (value: T, prev: T) => void): Ret; | ||
interface E_SyncToPartial<O, Ret> { | ||
sync(func: (value: WillExtract<O>, prev: WillExpand<O>) => void): Ret; | ||
to: { | ||
(func: (value: T, prev: T) => void): Ret; | ||
once(func: (value: T, prev: T) => void): Ret; | ||
(func: (value: WillExtract<O>, prev: WillExpand<O>) => void): Ret; | ||
once(func: (value: WillExtract<O>, prev: WillExpand<O>) => void): Ret; | ||
}; | ||
} | ||
interface E_Value<I, O> extends E_GetPartial<O>, E_SyncToPartial<O, Value<I, O>>, E_UpdaterPartial<I, O> { | ||
op<R>(func: () => R): R extends void ? Value<I, O> : R; | ||
filter: { | ||
(func?: (value: O) => any): Value<I, O>; | ||
untrack(func?: (value: O) => any): Value<I, O>; | ||
not: { | ||
(func?: (value: O) => any): Value<I, O>; | ||
untrack(func?: (value: O) => any): Value<I, O>; | ||
}; | ||
interface E_OpPartial<Ret> { | ||
op<R>(func: () => R): R extends void ? Ret : R; | ||
} | ||
declare type E_SelectMultiple_CfgExemplar<O> = { | ||
[key: string]: (state: O) => void; | ||
}; | ||
declare type _S<O, T> = ((state: O) => T) | (() => T); | ||
interface E_SelectMultiple_Func<o> { | ||
<A>(targets: [_S<o, A>]): [ValueReadonly<A>]; | ||
<A, B>(targets: [_S<o, A>, _S<o, B>]): [ValueReadonly<A>, ValueReadonly<B>]; | ||
<A, B, C>(targets: [_S<o, A>, _S<o, B>, _S<o, C>]): [ValueReadonly<A>, ValueReadonly<B>, ValueReadonly<C>]; | ||
<A, B, C, D>(targets: [_S<o, A>, _S<o, B>, _S<o, C>, _S<o, D>]): [ValueReadonly<A>, ValueReadonly<B>, ValueReadonly<C>, ValueReadonly<D>]; | ||
<A, B, C, D, E>(targets: [_S<o, A>, _S<o, B>, _S<o, C>, _S<o, D>, _S<o, E>]): [ValueReadonly<A>, ValueReadonly<B>, ValueReadonly<C>, ValueReadonly<D>, ValueReadonly<E>]; | ||
<A, B, C, D, E, F>(targets: [_S<o, A>, _S<o, B>, _S<o, C>, _S<o, D>, _S<o, E>, _S<o, F>]): [ValueReadonly<A>, ValueReadonly<B>, ValueReadonly<C>, ValueReadonly<D>, ValueReadonly<E>, ValueReadonly<F>]; | ||
<A, B, C, D, E, F, G>(targets: [_S<o, A>, _S<o, B>, _S<o, C>, _S<o, D>, _S<o, E>, _S<o, F>, _S<o, G>]): [ValueReadonly<A>, ValueReadonly<B>, ValueReadonly<C>, ValueReadonly<D>, ValueReadonly<E>, ValueReadonly<F>, ValueReadonly<G>]; | ||
<A, B, C, D, E, F, G, H>(targets: [_S<o, A>, _S<o, B>, _S<o, C>, _S<o, D>, _S<o, E>, _S<o, F>, _S<o, G>, _S<o, H>]): [ValueReadonly<A>, ValueReadonly<B>, ValueReadonly<C>, ValueReadonly<D>, ValueReadonly<E>, ValueReadonly<F>, ValueReadonly<G>, ValueReadonly<H>]; | ||
<A, B, C, D, E, F, G, H, I>(targets: [_S<o, A>, _S<o, B>, _S<o, C>, _S<o, D>, _S<o, E>, _S<o, F>, _S<o, G>, _S<o, H>, _S<o, I>]): [ValueReadonly<A>, ValueReadonly<B>, ValueReadonly<C>, ValueReadonly<D>, ValueReadonly<E>, ValueReadonly<F>, ValueReadonly<G>, ValueReadonly<H>, ValueReadonly<I>]; | ||
<A, B, C, D, E, F, G, H, I, J>(targets: [_S<o, A>, _S<o, B>, _S<o, C>, _S<o, D>, _S<o, E>, _S<o, F>, _S<o, G>, _S<o, H>, _S<o, I>, _S<o, J>]): [ValueReadonly<A>, ValueReadonly<B>, ValueReadonly<C>, ValueReadonly<D>, ValueReadonly<E>, ValueReadonly<F>, ValueReadonly<G>, ValueReadonly<H>, ValueReadonly<I>, ValueReadonly<J>]; | ||
<A, B, C, D, E, F, G, H, I, J, K>(targets: [_S<o, A>, _S<o, B>, _S<o, C>, _S<o, D>, _S<o, E>, _S<o, F>, _S<o, G>, _S<o, H>, _S<o, I>, _S<o, J>, _S<o, K>]): [ValueReadonly<A>, ValueReadonly<B>, ValueReadonly<C>, ValueReadonly<D>, ValueReadonly<E>, ValueReadonly<F>, ValueReadonly<G>, ValueReadonly<H>, ValueReadonly<I>, ValueReadonly<J>, ValueReadonly<K>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L>(targets: [_S<o, A>, _S<o, B>, _S<o, C>, _S<o, D>, _S<o, E>, _S<o, F>, _S<o, G>, _S<o, H>, _S<o, I>, _S<o, J>, _S<o, K>, _S<o, L>]): [ValueReadonly<A>, ValueReadonly<B>, ValueReadonly<C>, ValueReadonly<D>, ValueReadonly<E>, ValueReadonly<F>, ValueReadonly<G>, ValueReadonly<H>, ValueReadonly<I>, ValueReadonly<J>, ValueReadonly<K>, ValueReadonly<L>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M>(targets: [_S<o, A>, _S<o, B>, _S<o, C>, _S<o, D>, _S<o, E>, _S<o, F>, _S<o, G>, _S<o, H>, _S<o, I>, _S<o, J>, _S<o, K>, _S<o, L>, _S<o, M>]): [ValueReadonly<A>, ValueReadonly<B>, ValueReadonly<C>, ValueReadonly<D>, ValueReadonly<E>, ValueReadonly<F>, ValueReadonly<G>, ValueReadonly<H>, ValueReadonly<I>, ValueReadonly<J>, ValueReadonly<K>, ValueReadonly<L>, ValueReadonly<M>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N>(targets: [_S<o, A>, _S<o, B>, _S<o, C>, _S<o, D>, _S<o, E>, _S<o, F>, _S<o, G>, _S<o, H>, _S<o, I>, _S<o, J>, _S<o, K>, _S<o, L>, _S<o, M>, _S<o, N>]): [ValueReadonly<A>, ValueReadonly<B>, ValueReadonly<C>, ValueReadonly<D>, ValueReadonly<E>, ValueReadonly<F>, ValueReadonly<G>, ValueReadonly<H>, ValueReadonly<I>, ValueReadonly<J>, ValueReadonly<K>, ValueReadonly<L>, ValueReadonly<M>, ValueReadonly<N>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(targets: [_S<o, A>, _S<o, B>, _S<o, C>, _S<o, D>, _S<o, E>, _S<o, F>, _S<o, G>, _S<o, H>, _S<o, I>, _S<o, J>, _S<o, K>, _S<o, L>, _S<o, M>, _S<o, N>, _S<o, O>]): [ValueReadonly<A>, ValueReadonly<B>, ValueReadonly<C>, ValueReadonly<D>, ValueReadonly<E>, ValueReadonly<F>, ValueReadonly<G>, ValueReadonly<H>, ValueReadonly<I>, ValueReadonly<J>, ValueReadonly<K>, ValueReadonly<L>, ValueReadonly<M>, ValueReadonly<N>, ValueReadonly<O>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P>(targets: [_S<o, A>, _S<o, B>, _S<o, C>, _S<o, D>, _S<o, E>, _S<o, F>, _S<o, G>, _S<o, H>, _S<o, I>, _S<o, J>, _S<o, K>, _S<o, L>, _S<o, M>, _S<o, N>, _S<o, O>, _S<o, P>]): [ValueReadonly<A>, ValueReadonly<B>, ValueReadonly<C>, ValueReadonly<D>, ValueReadonly<E>, ValueReadonly<F>, ValueReadonly<G>, ValueReadonly<H>, ValueReadonly<I>, ValueReadonly<J>, ValueReadonly<K>, ValueReadonly<L>, ValueReadonly<M>, ValueReadonly<N>, ValueReadonly<O>, ValueReadonly<P>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q>(targets: [_S<o, A>, _S<o, B>, _S<o, C>, _S<o, D>, _S<o, E>, _S<o, F>, _S<o, G>, _S<o, H>, _S<o, I>, _S<o, J>, _S<o, K>, _S<o, L>, _S<o, M>, _S<o, N>, _S<o, O>, _S<o, P>, _S<o, Q>]): [ValueReadonly<A>, ValueReadonly<B>, ValueReadonly<C>, ValueReadonly<D>, ValueReadonly<E>, ValueReadonly<F>, ValueReadonly<G>, ValueReadonly<H>, ValueReadonly<I>, ValueReadonly<J>, ValueReadonly<K>, ValueReadonly<L>, ValueReadonly<M>, ValueReadonly<N>, ValueReadonly<O>, ValueReadonly<P>, ValueReadonly<Q>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R>(targets: [_S<o, A>, _S<o, B>, _S<o, C>, _S<o, D>, _S<o, E>, _S<o, F>, _S<o, G>, _S<o, H>, _S<o, I>, _S<o, J>, _S<o, K>, _S<o, L>, _S<o, M>, _S<o, N>, _S<o, O>, _S<o, P>, _S<o, Q>, _S<o, R>]): [ValueReadonly<A>, ValueReadonly<B>, ValueReadonly<C>, ValueReadonly<D>, ValueReadonly<E>, ValueReadonly<F>, ValueReadonly<G>, ValueReadonly<H>, ValueReadonly<I>, ValueReadonly<J>, ValueReadonly<K>, ValueReadonly<L>, ValueReadonly<M>, ValueReadonly<N>, ValueReadonly<O>, ValueReadonly<P>, ValueReadonly<Q>, ValueReadonly<R>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S>(targets: [_S<o, A>, _S<o, B>, _S<o, C>, _S<o, D>, _S<o, E>, _S<o, F>, _S<o, G>, _S<o, H>, _S<o, I>, _S<o, J>, _S<o, K>, _S<o, L>, _S<o, M>, _S<o, N>, _S<o, O>, _S<o, P>, _S<o, Q>, _S<o, R>, _S<o, S>]): [ValueReadonly<A>, ValueReadonly<B>, ValueReadonly<C>, ValueReadonly<D>, ValueReadonly<E>, ValueReadonly<F>, ValueReadonly<G>, ValueReadonly<H>, ValueReadonly<I>, ValueReadonly<J>, ValueReadonly<K>, ValueReadonly<L>, ValueReadonly<M>, ValueReadonly<N>, ValueReadonly<O>, ValueReadonly<P>, ValueReadonly<Q>, ValueReadonly<R>, ValueReadonly<S>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T>(targets: [_S<o, A>, _S<o, B>, _S<o, C>, _S<o, D>, _S<o, E>, _S<o, F>, _S<o, G>, _S<o, H>, _S<o, I>, _S<o, J>, _S<o, K>, _S<o, L>, _S<o, M>, _S<o, N>, _S<o, O>, _S<o, P>, _S<o, Q>, _S<o, R>, _S<o, S>, _S<o, T>]): [ValueReadonly<A>, ValueReadonly<B>, ValueReadonly<C>, ValueReadonly<D>, ValueReadonly<E>, ValueReadonly<F>, ValueReadonly<G>, ValueReadonly<H>, ValueReadonly<I>, ValueReadonly<J>, ValueReadonly<K>, ValueReadonly<L>, ValueReadonly<M>, ValueReadonly<N>, ValueReadonly<O>, ValueReadonly<P>, ValueReadonly<Q>, ValueReadonly<R>, ValueReadonly<S>, ValueReadonly<T>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U>(targets: [_S<o, A>, _S<o, B>, _S<o, C>, _S<o, D>, _S<o, E>, _S<o, F>, _S<o, G>, _S<o, H>, _S<o, I>, _S<o, J>, _S<o, K>, _S<o, L>, _S<o, M>, _S<o, N>, _S<o, O>, _S<o, P>, _S<o, Q>, _S<o, R>, _S<o, S>, _S<o, T>, _S<o, U>]): [ValueReadonly<A>, ValueReadonly<B>, ValueReadonly<C>, ValueReadonly<D>, ValueReadonly<E>, ValueReadonly<F>, ValueReadonly<G>, ValueReadonly<H>, ValueReadonly<I>, ValueReadonly<J>, ValueReadonly<K>, ValueReadonly<L>, ValueReadonly<M>, ValueReadonly<N>, ValueReadonly<O>, ValueReadonly<P>, ValueReadonly<Q>, ValueReadonly<R>, ValueReadonly<S>, ValueReadonly<T>, ValueReadonly<U>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V>(targets: [_S<o, A>, _S<o, B>, _S<o, C>, _S<o, D>, _S<o, E>, _S<o, F>, _S<o, G>, _S<o, H>, _S<o, I>, _S<o, J>, _S<o, K>, _S<o, L>, _S<o, M>, _S<o, N>, _S<o, O>, _S<o, P>, _S<o, Q>, _S<o, R>, _S<o, S>, _S<o, T>, _S<o, U>, _S<o, V>]): [ValueReadonly<A>, ValueReadonly<B>, ValueReadonly<C>, ValueReadonly<D>, ValueReadonly<E>, ValueReadonly<F>, ValueReadonly<G>, ValueReadonly<H>, ValueReadonly<I>, ValueReadonly<J>, ValueReadonly<K>, ValueReadonly<L>, ValueReadonly<M>, ValueReadonly<N>, ValueReadonly<O>, ValueReadonly<P>, ValueReadonly<Q>, ValueReadonly<R>, ValueReadonly<S>, ValueReadonly<T>, ValueReadonly<U>, ValueReadonly<V>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W>(targets: [_S<o, A>, _S<o, B>, _S<o, C>, _S<o, D>, _S<o, E>, _S<o, F>, _S<o, G>, _S<o, H>, _S<o, I>, _S<o, J>, _S<o, K>, _S<o, L>, _S<o, M>, _S<o, N>, _S<o, O>, _S<o, P>, _S<o, Q>, _S<o, R>, _S<o, S>, _S<o, T>, _S<o, U>, _S<o, V>, _S<o, W>]): [ValueReadonly<A>, ValueReadonly<B>, ValueReadonly<C>, ValueReadonly<D>, ValueReadonly<E>, ValueReadonly<F>, ValueReadonly<G>, ValueReadonly<H>, ValueReadonly<I>, ValueReadonly<J>, ValueReadonly<K>, ValueReadonly<L>, ValueReadonly<M>, ValueReadonly<N>, ValueReadonly<O>, ValueReadonly<P>, ValueReadonly<Q>, ValueReadonly<R>, ValueReadonly<S>, ValueReadonly<T>, ValueReadonly<U>, ValueReadonly<V>, ValueReadonly<W>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X>(targets: [_S<o, A>, _S<o, B>, _S<o, C>, _S<o, D>, _S<o, E>, _S<o, F>, _S<o, G>, _S<o, H>, _S<o, I>, _S<o, J>, _S<o, K>, _S<o, L>, _S<o, M>, _S<o, N>, _S<o, O>, _S<o, P>, _S<o, Q>, _S<o, R>, _S<o, S>, _S<o, T>, _S<o, U>, _S<o, V>, _S<o, W>, _S<o, X>]): [ValueReadonly<A>, ValueReadonly<B>, ValueReadonly<C>, ValueReadonly<D>, ValueReadonly<E>, ValueReadonly<F>, ValueReadonly<G>, ValueReadonly<H>, ValueReadonly<I>, ValueReadonly<J>, ValueReadonly<K>, ValueReadonly<L>, ValueReadonly<M>, ValueReadonly<N>, ValueReadonly<O>, ValueReadonly<P>, ValueReadonly<Q>, ValueReadonly<R>, ValueReadonly<S>, ValueReadonly<T>, ValueReadonly<U>, ValueReadonly<V>, ValueReadonly<W>, ValueReadonly<X>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y>(targets: [_S<o, A>, _S<o, B>, _S<o, C>, _S<o, D>, _S<o, E>, _S<o, F>, _S<o, G>, _S<o, H>, _S<o, I>, _S<o, J>, _S<o, K>, _S<o, L>, _S<o, M>, _S<o, N>, _S<o, O>, _S<o, P>, _S<o, Q>, _S<o, R>, _S<o, S>, _S<o, T>, _S<o, U>, _S<o, V>, _S<o, W>, _S<o, X>, _S<o, Y>]): [ValueReadonly<A>, ValueReadonly<B>, ValueReadonly<C>, ValueReadonly<D>, ValueReadonly<E>, ValueReadonly<F>, ValueReadonly<G>, ValueReadonly<H>, ValueReadonly<I>, ValueReadonly<J>, ValueReadonly<K>, ValueReadonly<L>, ValueReadonly<M>, ValueReadonly<N>, ValueReadonly<O>, ValueReadonly<P>, ValueReadonly<Q>, ValueReadonly<R>, ValueReadonly<S>, ValueReadonly<T>, ValueReadonly<U>, ValueReadonly<V>, ValueReadonly<W>, ValueReadonly<X>, ValueReadonly<Y>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z>(targets: [_S<o, A>, _S<o, B>, _S<o, C>, _S<o, D>, _S<o, E>, _S<o, F>, _S<o, G>, _S<o, H>, _S<o, I>, _S<o, J>, _S<o, K>, _S<o, L>, _S<o, M>, _S<o, N>, _S<o, O>, _S<o, P>, _S<o, Q>, _S<o, R>, _S<o, S>, _S<o, T>, _S<o, U>, _S<o, V>, _S<o, W>, _S<o, X>, _S<o, Y>, _S<o, Z>]): [ValueReadonly<A>, ValueReadonly<B>, ValueReadonly<C>, ValueReadonly<D>, ValueReadonly<E>, ValueReadonly<F>, ValueReadonly<G>, ValueReadonly<H>, ValueReadonly<I>, ValueReadonly<J>, ValueReadonly<K>, ValueReadonly<L>, ValueReadonly<M>, ValueReadonly<N>, ValueReadonly<O>, ValueReadonly<P>, ValueReadonly<Q>, ValueReadonly<R>, ValueReadonly<S>, ValueReadonly<T>, ValueReadonly<U>, ValueReadonly<V>, ValueReadonly<W>, ValueReadonly<X>, ValueReadonly<Y>, ValueReadonly<Z>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, $>(targets: [_S<o, A>, _S<o, B>, _S<o, C>, _S<o, D>, _S<o, E>, _S<o, F>, _S<o, G>, _S<o, H>, _S<o, I>, _S<o, J>, _S<o, K>, _S<o, L>, _S<o, M>, _S<o, N>, _S<o, O>, _S<o, P>, _S<o, Q>, _S<o, R>, _S<o, S>, _S<o, T>, _S<o, U>, _S<o, V>, _S<o, W>, _S<o, X>, _S<o, Y>, _S<o, Z>, _S<o, $>]): [ValueReadonly<A>, ValueReadonly<B>, ValueReadonly<C>, ValueReadonly<D>, ValueReadonly<E>, ValueReadonly<F>, ValueReadonly<G>, ValueReadonly<H>, ValueReadonly<I>, ValueReadonly<J>, ValueReadonly<K>, ValueReadonly<L>, ValueReadonly<M>, ValueReadonly<N>, ValueReadonly<O>, ValueReadonly<P>, ValueReadonly<Q>, ValueReadonly<R>, ValueReadonly<S>, ValueReadonly<T>, ValueReadonly<U>, ValueReadonly<V>, ValueReadonly<W>, ValueReadonly<X>, ValueReadonly<Y>, ValueReadonly<Z>, ValueReadonly<$>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, $, _>(targets: [_S<o, A>, _S<o, B>, _S<o, C>, _S<o, D>, _S<o, E>, _S<o, F>, _S<o, G>, _S<o, H>, _S<o, I>, _S<o, J>, _S<o, K>, _S<o, L>, _S<o, M>, _S<o, N>, _S<o, O>, _S<o, P>, _S<o, Q>, _S<o, R>, _S<o, S>, _S<o, T>, _S<o, U>, _S<o, V>, _S<o, W>, _S<o, X>, _S<o, Y>, _S<o, Z>, _S<o, $>, _S<o, _>]): [ValueReadonly<A>, ValueReadonly<B>, ValueReadonly<C>, ValueReadonly<D>, ValueReadonly<E>, ValueReadonly<F>, ValueReadonly<G>, ValueReadonly<H>, ValueReadonly<I>, ValueReadonly<J>, ValueReadonly<K>, ValueReadonly<L>, ValueReadonly<M>, ValueReadonly<N>, ValueReadonly<O>, ValueReadonly<P>, ValueReadonly<Q>, ValueReadonly<R>, ValueReadonly<S>, ValueReadonly<T>, ValueReadonly<U>, ValueReadonly<V>, ValueReadonly<W>, ValueReadonly<X>, ValueReadonly<Y>, ValueReadonly<Z>, ValueReadonly<$>, ValueReadonly<_>]; | ||
<T extends E_SelectMultiple_CfgExemplar<o>>(targets: T): { | ||
[P in keyof T]: T[P] extends ((state: o) => infer U) ? ValueReadonly<U> : never; | ||
}; | ||
} | ||
interface E_SelectPartial<O> { | ||
select: { | ||
<R>(func?: (value: O) => R): Selector<R>; | ||
untrack<R>(func?: (value: O) => R): Selector<R>; | ||
multiple: { | ||
(cfg: any[]): any; | ||
untrack(cfg: any[]): any; | ||
<R>(func?: (value: O) => R): ValueReadonly<R>; | ||
untrack<R>(func?: (value: O) => R): ValueReadonly<R>; | ||
multiple: E_SelectMultiple_Func<O> & { | ||
untrack: E_SelectMultiple_Func<O>; | ||
}; | ||
}; | ||
map: { | ||
<R>(func: (value: O) => R): Value<I, R>; | ||
untrack<R>(func: (value: O) => R): Value<I, R>; | ||
} | ||
declare type E_UpdaterMultiple_CfgExemplar<I, O> = { | ||
[key: string]: (state: O, upValue: never, upPrev: never) => I; | ||
}; | ||
declare type _US<T> = Equals<T, unknown> extends true ? Signal : Signal<T, Will<T>>; | ||
declare type _U<I, O, U> = ((state: O, upValue: U, upPrev: U) => I) | (() => I); | ||
interface E_UpdaterMultiplePartial<i, o> { | ||
multiple: { | ||
<A>(targets: [_U<i, o, A>]): [_US<A>]; | ||
<A, B>(targets: [_U<i, o, A>, _U<i, o, B>]): [_US<A>, _US<B>]; | ||
<A, B, C>(targets: [_U<i, o, A>, _U<i, o, B>, _U<i, o, C>]): [_US<A>, _US<B>, _US<C>]; | ||
<A, B, C, D>(targets: [_U<i, o, A>, _U<i, o, B>, _U<i, o, C>, _U<i, o, D>]): [_US<A>, _US<B>, _US<C>, _US<D>]; | ||
<A, B, C, D, E>(targets: [_U<i, o, A>, _U<i, o, B>, _U<i, o, C>, _U<i, o, D>, _U<i, o, E>]): [_US<A>, _US<B>, _US<C>, _US<D>, _US<E>]; | ||
<A, B, C, D, E, F>(targets: [_U<i, o, A>, _U<i, o, B>, _U<i, o, C>, _U<i, o, D>, _U<i, o, E>, _U<i, o, F>]): [_US<A>, _US<B>, _US<C>, _US<D>, _US<E>, _US<F>]; | ||
<A, B, C, D, E, F, G>(targets: [_U<i, o, A>, _U<i, o, B>, _U<i, o, C>, _U<i, o, D>, _U<i, o, E>, _U<i, o, F>, _U<i, o, G>]): [_US<A>, _US<B>, _US<C>, _US<D>, _US<E>, _US<F>, _US<G>]; | ||
<A, B, C, D, E, F, G, H>(targets: [_U<i, o, A>, _U<i, o, B>, _U<i, o, C>, _U<i, o, D>, _U<i, o, E>, _U<i, o, F>, _U<i, o, G>, _U<i, o, H>]): [_US<A>, _US<B>, _US<C>, _US<D>, _US<E>, _US<F>, _US<G>, _US<H>]; | ||
<A, B, C, D, E, F, G, H, I>(targets: [_U<i, o, A>, _U<i, o, B>, _U<i, o, C>, _U<i, o, D>, _U<i, o, E>, _U<i, o, F>, _U<i, o, G>, _U<i, o, H>, _U<i, o, I>]): [_US<A>, _US<B>, _US<C>, _US<D>, _US<E>, _US<F>, _US<G>, _US<H>, _US<I>]; | ||
<A, B, C, D, E, F, G, H, I, J>(targets: [_U<i, o, A>, _U<i, o, B>, _U<i, o, C>, _U<i, o, D>, _U<i, o, E>, _U<i, o, F>, _U<i, o, G>, _U<i, o, H>, _U<i, o, I>, _U<i, o, J>]): [_US<A>, _US<B>, _US<C>, _US<D>, _US<E>, _US<F>, _US<G>, _US<H>, _US<I>, _US<J>]; | ||
<A, B, C, D, E, F, G, H, I, J, K>(targets: [_U<i, o, A>, _U<i, o, B>, _U<i, o, C>, _U<i, o, D>, _U<i, o, E>, _U<i, o, F>, _U<i, o, G>, _U<i, o, H>, _U<i, o, I>, _U<i, o, J>, _U<i, o, K>]): [_US<A>, _US<B>, _US<C>, _US<D>, _US<E>, _US<F>, _US<G>, _US<H>, _US<I>, _US<J>, _US<K>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L>(targets: [_U<i, o, A>, _U<i, o, B>, _U<i, o, C>, _U<i, o, D>, _U<i, o, E>, _U<i, o, F>, _U<i, o, G>, _U<i, o, H>, _U<i, o, I>, _U<i, o, J>, _U<i, o, K>, _U<i, o, L>]): [_US<A>, _US<B>, _US<C>, _US<D>, _US<E>, _US<F>, _US<G>, _US<H>, _US<I>, _US<J>, _US<K>, _US<L>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M>(targets: [_U<i, o, A>, _U<i, o, B>, _U<i, o, C>, _U<i, o, D>, _U<i, o, E>, _U<i, o, F>, _U<i, o, G>, _U<i, o, H>, _U<i, o, I>, _U<i, o, J>, _U<i, o, K>, _U<i, o, L>, _U<i, o, M>]): [_US<A>, _US<B>, _US<C>, _US<D>, _US<E>, _US<F>, _US<G>, _US<H>, _US<I>, _US<J>, _US<K>, _US<L>, _US<M>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N>(targets: [_U<i, o, A>, _U<i, o, B>, _U<i, o, C>, _U<i, o, D>, _U<i, o, E>, _U<i, o, F>, _U<i, o, G>, _U<i, o, H>, _U<i, o, I>, _U<i, o, J>, _U<i, o, K>, _U<i, o, L>, _U<i, o, M>, _U<i, o, N>]): [_US<A>, _US<B>, _US<C>, _US<D>, _US<E>, _US<F>, _US<G>, _US<H>, _US<I>, _US<J>, _US<K>, _US<L>, _US<M>, _US<N>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(targets: [_U<i, o, A>, _U<i, o, B>, _U<i, o, C>, _U<i, o, D>, _U<i, o, E>, _U<i, o, F>, _U<i, o, G>, _U<i, o, H>, _U<i, o, I>, _U<i, o, J>, _U<i, o, K>, _U<i, o, L>, _U<i, o, M>, _U<i, o, N>, _U<i, o, O>]): [_US<A>, _US<B>, _US<C>, _US<D>, _US<E>, _US<F>, _US<G>, _US<H>, _US<I>, _US<J>, _US<K>, _US<L>, _US<M>, _US<N>, _US<O>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P>(targets: [_U<i, o, A>, _U<i, o, B>, _U<i, o, C>, _U<i, o, D>, _U<i, o, E>, _U<i, o, F>, _U<i, o, G>, _U<i, o, H>, _U<i, o, I>, _U<i, o, J>, _U<i, o, K>, _U<i, o, L>, _U<i, o, M>, _U<i, o, N>, _U<i, o, O>, _U<i, o, P>]): [_US<A>, _US<B>, _US<C>, _US<D>, _US<E>, _US<F>, _US<G>, _US<H>, _US<I>, _US<J>, _US<K>, _US<L>, _US<M>, _US<N>, _US<O>, _US<P>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q>(targets: [_U<i, o, A>, _U<i, o, B>, _U<i, o, C>, _U<i, o, D>, _U<i, o, E>, _U<i, o, F>, _U<i, o, G>, _U<i, o, H>, _U<i, o, I>, _U<i, o, J>, _U<i, o, K>, _U<i, o, L>, _U<i, o, M>, _U<i, o, N>, _U<i, o, O>, _U<i, o, P>, _U<i, o, Q>]): [_US<A>, _US<B>, _US<C>, _US<D>, _US<E>, _US<F>, _US<G>, _US<H>, _US<I>, _US<J>, _US<K>, _US<L>, _US<M>, _US<N>, _US<O>, _US<P>, _US<Q>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R>(targets: [_U<i, o, A>, _U<i, o, B>, _U<i, o, C>, _U<i, o, D>, _U<i, o, E>, _U<i, o, F>, _U<i, o, G>, _U<i, o, H>, _U<i, o, I>, _U<i, o, J>, _U<i, o, K>, _U<i, o, L>, _U<i, o, M>, _U<i, o, N>, _U<i, o, O>, _U<i, o, P>, _U<i, o, Q>, _U<i, o, R>]): [_US<A>, _US<B>, _US<C>, _US<D>, _US<E>, _US<F>, _US<G>, _US<H>, _US<I>, _US<J>, _US<K>, _US<L>, _US<M>, _US<N>, _US<O>, _US<P>, _US<Q>, _US<R>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S>(targets: [_U<i, o, A>, _U<i, o, B>, _U<i, o, C>, _U<i, o, D>, _U<i, o, E>, _U<i, o, F>, _U<i, o, G>, _U<i, o, H>, _U<i, o, I>, _U<i, o, J>, _U<i, o, K>, _U<i, o, L>, _U<i, o, M>, _U<i, o, N>, _U<i, o, O>, _U<i, o, P>, _U<i, o, Q>, _U<i, o, R>, _U<i, o, S>]): [_US<A>, _US<B>, _US<C>, _US<D>, _US<E>, _US<F>, _US<G>, _US<H>, _US<I>, _US<J>, _US<K>, _US<L>, _US<M>, _US<N>, _US<O>, _US<P>, _US<Q>, _US<R>, _US<S>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T>(targets: [_U<i, o, A>, _U<i, o, B>, _U<i, o, C>, _U<i, o, D>, _U<i, o, E>, _U<i, o, F>, _U<i, o, G>, _U<i, o, H>, _U<i, o, I>, _U<i, o, J>, _U<i, o, K>, _U<i, o, L>, _U<i, o, M>, _U<i, o, N>, _U<i, o, O>, _U<i, o, P>, _U<i, o, Q>, _U<i, o, R>, _U<i, o, S>, _U<i, o, T>]): [_US<A>, _US<B>, _US<C>, _US<D>, _US<E>, _US<F>, _US<G>, _US<H>, _US<I>, _US<J>, _US<K>, _US<L>, _US<M>, _US<N>, _US<O>, _US<P>, _US<Q>, _US<R>, _US<S>, _US<T>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U>(targets: [_U<i, o, A>, _U<i, o, B>, _U<i, o, C>, _U<i, o, D>, _U<i, o, E>, _U<i, o, F>, _U<i, o, G>, _U<i, o, H>, _U<i, o, I>, _U<i, o, J>, _U<i, o, K>, _U<i, o, L>, _U<i, o, M>, _U<i, o, N>, _U<i, o, O>, _U<i, o, P>, _U<i, o, Q>, _U<i, o, R>, _U<i, o, S>, _U<i, o, T>, _U<i, o, U>]): [_US<A>, _US<B>, _US<C>, _US<D>, _US<E>, _US<F>, _US<G>, _US<H>, _US<I>, _US<J>, _US<K>, _US<L>, _US<M>, _US<N>, _US<O>, _US<P>, _US<Q>, _US<R>, _US<S>, _US<T>, _US<U>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V>(targets: [_U<i, o, A>, _U<i, o, B>, _U<i, o, C>, _U<i, o, D>, _U<i, o, E>, _U<i, o, F>, _U<i, o, G>, _U<i, o, H>, _U<i, o, I>, _U<i, o, J>, _U<i, o, K>, _U<i, o, L>, _U<i, o, M>, _U<i, o, N>, _U<i, o, O>, _U<i, o, P>, _U<i, o, Q>, _U<i, o, R>, _U<i, o, S>, _U<i, o, T>, _U<i, o, U>, _U<i, o, V>]): [_US<A>, _US<B>, _US<C>, _US<D>, _US<E>, _US<F>, _US<G>, _US<H>, _US<I>, _US<J>, _US<K>, _US<L>, _US<M>, _US<N>, _US<O>, _US<P>, _US<Q>, _US<R>, _US<S>, _US<T>, _US<U>, _US<V>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W>(targets: [_U<i, o, A>, _U<i, o, B>, _U<i, o, C>, _U<i, o, D>, _U<i, o, E>, _U<i, o, F>, _U<i, o, G>, _U<i, o, H>, _U<i, o, I>, _U<i, o, J>, _U<i, o, K>, _U<i, o, L>, _U<i, o, M>, _U<i, o, N>, _U<i, o, O>, _U<i, o, P>, _U<i, o, Q>, _U<i, o, R>, _U<i, o, S>, _U<i, o, T>, _U<i, o, U>, _U<i, o, V>, _U<i, o, W>]): [_US<A>, _US<B>, _US<C>, _US<D>, _US<E>, _US<F>, _US<G>, _US<H>, _US<I>, _US<J>, _US<K>, _US<L>, _US<M>, _US<N>, _US<O>, _US<P>, _US<Q>, _US<R>, _US<S>, _US<T>, _US<U>, _US<V>, _US<W>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X>(targets: [_U<i, o, A>, _U<i, o, B>, _U<i, o, C>, _U<i, o, D>, _U<i, o, E>, _U<i, o, F>, _U<i, o, G>, _U<i, o, H>, _U<i, o, I>, _U<i, o, J>, _U<i, o, K>, _U<i, o, L>, _U<i, o, M>, _U<i, o, N>, _U<i, o, O>, _U<i, o, P>, _U<i, o, Q>, _U<i, o, R>, _U<i, o, S>, _U<i, o, T>, _U<i, o, U>, _U<i, o, V>, _U<i, o, W>, _U<i, o, X>]): [_US<A>, _US<B>, _US<C>, _US<D>, _US<E>, _US<F>, _US<G>, _US<H>, _US<I>, _US<J>, _US<K>, _US<L>, _US<M>, _US<N>, _US<O>, _US<P>, _US<Q>, _US<R>, _US<S>, _US<T>, _US<U>, _US<V>, _US<W>, _US<X>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y>(targets: [_U<i, o, A>, _U<i, o, B>, _U<i, o, C>, _U<i, o, D>, _U<i, o, E>, _U<i, o, F>, _U<i, o, G>, _U<i, o, H>, _U<i, o, I>, _U<i, o, J>, _U<i, o, K>, _U<i, o, L>, _U<i, o, M>, _U<i, o, N>, _U<i, o, O>, _U<i, o, P>, _U<i, o, Q>, _U<i, o, R>, _U<i, o, S>, _U<i, o, T>, _U<i, o, U>, _U<i, o, V>, _U<i, o, W>, _U<i, o, X>, _U<i, o, Y>]): [_US<A>, _US<B>, _US<C>, _US<D>, _US<E>, _US<F>, _US<G>, _US<H>, _US<I>, _US<J>, _US<K>, _US<L>, _US<M>, _US<N>, _US<O>, _US<P>, _US<Q>, _US<R>, _US<S>, _US<T>, _US<U>, _US<V>, _US<W>, _US<X>, _US<Y>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z>(targets: [_U<i, o, A>, _U<i, o, B>, _U<i, o, C>, _U<i, o, D>, _U<i, o, E>, _U<i, o, F>, _U<i, o, G>, _U<i, o, H>, _U<i, o, I>, _U<i, o, J>, _U<i, o, K>, _U<i, o, L>, _U<i, o, M>, _U<i, o, N>, _U<i, o, O>, _U<i, o, P>, _U<i, o, Q>, _U<i, o, R>, _U<i, o, S>, _U<i, o, T>, _U<i, o, U>, _U<i, o, V>, _U<i, o, W>, _U<i, o, X>, _U<i, o, Y>, _U<i, o, Z>]): [_US<A>, _US<B>, _US<C>, _US<D>, _US<E>, _US<F>, _US<G>, _US<H>, _US<I>, _US<J>, _US<K>, _US<L>, _US<M>, _US<N>, _US<O>, _US<P>, _US<Q>, _US<R>, _US<S>, _US<T>, _US<U>, _US<V>, _US<W>, _US<X>, _US<Y>, _US<Z>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, $>(targets: [_U<i, o, A>, _U<i, o, B>, _U<i, o, C>, _U<i, o, D>, _U<i, o, E>, _U<i, o, F>, _U<i, o, G>, _U<i, o, H>, _U<i, o, I>, _U<i, o, J>, _U<i, o, K>, _U<i, o, L>, _U<i, o, M>, _U<i, o, N>, _U<i, o, O>, _U<i, o, P>, _U<i, o, Q>, _U<i, o, R>, _U<i, o, S>, _U<i, o, T>, _U<i, o, U>, _U<i, o, V>, _U<i, o, W>, _U<i, o, X>, _U<i, o, Y>, _U<i, o, Z>, _U<i, o, $>]): [_US<A>, _US<B>, _US<C>, _US<D>, _US<E>, _US<F>, _US<G>, _US<H>, _US<I>, _US<J>, _US<K>, _US<L>, _US<M>, _US<N>, _US<O>, _US<P>, _US<Q>, _US<R>, _US<S>, _US<T>, _US<U>, _US<V>, _US<W>, _US<X>, _US<Y>, _US<Z>, _US<$>]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, $, _>(targets: [_U<i, o, A>, _U<i, o, B>, _U<i, o, C>, _U<i, o, D>, _U<i, o, E>, _U<i, o, F>, _U<i, o, G>, _U<i, o, H>, _U<i, o, I>, _U<i, o, J>, _U<i, o, K>, _U<i, o, L>, _U<i, o, M>, _U<i, o, N>, _U<i, o, O>, _U<i, o, P>, _U<i, o, Q>, _U<i, o, R>, _U<i, o, S>, _U<i, o, T>, _U<i, o, U>, _U<i, o, V>, _U<i, o, W>, _U<i, o, X>, _U<i, o, Y>, _U<i, o, Z>, _U<i, o, $>, _U<i, o, _>]): [_US<A>, _US<B>, _US<C>, _US<D>, _US<E>, _US<F>, _US<G>, _US<H>, _US<I>, _US<J>, _US<K>, _US<L>, _US<M>, _US<N>, _US<O>, _US<P>, _US<Q>, _US<R>, _US<S>, _US<T>, _US<U>, _US<V>, _US<W>, _US<X>, _US<Y>, _US<Z>, _US<$>, _US<_>]; | ||
<T extends E_UpdaterMultiple_CfgExemplar<i, o>>(targets: T): { | ||
[P in keyof T]: T[P] extends ((state: o, upValue: infer U) => i) ? _US<U> : never; | ||
}; | ||
}; | ||
flow: any; | ||
join: any; | ||
promise: Promise<O>; | ||
} | ||
interface E_UpdaterPartial<I, O> { | ||
updater: E_UpdaterMultiplePartial<I, O> & { | ||
<U>(func?: (state: O, upValue: U, upPrev: U) => I): Equals<U, unknown> extends true ? Signal : Signal<U, Will<U>>; | ||
}; | ||
} | ||
interface E_UpdatePartial<I, O> { | ||
update: { | ||
@@ -53,4 +169,6 @@ (func?: (value: O) => I): void; | ||
by: { | ||
<T>(re: Re<Will<T>>, updater?: (state: O, reValue: T, rePrev: WillExpand<Will<T>>) => I): any; | ||
<T>(re: Re<T>, updater?: (state: O, reValue: T, rePrev: T) => I): any; | ||
once: { | ||
<T>(re: Re<Will<T>>, updater?: (state: O, reValue: T, rePrev: WillExpand<Will<T>>) => I): any; | ||
<T>(re: Re<T>, updater?: (state: O, reValue: T, rePrev: T) => I): any; | ||
@@ -60,90 +178,107 @@ }; | ||
}; | ||
pre: { | ||
<N>(func?: (value: N) => I): Value<N, O>; | ||
untrack<N>(func?: (value: N) => I): Value<N, O>; | ||
filter: { | ||
(func?: (value: O) => any): Value<I, O>; | ||
untrack(func?: (value: O) => any): Value<I, O>; | ||
not: { | ||
(func?: (value: O) => any): Value<I, O>; | ||
untrack(func?: (value: O) => any): Value<I, O>; | ||
}; | ||
} | ||
interface E_FilterTrackedPartial<O, Ret, WillRet> { | ||
filter: { | ||
(func: (value: WillExpand<O>) => any, emptyValue: WillExtract<O>): Ret; | ||
(func?: (value: WillExpand<O>) => any): WillRet; | ||
untrack(func: (value: WillExpand<O>) => any, emptyValue: WillExtract<O>): Ret; | ||
untrack(func?: (value: WillExpand<O>) => any): WillRet; | ||
not: { | ||
(func: (value: WillExpand<O>) => any, emptyValue: WillExtract<O>): Ret; | ||
(func?: (value: WillExpand<O>) => any): WillRet; | ||
untrack(func: (value: WillExpand<O>) => any, emptyValue: WillExtract<O>): Ret; | ||
untrack(func?: (value: WillExpand<O>) => any): WillRet; | ||
}; | ||
}; | ||
} | ||
interface E_Signal<I, O> extends E_GetPartial<O>, E_SyncToPartial<O, Signal<I, O>>, E_UpdaterPartial<I, O> { | ||
op<R>(func: () => R): R extends void ? Signal<I, O> : R; | ||
interface E_FilterUnTrackedPartial<O, Ret, WillRet> { | ||
filter: { | ||
(func?: (value: O) => any): Signal<I, O>; | ||
track(func?: (value: O) => any): Signal<I, O>; | ||
(func: (value: WillExpand<O>) => any, emptyValue: WillExtract<O>): Ret; | ||
(func?: (value: WillExpand<O>) => any): WillRet; | ||
track(func: (value: WillExpand<O>) => any, emptyValue: WillExtract<O>): Ret; | ||
track(func?: (value: WillExpand<O>) => any): WillRet; | ||
not: { | ||
(func?: (value: O) => any): Signal<I, O>; | ||
track(func?: (value: O) => any): Signal<I, O>; | ||
(func: (value: WillExpand<O>) => any, emptyValue: WillExtract<O>): Ret; | ||
(func?: (value: WillExpand<O>) => any): WillRet; | ||
track(func: (value: WillExpand<O>) => any, emptyValue: WillExtract<O>): Ret; | ||
track(func?: (value: WillExpand<O>) => any): WillRet; | ||
}; | ||
}; | ||
select: { | ||
<R>(func?: (value: O) => R): Selector<R>; | ||
untrack<R>(func?: (value: O) => R): Selector<R>; | ||
multiple: { | ||
(cfg: any[]): any; | ||
untrack(cfg: any[]): any; | ||
}; | ||
} | ||
interface E_Readable<O, Ret> extends E_GetPartial<O>, E_PromisePartial<O>, E_SyncToPartial<O, Ret>, E_OpPartial<Ret>, E_SelectPartial<WillExpand<O>> { | ||
} | ||
interface E_Writtable<I, O, Ret> extends E_Readable<O, Ret>, E_UpdatePartial<I, WillExpand<O>>, E_UpdaterPartial<I, WillExpand<O>> { | ||
} | ||
interface E_Value<I, O> extends E_Writtable<I, O, Value<I, O>>, E_FilterTrackedPartial<O, Value<I, WillExtract<O>>, Value<I, WillEnsure<O>>> { | ||
map: { | ||
<R>(func: (value: WillExpand<O>) => R): Value<I, R>; | ||
untrack<R>(func: (value: WillExpand<O>) => R): Value<I, R>; | ||
to(): Value<I, void>; | ||
to<R>(value: R): Value<I, R>; | ||
}; | ||
pre: E_FilterTrackedPartial<I, Value<I, O>, Value<I, WillEnsure<O>>> & { | ||
<N>(func?: (value: N, state: WillExpand<O>) => I): Value<N, O>; | ||
untrack<N>(func?: (value: N, state: WillExpand<O>) => I): Value<N, O>; | ||
}; | ||
wrap: { | ||
<N, R>(pre: (value: N, state: WillExpand<O>) => I, map: (value: WillExpand<O>) => R): Value<N, R>; | ||
untrack<N, R>(pre: (value: N, state: WillExpand<O>) => I, map: (value: WillExpand<O>) => R): Value<N, R>; | ||
}; | ||
} | ||
interface E_ValueReadonly<O> extends E_Readable<O, ValueReadonly<O>>, E_FilterTrackedPartial<O, ValueReadonly<WillExtract<O>>, ValueReadonly<WillEnsure<O>>> { | ||
map: { | ||
<R>(func: (value: O) => R): Signal<I, R>; | ||
track<R>(func: (value: O) => R): Signal<I, R>; | ||
<R>(func: (value: WillExpand<O>) => R): ValueReadonly<R>; | ||
untrack<R>(func: (value: WillExpand<O>) => R): ValueReadonly<R>; | ||
to(): ValueReadonly<void>; | ||
to<R>(value: R): ValueReadonly<R>; | ||
}; | ||
flow: any; | ||
join: any; | ||
promise: Promise<O>; | ||
update: { | ||
(func?: (value: O) => I): void; | ||
track(func?: (value: O) => I): void; | ||
by: { | ||
<T>(re: Re<T>, updater?: (state: O, reValue: T, rePrev: T) => I): any; | ||
once: { | ||
<T>(re: Re<T>, updater?: (state: O, reValue: T, rePrev: T) => I): any; | ||
}; | ||
}; | ||
} | ||
interface E_Signal<I, O> extends E_Writtable<I, O, Signal<I, O>>, E_FilterUnTrackedPartial<O, Signal<I, WillExtract<O>>, Signal<I, WillEnsure<O>>> { | ||
map: { | ||
<R>(func: (value: WillExpand<O>) => R): Signal<I, R>; | ||
track<R>(func: (value: WillExpand<O>) => R): Signal<I, R>; | ||
to(): Signal<I, void>; | ||
to<R>(value: R): Signal<I, R>; | ||
}; | ||
pre: { | ||
<N>(func?: (value: N) => I): Signal<N, O>; | ||
track<N>(func?: (value: N) => I): Signal<N, O>; | ||
filter: { | ||
(func?: (value: O) => any): Signal<I, O>; | ||
track(func?: (value: O) => any): Signal<I, O>; | ||
not: { | ||
(func?: (value: O) => any): Signal<I, O>; | ||
track(func?: (value: O) => any): Signal<I, O>; | ||
}; | ||
}; | ||
pre: E_FilterUnTrackedPartial<I, Signal<I, O>, Signal<I, WillEnsure<O>>> & { | ||
<N>(func?: (value: N, state: WillExpand<O>) => I): Signal<N, O>; | ||
track<N>(func?: (value: N, state: WillExpand<O>) => I): Signal<N, O>; | ||
}; | ||
wrap: { | ||
<N, R>(pre: (value: N, state: WillExpand<O>) => I, map: (value: WillExpand<O>) => R): Signal<N, R>; | ||
track<N, R>(pre: (value: N, state: WillExpand<O>) => I, map: (value: WillExpand<O>) => R): Signal<N, R>; | ||
}; | ||
as: { | ||
value(): Value<I, O>; | ||
}; | ||
} | ||
declare type E_SetPartial<T> = Equals<T, void> extends true ? { | ||
(): void; | ||
set(): void; | ||
} : { | ||
(value: T): void; | ||
set(value: T): void; | ||
}; | ||
declare type E_ValPartial<I, O> = Equals<I, O> extends true ? { | ||
val: O; | ||
} : { | ||
readonly val: O; | ||
}; | ||
declare type Value<I = void, O = I> = E_SetPartial<I> & E_ValPartial<I, O> & E_Value<I, O>; | ||
declare type Signal<I = void, O = I> = E_SetPartial<I> & E_ValPartial<I, O> & E_Signal<I, O>; | ||
declare type Selector<O> = { | ||
get: () => O; | ||
val: O; | ||
select: any; | ||
}; | ||
interface E_SignalReadonly<O> extends E_Readable<O, SignalReadonly<O>>, E_FilterUnTrackedPartial<O, SignalReadonly<WillExtract<O>>, SignalReadonly<WillEnsure<O>>> { | ||
map: { | ||
<R>(func: (value: WillExpand<O>) => R): SignalReadonly<R>; | ||
track<R>(func: (value: WillExpand<O>) => R): SignalReadonly<R>; | ||
to(): SignalReadonly<void>; | ||
to<R>(value: R): SignalReadonly<R>; | ||
}; | ||
as: { | ||
value(): ValueReadonly<O>; | ||
}; | ||
} | ||
declare type Value<I = void, 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 ValueReadonly<O> = E_ValReadonlyPartial<WillExpand<O>> & E_ValueReadonly<O>; | ||
declare type SignalReadonly<O> = E_ValReadonlyPartial<WillExpand<O>> & E_SignalReadonly<O>; | ||
declare type ValueEntry = { | ||
<T>(initial?: T): Value<T>; | ||
(): Value; | ||
<T>(): Value<T, Will<T>>; | ||
<T>(initial: T): Value<T>; | ||
trigger: { | ||
(initial?: any): any; | ||
(): Value; | ||
<T>(): Value<T, Will<T>>; | ||
<T>(initial: T): Value<T>; | ||
flag: { | ||
(initial?: any): any; | ||
(): Value<boolean>; | ||
(initial: boolean): Value<boolean>; | ||
invert: { | ||
(initial?: any): any; | ||
(): Value<boolean>; | ||
(initial: boolean): Value<boolean>; | ||
}; | ||
@@ -153,19 +288,88 @@ }; | ||
from: { | ||
(get: () => any, set?: (v: any) => any): any; | ||
<O>(get: Re<O>): ValueReadonly<O>; | ||
<O, I>(get: Re<O>, set: ((value: I, state: O) => void) | ReWrit<I>): Value<I, O>; | ||
}; | ||
combine: { | ||
(cfg: any): any; | ||
<A, r>(targets: [Re<A>], fn: (values: [A]) => r): ValueReadonly<r>; | ||
<A, B, r>(targets: [Re<A>, Re<B>], fn: (values: [A, B]) => r): ValueReadonly<r>; | ||
<A, B, C, r>(targets: [Re<A>, Re<B>, Re<C>], fn: (values: [A, B, C]) => r): ValueReadonly<r>; | ||
<A, B, C, D, r>(targets: [Re<A>, Re<B>, Re<C>, Re<D>], fn: (values: [A, B, C, D]) => r): ValueReadonly<r>; | ||
<A, B, C, D, E, r>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>], fn: (values: [A, B, C, D, E]) => r): ValueReadonly<r>; | ||
<A, B, C, D, E, F, r>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>], fn: (values: [A, B, C, D, E, F]) => r): ValueReadonly<r>; | ||
<A, B, C, D, E, F, G, r>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>], fn: (values: [A, B, C, D, E, F, G]) => r): ValueReadonly<r>; | ||
<A, B, C, D, E, F, G, H, r>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>], fn: (values: [A, B, C, D, E, F, G, H]) => r): ValueReadonly<r>; | ||
<A, B, C, D, E, F, G, H, I, r>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>], fn: (values: [A, B, C, D, E, F, G, H, I]) => r): ValueReadonly<r>; | ||
<A, B, C, D, E, F, G, H, I, J, r>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>], fn: (values: [A, B, C, D, E, F, G, H, I, J]) => r): ValueReadonly<r>; | ||
<A, B, C, D, E, F, G, H, I, J, K, r>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>], fn: (values: [A, B, C, D, E, F, G, H, I, J, K]) => r): ValueReadonly<r>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, r>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>], fn: (values: [A, B, C, D, E, F, G, H, I, J, K, L]) => r): ValueReadonly<r>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, r>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>], fn: (values: [A, B, C, D, E, F, G, H, I, J, K, L, M]) => r): ValueReadonly<r>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, r>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>, Re<N>], fn: (values: [A, B, C, D, E, F, G, H, I, J, K, L, M, N]) => r): ValueReadonly<r>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, r>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>, Re<N>, Re<O>], fn: (values: [A, B, C, D, E, F, G, H, I, J, K, L, M, N, O]) => r): ValueReadonly<r>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, r>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>, Re<N>, Re<O>, Re<P>], fn: (values: [A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P]) => r): ValueReadonly<r>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, r>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>, Re<N>, Re<O>, Re<P>, Re<Q>], fn: (values: [A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q]) => r): ValueReadonly<r>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, r>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>, Re<N>, Re<O>, Re<P>, Re<Q>, Re<R>], fn: (values: [A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R]) => r): ValueReadonly<r>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, r>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>, Re<N>, Re<O>, Re<P>, Re<Q>, Re<R>, Re<S>], fn: (values: [A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S]) => r): ValueReadonly<r>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, r>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>, Re<N>, Re<O>, Re<P>, Re<Q>, Re<R>, Re<S>, Re<T>], fn: (values: [A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T]) => r): ValueReadonly<r>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, r>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>, Re<N>, Re<O>, Re<P>, Re<Q>, Re<R>, Re<S>, Re<T>, Re<U>], fn: (values: [A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U]) => r): ValueReadonly<r>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, r>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>, Re<N>, Re<O>, Re<P>, Re<Q>, Re<R>, Re<S>, Re<T>, Re<U>, Re<V>], fn: (values: [A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V]) => r): ValueReadonly<r>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, r>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>, Re<N>, Re<O>, Re<P>, Re<Q>, Re<R>, Re<S>, Re<T>, Re<U>, Re<V>, Re<W>], fn: (values: [A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W]) => r): ValueReadonly<r>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, r>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>, Re<N>, Re<O>, Re<P>, Re<Q>, Re<R>, Re<S>, Re<T>, Re<U>, Re<V>, Re<W>, Re<X>], fn: (values: [A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X]) => r): ValueReadonly<r>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, r>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>, Re<N>, Re<O>, Re<P>, Re<Q>, Re<R>, Re<S>, Re<T>, Re<U>, Re<V>, Re<W>, Re<X>, Re<Y>], fn: (values: [A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y]) => r): ValueReadonly<r>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, r>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>, Re<N>, Re<O>, Re<P>, Re<Q>, Re<R>, Re<S>, Re<T>, Re<U>, Re<V>, Re<W>, Re<X>, Re<Y>, Re<Z>], fn: (values: [A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z]) => r): ValueReadonly<r>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, $, r>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>, Re<N>, Re<O>, Re<P>, Re<Q>, Re<R>, Re<S>, Re<T>, Re<U>, Re<V>, Re<W>, Re<X>, Re<Y>, Re<Z>, Re<$>], fn: (values: [A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, $]) => r): ValueReadonly<r>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, $, _, r>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>, Re<N>, Re<O>, Re<P>, Re<Q>, Re<R>, Re<S>, Re<T>, Re<U>, Re<V>, Re<W>, Re<X>, Re<Y>, Re<Z>, Re<$>, Re<_>], fn: (values: [A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, $, _]) => r): ValueReadonly<r>; | ||
<T extends Re_CfgExemplar, r>(targets: T, fn: (values: { | ||
[P in keyof T]: T[P] extends { | ||
get: () => infer R; | ||
} ? R : T[P] extends (() => infer R) ? R : T[P]; | ||
}) => r): ValueReadonly<r>; | ||
<A>(targets: [Re<A>]): ValueReadonly<[A]>; | ||
<A, B>(targets: [Re<A>, Re<B>]): ValueReadonly<[A, B]>; | ||
<A, B, C>(targets: [Re<A>, Re<B>, Re<C>]): ValueReadonly<[A, B, C]>; | ||
<A, B, C, D>(targets: [Re<A>, Re<B>, Re<C>, Re<D>]): ValueReadonly<[A, B, C, D]>; | ||
<A, B, C, D, E>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>]): ValueReadonly<[A, B, C, D, E]>; | ||
<A, B, C, D, E, F>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>]): ValueReadonly<[A, B, C, D, E, F]>; | ||
<A, B, C, D, E, F, G>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>]): ValueReadonly<[A, B, C, D, E, F, G]>; | ||
<A, B, C, D, E, F, G, H>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>]): ValueReadonly<[A, B, C, D, E, F, G, H]>; | ||
<A, B, C, D, E, F, G, H, I>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>]): ValueReadonly<[A, B, C, D, E, F, G, H, I]>; | ||
<A, B, C, D, E, F, G, H, I, J>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>]): ValueReadonly<[A, B, C, D, E, F, G, H, I, J]>; | ||
<A, B, C, D, E, F, G, H, I, J, K>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>]): ValueReadonly<[A, B, C, D, E, F, G, H, I, J, K]>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>]): ValueReadonly<[A, B, C, D, E, F, G, H, I, J, K, L]>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>]): ValueReadonly<[A, B, C, D, E, F, G, H, I, J, K, L, M]>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>, Re<N>]): ValueReadonly<[A, B, C, D, E, F, G, H, I, J, K, L, M, N]>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>, Re<N>, Re<O>]): ValueReadonly<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O]>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>, Re<N>, Re<O>, Re<P>]): ValueReadonly<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P]>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>, Re<N>, Re<O>, Re<P>, Re<Q>]): ValueReadonly<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q]>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>, Re<N>, Re<O>, Re<P>, Re<Q>, Re<R>]): ValueReadonly<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R]>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>, Re<N>, Re<O>, Re<P>, Re<Q>, Re<R>, Re<S>]): ValueReadonly<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S]>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>, Re<N>, Re<O>, Re<P>, Re<Q>, Re<R>, Re<S>, Re<T>]): ValueReadonly<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T]>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>, Re<N>, Re<O>, Re<P>, Re<Q>, Re<R>, Re<S>, Re<T>, Re<U>]): ValueReadonly<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U]>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>, Re<N>, Re<O>, Re<P>, Re<Q>, Re<R>, Re<S>, Re<T>, Re<U>, Re<V>]): ValueReadonly<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V]>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>, Re<N>, Re<O>, Re<P>, Re<Q>, Re<R>, Re<S>, Re<T>, Re<U>, Re<V>, Re<W>]): ValueReadonly<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W]>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>, Re<N>, Re<O>, Re<P>, Re<Q>, Re<R>, Re<S>, Re<T>, Re<U>, Re<V>, Re<W>, Re<X>]): ValueReadonly<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X]>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>, Re<N>, Re<O>, Re<P>, Re<Q>, Re<R>, Re<S>, Re<T>, Re<U>, Re<V>, Re<W>, Re<X>, Re<Y>]): ValueReadonly<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y]>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>, Re<N>, Re<O>, Re<P>, Re<Q>, Re<R>, Re<S>, Re<T>, Re<U>, Re<V>, Re<W>, Re<X>, Re<Y>, Re<Z>]): ValueReadonly<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z]>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, $>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>, Re<N>, Re<O>, Re<P>, Re<Q>, Re<R>, Re<S>, Re<T>, Re<U>, Re<V>, Re<W>, Re<X>, Re<Y>, Re<Z>, Re<$>]): ValueReadonly<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, $]>; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, $, _>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>, Re<N>, Re<O>, Re<P>, Re<Q>, Re<R>, Re<S>, Re<T>, Re<U>, Re<V>, Re<W>, Re<X>, Re<Y>, Re<Z>, Re<$>, Re<_>]): ValueReadonly<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, $, _]>; | ||
<T extends Re_CfgExemplar>(targets: T): ValueReadonly<{ | ||
[P in keyof T]: T[P] extends { | ||
get: () => infer R; | ||
} ? R : T[P] extends (() => infer R) ? R : T[P]; | ||
}>; | ||
}; | ||
}; | ||
declare type SelectorEntry = { | ||
(fn: () => any): any; | ||
}; | ||
declare type SignalEntry = { | ||
<T>(initial?: T): Signal<T>; | ||
(): Signal; | ||
<T>(): Signal<T, Will<T>>; | ||
<T>(initial: T): Signal<T>; | ||
trigger: { | ||
(initial?: any): any; | ||
(): Signal; | ||
<T>(): Signal<T, Will<T>>; | ||
<T>(initial: T): Signal<T>; | ||
flag: { | ||
(initial?: any): any; | ||
(): Signal<boolean>; | ||
(initial: boolean): Signal<boolean>; | ||
invert: { | ||
(initial?: any): any; | ||
(): Signal<boolean>; | ||
(initial: boolean): Signal<boolean>; | ||
}; | ||
@@ -175,26 +379,6 @@ }; | ||
from: { | ||
(get: () => any, set?: (v: any) => any): any; | ||
<O>(get: Re<O>): SignalReadonly<O>; | ||
<O, I>(get: Re<O>, set: ((value: I, state: O) => void) | ReWrit<I>): Signal<I, O>; | ||
}; | ||
combine: { | ||
(cfg: any): any; | ||
}; | ||
}; | ||
declare type Local = { | ||
inject(fn: () => void): void; | ||
}; | ||
declare type Contextual = { | ||
stop: () => void; | ||
}; | ||
declare type Isolate = { | ||
(fn: any): () => void; | ||
unsafe: () => () => () => void; | ||
}; | ||
declare type Transaction = { | ||
<T>(fn: () => T): T; | ||
unsafe: () => () => void; | ||
}; | ||
declare type Untrack = { | ||
<T>(fn: () => T): T; | ||
unsafe: () => () => void; | ||
}; | ||
declare type Observe = { | ||
@@ -207,3 +391,3 @@ <T extends FC>(FunctionComponent: T): React.MemoExoticComponent<T>; | ||
declare type UseScoped = { | ||
<M>(target: (new (init?: any) => M) | ((init?: any) => M)): M; | ||
<M>(target: (new () => M) | (() => M)): M; | ||
}; | ||
@@ -216,10 +400,4 @@ declare type UseLocal = { | ||
}; | ||
declare type UseValues_CfgExemplar = { | ||
[key: string]: Re<any>; | ||
}; | ||
declare type UseValues_ExpandCfgTargets<T> = { | ||
[P in keyof T]: T[P] extends Re<infer Re_T> ? Re_T : T[P]; | ||
}; | ||
declare type UseValues = { | ||
<T extends UseValues_CfgExemplar>(targets: T, deps?: any[]): UseValues_ExpandCfgTargets<T>; | ||
<A>(targets: [Re<A>], deps?: any[]): [A]; | ||
<A, B>(targets: [Re<A>, Re<B>], deps?: any[]): [A, B]; | ||
@@ -252,3 +430,7 @@ <A, B, C>(targets: [Re<A>, Re<B>, Re<C>], deps?: any[]): [A, B, C]; | ||
<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, $, _>(targets: [Re<A>, Re<B>, Re<C>, Re<D>, Re<E>, Re<F>, Re<G>, Re<H>, Re<I>, Re<J>, Re<K>, Re<L>, Re<M>, Re<N>, Re<O>, Re<P>, Re<Q>, Re<R>, Re<S>, Re<T>, Re<U>, Re<V>, Re<W>, Re<X>, Re<Y>, Re<Z>, Re<$>, Re<_>], deps?: any[]): [A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, $, _]; | ||
<A>(targets: [Re<A>], deps?: any[]): [A]; | ||
<T extends Re_CfgExemplar>(targets: T, deps?: any[]): { | ||
[P in keyof T]: T[P] extends { | ||
get: () => infer R; | ||
} ? R : T[P] extends (() => infer R) ? R : T[P]; | ||
}; | ||
}; | ||
@@ -259,3 +441,3 @@ declare type UseJsx = { | ||
declare type PoolEntry_BodyExemplar = { | ||
(...args: any[]): Promise<any>; | ||
(...args: never[]): Promise<unknown>; | ||
}; | ||
@@ -266,5 +448,5 @@ declare type PoolEntry = { | ||
declare type Pool<K> = K & { | ||
count: any; | ||
threads: any; | ||
pending: any; | ||
count: ValueReadonly<number>; | ||
threads: ValueReadonly<(() => void)[]>; | ||
pending: ValueReadonly<boolean>; | ||
}; |
{ | ||
"name": "realar", | ||
"version": "0.6.0-alpha.4", | ||
"version": "0.6.0-alpha.5", | ||
"description": "Advanced state manager for React", | ||
@@ -91,3 +91,3 @@ "repository": { | ||
}, | ||
"gitHead": "9110b23c712789f798f56d147535b84476f85774" | ||
"gitHead": "8085e77339a4ec8b40cf8cda999a3bde0dc82fe7" | ||
} |
@@ -105,9 +105,37 @@ # Realar | ||
- API | ||
- [value](./docs/api.md) | ||
- [signal](./docs/api.md) | ||
- [selector](./docs/api.md) | ||
- [on](./docs/api.md) | ||
- [cache](./docs/api.md) | ||
- [cycle](./docs/api.md) | ||
- [sync](./docs/api.md) | ||
- Declarative framework | ||
- [value](./docs/api.md#value) | ||
- [signal](./docs/api.md#signal) | ||
- Imperative framework | ||
- [on](./docs/api.md#on) | ||
- [sync](./docs/api.md#sync) | ||
- [cycle](./docs/api.md#cycle) | ||
- Class decorators for TRFP | ||
- [prop]() | ||
- [cache](./docs/api.md#cache) | ||
- Shared technique | ||
- [shared]() | ||
- [initial]() | ||
- [free]() | ||
- [mock]() | ||
- [unmock]() | ||
- Unsubscribe scopes control | ||
- [isolate]() | ||
- [un]() | ||
- Additional api | ||
- [local.inject]() | ||
- [contextual]() | ||
- [pool]() | ||
- Track and transactions | ||
- [transaction]() | ||
- [untrack]() | ||
- React bindings | ||
- [observe]() | ||
- [useValue]() | ||
- [useValues]() | ||
- [useLocal]() | ||
- [useScoped]() | ||
- [useShared]() | ||
- [Scope]() | ||
- [useJsx]() | ||
@@ -114,0 +142,0 @@ |
166
src/index.ts
import React, { Context, FC } from 'react'; | ||
import rb from 'reactive-box'; | ||
import { Contextual, Isolate, Local, Observe, PoolEntry, SelectorEntry, SignalEntry, Transaction, Untrack, UseJsx, UseLocal, UseScoped, UseValue, UseValues, ValueEntry } from './types'; | ||
import { Contextual, Isolate, Local, Observe, On, PoolEntry, SignalEntry, Sync, Transaction, Untrack, UseJsx, UseLocal, UseScoped, UseValue, UseValues, ValueEntry } from './types'; | ||
@@ -12,3 +12,2 @@ // | ||
value, | ||
selector, | ||
signal, | ||
@@ -180,3 +179,2 @@ | ||
const key_combine = 'combine'; | ||
const key_join = 'join'; | ||
const key_value = 'value'; | ||
@@ -189,2 +187,3 @@ const key_as = 'as'; | ||
const key_updater = key_update+'r'; | ||
const key_wrap = 'wrap'; | ||
@@ -302,26 +301,8 @@ | ||
const make_join_entity = (fn_get, join_cfg, is_signal?, set?, is_untrack?) => { | ||
const fns = join_cfg.map(is_signal | ||
? (fn) => fn[key_get] || fn | ||
: (fn) => sel(fn[key_get] || fn)[0] | ||
); | ||
const h = [ | ||
() => { | ||
const ret = [fn_get()]; | ||
const finish = is_untrack && internal_untrack(); | ||
try { return ret.concat(fns.map(f => f())) } | ||
finally { finish && finish() } | ||
}, | ||
set && set.bind() | ||
]; | ||
h[key_is_signal] = is_signal; | ||
return fill_entity(h, set ? proto_entity_writtable : proto_entity_readable) | ||
} | ||
const make_trait_ent_pure_fn_untrack = (trait_fn) => | ||
(ctx, fn) => trait_fn(ctx, fn && ((a,b) => { | ||
(ctx, fn) => trait_fn(ctx, fn && ((a,b,c) => { | ||
const finish = internal_untrack(); | ||
try { return fn(a,b); } | ||
try { return fn(a,b,c); } | ||
finally { finish() } | ||
@@ -443,3 +424,3 @@ })); | ||
ctx[key_get], | ||
(v) => ctx[key_set](fn(v)) | ||
(v) => ctx[key_set](fn(v, untrack(ctx[key_get]))) | ||
) | ||
@@ -468,4 +449,10 @@ : ctx | ||
const trait_ent_pre_filter_not_untrack = make_trait_ent_untrack(trait_ent_pre_filter_not); | ||
const trait_ent_wrap = (ctx, fn_pre, fn_map) => ( | ||
trait_ent_map(trait_ent_pre(ctx, fn_pre), fn_map) | ||
) | ||
const trait_ent_wrap_untrack = (ctx, fn_pre, fn_map) => ( | ||
trait_ent_map_untrack(trait_ent_pre_untrack(ctx, fn_pre), fn_map) | ||
) | ||
const trait_ent_flow = (ctx, fn) => { | ||
const trait_ent_flow = (ctx, fn, empty_val) => { | ||
fn || (fn = pure_arrow_fn_returns_arg); | ||
@@ -478,3 +465,3 @@ let started, prev; | ||
finally { prev = v } | ||
}, const_undef, is_signal && pure_arrow_fn_returns_undef); | ||
}, empty_val, is_signal && pure_arrow_fn_returns_undef); | ||
const h = [ | ||
@@ -490,3 +477,3 @@ () => ((started || (f[0](), (started = 1))), f[1]()), | ||
const trait_ent_flow_untrack = make_trait_ent_pure_fn_untrack(trait_ent_flow); | ||
const trait_ent_filter = (ctx, fn) => ( | ||
const trait_ent_filter = (ctx, fn, empty_val) => ( | ||
trait_ent_flow(ctx, fn | ||
@@ -497,20 +484,16 @@ ? (fn[key_get] && (fn = fn[key_get]), | ||
)) | ||
: (v) => v || internal_flow_stop | ||
: (v) => v || internal_flow_stop, | ||
empty_val | ||
) | ||
); | ||
const trait_ent_filter_untrack = make_trait_ent_untrack(trait_ent_filter) | ||
const trait_ent_filter_not = (ctx, fn) => ( | ||
const trait_ent_filter_not = (ctx, fn, empty_val) => ( | ||
trait_ent_filter(ctx, fn | ||
? (fn[key_get] && (fn = fn[key_get]), (v) => !fn(v)) | ||
: pure_arrow_fn_returns_not_arg) | ||
: pure_arrow_fn_returns_not_arg, | ||
empty_val | ||
) | ||
); | ||
const trait_ent_filter_not_untrack = make_trait_ent_untrack(trait_ent_filter_not) | ||
const trait_ent_join = (ctx, cfg) => ( | ||
make_join_entity(ctx[key_get], cfg, ctx[key_handler][key_is_signal], ctx[key_set]) | ||
); | ||
const trait_ent_join_untrack = (ctx, cfg) => ( | ||
make_join_entity(ctx[key_get], cfg, ctx[key_handler][key_is_signal], ctx[key_set], 1) | ||
); | ||
const trait_ent_as_value = (ctx) => ( | ||
@@ -575,3 +558,2 @@ value_from(ctx[key_get], ctx[key_set]) | ||
// .to | ||
// .join (track|untrack) | ||
// .as:readable.as:ns | ||
@@ -616,8 +598,2 @@ // .as.value | ||
); | ||
obj_def_prop_trait_with_ns( | ||
proto_entity_readable, | ||
key_join, | ||
trait_ent_join, | ||
make_proto_for_trackable_ns(trait_ent_join, trait_ent_join_untrack), | ||
); | ||
obj_def_prop_with_ns( | ||
@@ -701,2 +677,9 @@ proto_entity_readable, | ||
); | ||
obj_def_prop_trait_with_ns( | ||
proto_entity_writtable, | ||
key_wrap, | ||
op_trait_if_not_signal(trait_ent_wrap, trait_ent_wrap_untrack), | ||
make_proto_for_trackable_ns(trait_ent_wrap, trait_ent_wrap_untrack), | ||
1 | ||
); | ||
@@ -769,15 +752,9 @@ // writtable_leaf.reset.by:ns | ||
const make_combine = (cfg, is_signal?) => { | ||
const make_value_combine_handler = (cfg, fn) => { | ||
const keys = obj_keys(cfg); | ||
const fns = keys.map(is_signal | ||
? (key) => get_getter_to_reactionable_or_custom(cfg[key]) | ||
: (key) => sel(get_getter_to_reactionable_or_custom(cfg[key]))[0] | ||
); | ||
const h = [ | ||
() => keys.reduce((ret, key, key_index) => ( | ||
(ret[key] = fns[key_index]()), ret | ||
), obj_empty_from(cfg)) | ||
]; | ||
h[key_is_signal] = is_signal; | ||
return fill_entity(h, proto_entity_readable); | ||
const fns = keys.map((key) => sel(get_getter_to_reactionable_or_custom(cfg[key]))[0]); | ||
const re = () => keys.reduce((ret, key, key_index) => ( | ||
(ret[key] = fns[key_index]()), ret | ||
), obj_empty_from(cfg)) | ||
return [fn ? sel(() => fn(re()))[0] : re]; | ||
} | ||
@@ -787,7 +764,2 @@ | ||
const selector: SelectorEntry = (fn) => ( | ||
fill_entity(sel(fn).slice(0, 1), proto_entity_readable) | ||
) | ||
const value: ValueEntry = ((initial) => ( | ||
@@ -800,8 +772,9 @@ fill_entity(box(initial), proto_entity_writtable_leaf, 1, initial) | ||
const value_trigger_flag_invert = (initial) => make_trigger(!initial, 1); | ||
const value_from = (get, set?) => ( | ||
(get = sel(get[key_get] || get).slice(0, 1), | ||
set && ((set = set[key_set] || set), (get[1] = set.bind()))), | ||
fill_entity(get, set ? proto_entity_writtable : proto_entity_readable) | ||
); | ||
const value_combine = (cfg) => make_combine(cfg); | ||
const value_from = (get, set?) => { | ||
const h = sel(get[key_get] || get).slice(0, 1); | ||
if (set) h[1] = set[key_set] ? set[key_set].bind() : (v) => set(v, untrack(ctx[key_get])); | ||
const ctx = fill_entity(h, set ? proto_entity_writtable : proto_entity_readable); | ||
return ctx; | ||
} | ||
const value_combine = (cfg, fn?) => fill_entity(make_value_combine_handler(cfg, fn), proto_entity_readable); | ||
@@ -824,9 +797,9 @@ value_trigger_flag[key_invert] = value_trigger_flag_invert; | ||
const signal_trigger_flag_invert = (initial) => make_trigger(!initial, 1, 1); | ||
const signal_from = (get, set?) => ( | ||
(get = [get[key_get] || get], | ||
(get[key_is_signal] = 1), | ||
set && ((set = set[key_set] || set), (get[1] = set.bind()))), | ||
fill_entity(get, set ? proto_entity_writtable : proto_entity_readable) | ||
); | ||
const signal_combine = (cfg) => make_combine(cfg, 1); | ||
const signal_from = (get, set?) => { | ||
const h = [get[key_get] || get]; | ||
h[key_is_signal] = 1 | ||
if (set) h[1] = set[key_set] ? set[key_set].bind() : (v) => set(v, untrack(ctx[key_get])); | ||
const ctx = fill_entity(h, set ? proto_entity_writtable : proto_entity_readable); | ||
return ctx; | ||
} | ||
@@ -837,3 +810,2 @@ signal_trigger_flag[key_invert] = signal_trigger_flag_invert; | ||
signal[key_from] = signal_from; | ||
signal[key_combine] = signal_combine; | ||
@@ -902,9 +874,9 @@ | ||
const on_once = (target, fn) => reactionable_subscribe(target, fn, 1); | ||
const on = (target, fn) => reactionable_subscribe(target, fn); | ||
const on: On = ((target, fn) => reactionable_subscribe(target, fn)) as any; | ||
on[key_once] = on_once; | ||
const sync = (target, fn) => reactionable_subscribe(target, fn, 0, 1); | ||
const sync: Sync = (target, fn) => reactionable_subscribe(target, fn, 0, 1); | ||
const cycle = (body) => { | ||
const cycle = (body: () => void) => { | ||
const iter = () => { | ||
@@ -941,7 +913,3 @@ const stack = context_contextual_stop; | ||
const inst = <M, K extends any[]>( | ||
target: (new (...args: K) => M) | ((...args: K) => M), | ||
args: K, | ||
local_injects_available?: any | ||
): [M, () => void, (() => void)[]] => { | ||
const inst = (target, args, local_injects_available?) => { | ||
let instance, unsub, local_injects; | ||
@@ -955,4 +923,4 @@ const collect = internal_isolate(); | ||
target.prototype === const_undef | ||
? (target as any)(...args) | ||
: new (target as any)(...args); | ||
? target(...args) | ||
: new target(...args); | ||
if (!local_injects_available && context_local_injects.length > 0) throw_local_inject_error(); | ||
@@ -968,3 +936,3 @@ } finally { | ||
const shared = <M>(target: (new (init?: any) => M) | ((init?: any) => M)): M => { | ||
const shared = <M>(target: (new (init: any) => M) | ((init: any) => M)): M => { | ||
let instance = shareds.get(target); | ||
@@ -989,3 +957,3 @@ if (!instance) { | ||
const mock = <M>(target: (new (init?: any) => M) | ((init?: any) => M), mocked: M): M => ( | ||
const mock = <M>(target: (new (init: any) => M) | ((init: any) => M), mocked: M): M => ( | ||
shareds.set(target, mocked), | ||
@@ -996,4 +964,4 @@ mocked | ||
const unmock = ( | ||
target: (new (init?: any) => any) | ((init?: any) => any), | ||
...targets: ((new (init?: any) => any) | ((init?: any) => any))[] | ||
target: (new (init: any) => any) | ((init: any) => any), | ||
...targets: ((new (init: any) => any) | ((init: any) => any))[] | ||
) => ( | ||
@@ -1013,10 +981,10 @@ targets.concat(target).forEach(target => shareds.delete(target)) | ||
const prop = (_t: any, key: any, descriptor?: any): any => ( | ||
(_t = descriptor?.initializer), { | ||
const prop = (_target: any, key: any, descriptor?: any): any => ( | ||
(_target = descriptor && descriptor.initializer), { | ||
get() { | ||
obj_def_box_prop(this, key, _t); | ||
obj_def_box_prop(this, key, _target); | ||
return this[key]; | ||
}, | ||
set(value: any) { | ||
obj_def_box_prop(this, key, _t); | ||
obj_def_box_prop(this, key, _target); | ||
this[key] = value; | ||
@@ -1027,3 +995,3 @@ }, | ||
const cache = (_proto: any, key: any, descriptor: any): any => ({ | ||
const cache = (_target: any, key: any, descriptor: any): any => ({ | ||
get() { | ||
@@ -1153,3 +1121,3 @@ const [get] = sel(descriptor.get); | ||
deps || (deps = []); | ||
const h = useMemo(() => value.combine(targets), deps); | ||
const h = useMemo(() => value_combine(targets), deps); | ||
return useValue(h, [h]); | ||
@@ -1170,8 +1138,8 @@ }; | ||
const threads = value([]); | ||
const count = threads.select(t => t.length); | ||
const pending = count.select(c => c > 0); | ||
const count = trait_ent_select(threads, t => t.length); | ||
const pending = trait_ent_select(count, c => c > 0); | ||
function run(this: any) { | ||
const stop = () => threads.update(t => t.filter(ctx => ctx !== stop)); | ||
threads.update(t => t.concat(stop as any)); | ||
const stop = () => trait_ent_update(threads, t => t.filter(ctx => ctx !== stop)); | ||
trait_ent_update(threads, t => t.concat(stop as any)); | ||
@@ -1178,0 +1146,0 @@ const stack = context_contextual_stop; |
537
src/types.ts
import { FC } from 'react'; | ||
// | ||
// Exports | ||
// | ||
export { | ||
ValueEntry, | ||
SignalEntry, | ||
SelectorEntry, | ||
@@ -18,2 +21,5 @@ Local, | ||
On, | ||
Sync, | ||
Transaction, | ||
@@ -38,61 +44,171 @@ Untrack, | ||
type Re<T> = { get: () => T } | (() => T); | ||
type ReWrit<T> = { set: (value: T) => void } | ((value: T) => void); | ||
type Re_CfgExemplar = { | ||
[key: string]: Re<any> | ||
} | ||
type Will<T> = T | undefined; | ||
type WillExpand<T> = ((p: T) => 0) extends ((p: Will<T>) => 0) ? [T] extends [Will<infer P>] ? P | undefined : T : T; | ||
type WillExtract<T> = ((p: T) => 0) extends ((p: Will<T>) => 0) ? [T] extends [Will<infer P>] ? P : T : T; | ||
type WillEnsure<T> = ((p: T) => 0) extends ((p: Will<T>) => 0) ? [T] extends [Will<infer P>] ? Will<P> : Will<T> : Will<T>; | ||
// | ||
// Realar external api typings | ||
// | ||
type On = { | ||
<T>(target: Re<Will<T>>, fn: (value: T, prev: WillExpand<Will<T>>) => void): void | ||
<T>(target: Re<T>, fn: (value: T, prev: T) => void): void | ||
} | ||
type Sync = { | ||
<T>(target: Re<Will<T>>, fn: (value: T, prev: WillExpand<Will<T>>) => void): void | ||
<T>(target: Re<T>, fn: (value: T, prev: T) => void): void | ||
} | ||
type Local = { | ||
inject(fn: () => void): void; | ||
} | ||
type Contextual = { | ||
stop: () => void; | ||
} | ||
type Isolate = { | ||
(fn): () => void; | ||
unsafe: () => () => () => void; | ||
} | ||
type Transaction = { | ||
<T>(fn: () => T): T; | ||
unsafe: () => () => void; | ||
} | ||
type Untrack = { | ||
<T>(fn: () => T): T; | ||
unsafe: () => () => void; | ||
} | ||
// | ||
// Entity types | ||
// | ||
interface E_UpdaterPartial<I, O> { | ||
updater: { | ||
<U>(func?: (state: O, upValue: U, upPrev: U) => I): Equals<U, unknown> extends true ? Signal : Signal<U> | ||
value<U>(func?: (state: O, upValue: U, upPrev: U) => I): Equals<U, unknown> extends true ? Value : Value<U> | ||
} | ||
type E_SetPartial<T> = Equals<T, void> extends true | ||
? { (): void; set(): void } | ||
: { (value: T): void; set(value: T): void } | ||
type E_ValReadonlyPartial<O> = { readonly val: O } | ||
type E_ValPartial<I, O> = Equals<I, O> extends true ? { val: O } : E_ValReadonlyPartial<O> | ||
interface E_PromisePartial<O> { | ||
promise: Promise<WillExtract<O>> | ||
} | ||
interface E_GetPartial<T> { | ||
get: () => T; | ||
interface E_GetPartial<O> { | ||
get: () => O; | ||
} | ||
interface E_SyncToPartial<T, Ret> { | ||
sync(func: (value: T, prev: T) => void): Ret | ||
interface E_SyncToPartial<O, Ret> { | ||
sync(func: (value: WillExtract<O>, prev: WillExpand<O>) => void): Ret | ||
to: { | ||
(func: (value: T, prev: T) => void): Ret | ||
once(func: (value: T, prev: T) => void): Ret | ||
(func: (value: WillExtract<O>, prev: WillExpand<O>) => void): Ret | ||
once(func: (value: WillExtract<O>, prev: WillExpand<O>) => void): Ret | ||
} | ||
} | ||
interface E_OpPartial<Ret> { | ||
op<R>(func: () => R): R extends void ? Ret : R | ||
} | ||
type E_SelectMultiple_CfgExemplar<O> = { | ||
[key: string]: (state: O) => void | ||
} | ||
type _S<O,T> = ((state: O) => T) | (() => T); | ||
interface E_SelectMultiple_Func<o> { | ||
<A>(targets: [_S<o,A>]): [ValueReadonly<A>]; | ||
<A,B>(targets: [_S<o,A>,_S<o,B>]): [ValueReadonly<A>,ValueReadonly<B>]; | ||
<A,B,C>(targets: [_S<o,A>,_S<o,B>,_S<o,C>]): [ValueReadonly<A>,ValueReadonly<B>,ValueReadonly<C>]; | ||
<A,B,C,D>(targets: [_S<o,A>,_S<o,B>,_S<o,C>,_S<o,D>]): [ValueReadonly<A>,ValueReadonly<B>,ValueReadonly<C>,ValueReadonly<D>]; | ||
<A,B,C,D,E>(targets: [_S<o,A>,_S<o,B>,_S<o,C>,_S<o,D>,_S<o,E>]): [ValueReadonly<A>,ValueReadonly<B>,ValueReadonly<C>,ValueReadonly<D>,ValueReadonly<E>]; | ||
<A,B,C,D,E,F>(targets: [_S<o,A>,_S<o,B>,_S<o,C>,_S<o,D>,_S<o,E>,_S<o,F>]): [ValueReadonly<A>,ValueReadonly<B>,ValueReadonly<C>,ValueReadonly<D>,ValueReadonly<E>,ValueReadonly<F>]; | ||
<A,B,C,D,E,F,G>(targets: [_S<o,A>,_S<o,B>,_S<o,C>,_S<o,D>,_S<o,E>,_S<o,F>,_S<o,G>]): [ValueReadonly<A>,ValueReadonly<B>,ValueReadonly<C>,ValueReadonly<D>,ValueReadonly<E>,ValueReadonly<F>,ValueReadonly<G>]; | ||
<A,B,C,D,E,F,G,H>(targets: [_S<o,A>,_S<o,B>,_S<o,C>,_S<o,D>,_S<o,E>,_S<o,F>,_S<o,G>,_S<o,H>]): [ValueReadonly<A>,ValueReadonly<B>,ValueReadonly<C>,ValueReadonly<D>,ValueReadonly<E>,ValueReadonly<F>,ValueReadonly<G>,ValueReadonly<H>]; | ||
<A,B,C,D,E,F,G,H,I>(targets: [_S<o,A>,_S<o,B>,_S<o,C>,_S<o,D>,_S<o,E>,_S<o,F>,_S<o,G>,_S<o,H>,_S<o,I>]): [ValueReadonly<A>,ValueReadonly<B>,ValueReadonly<C>,ValueReadonly<D>,ValueReadonly<E>,ValueReadonly<F>,ValueReadonly<G>,ValueReadonly<H>,ValueReadonly<I>]; | ||
<A,B,C,D,E,F,G,H,I,J>(targets: [_S<o,A>,_S<o,B>,_S<o,C>,_S<o,D>,_S<o,E>,_S<o,F>,_S<o,G>,_S<o,H>,_S<o,I>,_S<o,J>]): [ValueReadonly<A>,ValueReadonly<B>,ValueReadonly<C>,ValueReadonly<D>,ValueReadonly<E>,ValueReadonly<F>,ValueReadonly<G>,ValueReadonly<H>,ValueReadonly<I>,ValueReadonly<J>]; | ||
<A,B,C,D,E,F,G,H,I,J,K>(targets: [_S<o,A>,_S<o,B>,_S<o,C>,_S<o,D>,_S<o,E>,_S<o,F>,_S<o,G>,_S<o,H>,_S<o,I>,_S<o,J>,_S<o,K>]): [ValueReadonly<A>,ValueReadonly<B>,ValueReadonly<C>,ValueReadonly<D>,ValueReadonly<E>,ValueReadonly<F>,ValueReadonly<G>,ValueReadonly<H>,ValueReadonly<I>,ValueReadonly<J>,ValueReadonly<K>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L>(targets: [_S<o,A>,_S<o,B>,_S<o,C>,_S<o,D>,_S<o,E>,_S<o,F>,_S<o,G>,_S<o,H>,_S<o,I>,_S<o,J>,_S<o,K>,_S<o,L>]): [ValueReadonly<A>,ValueReadonly<B>,ValueReadonly<C>,ValueReadonly<D>,ValueReadonly<E>,ValueReadonly<F>,ValueReadonly<G>,ValueReadonly<H>,ValueReadonly<I>,ValueReadonly<J>,ValueReadonly<K>,ValueReadonly<L>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M>(targets: [_S<o,A>,_S<o,B>,_S<o,C>,_S<o,D>,_S<o,E>,_S<o,F>,_S<o,G>,_S<o,H>,_S<o,I>,_S<o,J>,_S<o,K>,_S<o,L>,_S<o,M>]): [ValueReadonly<A>,ValueReadonly<B>,ValueReadonly<C>,ValueReadonly<D>,ValueReadonly<E>,ValueReadonly<F>,ValueReadonly<G>,ValueReadonly<H>,ValueReadonly<I>,ValueReadonly<J>,ValueReadonly<K>,ValueReadonly<L>,ValueReadonly<M>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N>(targets: [_S<o,A>,_S<o,B>,_S<o,C>,_S<o,D>,_S<o,E>,_S<o,F>,_S<o,G>,_S<o,H>,_S<o,I>,_S<o,J>,_S<o,K>,_S<o,L>,_S<o,M>,_S<o,N>]): [ValueReadonly<A>,ValueReadonly<B>,ValueReadonly<C>,ValueReadonly<D>,ValueReadonly<E>,ValueReadonly<F>,ValueReadonly<G>,ValueReadonly<H>,ValueReadonly<I>,ValueReadonly<J>,ValueReadonly<K>,ValueReadonly<L>,ValueReadonly<M>,ValueReadonly<N>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O>(targets: [_S<o,A>,_S<o,B>,_S<o,C>,_S<o,D>,_S<o,E>,_S<o,F>,_S<o,G>,_S<o,H>,_S<o,I>,_S<o,J>,_S<o,K>,_S<o,L>,_S<o,M>,_S<o,N>,_S<o,O>]): [ValueReadonly<A>,ValueReadonly<B>,ValueReadonly<C>,ValueReadonly<D>,ValueReadonly<E>,ValueReadonly<F>,ValueReadonly<G>,ValueReadonly<H>,ValueReadonly<I>,ValueReadonly<J>,ValueReadonly<K>,ValueReadonly<L>,ValueReadonly<M>,ValueReadonly<N>,ValueReadonly<O>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P>(targets: [_S<o,A>,_S<o,B>,_S<o,C>,_S<o,D>,_S<o,E>,_S<o,F>,_S<o,G>,_S<o,H>,_S<o,I>,_S<o,J>,_S<o,K>,_S<o,L>,_S<o,M>,_S<o,N>,_S<o,O>,_S<o,P>]): [ValueReadonly<A>,ValueReadonly<B>,ValueReadonly<C>,ValueReadonly<D>,ValueReadonly<E>,ValueReadonly<F>,ValueReadonly<G>,ValueReadonly<H>,ValueReadonly<I>,ValueReadonly<J>,ValueReadonly<K>,ValueReadonly<L>,ValueReadonly<M>,ValueReadonly<N>,ValueReadonly<O>,ValueReadonly<P>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q>(targets: [_S<o,A>,_S<o,B>,_S<o,C>,_S<o,D>,_S<o,E>,_S<o,F>,_S<o,G>,_S<o,H>,_S<o,I>,_S<o,J>,_S<o,K>,_S<o,L>,_S<o,M>,_S<o,N>,_S<o,O>,_S<o,P>,_S<o,Q>]): [ValueReadonly<A>,ValueReadonly<B>,ValueReadonly<C>,ValueReadonly<D>,ValueReadonly<E>,ValueReadonly<F>,ValueReadonly<G>,ValueReadonly<H>,ValueReadonly<I>,ValueReadonly<J>,ValueReadonly<K>,ValueReadonly<L>,ValueReadonly<M>,ValueReadonly<N>,ValueReadonly<O>,ValueReadonly<P>,ValueReadonly<Q>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R>(targets: [_S<o,A>,_S<o,B>,_S<o,C>,_S<o,D>,_S<o,E>,_S<o,F>,_S<o,G>,_S<o,H>,_S<o,I>,_S<o,J>,_S<o,K>,_S<o,L>,_S<o,M>,_S<o,N>,_S<o,O>,_S<o,P>,_S<o,Q>,_S<o,R>]): [ValueReadonly<A>,ValueReadonly<B>,ValueReadonly<C>,ValueReadonly<D>,ValueReadonly<E>,ValueReadonly<F>,ValueReadonly<G>,ValueReadonly<H>,ValueReadonly<I>,ValueReadonly<J>,ValueReadonly<K>,ValueReadonly<L>,ValueReadonly<M>,ValueReadonly<N>,ValueReadonly<O>,ValueReadonly<P>,ValueReadonly<Q>,ValueReadonly<R>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S>(targets: [_S<o,A>,_S<o,B>,_S<o,C>,_S<o,D>,_S<o,E>,_S<o,F>,_S<o,G>,_S<o,H>,_S<o,I>,_S<o,J>,_S<o,K>,_S<o,L>,_S<o,M>,_S<o,N>,_S<o,O>,_S<o,P>,_S<o,Q>,_S<o,R>,_S<o,S>]): [ValueReadonly<A>,ValueReadonly<B>,ValueReadonly<C>,ValueReadonly<D>,ValueReadonly<E>,ValueReadonly<F>,ValueReadonly<G>,ValueReadonly<H>,ValueReadonly<I>,ValueReadonly<J>,ValueReadonly<K>,ValueReadonly<L>,ValueReadonly<M>,ValueReadonly<N>,ValueReadonly<O>,ValueReadonly<P>,ValueReadonly<Q>,ValueReadonly<R>,ValueReadonly<S>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T>(targets: [_S<o,A>,_S<o,B>,_S<o,C>,_S<o,D>,_S<o,E>,_S<o,F>,_S<o,G>,_S<o,H>,_S<o,I>,_S<o,J>,_S<o,K>,_S<o,L>,_S<o,M>,_S<o,N>,_S<o,O>,_S<o,P>,_S<o,Q>,_S<o,R>,_S<o,S>,_S<o,T>]): [ValueReadonly<A>,ValueReadonly<B>,ValueReadonly<C>,ValueReadonly<D>,ValueReadonly<E>,ValueReadonly<F>,ValueReadonly<G>,ValueReadonly<H>,ValueReadonly<I>,ValueReadonly<J>,ValueReadonly<K>,ValueReadonly<L>,ValueReadonly<M>,ValueReadonly<N>,ValueReadonly<O>,ValueReadonly<P>,ValueReadonly<Q>,ValueReadonly<R>,ValueReadonly<S>,ValueReadonly<T>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U>(targets: [_S<o,A>,_S<o,B>,_S<o,C>,_S<o,D>,_S<o,E>,_S<o,F>,_S<o,G>,_S<o,H>,_S<o,I>,_S<o,J>,_S<o,K>,_S<o,L>,_S<o,M>,_S<o,N>,_S<o,O>,_S<o,P>,_S<o,Q>,_S<o,R>,_S<o,S>,_S<o,T>,_S<o,U>]): [ValueReadonly<A>,ValueReadonly<B>,ValueReadonly<C>,ValueReadonly<D>,ValueReadonly<E>,ValueReadonly<F>,ValueReadonly<G>,ValueReadonly<H>,ValueReadonly<I>,ValueReadonly<J>,ValueReadonly<K>,ValueReadonly<L>,ValueReadonly<M>,ValueReadonly<N>,ValueReadonly<O>,ValueReadonly<P>,ValueReadonly<Q>,ValueReadonly<R>,ValueReadonly<S>,ValueReadonly<T>,ValueReadonly<U>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V>(targets: [_S<o,A>,_S<o,B>,_S<o,C>,_S<o,D>,_S<o,E>,_S<o,F>,_S<o,G>,_S<o,H>,_S<o,I>,_S<o,J>,_S<o,K>,_S<o,L>,_S<o,M>,_S<o,N>,_S<o,O>,_S<o,P>,_S<o,Q>,_S<o,R>,_S<o,S>,_S<o,T>,_S<o,U>,_S<o,V>]): [ValueReadonly<A>,ValueReadonly<B>,ValueReadonly<C>,ValueReadonly<D>,ValueReadonly<E>,ValueReadonly<F>,ValueReadonly<G>,ValueReadonly<H>,ValueReadonly<I>,ValueReadonly<J>,ValueReadonly<K>,ValueReadonly<L>,ValueReadonly<M>,ValueReadonly<N>,ValueReadonly<O>,ValueReadonly<P>,ValueReadonly<Q>,ValueReadonly<R>,ValueReadonly<S>,ValueReadonly<T>,ValueReadonly<U>,ValueReadonly<V>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W>(targets: [_S<o,A>,_S<o,B>,_S<o,C>,_S<o,D>,_S<o,E>,_S<o,F>,_S<o,G>,_S<o,H>,_S<o,I>,_S<o,J>,_S<o,K>,_S<o,L>,_S<o,M>,_S<o,N>,_S<o,O>,_S<o,P>,_S<o,Q>,_S<o,R>,_S<o,S>,_S<o,T>,_S<o,U>,_S<o,V>,_S<o,W>]): [ValueReadonly<A>,ValueReadonly<B>,ValueReadonly<C>,ValueReadonly<D>,ValueReadonly<E>,ValueReadonly<F>,ValueReadonly<G>,ValueReadonly<H>,ValueReadonly<I>,ValueReadonly<J>,ValueReadonly<K>,ValueReadonly<L>,ValueReadonly<M>,ValueReadonly<N>,ValueReadonly<O>,ValueReadonly<P>,ValueReadonly<Q>,ValueReadonly<R>,ValueReadonly<S>,ValueReadonly<T>,ValueReadonly<U>,ValueReadonly<V>,ValueReadonly<W>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X>(targets: [_S<o,A>,_S<o,B>,_S<o,C>,_S<o,D>,_S<o,E>,_S<o,F>,_S<o,G>,_S<o,H>,_S<o,I>,_S<o,J>,_S<o,K>,_S<o,L>,_S<o,M>,_S<o,N>,_S<o,O>,_S<o,P>,_S<o,Q>,_S<o,R>,_S<o,S>,_S<o,T>,_S<o,U>,_S<o,V>,_S<o,W>,_S<o,X>]): [ValueReadonly<A>,ValueReadonly<B>,ValueReadonly<C>,ValueReadonly<D>,ValueReadonly<E>,ValueReadonly<F>,ValueReadonly<G>,ValueReadonly<H>,ValueReadonly<I>,ValueReadonly<J>,ValueReadonly<K>,ValueReadonly<L>,ValueReadonly<M>,ValueReadonly<N>,ValueReadonly<O>,ValueReadonly<P>,ValueReadonly<Q>,ValueReadonly<R>,ValueReadonly<S>,ValueReadonly<T>,ValueReadonly<U>,ValueReadonly<V>,ValueReadonly<W>,ValueReadonly<X>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y>(targets: [_S<o,A>,_S<o,B>,_S<o,C>,_S<o,D>,_S<o,E>,_S<o,F>,_S<o,G>,_S<o,H>,_S<o,I>,_S<o,J>,_S<o,K>,_S<o,L>,_S<o,M>,_S<o,N>,_S<o,O>,_S<o,P>,_S<o,Q>,_S<o,R>,_S<o,S>,_S<o,T>,_S<o,U>,_S<o,V>,_S<o,W>,_S<o,X>,_S<o,Y>]): [ValueReadonly<A>,ValueReadonly<B>,ValueReadonly<C>,ValueReadonly<D>,ValueReadonly<E>,ValueReadonly<F>,ValueReadonly<G>,ValueReadonly<H>,ValueReadonly<I>,ValueReadonly<J>,ValueReadonly<K>,ValueReadonly<L>,ValueReadonly<M>,ValueReadonly<N>,ValueReadonly<O>,ValueReadonly<P>,ValueReadonly<Q>,ValueReadonly<R>,ValueReadonly<S>,ValueReadonly<T>,ValueReadonly<U>,ValueReadonly<V>,ValueReadonly<W>,ValueReadonly<X>,ValueReadonly<Y>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z>(targets: [_S<o,A>,_S<o,B>,_S<o,C>,_S<o,D>,_S<o,E>,_S<o,F>,_S<o,G>,_S<o,H>,_S<o,I>,_S<o,J>,_S<o,K>,_S<o,L>,_S<o,M>,_S<o,N>,_S<o,O>,_S<o,P>,_S<o,Q>,_S<o,R>,_S<o,S>,_S<o,T>,_S<o,U>,_S<o,V>,_S<o,W>,_S<o,X>,_S<o,Y>,_S<o,Z>]): [ValueReadonly<A>,ValueReadonly<B>,ValueReadonly<C>,ValueReadonly<D>,ValueReadonly<E>,ValueReadonly<F>,ValueReadonly<G>,ValueReadonly<H>,ValueReadonly<I>,ValueReadonly<J>,ValueReadonly<K>,ValueReadonly<L>,ValueReadonly<M>,ValueReadonly<N>,ValueReadonly<O>,ValueReadonly<P>,ValueReadonly<Q>,ValueReadonly<R>,ValueReadonly<S>,ValueReadonly<T>,ValueReadonly<U>,ValueReadonly<V>,ValueReadonly<W>,ValueReadonly<X>,ValueReadonly<Y>,ValueReadonly<Z>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$>(targets: [_S<o,A>,_S<o,B>,_S<o,C>,_S<o,D>,_S<o,E>,_S<o,F>,_S<o,G>,_S<o,H>,_S<o,I>,_S<o,J>,_S<o,K>,_S<o,L>,_S<o,M>,_S<o,N>,_S<o,O>,_S<o,P>,_S<o,Q>,_S<o,R>,_S<o,S>,_S<o,T>,_S<o,U>,_S<o,V>,_S<o,W>,_S<o,X>,_S<o,Y>,_S<o,Z>,_S<o,$>]): [ValueReadonly<A>,ValueReadonly<B>,ValueReadonly<C>,ValueReadonly<D>,ValueReadonly<E>,ValueReadonly<F>,ValueReadonly<G>,ValueReadonly<H>,ValueReadonly<I>,ValueReadonly<J>,ValueReadonly<K>,ValueReadonly<L>,ValueReadonly<M>,ValueReadonly<N>,ValueReadonly<O>,ValueReadonly<P>,ValueReadonly<Q>,ValueReadonly<R>,ValueReadonly<S>,ValueReadonly<T>,ValueReadonly<U>,ValueReadonly<V>,ValueReadonly<W>,ValueReadonly<X>,ValueReadonly<Y>,ValueReadonly<Z>,ValueReadonly<$>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,_>(targets: [_S<o,A>,_S<o,B>,_S<o,C>,_S<o,D>,_S<o,E>,_S<o,F>,_S<o,G>,_S<o,H>,_S<o,I>,_S<o,J>,_S<o,K>,_S<o,L>,_S<o,M>,_S<o,N>,_S<o,O>,_S<o,P>,_S<o,Q>,_S<o,R>,_S<o,S>,_S<o,T>,_S<o,U>,_S<o,V>,_S<o,W>,_S<o,X>,_S<o,Y>,_S<o,Z>,_S<o,$>,_S<o,_>]): [ValueReadonly<A>,ValueReadonly<B>,ValueReadonly<C>,ValueReadonly<D>,ValueReadonly<E>,ValueReadonly<F>,ValueReadonly<G>,ValueReadonly<H>,ValueReadonly<I>,ValueReadonly<J>,ValueReadonly<K>,ValueReadonly<L>,ValueReadonly<M>,ValueReadonly<N>,ValueReadonly<O>,ValueReadonly<P>,ValueReadonly<Q>,ValueReadonly<R>,ValueReadonly<S>,ValueReadonly<T>,ValueReadonly<U>,ValueReadonly<V>,ValueReadonly<W>,ValueReadonly<X>,ValueReadonly<Y>,ValueReadonly<Z>,ValueReadonly<$>,ValueReadonly<_>]; | ||
interface E_Value<I, O> extends | ||
E_GetPartial<O>, | ||
E_SyncToPartial<O, Value<I, O>>, | ||
E_UpdaterPartial<I, O> { | ||
<T extends E_SelectMultiple_CfgExemplar<o>>(targets: T): { | ||
[P in keyof T]: T[P] extends ((state: o) => infer U) ? ValueReadonly<U> : never | ||
} | ||
} | ||
op<R>(func: () => R): R extends void ? Value<I, O> : R | ||
filter: { | ||
(func?: (value: O) => any): Value<I, O> // tracked by default | ||
untrack(func?: (value: O) => any): Value<I, O> | ||
not: { | ||
(func?: (value: O) => any): Value<I, O> // tracked by default | ||
untrack(func?: (value: O) => any): Value<I, O> | ||
} | ||
} | ||
interface E_SelectPartial<O> { | ||
select: { | ||
<R>(func?: (value: O) => R): Selector<R> // tracked by default | ||
untrack<R>(func?: (value: O) => R): Selector<R> | ||
multiple: { | ||
(cfg: any[]): any // TODO: .select.multiple typings | ||
untrack(cfg: any[]): any | ||
<R>(func?: (value: O) => R): ValueReadonly<R> // tracked by default | ||
untrack<R>(func?: (value: O) => R): ValueReadonly<R> | ||
multiple: E_SelectMultiple_Func<O> & { | ||
untrack: E_SelectMultiple_Func<O> | ||
} | ||
} | ||
map: { | ||
<R>(func: (value: O) => R): Value<I, R> // tracked by default | ||
untrack<R>(func: (value: O) => R): Value<I, R> | ||
} | ||
} | ||
flow: any // TODO: .flow typings | ||
join: any // TODO: .join typings | ||
type E_UpdaterMultiple_CfgExemplar<I, O> = { | ||
[key: string]: (state: O, upValue: never, upPrev: never) => I | ||
} | ||
type _US<T> = Equals<T, unknown> extends true ? Signal : Signal<T, Will<T>> | ||
type _U<I,O,U> = ((state: O, upValue: U, upPrev: U) => I) | (() => I); | ||
promise: Promise<O> | ||
interface E_UpdaterMultiplePartial<i, o> { | ||
multiple: { | ||
<A>(targets: [_U<i,o,A>]): [_US<A>]; | ||
<A,B>(targets: [_U<i,o,A>,_U<i,o,B>]): [_US<A>,_US<B>]; | ||
<A,B,C>(targets: [_U<i,o,A>,_U<i,o,B>,_U<i,o,C>]): [_US<A>,_US<B>,_US<C>]; | ||
<A,B,C,D>(targets: [_U<i,o,A>,_U<i,o,B>,_U<i,o,C>,_U<i,o,D>]): [_US<A>,_US<B>,_US<C>,_US<D>]; | ||
<A,B,C,D,E>(targets: [_U<i,o,A>,_U<i,o,B>,_U<i,o,C>,_U<i,o,D>,_U<i,o,E>]): [_US<A>,_US<B>,_US<C>,_US<D>,_US<E>]; | ||
<A,B,C,D,E,F>(targets: [_U<i,o,A>,_U<i,o,B>,_U<i,o,C>,_U<i,o,D>,_U<i,o,E>,_U<i,o,F>]): [_US<A>,_US<B>,_US<C>,_US<D>,_US<E>,_US<F>]; | ||
<A,B,C,D,E,F,G>(targets: [_U<i,o,A>,_U<i,o,B>,_U<i,o,C>,_U<i,o,D>,_U<i,o,E>,_U<i,o,F>,_U<i,o,G>]): [_US<A>,_US<B>,_US<C>,_US<D>,_US<E>,_US<F>,_US<G>]; | ||
<A,B,C,D,E,F,G,H>(targets: [_U<i,o,A>,_U<i,o,B>,_U<i,o,C>,_U<i,o,D>,_U<i,o,E>,_U<i,o,F>,_U<i,o,G>,_U<i,o,H>]): [_US<A>,_US<B>,_US<C>,_US<D>,_US<E>,_US<F>,_US<G>,_US<H>]; | ||
<A,B,C,D,E,F,G,H,I>(targets: [_U<i,o,A>,_U<i,o,B>,_U<i,o,C>,_U<i,o,D>,_U<i,o,E>,_U<i,o,F>,_U<i,o,G>,_U<i,o,H>,_U<i,o,I>]): [_US<A>,_US<B>,_US<C>,_US<D>,_US<E>,_US<F>,_US<G>,_US<H>,_US<I>]; | ||
<A,B,C,D,E,F,G,H,I,J>(targets: [_U<i,o,A>,_U<i,o,B>,_U<i,o,C>,_U<i,o,D>,_U<i,o,E>,_U<i,o,F>,_U<i,o,G>,_U<i,o,H>,_U<i,o,I>,_U<i,o,J>]): [_US<A>,_US<B>,_US<C>,_US<D>,_US<E>,_US<F>,_US<G>,_US<H>,_US<I>,_US<J>]; | ||
<A,B,C,D,E,F,G,H,I,J,K>(targets: [_U<i,o,A>,_U<i,o,B>,_U<i,o,C>,_U<i,o,D>,_U<i,o,E>,_U<i,o,F>,_U<i,o,G>,_U<i,o,H>,_U<i,o,I>,_U<i,o,J>,_U<i,o,K>]): [_US<A>,_US<B>,_US<C>,_US<D>,_US<E>,_US<F>,_US<G>,_US<H>,_US<I>,_US<J>,_US<K>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L>(targets: [_U<i,o,A>,_U<i,o,B>,_U<i,o,C>,_U<i,o,D>,_U<i,o,E>,_U<i,o,F>,_U<i,o,G>,_U<i,o,H>,_U<i,o,I>,_U<i,o,J>,_U<i,o,K>,_U<i,o,L>]): [_US<A>,_US<B>,_US<C>,_US<D>,_US<E>,_US<F>,_US<G>,_US<H>,_US<I>,_US<J>,_US<K>,_US<L>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M>(targets: [_U<i,o,A>,_U<i,o,B>,_U<i,o,C>,_U<i,o,D>,_U<i,o,E>,_U<i,o,F>,_U<i,o,G>,_U<i,o,H>,_U<i,o,I>,_U<i,o,J>,_U<i,o,K>,_U<i,o,L>,_U<i,o,M>]): [_US<A>,_US<B>,_US<C>,_US<D>,_US<E>,_US<F>,_US<G>,_US<H>,_US<I>,_US<J>,_US<K>,_US<L>,_US<M>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N>(targets: [_U<i,o,A>,_U<i,o,B>,_U<i,o,C>,_U<i,o,D>,_U<i,o,E>,_U<i,o,F>,_U<i,o,G>,_U<i,o,H>,_U<i,o,I>,_U<i,o,J>,_U<i,o,K>,_U<i,o,L>,_U<i,o,M>,_U<i,o,N>]): [_US<A>,_US<B>,_US<C>,_US<D>,_US<E>,_US<F>,_US<G>,_US<H>,_US<I>,_US<J>,_US<K>,_US<L>,_US<M>,_US<N>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O>(targets: [_U<i,o,A>,_U<i,o,B>,_U<i,o,C>,_U<i,o,D>,_U<i,o,E>,_U<i,o,F>,_U<i,o,G>,_U<i,o,H>,_U<i,o,I>,_U<i,o,J>,_U<i,o,K>,_U<i,o,L>,_U<i,o,M>,_U<i,o,N>,_U<i,o,O>]): [_US<A>,_US<B>,_US<C>,_US<D>,_US<E>,_US<F>,_US<G>,_US<H>,_US<I>,_US<J>,_US<K>,_US<L>,_US<M>,_US<N>,_US<O>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P>(targets: [_U<i,o,A>,_U<i,o,B>,_U<i,o,C>,_U<i,o,D>,_U<i,o,E>,_U<i,o,F>,_U<i,o,G>,_U<i,o,H>,_U<i,o,I>,_U<i,o,J>,_U<i,o,K>,_U<i,o,L>,_U<i,o,M>,_U<i,o,N>,_U<i,o,O>,_U<i,o,P>]): [_US<A>,_US<B>,_US<C>,_US<D>,_US<E>,_US<F>,_US<G>,_US<H>,_US<I>,_US<J>,_US<K>,_US<L>,_US<M>,_US<N>,_US<O>,_US<P>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q>(targets: [_U<i,o,A>,_U<i,o,B>,_U<i,o,C>,_U<i,o,D>,_U<i,o,E>,_U<i,o,F>,_U<i,o,G>,_U<i,o,H>,_U<i,o,I>,_U<i,o,J>,_U<i,o,K>,_U<i,o,L>,_U<i,o,M>,_U<i,o,N>,_U<i,o,O>,_U<i,o,P>,_U<i,o,Q>]): [_US<A>,_US<B>,_US<C>,_US<D>,_US<E>,_US<F>,_US<G>,_US<H>,_US<I>,_US<J>,_US<K>,_US<L>,_US<M>,_US<N>,_US<O>,_US<P>,_US<Q>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R>(targets: [_U<i,o,A>,_U<i,o,B>,_U<i,o,C>,_U<i,o,D>,_U<i,o,E>,_U<i,o,F>,_U<i,o,G>,_U<i,o,H>,_U<i,o,I>,_U<i,o,J>,_U<i,o,K>,_U<i,o,L>,_U<i,o,M>,_U<i,o,N>,_U<i,o,O>,_U<i,o,P>,_U<i,o,Q>,_U<i,o,R>]): [_US<A>,_US<B>,_US<C>,_US<D>,_US<E>,_US<F>,_US<G>,_US<H>,_US<I>,_US<J>,_US<K>,_US<L>,_US<M>,_US<N>,_US<O>,_US<P>,_US<Q>,_US<R>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S>(targets: [_U<i,o,A>,_U<i,o,B>,_U<i,o,C>,_U<i,o,D>,_U<i,o,E>,_U<i,o,F>,_U<i,o,G>,_U<i,o,H>,_U<i,o,I>,_U<i,o,J>,_U<i,o,K>,_U<i,o,L>,_U<i,o,M>,_U<i,o,N>,_U<i,o,O>,_U<i,o,P>,_U<i,o,Q>,_U<i,o,R>,_U<i,o,S>]): [_US<A>,_US<B>,_US<C>,_US<D>,_US<E>,_US<F>,_US<G>,_US<H>,_US<I>,_US<J>,_US<K>,_US<L>,_US<M>,_US<N>,_US<O>,_US<P>,_US<Q>,_US<R>,_US<S>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T>(targets: [_U<i,o,A>,_U<i,o,B>,_U<i,o,C>,_U<i,o,D>,_U<i,o,E>,_U<i,o,F>,_U<i,o,G>,_U<i,o,H>,_U<i,o,I>,_U<i,o,J>,_U<i,o,K>,_U<i,o,L>,_U<i,o,M>,_U<i,o,N>,_U<i,o,O>,_U<i,o,P>,_U<i,o,Q>,_U<i,o,R>,_U<i,o,S>,_U<i,o,T>]): [_US<A>,_US<B>,_US<C>,_US<D>,_US<E>,_US<F>,_US<G>,_US<H>,_US<I>,_US<J>,_US<K>,_US<L>,_US<M>,_US<N>,_US<O>,_US<P>,_US<Q>,_US<R>,_US<S>,_US<T>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U>(targets: [_U<i,o,A>,_U<i,o,B>,_U<i,o,C>,_U<i,o,D>,_U<i,o,E>,_U<i,o,F>,_U<i,o,G>,_U<i,o,H>,_U<i,o,I>,_U<i,o,J>,_U<i,o,K>,_U<i,o,L>,_U<i,o,M>,_U<i,o,N>,_U<i,o,O>,_U<i,o,P>,_U<i,o,Q>,_U<i,o,R>,_U<i,o,S>,_U<i,o,T>,_U<i,o,U>]): [_US<A>,_US<B>,_US<C>,_US<D>,_US<E>,_US<F>,_US<G>,_US<H>,_US<I>,_US<J>,_US<K>,_US<L>,_US<M>,_US<N>,_US<O>,_US<P>,_US<Q>,_US<R>,_US<S>,_US<T>,_US<U>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V>(targets: [_U<i,o,A>,_U<i,o,B>,_U<i,o,C>,_U<i,o,D>,_U<i,o,E>,_U<i,o,F>,_U<i,o,G>,_U<i,o,H>,_U<i,o,I>,_U<i,o,J>,_U<i,o,K>,_U<i,o,L>,_U<i,o,M>,_U<i,o,N>,_U<i,o,O>,_U<i,o,P>,_U<i,o,Q>,_U<i,o,R>,_U<i,o,S>,_U<i,o,T>,_U<i,o,U>,_U<i,o,V>]): [_US<A>,_US<B>,_US<C>,_US<D>,_US<E>,_US<F>,_US<G>,_US<H>,_US<I>,_US<J>,_US<K>,_US<L>,_US<M>,_US<N>,_US<O>,_US<P>,_US<Q>,_US<R>,_US<S>,_US<T>,_US<U>,_US<V>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W>(targets: [_U<i,o,A>,_U<i,o,B>,_U<i,o,C>,_U<i,o,D>,_U<i,o,E>,_U<i,o,F>,_U<i,o,G>,_U<i,o,H>,_U<i,o,I>,_U<i,o,J>,_U<i,o,K>,_U<i,o,L>,_U<i,o,M>,_U<i,o,N>,_U<i,o,O>,_U<i,o,P>,_U<i,o,Q>,_U<i,o,R>,_U<i,o,S>,_U<i,o,T>,_U<i,o,U>,_U<i,o,V>,_U<i,o,W>]): [_US<A>,_US<B>,_US<C>,_US<D>,_US<E>,_US<F>,_US<G>,_US<H>,_US<I>,_US<J>,_US<K>,_US<L>,_US<M>,_US<N>,_US<O>,_US<P>,_US<Q>,_US<R>,_US<S>,_US<T>,_US<U>,_US<V>,_US<W>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X>(targets: [_U<i,o,A>,_U<i,o,B>,_U<i,o,C>,_U<i,o,D>,_U<i,o,E>,_U<i,o,F>,_U<i,o,G>,_U<i,o,H>,_U<i,o,I>,_U<i,o,J>,_U<i,o,K>,_U<i,o,L>,_U<i,o,M>,_U<i,o,N>,_U<i,o,O>,_U<i,o,P>,_U<i,o,Q>,_U<i,o,R>,_U<i,o,S>,_U<i,o,T>,_U<i,o,U>,_U<i,o,V>,_U<i,o,W>,_U<i,o,X>]): [_US<A>,_US<B>,_US<C>,_US<D>,_US<E>,_US<F>,_US<G>,_US<H>,_US<I>,_US<J>,_US<K>,_US<L>,_US<M>,_US<N>,_US<O>,_US<P>,_US<Q>,_US<R>,_US<S>,_US<T>,_US<U>,_US<V>,_US<W>,_US<X>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y>(targets: [_U<i,o,A>,_U<i,o,B>,_U<i,o,C>,_U<i,o,D>,_U<i,o,E>,_U<i,o,F>,_U<i,o,G>,_U<i,o,H>,_U<i,o,I>,_U<i,o,J>,_U<i,o,K>,_U<i,o,L>,_U<i,o,M>,_U<i,o,N>,_U<i,o,O>,_U<i,o,P>,_U<i,o,Q>,_U<i,o,R>,_U<i,o,S>,_U<i,o,T>,_U<i,o,U>,_U<i,o,V>,_U<i,o,W>,_U<i,o,X>,_U<i,o,Y>]): [_US<A>,_US<B>,_US<C>,_US<D>,_US<E>,_US<F>,_US<G>,_US<H>,_US<I>,_US<J>,_US<K>,_US<L>,_US<M>,_US<N>,_US<O>,_US<P>,_US<Q>,_US<R>,_US<S>,_US<T>,_US<U>,_US<V>,_US<W>,_US<X>,_US<Y>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z>(targets: [_U<i,o,A>,_U<i,o,B>,_U<i,o,C>,_U<i,o,D>,_U<i,o,E>,_U<i,o,F>,_U<i,o,G>,_U<i,o,H>,_U<i,o,I>,_U<i,o,J>,_U<i,o,K>,_U<i,o,L>,_U<i,o,M>,_U<i,o,N>,_U<i,o,O>,_U<i,o,P>,_U<i,o,Q>,_U<i,o,R>,_U<i,o,S>,_U<i,o,T>,_U<i,o,U>,_U<i,o,V>,_U<i,o,W>,_U<i,o,X>,_U<i,o,Y>,_U<i,o,Z>]): [_US<A>,_US<B>,_US<C>,_US<D>,_US<E>,_US<F>,_US<G>,_US<H>,_US<I>,_US<J>,_US<K>,_US<L>,_US<M>,_US<N>,_US<O>,_US<P>,_US<Q>,_US<R>,_US<S>,_US<T>,_US<U>,_US<V>,_US<W>,_US<X>,_US<Y>,_US<Z>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$>(targets: [_U<i,o,A>,_U<i,o,B>,_U<i,o,C>,_U<i,o,D>,_U<i,o,E>,_U<i,o,F>,_U<i,o,G>,_U<i,o,H>,_U<i,o,I>,_U<i,o,J>,_U<i,o,K>,_U<i,o,L>,_U<i,o,M>,_U<i,o,N>,_U<i,o,O>,_U<i,o,P>,_U<i,o,Q>,_U<i,o,R>,_U<i,o,S>,_U<i,o,T>,_U<i,o,U>,_U<i,o,V>,_U<i,o,W>,_U<i,o,X>,_U<i,o,Y>,_U<i,o,Z>,_U<i,o,$>]): [_US<A>,_US<B>,_US<C>,_US<D>,_US<E>,_US<F>,_US<G>,_US<H>,_US<I>,_US<J>,_US<K>,_US<L>,_US<M>,_US<N>,_US<O>,_US<P>,_US<Q>,_US<R>,_US<S>,_US<T>,_US<U>,_US<V>,_US<W>,_US<X>,_US<Y>,_US<Z>,_US<$>]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,_>(targets: [_U<i,o,A>,_U<i,o,B>,_U<i,o,C>,_U<i,o,D>,_U<i,o,E>,_U<i,o,F>,_U<i,o,G>,_U<i,o,H>,_U<i,o,I>,_U<i,o,J>,_U<i,o,K>,_U<i,o,L>,_U<i,o,M>,_U<i,o,N>,_U<i,o,O>,_U<i,o,P>,_U<i,o,Q>,_U<i,o,R>,_U<i,o,S>,_U<i,o,T>,_U<i,o,U>,_U<i,o,V>,_U<i,o,W>,_U<i,o,X>,_U<i,o,Y>,_U<i,o,Z>,_U<i,o,$>,_U<i,o,_>]): [_US<A>,_US<B>,_US<C>,_US<D>,_US<E>,_US<F>,_US<G>,_US<H>,_US<I>,_US<J>,_US<K>,_US<L>,_US<M>,_US<N>,_US<O>,_US<P>,_US<Q>,_US<R>,_US<S>,_US<T>,_US<U>,_US<V>,_US<W>,_US<X>,_US<Y>,_US<Z>,_US<$>,_US<_>]; | ||
// writtable section | ||
<T extends E_UpdaterMultiple_CfgExemplar<i,o>>(targets: T): { | ||
[P in keyof T]: T[P] extends ((state: o, upValue: infer U) => i) ? _US<U> : never | ||
} | ||
} | ||
} | ||
interface E_UpdaterPartial<I, O> { | ||
updater: E_UpdaterMultiplePartial<I, O> & { | ||
<U>(func?: (state: O, upValue: U, upPrev: U) => I): Equals<U, unknown> extends true ? Signal : Signal<U, Will<U>> | ||
} | ||
} | ||
interface E_UpdatePartial<I, O> { | ||
update: { | ||
@@ -102,4 +218,6 @@ (func?: (value: O) => I): void // untracked by default | ||
by: { | ||
<T>(re: Re<Will<T>>, updater?: (state: O, reValue: T, rePrev: WillExpand<Will<T>>) => I) | ||
<T>(re: Re<T>, updater?: (state: O, reValue: T, rePrev: T) => I) | ||
once: { | ||
<T>(re: Re<Will<T>>, updater?: (state: O, reValue: T, rePrev: WillExpand<Will<T>>) => I) | ||
<T>(re: Re<T>, updater?: (state: O, reValue: T, rePrev: T) => I) | ||
@@ -109,95 +227,130 @@ } | ||
} | ||
pre: { | ||
<N>(func?: (value: N) => I): Value<N, O> // tracked by default | ||
untrack<N>(func?: (value: N) => I): Value<N, O> | ||
filter: { | ||
(func?: (value: O) => any): Value<I, O> // tracked by default | ||
untrack(func?: (value: O) => any): Value<I, O> | ||
not: { // tracked by default | ||
(func?: (value: O) => any): Value<I, O> | ||
untrack(func?: (value: O) => any): Value<I, O> | ||
} | ||
} | ||
interface E_FilterTrackedPartial<O, Ret, WillRet> { | ||
filter: { | ||
(func: (value: WillExpand<O>) => any, emptyValue: WillExtract<O>): Ret // tracked by default | ||
(func?: (value: WillExpand<O>) => any): WillRet | ||
untrack(func: (value: WillExpand<O>) => any, emptyValue: WillExtract<O>): Ret | ||
untrack(func?: (value: WillExpand<O>) => any): WillRet | ||
not: { | ||
(func: (value: WillExpand<O>) => any, emptyValue: WillExtract<O>): Ret // tracked by default | ||
(func?: (value: WillExpand<O>) => any): WillRet | ||
untrack(func: (value: WillExpand<O>) => any, emptyValue: WillExtract<O>): Ret | ||
untrack(func?: (value: WillExpand<O>) => any): WillRet | ||
} | ||
} | ||
} | ||
interface E_FilterUnTrackedPartial<O, Ret, WillRet> { | ||
filter: { | ||
(func: (value: WillExpand<O>) => any, emptyValue: WillExtract<O>): Ret // untracked by default | ||
(func?: (value: WillExpand<O>) => any): WillRet | ||
track(func: (value: WillExpand<O>) => any, emptyValue: WillExtract<O>): Ret | ||
track(func?: (value: WillExpand<O>) => any): WillRet | ||
not: { | ||
(func: (value: WillExpand<O>) => any, emptyValue: WillExtract<O>): Ret // untracked by default | ||
(func?: (value: WillExpand<O>) => any): WillRet | ||
track(func: (value: WillExpand<O>) => any, emptyValue: WillExtract<O>): Ret | ||
track(func?: (value: WillExpand<O>) => any): WillRet | ||
} | ||
} | ||
} | ||
interface E_Signal<I, O> extends | ||
interface E_Readable<O, Ret> extends | ||
E_GetPartial<O>, | ||
E_SyncToPartial<O, Signal<I, O>>, | ||
E_UpdaterPartial<I, O> { | ||
E_PromisePartial<O>, | ||
E_SyncToPartial<O, Ret>, | ||
E_OpPartial<Ret>, | ||
E_SelectPartial<WillExpand<O>> {} | ||
// readable section | ||
interface E_Writtable<I, O, Ret> extends | ||
E_Readable<O, Ret>, | ||
E_UpdatePartial<I, WillExpand<O>>, | ||
E_UpdaterPartial<I, WillExpand<O>> {} | ||
op<R>(func: () => R): R extends void ? Signal<I, O> : R | ||
filter: { | ||
(func?: (value: O) => any): Signal<I, O> // untracked by default | ||
track(func?: (value: O) => any): Signal<I, O> | ||
not: { | ||
(func?: (value: O) => any): Signal<I, O> // untracked by default | ||
track(func?: (value: O) => any): Signal<I, O> | ||
} | ||
interface E_Value<I, O> extends | ||
E_Writtable<I, O, Value<I, O>>, | ||
E_FilterTrackedPartial<O, Value<I, WillExtract<O>>, Value<I, WillEnsure<O>>> { | ||
map: { | ||
<R>(func: (value: WillExpand<O>) => R): Value<I, R> // tracked by default | ||
untrack<R>(func: (value: WillExpand<O>) => R): Value<I, R> | ||
to(): Value<I, void> | ||
to<R>(value: R): Value<I, R> | ||
} | ||
select: { | ||
<R>(func?: (value: O) => R): Selector<R> // tracked by default | ||
untrack<R>(func?: (value: O) => R): Selector<R> | ||
multiple: { | ||
(cfg: any[]): any // TODO: .select.multiple typings | ||
untrack(cfg: any[]): any | ||
} | ||
pre: E_FilterTrackedPartial<I, Value<I, O>, Value<I, WillEnsure<O>>> & { | ||
<N>(func?: (value: N, state: WillExpand<O>) => I): Value<N, O> // tracked by default | ||
untrack<N>(func?: (value: N, state: WillExpand<O>) => I): Value<N, O> | ||
} | ||
wrap: { | ||
<N, R>(pre: (value: N, state: WillExpand<O>) => I, map: (value: WillExpand<O>) => R): Value<N, R> // tracked by default | ||
untrack<N, R>(pre: (value: N, state: WillExpand<O>) => I, map: (value: WillExpand<O>) => R): Value<N, R> | ||
} | ||
} | ||
interface E_ValueReadonly<O> extends | ||
E_Readable<O, ValueReadonly<O>>, | ||
E_FilterTrackedPartial<O, ValueReadonly<WillExtract<O>>, ValueReadonly<WillEnsure<O>>> { | ||
map: { | ||
<R>(func: (value: O) => R): Signal<I, R> // untracked by default | ||
track<R>(func: (value: O) => R): Signal<I, R> | ||
<R>(func: (value: WillExpand<O>) => R): ValueReadonly<R> // tracked by default | ||
untrack<R>(func: (value: WillExpand<O>) => R): ValueReadonly<R> | ||
to(): ValueReadonly<void> | ||
to<R>(value: R): ValueReadonly<R> | ||
} | ||
} | ||
flow: any // TODO: .flow typings | ||
join: any // TODO: .join typings | ||
promise: Promise<O> | ||
interface E_Signal<I, O> extends | ||
E_Writtable<I, O, Signal<I, O>>, | ||
E_FilterUnTrackedPartial<O, Signal<I, WillExtract<O>>, Signal<I, WillEnsure<O>>> { | ||
// writtable section | ||
update: { | ||
(func?: (value: O) => I): void // untracked by default | ||
track(func?: (value: O) => I): void | ||
by: { | ||
<T>(re: Re<T>, updater?: (state: O, reValue: T, rePrev: T) => I) | ||
once: { | ||
<T>(re: Re<T>, updater?: (state: O, reValue: T, rePrev: T) => I) | ||
} | ||
} | ||
map: { | ||
<R>(func: (value: WillExpand<O>) => R): Signal<I, R> // untracked by default | ||
track<R>(func: (value: WillExpand<O>) => R): Signal<I, R> | ||
to(): Signal<I, void> | ||
to<R>(value: R): Signal<I, R> | ||
} | ||
pre: { | ||
<N>(func?: (value: N) => I): Signal<N, O> // untracked by default | ||
track<N>(func?: (value: N) => I): Signal<N, O> | ||
filter: { | ||
(func?: (value: O) => any): Signal<I, O> // untracked by default | ||
track(func?: (value: O) => any): Signal<I, O> | ||
not: { // untracked by default | ||
(func?: (value: O) => any): Signal<I, O> | ||
track(func?: (value: O) => any): Signal<I, O> | ||
} | ||
} | ||
pre: E_FilterUnTrackedPartial<I, Signal<I, O>, Signal<I, WillEnsure<O>>> & { | ||
<N>(func?: (value: N, state: WillExpand<O>) => I): Signal<N, O> // untracked by default | ||
track<N>(func?: (value: N, state: WillExpand<O>) => I): Signal<N, O> | ||
} | ||
wrap: { | ||
<N, R>(pre: (value: N, state: WillExpand<O>) => I, map: (value: WillExpand<O>) => R): Signal<N, R> // untracked by default | ||
track<N, R>(pre: (value: N, state: WillExpand<O>) => I, map: (value: WillExpand<O>) => R): Signal<N, R> | ||
} | ||
as: { | ||
value(): Value<I, O> | ||
} | ||
} | ||
type E_SetPartial<T> = Equals<T, void> extends true | ||
? { (): void; set(): void } | ||
: { (value: T): void; set(value: T): void } | ||
interface E_SignalReadonly<O> extends | ||
E_Readable<O, SignalReadonly<O>>, | ||
E_FilterUnTrackedPartial<O, SignalReadonly<WillExtract<O>>, SignalReadonly<WillEnsure<O>>> { | ||
type E_ValPartial<I, O> = Equals<I, O> extends true ? { val: O } : { readonly val: O } | ||
map: { | ||
<R>(func: (value: WillExpand<O>) => R): SignalReadonly<R> // untracked by default | ||
track<R>(func: (value: WillExpand<O>) => R): SignalReadonly<R> | ||
to(): SignalReadonly<void> | ||
to<R>(value: R): SignalReadonly<R> | ||
} | ||
as: { | ||
value(): ValueReadonly<O> | ||
} | ||
} | ||
type Value<I = void, O = I> = E_SetPartial<I> & E_ValPartial<I, O> & E_Value<I, O> | ||
type Signal<I = void, O = I> = E_SetPartial<I> & E_ValPartial<I, O> & E_Signal<I, O> | ||
type Value<I = void, 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 Selector<O> = { | ||
get: () => O; | ||
val: O; | ||
select: any; | ||
} | ||
type ValueReadonly<O> = E_ValReadonlyPartial<WillExpand<O>> & E_ValueReadonly<O> | ||
type SignalReadonly<O> = E_ValReadonlyPartial<WillExpand<O>> & E_SignalReadonly<O> | ||
@@ -211,30 +364,125 @@ | ||
type ValueEntry = { | ||
<T>(initial?: T): Value<T>; | ||
(): Value; | ||
<T>(): Value<T, Will<T>>; | ||
<T>(initial: T): Value<T>; | ||
trigger: { | ||
(initial?: any): any; | ||
(): Value; | ||
<T>(): Value<T, Will<T>>; | ||
<T>(initial: T): Value<T>; | ||
flag: { | ||
(initial?: any): any; | ||
invert: { (initial?: any): any } | ||
(): Value<boolean>; | ||
(initial: boolean): Value<boolean>; | ||
invert: { | ||
(): Value<boolean>; | ||
(initial: boolean): Value<boolean>; | ||
} | ||
} | ||
}; | ||
from: { (get: () => any, set?: (v) => any): any }, | ||
combine: { (cfg: any): any } | ||
} | ||
type SelectorEntry = { | ||
(fn: () => any): any; | ||
from: { | ||
<O>(get: Re<O>): ValueReadonly<O> | ||
<O, I>(get: Re<O>, set: ((value: I, state: O) => void) | ReWrit<I>): Value<I, O> | ||
} | ||
combine: { | ||
<A,r>(targets: [Re<A>], fn: (values: [A]) => r): ValueReadonly<r>; | ||
<A,B,r>(targets: [Re<A>,Re<B>], fn: (values: [A,B]) => r): ValueReadonly<r>; | ||
<A,B,C,r>(targets: [Re<A>,Re<B>,Re<C>], fn: (values: [A,B,C]) => r): ValueReadonly<r>; | ||
<A,B,C,D,r>(targets: [Re<A>,Re<B>,Re<C>,Re<D>], fn: (values: [A,B,C,D]) => r): ValueReadonly<r>; | ||
<A,B,C,D,E,r>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>], fn: (values: [A,B,C,D,E]) => r): ValueReadonly<r>; | ||
<A,B,C,D,E,F,r>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>], fn: (values: [A,B,C,D,E,F]) => r): ValueReadonly<r>; | ||
<A,B,C,D,E,F,G,r>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>], fn: (values: [A,B,C,D,E,F,G]) => r): ValueReadonly<r>; | ||
<A,B,C,D,E,F,G,H,r>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>], fn: (values: [A,B,C,D,E,F,G,H]) => r): ValueReadonly<r>; | ||
<A,B,C,D,E,F,G,H,I,r>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>], fn: (values: [A,B,C,D,E,F,G,H,I]) => r): ValueReadonly<r>; | ||
<A,B,C,D,E,F,G,H,I,J,r>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>], fn: (values: [A,B,C,D,E,F,G,H,I,J]) => r): ValueReadonly<r>; | ||
<A,B,C,D,E,F,G,H,I,J,K,r>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>], fn: (values: [A,B,C,D,E,F,G,H,I,J,K]) => r): ValueReadonly<r>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,r>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>], fn: (values: [A,B,C,D,E,F,G,H,I,J,K,L]) => r): ValueReadonly<r>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,r>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>], fn: (values: [A,B,C,D,E,F,G,H,I,J,K,L,M]) => r): ValueReadonly<r>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,r>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>,Re<N>], fn: (values: [A,B,C,D,E,F,G,H,I,J,K,L,M,N]) => r): ValueReadonly<r>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,r>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>,Re<N>,Re<O>], fn: (values: [A,B,C,D,E,F,G,H,I,J,K,L,M,N,O]) => r): ValueReadonly<r>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,r>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>,Re<N>,Re<O>,Re<P>], fn: (values: [A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P]) => r): ValueReadonly<r>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,r>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>,Re<N>,Re<O>,Re<P>,Re<Q>], fn: (values: [A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q]) => r): ValueReadonly<r>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,r>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>,Re<N>,Re<O>,Re<P>,Re<Q>,Re<R>], fn: (values: [A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R]) => r): ValueReadonly<r>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,r>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>,Re<N>,Re<O>,Re<P>,Re<Q>,Re<R>,Re<S>], fn: (values: [A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S]) => r): ValueReadonly<r>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,r>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>,Re<N>,Re<O>,Re<P>,Re<Q>,Re<R>,Re<S>,Re<T>], fn: (values: [A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T]) => r): ValueReadonly<r>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,r>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>,Re<N>,Re<O>,Re<P>,Re<Q>,Re<R>,Re<S>,Re<T>,Re<U>], fn: (values: [A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U]) => r): ValueReadonly<r>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,r>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>,Re<N>,Re<O>,Re<P>,Re<Q>,Re<R>,Re<S>,Re<T>,Re<U>,Re<V>], fn: (values: [A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V]) => r): ValueReadonly<r>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,r>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>,Re<N>,Re<O>,Re<P>,Re<Q>,Re<R>,Re<S>,Re<T>,Re<U>,Re<V>,Re<W>], fn: (values: [A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W]) => r): ValueReadonly<r>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,r>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>,Re<N>,Re<O>,Re<P>,Re<Q>,Re<R>,Re<S>,Re<T>,Re<U>,Re<V>,Re<W>,Re<X>], fn: (values: [A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X]) => r): ValueReadonly<r>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,r>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>,Re<N>,Re<O>,Re<P>,Re<Q>,Re<R>,Re<S>,Re<T>,Re<U>,Re<V>,Re<W>,Re<X>,Re<Y>], fn: (values: [A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y]) => r): ValueReadonly<r>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,r>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>,Re<N>,Re<O>,Re<P>,Re<Q>,Re<R>,Re<S>,Re<T>,Re<U>,Re<V>,Re<W>,Re<X>,Re<Y>,Re<Z>], fn: (values: [A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z]) => r): ValueReadonly<r>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,r>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>,Re<N>,Re<O>,Re<P>,Re<Q>,Re<R>,Re<S>,Re<T>,Re<U>,Re<V>,Re<W>,Re<X>,Re<Y>,Re<Z>,Re<$>], fn: (values: [A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$]) => r): ValueReadonly<r>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,_,r>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>,Re<N>,Re<O>,Re<P>,Re<Q>,Re<R>,Re<S>,Re<T>,Re<U>,Re<V>,Re<W>,Re<X>,Re<Y>,Re<Z>,Re<$>,Re<_>], fn: (values: [A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,_]) => r): ValueReadonly<r>; | ||
<T extends Re_CfgExemplar, r>(targets: T, fn: (values: { | ||
[P in keyof T]: T[P] extends { get: () => infer R } ? R : T[P] extends (() => infer R) ? R : T[P] | ||
}) => r): ValueReadonly<r> | ||
<A>(targets: [Re<A>]): ValueReadonly<[A]>; | ||
<A,B>(targets: [Re<A>,Re<B>]): ValueReadonly<[A,B]>; | ||
<A,B,C>(targets: [Re<A>,Re<B>,Re<C>]): ValueReadonly<[A,B,C]>; | ||
<A,B,C,D>(targets: [Re<A>,Re<B>,Re<C>,Re<D>]): ValueReadonly<[A,B,C,D]>; | ||
<A,B,C,D,E>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>]): ValueReadonly<[A,B,C,D,E]>; | ||
<A,B,C,D,E,F>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>]): ValueReadonly<[A,B,C,D,E,F]>; | ||
<A,B,C,D,E,F,G>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>]): ValueReadonly<[A,B,C,D,E,F,G]>; | ||
<A,B,C,D,E,F,G,H>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>]): ValueReadonly<[A,B,C,D,E,F,G,H]>; | ||
<A,B,C,D,E,F,G,H,I>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>]): ValueReadonly<[A,B,C,D,E,F,G,H,I]>; | ||
<A,B,C,D,E,F,G,H,I,J>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>]): ValueReadonly<[A,B,C,D,E,F,G,H,I,J]>; | ||
<A,B,C,D,E,F,G,H,I,J,K>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>]): ValueReadonly<[A,B,C,D,E,F,G,H,I,J,K]>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>]): ValueReadonly<[A,B,C,D,E,F,G,H,I,J,K,L]>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>]): ValueReadonly<[A,B,C,D,E,F,G,H,I,J,K,L,M]>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>,Re<N>]): ValueReadonly<[A,B,C,D,E,F,G,H,I,J,K,L,M,N]>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>,Re<N>,Re<O>]): ValueReadonly<[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O]>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>,Re<N>,Re<O>,Re<P>]): ValueReadonly<[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P]>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>,Re<N>,Re<O>,Re<P>,Re<Q>]): ValueReadonly<[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q]>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>,Re<N>,Re<O>,Re<P>,Re<Q>,Re<R>]): ValueReadonly<[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R]>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>,Re<N>,Re<O>,Re<P>,Re<Q>,Re<R>,Re<S>]): ValueReadonly<[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S]>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>,Re<N>,Re<O>,Re<P>,Re<Q>,Re<R>,Re<S>,Re<T>]): ValueReadonly<[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T]>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>,Re<N>,Re<O>,Re<P>,Re<Q>,Re<R>,Re<S>,Re<T>,Re<U>]): ValueReadonly<[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U]>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>,Re<N>,Re<O>,Re<P>,Re<Q>,Re<R>,Re<S>,Re<T>,Re<U>,Re<V>]): ValueReadonly<[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V]>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>,Re<N>,Re<O>,Re<P>,Re<Q>,Re<R>,Re<S>,Re<T>,Re<U>,Re<V>,Re<W>]): ValueReadonly<[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W]>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>,Re<N>,Re<O>,Re<P>,Re<Q>,Re<R>,Re<S>,Re<T>,Re<U>,Re<V>,Re<W>,Re<X>]): ValueReadonly<[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X]>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>,Re<N>,Re<O>,Re<P>,Re<Q>,Re<R>,Re<S>,Re<T>,Re<U>,Re<V>,Re<W>,Re<X>,Re<Y>]): ValueReadonly<[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y]>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>,Re<N>,Re<O>,Re<P>,Re<Q>,Re<R>,Re<S>,Re<T>,Re<U>,Re<V>,Re<W>,Re<X>,Re<Y>,Re<Z>]): ValueReadonly<[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z]>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>,Re<N>,Re<O>,Re<P>,Re<Q>,Re<R>,Re<S>,Re<T>,Re<U>,Re<V>,Re<W>,Re<X>,Re<Y>,Re<Z>,Re<$>]): ValueReadonly<[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$]>; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,_>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>,Re<N>,Re<O>,Re<P>,Re<Q>,Re<R>,Re<S>,Re<T>,Re<U>,Re<V>,Re<W>,Re<X>,Re<Y>,Re<Z>,Re<$>,Re<_>]): ValueReadonly<[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,_]>; | ||
<T extends Re_CfgExemplar>(targets: T): ValueReadonly<{ | ||
[P in keyof T]: T[P] extends { get: () => infer R } ? R : T[P] extends (() => infer R) ? R : T[P] | ||
}> | ||
} | ||
} | ||
type SignalEntry = { | ||
<T>(initial?: T): Signal<T>; | ||
(): Signal; | ||
<T>(): Signal<T, Will<T>>; | ||
<T>(initial: T): Signal<T>; | ||
trigger: { | ||
(initial?: any): any; | ||
(): Signal; | ||
<T>(): Signal<T, Will<T>>; | ||
<T>(initial: T): Signal<T>; | ||
flag: { | ||
(initial?: any): any; | ||
invert: { (initial?: any): any } | ||
(): Signal<boolean>; | ||
(initial: boolean): Signal<boolean>; | ||
invert: { | ||
(): Signal<boolean>; | ||
(initial: boolean): Signal<boolean>; | ||
} | ||
} | ||
}; | ||
from: { (get: () => any, set?: (v) => any): any }, | ||
combine: { (cfg: any): any } | ||
from: { | ||
<O>(get: Re<O>): SignalReadonly<O> | ||
<O, I>(get: Re<O>, set: ((value: I, state: O) => void) | ReWrit<I>): Signal<I, O> | ||
} | ||
}; | ||
@@ -245,26 +493,2 @@ | ||
// | ||
// Realar external api typings | ||
// | ||
type Local = { | ||
inject(fn: () => void): void; | ||
} | ||
type Contextual = { | ||
stop: () => void; | ||
} | ||
type Isolate = { | ||
(fn): () => void; | ||
unsafe: () => () => () => void; | ||
} | ||
type Transaction = { | ||
<T>(fn: () => T): T; | ||
unsafe: () => () => void; | ||
} | ||
type Untrack = { | ||
<T>(fn: () => T): T; | ||
unsafe: () => () => void; | ||
} | ||
// | ||
// Realar external api typings for React | ||
@@ -280,3 +504,3 @@ // | ||
type UseScoped = { | ||
<M>(target: (new (init?: any) => M) | ((init?: any) => M)): M; | ||
<M>(target: (new () => M) | (() => M)): M; | ||
} | ||
@@ -293,10 +517,4 @@ type UseLocal = { | ||
type UseValues_CfgExemplar = { | ||
[key: string]: Re<any> | ||
} | ||
type UseValues_ExpandCfgTargets<T> = { | ||
[P in keyof T]: T[P] extends Re<infer Re_T> ? Re_T : T[P] | ||
} | ||
type UseValues = { | ||
<T extends UseValues_CfgExemplar>(targets: T, deps?: any[]): UseValues_ExpandCfgTargets<T> | ||
<A>(targets: [Re<A>], deps?: any[]): [A]; | ||
<A,B>(targets: [Re<A>,Re<B>], deps?: any[]): [A,B]; | ||
@@ -329,3 +547,6 @@ <A,B,C>(targets: [Re<A>,Re<B>,Re<C>], deps?: any[]): [A,B,C]; | ||
<A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,_>(targets: [Re<A>,Re<B>,Re<C>,Re<D>,Re<E>,Re<F>,Re<G>,Re<H>,Re<I>,Re<J>,Re<K>,Re<L>,Re<M>,Re<N>,Re<O>,Re<P>,Re<Q>,Re<R>,Re<S>,Re<T>,Re<U>,Re<V>,Re<W>,Re<X>,Re<Y>,Re<Z>,Re<$>,Re<_>], deps?: any[]): [A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,_]; | ||
<A>(targets: [Re<A>], deps?: any[]): [A]; | ||
<T extends Re_CfgExemplar>(targets: T, deps?: any[]): { | ||
[P in keyof T]: T[P] extends { get: () => infer R } ? R : T[P] extends (() => infer R) ? R : T[P] | ||
} | ||
} | ||
@@ -343,3 +564,3 @@ | ||
type PoolEntry_BodyExemplar = { | ||
(...args: any[]): Promise<any>; | ||
(...args: never[]): Promise<unknown>; | ||
} | ||
@@ -351,5 +572,5 @@ type PoolEntry = { | ||
type Pool<K> = K & { | ||
count: any; | ||
threads: any; | ||
pending: any; | ||
count: ValueReadonly<number>; | ||
threads: ValueReadonly<(() => void)[]>; | ||
pending: ValueReadonly<boolean>; | ||
}; |
Sorry, the diff of this file is not supported yet
213155
2892
173