From 993b46680de515931845d54fb1fefa618a1975f7 Mon Sep 17 00:00:00 2001 From: Michael Rawlings Date: Fri, 10 Apr 2020 08:47:08 -0700 Subject: [PATCH] fix: simplify transformIgnorePatterns & ensure .marko files get transformed (#4) * fix: lookbehind simplifies transformIgnorePatterns & ensures .marko files get transformed * docs: update transformIgnorePattern in README --- .gitignore | 2 +- README.md | 10 ++++---- jest-preset.js | 23 ++----------------- package.json | 2 -- test/browser.test.ts | 9 ++++++++ test/fixtures/project/index.marko | 3 +++ test/fixtures/project/index.marko.d.ts | 2 ++ .../project/node_modules/direct/index.marko | 5 ++++ .../project/node_modules/direct/marko.json | 5 ++++ .../direct/node_modules/indirect/index.marko | 3 +++ .../direct/node_modules/indirect/marko.json | 5 ++++ .../direct/node_modules/indirect/package.json | 3 +++ .../project/node_modules/direct/package.json | 6 +++++ test/fixtures/project/package.json | 5 ++++ test/server.test.ts | 7 ++++++ 15 files changed, 61 insertions(+), 29 deletions(-) create mode 100644 test/fixtures/project/index.marko create mode 100644 test/fixtures/project/index.marko.d.ts create mode 100644 test/fixtures/project/node_modules/direct/index.marko create mode 100644 test/fixtures/project/node_modules/direct/marko.json create mode 100644 test/fixtures/project/node_modules/direct/node_modules/indirect/index.marko create mode 100644 test/fixtures/project/node_modules/direct/node_modules/indirect/marko.json create mode 100644 test/fixtures/project/node_modules/direct/node_modules/indirect/package.json create mode 100644 test/fixtures/project/node_modules/direct/package.json create mode 100644 test/fixtures/project/package.json diff --git a/.gitignore b/.gitignore index 0410070..40b0228 100755 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,7 @@ *.DS_Store # NPM -node_modules +/node_modules npm-debug.log # Build diff --git a/README.md b/README.md index 79b129d..b9f0097 100644 --- a/README.md +++ b/README.md @@ -67,8 +67,8 @@ module.exports = { moduleFileExtensions: defaults.moduleFileExtensions.concat("marko"), // preprocesses Marko files. transform: { "\\.marko$": "@marko/jest" }, - // transforms top level `.marko` files in the Marko package. - transformIgnorePatterns: ["node_modules/(?!(marko)/)"] + // transforms `.marko` files in node_modules as well + transformIgnorePatterns: ["node_modules/.*(? all.indexOf(name) === i) - .filter(name => - fs.existsSync(path.join(nodeModulesPath, name, "marko.json")) - ) - .map(escapeRegexp) - .concat("marko") - .join("|")})/)` - ] + // Here we whitelist all `.marko` files. + transformIgnorePatterns: ["node_modules/.*(? { document.body.innerHTML = ""; @@ -21,3 +22,11 @@ test("can be mocked", async () => { `"
Hello Mocked
"` ); }); + +test("transforms templates in node_modules", async () => { + const result = await Project.render({}); + result.appendTo(document.body).getComponent(); + expect(document.body.innerHTML).toMatchInlineSnapshot( + `"
Hello World
"` + ); +}); diff --git a/test/fixtures/project/index.marko b/test/fixtures/project/index.marko new file mode 100644 index 0000000..c3ba87d --- /dev/null +++ b/test/fixtures/project/index.marko @@ -0,0 +1,3 @@ + + Hello World + \ No newline at end of file diff --git a/test/fixtures/project/index.marko.d.ts b/test/fixtures/project/index.marko.d.ts new file mode 100644 index 0000000..0a3c1f1 --- /dev/null +++ b/test/fixtures/project/index.marko.d.ts @@ -0,0 +1,2 @@ +declare let x: any; +export = x; diff --git a/test/fixtures/project/node_modules/direct/index.marko b/test/fixtures/project/node_modules/direct/index.marko new file mode 100644 index 0000000..a381eb2 --- /dev/null +++ b/test/fixtures/project/node_modules/direct/index.marko @@ -0,0 +1,5 @@ + + + <${input.renderBody}/> + + \ No newline at end of file diff --git a/test/fixtures/project/node_modules/direct/marko.json b/test/fixtures/project/node_modules/direct/marko.json new file mode 100644 index 0000000..63ac777 --- /dev/null +++ b/test/fixtures/project/node_modules/direct/marko.json @@ -0,0 +1,5 @@ +{ + "": { + "template": "./index.marko" + } +} \ No newline at end of file diff --git a/test/fixtures/project/node_modules/direct/node_modules/indirect/index.marko b/test/fixtures/project/node_modules/direct/node_modules/indirect/index.marko new file mode 100644 index 0000000..f8886cf --- /dev/null +++ b/test/fixtures/project/node_modules/direct/node_modules/indirect/index.marko @@ -0,0 +1,3 @@ + + <${input.renderBody}/> + \ No newline at end of file diff --git a/test/fixtures/project/node_modules/direct/node_modules/indirect/marko.json b/test/fixtures/project/node_modules/direct/node_modules/indirect/marko.json new file mode 100644 index 0000000..0a42f7d --- /dev/null +++ b/test/fixtures/project/node_modules/direct/node_modules/indirect/marko.json @@ -0,0 +1,5 @@ +{ + "": { + "template": "./index.marko" + } +} \ No newline at end of file diff --git a/test/fixtures/project/node_modules/direct/node_modules/indirect/package.json b/test/fixtures/project/node_modules/direct/node_modules/indirect/package.json new file mode 100644 index 0000000..67dfab3 --- /dev/null +++ b/test/fixtures/project/node_modules/direct/node_modules/indirect/package.json @@ -0,0 +1,3 @@ +{ + "name": "direct" +} \ No newline at end of file diff --git a/test/fixtures/project/node_modules/direct/package.json b/test/fixtures/project/node_modules/direct/package.json new file mode 100644 index 0000000..4b09544 --- /dev/null +++ b/test/fixtures/project/node_modules/direct/package.json @@ -0,0 +1,6 @@ +{ + "name": "indirect", + "dependencies": { + "indirect": "*" + } +} \ No newline at end of file diff --git a/test/fixtures/project/package.json b/test/fixtures/project/package.json new file mode 100644 index 0000000..9cb1d13 --- /dev/null +++ b/test/fixtures/project/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "direct": "*" + } +} \ No newline at end of file diff --git a/test/server.test.ts b/test/server.test.ts index 93097e0..21bbfe6 100644 --- a/test/server.test.ts +++ b/test/server.test.ts @@ -1,5 +1,6 @@ import Example from "./fixtures/example.marko"; import Mockable from "./fixtures/mockable.marko"; +import Project from "./fixtures/project/index.marko"; test("server rendering", () => { expect(Example.renderSync({}).toString()).toMatchInlineSnapshot( @@ -13,3 +14,9 @@ test("can be mocked", async () => { `"
Hello Mocked
"` ); }); + +test("transforms templates in node_modules", () => { + expect(Project.renderSync({}).toString()).toMatchInlineSnapshot( + `"
Hello World
"` + ); +});