Skip to content

Commit d2ba42c

Browse files
committed
Initial commit
0 parents  commit d2ba42c

File tree

6 files changed

+185
-0
lines changed

6 files changed

+185
-0
lines changed

.gitignore

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# Logs
2+
logs
3+
*.log
4+
npm-debug.log*
5+
yarn-debug.log*
6+
yarn-error.log*
7+
8+
# Runtime data
9+
pids
10+
*.pid
11+
*.seed
12+
*.pid.lock
13+
14+
# Directory for instrumented libs generated by jscoverage/JSCover
15+
lib-cov
16+
17+
# Coverage directory used by tools like istanbul
18+
coverage
19+
20+
# nyc test coverage
21+
.nyc_output
22+
23+
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
24+
.grunt
25+
26+
# Bower dependency directory (https://bower.io/)
27+
bower_components
28+
29+
# node-waf configuration
30+
.lock-wscript
31+
32+
# Compiled binary addons (http://nodejs.org/api/addons.html)
33+
build/Release
34+
35+
# Dependency directories
36+
node_modules/
37+
jspm_packages/
38+
39+
# Typescript v1 declaration files
40+
typings/
41+
42+
# Optional npm cache directory
43+
.npm
44+
45+
# Optional eslint cache
46+
.eslintcache
47+
48+
# Optional REPL history
49+
.node_repl_history
50+
51+
# Output of 'npm pack'
52+
*.tgz
53+
54+
# Yarn Integrity file
55+
.yarn-integrity
56+
57+
# dotenv environment variables file
58+
.env
59+

LICENSE

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2018 Niyoko Yuliawan
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# eslint-plugin-import-resolver-module-alias

index.js

+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
/* eslint-disable dot-notation, global-require */
2+
3+
const resolve = require("resolve");
4+
const path = require("path");
5+
6+
const opts = (file, config) => Object.assign(
7+
{
8+
extensions: [".js", ".json"],
9+
},
10+
config,
11+
{
12+
basedir: path.dirname(path.resolve(file)),
13+
packageFilter: (pkg) => {
14+
const ret = Object.assign({}, pkg);
15+
16+
if (pkg["jsnext:main"]) {
17+
ret["main"] = pkg["jsnext:main"];
18+
}
19+
20+
return ret;
21+
},
22+
},
23+
);
24+
25+
const isPathMatchesAlias = (p, alias) => {
26+
// Matching /^alias(\/|$)/
27+
if (p.indexOf(alias) === 0) {
28+
if (p.length === alias.length) return true;
29+
if (p[alias.length] === "/") return true;
30+
}
31+
32+
return false;
33+
};
34+
35+
exports.interfaceVersion = 2;
36+
exports.resolve = (source, file, config) => {
37+
const relBase = (config && config.base) || path.join(__dirname, "../..");
38+
const baseDir = path.resolve(relBase);
39+
const packageDir = path.join(baseDir, "./package.json");
40+
const packageConfig = require(packageDir); // eslint-disable-line import/no-dynamic-require
41+
const aliases = packageConfig["_moduleAliases"];
42+
const aliasKeys = Object.keys(aliases);
43+
44+
let m = source;
45+
try {
46+
for (const k of aliasKeys) {
47+
if (isPathMatchesAlias(source, k)) {
48+
const rel = source.substr(k.length);
49+
m = path.join(baseDir, aliases[k], rel);
50+
}
51+
}
52+
53+
const p = resolve.sync(m, opts(file, config));
54+
return {
55+
found: true,
56+
path: p,
57+
};
58+
} catch (e) {
59+
return {
60+
found: false,
61+
};
62+
}
63+
};

package-lock.json

+21
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"name": "eslint-plugin-import-resolver-module-alias",
3+
"version": "0.1.0",
4+
"description": "eslint plugins for module-alias resolver",
5+
"main": "index.js",
6+
"engines": {
7+
"node": ">=8.0.0"
8+
},
9+
"scripts": {
10+
"test": "echo \"Error: no test specified\" && exit 1"
11+
},
12+
"author": "Niyoko Yuliawan <[email protected]>",
13+
"license": "MIT",
14+
"dependencies": {
15+
"resolve": "^1.5.0"
16+
},
17+
"peerDependencies": {
18+
"module-alias": "^2.0.6"
19+
}
20+
}

0 commit comments

Comments
 (0)