jest-preset-angular
Version:
Jest preset configuration for Angular projects
57 lines (56 loc) • 2.34 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.factory = exports.version = exports.name = void 0;
var TransformUtils_1 = require("./TransformUtils");
var TEMPLATE_URL = 'templateUrl';
var STYLE_URLS = 'styleUrls';
var TEMPLATE = 'template';
var REQUIRE = 'require';
var TRANSFORM_PROPS = [TEMPLATE_URL, STYLE_URLS];
exports.name = 'angular-component-inline-files';
exports.version = 1;
function factory(cs) {
var ts = cs.compilerModule;
var createStringLiteral = TransformUtils_1.getCreateStringLiteral(ts);
function isPropertyAssignmentToTransform(node) {
return ts.isPropertyAssignment(node) && ts.isIdentifier(node.name) && TRANSFORM_PROPS.includes(node.name.text);
}
function transfromPropertyAssignmentForJest(node) {
var mutableAssignment = ts.getMutableClone(node);
var assignmentNameText = mutableAssignment.name.text;
switch (assignmentNameText) {
case TEMPLATE_URL:
var pathLiteral = mutableAssignment.initializer;
if (ts.isStringLiteral(pathLiteral)) {
if (pathLiteral.text && !pathLiteral.text.match(/^(\.\/|\.\.\/|\/)/)) {
pathLiteral = createStringLiteral("./" + pathLiteral.text);
}
}
var requireCall = ts.createCall(ts.createIdentifier(REQUIRE), undefined, [pathLiteral]);
mutableAssignment.name = ts.createIdentifier(TEMPLATE);
mutableAssignment.initializer = requireCall;
break;
case STYLE_URLS:
mutableAssignment.initializer = ts.createArrayLiteral();
break;
default:
break;
}
return mutableAssignment;
}
function createVisitor(ctx, _) {
var visitor = function (node) {
var resultNode = node;
if (isPropertyAssignmentToTransform(node)) {
resultNode = transfromPropertyAssignmentForJest(node);
}
resultNode = ts.visitEachChild(resultNode, visitor, ctx);
return resultNode;
};
return visitor;
}
return function (ctx) { return function (sf) {
return ts.visitNode(sf, createVisitor(ctx, sf));
}; };
}
exports.factory = factory;