|
|
|
@ -6,13 +6,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
export type Value = string | number | boolean;
|
|
|
|
export type Value = string | number | boolean;
|
|
|
|
|
|
|
|
|
|
|
|
export type Provider = Value | (() => Value);
|
|
|
|
export type Provider <T> = T| (() => T);
|
|
|
|
export type AsyncProvider = Provider | Promise<Value>;
|
|
|
|
export type AsyncProvider <T> = Provider<T> | Promise<T>;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// =====================
|
|
|
|
// =====================
|
|
|
|
// Providers específicos
|
|
|
|
// Providers específicos
|
|
|
|
// =====================
|
|
|
|
// =====================
|
|
|
|
|
|
|
|
export type ValueProvider = Provider<Value>
|
|
|
|
export type BooleanProvider = Provider<boolean>;
|
|
|
|
export type BooleanProvider = Provider<boolean>;
|
|
|
|
export type StringProvider = Provider<string>;
|
|
|
|
export type StringProvider = Provider<string>;
|
|
|
|
export type NumberProvider = Provider<number>;
|
|
|
|
export type NumberProvider = Provider<number>;
|
|
|
|
@ -22,7 +23,7 @@ export type NumberProvider = Provider<number>;
|
|
|
|
// Helper sincrónico
|
|
|
|
// Helper sincrónico
|
|
|
|
// =====================
|
|
|
|
// =====================
|
|
|
|
export const provide = {
|
|
|
|
export const provide = {
|
|
|
|
value(p: Provider): Value {
|
|
|
|
value (p: ValueProvider): Value {
|
|
|
|
return typeof p === 'function' ? (p as () => Value)() : p;
|
|
|
|
return typeof p === 'function' ? (p as () => Value)() : p;
|
|
|
|
},
|
|
|
|
},
|
|
|
|
string: (p: ValueProvider) => String(provide.value(p)),
|
|
|
|
string: (p: ValueProvider) => String(provide.value(p)),
|
|
|
|
@ -35,9 +36,9 @@ export const provide = {
|
|
|
|
// Helper asíncrono
|
|
|
|
// Helper asíncrono
|
|
|
|
// =====================
|
|
|
|
// =====================
|
|
|
|
export const provideAsync = {
|
|
|
|
export const provideAsync = {
|
|
|
|
async value(p: AsyncValueProvider): Promise<Value> {
|
|
|
|
async value<T>(p: AsyncProvider<T>): Promise<T> {
|
|
|
|
if (typeof p === 'function') {
|
|
|
|
if (typeof p === 'function') {
|
|
|
|
return (p as () => Value | Promise<Value>)();
|
|
|
|
return (p as () => T | Promise<T>)();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return p;
|
|
|
|
return p;
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|