From be6f19dfd997fca673eb898d25ec87392dd19cd6 Mon Sep 17 00:00:00 2001 From: Christian Mortaro Date: Wed, 1 Mar 2023 10:20:59 -0300 Subject: [PATCH 1/2] :bug: fix spread with events --- loaders/add-source-to-node.js | 4 +++- tests/src/RenderableComponent.njs | 10 ++++++---- tests/src/RenderableComponent.test.js | 5 +++++ 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/loaders/add-source-to-node.js b/loaders/add-source-to-node.js index 435306c6..c92bd5a0 100644 --- a/loaders/add-source-to-node.js +++ b/loaders/add-source-to-node.js @@ -13,7 +13,9 @@ module.exports = function (source) { if (path.parent.type === 'JSXAttribute') { if (path.node.name.startsWith('on')) { const element = path.findParent((p) => p.type === 'JSXOpeningElement' && p.node.attributes) - const hasSource = element.node.attributes.find((a) => a.name.name === 'source') + const hasSource = element.node.attributes.find((a) => { + return a.type === 'JSXAttribute' && a.name.name === 'source' + }) if (!hasSource) { const start = element.node.attributes[0].start uniquePositions.add(start) diff --git a/tests/src/RenderableComponent.njs b/tests/src/RenderableComponent.njs index d469e803..59a00f25 100644 --- a/tests/src/RenderableComponent.njs +++ b/tests/src/RenderableComponent.njs @@ -28,6 +28,7 @@ class RenderableComponent extends Nullstack { render({ params }) { const list = params.shortList ? [1, 2, 3] : [1, 2, 3, 4, 5, 6] const html = ' Nullstack ' + const props = { disabled: true, 'aria-label': 'props' } return (
@@ -56,16 +57,17 @@ class RenderableComponent extends Nullstack { {!!params.condition &&
conditionally rendered div
} - {' '} - long list{' '} + long list - {' '} - long list{' '} + long list
+
) } diff --git a/tests/src/RenderableComponent.test.js b/tests/src/RenderableComponent.test.js index 6eaf9920..c2a63b50 100644 --- a/tests/src/RenderableComponent.test.js +++ b/tests/src/RenderableComponent.test.js @@ -115,6 +115,11 @@ describe('RenderableComponent ?condition=true', () => { const element = await page.$('div.element') expect(element).toBeTruthy() }) + + test('elements can spread props and have named attributes', async () => { + const element = await page.$('[disabled][aria-label="props"]') + expect(element).toBeTruthy() + }) }) describe('RenderableComponent ?shortList=true', () => { From 5f316bbd51a2cdc3af0ed67d82d377d8b630e64c Mon Sep 17 00:00:00 2001 From: Christian Mortaro Date: Wed, 1 Mar 2023 10:37:01 -0300 Subject: [PATCH 2/2] :bug: ironic fix for errors catch --- client/instanceProxyHandler.js | 6 +++++- server/printError.js | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/client/instanceProxyHandler.js b/client/instanceProxyHandler.js index f8f16647..fb8d9d2d 100644 --- a/client/instanceProxyHandler.js +++ b/client/instanceProxyHandler.js @@ -20,7 +20,11 @@ const instanceProxyHandler = { try { result = target[name].call(proxy, scopedContext) } catch (error) { - context.catch && context.catch(error) + if (context.catch) { + context.catch(error) + } else { + throw error + } return null } if (result instanceof Promise) { diff --git a/server/printError.js b/server/printError.js index c375cf76..4fbd51d4 100644 --- a/server/printError.js +++ b/server/printError.js @@ -1,7 +1,9 @@ import context from './context' export default function (error) { - context.catch && context.catch(error) + if (context.catch) { + context.catch(error) + } const lines = error.stack.split(`\n`) let initiator = lines.find((line) => line.indexOf('Proxy') > -1) if (initiator) {