Skip to content

Commit 70850d2

Browse files
committed
[Breaking] packageFilter: bring sync/async into alignment; pass three args: pkg, pkgfile, dir.
See #171.
1 parent 54bc35f commit 70850d2

File tree

5 files changed

+24
-12
lines changed

5 files changed

+24
-12
lines changed

lib/async.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ module.exports = function resolve(x, options, callback) {
126126
try { var pkg = JSON.parse(body); } catch (jsonErr) {}
127127

128128
if (pkg && opts.packageFilter) {
129-
pkg = opts.packageFilter(pkg, pkgfile);
129+
pkg = opts.packageFilter(pkg, pkgfile, dir);
130130
}
131131
cb(null, pkg, dir);
132132
});
@@ -153,7 +153,7 @@ module.exports = function resolve(x, options, callback) {
153153
} catch (jsonErr) {}
154154

155155
if (opts.packageFilter) {
156-
pkg = opts.packageFilter(pkg, pkgfile);
156+
pkg = opts.packageFilter(pkg, pkgfile, x);
157157
}
158158

159159
if (pkg.main) {

lib/sync.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ module.exports = function (x, options) {
8888
} catch (jsonErr) {}
8989

9090
if (pkg && opts.packageFilter) {
91-
pkg = opts.packageFilter(pkg, dir);
91+
pkg = opts.packageFilter(pkg, pkgfile, dir);
9292
}
9393

9494
return { pkg: pkg, dir: dir };

readme.markdown

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,10 @@ options are:
5959

6060
* opts.isFile - function to asynchronously test whether a file exists
6161

62-
* `opts.packageFilter(pkg, pkgfile)` - transform the parsed package.json contents before looking at the "main" field
62+
* `opts.packageFilter(pkg, pkgfile, dir)` - transform the parsed package.json contents before looking at the "main" field
6363
* pkg - package data
6464
* pkgfile - path to package.json
65+
* dir - directory that contains package.json
6566

6667
* `opts.pathFilter(pkg, path, relativePath)` - transform a path within a package
6768
* pkg - package data
@@ -113,9 +114,10 @@ options are:
113114

114115
* opts.isFile - function to synchronously test whether a file exists
115116

116-
* `opts.packageFilter(pkg, dir)` - transform the parsed package.json contents before looking at the "main" field
117+
* `opts.packageFilter(pkg, pkgfile, dir)` - transform the parsed package.json contents before looking at the "main" field
117118
* pkg - package data
118-
* dir - directory for package.json (Note: the second argument will change to "pkgfile" in v2)
119+
* pkgfile - path to package.json
120+
* dir - directory that contains package.json
119121

120122
* `opts.pathFilter(pkg, path, relativePath)` - transform a path within a package
121123
* pkg - package data

test/filter.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@ var test = require('tape');
33
var resolve = require('../');
44

55
test('filter', function (t) {
6-
t.plan(4);
6+
t.plan(5);
77
var dir = path.join(__dirname, 'resolver');
88
var packageFilterArgs;
99
resolve('./baz', {
1010
basedir: dir,
11-
packageFilter: function (pkg, pkgfile) {
11+
packageFilter: function (pkg, pkgfile, dir) {
1212
pkg.main = 'doom';
13-
packageFilterArgs = [pkg, pkgfile];
13+
packageFilterArgs = [pkg, pkgfile, dir];
1414
return pkg;
1515
}
1616
}, function (err, res, pkg) {
@@ -29,6 +29,9 @@ test('filter', function (t) {
2929
'second packageFilter argument is "pkgfile"'
3030
);
3131

32+
var packageFileDir = packageFilterArgs[2];
33+
t.equal(packageFileDir, path.join(dir, 'baz'), 'third packageFilter argument is "dir"');
34+
3235
t.end();
3336
});
3437
});

test/filter_sync.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ test('filter', function (t) {
77
var packageFilterArgs;
88
var res = resolve.sync('./baz', {
99
basedir: dir,
10-
packageFilter: function (pkg, dir) {
10+
packageFilter: function (pkg, pkgfile, dir) {
1111
pkg.main = 'doom';
12-
packageFilterArgs = [pkg, dir];
12+
packageFilterArgs = [pkg, pkgfile, dir];
1313
return pkg;
1414
}
1515
});
@@ -20,7 +20,14 @@ test('filter', function (t) {
2020
t.equal(packageData.main, 'doom', 'package "main" was altered');
2121

2222
var packageFile = packageFilterArgs[1];
23-
t.equal(packageFile, path.join(dir, 'baz'), 'second packageFilter argument is "dir"');
23+
t.equal(
24+
packageFile,
25+
path.join(dir, 'baz/package.json'),
26+
'second packageFilter argument is "pkgfile"'
27+
);
28+
29+
var packageFileDir = packageFilterArgs[2];
30+
t.equal(packageFileDir, path.join(dir, 'baz'), 'third packageFilter argument is "dir"');
2431

2532
t.end();
2633
});

0 commit comments

Comments
 (0)