UNPKG

1.99 kBTypeScriptView Raw
1import { Option } from '@glimmer/interfaces';
2export declare const REFERENCE: unique symbol;
3declare const enum ReferenceType {
4 Constant = 0,
5 Compute = 1,
6 Unbound = 2,
7 Invokable = 3
8}
9export interface Reference<_T = unknown> {
10 [REFERENCE]: ReferenceType;
11 debugLabel?: string;
12 children: null | Map<string | Reference, Reference>;
13}
14export default Reference;
15export interface ReferenceEnvironment {
16 getProp(obj: unknown, path: string): unknown;
17 setProp(obj: unknown, path: string, value: unknown): unknown;
18}
19export declare function createPrimitiveRef(value: unknown): Reference;
20export declare const UNDEFINED_REFERENCE: Reference<unknown>;
21export declare const NULL_REFERENCE: Reference<unknown>;
22export declare const TRUE_REFERENCE: Reference<unknown>;
23export declare const FALSE_REFERENCE: Reference<unknown>;
24export declare function createConstRef(value: unknown, debugLabel: false | string): Reference;
25export declare function createUnboundRef(value: unknown, debugLabel: false | string): Reference;
26export declare function createComputeRef<T = unknown>(compute: () => T, update?: Option<(value: T) => void>, debugLabel?: false | string): Reference<T>;
27export declare function createReadOnlyRef(ref: Reference): Reference;
28export declare function isInvokableRef(ref: Reference): boolean;
29export declare function createInvokableRef(inner: Reference): Reference;
30export declare function isConstRef(_ref: Reference): boolean;
31export declare function isUpdatableRef(_ref: Reference): boolean;
32export declare function valueForRef<T>(_ref: Reference<T>): T;
33export declare function updateRef(_ref: Reference, value: unknown): void;
34export declare function childRefFor(_parentRef: Reference, path: string): Reference;
35export declare function childRefFromParts(root: Reference, parts: string[]): Reference;
36export declare let createDebugAliasRef: undefined | ((debugLabel: string, inner: Reference) => Reference);
37//# sourceMappingURL=reference.d.ts.map
\No newline at end of file