{"version":3,"sources":["jsdelivr-header.js","/npm/live.io@0.4.1/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACDA,IAAI,KAAO,QAAQ,QACf,MAAQ,QAAQ,SACjB,KAAK,QAEJ,KAAK,QAAQ,KAAK,UAGlB,KAAK,QAAS,CACV,MACA,OACA,MACA,OACA,SACA,SACA,UACA,QACA,OACA,OACA,QACA,OACA,QACA,WACA,YACA,SACA,SACA,aACA,WACA,QACA,WACA,SACA,YACA,cACA,QACA,SACA,WAIR,MAAM,QAAU,KAAK,QAGrB,IAAI,QAAU,QAAQ,WAClB,SAAW,QAAQ,aACnB,SAAW,QAAQ,YACnB,iBAAmB,QAAQ,qBAC3B,QAAU,QAAQ,mBAClB,aAAe,QAAQ,iBAG3B,OAAO,QAAU,SAAS,GACtB,IACM,GADF,EAAU,GAAW,CAAC,GACN,MAAQ,EAAQ,KAAO,cACrC,EAAQ,EAAQ,OAAS,IAAI,QAAQ,YACrC,EAAmB,EAAQ,cAAgB,aAC3C,EAAgB,EAAQ,eAAiB,GACzC,EAAS,EAAQ,OAEnB,EAAM,UAiGV,OA9FA,EAAI,IAAI,QAAQ,CACZ,mBAAmB,EACnB,QAAQ,EACR,OAAQ,EACR,MAAO,KAIX,EAAI,IAAI,SAAS,cACjB,EAAI,IAAI,SAAS,WAEjB,EAAI,OAAS,SAAS,GAClB,IAAI,EAIA,EAHA,EAGS,MAAM,aAAa,EAAQ,MAF3B,KAAK,aAAa,MAG/B,IAAI,EAAK,SAAS,OAAO,GAoBzB,SAAS,EAAoB,EAAI,GAC7B,EAAI,OAAS,SACb,EAAI,IAAM,EACV,EAAI,gBAAkB,WAClB,SAAG,EAAI,OAA6B,IAArB,EAAI,KAAK,UAG5B,EACA,EAAI,OAAS,SAAS,GAGlB,OADA,EAAI,OAAS,EACN,CACX,EACA,EAAI,KAAO,SAAS,GAMhB,MALa,iBAAH,GAAgB,EAAE,SACxB,EAAE,OAAS,EAAI,QAGnB,EAAI,KAAK,OAAQ,GACV,CACX,EACA,EAAI,KAAO,EAAI,IACnB,CAxCA,EAAG,IAAI,iBAAiB,UAAU,CAC9B,aAAc,EACd,IAAa,EACb,OAAa,EACb,MAAa,EACb,QAIJ,SAA4B,EAAM,GAC9B,EAAO,MAAM,EACjB,EALI,KAMJ,SAAyB,EAAM,EAAS,EAAO,GAC3C,GAAG,EACC,MAAM,IAAI,MAAM,GACpB,EAAO,MAAM,EACjB,KA0BA,IAAI,EAAS,QAAQ,mBAAR,GACb,EAAO,GAAG,KAAK,SAAU,EAAM,EAAM,GACjC,IAAI,EAAO,EAAK,QAAS,EAAM,EAAK,QAChC,EAAM,EAAK,KAAK,OAAO,QAE3B,EAAoB,EAAI,EAAK,MAC7B,EAAI,IAAM,EACV,EAAI,KAAO,EAEX,EAAI,OAAO,EAAK,EAAK,MACrB,GACJ,IACA,EAAG,IAAI,GAEP,EAAG,QAAQ,GAAG,cAAc,SAAU,GAClC,IAAI,EAAM,EAAO,OAAO,QAExB,EAAoB,EAAK,EAAI,IAAK,EAAI,IAAK,GAC3C,EAAI,IAAM,UACV,EAAI,OAAO,EAAK,EAAI,IAAK,EAAI,IAAK,GAElC,EAAO,GAAG,cAAc,WACpB,IAAI,EAAM,EAAO,OAAO,QACxB,EAAoB,EAAK,EAAI,IAAK,EAAI,IAAK,GAC3C,EAAI,IAAM,aACV,EAAI,OAAO,EAAK,EAAI,IAAK,EAAI,IAAK,EACtC,GACJ,IAEA,KAAK,IAAI,WAAY,GACrB,EAAO,OAAO,EAClB,EACA,EAAI,IAAI,SAAU,GACX,CACX","file":"/npm/live.io@0.4.1/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/live.io@0.4.1/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","/**\r\n * Combine Express, Socket and Passport\r\n *\r\n * Created by Akshaya Shanbhogue on 2/10/2015.\r\n */\r\nvar http = require('http'),\r\n    https = require('https');\r\nif(http.METHODS) {\r\n    // TODO - check if socket already exists\r\n    http.METHODS.push('socket');\r\n}\r\nelse {\r\n    http.METHODS= [\r\n        'get',\r\n        'post',\r\n        'put',\r\n        'head',\r\n        'delete',\r\n        'socket', // ADDED NEW METHOD 'socket'\r\n        'options',\r\n        'trace',\r\n        'copy',\r\n        'lock',\r\n        'mkcol',\r\n        'move',\r\n        'purge',\r\n        'propfind',\r\n        'proppatch',\r\n        'unlock',\r\n        'report',\r\n        'mkactivity',\r\n        'checkout',\r\n        'merge',\r\n        'm-search',\r\n        'notify',\r\n        'subscribe',\r\n        'unsubscribe',\r\n        'patch',\r\n        'search',\r\n        'connect'\r\n    ];\r\n}\r\n// COPY to HTTPS!\r\nhttps.METHODS = http.METHODS;\r\n\r\n\r\nvar express = require('express'),\r\n    socketio = require('socket.io'),\r\n    passport = require('passport'),\r\n    passportSocketIo = require('passport.socketio'),\r\n    session = require('express-session'),\r\n    cookieParser = require('cookie-parser');\r\n\r\n\r\nmodule.exports = function(options){\r\n    var options = options || {}\r\n        , key = options.name || options.key || 'connect.sid'\r\n        , store = options.store || new session.MemoryStore\r\n        , liveCookieParser = options.cookieParser || cookieParser\r\n        , sessionSecret = options.sessionSecret || ''\r\n        , secure = options.secure;\r\n\r\n    var exp = express();\r\n\r\n    // Express MongoDB session storage\r\n    exp.use(session({\r\n        saveUninitialized: true,\r\n        resave: true,\r\n        secret: sessionSecret,\r\n        store: store\r\n    }));\r\n\r\n    // use passport session\r\n    exp.use(passport.initialize());\r\n    exp.use(passport.session());\r\n\r\n    exp.listen = function(port){\r\n        var server;\r\n        if(!secure)\r\n            server = http.createServer(this);\r\n        else\r\n            server = https.createServer(secure, this);\r\n        var io = socketio.listen(server);\r\n\r\n        io.use(passportSocketIo.authorize({\r\n            cookieParser: liveCookieParser,\r\n            key:         key,       // the name of the cookie where express/connect stores its session_id\r\n            secret:      sessionSecret,    // the session_secret to parse the cookie\r\n            store:       store,        // we NEED to use a sessionstore. no memorystore please\r\n            success:     onAuthorizeSuccess,  // *optional* callback on success - read more below\r\n            fail:        onAuthorizeFail     // *optional* callback on fail/error - read more below\r\n        }));\r\n\r\n        function onAuthorizeSuccess(data, accept){\r\n            accept(null, true);\r\n        }\r\n        function onAuthorizeFail(data, message, error, accept){\r\n            if(error)\r\n                throw new Error(message);\r\n            accept(null, false);\r\n        }\r\n\r\n        function makeRequestResponse(req,res){\r\n            req.method = \"socket\";\r\n            req.app = exp;\r\n            req.isAuthenticated = function(){\r\n                if(req.user && req.user.logged_in!==false)\r\n                    return true;\r\n                return false;\r\n            }\r\n            res.status = function(stat){\r\n                // NO-OP/PASS-THROUGH\r\n                res.status = stat;\r\n                return res;\r\n            };\r\n            res.send = function(a){\r\n                if(typeof a==\"object\" && !a.status){\r\n                    a.status = res.status;\r\n                }\r\n                // send data with event \"data\"\r\n                res.emit('data', a);\r\n                return res;\r\n            }\r\n            res.json = res.send;\r\n        }\r\n\r\n        var router = require('socket.io-events')();\r\n        router.on('*', function (sock, args, next) {\r\n            var name = args.shift(), msg = args.shift();\r\n            var req = sock.sock.client.request;\r\n\r\n            makeRequestResponse(req,sock.sock);\r\n            req.url = name;\r\n            req.body = msg;\r\n\r\n            exp.handle(req, sock.sock);\r\n            next();\r\n        });\r\n        io.use(router);\r\n\r\n        io.sockets.on('connection', function (socket) {\r\n            var req = socket.client.request;\r\n\r\n            makeRequestResponse(req, req.res? req.res: socket);\r\n            req.url = 'connect';\r\n            exp.handle(req, req.res? req.res: socket);\r\n\r\n            socket.on('disconnect', function(){\r\n                var req = socket.client.request;\r\n                makeRequestResponse(req, req.res? req.res: socket);\r\n                req.url = 'disconnect';\r\n                exp.handle(req, req.res? req.res: socket);\r\n            });\r\n        });\r\n\r\n        this.set('socketio', io);\r\n        server.listen(port);\r\n    };\r\n    exp.set('server', exp);\r\n    return exp;\r\n};"]}