{"version":3,"sources":["jsdelivr-header.js","/npm/ff-keystone@0.3.15/index.js"],"names":[],"mappings":"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","file":"/npm/ff-keystone@0.3.15/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/ff-keystone@0.3.15/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 _ = require('underscore');\nvar express = require('express');\nvar fs = require('fs');\nvar grappling = require('grappling-hook');\nvar path = require('path');\nvar utils = require('keystone-utils');\n\n/**\n * Don't use process.cwd() as it breaks module encapsulation\n * Instead, let's use module.parent if it's present, or the module itself if there is no parent (probably testing keystone directly if that's the case)\n * This way, the consuming app/module can be an embedded node_module and path resolutions will still work\n * (process.cwd() breaks module encapsulation if the consuming app/module is itself a node_module)\n */\nvar moduleRoot = (function(_rootPath) {\n\tvar parts = _rootPath.split(path.sep);\n\tparts.pop(); //get rid of /node_modules from the end of the path\n\treturn parts.join(path.sep);\n})(module.parent ? module.parent.paths[0] : module.paths[0]);\n\n\n/**\n * Keystone Class\n *\n * @api public\n */\nvar Keystone = function() {\n\tgrappling.mixin(this).allowHooks('pre:static', 'pre:bodyparser', 'pre:session', 'pre:routes', 'pre:render', 'updates', 'signout', 'signin');\n\tthis.lists = {};\n\tthis.paths = {};\n\tthis._options = {\n\t\t'name': 'Keystone',\n\t\t'brand': 'Keystone',\n\t\t'compress': true,\n\t\t'headless': false,\n\t\t'logger': ':method :url :status :response-time ms',\n\t\t'auto update': false,\n\t\t'model prefix': null,\n\t\t'module root': moduleRoot,\n\t\t'frame guard': 'sameorigin'\n\t};\n\tthis._redirects = {};\n\n\t// expose express\n\tthis.express = express;\n\n\t// init environment defaults\n\tthis.set('env', process.env.NODE_ENV || 'development');\n\n\tthis.set('port', process.env.PORT || process.env.OPENSHIFT_NODEJS_PORT);\n\tthis.set('host', process.env.HOST || process.env.IP || process.env.OPENSHIFT_NODEJS_IP);\n\tthis.set('listen', process.env.LISTEN);\n\n\tthis.set('ssl', process.env.SSL);\n\tthis.set('ssl port', process.env.SSL_PORT);\n\tthis.set('ssl host', process.env.SSL_HOST || process.env.SSL_IP);\n\tthis.set('ssl key', process.env.SSL_KEY);\n\tthis.set('ssl cert', process.env.SSL_CERT);\n\n\tthis.set('cookie secret', process.env.COOKIE_SECRET);\n\tthis.set('cookie signin', (this.get('env') === 'development') ? true : false);\n\n\tthis.set('embedly api key', process.env.EMBEDLY_API_KEY || process.env.EMBEDLY_APIKEY);\n\tthis.set('mandrill api key', process.env.MANDRILL_API_KEY || process.env.MANDRILL_APIKEY);\n\tthis.set('mandrill username', process.env.MANDRILL_USERNAME);\n\tthis.set('google api key', process.env.GOOGLE_BROWSER_KEY);\n\tthis.set('google server api key', process.env.GOOGLE_SERVER_KEY);\n\tthis.set('ga property', process.env.GA_PROPERTY);\n\tthis.set('ga domain', process.env.GA_DOMAIN);\n\tthis.set('chartbeat property', process.env.CHARTBEAT_PROPERTY);\n\tthis.set('chartbeat domain', process.env.CHARTBEAT_DOMAIN);\n\tthis.set('allowed ip ranges', process.env.ALLOWED_IP_RANGES);\n\n\tif (process.env.S3_BUCKET && process.env.S3_KEY && process.env.S3_SECRET) {\n\t\tthis.set('s3 config', { bucket: process.env.S3_BUCKET, key: process.env.S3_KEY, secret: process.env.S3_SECRET, region: process.env.S3_REGION });\n\t}\n\n\tif (process.env.AZURE_STORAGE_ACCOUNT && process.env.AZURE_STORAGE_ACCESS_KEY) {\n\t\tthis.set('azurefile config', { account: process.env.AZURE_STORAGE_ACCOUNT, key: process.env.AZURE_STORAGE_ACCESS_KEY });\n\t}\n\n\tif (process.env.CLOUDINARY_URL) {\n\t\t// process.env.CLOUDINARY_URL is processed by the cloudinary package when this is set\n\t\tthis.set('cloudinary config', true);\n\t}\n\n\t// Attach middleware packages, bound to this instance\n\tthis.middleware = {\n\t\tapi: require('./lib/middleware/api')(this),\n\t\tcors: require('./lib/middleware/cors')(this)\n\t};\n};\n\n_.extend(Keystone.prototype, require('./lib/core/options')());\n\n\nKeystone.prototype.prefixModel = function (key) {\n\tvar modelPrefix = this.get('model prefix');\n\n\tif (modelPrefix) {\n\t\tkey = modelPrefix + '_' + key;\n\t}\n\n\treturn require('mongoose/lib/utils').toCollectionName(key);\n};\n\n/* Attach core functionality to Keystone.prototype */\nKeystone.prototype.bindEmailTestRoutes = require('./lib/core/bindEmailTestRoutes');\nKeystone.prototype.connect = require('./lib/core/connect');\nKeystone.prototype.createItems = require('./lib/core/createItems');\nKeystone.prototype.getOrphanedLists = require('./lib/core/getOrphanedLists');\nKeystone.prototype.importer = require('./lib/core/importer');\nKeystone.prototype.init = require('./lib/core/init');\nKeystone.prototype.initNav = require('./lib/core/initNav');\nKeystone.prototype.list = require('./lib/core/list');\nKeystone.prototype.mount = require('./lib/core/mount');\nKeystone.prototype.populateRelated = require('./lib/core/populateRelated');\nKeystone.prototype.redirect = require('./lib/core/redirect');\nKeystone.prototype.render = require('./lib/core/render');\nKeystone.prototype.routes = require('./lib/core/routes');\nKeystone.prototype.start = require('./lib/core/start');\nKeystone.prototype.wrapHTMLError = require('./lib/core/wrapHTMLError');\n\n/* Expose Admin UI App */\nKeystone.prototype.adminApp = {\n\tstaticRouter: require('./admin/app/static')\n};\n\n/* Legacy Attach Mechanisms */\nKeystone.prototype.static = function(app) {\n\tif (!this.get('headless')) {\n\t\tapp.use('/keystone', Keystone.prototype.adminApp.staticRouter);\n\t}\n};\n\n/**\n * The exports object is an instance of Keystone.\n *\n * @api public\n */\nvar keystone = module.exports = exports = new Keystone();\n\n// Expose modules and Classes\nkeystone.Email = require('./lib/email');\nkeystone.Field = require('./fields/types/Type');\nkeystone.Field.Types = require('./lib/fieldTypes');\nkeystone.Keystone = Keystone;\nkeystone.List = require('./lib/list');\nkeystone.View = require('./lib/view');\n\nkeystone.content = require('./lib/content');\nkeystone.security = {\n\tcsrf: require('./lib/security/csrf')\n};\nkeystone.utils = utils;\n\n/**\n * returns all .js modules (recursively) in the path specified, relative\n * to the module root (where the keystone project is being consumed from).\n *\n * ####Example:\n *\n *     var models = keystone.import('models');\n *\n * @param {String} dirname\n * @api public\n */\n\nKeystone.prototype.import = function(dirname) {\n\n\tvar initialPath = path.join(this.get('module root'), dirname);\n\n\tvar doImport = function(fromPath) {\n\n\t\tvar imported = {};\n\n\t\tfs.readdirSync(fromPath).forEach(function(name) {\n\n\t\t\tvar fsPath = path.join(fromPath, name),\n\t\t\tinfo = fs.statSync(fsPath);\n\n\t\t\t// recur\n\t\t\tif (info.isDirectory()) {\n\t\t\t\timported[name] = doImport(fsPath);\n\t\t\t} else {\n\t\t\t\t// only import files that we can `require`\n\t\t\t\tvar ext = path.extname(name);\n\t\t\t\tvar base = path.basename(name, ext);\n\t\t\t\tif (require.extensions[ext]) {\n\t\t\t\t\timported[base] = require(fsPath);\n\t\t\t\t}\n\t\t\t}\n\n\t\t});\n\n\t\treturn imported;\n\t};\n\n\treturn doImport(initialPath);\n};\n\n\n/**\n * Applies Application updates\n */\n\nKeystone.prototype.applyUpdates = function(callback) {\n\tvar self = this;\n\tself.callHook('pre:updates', function(err){\n\t\tif(err){\n\t\t\tcallback(err);\n\t\t}\n\t\trequire('./lib/updates').apply(function(err){\n\t\t\tif(err){\n\t\t\t\tcallback(err);\n\t\t\t}\n\t\t\tself.callHook('post:updates', callback);\n\t\t});\n\t});\n};\n\n\n/**\n * Logs a configuration error to the console\n *\n * @api public\n */\n\nKeystone.prototype.console = {};\nKeystone.prototype.console.err = function(type, msg) {\n\tif (keystone.get('logger')) {\n\t\tvar dashes = '\\n------------------------------------------------\\n';\n\t\tconsole.log(dashes + 'KeystoneJS: ' + type + ':\\n\\n' + msg + dashes);\n\t}\n};\n\n/**\n * Keystone version\n *\n * @api public\n */\n\nkeystone.version = require('./package.json').version;\n\n\n// Expose Modules\nkeystone.session = require('./lib/session');\n"]}