kopytko-linter 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"importParser.d.ts","sourceRoot":"","sources":["../../../src/analysis/importParser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAK9C,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CAkB1D;AAED,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,YAAY,CAAoC;gBAE5C,OAAO,EAAE,qBAAqB;IAI1C,mBAAmB,IAAI,MAAM,EAAE;IAI/B,YAAY,IAAI,MAAM;IAItB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE;IAI3C,iBAAiB,CAAC,GAAG,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAO/E,YAAY,CAAC,GAAG,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO;IAI/D,sBAAsB,IAAI,IAAI;IAI9B,OAAO,CAAC,qBAAqB;
|
|
1
|
+
{"version":3,"file":"importParser.d.ts","sourceRoot":"","sources":["../../../src/analysis/importParser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAK9C,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CAkB1D;AAED,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,YAAY,CAAoC;gBAE5C,OAAO,EAAE,qBAAqB;IAI1C,mBAAmB,IAAI,MAAM,EAAE;IAI/B,YAAY,IAAI,MAAM;IAItB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE;IAI3C,iBAAiB,CAAC,GAAG,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAO/E,YAAY,CAAC,GAAG,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO;IAI/D,sBAAsB,IAAI,IAAI;IAI9B,OAAO,CAAC,qBAAqB;IA4B7B,OAAO,CAAC,qBAAqB;CA0B9B"}
|
|
@@ -75,7 +75,7 @@ class ImportResolver {
|
|
|
75
75
|
}
|
|
76
76
|
resolveImportPath(imp, documentPath) {
|
|
77
77
|
if (imp.fromModule) {
|
|
78
|
-
return this.resolveExternalImport(imp.importPath, imp.fromModule);
|
|
78
|
+
return this.resolveExternalImport(imp.importPath, imp.fromModule, documentPath);
|
|
79
79
|
}
|
|
80
80
|
return this.resolveInternalImport(imp.importPath, documentPath);
|
|
81
81
|
}
|
|
@@ -87,7 +87,7 @@ class ImportResolver {
|
|
|
87
87
|
}
|
|
88
88
|
resolveInternalImport(importPath, documentPath) {
|
|
89
89
|
const { workspaceFolders, sourceDir } = this.options;
|
|
90
|
-
// Try workspace
|
|
90
|
+
// Try each workspace folder: <root>/<sourceDir><importPath> then <root><importPath>
|
|
91
91
|
for (const folder of workspaceFolders) {
|
|
92
92
|
const withSource = nodePath.join(folder, sourceDir, importPath);
|
|
93
93
|
if (fsWrapper_1.default.existsSync(withSource))
|
|
@@ -96,36 +96,78 @@ class ImportResolver {
|
|
|
96
96
|
if (fsWrapper_1.default.existsSync(direct))
|
|
97
97
|
return direct;
|
|
98
98
|
}
|
|
99
|
-
//
|
|
99
|
+
// If the document lives inside a node_modules package, resolve relative
|
|
100
|
+
// to that package's kopytkoModuleDir root
|
|
101
|
+
const pkgRoot = getNodeModulesPackageRoot(documentPath);
|
|
102
|
+
if (pkgRoot) {
|
|
103
|
+
const kopytkoDir = readKopytkoModuleDir(pkgRoot);
|
|
104
|
+
const candidate = nodePath.join(pkgRoot, kopytkoDir, importPath);
|
|
105
|
+
if (fsWrapper_1.default.existsSync(candidate))
|
|
106
|
+
return candidate;
|
|
107
|
+
}
|
|
108
|
+
// Last resort: resolve relative to the document's directory
|
|
100
109
|
const relative = nodePath.resolve(nodePath.dirname(documentPath), importPath);
|
|
101
110
|
if (fsWrapper_1.default.existsSync(relative))
|
|
102
111
|
return relative;
|
|
103
112
|
return undefined;
|
|
104
113
|
}
|
|
105
|
-
resolveExternalImport(importPath, moduleName) {
|
|
114
|
+
resolveExternalImport(importPath, moduleName, documentPath) {
|
|
106
115
|
if (!this.options.resolveModules)
|
|
107
116
|
return undefined;
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
break;
|
|
124
|
-
}
|
|
117
|
+
// Walk up from documentPath to find node_modules (like npm resolution)
|
|
118
|
+
let dir = nodePath.dirname(documentPath);
|
|
119
|
+
const maxDepth = 10;
|
|
120
|
+
for (let i = 0; i < maxDepth; i++) {
|
|
121
|
+
const modulePath = nodePath.join(dir, 'node_modules', moduleName);
|
|
122
|
+
if (fsWrapper_1.default.existsSync(modulePath)) {
|
|
123
|
+
const kopytkoDir = readKopytkoModuleDir(modulePath);
|
|
124
|
+
const candidate = nodePath.join(modulePath, kopytkoDir, importPath);
|
|
125
|
+
if (fsWrapper_1.default.existsSync(candidate))
|
|
126
|
+
return candidate;
|
|
127
|
+
// Also try without the subdir
|
|
128
|
+
const candidateRoot = nodePath.join(modulePath, importPath);
|
|
129
|
+
if (fsWrapper_1.default.existsSync(candidateRoot))
|
|
130
|
+
return candidateRoot;
|
|
131
|
+
return undefined; // module found but file not found inside it
|
|
125
132
|
}
|
|
133
|
+
const parent = nodePath.dirname(dir);
|
|
134
|
+
if (parent === dir)
|
|
135
|
+
break;
|
|
136
|
+
dir = parent;
|
|
126
137
|
}
|
|
127
|
-
return
|
|
138
|
+
return undefined;
|
|
128
139
|
}
|
|
129
140
|
}
|
|
130
141
|
exports.ImportResolver = ImportResolver;
|
|
142
|
+
/** Read `kopytkoModuleDir` from a package's package.json if it exists. */
|
|
143
|
+
function readKopytkoModuleDir(modulePath) {
|
|
144
|
+
try {
|
|
145
|
+
const pkgJson = nodePath.join(modulePath, 'package.json');
|
|
146
|
+
const content = fsWrapper_1.default.readFileSync(pkgJson, 'utf-8');
|
|
147
|
+
const pkg = JSON.parse(content);
|
|
148
|
+
return pkg.kopytkoModuleDir ?? '';
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
return '';
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Given any path inside a node_modules package, returns the package root
|
|
156
|
+
* (handles both regular and scoped packages).
|
|
157
|
+
*/
|
|
158
|
+
function getNodeModulesPackageRoot(filePath) {
|
|
159
|
+
const marker = `${nodePath.sep}node_modules${nodePath.sep}`;
|
|
160
|
+
const idx = filePath.lastIndexOf(marker);
|
|
161
|
+
if (idx === -1)
|
|
162
|
+
return undefined;
|
|
163
|
+
const base = filePath.slice(0, idx + marker.length);
|
|
164
|
+
const after = filePath.slice(base.length);
|
|
165
|
+
const parts = after.split(nodePath.sep).filter(Boolean);
|
|
166
|
+
if (parts.length === 0)
|
|
167
|
+
return undefined;
|
|
168
|
+
const pkgName = parts[0].startsWith('@') && parts.length >= 2
|
|
169
|
+
? parts[0] + nodePath.sep + parts[1]
|
|
170
|
+
: parts[0];
|
|
171
|
+
return base + pkgName;
|
|
172
|
+
}
|
|
131
173
|
//# sourceMappingURL=importParser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"importParser.js","sourceRoot":"","sources":["../../../src/analysis/importParser.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,oCAkBC;AAxBD,+CAAiC;AAEjC,4DAAoC;AAEpC,MAAM,cAAc,GAAG,wDAAwD,CAAC;AAEhF,SAAgB,YAAY,CAAC,IAAY;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,OAAO,GAAoB,EAAE,CAAC;IAEpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK;YAAE,SAAS;QAErB,OAAO,CAAC,IAAI,CAAC;YACX,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;YACb,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;YACpB,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS;YACjC,IAAI,EAAE,CAAC,GAAG,CAAC;YACX,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAQD,MAAa,cAAc;IACR,OAAO,CAAwB;IACxC,YAAY,GAA+B,IAAI,CAAC;IAExD,YAAY,OAA8B;QACxC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACvC,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IAChC,CAAC;IAED,YAAY,CAAC,IAAY;QACvB,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,iBAAiB,CAAC,GAAkB,EAAE,YAAoB;QACxD,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"importParser.js","sourceRoot":"","sources":["../../../src/analysis/importParser.ts"],"names":[],"mappings":"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"}
|