public getSuggestions()

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);
    });
  }