From e7a8de395ad5d2ef73c670c06fb07a97e1eb33fa Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 22 Aug 2022 17:02:14 +0800 Subject: [PATCH] fix(findExports): support multiple exports terminated with `;` (#72) --- src/analyze.ts | 4 ++-- test/exports.test.ts | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/analyze.ts b/src/analyze.ts index bf8728f..0a6217f 100644 --- a/src/analyze.ts +++ b/src/analyze.ts @@ -59,8 +59,8 @@ export const ESM_STATIC_IMPORT_RE = /(?<=\s|^|;)import\s*(["'\s]*(?[\w* export const DYNAMIC_IMPORT_RE = /import\s*\((?(?:[^)(]+|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gm export const EXPORT_DECAL_RE = /\bexport\s+(?(async function|function|let|const enum|const|enum|var|class))\s+(?[\w$_]+)/g -const EXPORT_NAMED_RE = /\bexport\s+{(?[^}]+?)(?:[,\s]*)}(\s*from\s*["']\s*(?(?<="\s*)[^"]*[^"\s](?=\s*")|(?<='\s*)[^']*[^'\s](?=\s*'))\s*["'][^\n]*)?/g -const EXPORT_STAR_RE = /\bexport\s*(\*)(\s*as\s+(?[\w$_]+)\s+)?\s*(\s*from\s*["']\s*(?(?<="\s*)[^"]*[^"\s](?=\s*")|(?<='\s*)[^']*[^'\s](?=\s*'))\s*["'][^\n]*)?/g +const EXPORT_NAMED_RE = /\bexport\s+{(?[^}]+?)(?:[,\s]*)}(\s*from\s*["']\s*(?(?<="\s*)[^"]*[^"\s](?=\s*")|(?<='\s*)[^']*[^'\s](?=\s*'))\s*["'][^\n;]*)?/g +const EXPORT_STAR_RE = /\bexport\s*(\*)(\s*as\s+(?[\w$_]+)\s+)?\s*(\s*from\s*["']\s*(?(?<="\s*)[^"]*[^"\s](?=\s*")|(?<='\s*)[^']*[^'\s](?=\s*'))\s*["'][^\n;]*)?/g const EXPORT_DEFAULT_RE = /\bexport\s+default\s+/g export function findStaticImports (code: string): StaticImport[] { diff --git a/test/exports.test.ts b/test/exports.test.ts index d638867..6fb3dd1 100644 --- a/test/exports.test.ts +++ b/test/exports.test.ts @@ -182,4 +182,12 @@ describe('resolveModuleExportNames', () => { ] `) }) + + it('multiple inline', () => { + const code = ` +export { foo } from 'foo1';export { bar } from 'foo2';export * as foobar from 'foo2'; +` + const matches = findExports(code) + expect(matches).to.have.lengthOf(3) + }) })