-
Notifications
You must be signed in to change notification settings - Fork 11.9k
/
Copy pathhelpers.config.types.ts
61 lines (54 loc) · 1.65 KB
/
helpers.config.types.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import type {AnyObject} from '../types/basic.js';
import type {Merge} from '../types/utils.js';
export type ResolverObjectKey = string | boolean;
export interface ResolverCache<
T extends AnyObject[] = AnyObject[],
R extends AnyObject[] = T
> {
[Symbol.toStringTag]: 'Object';
_cacheable: boolean;
_scopes: T;
_rootScopes: T | R;
_fallback: ResolverObjectKey;
_keys?: string[];
_scriptable?: boolean;
_indexable?: boolean;
_allKeys?: boolean;
_storage?: T[number];
_getTarget(): T[number];
override<S extends AnyObject>(scope: S): ResolverProxy<(T[number] | S)[], T | R>
overridePrefixes<S extends AnyObject>(pref: string[]): ResolverProxy<(T[number] | S)[], T | R>
}
export type ResolverProxy<
T extends AnyObject[] = AnyObject[],
R extends AnyObject[] = T
> = Merge<T[number]> & ResolverCache<T, R>
export interface DescriptorDefaults {
scriptable: boolean;
indexable: boolean;
allKeys?: boolean
}
export interface Descriptor {
allKeys: boolean;
scriptable: boolean;
indexable: boolean;
isScriptable(key: string): boolean;
isIndexable(key: string): boolean;
}
export interface ContextCache<
T extends AnyObject[] = AnyObject[],
R extends AnyObject[] = T
> {
_cacheable: boolean;
_proxy: ResolverProxy<T, R>;
_context: AnyObject;
_subProxy: ResolverProxy<T, R>;
_stack: Set<string>;
_descriptors: Descriptor
setContext(ctx: AnyObject, prefixes: string[]): ContextProxy<T, R>
override<S extends AnyObject>(scope: S, prefixes: string[]): ContextProxy<(T[number] | S)[], T | R>
}
export type ContextProxy<
T extends AnyObject[] = AnyObject[],
R extends AnyObject[] = T
> = Merge<T[number]> & ContextCache<T, R>;