@tramvai/cli 5.53.81 → 5.53.94

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/README.md +1 -1
  2. package/lib/api/analyze/index.d.ts.map +1 -1
  3. package/lib/api/analyze/index.js +1 -13
  4. package/lib/api/analyze/index.js.map +1 -1
  5. package/lib/api/benchmark/build.d.ts +1 -6
  6. package/lib/api/benchmark/build.d.ts.map +1 -1
  7. package/lib/api/benchmark/build.js +59 -23
  8. package/lib/api/benchmark/build.js.map +1 -1
  9. package/lib/api/benchmark/const.d.ts +2 -0
  10. package/lib/api/benchmark/const.d.ts.map +1 -0
  11. package/lib/api/benchmark/const.js +5 -0
  12. package/lib/api/benchmark/const.js.map +1 -0
  13. package/lib/api/benchmark/index.d.ts +4 -6
  14. package/lib/api/benchmark/index.d.ts.map +1 -1
  15. package/lib/api/benchmark/index.js.map +1 -1
  16. package/lib/api/benchmark/start.d.ts +1 -7
  17. package/lib/api/benchmark/start.d.ts.map +1 -1
  18. package/lib/api/benchmark/start.js +56 -49
  19. package/lib/api/benchmark/start.js.map +1 -1
  20. package/lib/api/benchmark/types.d.ts +76 -12
  21. package/lib/api/benchmark/types.d.ts.map +1 -1
  22. package/lib/api/benchmark/utils/compilationUtils.d.ts +4 -0
  23. package/lib/api/benchmark/utils/compilationUtils.d.ts.map +1 -0
  24. package/lib/api/benchmark/utils/compilationUtils.js +157 -0
  25. package/lib/api/benchmark/utils/compilationUtils.js.map +1 -0
  26. package/lib/api/benchmark/utils/stats.d.ts +2 -7
  27. package/lib/api/benchmark/utils/stats.d.ts.map +1 -1
  28. package/lib/api/benchmark/utils/stats.js +36 -22
  29. package/lib/api/benchmark/utils/stats.js.map +1 -1
  30. package/lib/api/build/index.d.ts +1 -0
  31. package/lib/api/build/index.d.ts.map +1 -1
  32. package/lib/api/build/index.js.map +1 -1
  33. package/lib/api/index.js +1 -1
  34. package/lib/api/index.js.map +1 -1
  35. package/lib/api/start/index.d.ts +1 -0
  36. package/lib/api/start/index.d.ts.map +1 -1
  37. package/lib/api/start/index.js.map +1 -1
  38. package/lib/builder/webpack/analyzePlugins/rsdoctor.d.ts +5 -5
  39. package/lib/builder/webpack/analyzePlugins/rsdoctor.d.ts.map +1 -1
  40. package/lib/builder/webpack/analyzePlugins/rsdoctor.js +7 -9
  41. package/lib/builder/webpack/analyzePlugins/rsdoctor.js.map +1 -1
  42. package/lib/builder/webpack/index.d.ts.map +1 -1
  43. package/lib/builder/webpack/index.js +14 -12
  44. package/lib/builder/webpack/index.js.map +1 -1
  45. package/lib/builder/webpack/providers/build/client.d.ts.map +1 -1
  46. package/lib/builder/webpack/providers/build/client.js +3 -2
  47. package/lib/builder/webpack/providers/build/client.js.map +1 -1
  48. package/lib/builder/webpack/providers/build/server.d.ts.map +1 -1
  49. package/lib/builder/webpack/providers/build/server.js +3 -2
  50. package/lib/builder/webpack/providers/build/server.js.map +1 -1
  51. package/lib/builder/webpack/providers/shared.d.ts.map +1 -1
  52. package/lib/builder/webpack/providers/shared.js +39 -5
  53. package/lib/builder/webpack/providers/shared.js.map +1 -1
  54. package/lib/builder/webpack/providers/start/shared.d.ts.map +1 -1
  55. package/lib/builder/webpack/providers/start/shared.js +6 -2
  56. package/lib/builder/webpack/providers/start/shared.js.map +1 -1
  57. package/lib/builder/webpack/tokens.d.ts +8 -16
  58. package/lib/builder/webpack/tokens.d.ts.map +1 -1
  59. package/lib/cli/index.d.ts.map +1 -1
  60. package/lib/cli/index.js +12 -12
  61. package/lib/cli/index.js.map +1 -1
  62. package/lib/commands/analyze/command.d.ts +1 -1
  63. package/lib/commands/analyze/command.d.ts.map +1 -1
  64. package/lib/commands/benchmark/benchmark.d.ts +3 -1
  65. package/lib/commands/benchmark/benchmark.d.ts.map +1 -1
  66. package/lib/commands/benchmark/benchmark.js +130 -31
  67. package/lib/commands/benchmark/benchmark.js.map +1 -1
  68. package/lib/commands/benchmark/command.d.ts +9 -0
  69. package/lib/commands/benchmark/command.d.ts.map +1 -1
  70. package/lib/commands/benchmark/command.js +12 -0
  71. package/lib/commands/benchmark/command.js.map +1 -1
  72. package/lib/commands/build/command.d.ts.map +1 -1
  73. package/lib/commands/build/command.js +5 -0
  74. package/lib/commands/build/command.js.map +1 -1
  75. package/lib/commands/start/command.d.ts.map +1 -1
  76. package/lib/commands/start/command.js +5 -0
  77. package/lib/commands/start/command.js.map +1 -1
  78. package/lib/config/configManager.d.ts +2 -0
  79. package/lib/config/configManager.d.ts.map +1 -1
  80. package/lib/config/configManager.js +2 -0
  81. package/lib/config/configManager.js.map +1 -1
  82. package/lib/di/tokens/config.d.ts +4 -8
  83. package/lib/di/tokens/config.d.ts.map +1 -1
  84. package/lib/library/webpack/blocks/js.d.ts.map +1 -1
  85. package/lib/library/webpack/blocks/js.js +57 -11
  86. package/lib/library/webpack/blocks/js.js.map +1 -1
  87. package/lib/library/webpack/common/main.d.ts.map +1 -1
  88. package/lib/library/webpack/common/main.js +7 -0
  89. package/lib/library/webpack/common/main.js.map +1 -1
  90. package/lib/library/webpack/utils/rsdoctor.d.ts +2 -0
  91. package/lib/library/webpack/utils/rsdoctor.d.ts.map +1 -0
  92. package/lib/library/webpack/utils/rsdoctor.js +27 -0
  93. package/lib/library/webpack/utils/rsdoctor.js.map +1 -0
  94. package/lib/library/webpack/utils/threadLoader.d.ts.map +1 -1
  95. package/lib/library/webpack/utils/threadLoader.js +3 -3
  96. package/lib/library/webpack/utils/threadLoader.js.map +1 -1
  97. package/lib/schema/autogeneratedSchema.json +228 -120
  98. package/lib/typings/build/Builder.d.ts +6 -2
  99. package/lib/typings/build/Builder.d.ts.map +1 -1
  100. package/lib/typings/configEntry/cli.d.ts +5 -0
  101. package/lib/typings/configEntry/cli.d.ts.map +1 -1
  102. package/package.json +16 -17
  103. package/schema.json +228 -120
  104. package/src/api/analyze/index.ts +3 -16
  105. package/src/api/benchmark/__integration__/start.test.ts +10 -12
  106. package/src/api/benchmark/build.ts +75 -30
  107. package/src/api/benchmark/const.ts +1 -0
  108. package/src/api/benchmark/index.ts +4 -6
  109. package/src/api/benchmark/start.ts +69 -65
  110. package/src/api/benchmark/types.ts +82 -14
  111. package/src/api/benchmark/utils/compilationUtils.ts +213 -0
  112. package/src/api/benchmark/utils/stats.ts +45 -28
  113. package/src/api/build/index.ts +1 -0
  114. package/src/api/index.ts +1 -1
  115. package/src/api/start/index.ts +1 -0
  116. package/src/builder/webpack/analyzePlugins/rsdoctor.ts +11 -14
  117. package/src/builder/webpack/index.ts +16 -21
  118. package/src/builder/webpack/providers/build/client.ts +7 -2
  119. package/src/builder/webpack/providers/build/server.ts +7 -2
  120. package/src/builder/webpack/providers/shared.ts +53 -5
  121. package/src/builder/webpack/providers/start/shared.ts +7 -2
  122. package/src/cli/index.ts +3 -2
  123. package/src/commands/analyze/command.ts +1 -1
  124. package/src/commands/benchmark/benchmark.ts +168 -33
  125. package/src/commands/benchmark/command.ts +12 -0
  126. package/src/commands/build/command.ts +6 -0
  127. package/src/commands/new/templates/shared/package.json.hbs +1 -1
  128. package/src/commands/start/command.ts +6 -0
  129. package/src/config/configManager.ts +4 -0
  130. package/src/library/webpack/blocks/js.ts +61 -12
  131. package/src/library/webpack/common/main.ts +8 -0
  132. package/src/library/webpack/utils/rsdoctor.ts +26 -0
  133. package/src/library/webpack/utils/threadLoader.ts +1 -0
  134. package/src/models/config.spec.ts +4 -0
  135. package/src/schema/autogeneratedSchema.json +228 -120
  136. package/src/schema/tramvai.spec.ts +2 -0
  137. package/src/typings/build/Builder.ts +7 -2
  138. package/src/typings/configEntry/cli.ts +6 -0
  139. package/lib/api/analyze/providers/shared.d.ts +0 -3
  140. package/lib/api/analyze/providers/shared.d.ts.map +0 -1
  141. package/lib/api/analyze/providers/shared.js +0 -23
  142. package/lib/api/analyze/providers/shared.js.map +0 -1
  143. package/lib/builder/webpack/providers/analyze/shared.d.ts +0 -3
  144. package/lib/builder/webpack/providers/analyze/shared.d.ts.map +0 -1
  145. package/lib/builder/webpack/providers/analyze/shared.js +0 -141
  146. package/lib/builder/webpack/providers/analyze/shared.js.map +0 -1
  147. package/src/api/analyze/providers/shared.ts +0 -26
  148. package/src/api/benchmark/utils/stats.spec.ts +0 -36
  149. package/src/builder/webpack/providers/analyze/shared.ts +0 -160
package/README.md CHANGED
@@ -35,7 +35,7 @@ After any command you can pass `--help` string, e.g. `tramvai --help` or `tramva
35
35
  - `tramvai start-prod` - run app in development mode, but code will be build in the production mode
36
36
  - `tramvai build` - build an app for server and client
37
37
  - `tramvai static` - generate static HTML for application pages
38
- - `tramvai analyze` - analyze bundle size
38
+ - `tramvai benchmark` - run benchmark for application build (run build multiple times and calculate mean values)
39
39
  - `tramvai generate` - code generation for different components. E.g. new projects, react components, actions and etc.
40
40
  - `tramvai update` - update `@tramvai/cli` and all of the `@tramvai` and `@tramvai-tinkoff` dependencies in the project. This command additionally executes dependency deduplication and code migrations
41
41
  - `tramvai add` - add `@tramvai` or `@tramvai-tinkoff` dependency to the app. This command additionally executes dependency deduplication and code migrations
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/analyze/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAM/C,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,QAAQ,GAAG,YAAY,GAAG,YAAY,CAAC;IAChD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;;AAEvF,wBAiBG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/analyze/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,QAAQ,GAAG,YAAY,GAAG,YAAY,CAAC;IAChD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;;AAEvF,wBAOG"}
@@ -1,22 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const createCommand_1 = require("../../commands/createCommand");
4
- const tokens_1 = require("../../di/tokens");
5
- const di_1 = require("../../utils/di");
6
- const shared_1 = require("./providers/shared");
7
4
  exports.default = (0, createCommand_1.createCommand)({
8
5
  name: 'analyze',
9
6
  command: async (di) => {
10
- const { plugin } = di.get(tokens_1.COMMAND_PARAMETERS_TOKEN);
11
- (0, di_1.registerProviders)(di, shared_1.sharedProviders);
12
- const builderFactory = di.get(tokens_1.ABSTRACT_BUILDER_FACTORY_TOKEN);
13
- const builder = await builderFactory.createBuilder('webpack', {
14
- options: {
15
- shouldBuildClient: true,
16
- shouldBuildServer: false,
17
- },
18
- });
19
- await builder.analyze({ plugin });
7
+ throw new Error('tramvai analyze is deprecated, please use `tramvai start|build --analyze=pluginName`\n');
20
8
  },
21
9
  });
22
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/analyze/index.ts"],"names":[],"mappings":";;AACA,gEAA6D;AAC7D,4CAA2F;AAC3F,uCAAmD;AACnD,+CAAqD;AAYrD,kBAAe,IAAA,6BAAa,EAAC;IAC3B,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,KAAK,EAAE,EAAE,EAAiB,EAAE;QACnC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,iCAAwB,CAAW,CAAC;QAE9D,IAAA,sBAAiB,EAAC,EAAE,EAAE,wBAAe,CAAC,CAAC;QAEvC,MAAM,cAAc,GAAG,EAAE,CAAC,GAAG,CAAC,uCAA8B,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,aAAa,CAAC,SAAS,EAAE;YAC5D,OAAO,EAAE;gBACP,iBAAiB,EAAE,IAAI;gBACvB,iBAAiB,EAAE,KAAK;aACzB;SACF,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACpC,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/analyze/index.ts"],"names":[],"mappings":";;AACA,gEAA6D;AAY7D,kBAAe,IAAA,6BAAa,EAAC;IAC3B,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,KAAK,EAAE,EAAE,EAAiB,EAAE;QACnC,MAAM,IAAI,KAAK,CACb,wFAAwF,CACzF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -1,14 +1,9 @@
1
1
  import type { Container } from '@tinkoff/dippy';
2
2
  import type { Params as OriginalBuildParams } from '../build/index';
3
3
  import type { Params, Result } from './index';
4
- import type { RunStats } from './types';
5
4
  export interface BuildParams extends Params {
6
5
  command: 'build';
7
6
  commandOptions: OriginalBuildParams;
8
7
  }
9
- export interface BuildResult extends Result {
10
- noCache?: RunStats;
11
- cache?: RunStats;
12
- }
13
- export declare const benchmarkBuild: (di: Container) => Promise<BuildResult>;
8
+ export declare const benchmarkBuild: (di: Container) => Promise<Result>;
14
9
  //# sourceMappingURL=build.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/api/benchmark/build.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,IAAI,mBAAmB,EAAiC,MAAM,gBAAgB,CAAC;AAEnG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAW,QAAQ,EAAE,MAAM,SAAS,CAAC;AAIjD,MAAM,WAAW,WAAY,SAAQ,MAAM;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,mBAAmB,CAAC;CACrC;AAED,MAAM,WAAW,WAAY,SAAQ,MAAM;IACzC,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,KAAK,CAAC,EAAE,QAAQ,CAAC;CAClB;AAwCD,eAAO,MAAM,cAAc,OAAc,SAAS,KAAG,QAAQ,WAAW,CAiBvE,CAAC"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/api/benchmark/build.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,IAAI,mBAAmB,EAAiC,MAAM,gBAAgB,CAAC;AAEnG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAO9C,MAAM,WAAW,WAAY,SAAQ,MAAM;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,mBAAmB,CAAC;CACrC;AAoFD,eAAO,MAAM,cAAc,OAAc,SAAS,KAAG,QAAQ,MAAM,CAoBlE,CAAC"}
@@ -4,43 +4,79 @@ exports.benchmarkBuild = void 0;
4
4
  const tokens_1 = require("../../di/tokens");
5
5
  const clearCache_1 = require("./utils/clearCache");
6
6
  const stats_1 = require("./utils/stats");
7
+ const compilationUtils_1 = require("./utils/compilationUtils");
8
+ const const_1 = require("./const");
7
9
  const runBuildCommand = async (di, { times, shouldClearCache, }) => {
8
- const clientSamples = Array(times);
9
- const serverSamples = Array(times);
10
- const maxMemoryRssSamples = Array(times);
10
+ const clientBuildTimeSamples = [];
11
+ const serverBuildTimeSamples = [];
12
+ const clientMaxMemoryRssSamples = [];
13
+ const serverMaxMemoryRssSamples = [];
14
+ const serverCompilationTimings = [];
15
+ const clientCompilationTimings = [];
16
+ const maxMemoryRssSamples = [];
11
17
  const { commandOptions } = di.get(tokens_1.COMMAND_PARAMETERS_TOKEN);
18
+ commandOptions.benchmark = true;
19
+ const buildType = commandOptions.buildType ?? 'all';
20
+ const benchmarkStartTime = new Date().toISOString();
12
21
  for (let i = 0; i < times; i++) {
13
22
  if (shouldClearCache) {
14
23
  await (0, clearCache_1.clearCacheDirectory)(di);
15
24
  }
16
- const { getBuildStats: getStats } = await di
25
+ const attemptStartTime = Date.now();
26
+ const { getBuildStats } = await di
17
27
  .get(tokens_1.COMMAND_RUNNER_TOKEN)
18
28
  .run('build', commandOptions);
19
- const stats = getStats();
20
- clientSamples[i] = stats.clientBuildTime;
21
- serverSamples[i] = stats.serverBuildTime;
22
- maxMemoryRssSamples[i] = stats.maxMemoryRss;
29
+ const stats = getBuildStats();
30
+ // at first attempt do not save metrics if cache is used
31
+ if (!shouldClearCache && i === 0) {
32
+ continue;
33
+ }
34
+ if (buildType === 'all' || buildType === 'server') {
35
+ serverCompilationTimings.push(await (0, compilationUtils_1.getServerCompilationTimings)(benchmarkStartTime, attemptStartTime, i));
36
+ serverBuildTimeSamples.push(stats.server.buildTime);
37
+ if (stats.server.maxMemoryRss) {
38
+ clientMaxMemoryRssSamples.push(stats.server.maxMemoryRss);
39
+ }
40
+ }
41
+ if (buildType === 'all' || buildType === 'client') {
42
+ clientCompilationTimings.push(await (0, compilationUtils_1.getClientCompilationTimings)(benchmarkStartTime, attemptStartTime, i));
43
+ clientBuildTimeSamples.push(stats.client.buildTime);
44
+ if (stats.client.maxMemoryRss) {
45
+ clientMaxMemoryRssSamples.push(stats.client.maxMemoryRss);
46
+ }
47
+ }
48
+ if (stats.maxMemoryRss) {
49
+ maxMemoryRssSamples.push(stats.maxMemoryRss);
50
+ }
23
51
  }
24
52
  return {
25
- clientSamples,
26
- serverSamples,
53
+ serverCompilationTimings,
54
+ clientCompilationTimings,
55
+ clientBuildTimeSamples,
56
+ serverBuildTimeSamples,
27
57
  maxMemoryRssSamples,
58
+ clientMaxMemoryRssSamples,
59
+ serverMaxMemoryRssSamples,
28
60
  };
29
61
  };
30
62
  const benchmarkBuild = async (di) => {
31
- const { times = 5 } = di.get(tokens_1.COMMAND_PARAMETERS_TOKEN);
32
- const noCache = await runBuildCommand(di, {
33
- times: Math.max(Math.floor(times / 2), 2),
34
- shouldClearCache: true,
35
- });
36
- const cache = await runBuildCommand(di, {
37
- times,
38
- shouldClearCache: false,
39
- });
40
- return {
41
- cache: (0, stats_1.getResultStats)(cache),
42
- noCache: (0, stats_1.getResultStats)(noCache),
43
- };
63
+ const { times = const_1.DEFAULT_TIMES, commandOptions } = di.get(tokens_1.COMMAND_PARAMETERS_TOKEN);
64
+ const noCache = !commandOptions.fileCache;
65
+ let result;
66
+ if (noCache) {
67
+ result = await runBuildCommand(di, {
68
+ times,
69
+ shouldClearCache: true,
70
+ });
71
+ }
72
+ else {
73
+ result = await runBuildCommand(di, {
74
+ // additional first attempt for cache warmup
75
+ times: times + 1,
76
+ shouldClearCache: false,
77
+ });
78
+ }
79
+ return (0, stats_1.getResultStats)(result);
44
80
  };
45
81
  exports.benchmarkBuild = benchmarkBuild;
46
82
  //# sourceMappingURL=build.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/api/benchmark/build.ts"],"names":[],"mappings":";;;AAEA,4CAAiF;AAGjF,mDAAyD;AACzD,yCAA+C;AAY/C,MAAM,eAAe,GAAG,KAAK,EAC3B,EAAa,EACb,EACE,KAAK,EACL,gBAAgB,GAIjB,EACiB,EAAE;IACpB,MAAM,aAAa,GAAa,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,aAAa,GAAa,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,mBAAmB,GAAa,KAAK,CAAC,KAAK,CAAC,CAAC;IAEnD,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,iCAAwB,CAAgB,CAAC;IAE3E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;QAC9B,IAAI,gBAAgB,EAAE;YACpB,MAAM,IAAA,gCAAmB,EAAC,EAAE,CAAC,CAAC;SAC/B;QAED,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,MAAO,EAAE;aAC1C,GAAG,CAAC,6BAAoB,CAAC;aACzB,GAAG,CAAC,OAAO,EAAE,cAAc,CAAyB,CAAC;QACxD,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QAEzB,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC;QACzC,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC;QACzC,mBAAmB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC;KAC7C;IAED,OAAO;QACL,aAAa;QACb,aAAa;QACb,mBAAmB;KACpB,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,cAAc,GAAG,KAAK,EAAE,EAAa,EAAwB,EAAE;IAC1E,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,iCAAwB,CAAW,CAAC;IAEjE,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,EAAE,EAAE;QACxC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACzC,gBAAgB,EAAE,IAAI;KACvB,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,EAAE,EAAE;QACtC,KAAK;QACL,gBAAgB,EAAE,KAAK;KACxB,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,EAAE,IAAA,sBAAc,EAAC,KAAK,CAAC;QAC5B,OAAO,EAAE,IAAA,sBAAc,EAAC,OAAO,CAAC;KACjC,CAAC;AACJ,CAAC,CAAC;AAjBW,QAAA,cAAc,kBAiBzB"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/api/benchmark/build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const DEFAULT_TIMES = 3;
2
+ //# sourceMappingURL=const.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../../../src/api/benchmark/const.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,IAAI,CAAC"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_TIMES = void 0;
4
+ exports.DEFAULT_TIMES = 3;
5
+ //# sourceMappingURL=const.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"const.js","sourceRoot":"","sources":["../../../src/api/benchmark/const.ts"],"names":[],"mappings":";;;AAAa,QAAA,aAAa,GAAG,CAAC,CAAC"}
@@ -1,16 +1,14 @@
1
1
  import type { Provider } from '@tinkoff/dippy';
2
- import type { BuildParams, BuildResult } from './build';
3
- import type { StartParams, StartResult } from './start';
2
+ import type { BuildParams } from './build';
3
+ import type { StartParams } from './start';
4
4
  import type { RunStats } from './types';
5
5
  export interface Params {
6
6
  command: string;
7
7
  commandOptions: any;
8
8
  times?: number;
9
9
  }
10
- export interface Result {
11
- [key: string]: RunStats | undefined;
12
- }
13
- export type BenchmarkCommand = (params: StartParams | BuildParams, providers?: Provider[]) => Promise<StartResult | BuildResult>;
10
+ export type Result = RunStats;
11
+ export type BenchmarkCommand = (params: StartParams | BuildParams, providers?: Provider[]) => Promise<Result>;
14
12
  declare const _default: import("../../typings/commands").Command;
15
13
  export default _default;
16
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/benchmark/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAExD,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAExD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,GAAG,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,MAAM;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;CACrC;AAED,MAAM,MAAM,gBAAgB,GAAG,CAC7B,MAAM,EAAE,WAAW,GAAG,WAAW,EACjC,SAAS,CAAC,EAAE,QAAQ,EAAE,KACnB,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC;;AAExC,wBAkBG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/benchmark/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,GAAG,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,MAAM,GAAG,QAAQ,CAAC;AAE9B,MAAM,MAAM,gBAAgB,GAAG,CAC7B,MAAM,EAAE,WAAW,GAAG,WAAW,EACjC,SAAS,CAAC,EAAE,QAAQ,EAAE,KACnB,OAAO,CAAC,MAAM,CAAC,CAAC;;AAErB,wBAkBG"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/benchmark/index.ts"],"names":[],"mappings":";;AACA,gEAA6D;AAC7D,4CAAmF;AAEnF,mCAAyC;AAEzC,mCAAyC;AAkBzC,kBAAe,IAAA,6BAAa,EAAC;IAC3B,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,CAAC,EAAE,EAAmB,EAAE;QAC/B,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,iCAAwB,CAAW,CAAC;QAE/D,QAAQ,OAAO,EAAE;YACf,KAAK,OAAO;gBACV,OAAO,IAAA,sBAAc,EAAC,EAAE,CAAC,CAAC;YAC5B,KAAK,OAAO;gBACV,OAAO,IAAA,sBAAc,EAAC,EAAE,CAAC,CAAC;SAC7B;IACH,CAAC;IACD,SAAS,EAAE;QACT;YACE,OAAO,EAAE,+BAAsB;YAC/B,QAAQ,EAAE,IAAI;SACf;KACF;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/benchmark/index.ts"],"names":[],"mappings":";;AACA,gEAA6D;AAC7D,4CAAmF;AAEnF,mCAAyC;AAEzC,mCAAyC;AAgBzC,kBAAe,IAAA,6BAAa,EAAC;IAC3B,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,CAAC,EAAE,EAAmB,EAAE;QAC/B,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,iCAAwB,CAAW,CAAC;QAE/D,QAAQ,OAAO,EAAE;YACf,KAAK,OAAO;gBACV,OAAO,IAAA,sBAAc,EAAC,EAAE,CAAC,CAAC;YAC5B,KAAK,OAAO;gBACV,OAAO,IAAA,sBAAc,EAAC,EAAE,CAAC,CAAC;SAC7B;IACH,CAAC;IACD,SAAS,EAAE;QACT;YACE,OAAO,EAAE,+BAAsB;YAC/B,QAAQ,EAAE,IAAI;SACf;KACF;CACF,CAAC,CAAC"}
@@ -1,15 +1,9 @@
1
1
  import type { Container } from '@tinkoff/dippy';
2
2
  import type { Params as OriginalStartParams } from '../start/index';
3
3
  import type { Params, Result } from './index';
4
- import type { RunStats } from './types';
5
4
  export interface StartParams extends Params {
6
5
  command: 'start';
7
6
  commandOptions: OriginalStartParams;
8
7
  }
9
- export interface StartResult extends Result {
10
- noCache?: RunStats;
11
- cache?: RunStats;
12
- rebuild?: RunStats;
13
- }
14
- export declare const benchmarkStart: (di: Container) => Promise<StartResult>;
8
+ export declare const benchmarkStart: (di: Container) => Promise<Result>;
15
9
  //# sourceMappingURL=start.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/api/benchmark/start.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,IAAI,mBAAmB,EAAiC,MAAM,gBAAgB,CAAC;AAEnG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAW,QAAQ,EAAE,MAAM,SAAS,CAAC;AAMjD,MAAM,WAAW,WAAY,SAAQ,MAAM;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,mBAAmB,CAAC;CACrC;AAED,MAAM,WAAW,WAAY,SAAQ,MAAM;IACzC,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,OAAO,CAAC,EAAE,QAAQ,CAAC;CACpB;AA4ED,eAAO,MAAM,cAAc,OAAc,SAAS,KAAG,QAAQ,WAAW,CAoBvE,CAAC"}
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/api/benchmark/start.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,IAAI,mBAAmB,EAAiC,MAAM,gBAAgB,CAAC;AAEnG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAO9C,MAAM,WAAW,WAAY,SAAQ,MAAM;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,mBAAmB,CAAC;CACrC;AAqFD,eAAO,MAAM,cAAc,OAAc,SAAS,KAAG,QAAQ,MAAM,CAoBlE,CAAC"}
@@ -4,73 +4,80 @@ exports.benchmarkStart = void 0;
4
4
  const tokens_1 = require("../../di/tokens");
5
5
  const clearCache_1 = require("./utils/clearCache");
6
6
  const stats_1 = require("./utils/stats");
7
- const REBUILD_WARMUP_TIMES = 3;
7
+ const compilationUtils_1 = require("./utils/compilationUtils");
8
+ const const_1 = require("./const");
8
9
  const runStartCommand = async (di, { times, shouldClearCache, }) => {
9
- const clientSamples = Array(times);
10
- const serverSamples = Array(times);
11
- const maxMemoryRssSamples = Array(times);
10
+ const clientBuildTimeSamples = [];
11
+ const serverBuildTimeSamples = [];
12
+ const clientMaxMemoryRssSamples = [];
13
+ const serverMaxMemoryRssSamples = [];
14
+ const serverCompilationTimings = [];
15
+ const clientCompilationTimings = [];
16
+ const maxMemoryRssSamples = [];
12
17
  const { commandOptions } = di.get(tokens_1.COMMAND_PARAMETERS_TOKEN);
18
+ commandOptions.benchmark = true;
19
+ const buildType = commandOptions.buildType ?? 'all';
20
+ const benchmarkStartTime = new Date().toISOString();
13
21
  for (let i = 0; i < times; i++) {
14
22
  if (shouldClearCache) {
15
23
  await (0, clearCache_1.clearCacheDirectory)(di);
16
24
  }
25
+ const attemptStartTime = Date.now();
17
26
  const { close, getBuildStats } = await di
18
27
  .get(tokens_1.COMMAND_RUNNER_TOKEN)
19
28
  .run('start', commandOptions);
20
29
  const stats = getBuildStats();
21
30
  await close();
22
- clientSamples[i] = stats.clientBuildTime;
23
- serverSamples[i] = stats.serverBuildTime;
24
- maxMemoryRssSamples[i] = stats.maxMemoryRss;
31
+ // at first attempt do not save metrics if cache is used
32
+ if (!shouldClearCache && i === 0) {
33
+ continue;
34
+ }
35
+ if (buildType === 'all' || buildType === 'server') {
36
+ serverCompilationTimings.push(await (0, compilationUtils_1.getServerCompilationTimings)(benchmarkStartTime, attemptStartTime, i));
37
+ serverBuildTimeSamples.push(stats.server.buildTime);
38
+ if (stats.server.maxMemoryRss) {
39
+ serverMaxMemoryRssSamples.push(stats.server.maxMemoryRss);
40
+ }
41
+ }
42
+ if (buildType === 'all' || buildType === 'client') {
43
+ clientCompilationTimings.push(await (0, compilationUtils_1.getClientCompilationTimings)(benchmarkStartTime, attemptStartTime, i));
44
+ clientBuildTimeSamples.push(stats.client.buildTime);
45
+ if (stats.client.maxMemoryRss) {
46
+ clientMaxMemoryRssSamples.push(stats.client.maxMemoryRss);
47
+ }
48
+ }
49
+ if (stats.maxMemoryRss) {
50
+ maxMemoryRssSamples.push(stats.maxMemoryRss);
51
+ }
25
52
  }
26
53
  return {
27
- clientSamples,
28
- serverSamples,
54
+ serverCompilationTimings,
55
+ clientCompilationTimings,
56
+ clientMaxMemoryRssSamples,
57
+ serverMaxMemoryRssSamples,
58
+ clientBuildTimeSamples,
59
+ serverBuildTimeSamples,
29
60
  maxMemoryRssSamples,
30
61
  };
31
62
  };
32
- const runRebuild = async (di, { times }) => {
33
- const clientSamples = Array(times);
34
- const serverSamples = Array(times);
35
- const maxMemoryRssSamples = Array(times);
36
- const { commandOptions } = di.get(tokens_1.COMMAND_PARAMETERS_TOKEN);
37
- const { close, invalidate, getBuildStats } = await di
38
- .get(tokens_1.COMMAND_RUNNER_TOKEN)
39
- .run('start', commandOptions);
40
- // warmup rebuild as it usually pretty slow at first runs
41
- for (let i = 0; i < REBUILD_WARMUP_TIMES; i++) {
42
- await invalidate();
63
+ const benchmarkStart = async (di) => {
64
+ const { times = const_1.DEFAULT_TIMES, commandOptions } = di.get(tokens_1.COMMAND_PARAMETERS_TOKEN);
65
+ const noCache = !commandOptions.fileCache;
66
+ let result;
67
+ if (noCache) {
68
+ result = await runStartCommand(di, {
69
+ times,
70
+ shouldClearCache: true,
71
+ });
43
72
  }
44
- for (let i = 0; i < times; i++) {
45
- await invalidate();
46
- const stats = getBuildStats();
47
- clientSamples[i] = stats.clientBuildTime;
48
- serverSamples[i] = stats.serverBuildTime;
49
- maxMemoryRssSamples[i] = stats.maxMemoryRss;
73
+ else {
74
+ result = await runStartCommand(di, {
75
+ // additional first attempt for cache warmup
76
+ times: times + 1,
77
+ shouldClearCache: false,
78
+ });
50
79
  }
51
- await close();
52
- return {
53
- clientSamples,
54
- serverSamples,
55
- maxMemoryRssSamples,
56
- };
57
- };
58
- const benchmarkStart = async (di) => {
59
- const { times = 5 } = di.get(tokens_1.COMMAND_PARAMETERS_TOKEN);
60
- const noCache = await runStartCommand(di, {
61
- times: Math.max(Math.floor(times / 3), 2),
62
- shouldClearCache: true,
63
- });
64
- const cache = await runStartCommand(di, {
65
- times: Math.max(Math.floor(times / 2), 2),
66
- shouldClearCache: false,
67
- });
68
- const rebuild = await runRebuild(di, { times });
69
- return {
70
- cache: (0, stats_1.getResultStats)(cache),
71
- noCache: (0, stats_1.getResultStats)(noCache),
72
- rebuild: (0, stats_1.getResultStats)(rebuild),
73
- };
80
+ return (0, stats_1.getResultStats)(result);
74
81
  };
75
82
  exports.benchmarkStart = benchmarkStart;
76
83
  //# sourceMappingURL=start.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/api/benchmark/start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/api/benchmark/start.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,81 @@
1
- export interface Stats {
2
- samples: number[];
3
- mean: number;
4
- std: number;
5
- variance: number;
6
- }
7
1
  export type Samples = {
8
- clientSamples: Stats['samples'];
9
- serverSamples: Stats['samples'];
10
- maxMemoryRssSamples: Stats['samples'];
2
+ serverCompilationTimings: CompilationStats[];
3
+ serverBuildTimeSamples: number[];
4
+ clientCompilationTimings: CompilationStats[];
5
+ clientBuildTimeSamples: number[];
6
+ maxMemoryRssSamples: number[];
7
+ clientMaxMemoryRssSamples: number[];
8
+ serverMaxMemoryRssSamples: number[];
9
+ };
10
+ export type CompilationStats = {
11
+ totalBuildCosts: Record<string, number>;
12
+ loaderBuildCosts: Record<string, number>;
13
+ pluginBuildCosts: Record<string, number>;
11
14
  };
12
15
  export type RunStats = {
13
- client: Stats;
14
- server: Stats;
15
- maxMemoryRss: Stats;
16
+ serverCompilationStats: CompilationStats | undefined;
17
+ clientCompilationStats: CompilationStats | undefined;
18
+ clientBuildTime: number | undefined;
19
+ serverBuildTime: number | undefined;
20
+ clientMaxMemoryRss: number | undefined;
21
+ serverMaxMemoryRss: number | undefined;
22
+ maxMemoryRss: number | undefined;
23
+ };
24
+ type PlainObject<T = any> = {
25
+ [key: string]: T;
16
26
  };
27
+ interface ProcessData {
28
+ /**
29
+ * process id
30
+ */
31
+ pid: number;
32
+ /**
33
+ * parent process id
34
+ */
35
+ ppid: number | null;
36
+ }
37
+ export interface LoaderTransformData extends ProcessData {
38
+ /** loader name */
39
+ loader: string;
40
+ /**
41
+ * loader index
42
+ */
43
+ loaderIndex: number;
44
+ /** loader path */
45
+ path: string;
46
+ input: string | null | undefined;
47
+ /**
48
+ * - isPitch: true: the result of loader.pitch()
49
+ * - isPitch: false: the code result of loader()
50
+ */
51
+ result: string | null | undefined;
52
+ /** Timestamp when called */
53
+ startAt: number;
54
+ endAt: number;
55
+ /** loader configuration */
56
+ options: PlainObject;
57
+ /** pitching loader */
58
+ isPitch: boolean;
59
+ /**
60
+ * is sync
61
+ */
62
+ sync: boolean;
63
+ /** Error during conversion */
64
+ /** module layer */
65
+ layer?: string;
66
+ }
67
+ export type MinimalLoaderData = Pick<LoaderTransformData, 'startAt' | 'endAt' | 'pid' | 'loader'>;
68
+ export interface PluginData {
69
+ /** hook tap name */
70
+ tapName: string;
71
+ /** hook call time-consuming */
72
+ costs: number;
73
+ startAt: number;
74
+ endAt: number;
75
+ /** hook function type */
76
+ type: 'sync' | 'async' | 'promise';
77
+ /** hook function result */
78
+ result: any;
79
+ }
80
+ export {};
17
81
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/api/benchmark/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IAEZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAChC,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAChC,mBAAmB,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,KAAK,CAAC;IACd,MAAM,EAAE,KAAK,CAAC;IACd,YAAY,EAAE,KAAK,CAAC;CACrB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/api/benchmark/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG;IACpB,wBAAwB,EAAE,gBAAgB,EAAE,CAAC;IAC7C,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,wBAAwB,EAAE,gBAAgB,EAAE,CAAC;IAC7C,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,yBAAyB,EAAE,MAAM,EAAE,CAAC;IACpC,yBAAyB,EAAE,MAAM,EAAE,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,sBAAsB,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACrD,sBAAsB,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACrD,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC,CAAC;AAEF,KAAK,WAAW,CAAC,CAAC,GAAG,GAAG,IAAI;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;CAClB,CAAC;AAEF,UAAU,WAAW;IACnB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACjC;;;OAGG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,OAAO,EAAE,WAAW,CAAC;IACrB,sBAAsB;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,IAAI,EAAE,OAAO,CAAC;IACd,8BAA8B;IAE9B,mBAAmB;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,EAAE,SAAS,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAC;AAElG,MAAM,WAAW,UAAU;IACzB,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,yBAAyB;IACzB,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACnC,2BAA2B;IAC3B,MAAM,EAAE,GAAG,CAAC;CACb"}
@@ -0,0 +1,4 @@
1
+ import { CompilationStats } from '../types';
2
+ export declare function getServerCompilationTimings(benchmarkStartTime: string, attemptStartTime: number, attempt: number): Promise<CompilationStats>;
3
+ export declare function getClientCompilationTimings(benchmarkStartTime: string, attemptStartTime: number, attempt: number): Promise<CompilationStats>;
4
+ //# sourceMappingURL=compilationUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compilationUtils.d.ts","sourceRoot":"","sources":["../../../../src/api/benchmark/utils/compilationUtils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAsD,MAAM,UAAU,CAAC;AAEhG,wBAAsB,2BAA2B,CAC/C,kBAAkB,EAAE,MAAM,EAC1B,gBAAgB,EAAE,MAAM,EACxB,OAAO,EAAE,MAAM,6BAGhB;AAED,wBAAsB,2BAA2B,CAC/C,kBAAkB,EAAE,MAAM,EAC1B,gBAAgB,EAAE,MAAM,EACxB,OAAO,EAAE,MAAM,6BAGhB"}