greybel-languageserver-core
Version:
Core functionality of language server for GreyScript
47 lines • 1.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DocumentWorkspaceBuilder = exports.DocumentWorkspaceContext = void 0;
class DocumentWorkspaceContext {
constructor() {
this.documents = [];
this.refs = new Map();
this.dependencies = new Map();
}
async loadDependencies() {
await Promise.all(this.documents.map(async (item) => {
const depUris = await item.getDependencies();
this.dependencies.set(item.textDocument.uri, depUris);
}));
}
getDependencies(documentUri) {
return this.dependencies.get(documentUri) || [];
}
getRefMap() {
return this.refs;
}
getRef(uri) {
return this.refs.get(uri) || null;
}
setRef(uri, document) {
this.refs.set(uri, document);
this.documents.push(document);
}
}
exports.DocumentWorkspaceContext = DocumentWorkspaceContext;
class DocumentWorkspaceBuilder {
constructor(options) {
this.context = options.context;
}
async build() {
const workspaceContext = new DocumentWorkspaceContext();
const allFileUris = await this.context.fs.getWorkspaceRelatedFiles();
await Promise.all(allFileUris.map(async (uri) => {
const textDocument = await this.context.documentManager.getOrOpen(uri.toString());
workspaceContext.setRef(textDocument.textDocument.uri, textDocument);
return textDocument;
}));
return workspaceContext;
}
}
exports.DocumentWorkspaceBuilder = DocumentWorkspaceBuilder;
//# sourceMappingURL=document-workspace-builder.js.map