From 3d995d186263dd53a920f1d4f1375e3e48d6c439 Mon Sep 17 00:00:00 2001 From: js07 <19861096+js07@users.noreply.github.com> Date: Thu, 11 Nov 2021 20:46:16 -0500 Subject: [PATCH 1/3] Fix eslint failing with TypeError when default export is not an object --- index.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/index.js b/index.js index 73f104a..0296338 100644 --- a/index.js +++ b/index.js @@ -45,7 +45,7 @@ function findPropertyWithName(name, propertyArray) { // Does a component contain the right property? e.g. key, version function componentContainsPropertyCheck(context, node, propertyName, message) { let component; - if (isDefaultExport(node)) { + if (isDefaultExport(node) && isObjectWithProperties(node.declaration)) { component = node.declaration; } @@ -81,7 +81,7 @@ function getProps(moduleProperties) { // Do component props contain the right properties? e.g. label, description function componentPropsContainsPropertyCheck(context, node, propertyName) { let component; - if (isDefaultExport(node)) { + if (isDefaultExport(node) && isObjectWithProperties(node.declaration)) { component = node.declaration; } if (node.expression) { @@ -120,7 +120,7 @@ function componentPropsContainsPropertyCheck(context, node, propertyName) { function optionalComponentPropsHaveDefaultProperty(context, node) { let component; - if (isDefaultExport(node)) { + if (isDefaultExport(node) && isObjectWithProperties(node.declaration)) { component = node.declaration; } @@ -167,7 +167,7 @@ function optionalComponentPropsHaveDefaultProperty(context, node) { // the node with the name specified by the user function checkComponentIsSourceAndReturnTargetProp(node, propertyName) { let component; - if (isDefaultExport(node)) { + if (isDefaultExport(node) && isObjectWithProperties(node.declaration)) { component = node.declaration; } @@ -216,7 +216,7 @@ function componentSourceDescriptionCheck(context, node) { function componentVersionTsMacroCheck(context, node) { let component; - if (isDefaultExport(node)) { + if (isDefaultExport(node) && isObjectWithProperties(node.declaration)) { component = node.declaration; } From adbd61666ae3bf301ae65e30db959ea5f64d8d47 Mon Sep 17 00:00:00 2001 From: js07 <19861096+js07@users.noreply.github.com> Date: Fri, 12 Nov 2021 12:24:56 -0500 Subject: [PATCH 2/3] Refactor reused logic for getting component --- index.js | 92 ++++++++++++++------------------------------------------ 1 file changed, 23 insertions(+), 69 deletions(-) diff --git a/index.js b/index.js index 0296338..dbafe38 100644 --- a/index.js +++ b/index.js @@ -20,6 +20,24 @@ function isObjectWithProperties(node) { return true; } +function getComponentFromNode(node) { + if (isDefaultExport(node) && isObjectWithProperties(node.declaration)) { + return node.declaration; + } + + if (node.expression) { + const { + left, + right, + } = node.expression; + if (isModuleExports(left) && isObjectWithProperties(right)) { + return right; + } + } + + return null; +} + // Objects can contain key names surrounded by quotes, or not // propertyArray is the array of Property nodes in the component object function astIncludesProperty(name, propertyArray) { @@ -44,20 +62,7 @@ function findPropertyWithName(name, propertyArray) { // Does a component contain the right property? e.g. key, version function componentContainsPropertyCheck(context, node, propertyName, message) { - let component; - if (isDefaultExport(node) && isObjectWithProperties(node.declaration)) { - component = node.declaration; - } - - if (node.expression) { - const { - left, - right, - } = node.expression; - if (isModuleExports(left) && isObjectWithProperties(right)) { - component = right; - } - } + const component = getComponentFromNode(node); if (!component) return; if (!astIncludesProperty(propertyName, component.properties)) { @@ -80,19 +85,7 @@ function getProps(moduleProperties) { // Do component props contain the right properties? e.g. label, description function componentPropsContainsPropertyCheck(context, node, propertyName) { - let component; - if (isDefaultExport(node) && isObjectWithProperties(node.declaration)) { - component = node.declaration; - } - if (node.expression) { - const { - left, - right, - } = node.expression; - if (isModuleExports(left) && isObjectWithProperties(right)) { - component = right; - } - } + const component = getComponentFromNode(node); if (!component) return; @@ -119,20 +112,7 @@ function componentPropsContainsPropertyCheck(context, node, propertyName) { } function optionalComponentPropsHaveDefaultProperty(context, node) { - let component; - if (isDefaultExport(node) && isObjectWithProperties(node.declaration)) { - component = node.declaration; - } - - if (node.expression) { - const { - left, - right, - } = node.expression; - if (isModuleExports(left) && isObjectWithProperties(right)) { - component = right; - } - } + const component = getComponentFromNode(node); if (!component) return; const { properties } = component; @@ -166,20 +146,7 @@ function optionalComponentPropsHaveDefaultProperty(context, node) { // Checks to confirm the component is a source, and returns // the node with the name specified by the user function checkComponentIsSourceAndReturnTargetProp(node, propertyName) { - let component; - if (isDefaultExport(node) && isObjectWithProperties(node.declaration)) { - component = node.declaration; - } - - if (node.expression) { - const { - left, - right, - } = node.expression; - if (isModuleExports(left) && isObjectWithProperties(right)) { - component = right; - } - } + const component = getComponentFromNode(node); if (!component) return; const { properties } = component; @@ -215,20 +182,7 @@ function componentSourceDescriptionCheck(context, node) { } function componentVersionTsMacroCheck(context, node) { - let component; - if (isDefaultExport(node) && isObjectWithProperties(node.declaration)) { - component = node.declaration; - } - - if (node.expression) { - const { - left, - right, - } = node.expression; - if (isModuleExports(left) && isObjectWithProperties(right)) { - component = right; - } - } + const component = getComponentFromNode(node); if (!component) return; const { properties } = component; From c01c763904cd78ff3813368bd4cacfde2bf25f0f Mon Sep 17 00:00:00 2001 From: js07 <19861096+js07@users.noreply.github.com> Date: Fri, 12 Nov 2021 20:42:16 -0500 Subject: [PATCH 3/3] Bump version to patch 0.2.3 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index e2fa358..c4fbe95 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "eslint-plugin-pipedream", - "version": "0.2.2", + "version": "0.2.3", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 20224c1..ec29c41 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "eslint-plugin-pipedream", - "version": "0.2.2", + "version": "0.2.3", "description": "ESLint plugin for Pipedream components: https://pipedream.com/docs/components/api/", "main": "index.js", "scripts": {