From d03a6ea04a5c06221ddde491e9b963678ef95faa Mon Sep 17 00:00:00 2001 From: Matheus Wichman Date: Tue, 22 Nov 2022 18:45:34 -0300 Subject: [PATCH] [docs] Support demos with side effect imports (#35177) --- docs/packages/markdown/extractImports.js | 3 +- docs/packages/markdown/extractImports.test.js | 39 +++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 docs/packages/markdown/extractImports.test.js diff --git a/docs/packages/markdown/extractImports.js b/docs/packages/markdown/extractImports.js index 3daefa092b7076..b578414fe63911 100644 --- a/docs/packages/markdown/extractImports.js +++ b/docs/packages/markdown/extractImports.js @@ -1,4 +1,5 @@ -const importModuleRegexp = /^import [^'"]* from ['"]([^'"\n ][^'"\n ]*)['"]/gm; +const importModuleRegexp = + /^\s*import (?:["'\s]*(?:[\w*{}\n, ]+)from\s*)?["'\s]*([^"'{}$\s]+)["'\s].*/gm; function extractImports(code) { return (code.match(importModuleRegexp) || []).map((x) => x.replace(importModuleRegexp, '$1')); diff --git a/docs/packages/markdown/extractImports.test.js b/docs/packages/markdown/extractImports.test.js new file mode 100644 index 00000000000000..d9845294ab48ad --- /dev/null +++ b/docs/packages/markdown/extractImports.test.js @@ -0,0 +1,39 @@ +import { expect } from 'chai'; +import extractImports from './extractImports'; + +describe('extractImports', () => { + it('finds all imports', () => { + const imports = extractImports(` +import { + Component +} from '@angular2/core'; +import defaultMember from "module-1"; +import * as name from "module-2 "; +import { member } from " module-3"; +import { member as alias } from "module-4"; +import { member1 , +member2 } from "module-5"; +import { member1 , member2 as alias2 , member3 as alias3 } from "module-6"; +import defaultMember, { member, member } from "module-7"; +import defaultMember, * as name from "module-8"; +import "module-9"; + import "module-10"; +import * from './smdn'; +import \${importName} from 'module11/\${importName}'; + `); + + expect(imports[0]).to.equal('@angular2/core'); + expect(imports[1]).to.equal('module-1'); + expect(imports[2]).to.equal('module-2'); + expect(imports[3]).to.equal('module-3'); + expect(imports[4]).to.equal('module-4'); + expect(imports[5]).to.equal('module-5'); + expect(imports[6]).to.equal('module-6'); + expect(imports[7]).to.equal('module-7'); + expect(imports[8]).to.equal('module-8'); + expect(imports[9]).to.equal('module-9'); + expect(imports[10]).to.equal('module-10'); + expect(imports[11]).to.equal('./smdn'); + expect(imports[12]).to.equal(undefined); // It's not a valid import + }); +});