Skip to content

Commit 2c7d67f

Browse files
committed
Expose aggregate file sizes in FileStats
We're not sure that file counts are a good proxy for project size and this will give us more direct insight.
1 parent 02d5cb0 commit 2c7d67f

File tree

3 files changed

+39
-6
lines changed

3 files changed

+39
-6
lines changed

src/server/editorServices.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,11 +123,22 @@ namespace ts.server {
123123

124124
export interface FileStats {
125125
readonly js: number;
126+
readonly jsSize?: number;
127+
126128
readonly jsx: number;
129+
readonly jsxSize?: number;
130+
127131
readonly ts: number;
132+
readonly tsSize?: number;
133+
128134
readonly tsx: number;
135+
readonly tsxSize?: number;
136+
129137
readonly dts: number;
138+
readonly dtsSize?: number;
139+
130140
readonly deferred: number;
141+
readonly deferredSize?: number;
131142
}
132143

133144
export interface OpenFileInfo {
@@ -1600,7 +1611,7 @@ namespace ts.server {
16001611
setProjectOptionsUsed(project);
16011612
const data: ProjectInfoTelemetryEventData = {
16021613
projectId: this.host.createSHA256Hash(project.projectName),
1603-
fileStats: countEachFileTypes(project.getScriptInfos()),
1614+
fileStats: countEachFileTypes(project.getScriptInfos(), /*includeSizes*/ true),
16041615
compilerOptions: convertCompilerOptionsForTelemetry(project.getCompilationSettings()),
16051616
typeAcquisition: convertTypeAcquisition(project.getTypeAcquisition()),
16061617
extends: projectOptions && projectOptions.configHasExtendsProperty,

src/server/project.ts

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,26 +10,43 @@ namespace ts.server {
1010
export type Mutable<T> = { -readonly [K in keyof T]: T[K]; };
1111

1212
/* @internal */
13-
export function countEachFileTypes(infos: ScriptInfo[]): FileStats {
14-
const result: Mutable<FileStats> = { js: 0, jsx: 0, ts: 0, tsx: 0, dts: 0, deferred: 0 };
13+
export function countEachFileTypes(infos: ScriptInfo[], includeSizes = false): FileStats {
14+
const result: Mutable<FileStats> = {
15+
js: 0, jsSize: 0,
16+
jsx: 0, jsxSize: 0,
17+
ts: 0, tsSize: 0,
18+
tsx: 0, tsxSize: 0,
19+
dts: 0, dtsSize: 0,
20+
deferred: 0, deferredSize: 0,
21+
};
1522
for (const info of infos) {
23+
const fileSize = includeSizes ? info.getTelemetryFileSize() : 0;
1624
switch (info.scriptKind) {
1725
case ScriptKind.JS:
1826
result.js += 1;
27+
result.jsSize! += fileSize;
1928
break;
2029
case ScriptKind.JSX:
2130
result.jsx += 1;
31+
result.jsxSize! += fileSize;
2232
break;
2333
case ScriptKind.TS:
24-
fileExtensionIs(info.fileName, Extension.Dts)
25-
? result.dts += 1
26-
: result.ts += 1;
34+
if (fileExtensionIs(info.fileName, Extension.Dts)) {
35+
result.dts += 1;
36+
result.dtsSize! += fileSize;
37+
}
38+
else {
39+
result.ts += 1;
40+
result.tsSize! += fileSize;
41+
}
2742
break;
2843
case ScriptKind.TSX:
2944
result.tsx += 1;
45+
result.tsxSize! += fileSize;
3046
break;
3147
case ScriptKind.Deferred:
3248
result.deferred += 1;
49+
result.deferredSize! += fileSize;
3350
break;
3451
}
3552
}

src/server/scriptInfo.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,11 @@ namespace ts.server {
316316
return this.textStorage.version;
317317
}
318318

319+
/*@internal*/
320+
getTelemetryFileSize() {
321+
return this.textStorage.getTelemetryFileSize();
322+
}
323+
319324
/*@internal*/
320325
public isDynamicOrHasMixedContent() {
321326
return this.hasMixedContent || this.isDynamic;

0 commit comments

Comments
 (0)