{"version":3,"sources":["jsdelivr-header.js","/npm/appsngen-viewer@2.0.7/src/server.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,CCHC,WACG,aASA,QAAQ,UAAU,aAAa,UAAU,cAAgB,GACzD,IAAI,EAAe,QAAQ,yBACvB,EAAU,QAAQ,mBAAmB,aA+GzC,EAAa,kBA9GK,SAAS,GACvB,IAYkB,EAZd,EAAU,QAAQ,WAClB,EAAc,QAAQ,eACtB,EAAS,IACT,EAAO,QAAQ,QACf,EAAO,QAAQ,QACf,EAAQ,QAAQ,SAChB,EAAU,QAAQ,oBAClB,EAAS,QAAQ,kBAAR,CAA2B,QACpC,EAAa,QAAQ,eACrB,EAAO,QAAQ,QACf,EAAO,QAAQ,eACf,EAAmB,QAAQ,qBAC3B,EAAU,GACd,GAAyB,SAAtB,EAAO,WAIN,OAHA,EAAU,SAAW,EAAO,eAAiB,WAC7C,EAAO,EAAK,cACZ,EAAO,KAAK,EAAS,CAAC,GAAI,EAAK,QAGnC,GAA0B,SAAvB,EAAO,YAIN,OAHA,EAAU,SAAW,EAAO,gBAAkB,WAC9C,EAAO,EAAK,cACZ,EAAO,KAAK,EAAS,CAAC,GAAI,EAAK,QAInC,EAAO,IAAI,KACX,EAAO,OAAO,OAAO,EAAK,YAC1B,EAAO,IAAI,QAAS,EAAK,KAAK,UAAW,qBACzC,EAAO,IAAI,cAAe,QAE1B,QAAQ,GAAG,qBAAqB,SAAU,GACtC,IAAI,EAAO,EAAK,SAChB,EAAO,MAAM,EAAK,EAAI,QAAS,EAAI,MAAO,CAAC,GAAI,EAAK,OACxD,IAyBA,EAAO,IAAI,WAAY,EAAO,gBAC9B,EAAO,IAAI,YAAa,EAAO,iBAE/B,EAAO,IAAI,EAAW,WAAW,CAC7B,UAAU,KAEd,EAAO,IAAI,EAAW,QACtB,EAAO,IAAI,EAAiB,KAI5B,EAAO,IAAI,IAAK,EAAQ,MACxB,EAAO,IAAI,aAAc,EAAQ,WACjC,EAAO,IAAI,aAAc,EAAQ,oBAIjC,EAAO,IAAI,YAAa,EAAQ,eAChC,EAAO,KAAK,WAAY,EAAQ,QAChC,EAAO,IAAI,WAAY,EAAQ,QAI/B,EAAO,IAAI,qBAAsB,EAAQ,mBACzC,EAAO,OAAO,qBAAsB,EAAQ,cAC5C,EAAO,IAAI,qBAAsB,EAAQ,iBAKzC,EAAO,IAAI,8DAA+D,EAAQ,eAClF,EAAO,IAAI,8DAA+D,EAAQ,WAClF,EAAO,IAAI,qDAAsD,EAAQ,oBAEzE,EAAO,IAAI,KAAM,EAAQ,WAEzB,EAAO,KA5De,SAAU,EAAK,EAAK,EAAK,GAC3C,IAAI,EAAO,EAAK,SAChB,EAAO,MAAM,sBAAuB,EAAI,QAAS,EAAI,MAAQ,CAAC,GAAI,EAAK,QACvE,EAAI,UAAY,EAAK,MACrB,EAAK,EACT,IAwDA,EAAO,KAtDkB,SAAU,EAAK,EAAK,EAAK,GACd,QAA7B,EAAI,OAAO,eACV,EAAI,OAAO,KACX,EAAI,OAAO,WAAY,CAAE,GAAI,EAAI,UAAW,QAAS,EAAQ,UAAW,SAAkB,EAAK,GACvF,EAIA,EAAK,GAHL,EAAI,KAAK,EAKjB,KAGA,EAAI,KAAK,IAAK,+BAAiC,EAAI,UAE3D,IAyCA,EAAK,aAAa,GAAQ,OAAO,EAAO,IAAI,aAAa,WACrD,EAAO,KAAK,4BAA8B,EAAO,WAAa,IAAM,EAAO,eAC/E,IAEG,EAAO,SACN,EAAM,aAAa,EAAO,QAAS,GAAQ,OAAO,EAAO,IAAI,cAAc,WACvE,EAAO,KAAK,6BAA+B,EAAO,WAAa,IAAM,EAAO,gBAChF,GAER,GAGJ,CA5HA","file":"/npm/appsngen-viewer@2.0.7/src/server.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/appsngen-viewer@2.0.7/src/server.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 * Created by Ruslan_Dulina on 7/7/2014.\r\n */\r\n(function () {\r\n    'use strict';\r\n    //require('newrelic');\r\n    /**\r\n     * node js warning: possible EventEmitter memory leak detected if 11 listeners added\r\n     * more then 11 modules used logger module, so we must set max listeners more then 11.\r\n     * given the number of modules in project 25 listeners the best number for working all modules together\r\n     * @type {number}\r\n     * @private\r\n     */\r\n    require('events').EventEmitter.prototype._maxListeners = 25;\r\n    var serverConfig = require('./serverconfiguration');\r\n    var storage = require('./globalstorage').getStorage();\r\n    var  initServer = function(params) {\r\n        var express = require('express'),\r\n            compression = require('compression'),\r\n            server = express(),\r\n            http = require('http'),\r\n            path = require('path'),\r\n            https = require('https'),\r\n            routers = require('./routers/router'),\r\n            logger = require('./logger/logger')(module),\r\n            bodyParser = require('body-parser'),\r\n            Guid = require('guid'),\r\n            cons = require('consolidate'),\r\n            expressValidator = require('express-validator'),\r\n            message = '', guid;\r\n        if(params.statushttp === 'open'){\r\n            message = 'Port: ' + params.viewerPortHttp + ' in use.';\r\n            guid = Guid.create();\r\n            logger.warn(message, {id: guid.value});\r\n            return;\r\n        }\r\n        if(params.statushttps === 'open'){\r\n            message = 'Port: ' + params.viewerPortHttps + ' in use.';\r\n            guid = Guid.create();\r\n            logger.warn(message, {id: guid.value});\r\n            return;\r\n        }\r\n\r\n        server.use(compression());\r\n        server.engine('html',cons.underscore);\r\n        server.set('views', path.join(__dirname, '../content/views'));\r\n        server.set('view engine', 'html');\r\n\r\n        process.on('uncaughtException', function (err) {\r\n            var guid = Guid.create();\r\n            logger.error(err, err.message, err.stack, {id: guid.value});\r\n        });\r\n        var globalLogErrors = function (err, req, res, next) {\r\n            var guid = Guid.create();\r\n            logger.error('Unhandled exception', err.message, err.stack,  {id: guid.value});\r\n            err.messageId = guid.value;\r\n            next(err);\r\n        };\r\n\r\n        var globalErrorHandler = function (err, req, res, next) {\r\n            if(req.method.toUpperCase() === 'GET') {\r\n                res.status(500);\r\n                res.render('500.html', { id: err.messageId, baseUrl: storage.baseUrl }, function callback(err, html) {\r\n                    if(!err){\r\n                        res.send(html);\r\n                    }\r\n                    else{\r\n                        next(err);\r\n                    }\r\n                });\r\n            }\r\n            else{\r\n                res.send(500, 'Internal server error. Id = ' + err.messageId);\r\n            }\r\n        };\r\n\r\n        server.set('porthttp', params.viewerPortHttp);\r\n        server.set('porthttps', params.viewerPortHttps);\r\n\r\n        server.use(bodyParser.urlencoded({\r\n            extended: true\r\n        }));\r\n        server.use(bodyParser.json());\r\n        server.use(expressValidator([]));\r\n        /**\r\n         * Viewer resources, widget resources and server ping without tokens.\r\n         */\r\n        server.get('/', routers.ping);\r\n        server.get('/heartbeat', routers.heartbeat);\r\n        server.get('/content/*', routers.getViewerResources);\r\n        /**\r\n         * Identity token check\r\n         */\r\n        server.all('/widgets*', routers.authorization);\r\n        server.post('/widgets', routers.upload);\r\n        server.put('/widgets', routers.update);\r\n        /**\r\n         * check for accessory widget to organization\r\n         */\r\n        server.all('/widgets/:widgetId', routers.preconditionCheck);\r\n        server.delete('/widgets/:widgetId', routers.deleteWidget);\r\n        server.get('/widgets/:widgetId', routers.downloadArchive);\r\n\r\n        /**\r\n         * Widget token check\r\n         */\r\n        server.all('/organizations/:organizationId/widgets/:widgetId/index.html', routers.authorization);\r\n        server.get('/organizations/:organizationId/widgets/:widgetId/index.html', routers.getWidget);\r\n        server.get('/organizations/:organizationId/widgets/:widgetId/*', routers.getWidgetResources);\r\n\r\n        server.get('/*', routers.unhandled);\r\n\r\n        server.use(globalLogErrors);\r\n        server.use(globalErrorHandler);\r\n\r\n        http.createServer(server).listen(server.get('porthttp'), function () {\r\n            logger.info('Server running at http://' + params.viewerHost + ':' + params.viewerPortHttp);\r\n        });\r\n\r\n        if(params.options){\r\n            https.createServer(params.options, server).listen(server.get('porthttps'), function () {\r\n                logger.info('Server running at https://' + params.viewerHost + ':' + params.viewerPortHttps);\r\n            });\r\n        }\r\n    };\r\n\r\n    serverConfig.readServerConfig(initServer);\r\n}());\r\n\r\n\r\n"]}