Skip to content

Commit 2697065

Browse files
committed
Rework path mappings, fixes #398
1 parent 3833cec commit 2697065

File tree

1 file changed

+26
-26
lines changed
  • packages/karma-typescript/src/bundler/resolve

1 file changed

+26
-26
lines changed

packages/karma-typescript/src/bundler/resolve/resolver.ts

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -152,28 +152,9 @@ export class Resolver {
152152
return this.filenameCache.indexOf(bundleItem.filename) !== -1;
153153
}
154154

155-
private resolveCompilerPathModulename(bundleItem: BundleItem): string {
156-
157-
let moduleName = bundleItem.moduleName;
158-
159-
if (bundleItem.isNpmModule() && bundleItem.isTypingsFile() &&
160-
bundleItem.filename.indexOf(bundleItem.moduleName) === -1) {
161-
162-
const filename = PathTool.fixWindowsPath(bundleItem.filename);
163-
const matches = filename.match(/\/node_modules\/(.*)\//);
164-
165-
if (matches && matches[1]) {
166-
moduleName = matches[1];
167-
this.log.debug("Resolved module name [%s] to [%s]", bundleItem.moduleName, moduleName);
168-
}
169-
}
170-
171-
return moduleName;
172-
}
173-
174155
private resolveFilename(requiringModule: string, bundleItem: BundleItem, onFilenameResolved: () => void) {
175156

176-
const moduleName = this.resolveCompilerPathModulename(bundleItem);
157+
let moduleName = bundleItem.moduleName;
177158

178159
if (this.bowerPackages[moduleName]) {
179160
bundleItem.filename = this.bowerPackages[moduleName];
@@ -197,23 +178,42 @@ export class Resolver {
197178
};
198179

199180
browserResolve(moduleName, bopts, (error, filename) => {
181+
200182
if (!error) {
201183
bundleItem.filename = fs.realpathSync(filename);
202184
return onFilenameResolved();
203185
}
186+
187+
// This is probably a compiler path module
188+
if(bundleItem.filename && !bundleItem.isTypingsFile() && (
189+
bundleItem.filename.endsWith(".js") ||
190+
bundleItem.filename.endsWith(".jsx") ||
191+
bundleItem.filename.endsWith(".ts") ||
192+
bundleItem.filename.endsWith(".tsx"))
193+
) {
194+
return onFilenameResolved();
195+
}
196+
197+
// This is probably a compiler path module (.d.ts)
198+
if (bundleItem.isNpmModule() && bundleItem.isTypingsFile() &&
199+
bundleItem.filename.indexOf(bundleItem.moduleName) === -1) {
200+
const filepath = PathTool.fixWindowsPath(bundleItem.filename);
201+
const matches = filepath.match(/\/node_modules\/(.*)\//);
202+
if (matches && matches[1]) {
203+
moduleName = matches[1];
204+
this.log.debug("Resolved module name [%s] to [%s]", bundleItem.moduleName, moduleName);
205+
}
206+
}
207+
204208
bopts = {
205209
basedir: bundleItem.filename ? path.dirname(bundleItem.filename) : this.config.karma.basePath,
206210
extensions: this.config.bundlerOptions.resolve.extensions,
207211
moduleDirectory: this.config.bundlerOptions.resolve.directories,
208212
modules: this.shims
209213
};
210214

211-
browserResolve(moduleName, bopts, (error2, filename2) => {
215+
browserResolve(moduleName, bopts, (error2: any, filename2: fs.PathLike) => {
212216
if (error2) {
213-
if (bundleItem.filename && !bundleItem.isTypingsFile()) {
214-
// This is probably a compiler path module (.js)
215-
return onFilenameResolved();
216-
}
217217
throw new Error("Unable to resolve module [" +
218218
moduleName + "] from [" + requiringModule + "]" + os.EOL +
219219
JSON.stringify(bopts, undefined, 2) + os.EOL +
@@ -231,7 +231,7 @@ export class Resolver {
231231

232232
if (bundleItem.isScript() && this.dependencyWalker.hasRequire(bundleItem.source)) {
233233
this.dependencyWalker.collectJavascriptDependencies(bundleItem, (moduleNames) => {
234-
async.each(moduleNames, (moduleName, onModuleResolved) => {
234+
async.each(moduleNames, (moduleName: string, onModuleResolved: () => void) => {
235235
const dependency = new BundleItem(moduleName);
236236
this.resolveModule(bundleItem.filename, dependency, buffer, (resolved) => {
237237
if (resolved) {

0 commit comments

Comments
 (0)