Skip to content

Commit 1571913

Browse files
mgwalkerljharb
authored andcommitted
[utils] [new] create internal replacement for pkg-up and read-pkg-up
1 parent 7c382f0 commit 1571913

File tree

4 files changed

+66
-3
lines changed

4 files changed

+66
-3
lines changed

utils/CHANGELOG.md

+5-3
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ This change log adheres to standards from [Keep a CHANGELOG](http://keepachangel
88
### Added
99
- `fileExistsWithCaseSync`: add `strict` argument ([#1262], thanks [@sergei-startsev])
1010
- add `visit`, to support dynamic imports ([#1660], [#2212], thanks [@maxkomarychev], [@aladdin-add], [@Hypnosphi])
11+
- create internal replacement for `pkg-up` and `read-pkg-up` ([#2047], [@mgwalker])
1112

1213
## v2.6.2 - 2021-08-08
1314

@@ -96,6 +97,7 @@ Yanked due to critical issue with cache key resulting from #839.
9697

9798
[#2212]: https://github.com/import-js/eslint-plugin-import/pull/2212
9899
[#2160]: https://github.com/import-js/eslint-plugin-import/pull/2160
100+
[#2047]: https://github.com/import-js/eslint-plugin-import/pull/2047
99101
[#2026]: https://github.com/import-js/eslint-plugin-import/pull/2026
100102
[#1786]: https://github.com/import-js/eslint-plugin-import/pull/1786
101103
[#1671]: https://github.com/import-js/eslint-plugin-import/pull/1671
@@ -121,15 +123,15 @@ Yanked due to critical issue with cache key resulting from #839.
121123
[@brettz9]: https://github.com/brettz9
122124
[@christophercurrie]: https://github.com/christophercurrie
123125
[@hulkish]: https://github.com/hulkish
126+
[@Hypnosphi]: https://github.com/Hypnosphi
124127
[@iamnapo]: https://github.com/iamnapo
125128
[@JounQin]: https://github.com/JounQin
126129
[@kaiyoma]: https://github.com/kaiyoma
127130
[@manuth]: https://github.com/manuth
131+
[@maxkomarychev]: https://github.com/maxkomarychev
132+
[@mgwalker]: https://github.com/mgwalker
128133
[@pmcelhaney]: https://github.com/pmcelhaney
129134
[@sergei-startsev]: https://github.com/sergei-startsev
130135
[@sompylasar]: https://github.com/sompylasar
131136
[@timkraut]: https://github.com/timkraut
132137
[@vikr01]: https://github.com/vikr01
133-
[@maxkomarychev]: https://github.com/maxkomarychev
134-
[@aladdin-add]: https://github.com/aladdin-add
135-
[@Hypnosphi]: https://github.com/Hypnosphi

utils/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
"homepage": "https://github.com/import-js/eslint-plugin-import#readme",
2828
"dependencies": {
2929
"debug": "^3.2.7",
30+
"find-up": "^2.1.0",
3031
"pkg-dir": "^2.0.0"
3132
}
3233
}

utils/pkgUp.js

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
'use strict';
2+
exports.__esModule = true;
3+
4+
const findUp = require('find-up');
5+
6+
exports.default = function pkgUp(opts) {
7+
return findUp.sync('package.json', opts);
8+
};

utils/readPkgUp.js

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
'use strict';
2+
exports.__esModule = true;
3+
4+
const fs = require('fs');
5+
const pkgUp = require('./pkgUp').default;
6+
7+
function stripBOM(str) {
8+
return str.replace(/^\uFEFF/, '');
9+
}
10+
11+
/**
12+
* Derived significantly from [email protected]. See license below.
13+
*
14+
* @copyright Sindre Sorhus
15+
* MIT License
16+
*
17+
* Copyright (c) Sindre Sorhus <[email protected]> (https://sindresorhus.com)
18+
*
19+
* Permission is hereby granted, free of charge, to any person obtaining a copy
20+
* of this software and associated documentation files (the "Software"), to deal
21+
* in the Software without restriction, including without limitation the rights
22+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
23+
* copies of the Software, and to permit persons to whom the Software is
24+
* furnished to do so, subject to the following conditions:
25+
*
26+
* The above copyright notice and this permission notice shall be included in
27+
* all copies or substantial portions of the Software.
28+
*
29+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
30+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
31+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
32+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
33+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
34+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
35+
* THE SOFTWARE.
36+
*/
37+
exports.default = function readPkgUp(opts) {
38+
const fp = pkgUp(opts.cwd);
39+
40+
if (!fp) {
41+
return {};
42+
}
43+
44+
try {
45+
return {
46+
pkg: JSON.parse(stripBOM(fs.readFileSync(fp, { encoding: 'utf-8' }))),
47+
path: fp,
48+
};
49+
} catch (e) {
50+
return {};
51+
}
52+
};

0 commit comments

Comments
 (0)