Files
website/node_modules/@volar/language-server/node.js
2024-05-06 17:15:30 -04:00

134 lines
5.5 KiB
JavaScript

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.loadTsdkByPath = exports.createServer = exports.createConnection = exports.createFs = void 0;
const language_service_1 = require("@volar/language-service");
const fs = require("fs");
const vscode = require("vscode-languageserver/node");
const http_1 = require("./lib/schemaRequestHandlers/http");
const server_1 = require("./lib/server");
const uri_1 = require("./lib/uri");
__exportStar(require("vscode-languageserver/node"), exports);
__exportStar(require("./index"), exports);
__exportStar(require("./lib/project/simpleProjectProvider"), exports);
__exportStar(require("./lib/project/typescriptProjectProvider"), exports);
function createFs(options) {
return {
stat(uri) {
if (uri.startsWith('file://')) {
try {
const stats = fs.statSync((0, uri_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 {
if (options.maxFileSize) {
const stats = fs.statSync((0, uri_1.uriToFileName)(uri), { throwIfNoEntry: false });
if (stats && stats.size > options.maxFileSize) {
console.warn(`[volar] file size exceeded limit: ${uri} (${stats.size} > ${options.maxFileSize})`);
return undefined;
}
}
return fs.readFileSync((0, uri_1.uriToFileName)(uri), { encoding: encoding ?? 'utf-8' });
}
catch {
return undefined;
}
}
if (uri.startsWith('http://') || uri.startsWith('https://')) {
return (0, http_1.default)(uri);
}
},
readDirectory(uri) {
if (uri.startsWith('file://')) {
try {
const dirName = (0, uri_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 [];
},
};
}
exports.createFs = createFs;
function createConnection() {
return vscode.createConnection(vscode.ProposedFeatures.all);
}
exports.createConnection = createConnection;
function createServer(connection) {
return (0, server_1.createServerBase)(connection, params => ({
fs: createFs(params.initializationOptions ?? {}),
}));
}
exports.createServer = createServer;
function loadTsdkByPath(tsdk, locale) {
// webpack compatibility
const _require = eval('require');
return {
typescript: loadLib(),
diagnosticMessages: loadLocalizedDiagnosticMessages(),
};
function loadLib() {
for (const name of ['./typescript.js', './tsserverlibrary.js']) {
try {
return _require(_require.resolve(name, { paths: [tsdk] }));
}
catch { }
}
// for bun
for (const name of ['typescript.js', 'tsserverlibrary.js']) {
try {
return _require(tsdk + '/' + name);
}
catch { }
}
throw new Error(`Can't find typescript.js or tsserverlibrary.js in ${JSON.stringify(tsdk)}`);
}
function loadLocalizedDiagnosticMessages() {
try {
const path = _require.resolve(`./${locale}/diagnosticMessages.generated.json`, { paths: [tsdk] });
return _require(path);
}
catch { }
}
}
exports.loadTsdkByPath = loadTsdkByPath;
//# sourceMappingURL=node.js.map