| import { Code, Name } from "./code"; |
| interface NameGroup { |
| prefix: string; |
| index: number; |
| } |
| export interface NameValue { |
| ref: ValueReference; |
| key?: unknown; |
| code?: Code; |
| } |
| export declare type ValueReference = unknown; |
| interface ScopeOptions { |
| prefixes?: Set<string>; |
| parent?: Scope; |
| } |
| interface ValueScopeOptions extends ScopeOptions { |
| scope: ScopeStore; |
| es5?: boolean; |
| lines?: boolean; |
| } |
| export declare type ScopeStore = Record<string, ValueReference[] | undefined>; |
| declare type ScopeValues = { |
| [Prefix in string]?: Map<unknown, ValueScopeName>; |
| }; |
| export declare type ScopeValueSets = { |
| [Prefix in string]?: Set<ValueScopeName>; |
| }; |
| export declare enum UsedValueState { |
| Started = 0, |
| Completed = 1 |
| } |
| export declare type UsedScopeValues = { |
| [Prefix in string]?: Map<ValueScopeName, UsedValueState | undefined>; |
| }; |
| export declare const varKinds: { |
| const: Name; |
| let: Name; |
| var: Name; |
| }; |
| export declare class Scope { |
| protected readonly _names: { |
| [Prefix in string]?: NameGroup; |
| }; |
| protected readonly _prefixes?: Set<string>; |
| protected readonly _parent?: Scope; |
| constructor({ prefixes, parent }?: ScopeOptions); |
| toName(nameOrPrefix: Name | string): Name; |
| name(prefix: string): Name; |
| protected _newName(prefix: string): string; |
| private _nameGroup; |
| } |
| interface ScopePath { |
| property: string; |
| itemIndex: number; |
| } |
| export declare class ValueScopeName extends Name { |
| readonly prefix: string; |
| value?: NameValue; |
| scopePath?: Code; |
| constructor(prefix: string, nameStr: string); |
| setValue(value: NameValue, { property, itemIndex }: ScopePath): void; |
| } |
| interface VSOptions extends ValueScopeOptions { |
| _n: Code; |
| } |
| export declare class ValueScope extends Scope { |
| protected readonly _values: ScopeValues; |
| protected readonly _scope: ScopeStore; |
| readonly opts: VSOptions; |
| constructor(opts: ValueScopeOptions); |
| get(): ScopeStore; |
| name(prefix: string): ValueScopeName; |
| value(nameOrPrefix: ValueScopeName | string, value: NameValue): ValueScopeName; |
| getValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined; |
| scopeRefs(scopeName: Name, values?: ScopeValues | ScopeValueSets): Code; |
| scopeCode(values?: ScopeValues | ScopeValueSets, usedValues?: UsedScopeValues, getCode?: (n: ValueScopeName) => Code | undefined): Code; |
| private _reduceValues; |
| } |
| export {}; |