Skip to content

Commit 601b2f2

Browse files
committed
add SchedulerWrapper.ts
Signed-off-by: 🕷️ <[email protected]>
1 parent 7e6695a commit 601b2f2

18 files changed

+455
-5
lines changed

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ To assess Web Application implementation correctness and expedite issues discove
4444
- attempt to add already added listener with `addEventListener`.
4545
- attempt to remove unknown listener with `removeEventListener`.
4646

47+
- Monitor `scheduler.yield` and `scheduler.postTask`.
48+
- Calls, delay, priority, aborts, self-time metrics.
49+
4750
- Monitor mounted `video` and `audio` media elements in DOM.
4851
- Present control panel with basic media functions.
4952
- Show media events and number of times they have been fired.
@@ -65,6 +68,9 @@ To assess Web Application implementation correctness and expedite issues discove
6568
- `requestIdleCallback`
6669
- `cancelIdleCallback`
6770
- `Worker`
71+
- `scheduler`
72+
- 'postTask'
73+
- `yield`
6874

6975
</details>
7076
<details>

deno.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040

4141
"@std/expect": "jsr:@std/expect@^1.0.16",
4242
"@std/testing": "jsr:@std/testing@^1.0.15",
43-
"happy-dom": "npm:[email protected]"
43+
"happy-dom": "npm:[email protected]",
44+
"scheduler-polyfill": "npm:[email protected]"
4445
}
4546
}

deno.lock

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/api-monitor-cs-main.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ windowListen((o) => {
5252
eachSecond.isPending() && tick.start();
5353
} else if (EMsg.CONFIG === o.msg) {
5454
applyConfig(o.config);
55+
originalMetrics = currentMetrics = null;
56+
tick.trigger();
5557
} else if (EMsg.START_OBSERVE === o.msg) {
5658
originalMetrics = currentMetrics = null;
5759
tick.trigger();

src/api/storage/storage.local.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ type TPanelKey =
1616
| 'callsSummary'
1717
| 'media'
1818
| 'worker'
19+
| 'scheduler'
1920
| 'eval'
2021
| 'activeTimers'
2122
| 'setTimeout'
@@ -45,6 +46,7 @@ export const DEFAULT_PANELS: TPanel[] = [
4546
{ key: 'media', label: 'Media', visible: true, wrap: null },
4647
{ key: 'activeTimers', label: 'Active Timers', visible: true, wrap: null },
4748
{ key: 'worker', label: 'Worker', visible: true, wrap: true },
49+
{ key: 'scheduler', label: 'Scheduler', visible: true, wrap: true },
4850
{ key: 'eval', label: 'eval', visible: true, wrap: false },
4951
{ key: 'setTimeout', label: 'setTimeout', visible: true, wrap: true },
5052
{

src/api/storage/storage.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export const CONFIG_VERSION = '2025-07-24';
1+
export const CONFIG_VERSION = '2025-07-28';
22
export const SESSION_VERSION = '2025-04-25';
33

44
export const local = /*@__PURE__*/ (() => {

src/view/menu/SummaryBar.svelte

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,22 @@
2525
count={ts.telemetry.worker.totalOnline}
2626
/>
2727

28+
<SummaryBarItem
29+
label="s.pT"
30+
tooltip="scheduler.postTask"
31+
navSelector="scheduler.postTask"
32+
panel={panels.scheduler}
33+
count={ts.telemetry.scheduler.postTask?.length || 0}
34+
/>
35+
36+
<SummaryBarItem
37+
label="s.y"
38+
tooltip="scheduler.yield"
39+
navSelector="scheduler.yield"
40+
panel={panels.scheduler}
41+
count={ts.telemetry.scheduler.yield?.length || 0}
42+
/>
43+
2844
<SummaryBarItem
2945
label="eval"
3046
navSelector="Eval"

src/view/panels/Panels.svelte

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,15 @@
1010
import Online from './online/Online.svelte';
1111
import { useTelemetryState } from '../../state/telemetry.state.svelte.ts';
1212
import Worker from './worker/Worker.svelte';
13+
import Scheduler from './scheduler/Scheduler.svelte';
1314
1415
const ts = useTelemetryState();
1516
</script>
1617

1718
{#if ts.telemetry}
1819
<Media media={ts.telemetry.media} />
1920
<Worker telemetry={ts.telemetry.worker} />
21+
<Scheduler telemetry={ts.telemetry.scheduler} />
2022
<Eval evalHistory={ts.telemetry.evalHistory} />
2123
<Online onlineTimers={ts.telemetry.onlineTimers} />
2224

src/view/panels/animation/AnimationRequestHistory.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@
125125
eventChangeSorting={onChangeSort}
126126
>Handler</ColumnSortable>
127127
</th>
128-
<th>
128+
<th class="ta-c">
129129
<ColumnSortable
130130
field="online"
131131
currentField={sortRequestAnimationFrame.field}

src/view/panels/idle/IdleCallbackRequestHistory.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@
144144
eventChangeSorting={onChangeSort}
145145
>Delay</ColumnSortable>
146146
</th>
147-
<th>
147+
<th class="ta-c">
148148
<ColumnSortable
149149
field="online"
150150
currentField={sortRequestIdleCallback.field}

0 commit comments

Comments
 (0)