function generateFile()

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,
    }