Skip to content

Commit fcc31fe

Browse files
committed
feature: @putout/cli-cache: find-node-modules using escalade
1 parent 40cd7d8 commit fcc31fe

File tree

5 files changed

+55
-20
lines changed

5 files changed

+55
-20
lines changed

packages/cli-cache/lib/find-cache-dir.mjs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,22 @@
11
import {join} from 'node:path';
22
import {mkdir as _mkdir} from 'node:fs/promises';
33
import process from 'node:process';
4-
import _escalade from 'escalade';
4+
import {findNodeModules} from './find-node-modules.mjs';
55

66
const {cwd: _cwd} = process;
77

8-
const includesName = (directory) => (dir, names) => {
9-
return names.includes(directory) && join(dir, directory);
10-
};
11-
128
export default async function findCacheDir(overrides = {}) {
139
const {
1410
name,
1511
cwd = _cwd,
16-
escalade = _escalade,
1712
mkdir = _mkdir,
1813
directory = 'node_modules',
1914
} = overrides;
20-
const input = join(cwd(), 'package.json');
21-
const path = await escalade(input, includesName(directory));
15+
16+
const path = await findNodeModules({
17+
cwd,
18+
directory,
19+
});
2220

2321
if (!path)
2422
return path;
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import {join} from 'node:path';
2+
import process from 'node:process';
3+
import _escalade from 'escalade';
4+
5+
const includesName = (directory) => (dir, names) => {
6+
return names.includes(directory) && join(dir, directory);
7+
};
8+
9+
const {cwd: _cwd} = process;
10+
11+
export async function findNodeModules(overrides = {}) {
12+
const {
13+
escalade = _escalade,
14+
cwd = _cwd,
15+
directory = 'node_modules',
16+
} = overrides;
17+
18+
const input = join(cwd(), 'package.json');
19+
20+
return await escalade(input, includesName(directory));
21+
}

packages/cli-cache/lib/is-changed.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
'use strict';
22

3+
const {simpleImport} = require('./simple-import');
4+
35
module.exports = async (fileCache, {findUp}) => {
46
const result = await Promise.all([
5-
isNodeModulesChanged(fileCache, {
6-
findUp,
7-
}),
7+
isNodeModulesChanged(fileCache),
88
isEslintChanged(fileCache, {
99
findUp,
1010
}),
@@ -18,8 +18,9 @@ module.exports = async (fileCache, {findUp}) => {
1818
module.exports.isNodeModulesChanged = isNodeModulesChanged;
1919
module.exports.isEslintChanged = isEslintChanged;
2020

21-
async function isNodeModulesChanged(fileCache, {findUp}) {
22-
const packagePath = await findUp('node_modules');
21+
async function isNodeModulesChanged(fileCache) {
22+
const {findNodeModules} = await simpleImport('./find-node-modules.mjs');
23+
const packagePath = await findNodeModules();
2324

2425
if (!packagePath)
2526
return false;

packages/cli-cache/lib/is-changed.spec.js

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
'use strict';
22

33
const {test, stub} = require('supertape');
4-
5-
const {stopAll, reRequire} = require('mock-require');
4+
const mockRequire = require('mock-require');
5+
const {stopAll, reRequire} = mockRequire;
66

77
test('putout: cli: cache files: is changed: isNodeModulesChanged: cannot find', async (t) => {
88
const fileCache = {
@@ -11,13 +11,17 @@ test('putout: cli: cache files: is changed: isNodeModulesChanged: cannot find',
1111
reconcile: stub(),
1212
};
1313

14-
const findUp = stub();
14+
const simpleImport = stub().resolves({
15+
findNodeModules: stub(),
16+
});
17+
18+
mockRequire('./simple-import', {
19+
simpleImport,
20+
});
1521

1622
const {isNodeModulesChanged} = reRequire('./is-changed');
1723

18-
const result = await isNodeModulesChanged(fileCache, {
19-
findUp,
20-
});
24+
const result = await isNodeModulesChanged(fileCache);
2125

2226
stopAll();
2327

@@ -96,6 +100,13 @@ test('putout: cli: cache files: is changed', async (t) => {
96100
};
97101

98102
const findUp = stub();
103+
const simpleImport = stub().resolves({
104+
findNodeModules: stub(),
105+
});
106+
107+
mockRequire('./simple-import', {
108+
simpleImport,
109+
});
99110

100111
const isChanged = reRequire('./is-changed');
101112

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
11
'use strict';
22

3-
module.exports.simpleImport = async (url) => (await import(url)).default;
3+
module.exports.simpleImport = async (url) => {
4+
const data = await import(url);
5+
6+
return data.default || data;
7+
};

0 commit comments

Comments
 (0)