@@ -242,12 +242,22 @@ toModule mids mid top
242 = pure (Member n False name decl [])
242 = pure (Member n False name decl [])
243 toModuleElement n
243 toModuleElement n
244 | JSExpression (e : op : decl) <- node n
244 | JSExpression (e : op : decl) <- node n
245− , JSMemberDot [ exports ] _ nm <- node e
245+ , Just name <- accessor (node e)
246− , JSIdentifier "exports" <- node exports
247 , JSOperator eq <- node op
246 , JSOperator eq <- node op
248 , JSLiteral "=" <- node eq
247 , JSLiteral "=" <- node eq
249− , JSIdentifier name <- node nm
250 = pure (Member n True name decl [])
248 = pure (Member n True name decl [])
250+ accessor :: Node -> Maybe String
251+ accessor (JSMemberDot [ exports ] _ nm)
252+ | JSIdentifier "exports" <- node exports
253+ , JSIdentifier name <- node nm
255+ accessor (JSMemberSquare [ exports ] _ nm _)
256+ | JSIdentifier "exports" <- node exports
257+ , JSExpression [e] <- node nm
258+ , JSStringLiteral _ name <- node e
260+ accessor _ = Nothing
251 toModuleElement n
261 toModuleElement n
252 | JSExpression (mnExp : op : obj: _) <- node n
262 | JSExpression (mnExp : op : obj: _) <- node n
253 , JSMemberDot [ mn ] _ e <- node mnExp
263 , JSMemberDot [ mn ] _ e <- node mnExp