in internal/telemetry/telemetry.go [96:122]
func (c *CompletionTelemetryRateLimiter) Allow(name string, properties map[string]interface{}) bool {
if name != "textDocument/completion" {
return true
}
// always allow code-sample and template completions
if properties != nil && properties["kind"] != nil {
if kind, ok := properties["kind"].(string); ok {
if kind == "code-sample" || kind == "template" {
return true
}
}
}
timeStampNow := time.Now().Unix()
if c.lastSentTimeStamp == 0 {
c.lastSentTimeStamp = timeStampNow
return true
}
// minimum interval between two completion telemetry events is 1 hour
if timeStampNow-c.lastSentTimeStamp < 3600 {
return false
}
c.lastSentTimeStamp = timeStampNow
return true
}