import { Filepath } from '../core/types/filepath'; import { SyntaxNode, SyntaxNodeIdGenerator } from '../core/types/nodes'; import { NodeSymbolIdGenerator, SymbolFactory } from '../core/types/symbol'; import { DBMLCodeActionProvider, DBMLCompletionItemProvider, DBMLDefinitionProvider, DBMLDiagnosticsProvider, DBMLReferencesProvider } from '../services/index'; import { DbmlProjectLayout } from './projectLayout'; import { addDoubleQuoteIfNeeded, escapeString, formatRecordValue, isValidIdentifier, normalizeQualifiedName, splitQualifiedIdentifier, unescapeString } from './queries/utils'; export { ScopeKind } from './types'; export type { TextEdit } from './queries/transform'; export { addDoubleQuoteIfNeeded, escapeString, formatRecordValue, isValidIdentifier, normalizeQualifiedName, splitQualifiedIdentifier, unescapeString, }; export default class Compiler { layout: DbmlProjectLayout; readonly nodeIdGenerator: SyntaxNodeIdGenerator; readonly symbolIdGenerator: NodeSymbolIdGenerator; readonly symbolFactory: SymbolFactory; constructor(layout: DbmlProjectLayout); getSource(filepath: Filepath): string | undefined; private sourceSnapshot; private cleanStaleLocalCache; private entrypointsSnapshot; private cleanStaleGlobalCache; private globalCache; private globallyQuerying; private globalQuery; private localCache; private localQuery; parseFile: (filepath: Filepath) => import('../core/types/report').default; parseProject: () => Map>; validateNode: (node: SyntaxNode) => import('../core/types/report').default | import('../core/types/report').default; validateFile: (filepath: Filepath) => import('../core/types/report').default; nodeFullname: (node: SyntaxNode) => import('../core/types/report').default | import('../core/types/report').default; nodeAlias: (node: SyntaxNode) => import('../core/types/report').default | import('../core/types/report').default; nodeSettings: (node: SyntaxNode) => import('../core/types/report').default | import('../core/types/report').default; canonicalName: (filepath: Filepath, symbol: import('../core/types/symbol').NodeSymbol) => import('../core/types/report').default; bindNode: (node: SyntaxNode) => import('../core/types/report').default | import('../core/types/report').default; bindFile: (filepath: Filepath) => import('../core/types/report').default; bindProject: () => Map>; interpretSymbol: (symbol: import('../core/types/symbol').NodeSymbol, filepath: Filepath) => import('../core/types/report').default | import('../core/types/report').default; interpretMetadata: (metadata: import('../core/types/symbol').NodeMetadata, filepath: Filepath) => import('../core/types/report').default | import('../core/types/report').default; interpretFile: (filepath: Filepath) => import('../core/types/report').default | undefined>; interpretProject: () => import('../core/types/report').default; nodeSymbol: (node: SyntaxNode) => import('../core/types/report').default | import('../core/types/report').default; nodeMetadata: (node: SyntaxNode) => import('../core/types/report').default | import('../core/types/report').default; symbolMembers: (symbol: import('../core/types/symbol').NodeSymbol) => import('../core/types/report').default | import('../core/types/report').default; symbolMembersLookupMap: (symbol: import('../core/types/symbol').NodeSymbol) => Map; lookupMembers: (symbolOrNode: import('../core/types/symbol').NodeSymbol | SyntaxNode, targetKinds: import('../core/types/symbol').SymbolKind | import('../core/types/symbol').SymbolKind[], targetName: string) => import('../core/types/symbol').NodeSymbol | undefined; nodeReferee: (node: SyntaxNode) => import('../core/types/report').default | import('../core/types/report').default; resolutionIndex: () => import('./queries/resolutionIndex').ResolutionIndex; symbolReferences: (symbol: import('../core/types/symbol').NodeSymbol) => SyntaxNode[]; symbolParent: (symbol: import('../core/types/symbol').NodeSymbol) => import('../core/types/symbol').NodeSymbol[]; symbolMetadata: (symbol: import('../core/types/symbol').NodeSymbol) => import('../core/types/symbol').NodeMetadata[]; symbolAliases: (symbol: import('../core/types/symbol').NodeSymbol) => import('../core/types/report').default; symbolUses: (symbol: import('../core/types/symbol').NodeSymbol) => import('../core/types/report').default; fileDependencies: (filepath: Filepath) => Filepath[]; reachableFiles: (entry?: Filepath | undefined) => Filepath[]; usableMembers: (symbolOrFilepath: Filepath | import('../core/types/symbol').SchemaSymbol | import('../core/types/symbol').ProgramSymbol) => import('../core/types/report').default<{ nonSchemaMembers: import('../core/types/symbol').NodeSymbol[]; schemaMembers: import('../core/types/symbol').SchemaSymbol[]; reuses: { selective: import('../core/types/nodes').UseSpecifierNode[]; wildcard: { importPath: Filepath; node: import('../core/types/nodes').WildcardNode; }[]; }; uses: { selective: import('../core/types/nodes').UseSpecifierNode[]; wildcard: { importPath: Filepath; node: import('../core/types/nodes').WildcardNode; }[]; }; }>; nodeAtPosition: (filepath: Filepath, offset: number) => SyntaxNode | import('..').SyntaxToken | undefined; renameTable: (filepath: Filepath, oldName: string | import('..').TableIdentifier, newName: string | import('..').TableIdentifier) => Map; updateElementSetting: (filepath: Filepath, target: import('..').ElementIdentifier, settingName: string, value: string | null | undefined) => string; updateElementSettingEdit: (filepath: Filepath, target: import('..').ElementIdentifier, settingName: string, value: string | null | undefined) => import('.').TextEdit[]; syncDiagramView: (filepath: Filepath, operations: import('..').DiagramViewSyncOperation[], blocks?: import('..').DiagramViewBlock[] | undefined) => { newDbml: string; edits: import('.').TextEdit[]; }; syncDep: (filepath: Filepath, operations: import('..').DepSyncOperation[]) => { newDbml: string; edits: import('.').TextEdit[]; }; readonly token: { invalidStream: (filepath: Filepath) => readonly import('..').SyntaxToken[]; flatStream: (filepath: Filepath) => readonly import('..').SyntaxToken[]; }; readonly parse: { source: (filepath: Filepath) => string; ast: (filepath?: Filepath) => Readonly; errors: (filepath?: Filepath) => readonly Readonly[]; warnings: (filepath?: Filepath) => readonly Readonly[]; tokens: (filepath?: Filepath) => readonly Readonly[]; rawDb: (filepath?: Filepath) => Readonly | undefined; publicSymbolTable: (filepath?: Filepath) => readonly Readonly[] | undefined; }; readonly container: { stack: (filepath: Filepath, offset: number) => readonly Readonly[]; token: (filepath: Filepath, offset: number) => { token: import('..').SyntaxToken; index: number; } | { token: undefined; index: undefined; }; element: (filepath: Filepath, offset: number) => Readonly; scope: (filepath: Filepath, offset: number) => import('../core/types/symbol').NodeSymbol[] | undefined; scopeKind: (filepath: Filepath, offset: number) => import('./types').ScopeKind; }; initMonacoServices(options?: { autocompletion?: { triggerCharacters?: string[]; }; }): { definitionProvider: DBMLDefinitionProvider; referenceProvider: DBMLReferencesProvider; autocompletionProvider: DBMLCompletionItemProvider; diagnosticsProvider: DBMLDiagnosticsProvider; codeActionProvider: DBMLCodeActionProvider; }; }