Skip to content

Commit 62afb5a

Browse files
committed
feat(cursors): fix handling errors
1 parent 41397e6 commit 62afb5a

File tree

4 files changed

+15
-15
lines changed

4 files changed

+15
-15
lines changed

packages/qwik/src/core/client/vnode-diff.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ import {
5050
QTemplate,
5151
dangerouslySetInnerHTML,
5252
} from '../shared/utils/markers';
53-
import { isPromise, retryOnPromise } from '../shared/utils/promises';
53+
import { isPromise, retryOnPromise, safeCall } from '../shared/utils/promises';
5454
import { isSlotProp } from '../shared/utils/prop';
5555
import { hasClassAttr } from '../shared/utils/scoped-styles';
5656
import { serializeAttribute } from '../shared/utils/styles';
@@ -813,7 +813,13 @@ export const vnode_diff = (
813813

814814
for (const qrl of qrls.flat(2)) {
815815
if (qrl) {
816-
qrl(event, element);
816+
safeCall(
817+
() => qrl(event, element),
818+
() => {},
819+
(e) => {
820+
container.handleError(e, vNode);
821+
}
822+
);
817823
}
818824
}
819825
};
@@ -917,7 +923,7 @@ export const vnode_diff = (
917923
if (newValue !== oldAttrs[key]) {
918924
isEvent ? recordJsxEvent(key, newValue) : record(key, newValue);
919925
}
920-
} else {
926+
} else if (newValue != null) {
921927
isEvent ? recordJsxEvent(key, newValue) : record(key, newValue);
922928
}
923929
}

packages/qwik/src/core/shared/cursor/chore-execution.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,6 @@ export function executeComponentChore(
193193
},
194194
(err: any) => {
195195
container.handleError(err, host);
196-
throw err;
197196
}
198197
);
199198

packages/qwik/src/core/tests/container.spec.tsx

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
import { walkJSX } from '@qwik.dev/core/testing';
22
import crypto from 'node:crypto';
3-
import { describe, expect, it, vi } from 'vitest';
3+
import { describe, expect, it } from 'vitest';
44
import { ssrCreateContainer } from '../../server/ssr-container';
55
import { SsrNode } from '../../server/ssr-node';
66
import { createDocument } from '../../testing/document';
77
import { getDomContainer } from '../client/dom-container';
88
import type { ClientContainer } from '../client/types';
9-
import { vnode_getFirstChild, vnode_getText } from '../client/vnode';
10-
import type { VNode } from '../client/vnode-impl';
9+
import { vnode_getFirstChild, vnode_getProp, vnode_getText } from '../client/vnode';
1110
import { createComputed$, createSignal } from '../reactive-primitives/signal.public';
1211
import { SignalFlags } from '../reactive-primitives/types';
1312
import { SERIALIZABLE_STATE, component$ } from '../shared/component.public';
@@ -23,11 +22,7 @@ import { TypeIds } from '../shared/serdes/constants';
2322
import { hasClassAttr } from '../shared/utils/scoped-styles';
2423
import { type SSRContainer } from '../ssr/ssr-types';
2524
import { toSsrAttrs } from '../ssr/ssr-render-jsx';
26-
27-
vi.hoisted(() => {
28-
vi.stubGlobal('QWIK_LOADER_DEFAULT_MINIFIED', 'min');
29-
vi.stubGlobal('QWIK_LOADER_DEFAULT_DEBUG', 'debug');
30-
});
25+
import type { VNode } from '../shared/vnode/vnode';
3126

3227
describe('serializer v2', () => {
3328
describe('rendering', () => {
@@ -131,7 +126,7 @@ describe('serializer v2', () => {
131126
ssr.closeElement();
132127
});
133128
const vnodeSpan: VNode = await clientContainer.$getObjectById$(0).someProp;
134-
expect(vnodeSpan.getAttr('id')).toBe('myId');
129+
expect(vnode_getProp(vnodeSpan, 'id', null)).toBe('myId');
135130
});
136131
it('should retrieve text node', async () => {
137132
const clientContainer = await withContainer((ssr) => {

packages/qwik/src/core/tests/projection.spec.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import {
2121
import { domRender, ssrRenderToDom, trigger } from '@qwik.dev/core/testing';
2222
import { cleanupAttrs } from 'packages/qwik/src/testing/element-fixture';
2323
import { beforeEach, describe, expect, it } from 'vitest';
24-
import { vnode_locate } from '../client/vnode';
24+
import { vnode_getProp, vnode_locate } from '../client/vnode';
2525
import { HTML_NS, QContainerAttr, SVG_NS } from '../shared/utils/markers';
2626
import { QContainerValue } from '../shared/types';
2727

@@ -2280,7 +2280,7 @@ describe.each([
22802280

22812281
if (ssrRenderToDom === render) {
22822282
const CmpVNode = vnode_locate(container.rootVNode, '4A');
2283-
const renderProp = CmpVNode.getProp('q:renderFn', null);
2283+
const renderProp = vnode_getProp(CmpVNode, 'q:renderFn', null);
22842284
expect(renderProp).not.toBeNull();
22852285
}
22862286
});

0 commit comments

Comments
 (0)