Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/debug-log-forwarded-events.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@qwik.dev/partytown': patch
---

Add `logForwardedEvents` config flag to enable debug logging for forwarded events and triggers
1 change: 1 addition & 0 deletions docs/src/routes/debugging/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ If you are using Chrome DevTools to see these logs, make sure that the `Verbose`
| `logCalls` | Log method calls |
| `logGetters` | Log getter calls |
| `logSetters` | Log setter calls |
| `logForwardedEvents` | Log forwarded event calls |
| `logImageRequests` | Log Image() src requests |
| `logScriptExecution` | Log script executions |
| `logSendBeaconRequests` | Log navigator.sendBeacon() requests |
Expand Down
1 change: 1 addition & 0 deletions src/integration/api.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ export interface PartytownConfig {
lib?: string;
loadScriptsOnMainThread?: (string | RegExp)[];
logCalls?: boolean;
logForwardedEvents?: boolean;
logGetters?: boolean;
logImageRequests?: boolean;
logMainAccess?: boolean;
Expand Down
11 changes: 10 additions & 1 deletion src/lib/sandbox/main-forward-trigger.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
import {
debug,
emptyObjectValue,
getOriginalBehavior,
len,
resolvePartytownForwardProperty,
} from '../utils';
import { type MainWindow, type PartytownWebWorker, type WinId, WorkerMessageType } from '../types';
import { serializeForWorker } from './main-serialization';
import { logMain } from '../log';

export const mainForwardTrigger = (worker: PartytownWebWorker, $winId$: WinId, win: MainWindow) => {
let queuedForwardCalls = win._ptf;
let forwards = (win.partytown || {}).forward || [];
let config = win.partytown || {};
let forwards = config.forward || [];
let i: number;
let mainForwardFn: typeof win;

Expand Down Expand Up @@ -46,6 +49,9 @@ export const mainForwardTrigger = (worker: PartytownWebWorker, $winId$: WinId, w
if (originalFunction) {
returnValue = originalFunction(args);
}
if (debug && config.logForwardedEvents) {
logMain(`Forward event: ${arr.join('.')}()`);
}
forwardCall(arr, args);
return returnValue;
};
Expand All @@ -55,6 +61,9 @@ export const mainForwardTrigger = (worker: PartytownWebWorker, $winId$: WinId, w

if (queuedForwardCalls) {
for (i = 0; i < len(queuedForwardCalls); i += 2) {
if (debug && config.logForwardedEvents) {
logMain(`Forward queued event: ${queuedForwardCalls[i].join('.')}()`);
}
forwardCall(queuedForwardCalls[i], queuedForwardCalls[i + 1]);
}
}
Expand Down
4 changes: 4 additions & 0 deletions src/lib/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -500,6 +500,10 @@ export interface PartytownConfig {
* Log setter calls (debug mode required)
*/
logSetters?: boolean;
/**
* Log forwarded events (debug mode required)
*/
logForwardedEvents?: boolean;
/**
* Log Image() src requests (debug mode required)
*/
Expand Down
22 changes: 19 additions & 3 deletions src/lib/web-worker/worker-forwarded-trigger.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import { deserializeFromMain } from './worker-serialization';
import { environments } from './worker-constants';
import { environments, webWorkerCtx } from './worker-constants';
import type { ForwardMainTriggerData } from '../types';
import { len } from '../utils';
import { debug, len } from '../utils';
import { logWorker } from '../log';

export const workerForwardedTriggerHandle = ({
$winId$,
Expand All @@ -14,11 +15,26 @@ export const workerForwardedTriggerHandle = ({
let i = 0;
let l = len($forward$);

if (debug && webWorkerCtx.$config$.logForwardedEvents) {
logWorker(`Forwarded event received: ${$forward$.join('.')}()`, $winId$);
}

for (; i < l; i++) {
if (i + 1 < l) {
target = target[$forward$[i]];
} else {
target[$forward$[i]].apply(target, deserializeFromMain(null, $winId$, [], $args$));
const deserializedArgs = deserializeFromMain(null, $winId$, [], $args$);
if (debug && webWorkerCtx.$config$.logForwardedEvents) {
logWorker(
`Forwarded event execute: ${$forward$.join('.')}(${deserializedArgs
.map((a: any) =>
typeof a === 'object' ? JSON.stringify(a)?.slice(0, 60) : String(a)
)
.join(', ')})`,
$winId$
);
}
target[$forward$[i]].apply(target, deserializedArgs);
}
}
} catch (e) {
Expand Down
1 change: 1 addition & 0 deletions tests/integrations/event-forwarding/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
logSetters: true,
logStackTraces: false,
logScriptExecution: true,
logForwardedEvents: true,
};
</script>
<script src="/~partytown/debug/partytown.js"></script>
Expand Down
Loading