12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- import { Code, Name } from "./code";
- interface NameGroup {
- prefix: string;
- index: number;
- }
- export interface NameValue {
- ref: ValueReference;
- key?: unknown;
- code?: Code;
- }
- export type ValueReference = unknown;
- interface ScopeOptions {
- prefixes?: Set<string>;
- parent?: Scope;
- }
- interface ValueScopeOptions extends ScopeOptions {
- scope: ScopeStore;
- es5?: boolean;
- lines?: boolean;
- }
- export type ScopeStore = Record<string, ValueReference[] | undefined>;
- type ScopeValues = {
- [Prefix in string]?: Map<unknown, ValueScopeName>;
- };
- export type ScopeValueSets = {
- [Prefix in string]?: Set<ValueScopeName>;
- };
- export declare enum UsedValueState {
- Started = 0,
- Completed = 1
- }
- export 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 {};
|