From 1084b8a6402e94a2684f68015bef312f59a8f548 Mon Sep 17 00:00:00 2001 From: kumkumchoudhary14 <38934419+kumkumchoudhary14@users.noreply.github.com> Date: Sat, 29 Aug 2020 15:39:55 +0530 Subject: [PATCH 1/5] Add files via upload --- app.js | 31 ++ controllers/admin.js | 88 ++++ controllers/shop.js | 21 + modal/products.js | 24 ++ package-lock.json | 810 +++++++++++++++++++++++++++++++++++ package.json | 22 + public/css/download (24).jpg | Bin 0 -> 10579 bytes public/css/main.css | 219 ++++++++++ routes/admin.js | 14 + routes/shop.js | 9 + views/allProducts.ejs | 43 ++ views/create-product.ejs | 55 +++ views/deleteProduct.ejs | 28 ++ views/download.jpg | Bin 0 -> 12315 bytes views/editProduct.ejs | 61 +++ views/images (1).jpg | Bin 0 -> 6826 bytes views/images (2).jpg | Bin 0 -> 7868 bytes views/images (3).jpg | Bin 0 -> 8015 bytes views/index.ejs | 48 +++ 19 files changed, 1473 insertions(+) create mode 100644 app.js create mode 100644 controllers/admin.js create mode 100644 controllers/shop.js create mode 100644 modal/products.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/css/download (24).jpg create mode 100644 public/css/main.css create mode 100644 routes/admin.js create mode 100644 routes/shop.js create mode 100644 views/allProducts.ejs create mode 100644 views/create-product.ejs create mode 100644 views/deleteProduct.ejs create mode 100644 views/download.jpg create mode 100644 views/editProduct.ejs create mode 100644 views/images (1).jpg create mode 100644 views/images (2).jpg create mode 100644 views/images (3).jpg create mode 100644 views/index.ejs diff --git a/app.js b/app.js new file mode 100644 index 0000000..9e4b85c --- /dev/null +++ b/app.js @@ -0,0 +1,31 @@ +const express=require('express') +const path = require('path'); +const helmet=require('helmet') +const mongoose=require('mongoose') +const bodyParser = require('body-parser'); +const app=express() + +const URI='mongodb+srv://owner:downer@cluster0-icfip.mongodb.net/products?retryWrites=true&w=majority' + +app.set('view engine', 'ejs'); +app.set('views', 'views'); + +const adminRoutes = require('./routes/admin'); +const shopRoutes = require('./routes/shop'); + +app.use(helmet()) +app.use(bodyParser.urlencoded({ extended: false })); +app.use(express.static(path.join(__dirname, 'public'))); + +app.use(shopRoutes) +app.use('/admin',adminRoutes) + + +mongoose + .connect(URI) + .then(result => { + app.listen(process.env.PORT || 5000); + }) + .catch(err => { + console.log(err); + }); \ No newline at end of file diff --git a/controllers/admin.js b/controllers/admin.js new file mode 100644 index 0000000..716e663 --- /dev/null +++ b/controllers/admin.js @@ -0,0 +1,88 @@ +const Product =require('../modal/products') + +exports.getCreateProduct=(req,res,next)=>{ + res.render('create-product',{ + editing:false + }) +} +exports.postCreateProduct=(req,res,next)=>{ + const title = req.body.title; + const image = req.body.image; + const price = req.body.price; + const description = req.body.description; + + const product=new Product({ + title: title, + price: price, + description: description, + imageUrl: image, + }) + product.save() + .then(result=>{ + res.redirect('/') + }) + .catch(err=>{ + console.log(err) + }) +} + +exports.getInput=(req,res)=>{ + res.render('deleteProduct') +} +exports.postDeleteProduct = (req, res, next) => { + const prodId = req.body.productId; + Product.findById(prodId) + .then(product => { + if (!product) { + return next(new Error('Product not found.')); + } + return Product.deleteOne({ _id: prodId }); + }) + .then(() => { + console.log('DESTROYED PRODUCT'); + res.redirect('/products'); + }) + .catch(err => { + const error = new Error(err); + error.httpStatusCode = 500; + return next(error); + }); + }; + + exports.getEditInput=(req,res)=>{ + res.render('editProduct') + } + + exports.getEditProduct = (req, res, next) => { + res.render('editProduct') + }; + + + exports.postEditProduct = (req, res, next) => { + const prodId = req.body.productId; + const updatedTitle = req.body.title; + const updatedPrice = req.body.price; + const image = req.body.image; + const updatedDesc = req.body.description; + console.log(prodId) + console.log(updatedPrice) + Product.findById(prodId) + .then(product => { + product.title = updatedTitle; + product.price = updatedPrice; + product.description = updatedDesc; + product.image=image + return product.save() + .then(result => { + console.log('UPDATED PRODUCT!'); + res.redirect('/products'); + }); + }) + .catch(err => { + const error = new Error(err); + error.httpStatusCode = 500; + return next(error); + }); + }; + + \ No newline at end of file diff --git a/controllers/shop.js b/controllers/shop.js new file mode 100644 index 0000000..f3c4e70 --- /dev/null +++ b/controllers/shop.js @@ -0,0 +1,21 @@ +const Product =require('../modal/products') +const mongoose = require('mongoose'); + +exports.getPage=(req,res,next)=>{ + res.render('index') +} + +exports.getProducts = (req, res, next) => { + Product.find() + .then(products => { + // console.log(products); + res.render('allProducts', { + prods: products + }); + }) + .catch(err => { + const error = new Error(err); + error.httpStatusCode = 500; + return next(error); + }); + }; \ No newline at end of file diff --git a/modal/products.js b/modal/products.js new file mode 100644 index 0000000..e314f16 --- /dev/null +++ b/modal/products.js @@ -0,0 +1,24 @@ +const mongoose = require('mongoose'); + +const Schema = mongoose.Schema; + +const productSchema = new Schema({ + title: { + type: String, + required:true + }, + price: { + type: Number, + required:true + }, + description: { + type: String, + required:true + }, + imageUrl: { + type: String, + required:true + } +}); + +module.exports = mongoose.model('Product', productSchema); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..9583294 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,810 @@ +{ + "name": "assign", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "bl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.0.tgz", + "integrity": "sha512-wbgvOpqopSr7uq6fJrLH8EsvYMJf9gzfo2jCsL2eTy75qXPukA4pCgHamOQkZtY5vmfVtjB+P3LNlMHW5CEZXA==", + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + } + }, + "bowser": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.9.0.tgz", + "integrity": "sha512-2ld76tuLBNFekRgmJfT2+3j5MIrP6bFict8WAIT3beq+srz1gcKNAdNKMqHqauQt63NmAa88HfP1/Ypa9Er3HA==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "bson": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.4.tgz", + "integrity": "sha512-S/yKGU1syOMzO86+dGpg2qGoDL0zvzcb262G+gqEy6TgP6rt6z6qxSFX/8X6vLC91P7G7C3nLs0+bvDzmvBA3Q==" + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "camelize": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", + "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-security-policy-builder": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/content-security-policy-builder/-/content-security-policy-builder-2.1.0.tgz", + "integrity": "sha512-/MtLWhJVvJNkA9dVLAp6fg9LxD2gfI6R2Fi1hPmfjYXSahJJzcfvoeDOxSyp4NvxMuwWv3WMssE9o31DoULHrQ==" + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "dasherize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dasherize/-/dasherize-2.0.0.tgz", + "integrity": "sha1-bYCcnNDPe7iVLYD8hPoT1H3bEwg=" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "denque": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/denque/-/denque-1.4.1.tgz", + "integrity": "sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ==" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "dns-prefetch-control": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dns-prefetch-control/-/dns-prefetch-control-0.2.0.tgz", + "integrity": "sha512-hvSnros73+qyZXhHFjx2CMLwoj3Fe7eR9EJsFsqmcI1bB2OBWL/+0YzaEaKssCHnj/6crawNnUyw74Gm2EKe+Q==" + }, + "dont-sniff-mimetype": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/dont-sniff-mimetype/-/dont-sniff-mimetype-1.1.0.tgz", + "integrity": "sha512-ZjI4zqTaxveH2/tTlzS1wFp+7ncxNZaIEWYg3lzZRHkKf5zPT/MnEG6WL0BhHMJUabkh8GeU5NL5j+rEUCb7Ug==" + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "ejs": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.3.tgz", + "integrity": "sha512-wmtrUGyfSC23GC/B1SMv2ogAUgbQEtDmTIhfqielrG5ExIM9TP4UoYdi90jLF1aTcsWCJNEO0UrgKzP0y3nTSg==", + "requires": { + "jake": "^10.6.1" + } + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "expect-ct": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/expect-ct/-/expect-ct-0.2.0.tgz", + "integrity": "sha512-6SK3MG/Bbhm8MsgyJAylg+ucIOU71/FzyFalcfu5nY19dH8y/z0tBJU0wrNBXD4B27EoQtqPF/9wqH0iYAd04g==" + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "feature-policy": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/feature-policy/-/feature-policy-0.3.0.tgz", + "integrity": "sha512-ZtijOTFN7TzCujt1fnNhfWPFPSHeZkesff9AXZj+UEjYBynWNUIYpC87Ve4wHzyexQsImicLu7WsC2LHq7/xrQ==" + }, + "filelist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.1.tgz", + "integrity": "sha512-8zSK6Nu0DQIC08mUC46sWGXi+q3GGpKydAG36k+JDba6VRpkevvOWUW5a/PhShij4+vHT9M+ghgG7eM+a9JDUQ==", + "requires": { + "minimatch": "^3.0.4" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "frameguard": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/frameguard/-/frameguard-3.1.0.tgz", + "integrity": "sha512-TxgSKM+7LTA6sidjOiSZK9wxY0ffMPY3Wta//MqwmX0nZuEHc8QrkV8Fh3ZhMJeiH+Uyh/tcaarImRy8u77O7g==" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "helmet": { + "version": "3.23.1", + "resolved": "https://registry.npmjs.org/helmet/-/helmet-3.23.1.tgz", + "integrity": "sha512-e034HHfRK4065BFjYbffn5jXaTWWrhTNgmLIppsGEOjpdDB1MBQkWlAFW/auULXAu6uKk2X76n7a7gvz5sSjkg==", + "requires": { + "depd": "2.0.0", + "dns-prefetch-control": "0.2.0", + "dont-sniff-mimetype": "1.1.0", + "expect-ct": "0.2.0", + "feature-policy": "0.3.0", + "frameguard": "3.1.0", + "helmet-crossdomain": "0.4.0", + "helmet-csp": "2.10.0", + "hide-powered-by": "1.1.0", + "hpkp": "2.0.0", + "hsts": "2.2.0", + "nocache": "2.1.0", + "referrer-policy": "1.2.0", + "x-xss-protection": "1.3.0" + }, + "dependencies": { + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + } + } + }, + "helmet-crossdomain": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/helmet-crossdomain/-/helmet-crossdomain-0.4.0.tgz", + "integrity": "sha512-AB4DTykRw3HCOxovD1nPR16hllrVImeFp5VBV9/twj66lJ2nU75DP8FPL0/Jp4jj79JhTfG+pFI2MD02kWJ+fA==" + }, + "helmet-csp": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/helmet-csp/-/helmet-csp-2.10.0.tgz", + "integrity": "sha512-Rz953ZNEFk8sT2XvewXkYN0Ho4GEZdjAZy4stjiEQV3eN7GDxg1QKmYggH7otDyIA7uGA6XnUMVSgeJwbR5X+w==", + "requires": { + "bowser": "2.9.0", + "camelize": "1.0.0", + "content-security-policy-builder": "2.1.0", + "dasherize": "2.0.0" + } + }, + "hide-powered-by": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hide-powered-by/-/hide-powered-by-1.1.0.tgz", + "integrity": "sha512-Io1zA2yOA1YJslkr+AJlWSf2yWFkKjvkcL9Ni1XSUqnGLr/qRQe2UI3Cn/J9MsJht7yEVCe0SscY1HgVMujbgg==" + }, + "hpkp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hpkp/-/hpkp-2.0.0.tgz", + "integrity": "sha1-EOFCJk52IVpdMMROxD3mTe5tFnI=" + }, + "hsts": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/hsts/-/hsts-2.2.0.tgz", + "integrity": "sha512-ToaTnQ2TbJkochoVcdXYm4HOCliNozlviNsg+X2XQLQvZNI/kCHR9rZxVYpJB3UPcHz80PgxRyWQ7PdU1r+VBQ==", + "requires": { + "depd": "2.0.0" + }, + "dependencies": { + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + } + } + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "jake": { + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", + "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", + "requires": { + "async": "0.9.x", + "chalk": "^2.4.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + } + }, + "kareem": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.1.tgz", + "integrity": "sha512-l3hLhffs9zqoDe8zjmb/mAN4B8VT3L56EUvKNqLFVs9YlFA+zx7ke1DO8STAdDyYNkeSo1nKmjuvQeI12So8Xw==" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": true + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "requires": { + "mime-db": "1.44.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "mongodb": { + "version": "3.5.9", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.5.9.tgz", + "integrity": "sha512-vXHBY1CsGYcEPoVWhwgxIBeWqP3dSu9RuRDsoLRPTITrcrgm1f0Ubu1xqF9ozMwv53agmEiZm0YGo+7WL3Nbug==", + "requires": { + "bl": "^2.2.0", + "bson": "^1.1.4", + "denque": "^1.4.1", + "require_optional": "^1.0.1", + "safe-buffer": "^5.1.2", + "saslprep": "^1.0.0" + } + }, + "mongoose": { + "version": "5.9.19", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.9.19.tgz", + "integrity": "sha512-wJ5FR2ykvyd17MRHA6sku/N1CMaC/kf4CnN357htD48RpzJhW60YDkxPSPLbkLg8Woa+i7jYi0glhzC0EcBcRQ==", + "requires": { + "bson": "^1.1.4", + "kareem": "2.3.1", + "mongodb": "3.5.9", + "mongoose-legacy-pluralize": "1.0.2", + "mpath": "0.7.0", + "mquery": "3.2.2", + "ms": "2.1.2", + "regexp-clone": "1.0.0", + "safe-buffer": "5.1.2", + "sift": "7.0.1", + "sliced": "1.0.1" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "mongoose-legacy-pluralize": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz", + "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==" + }, + "mpath": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.7.0.tgz", + "integrity": "sha512-Aiq04hILxhz1L+f7sjGyn7IxYzWm1zLNNXcfhDtx04kZ2Gk7uvFdgZ8ts1cWa/6d0TQmag2yR8zSGZUmp0tFNg==" + }, + "mquery": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.2.tgz", + "integrity": "sha512-XB52992COp0KP230I3qloVUbkLUxJIu328HBP2t2EsxSFtf4W1HPSOBWOXf1bqxK4Xbb66lfMJ+Bpfd9/yZE1Q==", + "requires": { + "bluebird": "3.5.1", + "debug": "3.1.0", + "regexp-clone": "^1.0.0", + "safe-buffer": "5.1.2", + "sliced": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "nocache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/nocache/-/nocache-2.1.0.tgz", + "integrity": "sha512-0L9FvHG3nfnnmaEQPjT9xhfN4ISk0A8/2j4M37Np4mcDesJjHgEUfgPhdCyZuFI954tjokaIj/A3NdpFNdEh4Q==" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "referrer-policy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/referrer-policy/-/referrer-policy-1.2.0.tgz", + "integrity": "sha512-LgQJIuS6nAy1Jd88DCQRemyE3mS+ispwlqMk3b0yjZ257fI1v9c+/p6SD5gP5FGyXUIgrNOAfmyioHwZtYv2VA==" + }, + "regexp-clone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", + "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==" + }, + "require_optional": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", + "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", + "requires": { + "resolve-from": "^2.0.0", + "semver": "^5.1.0" + } + }, + "resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "requires": { + "sparse-bitfield": "^3.0.3" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "sift": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/sift/-/sift-7.0.1.tgz", + "integrity": "sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g==" + }, + "sliced": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", + "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" + }, + "sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", + "optional": true, + "requires": { + "memory-pager": "^1.0.2" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "x-xss-protection": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/x-xss-protection/-/x-xss-protection-1.3.0.tgz", + "integrity": "sha512-kpyBI9TlVipZO4diReZMAHWtS0MMa/7Kgx8hwG/EuZLiA6sg4Ah/4TRdASHhRRN3boobzcYgFRUFSgHRge6Qhg==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..eefef67 --- /dev/null +++ b/package.json @@ -0,0 +1,22 @@ +{ + "name": "assign", + "version": "1.0.0", + "description": "", + "main": "app.js", + "engines":{ + "node":"11.0.0" + }, + "scripts": { + "start": "node app.js", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "ejs": "^3.1.3", + "express": "^4.17.1", + "helmet": "^3.23.1", + "mongodb": "^3.5.9", + "mongoose": "^5.9.19" + } +} diff --git a/public/css/download (24).jpg b/public/css/download (24).jpg new file mode 100644 index 0000000000000000000000000000000000000000..a43a114ba3a579f0d8a3a9104955178815698a06 GIT binary patch literal 10579 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 literal 0 HcmV?d00001 diff --git a/public/css/main.css b/public/css/main.css new file mode 100644 index 0000000..83de098 --- /dev/null +++ b/public/css/main.css @@ -0,0 +1,219 @@ +@import url('https://fonts.googleapis.com/css?family=Open+Sans:400,700'); + +* { + box-sizing: border-box; +} + +body { + padding: 0; + margin: 0; + font-family: 'Open Sans', sans-serif; + background-image:url("download24.jpg") +} + +main { + padding: 1rem; + margin: auto; +} + +form { + display: inline; +} + +.centered { + text-align: center; +} + +.image { + height: 20rem; +} +.grid { + display: flex; + flex-wrap: wrap; + justify-content: space-around; + align-items: stretch; + } + +.image img { + height: 100%; +} + +.main-header { + width: 100%; + height: 3.5rem; + background-color: #00695c; + padding: 0 1.5rem; + display: flex; + align-items: center; +} + +.main-header__nav { + height: 100%; + width: 100%; + display: none; + align-items: center; + justify-content: space-between; +} + +.main-header__item-list { + list-style: none; + margin: 0; + padding: 0; + display: flex; +} + +.main-header__item { + margin: 0 1rem; + padding: 0; +} + +.main-header__item a, +.main-header__item button { + font: inherit; + background: transparent; + border: none; + text-decoration: none; + color: white; + cursor: pointer; +} + +.main-header__item a:hover, +.main-header__item a:active, +.main-header__item a.active, +.main-header__item button:hover, +.main-header__item button:active { + color: #ffeb3b; +} + + +.card { + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.26); +} + +.card__header, +.card__content { + padding: 1rem; +} + +.card__header h1, +.card__content h1, +.card__content h2, +.card__content p { + margin: 0; +} + +.card__image { + width: 100%; + height: 10rem; + text-align: center; +} + +.card__image img { + max-width: 100%; + max-height: 100%; +} + +.card__actions { + padding: 1rem; + text-align: center; +} + +.card__actions button, +.card__actions a { + margin: 0 0.25rem; +} + +.btn { + display: inline-block; + padding: 0.25rem 1rem; + text-decoration: none; + font: inherit; + border: 1px solid#ff2058; + color:#ff2058; + background:wheat; + border-radius: 3px; + cursor: pointer; +} + +.btn:hover, +.btn:active { + background-color: #ff2058; + color: white; +} + +.btn.danger { + color: red; + border-color: red; +} + +.btn.danger:hover, +.btn.danger:active { + background: red; + color: white; +} + +.form-control { + margin: 1rem 0; + } + + .form-control label, + .form-control input, + .form-control textarea { + display: block; + width: 100%; + margin-bottom: 0.25rem; + } + + .form-control input, + .form-control textarea { + border: 1px solid #a1a1a1; + font: inherit; + border-radius: 2px; + } + + .form-control input:focus, + .form-control textarea:focus { + outline-color: #ff2058; + } + + .form-control input.invalid, + .form-control textarea.invalid { + border-color: red; + } + + .product-form { + width: 20rem; + max-width: 90%; + margin: auto; + display: block; +} + +.product-item { + width: 20rem; + max-width: 95%; + margin: 1rem; +} + +.product__title { + font-size: 1.2rem; + text-align: center; +} + +.product__price { + text-align: center; + color: #4d4d4d; + margin-bottom: 0.5rem; +} + +.product__description { + text-align: center; +} + +#products{ + /* text-align: center; */ + margin-left: 36%; + font-weight: bolder; + margin-top: 2rem; + margin-bottom: 2rem; + font-size: 2.5rem; +} diff --git a/routes/admin.js b/routes/admin.js new file mode 100644 index 0000000..db85a6e --- /dev/null +++ b/routes/admin.js @@ -0,0 +1,14 @@ +const express= require('express') +const router= express.Router() +const adminController=require('../controllers/admin') + +router.get('/create-product',adminController.getCreateProduct) +router.post('/create-product',adminController.postCreateProduct) + +router.get('/edit-product',adminController.getEditProduct) +router.post('/edit-product',adminController.postEditProduct) + +router.get('/delete-input' ,adminController.getInput) +router.post('/delete-product',adminController.postDeleteProduct); + +module.exports=router \ No newline at end of file diff --git a/routes/shop.js b/routes/shop.js new file mode 100644 index 0000000..bd41e77 --- /dev/null +++ b/routes/shop.js @@ -0,0 +1,9 @@ +const express= require('express') +const router= express.Router() + +const shopController= require('../controllers/shop') +router.get('/',shopController.getPage) + +router.get('/products',shopController.getProducts) + +module.exports=router \ No newline at end of file diff --git a/views/allProducts.ejs b/views/allProducts.ejs new file mode 100644 index 0000000..6f83ad4 --- /dev/null +++ b/views/allProducts.ejs @@ -0,0 +1,43 @@ + + + + + + Document + + + + + +
+
+

SHOW ALL PRODUCTS

+ <% if (prods.length > 0) { %> +
+ <% for (let product of prods) { %> +
+
+

+ <%= product.title %> +

+
+
+ <%= product.title %> +
+
+

$ + <%= product.price %> +

+

+ <%= product.description %> +

+
+
+ <% } %> +
+ <% } else { %> +

No Products Found!

+ <% } %> +
+ + \ No newline at end of file diff --git a/views/create-product.ejs b/views/create-product.ejs new file mode 100644 index 0000000..3df9453 --- /dev/null +++ b/views/create-product.ejs @@ -0,0 +1,55 @@ + + + + + + Document + + + + +
+
+

CREATE PRODUCT

+
+ + +
+ +
+ + +
+ +
+ + +
+
+ + +
+ + + + + + + + \ No newline at end of file diff --git a/views/deleteProduct.ejs b/views/deleteProduct.ejs new file mode 100644 index 0000000..7b84863 --- /dev/null +++ b/views/deleteProduct.ejs @@ -0,0 +1,28 @@ + + + + + + Document + + + +
+

DELETE PRODUCT

+
+
+ + +
+ + + + \ No newline at end of file diff --git a/views/download.jpg b/views/download.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0afa09825f138872229e540ee8875ec76ffb59bc GIT binary patch literal 12315 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 QM_q332*52C%q#T&0Q6I>h5!Hn literal 0 HcmV?d00001 diff --git a/views/editProduct.ejs b/views/editProduct.ejs new file mode 100644 index 0000000..5f62dd6 --- /dev/null +++ b/views/editProduct.ejs @@ -0,0 +1,61 @@ + + + + + + Document + + + + + +
+

EDIT PRODUCT

+
+ + +
+
+ + +
+ +
+ + +
+ +
+ + +
+
+ + +
+ + + + + + + \ No newline at end of file diff --git a/views/images (1).jpg b/views/images (1).jpg new file mode 100644 index 0000000000000000000000000000000000000000..169ee686b12ea136c08d1525314822e6540cb091 GIT binary patch literal 6826 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 Wo|bXu&fMf}ABt%3+q$DI{ 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 literal 0 HcmV?d00001 diff --git a/views/images (3).jpg b/views/images (3).jpg new file mode 100644 index 0000000000000000000000000000000000000000..d94910157cc9d9d96d6db3a4a7194bd75fcf517c GIT binary patch literal 8015 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

1u3&89w{0&}IfbrB?fi9XzAF8ad+Y4^ zWb}}X&oTfM02nlLAE0!WtF9%JNOkP6c5BSi1TC!)2{g{adKMiNJ(g@naor^M{PKGy z3)B)~wYk0k+f(7<0@FYGk2=@H=QFThQZVjQ_hepZo<>At>hA$|ycYDPZ6-)?B*V%| z1#$q=HR=-+bXmn*DJ-$#)b6=V)M5-%r|< zJ5rDoxpFrwoP!V!VQvy{CPaQ<&-<_9=RA$U3eFS{lmJFSVzN3e&Rwc^V9qvIidEmZ z706m3RG3_Fl+w8jB@B@zec$m`5(DX0ZH2iXuE02c-q}RBy3HVlYkUi^knOdf=emn> znv})$kL92??#NN}$3-p!rntsPH~B(`jq__TzvccFRX?-y&2bRqIaf$~r_Ab_`l4Aq zcfG%S*JJe#3?Tf)-7m(1U(z|YdDZUHW`ESGd86bgEQKSeL1+DwVMFu}l{S_H z)S)cIm7zV~<%xcgCVVkDl2>-))U4iG5*cT0-zi%E)mXM*RagRHP7dyP6C?-Fryq@d z#?4qp8RAr?BR|#s%v;XvN4?m1v87n<3aXSu2M zyNzMldOCA7KfZ|1zb6&3Epa63TC!-}wQ-l~7#=mGMhfsG;_K5fZ&Car=%^)Vp@UAg zS2xhUyCq)tVJ2d9Y-XUw8bZX`NPofgiM#10vwRRSfmL7zi<6*Vi(~>^#la2gly^VJ zk0j>aT!zc~4-^+2ai0nlMZ7v$?Y1kYr^a)U@IrUovHq27uz*pwp2RKbiEoz389Zq_W}Ajm@PQcKbKfn>F;MDD z)OS3H)jXeuHVN{T)Ff5Ck{3?-$jRsfT2r;2*hA5eU~~b@JQ!`}@+?H2xD7Qdoj8+9 zP4f51xeX>kQ%b{vwu@LGbZBcSs^q|0uV;FD2X-z;9LCj(wu~JKW z(p_mY)pL*Dxara5k+=6X$W5LwYLLL0?D-SK%-!gZ$BMI++v0&Yz+1N18NDxuI9PcP z-j`>IX6=U}MR#q^bj>Rjm}`2@ENOlBJ~|rH zC`33~$?8I?;rrIIZd*`D}axvg+l6 zDt$Gc#mRvsSNiB(=e7)t;yJ!K)CR?Qq5s}135r+10@gY0-96q_ z>9Q8y_wY=GZw2R+HtbqaqDRp6psRbr?!~?D*$;MnsfiKAL@?cSDs&uK!|&ZI>$I^R7-3J0C-{55O%IfwR;`5g85v@GK>T?Hxf`UMakpZhLk93UE-7 zB!Yix?>y6Q^;+I2fNA9E(LX|_e8Sn<>`BT5>4S+Nzjt1>6MA8oAs3Lin-J$Cd z*$ByhAXl1R|ALg@e>G3{kc>HvB3q1rj>tHa;@6`w=}lUj4eKUKC`7 ojCQih6P?op6%wYxhO3%1MCCs9Tovah($ literal 0 HcmV?d00001 diff --git a/views/index.ejs b/views/index.ejs new file mode 100644 index 0000000..0f38749 --- /dev/null +++ b/views/index.ejs @@ -0,0 +1,48 @@ + + + + + + Document + + + + + + +

XYZ COMPANY FOR PRODUCT SHOPPING

+
+
+
+
+
+
+
+ + +
+
+
+ + +
+
+ + \ No newline at end of file From 9fa55bdf3b25af29b7bda9617e244298dccc0b34 Mon Sep 17 00:00:00 2001 From: kumkumchoudhary14 <38934419+kumkumchoudhary14@users.noreply.github.com> Date: Sat, 29 Aug 2020 16:52:47 +0530 Subject: [PATCH 2/5] Create product.css --- public/css/product.css | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 public/css/product.css diff --git a/public/css/product.css b/public/css/product.css new file mode 100644 index 0000000..6b5de2f --- /dev/null +++ b/public/css/product.css @@ -0,0 +1,2 @@ +body{ +} From 7b870743b2f451d326a8c2419f8f6fd1b23fb3a2 Mon Sep 17 00:00:00 2001 From: kumkumchoudhary14 <38934419+kumkumchoudhary14@users.noreply.github.com> Date: Sat, 29 Aug 2020 17:30:47 +0530 Subject: [PATCH 3/5] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e69f3f4..83cc9c3 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ The IX-th Problem Statement. ------ -my work : <your working link> +my work : <https://shopweb.imfast.io/> From 2d688a1aeb1f77fb2df58add1642671aeef34765 Mon Sep 17 00:00:00 2001 From: kumkumchoudhary14 <38934419+kumkumchoudhary14@users.noreply.github.com> Date: Sat, 29 Aug 2020 18:21:37 +0530 Subject: [PATCH 4/5] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 83cc9c3..492f285 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ The IX-th Problem Statement. my work : <https://shopweb.imfast.io/> +Sir I am not able to create a link,It is appearing like that.I don't know what wrong I am doing. From b8c9552123fa292a8a1f8639e60a2ac68a6b855f Mon Sep 17 00:00:00 2001 From: kumkumchoudhary14 <38934419+kumkumchoudhary14@users.noreply.github.com> Date: Fri, 5 Mar 2021 15:01:53 +0530 Subject: [PATCH 5/5] Update README.md --- README.md | 26 +------------------------- 1 file changed, 1 insertion(+), 25 deletions(-) diff --git a/README.md b/README.md index 492f285..9f0dd0c 100644 --- a/README.md +++ b/README.md @@ -1,25 +1 @@ - - -# ProblemStatement-IX - -The IX-th Problem Statement. ------- - - -my work : <https://shopweb.imfast.io/> -Sir I am not able to create a link,It is appearing like that.I don't know what wrong I am doing. - - - -

-

-

-Read the instruction.pdf. -

    -
  • fork this git repo and upload your files.
  • -
  • you can have multiple pull request, close one before opening another
  • -
  • edit Readme.md and replace <your working link> with url of your hosted site
  • -
  • start a pull request
  • -
-

-### if you have face problem with images, you can use any image of your own choice +Mangement Crud operation using mongo db .Designed with node js.