{"version":3,"sources":["jsdelivr-header.js","/npm/browser-run@11.0.0/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,IAAI,KAAO,QAAQ,QACf,KAAO,QAAQ,QACf,MAAQ,QAAQ,iBAAiB,MACjC,QAAU,QAAQ,WAClB,OAAS,QAAQ,YACjB,GAAK,QAAQ,MACb,IAAM,QAAQ,mBAAR,GACN,QAAU,QAAQ,WAClB,OAAS,QAAQ,gBACjB,SAAW,QAAQ,YACnB,aAAe,QAAQ,sBACvB,YAAc,QAAQ,kBACtB,OAAS,QAAQ,SAErB,IACE,GAAG,SAAS,UAAY,sBAC1B,CAAE,MAAO,GACP,QAAQ,MAAM,sDAChB,CAUA,SAAS,OAAQ,GACf,IAAI,GAAQ,EACR,EAAQ,SAAQ,SAAU,GACxB,GAAoC,IAA3B,EAAM,WAAW,SAAc,GAAQ,GACpD,KAAK,MAAM,EACb,IAAG,WACG,GAAO,EAAI,KAAK,QAAS,IAAI,MAAM,wBACvC,KAAK,MAAM,KACb,IACI,EAAS,UACb,EAAM,KAAK,EAAO,qBAClB,IAgDI,EAhDA,EAAS,UACT,EAAM,OAAO,EAAO,GAEpB,EAAc,EAAK,MAAQ,QAAQ,KAAK,QAAQ,KAAM,EAAK,OAE3D,EAAS,KAAK,cAAa,SAAU,EAAK,GAC5C,GAAmB,eAAf,EAAK,MAAwB,CAC/B,GAAI,gBAAgB,KAAK,EAAI,KAI3B,OAHA,EAAI,UAAU,eAAgB,0BAC9B,EAAI,UAAU,gBAAiB,iBAC/B,EAAO,mBAAmB,KAAK,GAIjC,GAAe,KAAX,EAAI,IAEN,YADA,GAAG,iBAAiB,UAAY,sBAAsB,KAAK,EAG/D,MAAO,GAAmB,SAAf,EAAK,OACC,KAAX,EAAI,IAEN,YADA,EAAO,mBAAmB,KAAK,aAAa,CAAC,kBAAkB,KAAK,GAKxE,MAAe,QAAX,EAAI,KACN,EAAI,KAAK,KAAI,SAAU,GACrB,EAAO,KAAK,EACd,KACO,EAAI,GAAG,MAAO,EAAI,IAAI,KAAK,KAErB,gBAAX,EAAI,KACN,EAAI,UAAU,eAAgB,+BAC9B,GAAG,iBAAiB,UAAY,uBAAuB,KAAK,IAG1D,EAAK,YACP,SAAS,CAAE,KAAM,EAAK,QAAtB,CAAgC,EAAK,GAGnC,GAAe,UAAY,EAAI,IAAI,OAAO,EAAE,GACrC,EAAY,EAAK,QAG5B,EAAI,IAAI,gBACV,IAwCA,OAvCA,YAAY,GAIR,EAAK,KACP,EAAO,OAAO,EAAK,MAEnB,EAAO,QAAO,WACZ,IAAI,EAAU,EAAO,UACrB,GAAK,EAAL,CACA,IAAI,EAAO,EAAQ,KAEnB,OAAO,OAAO,EAAM,CAClB,IAAK,oBAAsB,EAC3B,KAAM,EAAK,QACX,OAAQ,KACN,SAAS,EAAK,GAChB,GAAI,EAAK,OAAO,EAAI,KAAK,QAAS,IAClC,EAAU,GAGE,OACV,EAAQ,YAAY,QACpB,EAAQ,KAAK,IAGf,EAAQ,GAAG,QAAQ,SAAU,EAAM,GACjC,IAAM,EAAO,SAAU,CAAE,MAAO,GAAI,CACpC,EAAI,KAAK,OAAQ,EAAM,EACzB,GACF,GArBoB,CAsBtB,IAGF,EAAI,KAAO,WACT,IAAM,EAAO,SAAW,CAAE,MAAO,GAAI,CACjC,GAAS,EAAQ,MACvB,EAEO,CACT,CAzGA,OAAO,QAAU,SAAU,GAKzB,OAJK,IAAM,EAAO,CAAC,GACf,iBAAmB,IAAM,EAAO,CAAE,KAAM,IACvC,EAAK,UAAS,EAAK,QAAU,YAC7B,EAAK,QAAO,EAAK,MAAQ,cACvB,OAAO,EAChB","file":"/npm/browser-run@11.0.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/browser-run@11.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 http = require('http');\nvar path = require('path');\nvar spawn = require('child_process').spawn;\nvar through = require('through');\nvar duplex = require('duplexer');\nvar fs = require('fs');\nvar xws = require('xhr-write-stream')();\nvar enstore = require('enstore');\nvar launch = require('./lib/launch');\nvar ecstatic = require('ecstatic');\nvar injectScript = require('html-inject-script');\nvar destroyable = require('server-destroy');\nvar extend = require('xtend')\n\ntry {\n  fs.statSync(__dirname + '/static/reporter.js')\n} catch (_) {\n  console.error('Reporter script missing. Run `npm run build` first.')\n}\n\nmodule.exports = function (opts) {\n  if (!opts) opts = {};\n  if ('number' == typeof opts) opts = { port: opts };\n  if (!opts.browser) opts.browser = 'electron';\n  if (!opts.input) opts.input = 'javascript';\n  return runner(opts);\n};\n\nfunction runner (opts) {\n  var empty = true;\n  var input = through(function (chunk) {\n    if (empty && chunk.toString().trim() != '') empty = false;\n    this.queue(chunk);\n  }, function () {\n    if (empty) dpl.emit('error', new Error('javascript required'));\n    this.queue(null);\n  });\n  var bundle = enstore();\n  input.pipe(bundle.createWriteStream());\n  var output = through();\n  var dpl = duplex(input, output);\n\n  var mockHandler = opts.mock && require(path.resolve('./', opts.mock))\n\n  var server = http.createServer(function (req, res) {\n    if (opts.input === 'javascript') {\n      if (/^\\/bundle\\.js/.test(req.url)) {\n        res.setHeader('content-type', 'application/javascript');\n        res.setHeader('cache-control', 'no-cache');\n        bundle.createReadStream().pipe(res);\n        return;\n      }\n\n      if (req.url == '/') {\n        fs.createReadStream(__dirname + '/static/index.html').pipe(res);\n        return;\n      }\n    } else if (opts.input === 'html') {\n      if (req.url == '/') {\n        bundle.createReadStream().pipe(injectScript(['/reporter.js'])).pipe(res);\n        return;\n      }\n    }\n\n    if (req.url == '/xws') {\n      req.pipe(xws(function (stream) {\n        stream.pipe(output);\n      }));\n      return req.on('end', res.end.bind(res));\n    }\n    if (req.url == '/reporter.js') {\n      res.setHeader('content-type', 'application/javascript');\n      fs.createReadStream(__dirname + '/static/reporter.js').pipe(res);\n      return;\n    }\n    if (opts.static) {\n      ecstatic({ root: opts.static })(req, res);\n      return;\n    }\n    if (mockHandler && '/mock' === req.url.substr(0,5)){\n        return mockHandler(req, res);\n    }\n\n    res.end('not supported');\n  });\n  destroyable(server);\n\n  var browser;\n\n  if (opts.port) {\n    server.listen(opts.port);\n  } else {\n    server.listen(function () {\n      var address = server.address();\n      if (!address) return; // already closed\n      var port = address.port;\n\n      launch(extend(opts, {\n        loc: 'http://localhost:' + port,\n        name: opts.browser,\n        bundle: bundle\n      }), function(err, _browser){\n        if (err) return dpl.emit('error', err);\n        browser = _browser;\n\n        // electron\n        if (browser.pipe) {\n          browser.setEncoding('utf8');\n          browser.pipe(output);\n        }\n\n        browser.on('exit', function (code, signal) {\n          try { server.destroy() } catch (e) {}\n          dpl.emit('exit', code, signal);\n        });\n      });\n    });\n  }\n\n  dpl.stop = function () {\n    try { server.destroy(); } catch (e) {}\n    if (browser) browser.kill();\n  };\n\n  return dpl;\n}\n"]}