karma-typescript-angular2-transform
Version:
Plugin for transforming template and style urls in Angular components.
55 lines • 2.06 kB
JavaScript
;
var log4js = require("log4js");
var path = require("path");
var log;
var fixWindowsPath = function (value) {
return value.replace(/\\/g, "/");
};
var transform = function (context, callback) {
if (!context.ts) {
return callback(undefined, false);
}
var dirty = false;
var templateUrlRegex = /templateUrl:\s(['"][^"']*['"])/g;
var styleUrlsRegex = /styleUrls:\s\[(.*)\]/g;
var quotedStringRegex = /["'](.*?)["']/g;
var rewriteUrl = function (regexp) {
var match = regexp.exec(context.ts.transpiled);
if (!match) {
return;
}
var original = match[0];
var value = match[1];
var templateDir = path.dirname(context.filename);
var relativeTemplateDir = path.relative(context.config.karma.basePath, templateDir);
var pattern = original;
var quotedStringMatch = quotedStringRegex.exec(value);
while (quotedStringMatch) {
var unquotedString = quotedStringMatch[1];
var url = path.join(context.config.karma.urlRoot, "base", relativeTemplateDir, unquotedString);
log.debug("Rewriting %s to %s in %s", unquotedString, url, context.filename);
pattern = pattern.replace(unquotedString, fixWindowsPath(url));
quotedStringMatch = quotedStringRegex.exec(value);
}
context.ts.transpiled = context.ts.transpiled.replace(original, pattern);
dirty = true;
};
rewriteUrl(styleUrlsRegex);
rewriteUrl(templateUrlRegex);
return callback(undefined, dirty, false);
};
var initialize = function (logOptions) {
log4js.configure({
appenders: logOptions.appenders,
categories: {
default: {
appenders: Object.keys(logOptions.appenders),
level: logOptions.level
}
}
});
log = log4js.getLogger("angular2-transform.karma-typescript");
};
var exp = Object.assign(transform, { initialize: initialize });
module.exports = exp;
//# sourceMappingURL=transform.js.map