in client/src/lang/typeahead.ts [52:78]
public getSuggestions(
program: CqlQuery,
signal?: AbortSignal
): Promise<TypeaheadSuggestion[]> {
return new Promise((resolve, reject) => {
// Abort existing fetch, if it exists
this.abortController?.abort();
if (!program.content) {
return resolve([]);
}
const abortController = new AbortController();
this.abortController = abortController;
abortController.signal.addEventListener("abort", () => {
reject(new DOMException("Aborted", "AbortError"));
});
const eventuallySuggestions = getCqlFieldsFromCqlBinary(
program.content
).flatMap((queryField) => this.suggestCqlField(queryField, signal));
return Promise.all(eventuallySuggestions)
.then(suggestions => resolve(suggestions.flat()))
.catch(reject);
});
}