Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 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 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