Chore: Fix typescript strict null errors from 674 -> 565 (#26057)

* Chore: Fix typescript strict null errors

* Added new limit

* Fixed ts issue

* fixed tests

* trying to fix type inference

* Fixing more ts errors

* Revert tsconfig option

* Fix

* Fixed code

* More fixes

* fix tests

* Updated snapshot
This commit is contained in:
Torkel Ödegaard
2020-07-06 21:16:27 +02:00
committed by GitHub
parent 4fc984f771
commit 7e8bd0c1b7
39 changed files with 198 additions and 182 deletions

View File

@@ -54,9 +54,9 @@ function addMetricsMetadata(metric: string, metadata?: PromMetricsMetadata): Com
const PREFIX_DELIMITER_REGEX = /(="|!="|=~"|!~"|\{|\[|\(|\+|-|\/|\*|%|\^|\band\b|\bor\b|\bunless\b|==|>=|!=|<=|>|<|=|~|,)/;
export default class PromQlLanguageProvider extends LanguageProvider {
histogramMetrics?: string[];
histogramMetrics: string[];
timeRange?: { start: number; end: number };
metrics?: string[];
metrics: string[];
metricsMetadata?: PromMetricsMetadata;
startTask: Promise<any>;
datasource: PrometheusDatasource;
@@ -87,7 +87,7 @@ export default class PromQlLanguageProvider extends LanguageProvider {
// Strip syntax chars so that typeahead suggestions can work on clean inputs
cleanText(s: string) {
const parts = s.split(PREFIX_DELIMITER_REGEX);
const last = parts.pop();
const last = parts.pop()!;
return last
.trimLeft()
.replace(/"$/, '')
@@ -136,6 +136,12 @@ export default class PromQlLanguageProvider extends LanguageProvider {
{ prefix, text, value, labelKey, wrapperClasses }: TypeaheadInput,
context: { history: Array<HistoryItem<PromQuery>> } = { history: [] }
): Promise<TypeaheadOutput> => {
const emptyResult: TypeaheadOutput = { suggestions: [] };
if (!value) {
return emptyResult;
}
// Local text properties
const empty = value.document.text.length === 0;
const selectedLines = value.document.getTextsAtRange(value.selection);
@@ -179,9 +185,7 @@ export default class PromQlLanguageProvider extends LanguageProvider {
return this.getTermCompletionItems();
}
return {
suggestions: [],
};
return emptyResult;
};
getBeginningCompletionItems = (context: { history: Array<HistoryItem<PromQuery>> }): TypeaheadOutput => {
@@ -253,7 +257,12 @@ export default class PromQlLanguageProvider extends LanguageProvider {
// Stitch all query lines together to support multi-line queries
let queryOffset;
const queryText = value.document.getBlocks().reduce((text: string, block) => {
const blockText = block.getText();
if (!block) {
return text;
}
const blockText = block?.getText();
if (value.anchorBlock.key === block.key) {
// Newline characters are not accounted for but this is irrelevant
// for the purpose of extracting the selector string
@@ -305,6 +314,10 @@ export default class PromQlLanguageProvider extends LanguageProvider {
labelKey,
value,
}: TypeaheadInput): Promise<TypeaheadOutput> => {
if (!value) {
return { suggestions: [] };
}
const suggestions: CompletionItemGroup[] = [];
const line = value.anchorBlock.getText();
const cursorOffset = value.selection.anchor.offset;
@@ -346,7 +359,8 @@ export default class PromQlLanguageProvider extends LanguageProvider {
return { suggestions };
}
let context: string;
let context: string | undefined;
if ((text && isValueStart) || wrapperClasses.includes('attr-value')) {
// Label values
if (labelKey && labelValues[labelKey]) {