in telemetry/vscode/src/generate.ts [376:399]
function generateFile(telemetryJson: MetricDefinitionRoot, dest: string) {
const project = new Project({})
const file = project.createSourceFile(dest, header, { overwrite: true })
file.addInterface(generateMetricBase(telemetryJson.types))
file.addInterfaces(telemetryJson.metrics.map(m => generateMetricInterface(m, telemetryJson.types)))
file.addTypeAliases(exportedTypes)
file.addInterface(runtimeMetricDefinition)
const metricsMap = generateMetricShapeMap(telemetryJson.metrics)
file.addInterface(metricsMap)
file.addTypeAlias({
isExported: true,
name: 'MetricName',
type: `keyof ${metricsMap.name}`,
})
const metadataType: TypeAliasDeclarationStructure = {
isExported: true,
name: 'Metadata',
typeParameters: [`T extends ${baseName}`],
type: `Partial<Omit<T, keyof ${baseName}> | Partial<Pick<${baseName}, ${optionalMetadata.map(v => `'${v}'`).join(' | ')}>>>`,
kind: StructureKind.TypeAlias,
}