UNPKG

jest-allure2-reporter

Version:
80 lines 3.86 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.typescript = void 0; const jest_docblock_1 = require("jest-docblock"); const utils_1 = require("../../utils"); const common_1 = require("../common"); const ASTHelper_1 = require("./ASTHelper"); function resolveOptions(value) { if (typeof value === 'boolean') { return { enabled: value, extractDocblock: value }; } return { enabled: true, extractDocblock: false, ...value, }; } const typescript = async ({ globalConfig, $, value }) => { const options = resolveOptions(value); const ts = options.enabled ? await (0, utils_1.importFrom)('typescript', globalConfig.rootDir).then((resolution) => resolution.exports, () => null) : null; function canProcess(location) { const { fileName, lineNumber, columnNumber } = location; return Boolean(fileName && lineNumber && columnNumber && (0, common_1.detectJS)(fileName)); } const helper = new ASTHelper_1.ASTHelper(ts); return { name: 'typescript', extractSourceCode(location, includeComments) { return ts && canProcess(location) ? $.getFileNavigator(location.fileName).then((navigator) => { if (!navigator) return; if (!navigator.jump(location.lineNumber)) return; const lineNumber = location.lineNumber; const columnNumber = Math.min(location.columnNumber, navigator.readLine().length); const ast = helper.getAST(location.fileName) || helper.parseAST(location.fileName, navigator.getContent()); const expression = helper.findNodeInAST(ast, lineNumber, columnNumber); const codeStart = includeComments ? expression.getFullStart() : expression.getStart(); const code = (0, utils_1.autoIndent)(ast.text.slice(codeStart, expression.getEnd()).trim()); navigator.jumpToPosition(codeStart); const [startLine] = navigator.getPosition(); navigator.jumpToPosition(expression.getEnd()); const [endLine] = navigator.getPosition(); return { code, language: (0, common_1.detectJS)(location.fileName), fileName: location.fileName, startLine, endLine, }; }) : undefined; }, extractDocblock(context) { return ts && options.extractDocblock && canProcess(context) ? $.getFileNavigator(context.fileName).then((navigator) => { if (!navigator) return; if (!navigator.jump(context.lineNumber)) return; const lineNumber = context.lineNumber; const columnNumber = Math.min(context.columnNumber, navigator.readLine().length); const ast = helper.getAST(context.fileName) || helper.parseAST(context.fileName, navigator.getContent()); const expression = helper.findNodeInAST(ast, lineNumber, columnNumber); const fullStart = expression.getFullStart(); const start = expression.getStart(); const docblock = (0, jest_docblock_1.extract)(ast.text.slice(fullStart, start).trim()); return docblock ? (0, jest_docblock_1.parseWithComments)(docblock) : undefined; }) : undefined; }, }; }; exports.typescript = typescript; //# sourceMappingURL=index.js.map