{"version":3,"sources":["jsdelivr-header.js","/npm/oboe.js-demo@0.0.0-236/index.js"],"names":[],"mappings":"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","file":"/npm/oboe.js-demo@0.0.0-236/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/oboe.js-demo@0.0.0-236/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","\nvar express = require('express'),\n    gzippo = require('gzippo'),\n    consolidate = require('consolidate'),\n    readContent = require('./read-content.js'),\n    readPagesList = require('./read-pages-list.js'),\n    barrier = require('./barrier.js'),\n    environment = require('optimist')\n                    .demand(['env'])\n                    .argv.env,\n    \n    PORT = '8888',\n\n    isProd = (environment == 'prod'),  \n    SCRIPTS = isProd? ['/js-concat/all.js'] : require('./sourceList.js'),\n\n    CSS_STYLESHEETS = isProd? [\"all-min.css\"] : [\"all.css\"],\n        \n    LATEST_TAG = 'v1.15.2',\n    ANALYTICS_ID = 'UA-47871814-1',\n    RAW_REPO_LOCATION = 'https://raw.github.com/jimhigson/oboe.js',\n    REPO_LOCATION = 'https://github.com/jimhigson/oboe.js',\n\n    app = express();\n\nrequire('colors');\n\nconsole.log('starting up for environment', environment.blue );\n\napp.engine('handlebars', consolidate.handlebars);\napp.set('view engine', 'handlebars');\napp.set('views', __dirname + '/views');\n\n/* create <template> elements to send to the client side so it can\n * make visualisations by cloning them */\nfunction renderClientSideDemoTemplates(res, callback){\n    var DEMO_TEMPLATE_OPTIONS = {packetRadius: 15};\n\n    res.render('demoTemplate', DEMO_TEMPLATE_OPTIONS,\n        function(err, demoContentHtml) {\n            callback(demoContentHtml);\n        });\n}\n\nfunction defaultOpts(opts) {\n    opts = opts || {};\n    opts.scripts     = SCRIPTS;\n    opts.stylesheets = CSS_STYLESHEETS;\n    opts.latestTag   = LATEST_TAG;\n    opts.analyticsId = ANALYTICS_ID;\n    opts.repo = REPO_LOCATION;\n    opts.rawRepo = RAW_REPO_LOCATION;\n    opts.logoSize = 64;\n    opts.releasedJs = RAW_REPO_LOCATION + '/' + LATEST_TAG + '/dist';\n    opts.production = isProd;\n    \n    return opts;\n}\n\nfunction respondWithMarkdown(req, res, getContentFn, opts){\n    \n    var view = (req.query.mode == 'raw'? 'raw' : 'page');\n\n    opts = defaultOpts(opts);\n        \n    var bar = barrier(function(){\n        res.render(view, opts);\n        console.log('The HTML page for', req.url.blue, 'was created in', String(bar.duration).blue, 'ms');\n    });\n    \n    readPagesList(bar.add(function(pages){\n        // if any page in the pages list is the current, mark as such:\n        pages.forEach(function(page){\n            var pageUrl = '/' + page.path;\n            page.current = ( pageUrl == req.url ); \n        });\n        \n        opts.pages = pages;\n    }));\n\n    getContentFn(req, opts, bar.add(function( outline ){\n\n        opts.content = outline.content;\n        opts.heading = outline.heading;\n        opts.sections = outline.sections;\n        opts.multipleSections = outline.multipleSections;\n        res.status(outline.status);\n    }));\n\n    renderClientSideDemoTemplates(res, bar.add(function(templateHtml) {\n        \n        opts.templates = templateHtml;\n    }));\n}\n\nfunction readMarkdownFromFile( filename ) {\n   \n   return function( req, opts, callback ) {\n\n      readContent(filename, opts, callback);\n   };\n}\n\napp\n   .use(function(req, res, next) {\n      // Connect middleware:\n      // works around an issue in gzippo where requests from a load balancer for the homepage\n      // would 404 because it tries to serve as a non-existent static, non-gzipped resource.\n      // TODO: find something less buggy than gzippo\n      \n      if( !req.headers['Content-Encoding'] && req.url == '/' ) {\n         respondWithMarkdown(req, res, readMarkdownFromFile('index'));\n      } else {\n         // for all other requests, go on as usual:\n         next();\n      }\n   })\n   .use(express.favicon(__dirname + '/statics/favicons/favicon.ico'))\n   .use(gzippo.staticGzip('statics')) // gzip for static\n   .use(gzippo.staticGzip('pdf'))\n   .use(gzippo.staticGzip('bower_components')) // gzip for static\n   .use(express.compress()) // gzip for dynamic\n   .get('/', function(req, res){\n        respondWithMarkdown(req, res, readMarkdownFromFile('index'), {   \n           home: true,\n           twitter: true\n        });\n   })\n   .get('/:page', function(req, res){\n       respondWithMarkdown(req, res, readMarkdownFromFile(req.params.page));\n   });\n\n// allow single demos to be viewed but only if we are in dev:\nif( environment == 'dev' ) {\n   app.get('/demo/:demo', function(req, res){\n        \n       function generateMarkdownForSingleDemo(req, _opts, callback){\n           var demoName = req.params.demo;\n           \n           callback({\n               content:'<figure data-demo=\"' + demoName  + '\"></figure>'\n           ,   heading: {text:'Demo: ' + demoName}\n           ,   sections:[]\n           ,   status:200\n           });\n       }\n        \n       respondWithMarkdown(req, res, generateMarkdownForSingleDemo);\n   })\n}\n\n// As a catch-all generate a 404.\napp.use(function(req,res){\n   console.warn('Unrecognised path; catch-all serving 404:'.red, req.url);\n   \n   respondWithMarkdown(req, res, readMarkdownFromFile('404'));\n});\n\napp.listen(PORT);\n\nconsole.log('started on port', PORT.blue);\n"]}