1- import { CompletionParams } from 'vscode-languageserver' ;
1+ import { CompletionItem , CompletionParams } from 'vscode-languageserver' ;
22import { Context } from '../context/Context' ;
33import { ContextManager } from '../context/ContextManager' ;
44import {
@@ -20,6 +20,7 @@ import { SettingsConfigurable, ISettingsSubscriber, SettingsSubscription } from
2020import { CompletionSettings , DefaultSettings } from '../settings/Settings' ;
2121import { LoggerFactory } from '../telemetry/LoggerFactory' ;
2222import { Track } from '../telemetry/TelemetryDecorator' ;
23+ import { EventType , UsageTracker } from '../usageTracker/UsageTracker' ;
2324import { Closeable } from '../utils/Closeable' ;
2425import { CompletionFormatter } from './CompletionFormatter' ;
2526import { CompletionProvider } from './CompletionProvider' ;
@@ -51,6 +52,7 @@ export class CompletionRouter implements SettingsConfigurable, Closeable {
5152 private readonly documentManager : DocumentManager ,
5253 private readonly schemaRetriever : SchemaRetriever ,
5354 private readonly entityFieldCompletionProviderMap = createEntityFieldProviders ( ) ,
55+ private readonly usageTracker : UsageTracker ,
5456 ) { }
5557
5658 @Track ( { name : 'getCompletions' , trackObjectKey : 'items' } )
@@ -95,6 +97,7 @@ export class CompletionRouter implements SettingsConfigurable, Closeable {
9597
9698 if ( completions instanceof Promise ) {
9799 return await completions . then ( ( result ) => {
100+ trackCompletion ( this . usageTracker , provider , result ) ;
98101 return this . formatter . format (
99102 {
100103 isIncomplete : result . length > this . completionSettings . maxCompletions ,
@@ -107,6 +110,7 @@ export class CompletionRouter implements SettingsConfigurable, Closeable {
107110 ) ;
108111 } ) ;
109112 } else if ( completions ) {
113+ trackCompletion ( this . usageTracker , provider , completions ) ;
110114 const completionList = {
111115 isIncomplete : completions . length > this . completionSettings . maxCompletions ,
112116 items : completions . slice ( 0 , this . completionSettings . maxCompletions ) ,
@@ -284,6 +288,7 @@ export class CompletionRouter implements SettingsConfigurable, Closeable {
284288 core . documentManager ,
285289 external . schemaRetriever ,
286290 createEntityFieldProviders ( ) ,
291+ core . usageTracker ,
287292 ) ;
288293 }
289294}
@@ -325,3 +330,13 @@ export function createEntityFieldProviders() {
325330 entityFieldProviderMap . set ( EntityType . Output , new EntityFieldCompletionProvider < Output > ( ) ) ;
326331 return entityFieldProviderMap ;
327332}
333+
334+ function trackCompletion (
335+ tracker : UsageTracker ,
336+ provider : CompletionProvider | undefined ,
337+ completions : CompletionItem [ ] ,
338+ ) {
339+ if ( provider !== undefined && ! ( provider instanceof TopLevelSectionCompletionProvider ) && completions . length > 0 ) {
340+ tracker . track ( EventType . MeaningfulCompletion ) ;
341+ }
342+ }
0 commit comments