This commit is contained in:
102
node_modules/@astrojs/language-server/dist/nodeServer.js
generated
vendored
102
node_modules/@astrojs/language-server/dist/nodeServer.js
generated
vendored
@@ -1,102 +0,0 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const node_1 = require("@volar/language-server/node");
|
||||
const vscode_uri_1 = require("vscode-uri");
|
||||
const frontmatterHolders_js_1 = require("./core/frontmatterHolders.js");
|
||||
const index_js_1 = require("./core/index.js");
|
||||
const languageServerPlugin_js_1 = require("./languageServerPlugin.js");
|
||||
const utils_js_1 = require("./utils.js");
|
||||
const connection = (0, node_1.createConnection)();
|
||||
const server = (0, node_1.createServer)(connection);
|
||||
let contentIntellisenseEnabled = false;
|
||||
connection.listen();
|
||||
connection.onInitialize((params) => {
|
||||
const tsdk = params.initializationOptions?.typescript?.tsdk;
|
||||
if (!tsdk) {
|
||||
throw new Error('The `typescript.tsdk` init option is required. It should point to a directory containing a `typescript.js` or `tsserverlibrary.js` file, such as `node_modules/typescript/lib`.');
|
||||
}
|
||||
const { typescript, diagnosticMessages } = (0, node_1.loadTsdkByPath)(tsdk, params.locale);
|
||||
contentIntellisenseEnabled = params.initializationOptions?.contentIntellisense ?? false;
|
||||
const collectionConfig = {
|
||||
reload(folders) {
|
||||
this.configs = loadCollectionConfig(folders);
|
||||
},
|
||||
configs: contentIntellisenseEnabled
|
||||
? loadCollectionConfig(
|
||||
// The vast majority of clients support workspaceFolders, but sometimes some unusual environments like tests don't
|
||||
params.workspaceFolders ?? (params.rootUri ? [{ uri: params.rootUri }] : []) ?? [])
|
||||
: [],
|
||||
};
|
||||
function loadCollectionConfig(folders) {
|
||||
return folders.flatMap((folder) => {
|
||||
try {
|
||||
const folderUri = vscode_uri_1.URI.parse(folder.uri);
|
||||
let config = server.fileSystem.readFile(vscode_uri_1.Utils.joinPath(folderUri, '.astro/collections/collections.json'));
|
||||
if (!config) {
|
||||
return [];
|
||||
}
|
||||
// `server.fs.readFile` can theoretically be async, but in practice it's always sync
|
||||
const collections = JSON.parse(config);
|
||||
return { folder: folderUri, config: collections };
|
||||
}
|
||||
catch (err) {
|
||||
// If the file doesn't exist, we don't really care, but if it's something else, we want to know
|
||||
if (err && err.code !== 'ENOENT')
|
||||
console.error(err);
|
||||
return [];
|
||||
}
|
||||
});
|
||||
}
|
||||
return server.initialize(params, (0, node_1.createTypeScriptProject)(typescript, diagnosticMessages, ({ env }) => {
|
||||
return {
|
||||
languagePlugins: (0, languageServerPlugin_js_1.getLanguagePlugins)(collectionConfig),
|
||||
setup({ project }) {
|
||||
const { languageServiceHost, configFileName } = project.typescript;
|
||||
const rootPath = configFileName
|
||||
? configFileName.split('/').slice(0, -1).join('/')
|
||||
: env.workspaceFolders[0].fsPath;
|
||||
const nearestPackageJson = typescript.findConfigFile(rootPath, typescript.sys.fileExists, 'package.json');
|
||||
const astroInstall = (0, utils_js_1.getAstroInstall)([rootPath], {
|
||||
nearestPackageJson: nearestPackageJson,
|
||||
readDirectory: typescript.sys.readDirectory,
|
||||
});
|
||||
if (astroInstall === 'not-found') {
|
||||
connection.sendNotification(node_1.ShowMessageNotification.type, {
|
||||
message: `Couldn't find Astro in workspace "${rootPath}". Experience might be degraded. For the best experience, please make sure Astro is installed into your project and restart the language server.`,
|
||||
type: node_1.MessageType.Warning,
|
||||
});
|
||||
}
|
||||
(0, index_js_1.addAstroTypes)(typeof astroInstall === 'string' ? undefined : astroInstall, typescript, languageServiceHost);
|
||||
},
|
||||
};
|
||||
}), (0, languageServerPlugin_js_1.getLanguageServicePlugins)(connection, typescript, collectionConfig));
|
||||
});
|
||||
connection.onInitialized(() => {
|
||||
server.initialized();
|
||||
const extensions = [
|
||||
'js',
|
||||
'cjs',
|
||||
'mjs',
|
||||
'ts',
|
||||
'cts',
|
||||
'mts',
|
||||
'jsx',
|
||||
'tsx',
|
||||
'json',
|
||||
'astro',
|
||||
'vue',
|
||||
'svelte',
|
||||
];
|
||||
if (contentIntellisenseEnabled) {
|
||||
extensions.push(...frontmatterHolders_js_1.SUPPORTED_FRONTMATTER_EXTENSIONS_KEYS);
|
||||
server.fileWatcher.watchFiles(['**/*.schema.json', '**/collections.json']);
|
||||
server.fileWatcher.onDidChangeWatchedFiles(({ changes }) => {
|
||||
const shouldReload = changes.some((change) => change.uri.endsWith('.schema.json') || change.uri.endsWith('collections.json'));
|
||||
if (shouldReload) {
|
||||
server.project.reload();
|
||||
}
|
||||
});
|
||||
}
|
||||
server.fileWatcher.watchFiles([`**/*.{${extensions.join(',')}}`]);
|
||||
});
|
||||
//# sourceMappingURL=nodeServer.js.map
|
||||
Reference in New Issue
Block a user