mirror of
https://github.com/microsoft/vscode.git
synced 2026-07-08 07:44:33 +01:00
91b02efb23
* convert html server to esm * update html language service * update * update * update json * update css * update * update * update jsonc-parser
39 lines
1.3 KiB
TypeScript
39 lines
1.3 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
import { ICSSDataProvider, newCSSDataProvider } from 'vscode-css-languageservice';
|
|
import { RequestService } from './requests.js';
|
|
|
|
export function fetchDataProviders(dataPaths: string[], requestService: RequestService): Promise<ICSSDataProvider[]> {
|
|
const providers = dataPaths.map(async p => {
|
|
try {
|
|
const content = await requestService.getContent(p);
|
|
return parseCSSData(content);
|
|
} catch (e) {
|
|
return newCSSDataProvider({ version: 1 });
|
|
}
|
|
});
|
|
|
|
return Promise.all(providers);
|
|
}
|
|
|
|
function parseCSSData(source: string): ICSSDataProvider {
|
|
let rawData: any;
|
|
|
|
try {
|
|
rawData = JSON.parse(source);
|
|
} catch (err) {
|
|
return newCSSDataProvider({ version: 1 });
|
|
}
|
|
|
|
return newCSSDataProvider({
|
|
version: rawData.version || 1,
|
|
properties: rawData.properties || [],
|
|
atDirectives: rawData.atDirectives || [],
|
|
pseudoClasses: rawData.pseudoClasses || [],
|
|
pseudoElements: rawData.pseudoElements || []
|
|
});
|
|
}
|