UNPKG

vscode-json-languageservice

Version:
53 lines (52 loc) 3.36 kB
/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { JSONCompletion } from './services/jsonCompletion'; import { JSONHover } from './services/jsonHover'; import { JSONValidation } from './services/jsonValidation'; import { JSONDocumentSymbols } from './services/jsonDocumentSymbols'; import { parse as parseJSON, newJSONDocument } from './parser/jsonParser'; import { schemaContributions } from './services/configuration'; import { JSONSchemaService } from './services/jsonSchemaService'; import { getFoldingRanges } from './services/jsonFolding'; import { getSelectionRanges } from './services/jsonSelectionRanges'; import { sort } from './utils/sort'; import { format } from './utils/format'; import { findLinks } from './services/jsonLinks'; export * from './jsonLanguageTypes'; export function getLanguageService(params) { const promise = params.promiseConstructor || Promise; const jsonSchemaService = new JSONSchemaService(params.schemaRequestService, params.workspaceContext, promise); jsonSchemaService.setSchemaContributions(schemaContributions); const jsonCompletion = new JSONCompletion(jsonSchemaService, params.contributions, promise, params.clientCapabilities); const jsonHover = new JSONHover(jsonSchemaService, params.contributions, promise); const jsonDocumentSymbols = new JSONDocumentSymbols(jsonSchemaService); const jsonValidation = new JSONValidation(jsonSchemaService, promise); return { configure: (settings) => { jsonSchemaService.clearExternalSchemas(); settings.schemas?.forEach(jsonSchemaService.registerExternalSchema.bind(jsonSchemaService)); jsonValidation.configure(settings); }, resetSchema: (uri) => jsonSchemaService.onResourceChange(uri), doValidation: jsonValidation.doValidation.bind(jsonValidation), getLanguageStatus: jsonValidation.getLanguageStatus.bind(jsonValidation), parseJSONDocument: (document) => parseJSON(document, { collectComments: true }), newJSONDocument: (root, diagnostics, comments) => newJSONDocument(root, diagnostics, comments), getMatchingSchemas: jsonSchemaService.getMatchingSchemas.bind(jsonSchemaService), doResolve: jsonCompletion.doResolve.bind(jsonCompletion), doComplete: jsonCompletion.doComplete.bind(jsonCompletion), findDocumentSymbols: jsonDocumentSymbols.findDocumentSymbols.bind(jsonDocumentSymbols), findDocumentSymbols2: jsonDocumentSymbols.findDocumentSymbols2.bind(jsonDocumentSymbols), findDocumentColors: jsonDocumentSymbols.findDocumentColors.bind(jsonDocumentSymbols), getColorPresentations: jsonDocumentSymbols.getColorPresentations.bind(jsonDocumentSymbols), doHover: jsonHover.doHover.bind(jsonHover), getFoldingRanges, getSelectionRanges, findDefinition: () => Promise.resolve([]), findLinks, format: (document, range, options) => format(document, options, range), sort: (document, options) => sort(document, options) }; }