95 lines
3.5 KiB
Plaintext
95 lines
3.5 KiB
Plaintext
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.createServiceEnvironment = void 0;
|
|
const language_service_1 = require("@volar/language-service");
|
|
const fs = require("fs");
|
|
const vscode_uri_1 = require("vscode-uri");
|
|
const utils_1 = require("./utils");
|
|
function createServiceEnvironment(getSettings) {
|
|
return {
|
|
workspaceFolder: vscode_uri_1.URI.file(process.cwd()).toString(),
|
|
getConfiguration(section) {
|
|
const settings = getSettings();
|
|
if (section in settings) {
|
|
return settings[section];
|
|
}
|
|
let result;
|
|
for (const settingKey in settings) {
|
|
if (settingKey.startsWith(`${section}.`)) {
|
|
const value = settings[settingKey];
|
|
const props = settingKey.substring(section.length + 1).split('.');
|
|
result ??= {};
|
|
let current = result;
|
|
while (props.length > 1) {
|
|
const prop = props.shift();
|
|
if (typeof current[prop] !== 'object') {
|
|
current[prop] = {};
|
|
}
|
|
current = current[prop];
|
|
}
|
|
current[props.shift()] = value;
|
|
}
|
|
}
|
|
return result;
|
|
},
|
|
fs: nodeFs,
|
|
console,
|
|
typescript: {
|
|
fileNameToUri: utils_1.fileNameToUri,
|
|
uriToFileName: utils_1.uriToFileName,
|
|
},
|
|
};
|
|
}
|
|
exports.createServiceEnvironment = createServiceEnvironment;
|
|
const nodeFs = {
|
|
stat(uri) {
|
|
if (uri.startsWith('file://')) {
|
|
try {
|
|
const stats = fs.statSync((0, utils_1.uriToFileName)(uri), { throwIfNoEntry: false });
|
|
if (stats) {
|
|
return {
|
|
type: stats.isFile() ? language_service_1.FileType.File
|
|
: stats.isDirectory() ? language_service_1.FileType.Directory
|
|
: stats.isSymbolicLink() ? language_service_1.FileType.SymbolicLink
|
|
: language_service_1.FileType.Unknown,
|
|
ctime: stats.ctimeMs,
|
|
mtime: stats.mtimeMs,
|
|
size: stats.size,
|
|
};
|
|
}
|
|
}
|
|
catch {
|
|
return undefined;
|
|
}
|
|
}
|
|
},
|
|
readFile(uri, encoding) {
|
|
if (uri.startsWith('file://')) {
|
|
try {
|
|
return fs.readFileSync((0, utils_1.uriToFileName)(uri), { encoding: encoding ?? 'utf-8' });
|
|
}
|
|
catch {
|
|
return undefined;
|
|
}
|
|
}
|
|
},
|
|
readDirectory(uri) {
|
|
if (uri.startsWith('file://')) {
|
|
try {
|
|
const dirName = (0, utils_1.uriToFileName)(uri);
|
|
const files = fs.readdirSync(dirName, { withFileTypes: true });
|
|
return files.map(file => {
|
|
return [file.name, file.isFile() ? language_service_1.FileType.File
|
|
: file.isDirectory() ? language_service_1.FileType.Directory
|
|
: file.isSymbolicLink() ? language_service_1.FileType.SymbolicLink
|
|
: language_service_1.FileType.Unknown];
|
|
});
|
|
}
|
|
catch {
|
|
return [];
|
|
}
|
|
}
|
|
return [];
|
|
},
|
|
};
|
|
//# sourceMappingURL=createServiceEnvironment.js.map |