@zeix/cause-effect 0.15.0 → 0.15.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -10
- package/index.dev.js +508 -382
- package/index.js +1 -1
- package/index.ts +26 -5
- package/package.json +1 -1
- package/src/computed.ts +2 -2
- package/src/diff.ts +70 -45
- package/src/effect.ts +3 -8
- package/src/errors.ts +56 -0
- package/src/match.ts +14 -19
- package/src/resolve.ts +8 -18
- package/src/signal.ts +38 -46
- package/src/state.ts +3 -2
- package/src/store.ts +410 -188
- package/src/util.ts +62 -20
- package/test/computed.test.ts +1 -1
- package/test/diff.test.ts +321 -4
- package/test/effect.test.ts +1 -1
- package/test/match.test.ts +13 -3
- package/test/signal.test.ts +323 -0
- package/test/store.test.ts +971 -1
- package/types/index.d.ts +6 -5
- package/types/src/diff.d.ts +8 -3
- package/types/src/errors.d.ts +19 -0
- package/types/src/match.d.ts +4 -4
- package/types/src/resolve.d.ts +3 -3
- package/types/src/signal.d.ts +15 -18
- package/types/src/store.d.ts +56 -33
- package/types/src/util.d.ts +9 -7
- package/index.d.ts +0 -36
- package/types/test-new-effect.d.ts +0 -1
package/types/index.d.ts
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @name Cause & Effect
|
|
3
|
-
* @version 0.15.
|
|
3
|
+
* @version 0.15.1
|
|
4
4
|
* @author Esther Brunner
|
|
5
5
|
*/
|
|
6
6
|
export { type Computed, type ComputedCallback, computed, isComputed, isComputedCallback, TYPE_COMPUTED, } from './src/computed';
|
|
7
|
-
export { type DiffResult, diff, isEqual, type UnknownRecord } from './src/diff';
|
|
7
|
+
export { type DiffResult, diff, isEqual, type UnknownArray, type UnknownRecord, type UnknownRecordOrArray, } from './src/diff';
|
|
8
8
|
export { type EffectCallback, effect, type MaybeCleanup } from './src/effect';
|
|
9
|
+
export { CircularDependencyError, InvalidSignalValueError, NullishSignalValueError, StoreKeyExistsError, StoreKeyRangeError, StoreKeyReadonlyError, } from './src/errors';
|
|
9
10
|
export { type MatchHandlers, match } from './src/match';
|
|
10
11
|
export { type ResolveResult, resolve } from './src/resolve';
|
|
11
12
|
export { batch, type Cleanup, enqueue, flush, notify, observe, subscribe, type Updater, type Watcher, watch, } from './src/scheduler';
|
|
12
|
-
export {
|
|
13
|
+
export { isMutableSignal, isSignal, type Signal, type SignalValues, toSignal, type UnknownSignalRecord, } from './src/signal';
|
|
13
14
|
export { isState, type State, state, TYPE_STATE } from './src/state';
|
|
14
|
-
export { isStore, type Store, type StoreAddEvent, type StoreChangeEvent, type StoreEventMap, type StoreRemoveEvent, store, TYPE_STORE, } from './src/store';
|
|
15
|
-
export {
|
|
15
|
+
export { isStore, type Store, type StoreAddEvent, type StoreChangeEvent, type StoreEventMap, type StoreRemoveEvent, type StoreSortEvent, store, TYPE_STORE, } from './src/store';
|
|
16
|
+
export { isAbortError, isAsyncFunction, isFunction, isNumber, isRecord, isRecordOrArray, isString, isSymbol, toError, UNSET, } from './src/util';
|
package/types/src/diff.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
type UnknownRecord = Record<string, unknown & {}>;
|
|
2
|
-
type
|
|
2
|
+
type UnknownArray = ReadonlyArray<unknown & {}>;
|
|
3
|
+
type ArrayToRecord<T extends UnknownArray> = {
|
|
4
|
+
[key: string]: T extends Array<infer U extends {}> ? U : never;
|
|
5
|
+
};
|
|
6
|
+
type UnknownRecordOrArray = UnknownRecord | ArrayToRecord<UnknownArray>;
|
|
7
|
+
type DiffResult<T extends UnknownRecordOrArray = UnknownRecord> = {
|
|
3
8
|
changed: boolean;
|
|
4
9
|
add: Partial<T>;
|
|
5
10
|
change: Partial<T>;
|
|
@@ -23,5 +28,5 @@ declare const isEqual: <T>(a: T, b: T, visited?: WeakSet<object>) => boolean;
|
|
|
23
28
|
* @param {T} newObj - The new record to compare
|
|
24
29
|
* @returns {DiffResult<T>} The result of the comparison
|
|
25
30
|
*/
|
|
26
|
-
declare const diff: <T extends
|
|
27
|
-
export { type DiffResult, diff, isEqual, type UnknownRecord };
|
|
31
|
+
declare const diff: <T extends UnknownRecordOrArray>(oldObj: T, newObj: T) => DiffResult<T>;
|
|
32
|
+
export { type ArrayToRecord, type DiffResult, diff, isEqual, type UnknownRecord, type UnknownArray, type UnknownRecordOrArray, };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
declare class CircularDependencyError extends Error {
|
|
2
|
+
constructor(where: string);
|
|
3
|
+
}
|
|
4
|
+
declare class InvalidSignalValueError extends TypeError {
|
|
5
|
+
constructor(where: string, value: string);
|
|
6
|
+
}
|
|
7
|
+
declare class NullishSignalValueError extends TypeError {
|
|
8
|
+
constructor(where: string);
|
|
9
|
+
}
|
|
10
|
+
declare class StoreKeyExistsError extends Error {
|
|
11
|
+
constructor(key: string, value: string);
|
|
12
|
+
}
|
|
13
|
+
declare class StoreKeyRangeError extends RangeError {
|
|
14
|
+
constructor(index: number);
|
|
15
|
+
}
|
|
16
|
+
declare class StoreKeyReadonlyError extends Error {
|
|
17
|
+
constructor(key: string, value: string);
|
|
18
|
+
}
|
|
19
|
+
export { CircularDependencyError, InvalidSignalValueError, NullishSignalValueError, StoreKeyExistsError, StoreKeyRangeError, StoreKeyReadonlyError, };
|
package/types/src/match.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ResolveResult } from './resolve';
|
|
2
|
-
import type {
|
|
3
|
-
type MatchHandlers<S extends
|
|
4
|
-
ok
|
|
2
|
+
import type { SignalValues, UnknownSignalRecord } from './signal';
|
|
3
|
+
type MatchHandlers<S extends UnknownSignalRecord> = {
|
|
4
|
+
ok: (values: SignalValues<S>) => void;
|
|
5
5
|
err?: (errors: readonly Error[]) => void;
|
|
6
6
|
nil?: () => void;
|
|
7
7
|
};
|
|
@@ -17,5 +17,5 @@ type MatchHandlers<S extends Record<string, Signal<unknown & {}>>> = {
|
|
|
17
17
|
* @param {MatchHandlers<S>} handlers - Handlers for different states (side effects only)
|
|
18
18
|
* @returns {void} - Always returns void
|
|
19
19
|
*/
|
|
20
|
-
declare function match<S extends
|
|
20
|
+
declare function match<S extends UnknownSignalRecord>(result: ResolveResult<S>, handlers: MatchHandlers<S>): void;
|
|
21
21
|
export { match, type MatchHandlers };
|
package/types/src/resolve.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
type ResolveResult<S extends
|
|
1
|
+
import type { SignalValues, UnknownSignalRecord } from './signal';
|
|
2
|
+
type ResolveResult<S extends UnknownSignalRecord> = {
|
|
3
3
|
ok: true;
|
|
4
4
|
values: SignalValues<S>;
|
|
5
5
|
errors?: never;
|
|
@@ -25,5 +25,5 @@ type ResolveResult<S extends Record<string, Signal<unknown & {}>>> = {
|
|
|
25
25
|
* @param {S} signals - Signals to resolve
|
|
26
26
|
* @returns {ResolveResult<S>} - Discriminated union result
|
|
27
27
|
*/
|
|
28
|
-
declare function resolve<S extends
|
|
28
|
+
declare function resolve<S extends UnknownSignalRecord>(signals: S): ResolveResult<S>;
|
|
29
29
|
export { resolve, type ResolveResult };
|
package/types/src/signal.d.ts
CHANGED
|
@@ -4,13 +4,12 @@ import { type Store } from './store';
|
|
|
4
4
|
type Signal<T extends {}> = {
|
|
5
5
|
get(): T;
|
|
6
6
|
};
|
|
7
|
-
type
|
|
8
|
-
type SignalValues<S extends
|
|
7
|
+
type UnknownSignalRecord = Record<string, Signal<unknown & {}>>;
|
|
8
|
+
type SignalValues<S extends UnknownSignalRecord> = {
|
|
9
9
|
[K in keyof S]: S[K] extends Signal<infer T> ? T : never;
|
|
10
10
|
};
|
|
11
|
-
declare const UNSET: any;
|
|
12
11
|
/**
|
|
13
|
-
* Check whether a value is a Signal
|
|
12
|
+
* Check whether a value is a Signal
|
|
14
13
|
*
|
|
15
14
|
* @since 0.9.0
|
|
16
15
|
* @param {unknown} value - value to check
|
|
@@ -18,23 +17,21 @@ declare const UNSET: any;
|
|
|
18
17
|
*/
|
|
19
18
|
declare const isSignal: <T extends {}>(value: unknown) => value is Signal<T>;
|
|
20
19
|
/**
|
|
21
|
-
*
|
|
20
|
+
* Check whether a value is a State or Store
|
|
22
21
|
*
|
|
23
|
-
* @since 0.
|
|
22
|
+
* @since 0.15.2
|
|
23
|
+
* @param {unknown} value - value to check
|
|
24
|
+
* @returns {boolean} - true if value is a State or Store, false otherwise
|
|
24
25
|
*/
|
|
25
|
-
declare
|
|
26
|
-
declare function toSignal<T extends Record<keyof T, T[keyof T]>>(value: T): Store<T>;
|
|
27
|
-
declare function toSignal<T extends {}>(value: ComputedCallback<T>): Computed<T>;
|
|
28
|
-
declare function toSignal<T extends {}>(value: Signal<T>): Signal<T>;
|
|
29
|
-
declare function toSignal<T extends {}>(value: T): State<T>;
|
|
26
|
+
declare const isMutableSignal: <T extends {}>(value: unknown) => value is State<T> | Store<T>;
|
|
30
27
|
/**
|
|
31
|
-
* Convert a value to a
|
|
28
|
+
* Convert a value to a Signal if it's not already a Signal
|
|
32
29
|
*
|
|
33
30
|
* @since 0.9.6
|
|
31
|
+
* @param {T} value - value to convert
|
|
32
|
+
* @returns {Signal<T>} - Signal instance
|
|
34
33
|
*/
|
|
35
|
-
declare function
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
declare function toMutableSignal<T extends {}>(value: T): State<T>;
|
|
40
|
-
export { type Signal, type MaybeSignal, type SignalValues, UNSET, isSignal, toSignal, toMutableSignal, };
|
|
34
|
+
declare function toSignal<T extends {}>(value: T): T extends Store<infer U> ? Store<U> : T extends State<infer U> ? State<U> : T extends Computed<infer U> ? Computed<U> : T extends Signal<infer U> ? Signal<U> : T extends ReadonlyArray<infer U extends {}> ? Store<U[]> : T extends Record<string, unknown & {}> ? Store<{
|
|
35
|
+
[K in keyof T]: T[K];
|
|
36
|
+
}> : T extends ComputedCallback<infer U extends {}> ? Computed<U> : State<T>;
|
|
37
|
+
export { type Signal, type UnknownSignalRecord, type SignalValues, isSignal, isMutableSignal, toSignal, };
|
package/types/src/store.d.ts
CHANGED
|
@@ -1,51 +1,74 @@
|
|
|
1
|
-
import { type UnknownRecord } from './diff';
|
|
2
|
-
import { type Signal } from './signal';
|
|
1
|
+
import { type UnknownArray, type UnknownRecord, type UnknownRecordOrArray } from './diff';
|
|
3
2
|
import { type State } from './state';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
type: 'store-add';
|
|
7
|
-
detail: Partial<T>;
|
|
8
|
-
}
|
|
9
|
-
interface StoreChangeEvent<T extends UnknownRecord> extends CustomEvent {
|
|
10
|
-
type: 'store-change';
|
|
11
|
-
detail: Partial<T>;
|
|
12
|
-
}
|
|
13
|
-
interface StoreRemoveEvent<T extends UnknownRecord> extends CustomEvent {
|
|
14
|
-
type: 'store-remove';
|
|
15
|
-
detail: Partial<T>;
|
|
16
|
-
}
|
|
17
|
-
type StoreEventMap<T extends UnknownRecord> = {
|
|
3
|
+
type ArrayItem<T> = T extends readonly (infer U extends {})[] ? U : never;
|
|
4
|
+
type StoreEventMap<T extends UnknownRecord | UnknownArray> = {
|
|
18
5
|
'store-add': StoreAddEvent<T>;
|
|
19
6
|
'store-change': StoreChangeEvent<T>;
|
|
20
7
|
'store-remove': StoreRemoveEvent<T>;
|
|
8
|
+
'store-sort': StoreSortEvent;
|
|
21
9
|
};
|
|
22
|
-
interface StoreEventTarget<T extends UnknownRecord> extends EventTarget {
|
|
10
|
+
interface StoreEventTarget<T extends UnknownRecord | UnknownArray> extends EventTarget {
|
|
23
11
|
addEventListener<K extends keyof StoreEventMap<T>>(type: K, listener: (event: StoreEventMap<T>[K]) => void, options?: boolean | AddEventListenerOptions): void;
|
|
24
|
-
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
25
12
|
removeEventListener<K extends keyof StoreEventMap<T>>(type: K, listener: (event: StoreEventMap<T>[K]) => void, options?: boolean | EventListenerOptions): void;
|
|
26
|
-
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
27
13
|
dispatchEvent(event: Event): boolean;
|
|
28
14
|
}
|
|
29
|
-
|
|
30
|
-
[
|
|
31
|
-
} & StoreEventTarget<T> & {
|
|
32
|
-
[Symbol.toStringTag]: 'Store';
|
|
33
|
-
[Symbol.iterator](): IterableIterator<[string, Signal<T[keyof T]>]>;
|
|
34
|
-
add<K extends keyof T & string>(key: K, value: T[K]): void;
|
|
15
|
+
interface BaseStore<T extends UnknownRecord | UnknownArray> extends StoreEventTarget<T> {
|
|
16
|
+
readonly [Symbol.toStringTag]: 'Store';
|
|
35
17
|
get(): T;
|
|
36
|
-
remove<K extends keyof T & string>(key: K): void;
|
|
37
18
|
set(value: T): void;
|
|
38
|
-
update(
|
|
39
|
-
|
|
19
|
+
update(fn: (value: T) => T): void;
|
|
20
|
+
sort<U = T extends UnknownArray ? ArrayItem<T> : T[Extract<keyof T, string>]>(compareFn?: (a: U, b: U) => number): void;
|
|
21
|
+
readonly size: State<number>;
|
|
22
|
+
}
|
|
23
|
+
type RecordStore<T extends UnknownRecord> = BaseStore<T> & {
|
|
24
|
+
[K in keyof T]: T[K] extends readonly unknown[] | Record<string, unknown> ? Store<T[K]> : State<T[K]>;
|
|
25
|
+
} & {
|
|
26
|
+
add<K extends Extract<keyof T, string>>(key: K, value: T[K]): void;
|
|
27
|
+
remove<K extends Extract<keyof T, string>>(key: K): void;
|
|
28
|
+
[Symbol.iterator](): IterableIterator<[
|
|
29
|
+
Extract<keyof T, string>,
|
|
30
|
+
T[Extract<keyof T, string>] extends readonly unknown[] | Record<string, unknown> ? Store<T[Extract<keyof T, string>]> : State<T[Extract<keyof T, string>]>
|
|
31
|
+
]>;
|
|
32
|
+
};
|
|
33
|
+
type ArrayStore<T extends UnknownArray> = BaseStore<T> & {
|
|
34
|
+
readonly length: number;
|
|
35
|
+
[n: number]: ArrayItem<T> extends readonly unknown[] | Record<string, unknown> ? Store<ArrayItem<T>> : State<ArrayItem<T>>;
|
|
36
|
+
add(value: ArrayItem<T>): void;
|
|
37
|
+
remove(index: number): void;
|
|
38
|
+
[Symbol.iterator](): IterableIterator<ArrayItem<T> extends readonly unknown[] | Record<string, unknown> ? Store<ArrayItem<T>> : State<ArrayItem<T>>>;
|
|
39
|
+
readonly [Symbol.isConcatSpreadable]: boolean;
|
|
40
40
|
};
|
|
41
|
+
interface StoreAddEvent<T extends UnknownRecord | UnknownArray> extends CustomEvent {
|
|
42
|
+
type: 'store-add';
|
|
43
|
+
detail: Partial<T>;
|
|
44
|
+
}
|
|
45
|
+
interface StoreChangeEvent<T extends UnknownRecord | UnknownArray> extends CustomEvent {
|
|
46
|
+
type: 'store-change';
|
|
47
|
+
detail: Partial<T>;
|
|
48
|
+
}
|
|
49
|
+
interface StoreRemoveEvent<T extends UnknownRecord | UnknownArray> extends CustomEvent {
|
|
50
|
+
type: 'store-remove';
|
|
51
|
+
detail: Partial<T>;
|
|
52
|
+
}
|
|
53
|
+
interface StoreSortEvent extends CustomEvent {
|
|
54
|
+
type: 'store-sort';
|
|
55
|
+
detail: string[];
|
|
56
|
+
}
|
|
57
|
+
type Store<T> = T extends UnknownRecord ? RecordStore<T> : T extends UnknownArray ? ArrayStore<T> : never;
|
|
58
|
+
declare const TYPE_STORE = "Store";
|
|
41
59
|
/**
|
|
42
60
|
* Create a new store with deeply nested reactive properties
|
|
43
61
|
*
|
|
62
|
+
* Supports both objects and arrays as initial values. Arrays are converted
|
|
63
|
+
* to records internally for storage but maintain their array type through
|
|
64
|
+
* the .get() method, which automatically converts objects with consecutive
|
|
65
|
+
* numeric keys back to arrays.
|
|
66
|
+
*
|
|
44
67
|
* @since 0.15.0
|
|
45
|
-
* @param {T} initialValue - initial object value of the store
|
|
46
|
-
* @returns {Store<T>} - new store with reactive properties
|
|
68
|
+
* @param {T} initialValue - initial object or array value of the store
|
|
69
|
+
* @returns {Store<T>} - new store with reactive properties that preserves the original type T
|
|
47
70
|
*/
|
|
48
|
-
declare const store: <T extends UnknownRecord>(initialValue: T) => Store<T>;
|
|
71
|
+
declare const store: <T extends UnknownRecord | UnknownArray>(initialValue: T) => Store<T>;
|
|
49
72
|
/**
|
|
50
73
|
* Check if the provided value is a Store instance
|
|
51
74
|
*
|
|
@@ -53,5 +76,5 @@ declare const store: <T extends UnknownRecord>(initialValue: T) => Store<T>;
|
|
|
53
76
|
* @param {unknown} value - value to check
|
|
54
77
|
* @returns {boolean} - true if the value is a Store instance, false otherwise
|
|
55
78
|
*/
|
|
56
|
-
declare const isStore: <T extends
|
|
57
|
-
export { TYPE_STORE, isStore, store, type Store, type StoreAddEvent, type StoreChangeEvent, type StoreRemoveEvent, type StoreEventMap, };
|
|
79
|
+
declare const isStore: <T extends UnknownRecordOrArray>(value: unknown) => value is Store<T>;
|
|
80
|
+
export { TYPE_STORE, isStore, store, type Store, type StoreAddEvent, type StoreChangeEvent, type StoreRemoveEvent, type StoreSortEvent, type StoreEventMap, };
|
package/types/src/util.d.ts
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
declare const
|
|
1
|
+
declare const UNSET: any;
|
|
2
2
|
declare const isString: (value: unknown) => value is string;
|
|
3
|
+
declare const isNumber: (value: unknown) => value is number;
|
|
4
|
+
declare const isSymbol: (value: unknown) => value is symbol;
|
|
3
5
|
declare const isFunction: <T>(fn: unknown) => fn is (...args: unknown[]) => T;
|
|
4
6
|
declare const isAsyncFunction: <T>(fn: unknown) => fn is (...args: unknown[]) => Promise<T>;
|
|
7
|
+
declare const isDefinedObject: (value: unknown) => value is Record<string, unknown>;
|
|
5
8
|
declare const isObjectOfType: <T>(value: unknown, type: string) => value is T;
|
|
6
9
|
declare const isRecord: <T extends Record<string, unknown>>(value: unknown) => value is T;
|
|
7
|
-
declare const
|
|
8
|
-
declare const arrayToRecord: <T extends unknown & {}>(array: T[]) => Record<string, T>;
|
|
10
|
+
declare const isRecordOrArray: <T extends Record<string | number, unknown> | ReadonlyArray<unknown>>(value: unknown) => value is T;
|
|
9
11
|
declare const hasMethod: <T extends object & Record<string, (...args: unknown[]) => unknown>>(obj: T, methodName: string) => obj is T & Record<string, (...args: unknown[]) => unknown>;
|
|
10
12
|
declare const isAbortError: (error: unknown) => boolean;
|
|
11
13
|
declare const toError: (reason: unknown) => Error;
|
|
12
|
-
declare
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
export {
|
|
14
|
+
declare const arrayToRecord: <T>(array: T[]) => Record<string, T>;
|
|
15
|
+
declare const recordToArray: <T>(record: Record<string | number, T>) => Record<string, T> | T[];
|
|
16
|
+
declare const valueString: (value: unknown) => string;
|
|
17
|
+
export { UNSET, isString, isNumber, isSymbol, isFunction, isAsyncFunction, isDefinedObject, isObjectOfType, isRecord, isRecordOrArray, hasMethod, isAbortError, toError, arrayToRecord, recordToArray, valueString, };
|
package/index.d.ts
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @name Cause & Effect
|
|
3
|
-
* @version 0.14.2
|
|
4
|
-
* @author Esther Brunner
|
|
5
|
-
*/
|
|
6
|
-
export {
|
|
7
|
-
type Computed,
|
|
8
|
-
type ComputedCallback,
|
|
9
|
-
computed,
|
|
10
|
-
isComputed,
|
|
11
|
-
TYPE_COMPUTED,
|
|
12
|
-
} from './src/computed'
|
|
13
|
-
export { type EffectMatcher, type MaybeCleanup, effect } from './src/effect'
|
|
14
|
-
export {
|
|
15
|
-
batch,
|
|
16
|
-
type Cleanup,
|
|
17
|
-
enqueue,
|
|
18
|
-
flush,
|
|
19
|
-
notify,
|
|
20
|
-
observe,
|
|
21
|
-
subscribe,
|
|
22
|
-
type Updater,
|
|
23
|
-
type Watcher,
|
|
24
|
-
watch,
|
|
25
|
-
} from './src/scheduler'
|
|
26
|
-
export {
|
|
27
|
-
isComputedCallback,
|
|
28
|
-
isSignal,
|
|
29
|
-
type MaybeSignal,
|
|
30
|
-
type Signal,
|
|
31
|
-
type SignalValues,
|
|
32
|
-
toSignal,
|
|
33
|
-
UNSET,
|
|
34
|
-
} from './src/signal'
|
|
35
|
-
export { isState, type State, state, TYPE_STATE } from './src/state'
|
|
36
|
-
export { CircularDependencyError, isFunction } from './src/util'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|