From b90ed14234a0e303022d5370e7eba4458bbd84d4 Mon Sep 17 00:00:00 2001 From: Thijs Louisse Date: Tue, 23 Nov 2021 09:35:39 +0100 Subject: [PATCH] fix(providence): windows compatibility --- .changeset/kind-zoos-bathe.md | 3 ++- .../providence-analytics/src/cli/cli-helpers.js | 7 ++++++- .../src/program/utils/resolve-import-path.js | 3 ++- .../providence-analytics/test-node/cli/cli.test.js | 12 +++++++++++- 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/.changeset/kind-zoos-bathe.md b/.changeset/kind-zoos-bathe.md index 5d943c89d..88fc0f632 100644 --- a/.changeset/kind-zoos-bathe.md +++ b/.changeset/kind-zoos-bathe.md @@ -2,4 +2,5 @@ 'providence-analytics': patch --- -correctly dedupe match-imports exportSpecifiers +- correctly dedupe match-imports exportSpecifiers +- windows compatibility diff --git a/packages-node/providence-analytics/src/cli/cli-helpers.js b/packages-node/providence-analytics/src/cli/cli-helpers.js index c2abc55ed..cd38bc49a 100644 --- a/packages-node/providence-analytics/src/cli/cli-helpers.js +++ b/packages-node/providence-analytics/src/cli/cli-helpers.js @@ -115,7 +115,12 @@ async function appendProjectDependencyPaths(rootPaths, matchPattern, modes = ['n let matchFn; if (matchPattern) { if (matchPattern.startsWith('/') && matchPattern.endsWith('/')) { - matchFn = (_, d) => new RegExp(matchPattern.slice(1, -1)).test(d); + matchFn = (_, d) => { + const reString = matchPattern.slice(1, -1); + const result = new RegExp(reString).test(d); + LogService.debug(`[appendProjectDependencyPaths]: /${reString}/.test(${d} => ${result})`); + return result; + }; } else { LogService.error( `[appendProjectDependencyPaths] Please provide a matchPattern enclosed by '/'. Found: ${matchPattern}`, diff --git a/packages-node/providence-analytics/src/program/utils/resolve-import-path.js b/packages-node/providence-analytics/src/program/utils/resolve-import-path.js index 8cf3eb49f..d9422a11b 100644 --- a/packages-node/providence-analytics/src/program/utils/resolve-import-path.js +++ b/packages-node/providence-analytics/src/program/utils/resolve-import-path.js @@ -13,6 +13,7 @@ const pathLib = require('path'); const { nodeResolve } = require('@rollup/plugin-node-resolve'); const { LogService } = require('../services/LogService.js'); const { memoizeAsync } = require('./memoize.js'); +const { toPosixPath } = require('./to-posix-path.js'); const fakePluginContext = { meta: { @@ -51,7 +52,7 @@ async function resolveImportPath(importee, importer, opts = {}) { return null; } // @ts-ignore - return result.id; + return toPosixPath(result.id); } /** diff --git a/packages-node/providence-analytics/test-node/cli/cli.test.js b/packages-node/providence-analytics/test-node/cli/cli.test.js index 007a0b77c..24aa2cffb 100644 --- a/packages-node/providence-analytics/test-node/cli/cli.test.js +++ b/packages-node/providence-analytics/test-node/cli/cli.test.js @@ -484,8 +484,18 @@ describe('CLI helpers', () => { }); it('allows a regex filter', async () => { - const result = await appendProjectDependencyPaths(['/mocked/path/example-project'], '/b$/'); + const result = await appendProjectDependencyPaths( + ['/mocked/path/example-project'], + '/^dependency-/', + ); expect(result).to.eql([ + '/mocked/path/example-project/node_modules/dependency-a', + '/mocked/path/example-project/bower_components/dependency-b', + '/mocked/path/example-project', + ]); + + const result2 = await appendProjectDependencyPaths(['/mocked/path/example-project'], '/b$/'); + expect(result2).to.eql([ '/mocked/path/example-project/bower_components/dependency-b', '/mocked/path/example-project', ]);