1
0
Fork 0
mirror of https://github.com/DanielnetoDotCom/YouPHPTube synced 2025-10-03 17:59:55 +02:00
Daniel Neto 2023-06-30 09:56:13 -03:00
parent 37e90e3dfe
commit 214f5d9fc3
4949 changed files with 1393320 additions and 29 deletions

View file

@ -0,0 +1,41 @@
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>;
}
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): ContextProxy<T, R>;
override<S extends AnyObject>(scope: S): ContextProxy<(T[number] | S)[], T | R>;
}
export type ContextProxy<T extends AnyObject[] = AnyObject[], R extends AnyObject[] = T> = Merge<T[number]> & ContextCache<T, R>;