28 lines
1.4 KiB
JavaScript
28 lines
1.4 KiB
JavaScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Red Hat, Inc. All rights reserved.
|
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
import { findLinks as JSONFindLinks } from 'vscode-json-languageservice/lib/umd/services/jsonLinks';
|
|
import { yamlDocumentsCache } from '../parser/yaml-documents';
|
|
import { convertErrorToTelemetryMsg } from '../utils/objects';
|
|
export class YamlLinks {
|
|
constructor(telemetry) {
|
|
this.telemetry = telemetry;
|
|
}
|
|
findLinks(document) {
|
|
try {
|
|
const doc = yamlDocumentsCache.getYamlDocument(document);
|
|
// Find links across all YAML Documents then report them back once finished
|
|
const linkPromises = [];
|
|
for (const yamlDoc of doc.documents) {
|
|
linkPromises.push(JSONFindLinks(document, yamlDoc));
|
|
}
|
|
// Wait for all the promises to return and then flatten them into one DocumentLink array
|
|
return Promise.all(linkPromises).then((yamlLinkArray) => [].concat(...yamlLinkArray));
|
|
}
|
|
catch (err) {
|
|
this.telemetry?.sendError('yaml.documentLink.error', { error: convertErrorToTelemetryMsg(err) });
|
|
}
|
|
}
|
|
}
|
|
//# sourceMappingURL=yamlLinks.js.map
|