%PDF- %PDF-
Direktori : /usr/share/nodejs/tap/lib/ |
Current File : //usr/share/nodejs/tap/lib/clean-yaml-object.js |
'use strict' const cleanYamlObject = require('clean-yaml-object') const path = require('path') const Module = require('module') const fs = require('fs') const binpath = path.resolve(__dirname, '../bin') const stack = require('./stack.js') const Domain = require('domain').Domain const hasOwn = (obj, key) => Object.prototype.hasOwnProperty.call(obj, key) const cleanTapYamlObject = object => { if (hasOwn(object, 'stack') && !hasOwn(object, 'at')) object.at = stack.parseLine(object.stack.split('\n')[0]) const file = object.at && object.at.file && path.resolve(object.at.file) if (file && (file.indexOf(__dirname) === 0 || file.indexOf(binpath) === 0)) delete object.at if (file && object.at && object.at.file && object.at.line && !object.source) { const content = (() => { try { return Module.wrap(fs.readFileSync(file)) } catch (er) {} })() if (content) { const csplit = (content.split('\n')[object.at.line - 1] || '').trim() if (csplit) object.source = csplit + '\n' } } return cleanYamlObject(object, yamlFilter) } const yamlFilter = (propertyName, isRoot, source, target) => source instanceof Domain ? false : !isRoot ? true : propertyName === 'stack' ? ( (source.stack ? target.stack = source.stack : false), false) : !(propertyName === 'todo' || propertyName === 'time' || /^_?tapChild/.test(propertyName) || /^tapStream/.test(propertyName) || /^tapMochaTest/.test(propertyName) || propertyName === 'cb' || propertyName === 'name' || propertyName === 'indent' || propertyName === 'skip' || propertyName === 'bail' || propertyName === 'grep' || propertyName === 'grepInvert' || propertyName === 'only' || propertyName === 'diagnostic' || propertyName === 'buffered' || propertyName === 'parent' || propertyName === 'domainEmitter' || propertyName === 'domainThrew' || propertyName === 'domain' || (propertyName === 'at' && !source.at)) module.exports = cleanTapYamlObject