Skip to content
This repository was archived by the owner on Jan 13, 2024. It is now read-only.

Commit 7af8d04

Browse files
committedDec 8, 2019
adopt new version of 'resolve' dependency
1 parent 718d974 commit 7af8d04

File tree

6 files changed

+36
-69
lines changed

6 files changed

+36
-69
lines changed
 

‎lib/follow.js

+14-9
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
1+
import fs from 'fs';
12
import { sync } from 'resolve';
23

34
export default function follow (x, opts) {
5+
// TODO async version
46
return new Promise((resolve) => {
5-
resolve(sync(x, opts));
6-
// TODO own implementation with foreign tests
7-
// TODO async follow
8-
/*
9-
resolve_(x, opts, (error, result) => {
10-
if (error) return reject(error);
11-
resolve(result);
12-
});
13-
*/
7+
resolve(sync(x, {
8+
basedir: opts.basedir,
9+
extensions: opts.extensions,
10+
readFileSync: (file) => {
11+
opts.readFile(file);
12+
return fs.readFileSync(file);
13+
},
14+
packageFilter: (config, base) => {
15+
opts.packageFilter(config, base);
16+
return config;
17+
}
18+
}));
1419
});
1520
}

‎lib/walker.js

+13-49
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,6 @@ import path from 'path';
1616

1717
const win32 = process.platform === 'win32';
1818

19-
function shortFromAlias (alias) {
20-
// alias = fs-promise or @types/node
21-
if (alias[0] === '@') {
22-
return alias.match(/^([^\\/]+[\\/][^\\/]+)/)[0];
23-
} else {
24-
return alias.match(/^[^\\/]+/)[0];
25-
}
26-
}
27-
2819
function isPublic (config) {
2920
if (config.private) return false;
3021
let { license, licenses } = config;
@@ -414,28 +405,29 @@ class Walker {
414405
}
415406

416407
async stepDerivatives_ALIAS_AS_RESOLVABLE (record, marker, derivative) { // eslint-disable-line camelcase
417-
const catcher = {};
418408
let stage = 0;
419409
let newPackage;
420410
let newMarker;
421411

422-
catcher.readFileSync = (file) => {
423-
// only first occurence from loadNodeModulesSync
424-
if (stage === 2) return;
425-
assert(stage === 0);
412+
// was taken from resolve/lib/sync.js
413+
const isNear = /^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[\\/])/;
414+
const near = isNear.test(derivative.alias);
415+
416+
const catchReadFile = (file) => {
417+
if (near) return;
418+
if (stage !== 0) return;
426419
assert(isPackageJson(file), 'walker: ' +
427420
file + ' must be package.json');
428421
newPackage = file;
429422
newMarker = undefined;
430423
stage = 1;
431-
return fs.readFileSync(file);
432424
};
433425

434-
catcher.packageFilter = (config, base) => {
435-
assert(stage === 1);
426+
const catchPackageFilter = (config, base) => {
427+
if (near) return;
428+
if (stage !== 1) return;
436429
newMarker = { config, configPath: newPackage, base };
437430
stage = 2;
438-
return config;
439431
};
440432

441433
let newFile, failure;
@@ -448,42 +440,13 @@ class Walker {
448440
// is not taken in require('./typos')
449441
// in 'normalize-package-data/lib/fixer.js'
450442
extensions: [ '.js', '.json', '.node' ],
451-
readFileSync: catcher.readFileSync,
452-
packageFilter: catcher.packageFilter
443+
readFile: catchReadFile,
444+
packageFilter: catchPackageFilter
453445
});
454446
} catch (error) {
455447
failure = error;
456448
}
457449

458-
// was taken from resolve/lib/sync.js
459-
const isNear = /^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[\\/])/;
460-
let mainNotFound = false;
461-
462-
if (!isNear.test(derivative.alias)) {
463-
const short = shortFromAlias(derivative.alias);
464-
// 'npm' !== 'npm/bin/npm-cli.js'
465-
if (short !== derivative.alias) {
466-
try {
467-
await follow(short, {
468-
basedir: path.dirname(record.file),
469-
extensions: [ '.js', '.json', '.node' ],
470-
readFileSync: catcher.readFileSync,
471-
packageFilter: catcher.packageFilter
472-
});
473-
} catch (error) {
474-
// the purpose is to fire 'packageFilter'
475-
// in cases like require('npm/bin/npm-cli.js')
476-
// because otherwise it will not be fired
477-
// (only loadAsFileSync is executed)
478-
}
479-
}
480-
// 'babel-runtime' === 'babel-runtime'
481-
if (short === derivative.alias) {
482-
mainNotFound = failure && newMarker &&
483-
newMarker.config && !newMarker.config.main;
484-
}
485-
}
486-
487450
assert((newPackage && newMarker) ||
488451
(!newPackage && !newMarker), 'Probably, package.json is malformed');
489452

@@ -498,6 +461,7 @@ class Walker {
498461

499462
if (failure) {
500463
const { toplevel } = marker;
464+
const mainNotFound = !newFile && newMarker;
501465
const debug = !toplevel || derivative.mayExclude ||
502466
(mainNotFound && derivative.fromDependencies);
503467
const level = debug ? 'debug' : 'warn';

‎package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
"multistream": "^2.1.1",
4242
"pkg-fetch": "^2.6.4",
4343
"progress": "^2.0.3",
44-
"resolve": "1.6.0",
44+
"resolve": "^1.13.1",
4545
"stream-meter": "^1.0.4"
4646
},
4747
"devDependencies": {

‎test/test-50-bakery-4/main.js

+3
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ const target = process.argv[2] || 'host';
1313
const input = './test-x-index.js';
1414
const output = './run-time/test-output.exe';
1515

16+
if (/^(node|v)?0/.test(target)) return;
17+
if (/^(node|v)?4/.test(target)) return;
18+
if (/^(node|v)?6/.test(target)) return;
1619
if (/^(node|v)?8/.test(target)) return;
1720

1821
let left;

‎test/test-50-fs-runtime-layer-2/main.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ function bitty (version) {
2525
(4 * (/^(node|v)?7/.test(version))) |
2626
(4 * (/^(node|v)?8/.test(version))) |
2727
(4 * (/^(node|v)?9/.test(version))) |
28-
(8 * (/^(node|v)?10/.test(version)));
28+
(8 * (/^(node|v)?10/.test(version))) |
29+
(8 * (/^(node|v)?11/.test(version))) |
30+
(8 * (/^(node|v)?12/.test(version)));
2931
}
3032

3133
const version1 = process.version;

‎yarn.lock

+2-9
Original file line numberDiff line numberDiff line change
@@ -2666,7 +2666,7 @@ path-key@^2.0.1:
26662666
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
26672667
integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
26682668

2669-
path-parse@^1.0.5, path-parse@^1.0.6:
2669+
path-parse@^1.0.6:
26702670
version "1.0.6"
26712671
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
26722672
integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
@@ -2918,14 +2918,7 @@ resolve-url@^0.2.1:
29182918
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
29192919
integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
29202920

2921-
resolve@1.6.0:
2922-
version "1.6.0"
2923-
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.6.0.tgz#0fbd21278b27b4004481c395349e7aba60a9ff5c"
2924-
integrity sha512-mw7JQNu5ExIkcw4LPih0owX/TZXjD/ZUF/ZQ/pDnkw3ZKhDcZZw5klmBlj6gVMwjQ3Pz5Jgu7F3d0jcDVuEWdw==
2925-
dependencies:
2926-
path-parse "^1.0.5"
2927-
2928-
resolve@^1.12.0, resolve@^1.3.2, resolve@^1.8.1:
2921+
resolve@^1.12.0, resolve@^1.13.1, resolve@^1.3.2, resolve@^1.8.1:
29292922
version "1.13.1"
29302923
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.13.1.tgz#be0aa4c06acd53083505abb35f4d66932ab35d16"
29312924
integrity sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w==

0 commit comments

Comments
 (0)
This repository has been archived.