New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@volar/language-service

Package Overview
Dependencies
Maintainers
1
Versions
236
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@volar/language-service - npm Package Compare versions

Comparing version 1.3.0-alpha.0 to 1.3.0-alpha.1

5

out/baseLanguageService.d.ts

@@ -1,7 +0,6 @@

import { LanguageServiceHost } from '@volar/language-core';
import { Config, LanguageServicePluginContext } from './types';
import { LanguageServicePluginContext, LanguageServiceOptions } from './types';
import type * as ts from 'typescript/lib/tsserverlibrary';
import type * as _ from 'vscode-languageserver-protocol';
export type LanguageService = ReturnType<typeof createLanguageService>;
export declare function createLanguageService(host: LanguageServiceHost, config: Config, env: LanguageServicePluginContext['env'], documentRegistry?: ts.DocumentRegistry): {
export declare function createLanguageService(ctx: LanguageServiceOptions, documentRegistry?: ts.DocumentRegistry): {
triggerCharacters: string[];

@@ -8,0 +7,0 @@ format: (uri: string, options: _.FormattingOptions, range?: _.Range | undefined, onTypeParams?: {

60

out/baseLanguageService.js

@@ -37,12 +37,12 @@ Object.defineProperty(exports, "__esModule", { value: true });

const selectionRanges = require("./documentFeatures/selectionRanges");
function createLanguageService(host, config, env, documentRegistry) {
function createLanguageService(ctx, documentRegistry) {
var _a;
const languageContext = (0, language_core_1.createLanguageContext)(host, Object.values((_a = config.languages) !== null && _a !== void 0 ? _a : {}).filter(shared.notEmpty));
const context = createLanguageServiceContext(host, languageContext, config, env, documentRegistry);
const languageContext = (0, language_core_1.createLanguageContext)(ctx.host, Object.values((_a = ctx.config.languages) !== null && _a !== void 0 ? _a : {}).filter(shared.notEmpty));
const context = createLanguageServiceContext(ctx, languageContext, documentRegistry);
return createLanguageServiceBase(context);
}
exports.createLanguageService = createLanguageService;
function createLanguageServiceContext(host, languageContext, config, env, documentRegistry) {
var _a;
const ts = (_a = host.getTypeScriptModule) === null || _a === void 0 ? void 0 : _a.call(host);
function createLanguageServiceContext(ctx, languageContext, documentRegistry) {
var _a, _b, _c, _d;
const ts = (_b = (_a = ctx.host).getTypeScriptModule) === null || _b === void 0 ? void 0 : _b.call(_a);
const tsLs = ts === null || ts === void 0 ? void 0 : ts.createLanguageService(languageContext.typescript.languageServiceHost, documentRegistry);

@@ -52,43 +52,25 @@ if (ts && tsLs) {

}
let plugins;
const textDocumentMapper = (0, documents_1.createDocumentsAndSourceMaps)(languageContext.virtualFiles);
const textDocumentMapper = (0, documents_1.createDocumentsAndSourceMaps)(ctx, languageContext.virtualFiles);
const documents = new WeakMap();
const documentVersions = new Map();
const context = {
uriToFileName: shared.uriToFileName,
fileNameToUri: shared.fileNameToUri,
host,
core: languageContext,
env: env,
get plugins() {
var _a, _b;
if (!plugins) {
plugins = {}; // avoid infinite loop
for (const pluginId in (_a = config.plugins) !== null && _a !== void 0 ? _a : {}) {
const plugin = (_b = config.plugins) === null || _b === void 0 ? void 0 : _b[pluginId];
if (plugin instanceof Function) {
const _plugin = plugin(this);
plugins[pluginId] = _plugin;
}
else if (plugin) {
plugins[pluginId] = plugin;
}
}
}
return plugins;
},
config,
typescript: ts && tsLs ? {
const context = Object.assign(Object.assign({}, ctx), { core: languageContext, plugins: {}, typescript: ts && tsLs ? {
module: ts,
languageServiceHost: languageContext.typescript.languageServiceHost,
languageService: tsLs,
} : undefined,
documents: textDocumentMapper,
getTextDocument,
};
} : undefined, documents: textDocumentMapper, getTextDocument });
for (const pluginId in (_c = ctx.config.plugins) !== null && _c !== void 0 ? _c : {}) {
const plugin = (_d = ctx.config.plugins) === null || _d === void 0 ? void 0 : _d[pluginId];
if (plugin instanceof Function) {
const _plugin = plugin(context);
context.plugins[pluginId] = _plugin;
}
else if (plugin) {
context.plugins[pluginId] = plugin;
}
}
return context;
function getTextDocument(uri) {
var _a;
const fileName = shared.uriToFileName(uri);
const scriptSnapshot = host.getScriptSnapshot(fileName);
const fileName = ctx.uriToFileName(uri);
const scriptSnapshot = ctx.host.getScriptSnapshot(fileName);
if (scriptSnapshot) {

@@ -95,0 +77,0 @@ let document = documents.get(scriptSnapshot);

@@ -14,3 +14,2 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {

const vscode_languageserver_textdocument_1 = require("vscode-languageserver-textdocument");
const shared = require("@volar/shared");
const common_1 = require("../utils/common");

@@ -30,3 +29,3 @@ function register(context) {

}
const initialIndentLanguageId = (_b = yield ((_a = context.env.configurationHost) === null || _a === void 0 ? void 0 : _a.getConfiguration('volar.format.initialIndent'))) !== null && _b !== void 0 ? _b : { html: true };
const initialIndentLanguageId = (_b = yield ((_a = context.configurationHost) === null || _a === void 0 ? void 0 : _a.getConfiguration('volar.format.initialIndent'))) !== null && _b !== void 0 ? _b : { html: true };
const originalSnapshot = source.snapshot;

@@ -86,3 +85,3 @@ const rootVirtualFile = source.root;

document = vscode_languageserver_textdocument_1.TextDocument.create(document.uri, document.languageId, document.version + 1, newText);
context.core.virtualFiles.updateSource(shared.uriToFileName(document.uri), (0, common_1.stringToSnapshot)(document.getText()), undefined);
context.core.virtualFiles.updateSource(context.uriToFileName(document.uri), (0, common_1.stringToSnapshot)(document.getText()), undefined);
edited = true;

@@ -131,3 +130,3 @@ }

document = vscode_languageserver_textdocument_1.TextDocument.create(document.uri, document.languageId, document.version + 1, newText);
context.core.virtualFiles.updateSource(shared.uriToFileName(document.uri), (0, common_1.stringToSnapshot)(document.getText()), undefined);
context.core.virtualFiles.updateSource(context.uriToFileName(document.uri), (0, common_1.stringToSnapshot)(document.getText()), undefined);
edited = true;

@@ -141,3 +140,3 @@ }

// recover
context.core.virtualFiles.updateSource(shared.uriToFileName(document.uri), originalSnapshot, undefined);
context.core.virtualFiles.updateSource(context.uriToFileName(document.uri), originalSnapshot, undefined);
}

@@ -144,0 +143,0 @@ if (document.getText() === originalDocument.getText())

@@ -6,2 +6,3 @@ import { VirtualFiles, VirtualFile, FileRangeCapabilities, MirrorBehaviorCapabilities, MirrorMap } from '@volar/language-core';

import type * as ts from 'typescript/lib/tsserverlibrary';
import { LanguageServiceOptions } from './types';
export type DocumentsAndSourceMaps = ReturnType<typeof createDocumentsAndSourceMaps>;

@@ -33,3 +34,3 @@ export declare class SourceMapWithDocuments<Data = any> {

}
export declare function createDocumentsAndSourceMaps(mapper: VirtualFiles): {
export declare function createDocumentsAndSourceMaps(ctx: LanguageServiceOptions, mapper: VirtualFiles): {
getSourceByUri(sourceFileUri: string): import("@volar/language-core").Source | undefined;

@@ -36,0 +37,0 @@ hasVirtualFileByUri(virtualFileUri: string): boolean;

@@ -119,3 +119,3 @@ Object.defineProperty(exports, "__esModule", { value: true });

exports.MirrorMapWithDocument = MirrorMapWithDocument;
function createDocumentsAndSourceMaps(mapper) {
function createDocumentsAndSourceMaps(ctx, mapper) {
let version = 0;

@@ -127,12 +127,12 @@ const _maps = new WeakMap();

getSourceByUri(sourceFileUri) {
return mapper.getSource(shared.uriToFileName(sourceFileUri));
return mapper.getSource(ctx.uriToFileName(sourceFileUri));
},
hasVirtualFileByUri(virtualFileUri) {
return mapper.hasVirtualFile(shared.uriToFileName(virtualFileUri));
return mapper.hasVirtualFile(ctx.uriToFileName(virtualFileUri));
},
getVirtualFileByUri(virtualFileUri) {
return mapper.getVirtualFile(shared.uriToFileName(virtualFileUri));
return mapper.getVirtualFile(ctx.uriToFileName(virtualFileUri));
},
getMirrorMapByUri(virtualFileUri) {
const fileName = shared.uriToFileName(virtualFileUri);
const fileName = ctx.uriToFileName(virtualFileUri);
const [virtualFile] = mapper.getVirtualFile(fileName);

@@ -150,3 +150,3 @@ if (virtualFile) {

getMapsBySourceFileUri(uri) {
return this.getMapsBySourceFileName(shared.uriToFileName(uri));
return this.getMapsBySourceFileName(ctx.uriToFileName(uri));
},

@@ -179,3 +179,3 @@ getMapsBySourceFileName(fileName) {

getMapsByVirtualFileUri(virtualFileUri) {
return this.getMapsByVirtualFileName(shared.uriToFileName(virtualFileUri));
return this.getMapsByVirtualFileName(ctx.uriToFileName(virtualFileUri));
},

@@ -200,3 +200,3 @@ *getMapsByVirtualFileName(virtualFileName) {

getDocumentByUri(snapshot, uri) {
return this.getDocumentByFileName(snapshot, shared.uriToFileName(uri));
return this.getDocumentByFileName(snapshot, ctx.uriToFileName(uri));
},

@@ -211,3 +211,3 @@ getDocumentByFileName,

if (!map.has(fileName)) {
map.set(fileName, vscode_languageserver_textdocument_1.TextDocument.create(shared.fileNameToUri(fileName), shared.syntaxToLanguageId(fileName.substring(fileName.lastIndexOf('.') + 1)), version++, snapshot.getText(0, snapshot.getLength())));
map.set(fileName, vscode_languageserver_textdocument_1.TextDocument.create(ctx.fileNameToUri(fileName), shared.syntaxToLanguageId(fileName.substring(fileName.lastIndexOf('.') + 1)), version++, snapshot.getText(0, snapshot.getLength())));
}

@@ -214,0 +214,0 @@ return map.get(fileName);

@@ -134,3 +134,3 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {

const vueRanges = tsRanges.map(tsRange => map.toSourceRange(tsRange)).filter(shared.notEmpty);
const vueItem = Object.assign(Object.assign({}, tsItem), { name: tsItem.name === path_1.posix.basename(shared.uriToFileName(map.virtualFileDocument.uri)) ? path_1.posix.basename(shared.uriToFileName(map.sourceFileDocument.uri)) : tsItem.name, uri: map.sourceFileDocument.uri,
const vueItem = Object.assign(Object.assign({}, tsItem), { name: tsItem.name === path_1.posix.basename(context.uriToFileName(map.virtualFileDocument.uri)) ? path_1.posix.basename(context.uriToFileName(map.sourceFileDocument.uri)) : tsItem.name, uri: map.sourceFileDocument.uri,
// TS Bug: `range: range` not works

@@ -137,0 +137,0 @@ range: {

@@ -18,3 +18,3 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {

var _a, _b, _c;
const referencesCodeLendsEnabled = (_b = yield ((_a = context.env.configurationHost) === null || _a === void 0 ? void 0 : _a.getConfiguration('volar.codeLens.references'))) !== null && _b !== void 0 ? _b : true;
const referencesCodeLendsEnabled = (_b = yield ((_a = context.configurationHost) === null || _a === void 0 ? void 0 : _a.getConfiguration('volar.codeLens.references'))) !== null && _b !== void 0 ? _b : true;
return (_c = yield (0, featureWorkers_1.languageFeatureWorker)(context, uri, undefined, (arg) => [arg], (plugin, document) => __awaiter(this, void 0, void 0, function* () {

@@ -21,0 +21,0 @@ var _d, _e, _f, _g;

@@ -114,3 +114,3 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {

}).get(uri);
const newSnapshot = context.host.getScriptSnapshot(shared.uriToFileName(uri));
const newSnapshot = context.host.getScriptSnapshot(context.uriToFileName(uri));
let updateCacheRangeFailed = false;

@@ -117,0 +117,0 @@ let errorsUpdated = false;

@@ -10,4 +10,15 @@ import { LanguageContext, LanguageModule, LanguageServiceHost } from '@volar/language-core';

export * from 'vscode-languageserver-protocol';
export interface LanguageServicePluginContext {
export interface LanguageServiceOptions {
host: LanguageServiceHost;
config: Config;
uriToFileName(uri: string): string;
fileNameToUri(fileName: string): string;
rootUri: URI;
locale?: string;
configurationHost?: ConfigurationHost;
documentContext?: DocumentContext;
fileSystemProvider?: FileSystemProvider;
schemaRequestService?: SchemaRequestService;
}
export interface LanguageServicePluginContext extends LanguageServiceOptions {
typescript: {

@@ -18,15 +29,3 @@ module: typeof import('typescript/lib/tsserverlibrary');

} | undefined;
env: {
rootUri: URI;
locale?: string;
configurationHost?: ConfigurationHost;
documentContext?: DocumentContext;
fileSystemProvider?: FileSystemProvider;
schemaRequestService?: SchemaRequestService;
};
uriToFileName(uri: string): string;
fileNameToUri(fileName: string): string;
/** @private */
host: LanguageServiceHost;
/** @private */
core: LanguageContext;

@@ -33,0 +32,0 @@ /** @private */

@@ -8,1 +8,2 @@ import type { TextDocument } from 'vscode-languageserver-textdocument';

export declare function ruleWorker<T>(context: LanguageServicePluginContext, api: 'onSyntax' | 'onSemantic' | 'onFormat', uri: string, isValidSourceMap: (file: VirtualFile) => boolean, worker: (ruleName: string, rule: Rule, ruleCtx: RuleContext) => T, transform: (result: NonNullable<Awaited<T>>, sourceMap: SourceMapWithDocuments<FileRangeCapabilities> | undefined) => Awaited<T> | undefined, combineResult?: (results: NonNullable<Awaited<T>>[]) => NonNullable<Awaited<T>>, reportProgress?: (result: NonNullable<Awaited<T>>) => void): Promise<NonNullable<Awaited<T>> | undefined>;
export declare function safeCall<T>(cb: () => Promise<T> | T, errorMsg?: string): Promise<T | undefined>;

@@ -11,5 +11,4 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {

Object.defineProperty(exports, "__esModule", { value: true });
exports.ruleWorker = exports.languageFeatureWorker = exports.documentFeatureWorker = void 0;
exports.safeCall = exports.ruleWorker = exports.languageFeatureWorker = exports.documentFeatureWorker = void 0;
const definePlugin_1 = require("./definePlugin");
const shared = require("@volar/shared");
function documentFeatureWorker(context, uri, isValidSourceMap, worker, transform, combineResult) {

@@ -35,4 +34,4 @@ return __awaiter(this, void 0, void 0, function* () {

for (const mappedArg of transformArg(arg, map, file)) {
for (const plugin of Object.values(context.plugins)) {
const embeddedResult = yield worker(plugin, map.virtualFileDocument, mappedArg, map, file);
for (const [pluginId, plugin] of Object.entries(context.plugins)) {
const embeddedResult = yield safeCall(() => worker(plugin, map.virtualFileDocument, mappedArg, map, file), 'plugin ' + pluginId + ' crashed on ' + map.virtualFileDocument.uri);
if (!embeddedResult)

@@ -56,4 +55,4 @@ continue;

else if (document) {
for (const plugin of Object.values(context.plugins)) {
const embeddedResult = yield worker(plugin, document, arg, undefined, undefined);
for (const [pluginId, plugin] of Object.entries(context.plugins)) {
const embeddedResult = yield safeCall(() => worker(plugin, document, arg, undefined, undefined), 'plugin ' + pluginId + ' crashed on ' + uri);
if (!embeddedResult)

@@ -97,8 +96,8 @@ continue;

modules: { typescript: (_l = context.typescript) === null || _l === void 0 ? void 0 : _l.module },
uriToFileName: shared.uriToFileName,
fileNameToUri: shared.fileNameToUri,
rootUri: context.env.rootUri,
locale: context.env.locale,
getConfiguration: (_m = context.env.configurationHost) === null || _m === void 0 ? void 0 : _m.getConfiguration,
onDidChangeConfiguration: (_o = context.env.configurationHost) === null || _o === void 0 ? void 0 : _o.onDidChangeConfiguration,
uriToFileName: context.uriToFileName,
fileNameToUri: context.fileNameToUri,
rootUri: context.rootUri,
locale: context.locale,
getConfiguration: (_m = context.configurationHost) === null || _m === void 0 ? void 0 : _m.getConfiguration,
onDidChangeConfiguration: (_o = context.configurationHost) === null || _o === void 0 ? void 0 : _o.onDidChangeConfiguration,
settings: (_q = (_p = context.config.lint) === null || _p === void 0 ? void 0 : _p.settings) !== null && _q !== void 0 ? _q : {},

@@ -112,7 +111,12 @@ // document context

const fn = (_r = plugin.rules) === null || _r === void 0 ? void 0 : _r[api];
if (fn) {
ruleCtx = yield fn(ruleCtx);
try {
if (fn) {
ruleCtx = yield fn(ruleCtx);
}
else if ((_s = plugin.rules) === null || _s === void 0 ? void 0 : _s.onAny) {
ruleCtx = yield plugin.rules.onAny(ruleCtx);
}
}
else if ((_s = plugin.rules) === null || _s === void 0 ? void 0 : _s.onAny) {
ruleCtx = yield plugin.rules.onAny(ruleCtx);
catch (err) {
console.warn('plugin rule context setup crashed on ' + map.virtualFileDocument.uri + ': ' + err);
}

@@ -126,3 +130,3 @@ }

ruleCtx.ruleId = ruleName;
const embeddedResult = yield worker(ruleName, rule, ruleCtx);
const embeddedResult = yield safeCall(() => worker(ruleName, rule, ruleCtx), 'rule ' + ruleName + ' crashed on ' + map.virtualFileDocument.uri);
if (!embeddedResult)

@@ -148,8 +152,8 @@ continue;

modules: { typescript: (_b = context.typescript) === null || _b === void 0 ? void 0 : _b.module },
uriToFileName: shared.uriToFileName,
fileNameToUri: shared.fileNameToUri,
rootUri: context.env.rootUri,
locale: context.env.locale,
getConfiguration: (_c = context.env.configurationHost) === null || _c === void 0 ? void 0 : _c.getConfiguration,
onDidChangeConfiguration: (_d = context.env.configurationHost) === null || _d === void 0 ? void 0 : _d.onDidChangeConfiguration,
uriToFileName: context.uriToFileName,
fileNameToUri: context.fileNameToUri,
rootUri: context.rootUri,
locale: context.locale,
getConfiguration: (_c = context.configurationHost) === null || _c === void 0 ? void 0 : _c.getConfiguration,
onDidChangeConfiguration: (_d = context.configurationHost) === null || _d === void 0 ? void 0 : _d.onDidChangeConfiguration,
settings: (_f = (_e = context.config.lint) === null || _e === void 0 ? void 0 : _e.settings) !== null && _f !== void 0 ? _f : {},

@@ -163,7 +167,12 @@ // document context

const fn = (_g = plugin.rules) === null || _g === void 0 ? void 0 : _g[api];
if (fn) {
ruleCtx = yield fn(ruleCtx);
try {
if (fn) {
ruleCtx = yield fn(ruleCtx);
}
else if ((_h = plugin.rules) === null || _h === void 0 ? void 0 : _h.onAny) {
ruleCtx = yield plugin.rules.onAny(ruleCtx);
}
}
else if ((_h = plugin.rules) === null || _h === void 0 ? void 0 : _h.onAny) {
ruleCtx = yield plugin.rules.onAny(ruleCtx);
catch (err) {
console.warn('plugin rule context setup crashed on ' + document.uri + ': ' + err);
}

@@ -177,3 +186,3 @@ }

ruleCtx.ruleId = ruleName;
const embeddedResult = yield worker(ruleName, rule, ruleCtx);
const embeddedResult = yield safeCall(() => worker(ruleName, rule, ruleCtx), 'rule ' + ruleName + ' crashed on ' + document.uri);
if (!embeddedResult)

@@ -202,2 +211,13 @@ continue;

exports.ruleWorker = ruleWorker;
function safeCall(cb, errorMsg) {
return __awaiter(this, void 0, void 0, function* () {
try {
return yield cb();
}
catch (err) {
console.warn(errorMsg, err);
}
});
}
exports.safeCall = safeCall;
//# sourceMappingURL=featureWorkers.js.map
{
"name": "@volar/language-service",
"version": "1.3.0-alpha.0",
"version": "1.3.0-alpha.1",
"main": "out/index.js",

@@ -16,6 +16,6 @@ "license": "MIT",

"dependencies": {
"@volar/language-core": "1.3.0-alpha.0",
"@volar/shared": "1.3.0-alpha.0",
"@volar/source-map": "1.3.0-alpha.0",
"@volar/typescript-faster": "1.3.0-alpha.0",
"@volar/language-core": "1.3.0-alpha.1",
"@volar/shared": "1.3.0-alpha.1",
"@volar/source-map": "1.3.0-alpha.1",
"@volar/typescript-faster": "1.3.0-alpha.1",
"vscode-html-languageservice": "^5.0.4",

@@ -27,3 +27,3 @@ "vscode-json-languageservice": "^5.2.0",

},
"gitHead": "7582403cc521d33f642183a32da44fb1f64e65ef"
"gitHead": "2926dc4af31890e01f6218773e88578ddf0de658"
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc