| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | /*--------------------------------------------------------------------------------------------- *  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 { format as formatJSON } from 'jsonc-parser';import { Range, TextEdit } from './jsonLanguageTypes';import { findLinks } from './services/jsonLinks';export * from './jsonLanguageTypes';export function getLanguageService(params) {    var promise = params.promiseConstructor || Promise;    var jsonSchemaService = new JSONSchemaService(params.schemaRequestService, params.workspaceContext, promise);    jsonSchemaService.setSchemaContributions(schemaContributions);    var jsonCompletion = new JSONCompletion(jsonSchemaService, params.contributions, promise, params.clientCapabilities);    var jsonHover = new JSONHover(jsonSchemaService, params.contributions, promise);    var jsonDocumentSymbols = new JSONDocumentSymbols(jsonSchemaService);    var jsonValidation = new JSONValidation(jsonSchemaService, promise);    return {        configure: function (settings) {            jsonSchemaService.clearExternalSchemas();            if (settings.schemas) {                settings.schemas.forEach(function (settings) {                    jsonSchemaService.registerExternalSchema(settings.uri, settings.fileMatch, settings.schema);                });            }            jsonValidation.configure(settings);        },        resetSchema: function (uri) { return jsonSchemaService.onResourceChange(uri); },        doValidation: jsonValidation.doValidation.bind(jsonValidation),        parseJSONDocument: function (document) { return parseJSON(document, { collectComments: true }); },        newJSONDocument: function (root, diagnostics) { return newJSONDocument(root, diagnostics); },        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: getFoldingRanges,        getSelectionRanges: getSelectionRanges,        findDefinition: function () { return Promise.resolve([]); },        findLinks: findLinks,        format: function (d, r, o) {            var range = undefined;            if (r) {                var offset = d.offsetAt(r.start);                var length = d.offsetAt(r.end) - offset;                range = { offset: offset, length: length };            }            var options = { tabSize: o ? o.tabSize : 4, insertSpaces: (o === null || o === void 0 ? void 0 : o.insertSpaces) === true, insertFinalNewline: (o === null || o === void 0 ? void 0 : o.insertFinalNewline) === true, eol: '\n' };            return formatJSON(d.getText(), range, options).map(function (e) {                return TextEdit.replace(Range.create(d.positionAt(e.offset), d.positionAt(e.offset + e.length)), e.content);            });        }    };}
 |