@ifc-lite/load-trace 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 +10 -0
- package/dist/messages.d.ts +5 -0
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js +22 -1
- package/dist/messages.js.map +1 -1
- package/dist/worker-phases.d.ts +5 -0
- package/dist/worker-phases.d.ts.map +1 -1
- package/dist/worker-phases.js +21 -3
- package/dist/worker-phases.js.map +1 -1
- package/dist/worker.d.ts +4 -0
- package/dist/worker.d.ts.map +1 -1
- package/dist/worker.js +8 -0
- package/dist/worker.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -49,6 +49,7 @@ import { createWorkerTraceHost } from '@ifc-lite/load-trace';
|
|
|
49
49
|
const traced = createWorkerTraceHost({
|
|
50
50
|
spanNames: { 'scan-shard': 'shard.scan' },
|
|
51
51
|
post: (message) => self.postMessage(message),
|
|
52
|
+
endpoint: () => self, // sender-side transfer accounting, enabled with tracing
|
|
52
53
|
});
|
|
53
54
|
self.onmessage = (e) => { void traced(e.data, async () => { /* handle e.data */ }); };
|
|
54
55
|
```
|
|
@@ -114,6 +115,15 @@ perfTally('render.mergeGeometry', vertices, 'vertices'); // render.
|
|
|
114
115
|
tracing and posts its increments after every handler; `host.flush()` posts
|
|
115
116
|
them early when the main thread is about to terminate the worker. Pass the
|
|
116
117
|
completed span name when its handler has not yet returned.
|
|
118
|
+
- Both worker trace factories accept `endpoint: () => self` to count the
|
|
119
|
+
worker's outgoing messages as `msg.worker.out.*` in its per-thread
|
|
120
|
+
`workerCounters`. Transfer bytes come from the actual transfer list before
|
|
121
|
+
buffers detach; clone bytes remain an estimate of structured-clone work.
|
|
122
|
+
Counter increments are published before each data message, including the
|
|
123
|
+
terminal message. Trace-control messages are excluded. Phase traces also
|
|
124
|
+
drain WASM and copy counters on `flush()`; parser scans use the shared
|
|
125
|
+
typed-array argument meter. An entity-index handoff performs no parser
|
|
126
|
+
WASM scan and therefore records no parser WASM ingress.
|
|
117
127
|
- `startFrameMonitor` observes `long-animation-frame` and `longtask`
|
|
118
128
|
(feature-detected). `snapshot().mainThread` sums each type over the load
|
|
119
129
|
window and attributes LoAF blocking time to the innermost main-thread span
|
package/dist/messages.d.ts
CHANGED
|
@@ -35,4 +35,9 @@ export interface CloneEstimate {
|
|
|
35
35
|
*/
|
|
36
36
|
export declare function estimateCloneBytes(value: unknown, transferred?: (buffer: ArrayBuffer) => boolean): CloneEstimate;
|
|
37
37
|
export declare function accountWorkerMessages<W extends MessageEndpoint>(worker: W, label: string | (() => string), registry?: PerfCounterRegistry): W;
|
|
38
|
+
/** Attach sender-side accounting once tracing is enabled in a worker (#6993).
|
|
39
|
+
* Publish increments before each output: the host may terminate this realm
|
|
40
|
+
* immediately on receipt of a terminal message. Trace-control posts bypass
|
|
41
|
+
* accounting and flushing, so publishing counters cannot recurse. */
|
|
42
|
+
export declare function accountWorkerOutput(endpoint: MessageEndpoint, registry: PerfCounterRegistry, flush: () => void): void;
|
|
38
43
|
//# sourceMappingURL=messages.d.ts.map
|
package/dist/messages.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEvE;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACxD,4EAA4E;IAC5E,gBAAgB,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI,CAAC;CACxF;AAED,MAAM,WAAW,aAAa;IAAG,UAAU,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE;AAYjG;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EAAE,WAAW,GAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAqB,GAC1E,aAAa,CA+Bf;AAED,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,eAAe,EAC7D,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,EAAE,QAAQ,GAAE,mBAAkC,GACtF,CAAC,
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEvE;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACxD,4EAA4E;IAC5E,gBAAgB,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI,CAAC;CACxF;AAED,MAAM,WAAW,aAAa;IAAG,UAAU,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE;AAYjG;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EAAE,WAAW,GAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAqB,GAC1E,aAAa,CA+Bf;AAED,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,eAAe,EAC7D,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,EAAE,QAAQ,GAAE,mBAAkC,GACtF,CAAC,CAkCH;AAED;;;qEAGqE;AACrE,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,IAAI,GAC1E,IAAI,CASN"}
|
package/dist/messages.js
CHANGED
|
@@ -90,10 +90,16 @@ export function accountWorkerMessages(worker, label, registry = perfCounters) {
|
|
|
90
90
|
if (!isTraceControl(message)) {
|
|
91
91
|
const list = transferSet(transfer);
|
|
92
92
|
const est = estimateCloneBytes(message, (b) => list.has(b));
|
|
93
|
+
// A transfer list can move a buffer that is not reachable from the
|
|
94
|
+
// payload. Count the list itself before postMessage detaches it (#6993).
|
|
95
|
+
let transferBytes = 0;
|
|
96
|
+
for (const value of list)
|
|
97
|
+
if (value instanceof ArrayBuffer)
|
|
98
|
+
transferBytes += value.byteLength;
|
|
93
99
|
const prefix = prefixOf();
|
|
94
100
|
registry.add(`${prefix}.out.count`);
|
|
95
101
|
registry.add(`${prefix}.out.cloneBytes`, est.cloneBytes);
|
|
96
|
-
registry.add(`${prefix}.out.transferBytes`,
|
|
102
|
+
registry.add(`${prefix}.out.transferBytes`, transferBytes);
|
|
97
103
|
registry.add(`${prefix}.out.sharedBytes`, est.sharedBytes);
|
|
98
104
|
}
|
|
99
105
|
nativePost(message, transfer);
|
|
@@ -113,4 +119,19 @@ export function accountWorkerMessages(worker, label, registry = perfCounters) {
|
|
|
113
119
|
});
|
|
114
120
|
return worker;
|
|
115
121
|
}
|
|
122
|
+
/** Attach sender-side accounting once tracing is enabled in a worker (#6993).
|
|
123
|
+
* Publish increments before each output: the host may terminate this realm
|
|
124
|
+
* immediately on receipt of a terminal message. Trace-control posts bypass
|
|
125
|
+
* accounting and flushing, so publishing counters cannot recurse. */
|
|
126
|
+
export function accountWorkerOutput(endpoint, registry, flush) {
|
|
127
|
+
const nativePost = endpoint.postMessage.bind(endpoint);
|
|
128
|
+
const port = accountWorkerMessages({
|
|
129
|
+
postMessage(message, transfer) {
|
|
130
|
+
if (!isTraceControl(message))
|
|
131
|
+
flush();
|
|
132
|
+
nativePost(message, transfer);
|
|
133
|
+
},
|
|
134
|
+
}, 'worker', registry);
|
|
135
|
+
endpoint.postMessage = port.postMessage;
|
|
136
|
+
}
|
|
116
137
|
//# sourceMappingURL=messages.js.map
|
package/dist/messages.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"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"}
|
package/dist/worker-phases.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { TraceAttrs } from './types.js';
|
|
2
|
+
import { type PerfCounterRegistry } from './counters.js';
|
|
3
|
+
import { type MessageEndpoint } from './messages.js';
|
|
2
4
|
import { type TraceSpansMessage } from './worker.js';
|
|
3
5
|
/**
|
|
4
6
|
* Spans for the phases INSIDE one long worker handler (#6979), where
|
|
@@ -34,6 +36,9 @@ export interface WorkerPhaseTraceOptions {
|
|
|
34
36
|
post: (message: TraceSpansMessage) => void;
|
|
35
37
|
now?: () => number;
|
|
36
38
|
timeOrigin?: number;
|
|
39
|
+
counters?: PerfCounterRegistry;
|
|
40
|
+
/** Worker global; sender accounting starts only after the enable request. */
|
|
41
|
+
endpoint?: () => MessageEndpoint;
|
|
37
42
|
}
|
|
38
43
|
export declare function createWorkerPhaseTrace(options: WorkerPhaseTraceOptions): WorkerPhaseTrace;
|
|
39
44
|
//# sourceMappingURL=worker-phases.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-phases.d.ts","sourceRoot":"","sources":["../src/worker-phases.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAIL,KAAK,iBAAiB,EAEvB,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,sFAAsF;IACtF,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IAC/B,uCAAuC;IACvC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IAChD,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC7C,oGAAoG;IACpG,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC;IAC1D;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAChC,kEAAkE;IAClE,KAAK,IAAI,IAAI,CAAC;CACf;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC3C,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"worker-phases.d.ts","sourceRoot":"","sources":["../src/worker-phases.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAIL,KAAK,iBAAiB,EAEvB,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,sFAAsF;IACtF,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IAC/B,uCAAuC;IACvC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IAChD,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC7C,oGAAoG;IACpG,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC;IAC1D;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAChC,kEAAkE;IAClE,KAAK,IAAI,IAAI,CAAC;CACf;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC3C,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,eAAe,CAAC;CAClC;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,uBAAuB,GAAG,gBAAgB,CA2DzF"}
|
package/dist/worker-phases.js
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
2
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
import { perfCounters } from './counters.js';
|
|
5
|
+
import { accountWorkerOutput } from './messages.js';
|
|
4
6
|
import { createWorkerSpanRecorder, TRACE_ENABLE_MESSAGE, TRACE_SPANS_MESSAGE, } from './worker.js';
|
|
5
7
|
export function createWorkerPhaseTrace(options) {
|
|
6
8
|
let recorder = null;
|
|
7
9
|
let stepName = null;
|
|
8
10
|
let stepToken = -1;
|
|
11
|
+
const counters = options.counters ?? perfCounters;
|
|
12
|
+
let countedEndpoint;
|
|
9
13
|
const trace = {
|
|
10
14
|
get enabled() { return recorder !== null; },
|
|
11
15
|
accept(data) {
|
|
@@ -13,6 +17,15 @@ export function createWorkerPhaseTrace(options) {
|
|
|
13
17
|
return false;
|
|
14
18
|
const thread = data.thread;
|
|
15
19
|
recorder = createWorkerSpanRecorder(typeof thread === 'string' ? thread : 'worker', options.now, options.timeOrigin);
|
|
20
|
+
stepName = null;
|
|
21
|
+
stepToken = -1;
|
|
22
|
+
counters.enable();
|
|
23
|
+
counters.drain();
|
|
24
|
+
const endpoint = options.endpoint?.();
|
|
25
|
+
if (endpoint && endpoint !== countedEndpoint) {
|
|
26
|
+
accountWorkerOutput(endpoint, counters, () => trace.flush());
|
|
27
|
+
countedEndpoint = endpoint;
|
|
28
|
+
}
|
|
16
29
|
return true;
|
|
17
30
|
},
|
|
18
31
|
begin: (name, attrs) => recorder?.begin(name, attrs) ?? -1,
|
|
@@ -47,9 +60,14 @@ export function createWorkerPhaseTrace(options) {
|
|
|
47
60
|
stepToken = name === null ? -1 : recorder.begin(name);
|
|
48
61
|
},
|
|
49
62
|
flush() {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
63
|
+
if (!recorder)
|
|
64
|
+
return;
|
|
65
|
+
const payload = recorder.drain();
|
|
66
|
+
const moved = counters.drain();
|
|
67
|
+
if (!payload && !moved)
|
|
68
|
+
return;
|
|
69
|
+
const out = payload ?? { thread: recorder.thread, timeOrigin: options.timeOrigin ?? performance.timeOrigin, spans: [] };
|
|
70
|
+
options.post({ type: TRACE_SPANS_MESSAGE, payload: moved ? { ...out, counters: moved } : out });
|
|
53
71
|
},
|
|
54
72
|
};
|
|
55
73
|
return trace;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-phases.js","sourceRoot":"","sources":["../src/worker-phases.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAG/D,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,GAGpB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"worker-phases.js","sourceRoot":"","sources":["../src/worker-phases.ts"],"names":[],"mappings":"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"}
|
package/dist/worker.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type PerfCounterRegistry } from './counters.js';
|
|
2
|
+
import { type MessageEndpoint } from './messages.js';
|
|
2
3
|
import type { LoadTrace } from './load-trace.js';
|
|
3
4
|
import type { TraceAttrs, WorkerTracePayload } from './types.js';
|
|
4
5
|
/** Main -> worker: start recording, labelling spans with `thread`. */
|
|
@@ -42,6 +43,9 @@ export interface WorkerTraceHostOptions {
|
|
|
42
43
|
* work (wasm copies, ...) reaches the load even for untraced message types.
|
|
43
44
|
*/
|
|
44
45
|
counters?: PerfCounterRegistry;
|
|
46
|
+
/** Worker global, resolved lazily after tracing is enabled. Counts actual
|
|
47
|
+
* outbound transfer lists as msg.worker.out.* in this thread's counters. */
|
|
48
|
+
endpoint?: () => MessageEndpoint;
|
|
45
49
|
}
|
|
46
50
|
/**
|
|
47
51
|
* Wrap a worker's message dispatch. Until the main thread sends
|
package/dist/worker.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAc,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE7E,sEAAsE;AACtE,eAAO,MAAM,oBAAoB,sBAAsB,CAAC;AACxD,gEAAgE;AAChE,eAAO,MAAM,mBAAmB,qBAAqB,CAAC;AAEtD,MAAM,WAAW,kBAAkB;IAAG,IAAI,EAAE,OAAO,oBAAoB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AACzF,MAAM,WAAW,iBAAiB;IAAG,IAAI,EAAE,OAAO,mBAAmB,CAAC;IAAC,OAAO,EAAE,kBAAkB,CAAA;CAAE;AAEpG,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IAChD,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC7C,qFAAqF;IACrF,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,0EAA0E;IAC1E,KAAK,IAAI,kBAAkB,GAAG,IAAI,CAAC;CACpC;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,GAAG,GAAE,MAAM,MAAgC,EAC3C,UAAU,GAAE,MAA+B,GAC1C,kBAAkB,CAkCpB;AAED,MAAM,WAAW,sBAAsB;IACrC,4EAA4E;IAC5E,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C,mFAAmF;IACnF,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,IAAI,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC3C,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAc,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE7E,sEAAsE;AACtE,eAAO,MAAM,oBAAoB,sBAAsB,CAAC;AACxD,gEAAgE;AAChE,eAAO,MAAM,mBAAmB,qBAAqB,CAAC;AAEtD,MAAM,WAAW,kBAAkB;IAAG,IAAI,EAAE,OAAO,oBAAoB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AACzF,MAAM,WAAW,iBAAiB;IAAG,IAAI,EAAE,OAAO,mBAAmB,CAAC;IAAC,OAAO,EAAE,kBAAkB,CAAA;CAAE;AAEpG,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IAChD,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC7C,qFAAqF;IACrF,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,0EAA0E;IAC1E,KAAK,IAAI,kBAAkB,GAAG,IAAI,CAAC;CACpC;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,GAAG,GAAE,MAAM,MAAgC,EAC3C,UAAU,GAAE,MAA+B,GAC1C,kBAAkB,CAkCpB;AAED,MAAM,WAAW,sBAAsB;IACrC,4EAA4E;IAC5E,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C,mFAAmF;IACnF,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,IAAI,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC3C,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B;gFAC4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,eAAe,CAAC;CAClC;AAED;;;;;;GAMG;AACH;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG;IAC3F,yGAAyG;IACzG,KAAK,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,eAAe,CAgDtF;AAED,8FAA8F;AAC9F,wBAAgB,iBAAiB,CAAC,CAAC,SAAS;IAAE,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;CAAE,EACjF,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAC1C,CAAC,CAGH;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,iBAAiB,CAElF"}
|
package/dist/worker.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
4
|
import { perfCounters } from './counters.js';
|
|
5
|
+
import { accountWorkerOutput } from './messages.js';
|
|
5
6
|
/** Main -> worker: start recording, labelling spans with `thread`. */
|
|
6
7
|
export const TRACE_ENABLE_MESSAGE = 'load-trace:enable';
|
|
7
8
|
/** Worker -> main: finished spans, see `WorkerTracePayload`. */
|
|
@@ -55,6 +56,7 @@ export function createWorkerTraceHost(options) {
|
|
|
55
56
|
const seenOnce = new Set();
|
|
56
57
|
const once = new Set(options.onceTypes ?? []);
|
|
57
58
|
const counters = options.counters ?? perfCounters;
|
|
59
|
+
let countedEndpoint;
|
|
58
60
|
const flush = (rec) => {
|
|
59
61
|
const payload = rec.drain();
|
|
60
62
|
const moved = counters.drain();
|
|
@@ -71,6 +73,12 @@ export function createWorkerTraceHost(options) {
|
|
|
71
73
|
seenOnce.clear(); // a pooled worker (#7036) serves several loads: each gets its first-chunk span
|
|
72
74
|
counters.enable();
|
|
73
75
|
counters.drain(); // only what happens from here on belongs to a load
|
|
76
|
+
const endpoint = options.endpoint?.();
|
|
77
|
+
if (endpoint && endpoint !== countedEndpoint) {
|
|
78
|
+
accountWorkerOutput(endpoint, counters, () => { if (recorder)
|
|
79
|
+
flush(recorder); });
|
|
80
|
+
countedEndpoint = endpoint;
|
|
81
|
+
}
|
|
74
82
|
return;
|
|
75
83
|
}
|
|
76
84
|
const rec = recorder;
|
package/dist/worker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,YAAY,EAA4B,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ifc-lite/load-trace",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Dependency-free load-trace spans: performance.measure plus a per-load, cross-thread span tree with worker clock alignment and Chrome-trace export",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|