Files
infocom-systems-design/node_modules/langium/lib/test/virtual-file-system.js
2025-10-03 22:27:28 +03:00

56 lines
1.7 KiB
JavaScript

/******************************************************************************
* Copyright 2024 TypeFox GmbH
* This program and the accompanying materials are made available under the
* terms of the MIT License, which is available in the project root.
******************************************************************************/
import { URI } from 'vscode-uri';
import { UriTrie } from '../utils/uri-utils.js';
export class VirtualFileSystemProvider {
constructor() {
this.trie = new UriTrie();
}
insert(uri, content) {
this.trie.insert(uri, content);
}
delete(uri) {
this.trie.delete(uri);
}
stat(uri) {
return Promise.resolve(this.statSync(uri));
}
statSync(uri) {
const node = this.trie.findNode(uri);
if (node) {
return {
isDirectory: node.element === undefined,
isFile: node.element !== undefined,
uri
};
}
else {
throw new Error('File not found');
}
}
readFile(uri) {
const data = this.trie.find(uri);
if (typeof data === 'string') {
return Promise.resolve(data);
}
else {
throw new Error('File not found');
}
}
readDirectory(uri) {
const node = this.trie.findNode(uri);
if (!node) {
throw new Error('Directory not found');
}
const children = this.trie.findChildren(uri);
return Promise.resolve(children.map(child => ({
isDirectory: child.element === undefined,
isFile: child.element !== undefined,
uri: URI.parse(child.uri)
})));
}
}
//# sourceMappingURL=virtual-file-system.js.map