dts-jest
Version:
A preprocessor for Jest to snapshot test TypeScript declaration (.d.ts) files
44 lines (43 loc) • 1.94 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.get_node_one_line_text = void 0;
var get_node_one_line_text = function (node, source_file, ts) {
var printer = ts.createPrinter({ removeComments: true }, {
substituteNode: function (_hint, current_node) {
return ts.transform(current_node, [escape_newlines_in_template_node])
.transformed[0];
},
});
return printer
.printNode(ts.EmitHint.Unspecified, node, source_file)
.replace(/\s*\n\s*/g, ' ')
.replace(/;+$/, '');
function escape_newlines_in_template_node(context) {
return function (node) {
if (ts.isNoSubstitutionTemplateLiteral(node) && node.rawText) {
return context.factory.createNoSubstitutionTemplateLiteral(node.text, escape_newlines(node.rawText));
}
if (ts.isTemplateHead(node) && node.rawText) {
return context.factory.createTemplateHead(node.text, escape_newlines(node.rawText),
// @ts-expect-error: internal api
node.templateFlags);
}
if (ts.isTemplateMiddle(node) && node.rawText) {
return context.factory.createTemplateMiddle(node.text, escape_newlines(node.rawText),
// @ts-expect-error: internal api
node.templateFlags);
}
if (ts.isTemplateTail(node) && node.rawText) {
return context.factory.createTemplateTail(node.text, escape_newlines(node.rawText),
// @ts-expect-error: internal api
node.templateFlags);
}
return node;
};
}
};
exports.get_node_one_line_text = get_node_one_line_text;
function escape_newlines(raw_text) {
// hack for TypeScript 3.6+ (ref: https://github.com/microsoft/TypeScript/pull/32844)
return raw_text.replace(/\n/g, '\\n');
}