diff --git a/index.js b/index.js index 73f104a..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)) { - 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)) { - 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)) { - 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)) { - 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)) { - 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; 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": {