Comparing version 0.5.21 to 0.5.22
import { FC } from 'react'; | ||
import { transaction, untrack } from 'reactive-box'; | ||
export { value, selector, prop, cache, signal, ready, on, once, effect, sync, cycle, loop, pool, stoppable, isolate, shared, initial, observe, useValue, useLocal, useShared, useScoped, Scope, free, mock, unmock, transaction, untrack, Ensurable, }; | ||
export { value, selector, prop, cache, signal, ready, on, once, effect, sync, cycle, loop, pool, stoppable, isolate, shared, initial, observe, useValue, useLocal, useShared, useScoped, Scope, free, mock, unmock, transaction, untrack, Ensurable, Selector, Value, Signal }; | ||
declare type Ensurable<T> = T | void; | ||
@@ -16,3 +16,5 @@ declare type Callable<T> = { | ||
} & [() => T] & { | ||
wrap<M>(get: (data: T) => M): Selector<M>; | ||
view<P>(get: (data: T) => P): Selector<P>; | ||
select<P>(get: (data: T) => P): Selector<P>; | ||
select(): Selector<T>; | ||
watch(listener: (value: T, prev?: T) => void): () => void; | ||
@@ -32,5 +34,11 @@ }; | ||
wrap<M = T>(set: (data: M) => T): Value<M, K>; | ||
view<P>(get: (data: K) => P): Value<T, P>; | ||
select<P>(get: (data: K) => P): Selector<P>; | ||
select(): Selector<K>; | ||
watch(listener: (value: K, prev?: K) => void): () => void; | ||
reset(): void; | ||
}; | ||
declare type Signal<T, K = T, E = {}> = Callable<T> & Pick<Promise<T>, 'then' | 'catch' | 'finally'> & { | ||
declare type Signal<T, K = T, E = {}, R = { | ||
reset(): void; | ||
}> = Callable<T> & Pick<Promise<T>, 'then' | 'catch' | 'finally'> & { | ||
0: () => K; | ||
@@ -41,11 +49,20 @@ 1: (value: T) => void; | ||
} & [() => K, (value: T) => void] & { | ||
wrap<P>(set: () => T, get: (data: K) => P): Signal<void, P, E>; | ||
wrap<P, M = T>(set: (data: M) => T, get: (data: K) => P): Signal<M, P>; | ||
wrap(set: () => T): Signal<void, K, E>; | ||
wrap<M = T>(set: (data: M) => T): Signal<M, K, E>; | ||
wrap<P>(set: () => T, get: (data: K) => P): Signal<void, P, E, R>; | ||
wrap<P, M = T>(set: (data: M) => T, get: (data: K) => P): Signal<M, P, E, R>; | ||
wrap(set: () => T): Signal<void, K, E, R>; | ||
wrap<M = T>(set: (data: M) => T): Signal<M, K, E, R>; | ||
view<P>(get: (data: K) => P): Signal<T, P, E, R>; | ||
select<P>(get: (data: K) => P): Selector<P>; | ||
select(): Selector<K>; | ||
watch(listener: (value: K extends Ensurable<infer P> ? P : K, prev?: K) => void): () => void; | ||
} & E; | ||
} & R & E; | ||
declare type StopSignal = Signal<void, boolean, {}, {}>; | ||
declare type Reactionable<T> = { | ||
0: () => T; | ||
} | [() => T] | (() => T); | ||
declare type Pool<K> = K & { | ||
count: number; | ||
threads: StopSignal[]; | ||
pending: boolean; | ||
}; | ||
declare function value<T = void>(): Value<T>; | ||
@@ -56,18 +73,9 @@ declare function value<T = void>(init: T): Value<T>; | ||
declare function signal<T = void>(init: T): Signal<T>; | ||
declare type ResetedSignal = { | ||
reset(): void; | ||
}; | ||
declare function ready<T = void>(): Signal<T, Ensurable<T>, ResetedSignal & { | ||
to(value: T): Signal<void, Ensurable<T>, ResetedSignal>; | ||
declare function ready<T = void>(): Signal<T, Ensurable<T>, { | ||
to(value: T): Signal<void, Ensurable<T>>; | ||
}>; | ||
declare function ready<T = void>(init: T): Signal<T, T, ResetedSignal & { | ||
to(value: T): Signal<void, T, ResetedSignal>; | ||
declare function ready<T = void>(init: T): Signal<T, T, { | ||
to(value: T): Signal<void, T>; | ||
}>; | ||
declare type StopSignal = Signal<void, boolean>; | ||
declare function loop(body: () => Promise<any>): () => void; | ||
declare type Pool<K> = K & { | ||
count: number; | ||
threads: StopSignal[]; | ||
pending: boolean; | ||
}; | ||
declare function stoppable(): StopSignal; | ||
@@ -74,0 +82,0 @@ declare function pool<K extends () => Promise<any>>(body: K): Pool<K>; |
@@ -57,2 +57,3 @@ "use strict"; | ||
def_format(set, get, set); | ||
set.reset = () => set(init); | ||
return set; | ||
@@ -78,4 +79,5 @@ } | ||
}; | ||
resolve = def_promisify(fn); | ||
def_format(fn, () => get()[0], fn, 1); | ||
resolve = def_promisify(fn); | ||
fn.reset = () => set([init]); | ||
return fn; | ||
@@ -95,2 +97,4 @@ } | ||
}; | ||
resolve = def_promisify(fn); | ||
def_format(fn, () => get()[0], fn, 1, 1); | ||
if (!no_reset) { | ||
@@ -103,4 +107,2 @@ fn.reset = () => { | ||
} | ||
def_format(fn, () => get()[0], fn, 1, 1); | ||
resolve = def_promisify(fn); | ||
return fn; | ||
@@ -141,4 +143,8 @@ } | ||
} | ||
ctx.wrap = (set, get) => wrap(ctx, set, get); | ||
if (set) { | ||
ctx.wrap = (set, get) => wrap(ctx, set, get); | ||
} | ||
ctx.view = (get) => wrap(ctx, 0, get); | ||
ctx.watch = (fn) => on(ctx, fn); | ||
ctx.select = (fn) => selector(fn ? () => fn(get()) : get); | ||
} | ||
@@ -156,9 +162,2 @@ function def_promisify(ctx) { | ||
const source_set = target[1]; | ||
if (!get && set && !source_set) { | ||
get = set; | ||
set = 0; | ||
} | ||
if (set && !source_set) { | ||
throw new Error('Incorrect wrapping'); | ||
} | ||
let dest; | ||
@@ -165,0 +164,0 @@ let dest_set; |
{ | ||
"name": "realar", | ||
"version": "0.5.21", | ||
"version": "0.5.22", | ||
"description": "React state manager", | ||
@@ -88,3 +88,3 @@ "repository": { | ||
}, | ||
"gitHead": "2f51cac6f3df28e96b3054548c20111dc8ee2528" | ||
"gitHead": "08b0af6751a11faaccea9069f7d4fd424f3ab550" | ||
} |
@@ -33,3 +33,7 @@ import React, { Context, FC } from 'react'; | ||
untrack, | ||
Ensurable, | ||
Selector, | ||
Value, | ||
Signal | ||
}; | ||
@@ -96,3 +100,5 @@ | ||
} & [() => T] & { | ||
wrap<M>(get: (data: T) => M): Selector<M>; | ||
view<P>(get: (data: T) => P): Selector<P>; | ||
select<P>(get: (data: T) => P): Selector<P>; | ||
select(): Selector<T>; | ||
@@ -115,6 +121,10 @@ watch(listener: (value: T, prev?: T) => void): () => void; | ||
view<P>(get: (data: K) => P): Value<T, P>; | ||
select<P>(get: (data: K) => P): Selector<P>; | ||
select(): Selector<K>; | ||
watch(listener: (value: K, prev?: K) => void): () => void; | ||
reset(): void; | ||
}; | ||
type Signal<T, K = T, E = {}> = Callable<T> & | ||
type Signal<T, K = T, E = {}, R = { reset(): void }> = Callable<T> & | ||
Pick<Promise<T>, 'then' | 'catch' | 'finally'> & { | ||
@@ -126,11 +136,21 @@ 0: () => K; | ||
} & [() => K, (value: T) => void] & { | ||
wrap<P>(set: () => T, get: (data: K) => P): Signal<void, P, E>; | ||
wrap<P, M = T>(set: (data: M) => T, get: (data: K) => P): Signal<M, P>; | ||
wrap(set: () => T): Signal<void, K, E>; | ||
wrap<M = T>(set: (data: M) => T): Signal<M, K, E>; | ||
wrap<P>(set: () => T, get: (data: K) => P): Signal<void, P, E, R>; | ||
wrap<P, M = T>(set: (data: M) => T, get: (data: K) => P): Signal<M, P, E, R>; | ||
wrap(set: () => T): Signal<void, K, E, R>; | ||
wrap<M = T>(set: (data: M) => T): Signal<M, K, E, R>; | ||
view<P>(get: (data: K) => P): Signal<T, P, E, R>; | ||
select<P>(get: (data: K) => P): Selector<P>; | ||
select(): Selector<K>; | ||
watch(listener: (value: K extends Ensurable<infer P> ? P : K, prev?: K) => void): () => void; | ||
} & E; | ||
} & R & | ||
E; | ||
type StopSignal = Signal<void, boolean, {}, {}>; | ||
type Reactionable<T> = { 0: () => T } | [() => T] | (() => T); | ||
type Pool<K> = K & { | ||
count: number; | ||
threads: StopSignal[]; | ||
pending: boolean; | ||
}; | ||
@@ -142,2 +162,3 @@ function value<T = void>(): Value<T>; | ||
def_format(set, get, set); | ||
set.reset = () => set(init); | ||
return set; | ||
@@ -167,17 +188,13 @@ } | ||
resolve = def_promisify(fn); | ||
def_format(fn, () => get()[0], fn, 1); | ||
resolve = def_promisify(fn); | ||
fn.reset = () => set([init]); | ||
return fn as any; | ||
} | ||
type ResetedSignal = { | ||
reset(): void; | ||
}; | ||
function ready<T = void>(): Signal< | ||
T, | ||
Ensurable<T>, | ||
ResetedSignal & { | ||
to(value: T): Signal<void, Ensurable<T>, ResetedSignal>; | ||
{ | ||
to(value: T): Signal<void, Ensurable<T>>; | ||
} | ||
@@ -190,4 +207,4 @@ >; | ||
T, | ||
ResetedSignal & { | ||
to(value: T): Signal<void, T, ResetedSignal>; | ||
{ | ||
to(value: T): Signal<void, T>; | ||
} | ||
@@ -207,2 +224,6 @@ >; | ||
}; | ||
resolve = def_promisify(fn); | ||
def_format(fn, () => get()[0], fn, 1, 1); | ||
if (!no_reset) { | ||
@@ -215,9 +236,6 @@ fn.reset = () => { | ||
} | ||
def_format(fn, () => get()[0], fn, 1, 1); | ||
resolve = def_promisify(fn); | ||
return fn as any; | ||
} | ||
type StopSignal = Signal<void, boolean>; | ||
function stop_signal(): StopSignal { | ||
@@ -256,4 +274,8 @@ no_reset = 1; | ||
} | ||
ctx.wrap = (set: any, get: any) => wrap(ctx, set, get); | ||
if (set) { | ||
ctx.wrap = (set: any, get: any) => wrap(ctx, set, get); | ||
} | ||
ctx.view = (get: any) => wrap(ctx, 0, get); | ||
ctx.watch = (fn: any) => on(ctx, fn); | ||
ctx.select = (fn: any) => selector(fn ? () => fn(get()) : get); | ||
} | ||
@@ -274,10 +296,2 @@ | ||
if (!get && set && !source_set) { | ||
get = set; | ||
set = 0; | ||
} | ||
if (set && !source_set) { | ||
throw new Error('Incorrect wrapping'); | ||
} | ||
let dest: any; | ||
@@ -353,8 +367,2 @@ let dest_set: any; | ||
type Pool<K> = K & { | ||
count: number; | ||
threads: StopSignal[]; | ||
pending: boolean; | ||
}; | ||
function stoppable(): StopSignal { | ||
@@ -361,0 +369,0 @@ if (!stoppable_context) throw new Error('Parent "pool" or "wrap" didn\'t find'); |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
68055
1190