{"version":3,"sources":["jsdelivr-header.js","/npm/nodewebx-server-lite@0.3.28/index.js"],"names":[],"mappings":"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","file":"/npm/nodewebx-server-lite@0.3.28/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/nodewebx-server-lite@0.3.28/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","/**\n * User: garcia.wul (garcia.wul@alibaba-inc.com)\n * Date: 2014/07/26\n * Time: 09:46\n *\n */\n\nvar fs = require(\"fs\");\nvar path = require(\"path\");\nvar http = require(\"http\");\nvar https = require('https');\nvar util = require(\"util\");\nvar dns = require(\"dns\");\nvar os = require(\"os\");\nvar nodeproxy = require(\"nodeproxy\");\nvar express = require(\"express\");\nvar morgan  = require('morgan');\nvar _ = require(\"underscore\");\nvar Handlebars = require(\"handlebars\");\nvar Q = require(\"q\");\nvar Engine = require(\"./src/webx/engine\");\nvar Route = require(\"./src/webx/route\");\nvar StaticServe = require(\"./src/static-serve\");\nvar configServe = require(\"./src/config-serve\");\nvar extend = require(\"extend\");\nvar favicon = require('serve-favicon');\nvar mimeTypes = require(\"./src/mime-types\");\nvar runtime = require(\"./src/runtime\");\nvar RedirectService = require(\"./src/redirect-service\");\nvar bodyParser = require('body-parser');\nvar injection = require(\"./src/injection\");\nvar cookieParser = require('cookie-parser');\nvar less = require('less-middleware');\nvar jsxCompile = require('jsx4express');\nvar vfs = require('vinyl-fs');\nvar Live = require('./src/live');\n\nvar Argument = require(\"./src/argument\");\nvar argument = new Argument();\n\nvar Base = require(\"nodewebx-cli\").Base;\n\nvar Index = function(options) {\n    var self = this;\n    Base.call(self, options);\n};\nutil.inherits(Index, Base);\n\nvar isAbsolutePath = function(filePath) {\n    return path.resolve(filePath) === path.normalize(filePath);\n};\n\nIndex.prototype.execute = function() {\n    var self = this;\n    var deferred = Q.defer();\n    var argv = argument.initParser();\n    var config = {\n        port: argv.port,\n        webx: {}\n    };\n\n    if (argv.configFile && fs.existsSync(argv.configFile)) {\n        var readConfig = require(require.resolve(fs.realpathSync(argv.configFile)));\n        if (_.isObject(readConfig)) {\n            extend(true, config, readConfig);\n        }\n    }\n\n    var engine = new Engine({\n        webx: config.webx\n    });\n    var app = express();\n    app.set(\"trust proxy\", true);\n    app.set(\"json spaces\", 4);\n\n    // disable cache\n    app.set(\"view cache\", false);\n    app.disable('etag');\n    app.disable('x-powered-by');\n    app.use(require(\"./src/cross-domain\"));\n    app.use(require(\"./src/http-cache\"));\n\n    // CORS access for files\n    app.use(function(req, res, next){\n        res.setHeader('Access-Control-Allow-Origin', '*');\n        res.setHeader('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');\n        res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With, Accept, x-csrf-token, origin');\n        if ('OPTIONS' == req.method) return res.end();\n\n        next();\n    });\n\n    // favicon\n    app.use(favicon(path.join(__dirname, \"static\", \"logo.ico\")));\n\n    // mimes.type\n    app.use(mimeTypes);\n\n    // log\n    app.use(morgan(\"dev\"));\n\n    // body-parser\n    // parse application/x-www-form-urlencoded\n    app.use(bodyParser.urlencoded({\n        extended: false\n    }));\n\n    // parse application/json\n    app.use(bodyParser.json({\n        strict: false\n    }));\n\n    app.use(bodyParser.raw());\n    app.use(bodyParser.text());\n\n    app.use(cookieParser());\n\n    app.use(configServe(readConfig ? config : null));\n\n    if (_.isObject(config.webx)) {\n        app.set(\"view engine\", \"vm\");\n        // template engine\n        app.engine(\"vm\", nodeproxy(engine.render, engine));\n        // route\n        var route = new Route({\n            webx: config.webx,\n            app: app\n        });\n        route.init();\n    }\n\n    // static serve\n    var staticServe = new StaticServe({\n        app: app\n    });\n    if (!_.isArray(config.staticServe)) {\n        config.staticServe = [];\n    }\n    if (!_.some(config.staticServe, function(item) {\n        return path.normalize(item.dirPath) === process.cwd()\n    })) {\n        config.staticServe.unshift({\n            dirPath: process.cwd()\n        });\n    }\n\n    // dirPath fix\n    var cfg = config.staticServe[config.staticServe.length - 1];\n    var dirPath = (cfg.dirPath || '').replace(/\\\\/g, '/');\n    var reqPath = cfg.path || '';\n    var pathIndex = dirPath.indexOf(reqPath);\n    if (pathIndex > 0 &&\n        pathIndex + reqPath.length === dirPath.length) {\n        dirPath = dirPath.substring(0, pathIndex);\n    }\n\n    // less\n    app.use(less(dirPath));\n\n    // jsx\n    app.use(jsxCompile(dirPath));\n\n    staticServe.init(config.staticServe);\n\n    // virtual hosts\n    if (_.isArray(config.virtualHosts)) {\n        var redirectService = new RedirectService();\n        redirectService.init(config.virtualHosts, app);\n    }\n\n    dns.lookup(os.hostname(), function(error, address, family) {\n        if (error) {\n            address = \"127.0.0.1\";\n        }\n        runtime.hostname = address;\n        var counter = 0;\n\n        if (_.isNumber(config.port)) {\n            runtime.port = config.port;\n            counter += 1;\n            app.listen(config.port, function() {\n                var tip = Handlebars.compile(\n                    \"nodewebx started, please visit http://{{{address}}}:{{{port}}}/\"\n                );\n                self.logger.info(tip({\n                    address: address,\n                    port: config.port\n                }));\n                counter -= 1;\n            });\n        }\n\n        // https\n        if (_.isObject(config.https) && _.isNumber(config.https.port)) {\n            counter += 1;\n            runtime.httpsPort = config.https.port;\n            var credentials = {};\n            if (fs.existsSync(config.https.privateKey)) {\n                credentials.key = fs.readFileSync(config.https.privateKey, \"utf-8\");\n            }\n            if (fs.existsSync(config.https.certificate)) {\n                credentials.cert = fs.readFileSync(config.https.certificate, \"utf-8\");\n            }\n            var httpsServer = https.createServer(credentials, app);\n            httpsServer.listen(config.https.port, function() {\n                var tip = Handlebars.compile(\n                    \"nodewebx https started, please visit https://{{{address}}}:{{{port}}}/\"\n                );\n                self.logger.info(tip({\n                    address: address,\n                    port: config.https.port\n                }));\n                counter -= 1;\n            });\n        }\n\n        if (counter <= 0) {\n            deferred.resolve();\n        }\n    });\n\n    if (config.liveReload) {\n        config.liveReload(vfs, Live().reload);\n    }\n\n    return deferred.promise;\n};\n\nIndex.prototype.addInjectionBean = function(id, bean) {\n    var self = this;\n    injection.addBean(id, bean);\n};\n\nIndex.prototype.removeInjectionBean = function(id) {\n    var self = this;\n    injection.removeBean(id);\n};\n\nmodule.exports = Index;\n"]}