@electron-stagewright/plugin-budget 0.1.0 → 0.2.0
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.
- package/README.md +72 -6
- package/dist/budget.d.ts +9 -0
- package/dist/budget.d.ts.map +1 -1
- package/dist/budget.js +5 -0
- package/dist/budget.js.map +1 -1
- package/dist/check-api.d.ts +15 -0
- package/dist/check-api.d.ts.map +1 -0
- package/dist/check-api.js +11 -0
- package/dist/check-api.js.map +1 -0
- package/dist/check.d.ts +7 -0
- package/dist/check.d.ts.map +1 -1
- package/dist/check.js +33 -7
- package/dist/check.js.map +1 -1
- package/dist/cli.d.ts +12 -4
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +94 -31
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/measure.d.ts +35 -1
- package/dist/measure.d.ts.map +1 -1
- package/dist/measure.js +150 -20
- package/dist/measure.js.map +1 -1
- package/dist/plugin.js +1 -1
- package/dist/plugin.js.map +1 -1
- package/dist/probe.d.ts +10 -0
- package/dist/probe.d.ts.map +1 -1
- package/dist/probe.js +20 -0
- package/dist/probe.js.map +1 -1
- package/dist/run.d.ts +49 -0
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +65 -26
- package/dist/run.js.map +1 -1
- package/dist/session.d.ts +26 -1
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +124 -28
- package/dist/session.js.map +1 -1
- package/package.json +12 -5
package/README.md
CHANGED
|
@@ -92,6 +92,16 @@ another pid namespace reports memory `unmeasured` instead of a stranger's number
|
|
|
92
92
|
budget does not name is reported and never gates; GPU memory swings widely between machines, so
|
|
93
93
|
leave it out unless you mean to gate it.
|
|
94
94
|
- **`thresholdPercent`** is the tolerance over each limit; a section may override it.
|
|
95
|
+
- **`aggregate`** in a memory block is `end` (default) or `peak`; see Peak memory below.
|
|
96
|
+
- **`memoryProbe`** (top level) is a renderer expression that resolves to `app.getAppMetrics()`,
|
|
97
|
+
for builds whose main process cannot be inspected.
|
|
98
|
+
- **Phase.** `startup` reads `cold` unless it names a phase. A `memory` block that names none reads
|
|
99
|
+
the run's `warm` rounds, else `live`, else `cold`: a run of fresh-profile launches
|
|
100
|
+
(`--phases cold`) is gated on its cold rounds.
|
|
101
|
+
- **Startup is not launch-to-ready.** `maxFirstWindowMs` is process creation to the end of the
|
|
102
|
+
first window's load event. Work the app does after that (opening a database, fetching data,
|
|
103
|
+
starting a server) is not in it, so a wall-clock launch budget converted to it gets looser
|
|
104
|
+
without saying so. Time that work in a workload, or keep it in its own gate.
|
|
95
105
|
- **`$comment`** is allowed in every object. Unknown keys are rejected, so a typo cannot silently
|
|
96
106
|
disable a limit.
|
|
97
107
|
|
|
@@ -100,7 +110,7 @@ another pid namespace reports memory `unmeasured` instead of a stranger's number
|
|
|
100
110
|
```sh
|
|
101
111
|
electron-stagewright-budget measure --main dist/main.js --budget perf-budget.json \
|
|
102
112
|
--rounds 5 --out run.json --check
|
|
103
|
-
electron-stagewright-budget check run.json --budget perf-budget.json [--
|
|
113
|
+
electron-stagewright-budget check run.json --budget perf-budget.json [--no-tolerance] [--require-measurement]
|
|
104
114
|
electron-stagewright-budget compare before.json after.json
|
|
105
115
|
electron-stagewright-budget bundle --budget perf-budget.json [--root <dir>] [--out run.json]
|
|
106
116
|
```
|
|
@@ -124,25 +134,81 @@ electron-stagewright-budget bundle --budget perf-budget.json [--root <dir>] [--o
|
|
|
124
134
|
}
|
|
125
135
|
```
|
|
126
136
|
|
|
137
|
+
- `--before-round <script.mjs>` prepares each round before its first launch. The module
|
|
138
|
+
default-exports `async ({ round, profile }) => ({ env, args })` (string values only); the
|
|
139
|
+
returned `env` and `args` are added to that round's launches. Use it to hand every launch its own copy of a fixture, so
|
|
140
|
+
rounds that share state do not skew the median.
|
|
141
|
+
- `--skip-failed-rounds` reports a round whose launch or measurement failed and goes on. Pair it
|
|
142
|
+
with `--min-samples N` on the check: a metric with fewer than `N` measured launches is left
|
|
143
|
+
unmeasured instead of gated, and `--require-measurement` turns that into a failure. If every
|
|
144
|
+
round fails, the command fails with the first round's error (exit `2`):
|
|
145
|
+
|
|
146
|
+
```sh
|
|
147
|
+
electron-stagewright-budget measure --main dist/main.js --budget perf-budget.json \
|
|
148
|
+
--rounds 3 --phases cold --before-round fresh-fixture.mjs --skip-failed-rounds \
|
|
149
|
+
--check --min-samples 2
|
|
150
|
+
```
|
|
151
|
+
|
|
127
152
|
- `bundle` measures the `bundle` entries (paths resolve from `--root`, default the budget file's
|
|
128
153
|
directory) and gates them. It needs no Electron and no display.
|
|
129
|
-
- `check` compares
|
|
154
|
+
- `check` compares run files to the budget. Several files (`check a.json b.json c.json`) are merged
|
|
155
|
+
into one run first, and values are the median over the rounds of a phase. `--min-samples N`
|
|
156
|
+
leaves a runtime metric with fewer than `N` measured rounds `unmeasured`. In code,
|
|
157
|
+
`mergeRuns(runs)` and `checkRun(run, budget, { minSamples })` do the same, and `measureApp` takes
|
|
158
|
+
`beforeRound` and `failedRounds: 'skip'`.
|
|
130
159
|
- `compare` prints a before/after table of two runs.
|
|
131
|
-
- `--
|
|
132
|
-
|
|
160
|
+
- `--no-tolerance` ignores `thresholdPercent`, so the limit itself gates. It does not turn warnings
|
|
161
|
+
into failures: every verdict already fails the command. `--strict` is a deprecated alias that
|
|
162
|
+
prints a warning. `--require-measurement` fails a budgeted metric the run did not measure;
|
|
163
|
+
without it that metric is listed as `unmeasured`.
|
|
133
164
|
- `--json` prints the machine report instead of the table.
|
|
134
165
|
|
|
166
|
+
To run the CLI from a script, resolve it instead of guessing a path inside `dist/`:
|
|
167
|
+
|
|
168
|
+
```js
|
|
169
|
+
const cli = fileURLToPath(import.meta.resolve('@electron-stagewright/plugin-budget/cli'))
|
|
170
|
+
// or, from CommonJS: require.resolve('@electron-stagewright/plugin-budget/cli')
|
|
171
|
+
spawn(process.execPath, [cli, 'measure', '--main', 'dist/main.js', '--out', 'run.json'])
|
|
172
|
+
```
|
|
173
|
+
|
|
135
174
|
Exit codes: `0` within budget, `1` over budget **or nothing measured**, `2` usage error, unreadable
|
|
136
175
|
input, or any other error. A bundle entry that matches no file is `unmeasured`, never zero bytes,
|
|
137
176
|
and fails `bundle`. `measure` writes no run when no round produced a measurement.
|
|
138
177
|
|
|
139
178
|
The inspector Stagewright attaches is part of what `measure` measures, so calibrate budgets with
|
|
140
|
-
this tool.
|
|
179
|
+
this tool.
|
|
180
|
+
|
|
181
|
+
### Packaged builds with the inspect fuse off
|
|
182
|
+
|
|
183
|
+
A release build with the `EnableNodeCliInspectArguments` fuse off has no main-process inspector.
|
|
184
|
+
`measure --executable` still launches it (over CDP, through the renderer), and then:
|
|
185
|
+
|
|
186
|
+
- **Memory** comes from the app itself. Expose `app.getAppMetrics()` to the renderer (for example
|
|
187
|
+
`ipcMain.handle('app-metrics', () => app.getAppMetrics())` plus a preload bridge), and name the
|
|
188
|
+
expression in the budget as `"memoryProbe": "window.api.appMetrics()"`. The host still reads
|
|
189
|
+
each pid in the platform metric. Keep the bridge out of builds users get if you do not want it
|
|
190
|
+
there.
|
|
191
|
+
- **IPC latency** works as usual.
|
|
192
|
+
- **Main-thread blocking and startup** are `unmeasured`, with the reason.
|
|
193
|
+
|
|
194
|
+
### Peak memory
|
|
195
|
+
|
|
196
|
+
`"aggregate": "peak"` in a memory block gates the heaviest moment of the window instead of its
|
|
197
|
+
end: `measure` samples memory every second (`--memory-sample-ms` to change it, or to sample
|
|
198
|
+
without the budget asking) and keeps the sample with the most memory outside the GPU as
|
|
199
|
+
`memoryPeak`. Check rows are then `memoryPeak.main`, `memoryPeak.totalWithoutGpu`, and so on, and
|
|
200
|
+
the median is taken over the rounds' peaks. Sampling through main adds a little main-thread work
|
|
201
|
+
of its own, and a `memoryProbe` adds IPC round trips, so calibrate blocking and IPC budgets with
|
|
202
|
+
the same setting. A round where no sample succeeded leaves `memoryPeak` unmeasured.
|
|
141
203
|
|
|
142
204
|
## Library
|
|
143
205
|
|
|
206
|
+
`@electron-stagewright/plugin-budget/check` holds the budget and run formats, `checkRun`, and the
|
|
207
|
+
report renderers. It loads neither core nor the plugin, so a gate that only checks runs without the
|
|
208
|
+
MCP SDK. The root export adds `measureApp`, `measureSession` and the plugin.
|
|
209
|
+
|
|
144
210
|
```ts
|
|
145
|
-
import { checkRun, loadBudget, loadRun } from '@electron-stagewright/plugin-budget'
|
|
211
|
+
import { checkRun, loadBudget, loadRun } from '@electron-stagewright/plugin-budget/check'
|
|
146
212
|
|
|
147
213
|
const report = checkRun(await loadRun('run.json'), await loadBudget('perf-budget.json'))
|
|
148
214
|
if (!report.passed) console.error(report.results.filter((r) => r.status === 'fail'))
|
package/dist/budget.d.ts
CHANGED
|
@@ -27,6 +27,10 @@ declare const memoryPlatformSchema: z.ZodObject<{
|
|
|
27
27
|
warm: "warm";
|
|
28
28
|
live: "live";
|
|
29
29
|
}>>;
|
|
30
|
+
aggregate: z.ZodOptional<z.ZodEnum<{
|
|
31
|
+
end: "end";
|
|
32
|
+
peak: "peak";
|
|
33
|
+
}>>;
|
|
30
34
|
thresholdPercent: z.ZodOptional<z.ZodNumber>;
|
|
31
35
|
perTypeMb: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
|
|
32
36
|
main: "main";
|
|
@@ -50,6 +54,7 @@ declare const bundleEntrySchema: z.ZodObject<{
|
|
|
50
54
|
export declare const budgetSchema: z.ZodObject<{
|
|
51
55
|
$schema: z.ZodOptional<z.ZodString>;
|
|
52
56
|
thresholdPercent: z.ZodOptional<z.ZodNumber>;
|
|
57
|
+
memoryProbe: z.ZodOptional<z.ZodString>;
|
|
53
58
|
startup: z.ZodOptional<z.ZodObject<{
|
|
54
59
|
phase: z.ZodOptional<z.ZodEnum<{
|
|
55
60
|
cold: "cold";
|
|
@@ -76,6 +81,10 @@ export declare const budgetSchema: z.ZodObject<{
|
|
|
76
81
|
warm: "warm";
|
|
77
82
|
live: "live";
|
|
78
83
|
}>>;
|
|
84
|
+
aggregate: z.ZodOptional<z.ZodEnum<{
|
|
85
|
+
end: "end";
|
|
86
|
+
peak: "peak";
|
|
87
|
+
}>>;
|
|
79
88
|
thresholdPercent: z.ZodOptional<z.ZodNumber>;
|
|
80
89
|
perTypeMb: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
|
|
81
90
|
main: "main";
|
package/dist/budget.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"budget.d.ts","sourceRoot":"","sources":["../src/budget.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,mGAAmG;AACnG,eAAO,MAAM,cAAc,6DAA8D,CAAA;AACzF,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAA;AAE1D,+EAA+E;AAC/E,eAAO,MAAM,aAAa,0DAA2D,CAAA;AACrF,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAA;AAExD,sGAAsG;AACtG,eAAO,MAAM,MAAM,mCAAoC,CAAA;AACvD,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,CAAC,CAAA;AAE3C,eAAO,MAAM,gBAAgB,uCAAwC,CAAA;AACrE,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAA;AAM9D,QAAA,MAAM,oBAAoB
|
|
1
|
+
{"version":3,"file":"budget.d.ts","sourceRoot":"","sources":["../src/budget.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,mGAAmG;AACnG,eAAO,MAAM,cAAc,6DAA8D,CAAA;AACzF,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAA;AAE1D,+EAA+E;AAC/E,eAAO,MAAM,aAAa,0DAA2D,CAAA;AACrF,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAA;AAExD,sGAAsG;AACtG,eAAO,MAAM,MAAM,mCAAoC,CAAA;AACvD,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,CAAC,CAAA;AAE3C,eAAO,MAAM,gBAAgB,uCAAwC,CAAA;AACrE,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAA;AAM9D,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAWxB,CAAA;AAEF,QAAA,MAAM,iBAAiB;;;;;;;kBAQrB,CAAA;AAEF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAsDvB,CAAA;AAEF,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AACjD,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AACvE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAEjE,uFAAuF;AACvF,qBAAa,eAAgB,SAAQ,KAAK;IAEtC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,GAAG,gBAAgB;IAEpD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM;gBAFnB,IAAI,EAAE,kBAAkB,GAAG,gBAAgB,EACpD,OAAO,EAAE,MAAM,EACN,UAAU,CAAC,EAAE,MAAM,YAAA;CAK/B;AAED,kDAAkD;AAClD,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAOrE;AAED,uCAAuC;AACvC,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAuBpE"}
|
package/dist/budget.js
CHANGED
|
@@ -19,6 +19,8 @@ const memoryPlatformSchema = z.strictObject({
|
|
|
19
19
|
...comment,
|
|
20
20
|
metric: z.enum(MEMORY_METRICS),
|
|
21
21
|
phase: z.enum(PHASES).optional(),
|
|
22
|
+
// `end`: the sample taken when the window closes. `peak`: the window's highest sample outside GPU.
|
|
23
|
+
aggregate: z.enum(['end', 'peak']).optional(),
|
|
22
24
|
thresholdPercent,
|
|
23
25
|
// Summed per type. A type that is not named (GPU, typically) is reported but never gates.
|
|
24
26
|
perTypeMb: z.partialRecord(z.enum(PROCESS_TYPES), limit).optional(),
|
|
@@ -38,6 +40,9 @@ export const budgetSchema = z.strictObject({
|
|
|
38
40
|
...comment,
|
|
39
41
|
$schema: z.string().optional(),
|
|
40
42
|
thresholdPercent,
|
|
43
|
+
// Renderer expression resolving to `app.getAppMetrics()`, for a build whose main process cannot
|
|
44
|
+
// be inspected (the EnableNodeCliInspectArguments fuse off).
|
|
45
|
+
memoryProbe: z.string().min(1).optional(),
|
|
41
46
|
startup: z
|
|
42
47
|
.strictObject({
|
|
43
48
|
...comment,
|
package/dist/budget.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"budget.js","sourceRoot":"","sources":["../src/budget.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"budget.js","sourceRoot":"","sources":["../src/budget.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@electron-stagewright/plugin-budget/check`: the budget and run formats and the check, without
|
|
3
|
+
* core, the plugin, or anything that launches Electron.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
export { BUDGET_PLATFORMS, BudgetFileError, MEMORY_METRICS, PHASES, PROCESS_TYPES, budgetSchema, loadBudget, parseBudget, } from './budget.js';
|
|
8
|
+
export type { Budget, BudgetPlatform, BundleEntryBudget, MemoryMetric, MemoryPlatformBudget, Phase, ProcessType, } from './budget.js';
|
|
9
|
+
export { checkRun } from './check.js';
|
|
10
|
+
export type { CheckOptions, CheckReport, CheckResult, CheckStatus } from './check.js';
|
|
11
|
+
export { compareRuns, renderCheckReport, renderComparison } from './render.js';
|
|
12
|
+
export type { ComparisonRow } from './render.js';
|
|
13
|
+
export { RUN_FORMAT, RUN_SCHEMA_VERSION, RunFileError, createRun, loadRun, memoryByType, mergeRuns, runSchema, summarizeLatencies, summarizeRun, } from './run.js';
|
|
14
|
+
export type { BudgetRun, BundleEntryMeasurement, LatencySummary, Measurement, MemoryMeasurement, ProcessMemory, StallSummary, SummaryRow, } from './run.js';
|
|
15
|
+
//# sourceMappingURL=check-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-api.d.ts","sourceRoot":"","sources":["../src/check-api.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,MAAM,EACN,aAAa,EACb,YAAY,EACZ,UAAU,EACV,WAAW,GACZ,MAAM,aAAa,CAAA;AACpB,YAAY,EACV,MAAM,EACN,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,oBAAoB,EACpB,KAAK,EACL,WAAW,GACZ,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACrF,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9E,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,YAAY,EACZ,SAAS,EACT,OAAO,EACP,YAAY,EACZ,SAAS,EACT,SAAS,EACT,kBAAkB,EAClB,YAAY,GACb,MAAM,UAAU,CAAA;AACjB,YAAY,EACV,SAAS,EACT,sBAAsB,EACtB,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,UAAU,GACX,MAAM,UAAU,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@electron-stagewright/plugin-budget/check`: the budget and run formats and the check, without
|
|
3
|
+
* core, the plugin, or anything that launches Electron.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
export { BUDGET_PLATFORMS, BudgetFileError, MEMORY_METRICS, PHASES, PROCESS_TYPES, budgetSchema, loadBudget, parseBudget, } from './budget.js';
|
|
8
|
+
export { checkRun } from './check.js';
|
|
9
|
+
export { compareRuns, renderCheckReport, renderComparison } from './render.js';
|
|
10
|
+
export { RUN_FORMAT, RUN_SCHEMA_VERSION, RunFileError, createRun, loadRun, memoryByType, mergeRuns, runSchema, summarizeLatencies, summarizeRun, } from './run.js';
|
|
11
|
+
//# sourceMappingURL=check-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-api.js","sourceRoot":"","sources":["../src/check-api.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,MAAM,EACN,aAAa,EACb,YAAY,EACZ,UAAU,EACV,WAAW,GACZ,MAAM,aAAa,CAAA;AAUpB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE9E,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,YAAY,EACZ,SAAS,EACT,OAAO,EACP,YAAY,EACZ,SAAS,EACT,SAAS,EACT,kBAAkB,EAClB,YAAY,GACb,MAAM,UAAU,CAAA"}
|
package/dist/check.d.ts
CHANGED
|
@@ -32,11 +32,18 @@ export interface CheckReport {
|
|
|
32
32
|
}
|
|
33
33
|
export interface CheckOptions {
|
|
34
34
|
/** Ignore every `thresholdPercent`: the limit itself gates. */
|
|
35
|
+
readonly ignoreThreshold?: boolean;
|
|
36
|
+
/** @deprecated Same as `ignoreThreshold`; it never meant "fail instead of warn". */
|
|
35
37
|
readonly strict?: boolean;
|
|
36
38
|
/** Treat a budgeted metric the run did not measure as a failure. */
|
|
37
39
|
readonly requireMeasurement?: boolean;
|
|
38
40
|
/** Read every metric from this phase instead of the budget's own phases. */
|
|
39
41
|
readonly phase?: Phase;
|
|
42
|
+
/**
|
|
43
|
+
* Rounds a runtime metric needs before its median counts; fewer leaves it `unmeasured`. Use it
|
|
44
|
+
* with `--rounds N` so that a median never rests on one launch. Bundle entries are exempt.
|
|
45
|
+
*/
|
|
46
|
+
readonly minSamples?: number;
|
|
40
47
|
}
|
|
41
48
|
/** Compare `run` to `budget` for the platform the run was measured on. */
|
|
42
49
|
export declare function checkRun(run: BudgetRun, budget: Budget, options?: CheckOptions): CheckReport;
|
package/dist/check.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAiB,KAAK,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAA;AACpE,OAAO,EAAgB,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAA;AAExE,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,YAAY,CAAA;AAExD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,iEAAiE;IACjE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAA;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,4BAA4B;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,GAAG,YAAY,GAAG,aAAa,CAAA;IACtF,QAAQ,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;IAC/F,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAA;CACzC;AAED,MAAM,WAAW,YAAY;IAC3B,+DAA+D;IAC/D,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;IACzB,oEAAoE;IACpE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;IACrC,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAiB,KAAK,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAA;AACpE,OAAO,EAAgB,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAA;AAExE,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,YAAY,CAAA;AAExD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,iEAAiE;IACjE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAA;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,4BAA4B;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,GAAG,YAAY,GAAG,aAAa,CAAA;IACtF,QAAQ,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;IAC/F,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAA;CACzC;AAED,MAAM,WAAW,YAAY;IAC3B,+DAA+D;IAC/D,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;IAClC,oFAAoF;IACpF,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;IACzB,oEAAoE;IACpE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;IACrC,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAA;IACtB;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAC7B;AAuKD,0EAA0E;AAC1E,wBAAgB,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,WAAW,CAuDhG"}
|
package/dist/check.js
CHANGED
|
@@ -6,9 +6,12 @@
|
|
|
6
6
|
import { PROCESS_TYPES } from './budget.js';
|
|
7
7
|
import { summarizeRun } from './run.js';
|
|
8
8
|
const ANY_PHASE_ORDER = ['warm', 'live', 'cold'];
|
|
9
|
-
function expectations(budget,
|
|
9
|
+
function expectations(budget, run, options) {
|
|
10
|
+
const platform = run.platform;
|
|
10
11
|
const list = [];
|
|
11
|
-
const tolerance = (own) => options.
|
|
12
|
+
const tolerance = (own) => options.ignoreThreshold === true || options.strict === true
|
|
13
|
+
? 0
|
|
14
|
+
: (own ?? budget.thresholdPercent ?? 0);
|
|
12
15
|
if (budget.startup !== undefined) {
|
|
13
16
|
list.push({
|
|
14
17
|
id: 'startup.firstWindowMs',
|
|
@@ -21,23 +24,27 @@ function expectations(budget, platform, options) {
|
|
|
21
24
|
}
|
|
22
25
|
const memory = budget.memory?.[platform];
|
|
23
26
|
if (memory !== undefined) {
|
|
27
|
+
const prefix = memory.aggregate === 'peak' ? 'memoryPeak' : 'memory';
|
|
28
|
+
// Unset: the first of warm, live, cold whose rounds measured memory, else that has rounds.
|
|
29
|
+
const roundsOf = (measured) => ANY_PHASE_ORDER.find((phase) => run.rounds.some((round) => round.phase === phase && (!measured || round.measurement[prefix] !== undefined)));
|
|
30
|
+
const memoryPhase = options.phase ?? memory.phase ?? roundsOf(true) ?? roundsOf(false);
|
|
24
31
|
const base = {
|
|
25
32
|
section: 'memory',
|
|
26
33
|
unit: 'MB',
|
|
27
34
|
thresholdPercent: tolerance(memory.thresholdPercent),
|
|
28
|
-
|
|
35
|
+
...(memoryPhase === undefined ? {} : { phase: memoryPhase }),
|
|
29
36
|
metric: memory.metric,
|
|
30
37
|
};
|
|
31
38
|
for (const type of PROCESS_TYPES) {
|
|
32
39
|
const max = memory.perTypeMb?.[type];
|
|
33
40
|
if (max !== undefined)
|
|
34
|
-
list.push({ ...base, id:
|
|
41
|
+
list.push({ ...base, id: `${prefix}.${type}`, limit: max });
|
|
35
42
|
}
|
|
36
43
|
if (memory.totalWithoutGpuMb !== undefined) {
|
|
37
|
-
list.push({ ...base, id:
|
|
44
|
+
list.push({ ...base, id: `${prefix}.totalWithoutGpu`, limit: memory.totalWithoutGpuMb });
|
|
38
45
|
}
|
|
39
46
|
if (memory.totalMb !== undefined) {
|
|
40
|
-
list.push({ ...base, id:
|
|
47
|
+
list.push({ ...base, id: `${prefix}.total`, limit: memory.totalMb });
|
|
41
48
|
}
|
|
42
49
|
}
|
|
43
50
|
const mainThread = budget.mainThread;
|
|
@@ -110,6 +117,15 @@ function unmeasuredDetail(run, expectation) {
|
|
|
110
117
|
? 'the run has no rounds'
|
|
111
118
|
: `the run has no ${expectation.phase} round`;
|
|
112
119
|
}
|
|
120
|
+
if (expectation.section === 'memory' &&
|
|
121
|
+
expectation.id.startsWith('memoryPeak.') &&
|
|
122
|
+
rounds.every((round) => round.measurement.memoryPeak === undefined) &&
|
|
123
|
+
rounds.some((round) => round.measurement.memory !== undefined)) {
|
|
124
|
+
const failed = rounds
|
|
125
|
+
.map((round) => round.measurement.unavailable?.['memoryPeak'])
|
|
126
|
+
.find((value) => value !== undefined);
|
|
127
|
+
return failed ?? 'the run has no peak sample; measure with --memory-sample-ms';
|
|
128
|
+
}
|
|
113
129
|
if (expectation.section === 'memory') {
|
|
114
130
|
const measured = rounds.map((round) => round.measurement.memory?.metric).find(Boolean);
|
|
115
131
|
// Megabytes in another metric are a different quantity, never a comparable one.
|
|
@@ -128,7 +144,7 @@ function unmeasuredDetail(run, expectation) {
|
|
|
128
144
|
/** Compare `run` to `budget` for the platform the run was measured on. */
|
|
129
145
|
export function checkRun(run, budget, options = {}) {
|
|
130
146
|
const rows = summarizeRun(run);
|
|
131
|
-
const results = expectations(budget, run
|
|
147
|
+
const results = expectations(budget, run, options).map((expectation) => {
|
|
132
148
|
// Divide last: 200 * (1 + 15 / 100) is 229.99999999999997, which would fail a 230.
|
|
133
149
|
const exactAllowed = (expectation.limit * (100 + expectation.thresholdPercent)) / 100;
|
|
134
150
|
const allowed = Math.round(exactAllowed * 10) / 10;
|
|
@@ -144,6 +160,16 @@ export function checkRun(run, budget, options = {}) {
|
|
|
144
160
|
if (row === undefined) {
|
|
145
161
|
return { ...base, status: 'unmeasured', detail: unmeasuredDetail(run, expectation) };
|
|
146
162
|
}
|
|
163
|
+
const needed = options.minSamples ?? 1;
|
|
164
|
+
if (expectation.section !== 'bundle' && row.samples < needed) {
|
|
165
|
+
return {
|
|
166
|
+
...base,
|
|
167
|
+
...(row.phase === undefined ? {} : { phase: row.phase }),
|
|
168
|
+
status: 'unmeasured',
|
|
169
|
+
actual: row.value,
|
|
170
|
+
detail: `${row.samples} of the ${needed} rounds needed measured ${expectation.id}`,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
147
173
|
return {
|
|
148
174
|
...base,
|
|
149
175
|
...(row.phase === undefined ? {} : { phase: row.phase }),
|
package/dist/check.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.js","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAA2B,MAAM,aAAa,CAAA;AACpE,OAAO,EAAE,YAAY,EAAmC,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -23,12 +23,14 @@ export type BudgetCliOptions = {
|
|
|
23
23
|
readonly command: 'help';
|
|
24
24
|
} | {
|
|
25
25
|
readonly command: 'check';
|
|
26
|
-
readonly
|
|
26
|
+
readonly runPaths: readonly string[];
|
|
27
27
|
readonly budgetPath: string;
|
|
28
|
-
readonly
|
|
28
|
+
readonly noTolerance: boolean;
|
|
29
|
+
readonly minSamples?: number;
|
|
29
30
|
readonly requireMeasurement: boolean;
|
|
30
31
|
readonly phase?: Phase;
|
|
31
32
|
readonly json: boolean;
|
|
33
|
+
readonly deprecatedStrict?: true;
|
|
32
34
|
} | {
|
|
33
35
|
readonly command: 'compare';
|
|
34
36
|
readonly beforePath: string;
|
|
@@ -39,8 +41,9 @@ export type BudgetCliOptions = {
|
|
|
39
41
|
readonly budgetPath: string;
|
|
40
42
|
readonly root?: string;
|
|
41
43
|
readonly outPath?: string;
|
|
42
|
-
readonly
|
|
44
|
+
readonly noTolerance: boolean;
|
|
43
45
|
readonly json: boolean;
|
|
46
|
+
readonly deprecatedStrict?: true;
|
|
44
47
|
} | MeasureCliOptions;
|
|
45
48
|
export interface MeasureCliOptions {
|
|
46
49
|
readonly command: 'measure';
|
|
@@ -55,13 +58,18 @@ export interface MeasureCliOptions {
|
|
|
55
58
|
readonly windowMs?: number;
|
|
56
59
|
readonly workloadPath?: string;
|
|
57
60
|
readonly workloadTimeoutMs?: number;
|
|
61
|
+
readonly beforeRoundPath?: string;
|
|
62
|
+
readonly memorySampleMs?: number;
|
|
63
|
+
readonly skipFailedRounds: boolean;
|
|
64
|
+
readonly minSamples?: number;
|
|
58
65
|
readonly phase?: Phase;
|
|
59
66
|
readonly label?: string;
|
|
60
67
|
readonly outPath?: string;
|
|
61
68
|
readonly check: boolean;
|
|
62
|
-
readonly
|
|
69
|
+
readonly noTolerance: boolean;
|
|
63
70
|
readonly requireMeasurement: boolean;
|
|
64
71
|
readonly json: boolean;
|
|
72
|
+
readonly deprecatedStrict?: true;
|
|
65
73
|
}
|
|
66
74
|
/** Seam for tests: the launch-and-measure step. */
|
|
67
75
|
export interface BudgetCliDependencies {
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG;AAOH,OAAO,EAAuC,KAAK,KAAK,EAAE,MAAM,aAAa,CAAA;AAG7E,OAAO,
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|