diff --git a/src/config-parser.js b/src/config-parser.js index b51b5a1..9f987c4 100644 --- a/src/config-parser.js +++ b/src/config-parser.js @@ -170,11 +170,28 @@ class ConfigParser { // Indirect default export with a wrapping call at the export else if ( - false - // ... + allowWrappingCall && + defaultExport && + defaultExport.declaration.type === 'CallExpression' && + defaultExport.declaration.arguments.length > 0 && + defaultExport.declaration.arguments[0] && + defaultExport.declaration.arguments[0].type === 'Identifier' ) { - core.info('Found configuration object in indirect default export declaration with a wrapping call at the export') - return defaultExport.declaration.arguments[0] + const identifierName = defaultExport.declaration.arguments[0].name + const identifierDefinition = ast.body.find( + node => + node.type === 'VariableDeclaration' && + node.declarations.length == 1 && + node.declarations[0].type === 'VariableDeclarator' && + node.declarations[0].id.type === 'Identifier' && + node.declarations[0].id.name === identifierName && + node.declarations[0].init + ) + const identifierInitialization = identifierDefinition && identifierDefinition.declarations[0].init + if (identifierInitialization && identifierInitialization.type === 'ObjectExpression') { + core.info('Found configuration object in indirect default export declaration with a wrapping call at the export') + return identifierInitialization + } } // Try to find a module export