{"version":3,"sources":["jsdelivr-header.js","/npm/tap-spec@5.0.0/index.js"],"names":[],"mappings":"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","file":"/npm/tap-spec@5.0.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.19.2.\n * Original file: /npm/tap-spec@5.0.0/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","var fs = require('fs');\n\nvar tapOut = require('tap-out');\nvar through = require('through2');\nvar duplexer = require('duplexer');\nvar format = require('chalk');\nvar prettyMs = require('pretty-ms');\nvar _ = require('lodash');\nvar repeat = require('repeat-string');\nvar symbols = require('figures');\n\nvar lTrimList = require('./lib/utils/l-trim-list');\n\nmodule.exports = function (spec) {\n\n  spec = spec || {};\n\n  var OUTPUT_PADDING = spec.padding || '  ';\n\n  var output = through();\n  var parser = tapOut();\n  var stream = duplexer(parser, output);\n  var startTime = new Date().getTime();\n\n  output.push('\\n');\n\n  parser.on('test', function (test) {\n\n    output.push('\\n' + pad(format.underline(test.name)) + '\\n\\n');\n  });\n\n  // Passing assertions\n  parser.on('pass', function (assertion) {\n\n    if (/# SKIP/.test(assertion.name)) {\n      var name = assertion.name.replace(' # SKIP', '')\n      name = format.cyan('- ' + name);\n\n      output.push(pad('  ' + name + '\\n'));\n    }\n    else {\n      var glyph = format.green(symbols.tick);\n      var name = format.dim(assertion.name);\n\n      output.push(pad('  ' + glyph + ' ' + name + '\\n'));\n    }\n\n  });\n\n  // Failing assertions\n  parser.on('fail', function (assertion) {\n\n    var glyph = symbols.cross;\n    var title =  glyph + ' ' + assertion.name;\n    var raw = format.cyan(prettifyRawError(assertion.error.raw));\n    var divider = _.fill(\n      new Array((title).length + 1),\n      '-'\n    ).join('');\n\n    output.push('\\n' + pad('  ' + format.red(title) + '\\n'));\n    output.push(pad('  ' + format.red(divider) + '\\n'));\n    output.push(raw);\n\n    stream.failed = true;\n  });\n\n  parser.on('comment', function (comment) {\n\n    output.push(pad('  ' + format.yellow(comment.raw)) + '\\n');\n  });\n\n  // All done\n  parser.on('output', function (results) {\n\n    output.push('\\n\\n');\n\n    // Most likely a failure upstream\n    if (results.plans.length < 1) {\n      process.exit(1);\n    }\n\n    if (results.fail.length > 0) {\n      output.push(formatErrors(results));\n      output.push('\\n');\n    }\n\n    output.push(formatTotals(results));\n    output.push('\\n\\n\\n');\n\n    // Exit if no tests run. This is a result of 1 of 2 things:\n    //  1. No tests and asserts were written\n    //  2. There was some error before the TAP got to the parser\n    if (results.tests.length === 0 &&\n        results.asserts.length === 0) {\n      process.exit(1);\n    }\n  });\n\n  // Utils\n\n  function prettifyRawError (rawError) {\n\n    return rawError.split('\\n').map(function (line) {\n\n      return pad(line);\n    }).join('\\n') + '\\n\\n';\n  }\n\n  function formatErrors (results) {\n\n    var failCount = results.fail.length;\n    var past = (failCount === 1) ? 'was' : 'were';\n    var plural = (failCount === 1) ? 'failure' : 'failures';\n\n    var out = '\\n' + pad(format.red.bold('Failed Tests:') + ' There ' + past + ' ' + format.red.bold(failCount) + ' ' + plural + '\\n');\n    out += formatFailedAssertions(results);\n\n    return out;\n  }\n\n  function formatTotals (results) {\n\n    if (results.tests.length === 0 &&\n        results.asserts.length === 0) {\n      return pad(format.red(symbols.cross + ' No tests found'));\n    }\n\n    return _.filter([\n      pad('total:     ' + results.asserts.length),\n      pad(format.green('passing:   ' + results.pass.length)),\n      results.fail.length > 0 ? pad(format.red('failing:   ' + results.fail.length)) : undefined,\n      pad('duration:  ' + prettyMs(new Date().getTime() - startTime))\n    ], _.identity).join('\\n');\n  }\n\n  function formatFailedAssertions (results) {\n\n    var out = '';\n\n    var groupedAssertions = _.groupBy(results.fail, function (assertion) {\n      return assertion.test;\n    });\n\n    _.each(groupedAssertions, function (assertions, testNumber) {\n\n      // Wrie failed assertion's test name\n      var test = _.find(results.tests, {number: parseInt(testNumber)});\n      out += '\\n' + pad('  ' + test.name + '\\n\\n');\n\n      // Write failed assertion\n      _.each(assertions, function (assertion) {\n\n        out += pad('    ' + format.red(symbols.cross) + ' ' + format.red(assertion.name)) + '\\n';\n      });\n\n      out += '\\n';\n    });\n\n    return out;\n  }\n\n  function pad (str) {\n\n    return OUTPUT_PADDING + str;\n  }\n\n  return stream;\n};\n"]}