├── docs ├── favicon.ico ├── images │ ├── arrow.png │ ├── event1.jpg │ ├── event2.jpg │ ├── event3.jpg │ ├── logo.png │ ├── top-bg.jpg │ ├── top-bg.png │ ├── contact-bg.jpg │ ├── services-bg.jpg │ ├── shutterbug.jpg │ ├── clients │ │ ├── bower.png │ │ ├── grunt.png │ │ ├── opera.png │ │ ├── angular.png │ │ ├── buffer.png │ │ ├── codepen.png │ │ ├── dribbble.png │ │ ├── dropbox.png │ │ ├── envato.png │ │ ├── evernote.png │ │ ├── firefox.png │ │ ├── github.png │ │ ├── jQuery.png │ │ ├── joomla.png │ │ ├── magento.png │ │ ├── mozilla.png │ │ ├── pocket.png │ │ ├── spotify.png │ │ ├── messenger.png │ │ └── wordpress.png │ ├── sample-image.jpg │ ├── avatars │ │ ├── user-01.jpg │ │ ├── user-02.jpg │ │ ├── user-03.jpg │ │ ├── user-04.jpg │ │ └── user-05.jpg │ ├── ns-karachi-logo.png │ ├── portfolio │ │ ├── salad.jpg │ │ ├── minimalismo.jpg │ │ ├── shutterbug.jpg │ │ ├── skaterboy.jpg │ │ ├── yellowwall.jpg │ │ ├── architecture.jpg │ │ └── gallery │ │ │ ├── g-salad.jpg │ │ │ ├── g-minimalismo.jpg │ │ │ ├── g-shutterbug.jpg │ │ │ ├── g-skaterboy.jpg │ │ │ ├── g-yellowwall.jpg │ │ │ └── g-architecture.jpg │ ├── team │ │ ├── ahsan-ayaz.jpg │ │ └── kamran-qadri.jpg │ ├── node_school_event1.jpg │ ├── node_school_event2.jpg │ └── lightgallery │ │ ├── loading.gif │ │ ├── video-play.png │ │ ├── vimeo-play.png │ │ └── youtube-play.png ├── fonts │ ├── lightgallery │ │ ├── lg.eot │ │ ├── lg.ttf │ │ ├── lg.woff │ │ └── lg.svg │ ├── montserrat │ │ ├── montserrat-bold-webfont.woff │ │ ├── montserrat-bold-webfont.woff2 │ │ ├── montserrat-regular-webfont.woff │ │ └── montserrat-regular-webfont.woff2 │ └── librebaskerville │ │ ├── librebaskerville-bold-webfont.woff │ │ ├── librebaskerville-bold-webfont.woff2 │ │ ├── librebaskerville-italic-webfont.woff │ │ ├── librebaskerville-italic-webfont.woff2 │ │ ├── librebaskerville-regular-webfont.woff │ │ └── librebaskerville-regular-webfont.woff2 ├── css │ ├── micons │ │ ├── fonts │ │ │ ├── icomoon.eot │ │ │ ├── icomoon.ttf │ │ │ └── icomoon.woff │ │ └── micons.css │ ├── font-awesome │ │ └── fonts │ │ │ ├── FontAwesome.otf │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.ttf │ │ │ ├── fontawesome-webfont.woff │ │ │ └── fontawesome-webfont.woff2 │ ├── fonts.css │ └── base.css ├── inc │ └── sendEmail.php ├── readme.txt ├── js │ ├── modernizr.js │ ├── pace.min.js │ └── main.js └── styles.html ├── events └── meetup-2__rest-apis-workshop │ ├── workshop-content │ ├── 4-file-uploads-multer │ │ ├── tmp │ │ │ └── .gitkeep │ │ ├── .dockerignore │ │ ├── .gitignore │ │ ├── config │ │ │ └── default.json │ │ ├── public │ │ │ └── favicon.ico │ │ ├── README.md │ │ ├── core │ │ │ ├── controllers │ │ │ │ └── files.js │ │ │ ├── routes │ │ │ │ └── files.js │ │ │ ├── middlewares │ │ │ │ └── files.js │ │ │ ├── app.js │ │ │ └── bin │ │ │ │ └── www │ │ ├── Dockerfile │ │ ├── package.json │ │ └── index.html │ ├── 1-node-express-mongodb │ │ ├── .gitignore │ │ ├── README.md │ │ ├── config │ │ │ ├── environment.js │ │ │ └── dbConnection.js │ │ ├── app │ │ │ ├── car │ │ │ │ ├── model.js │ │ │ │ ├── route.js │ │ │ │ └── controller.js │ │ │ └── app.js │ │ ├── app.js │ │ ├── package.json │ │ └── package-lock.json │ ├── 3-parsing-url-params │ │ ├── server │ │ │ ├── modules │ │ │ │ ├── index.js │ │ │ │ └── post │ │ │ │ │ ├── index.js │ │ │ │ │ ├── model.js │ │ │ │ │ ├── routes.js │ │ │ │ │ └── controller.js │ │ │ ├── config │ │ │ │ ├── middleware.js │ │ │ │ └── db.js │ │ │ └── index.js │ │ ├── app.js │ │ ├── README.md │ │ └── package.json │ └── 2-parsing-json-payload │ │ ├── views │ │ ├── error.ejs │ │ └── index.ejs │ │ ├── public │ │ ├── stylesheets │ │ │ └── style.css │ │ └── javascripts │ │ │ └── main.js │ │ ├── README.md │ │ ├── models │ │ └── user.js │ │ ├── routes │ │ ├── index.js │ │ └── users.js │ │ ├── config │ │ └── db.js │ │ ├── package.json │ │ ├── .gitignore │ │ ├── app.js │ │ ├── bin │ │ └── www │ │ └── package-lock.json │ └── media-assets │ └── cover.jpeg ├── README.md └── code-of-conduct.md /docs/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/favicon.ico -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/4-file-uploads-multer/tmp/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/images/arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/arrow.png -------------------------------------------------------------------------------- /docs/images/event1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/event1.jpg -------------------------------------------------------------------------------- /docs/images/event2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/event2.jpg -------------------------------------------------------------------------------- /docs/images/event3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/event3.jpg -------------------------------------------------------------------------------- /docs/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/logo.png -------------------------------------------------------------------------------- /docs/images/top-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/top-bg.jpg -------------------------------------------------------------------------------- /docs/images/top-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/top-bg.png -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/1-node-express-mongodb/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules -------------------------------------------------------------------------------- /docs/images/contact-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/contact-bg.jpg -------------------------------------------------------------------------------- /docs/images/services-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/services-bg.jpg -------------------------------------------------------------------------------- /docs/images/shutterbug.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/shutterbug.jpg -------------------------------------------------------------------------------- /docs/images/clients/bower.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/clients/bower.png -------------------------------------------------------------------------------- /docs/images/clients/grunt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/clients/grunt.png -------------------------------------------------------------------------------- /docs/images/clients/opera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/clients/opera.png -------------------------------------------------------------------------------- /docs/images/sample-image.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/sample-image.jpg -------------------------------------------------------------------------------- /docs/fonts/lightgallery/lg.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/fonts/lightgallery/lg.eot -------------------------------------------------------------------------------- /docs/fonts/lightgallery/lg.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/fonts/lightgallery/lg.ttf -------------------------------------------------------------------------------- /docs/fonts/lightgallery/lg.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/fonts/lightgallery/lg.woff -------------------------------------------------------------------------------- /docs/images/avatars/user-01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/avatars/user-01.jpg -------------------------------------------------------------------------------- /docs/images/avatars/user-02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/avatars/user-02.jpg -------------------------------------------------------------------------------- /docs/images/avatars/user-03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/avatars/user-03.jpg -------------------------------------------------------------------------------- /docs/images/avatars/user-04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/avatars/user-04.jpg -------------------------------------------------------------------------------- /docs/images/avatars/user-05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/avatars/user-05.jpg -------------------------------------------------------------------------------- /docs/images/clients/angular.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/clients/angular.png -------------------------------------------------------------------------------- /docs/images/clients/buffer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/clients/buffer.png -------------------------------------------------------------------------------- /docs/images/clients/codepen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/clients/codepen.png -------------------------------------------------------------------------------- /docs/images/clients/dribbble.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/clients/dribbble.png -------------------------------------------------------------------------------- /docs/images/clients/dropbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/clients/dropbox.png -------------------------------------------------------------------------------- /docs/images/clients/envato.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/clients/envato.png -------------------------------------------------------------------------------- /docs/images/clients/evernote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/clients/evernote.png -------------------------------------------------------------------------------- /docs/images/clients/firefox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/clients/firefox.png -------------------------------------------------------------------------------- /docs/images/clients/github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/clients/github.png -------------------------------------------------------------------------------- /docs/images/clients/jQuery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/clients/jQuery.png -------------------------------------------------------------------------------- /docs/images/clients/joomla.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/clients/joomla.png -------------------------------------------------------------------------------- /docs/images/clients/magento.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/clients/magento.png -------------------------------------------------------------------------------- /docs/images/clients/mozilla.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/clients/mozilla.png -------------------------------------------------------------------------------- /docs/images/clients/pocket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/clients/pocket.png -------------------------------------------------------------------------------- /docs/images/clients/spotify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/clients/spotify.png -------------------------------------------------------------------------------- /docs/images/ns-karachi-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/ns-karachi-logo.png -------------------------------------------------------------------------------- /docs/images/portfolio/salad.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/portfolio/salad.jpg -------------------------------------------------------------------------------- /docs/images/team/ahsan-ayaz.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/team/ahsan-ayaz.jpg -------------------------------------------------------------------------------- /docs/css/micons/fonts/icomoon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/css/micons/fonts/icomoon.eot -------------------------------------------------------------------------------- /docs/css/micons/fonts/icomoon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/css/micons/fonts/icomoon.ttf -------------------------------------------------------------------------------- /docs/css/micons/fonts/icomoon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/css/micons/fonts/icomoon.woff -------------------------------------------------------------------------------- /docs/images/clients/messenger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/clients/messenger.png -------------------------------------------------------------------------------- /docs/images/clients/wordpress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/clients/wordpress.png -------------------------------------------------------------------------------- /docs/images/node_school_event1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/node_school_event1.jpg -------------------------------------------------------------------------------- /docs/images/node_school_event2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/node_school_event2.jpg -------------------------------------------------------------------------------- /docs/images/team/kamran-qadri.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/team/kamran-qadri.jpg -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/3-parsing-url-params/server/modules/index.js: -------------------------------------------------------------------------------- 1 | export * from './post'; -------------------------------------------------------------------------------- /docs/images/lightgallery/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/lightgallery/loading.gif -------------------------------------------------------------------------------- /docs/images/portfolio/minimalismo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/portfolio/minimalismo.jpg -------------------------------------------------------------------------------- /docs/images/portfolio/shutterbug.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/portfolio/shutterbug.jpg -------------------------------------------------------------------------------- /docs/images/portfolio/skaterboy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/portfolio/skaterboy.jpg -------------------------------------------------------------------------------- /docs/images/portfolio/yellowwall.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/portfolio/yellowwall.jpg -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/4-file-uploads-multer/.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | 3 | npm-debug.log -------------------------------------------------------------------------------- /docs/images/lightgallery/video-play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/lightgallery/video-play.png -------------------------------------------------------------------------------- /docs/images/lightgallery/vimeo-play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/lightgallery/vimeo-play.png -------------------------------------------------------------------------------- /docs/images/portfolio/architecture.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/portfolio/architecture.jpg -------------------------------------------------------------------------------- /docs/images/lightgallery/youtube-play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/lightgallery/youtube-play.png -------------------------------------------------------------------------------- /docs/images/portfolio/gallery/g-salad.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/portfolio/gallery/g-salad.jpg -------------------------------------------------------------------------------- /docs/css/font-awesome/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/css/font-awesome/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/4-file-uploads-multer/.gitignore: -------------------------------------------------------------------------------- 1 | .idea/* 2 | 3 | 4 | node_modules/* 5 | 6 | .vscode/* -------------------------------------------------------------------------------- /docs/images/portfolio/gallery/g-minimalismo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/portfolio/gallery/g-minimalismo.jpg -------------------------------------------------------------------------------- /docs/images/portfolio/gallery/g-shutterbug.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/portfolio/gallery/g-shutterbug.jpg -------------------------------------------------------------------------------- /docs/images/portfolio/gallery/g-skaterboy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/portfolio/gallery/g-skaterboy.jpg -------------------------------------------------------------------------------- /docs/images/portfolio/gallery/g-yellowwall.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/portfolio/gallery/g-yellowwall.jpg -------------------------------------------------------------------------------- /docs/images/portfolio/gallery/g-architecture.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/images/portfolio/gallery/g-architecture.jpg -------------------------------------------------------------------------------- /docs/css/font-awesome/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/css/font-awesome/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /docs/css/font-awesome/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/css/font-awesome/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /docs/css/font-awesome/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/css/font-awesome/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /docs/fonts/montserrat/montserrat-bold-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/fonts/montserrat/montserrat-bold-webfont.woff -------------------------------------------------------------------------------- /docs/fonts/montserrat/montserrat-bold-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/fonts/montserrat/montserrat-bold-webfont.woff2 -------------------------------------------------------------------------------- /docs/css/font-awesome/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/css/font-awesome/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /docs/fonts/montserrat/montserrat-regular-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/fonts/montserrat/montserrat-regular-webfont.woff -------------------------------------------------------------------------------- /docs/fonts/montserrat/montserrat-regular-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/fonts/montserrat/montserrat-regular-webfont.woff2 -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/3-parsing-url-params/app.js: -------------------------------------------------------------------------------- 1 | require('babel-register'); 2 | require('babel-polyfill'); 3 | require('./server'); -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/media-assets/cover.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/events/meetup-2__rest-apis-workshop/media-assets/cover.jpeg -------------------------------------------------------------------------------- /docs/fonts/librebaskerville/librebaskerville-bold-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/fonts/librebaskerville/librebaskerville-bold-webfont.woff -------------------------------------------------------------------------------- /docs/fonts/librebaskerville/librebaskerville-bold-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/fonts/librebaskerville/librebaskerville-bold-webfont.woff2 -------------------------------------------------------------------------------- /docs/fonts/librebaskerville/librebaskerville-italic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/fonts/librebaskerville/librebaskerville-italic-webfont.woff -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/4-file-uploads-multer/config/default.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "port": 3000, 4 | "reqTimeout": 300000 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /docs/fonts/librebaskerville/librebaskerville-italic-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/fonts/librebaskerville/librebaskerville-italic-webfont.woff2 -------------------------------------------------------------------------------- /docs/fonts/librebaskerville/librebaskerville-regular-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/fonts/librebaskerville/librebaskerville-regular-webfont.woff -------------------------------------------------------------------------------- /docs/fonts/librebaskerville/librebaskerville-regular-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/docs/fonts/librebaskerville/librebaskerville-regular-webfont.woff2 -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/1-node-express-mongodb/README.md: -------------------------------------------------------------------------------- 1 | nodeschool-workshop 2 | name: Muhammdad Bilal Alam 3 | slides: https://slides.com/bilalalam/deck#/ 4 | -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/1-node-express-mongodb/config/environment.js: -------------------------------------------------------------------------------- 1 | 2 | module.exports={ 3 | port:3000, 4 | mongoUrl:"mongodb://localhost/test" 5 | }; -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/2-parsing-json-payload/views/error.ejs: -------------------------------------------------------------------------------- 1 |

<%= message %>

2 |

<%= error.status %>

3 |
<%= error.stack %>
4 | -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/3-parsing-url-params/server/modules/post/index.js: -------------------------------------------------------------------------------- 1 | import Post from './model'; 2 | import PostRoutes from './routes'; 3 | 4 | export { 5 | PostRoutes, 6 | Post 7 | }; -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/3-parsing-url-params/README.md: -------------------------------------------------------------------------------- 1 | ## Parsing URL Params and sending back appropriate data 2 | 3 | ## Name: Tehseen Ahmed 4 | 5 | ## Slides: http://slides.com/tehseensiddiq/parsing-url-params -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/4-file-uploads-multer/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nodeschool/karachi/HEAD/events/meetup-2__rest-apis-workshop/workshop-content/4-file-uploads-multer/public/favicon.ico -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/2-parsing-json-payload/public/stylesheets/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding: 50px; 3 | font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; 4 | } 5 | 6 | a { 7 | color: #00B7FF; 8 | } 9 | -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/2-parsing-json-payload/README.md: -------------------------------------------------------------------------------- 1 | # Parsing JSON payload and saving data in MongoDB 2 | # nodeschool-workshop 3 | # Name: Adeel Hussain 4 | # Slides: https://slides.com/adeelhussain/parsing-data-and-save-into-mongodb/ 5 | -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/2-parsing-json-payload/models/user.js: -------------------------------------------------------------------------------- 1 | var mongoose = require('mongoose'); 2 | 3 | var UserSchema = new mongoose.Schema({ 4 | name: String, 5 | age: String 6 | }, { timestamps: true }); 7 | 8 | 9 | module.exports = mongoose.model('User', UserSchema); -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/4-file-uploads-multer/README.md: -------------------------------------------------------------------------------- 1 | ## Understanding and implementing File Uploads with multer 2 | 3 | Slides: https://slides.com/aitchkhan/express-file-upload 4 | 5 | Presenter: Haroon Khan 6 | 7 | 8 | #Express File Upload Using Multer with DiskStorage option -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/4-file-uploads-multer/core/controllers/files.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | fileUpload: fileUpload 3 | } 4 | 5 | function fileUpload (req, res, next) { 6 | res.json({ 7 | success: true, 8 | msg: 'file(s) upload successful' 9 | }) 10 | } 11 | -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/3-parsing-url-params/server/config/middleware.js: -------------------------------------------------------------------------------- 1 | import bodyParser from 'body-parser'; 2 | import morgan from 'morgan'; 3 | 4 | export default app => { 5 | app.use(bodyParser.json()); 6 | app.use(bodyParser.urlencoded({ extended: false })); 7 | app.use(morgan('dev')); 8 | } -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/1-node-express-mongodb/app/car/model.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose'); 2 | 3 | const Schema = mongoose.Schema; 4 | 5 | const carSchema = new Schema({ 6 | model:String, 7 | name:String, 8 | color:String 9 | }); 10 | 11 | module.exports = mongoose.model("Car",carSchema); -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/2-parsing-json-payload/routes/index.js: -------------------------------------------------------------------------------- 1 | var express = require('express'); 2 | var router = express.Router(); 3 | 4 | /* GET home page. */ 5 | router.get('/', function(req, res, next) { 6 | res.render('index', { title: 'Sending Payload and Saving into DB' }); 7 | }); 8 | 9 | module.exports = router; 10 | -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/1-node-express-mongodb/app/app.js: -------------------------------------------------------------------------------- 1 | // import all component's router 2 | var carRouter =require('./car/route'); 3 | 4 | /* expose a function that will take express object ( app ) as parameter and add all component's 5 | * router middlewares to the app object 6 | */ 7 | module.exports = (app)=>{ 8 | 9 | app.use('/car',carRouter); 10 | }; -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/4-file-uploads-multer/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:8 2 | 3 | #create app directory 4 | WORKDIR /usr/src/file-upload-node 5 | 6 | #install dependencies 7 | COPY package.json package-lock.json ./ 8 | 9 | RUN npm install 10 | 11 | #bundle app src 12 | COPY . . 13 | 14 | #Expose port 15 | EXPOSE 3000 16 | 17 | #Start server 18 | CMD [ "npm", "start" ] 19 | -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/2-parsing-json-payload/config/db.js: -------------------------------------------------------------------------------- 1 | var mongoose = require("mongoose"); 2 | 3 | var mongoUrl = 'mongodb://localhost/test'; 4 | 5 | module.exports = function () { 6 | mongoose.connect(mongoUrl); 7 | mongoose.connection 8 | .once('open', function () { 9 | console.log('MongoDB running'); 10 | }) 11 | .on('error', function (err) { 12 | console.log(err); 13 | }); 14 | }; 15 | -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/3-parsing-url-params/server/config/db.js: -------------------------------------------------------------------------------- 1 | import mongoose from 'mongoose'; 2 | 3 | const mongoUrl = 'mongodb://localhost/test'; 4 | 5 | export default () => { 6 | // establish db connection 7 | mongoose.connect(mongoUrl); 8 | mongoose.connection 9 | .once('open', function() { 10 | console.log('MongoDB running'); 11 | }) 12 | .on('error', function(err) { 13 | console.error(err); 14 | }); 15 | }; 16 | -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/1-node-express-mongodb/app/car/route.js: -------------------------------------------------------------------------------- 1 | // get component's controller 2 | const ctrl = require('./controller'); 3 | 4 | // get express module from the node_modules 5 | const express = require('express'); 6 | 7 | // express.Router returns a express Router middleware 8 | const router = express.Router(); 9 | 10 | // we add our own custom middleware in the above middleware 11 | router.post('/add',ctrl.insert); 12 | 13 | // we expose the router as a module 14 | module.exports = router; -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/3-parsing-url-params/server/modules/post/model.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | 3 | let postSchema = new mongoose.Schema({ 4 | title: { 5 | type: String, 6 | required: true 7 | }, 8 | description: { 9 | type: String, 10 | required: true 11 | }, 12 | category: { 13 | type: String, 14 | required: true 15 | }, 16 | subCategory: { 17 | type: String, 18 | required: true 19 | } 20 | }, { timestamps: true }); 21 | 22 | 23 | module.exports = mongoose.model('Post', postSchema); -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/3-parsing-url-params/server/modules/post/routes.js: -------------------------------------------------------------------------------- 1 | import { Router } from 'express'; 2 | import * as PostController from './controller'; 3 | 4 | const routes = new Router(); 5 | 6 | // Route for creating post 7 | routes.post('/post', PostController.createPost); 8 | 9 | // Route for getting all Posts 10 | routes.get('/post', PostController.getAllPosts); 11 | 12 | // Route for getting single Post with the help of Url Param 13 | routes.get('/post/:id/:test', PostController.getPost); 14 | 15 | export default routes; 16 | -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/1-node-express-mongodb/app.js: -------------------------------------------------------------------------------- 1 | 2 | // require installed packages 3 | const dbConnection=require('./config/dbConnection'); 4 | const config = require('./config/environment'); 5 | const express = require('express'); 6 | 7 | // connect with the database 8 | dbConnection(); 9 | 10 | // initiate express 11 | const app = express(); 12 | 13 | // c 14 | require('./app/app')(app); 15 | 16 | // start a server on port 3000 17 | app.listen(config.port,function(){ 18 | console.log('server up and running at port '+config.port); 19 | }) -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/2-parsing-json-payload/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "2-parsing-json-payload", 3 | "version": "1.0.0", 4 | "private": false, 5 | "author": { 6 | "name": "Adeel Hussain", 7 | "email": "mr.adi180@gmail.com" 8 | }, 9 | "scripts": { 10 | "start": "node ./bin/www" 11 | }, 12 | "dependencies": { 13 | "cookie-parser": "~1.4.3", 14 | "debug": "~2.6.9", 15 | "ejs": "~2.5.7", 16 | "express": "~4.16.0", 17 | "http-errors": "~1.6.2", 18 | "mongoose": "^5.0.13", 19 | "morgan": "~1.9.0" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/2-parsing-json-payload/.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /dist 5 | /tmp 6 | /out-tsc 7 | 8 | # dependencies 9 | /node_modules 10 | 11 | # IDEs and editors 12 | /.idea 13 | .project 14 | .classpath 15 | .c9/ 16 | *.launch 17 | .settings/ 18 | *.sublime-workspace 19 | 20 | # IDE - VSCode 21 | .vscode/* 22 | !.vscode/settings.json 23 | !.vscode/tasks.json 24 | !.vscode/launch.json 25 | !.vscode/extensions.json 26 | 27 | 28 | # System Files 29 | .DS_Store 30 | Thumbs.db 31 | -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/4-file-uploads-multer/core/routes/files.js: -------------------------------------------------------------------------------- 1 | const router = require('express').Router() 2 | const fileMiddleware = require('../middlewares/files') 3 | const fileController = require('../controllers/files') 4 | 5 | router.post('/single', fileMiddleware.uploadSingle(), fileController.fileUpload) 6 | router.post('/profilePic', fileMiddleware.uploadProfilePic(), fileController.fileUpload) 7 | router.post('/array', fileMiddleware.uploadArray(), fileController.fileUpload) 8 | router.post('/fields', fileMiddleware.uploadFields(), fileController.fileUpload) 9 | 10 | module.exports = router 11 | -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/1-node-express-mongodb/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nodeschool-workshop", 3 | "version": "1.0.0", 4 | "description": "nodeschool-workshop", 5 | "main": "app.js", 6 | "scripts": { 7 | "test": "node app.js" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/BilalAlam173/nodeschool-workshop.git" 12 | }, 13 | "author": "Bilal Alam", 14 | "license": "ISC", 15 | "bugs": { 16 | "url": "https://github.com/BilalAlam173/nodeschool-workshop/issues" 17 | }, 18 | "homepage": "https://github.com/BilalAlam173/nodeschool-workshop#readme", 19 | "dependencies": { 20 | "express": "^4.16.3", 21 | "mongoose": "^5.0.11" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/3-parsing-url-params/server/index.js: -------------------------------------------------------------------------------- 1 | // require installed packages 2 | import express from 'express'; 3 | 4 | import middlewareConfig from './config/middleware'; 5 | import dbConnect from './config/db'; 6 | import { PostRoutes } from './modules'; 7 | const port = '3000'; 8 | 9 | // db connection 10 | dbConnect(); 11 | 12 | // initiate express 13 | const app = express(); 14 | 15 | // middleware 16 | middlewareConfig(app); 17 | 18 | app.use('/api', [PostRoutes]); 19 | 20 | // render index page 21 | app.get('/', function(req, res, next) { 22 | res.send('Express REST API Application is running!'); 23 | }); 24 | 25 | // start a server on port 3000 26 | app.listen(port, function() { 27 | console.log('server up and running at port ' + port); 28 | }); 29 | -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/1-node-express-mongodb/app/car/controller.js: -------------------------------------------------------------------------------- 1 | // import the component's model 2 | const Car=require('./model'); 3 | 4 | // expose a set of operations 5 | module.exports = { 6 | 7 | insert : (req,res)=>{ 8 | // create a new instance of the model 9 | const car = new Car({ 10 | model:'2000', 11 | name:'Mehran', 12 | color:'purple' 13 | }); 14 | 15 | // call save funtion on that model's instance 16 | car.save((err)=>{ 17 | if(err){ 18 | // return error 19 | res.status(500).json({message :"something went wrong"}); 20 | }else{ 21 | // return success 22 | res.status(200).json({message:"car added successfully"}); 23 | } 24 | 25 | }); 26 | } 27 | } -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/3-parsing-url-params/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nodeschool-workshop", 3 | "version": "1.0.0", 4 | "description": "usage of URl and Query Params in nodejs", 5 | "main": "app.js", 6 | "scripts": { 7 | "start": "nodemon app.js" 8 | }, 9 | "repository": "https://github.com/ahmedtehseen/nodeschool-workshop.git", 10 | "author": "ahmedtehseen ", 11 | "license": "MIT", 12 | "dependencies": { 13 | "babel-polyfill": "^6.26.0", 14 | "babel-preset-es2015": "^6.24.1", 15 | "babel-preset-stage-0": "^6.24.1", 16 | "babel-register": "^6.26.0", 17 | "body-parser": "^1.18.2", 18 | "express": "^4.16.3", 19 | "mongoose": "^5.0.12", 20 | "morgan": "^1.9.0" 21 | }, 22 | "devDependencies": { 23 | "nodemon": "^1.17.3" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/2-parsing-json-payload/routes/users.js: -------------------------------------------------------------------------------- 1 | var express = require('express'); 2 | var router = express.Router(); 3 | var mongoose = require('mongoose'); 4 | var User = mongoose.model('User'); 5 | /* GET users listing. */ 6 | router.get('/', function (req, res, next) { 7 | 8 | User.find() 9 | .then((savedUsers) => { 10 | res.send(savedUsers); 11 | }) 12 | .catch((err) => { 13 | console.log(err); 14 | res.status(400).send(err); 15 | 16 | }) 17 | }); 18 | 19 | router.post('/', function (req, res, next) { 20 | console.log('DAta------', req.body) 21 | var user = new User(req.body); 22 | user.save() 23 | .then((savedUser) => { 24 | res.send(savedUser); 25 | 26 | }) 27 | .catch((err) => { 28 | console.log(err); 29 | res.status(400).send(err); 30 | }) 31 | }); 32 | 33 | module.exports = router; 34 | -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/1-node-express-mongodb/config/dbConnection.js: -------------------------------------------------------------------------------- 1 | var config = require('./environment'); 2 | var mongoose = require('mongoose'); 3 | module.exports = function () { 4 | mongoose.connect(config.mongoUrl); 5 | 6 | // get the connection's instance 7 | const dbConnection = mongoose.connection; 8 | 9 | 10 | // bind events on connection's instance 11 | dbConnection.on('error', function () { 12 | console.log('Could not connect to mongodb'); 13 | }); 14 | dbConnection.once('open', function () { 15 | console.log('connected to mongodb'); 16 | }); 17 | 18 | process.on( "SIGINT", shutDown ); 19 | process.on( "SIGTERM", shutDown ); 20 | process.on( "SIGHUP", shutDown ); 21 | 22 | 23 | } 24 | 25 | function shutDown() { 26 | mongoose.connection.close(function () { 27 | console.log('Connection has been successfully closed, see you again soon!'); 28 | process.exit(0); 29 | }); 30 | } -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/4-file-uploads-multer/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "express-file-upload-multer", 3 | "version": "0.0.0", 4 | "private": false, 5 | "engines": { 6 | "node": ">= 8.5.0" 7 | }, 8 | "repository": "https://github.com/aitchkhan/express-file-upload.git", 9 | "author": { 10 | "name": "Haroon Khan", 11 | "email": "aitchkhan@gmail.com" 12 | }, 13 | "scripts": { 14 | "start": "node_modules/.bin/nodemon ./core/bin/www", 15 | "debug": "node --inspect ./core/bin/www --no-lazy", 16 | "lint": "node_modules/.bin/standard", 17 | "lint-fix": "node_modules/.bin/standard --fix" 18 | }, 19 | "dependencies": { 20 | "body-parser": "~1.18.2", 21 | "config": "^1.27.0", 22 | "connect-timeout": "^1.9.0", 23 | "debug": "~2.6.9", 24 | "express": "^4.15.5", 25 | "mime-types": "^2.1.18", 26 | "morgan": "~1.9.0", 27 | "multer": "^1.3.0", 28 | "pug": "2.0.0-beta11", 29 | "serve-favicon": "~2.4.5", 30 | "sharp": "^0.18.4", 31 | "uuid": "^3.1.0" 32 | }, 33 | "devDependencies": { 34 | "nodemon": "^1.12.1", 35 | "standard": "^10.0.3" 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/3-parsing-url-params/server/modules/post/controller.js: -------------------------------------------------------------------------------- 1 | import Post from './model'; 2 | 3 | 4 | export const createPost = async (req, res) => { 5 | const { title, description, category, subCategory } = req.body; 6 | const newPost = new Post({ title, description, category, subCategory }); 7 | try { 8 | return res.status(201).json({ post: await newPost.save() }) 9 | } catch(e) { 10 | return res.status(e.status).json({ error: true, message: 'Error with Post' }); 11 | } 12 | } 13 | 14 | 15 | export const getAllPosts = async (req, res) => { 16 | const params = req.query; 17 | console.log('Query Params Object:', params); 18 | try { 19 | return res.status(200).json({ posts: await Post.find({ ...params }) }); 20 | } catch (e) { 21 | return res.status(e.status).json({ error: true, message: 'Error with Post' }); 22 | } 23 | } 24 | 25 | export const getPost = async (req, res) => { 26 | console.log('URL Params Object:', req.params) 27 | const { id } = req.params 28 | try { 29 | return res.status(200).json({ posts: await Post.find({ _id: id }) }); 30 | } catch (e) { 31 | return res.status(e.status).json({ error: true, message: 'Error with Post' }); 32 | } 33 | } -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/4-file-uploads-multer/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Document 9 | 10 | 11 | 12 | 13 | pic here 14 | 15 | 16 | 45 | 46 | -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/2-parsing-json-payload/public/javascripts/main.js: -------------------------------------------------------------------------------- 1 | var $userForm = $('#userForm'); 2 | var $submitBtn = $('#saveBtn'); 3 | 4 | $userForm.on('submit', function (evt){ 5 | 6 | evt.preventDefault(); 7 | 8 | var nameField = $('#userName').val(); 9 | var age = $('#age').val(); 10 | 11 | if( !nameField || !age ) return; 12 | $submitBtn.attr('default', true ); 13 | 14 | callAjax({ 15 | url: "/users", 16 | method: "post", 17 | data: { 18 | name: nameField, 19 | age: age 20 | } 21 | }) 22 | .then(function (){ 23 | alert('Added successfully!'); 24 | 25 | //Empty the form field 26 | $('#userName').val(''); 27 | $('#age').val(''); 28 | }, function (err){ 29 | console.log('ERROR in saving user', err); 30 | }) 31 | .always(function (){ 32 | $submitBtn.attr('default', false); 33 | }) 34 | /* .always(function (){ 35 | $submitBtn.attr('default', false); 36 | }) 37 | .success(function (){ 38 | alert('Added successfully!'); 39 | }).error(function (err){ 40 | console.log('ERROR in saving user', err); 41 | }) */; 42 | 43 | return false; 44 | }) 45 | 46 | function callAjax(config){ 47 | return $.ajax({ 48 | url: config.url, 49 | method: config.method, 50 | data: config.data 51 | }); 52 | } 53 | 54 | function getUsers (){ 55 | 56 | } -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/2-parsing-json-payload/app.js: -------------------------------------------------------------------------------- 1 | var createError = require('http-errors'); 2 | var express = require('express'); 3 | var path = require('path'); 4 | var cookieParser = require('cookie-parser'); 5 | var logger = require('morgan'); 6 | var bodyParser = require('body-parser'); 7 | 8 | var fs = require('fs'); 9 | 10 | var connectDB = require('./config/db'); 11 | 12 | var app = express(); 13 | 14 | 15 | // view engine setup 16 | app.set('views', path.join(__dirname, 'views')); 17 | app.set('view engine', 'ejs'); 18 | 19 | app.use(logger('dev')); 20 | app.use(express.json()); 21 | app.use(express.urlencoded({ extended: true })); 22 | app.use(cookieParser()); 23 | app.use(express.static(path.join(__dirname, 'public'))); 24 | 25 | 26 | //Connect DB 27 | connectDB(); 28 | 29 | //Initialize Mongoose Models 30 | var models = fs.readdirSync('./models'); 31 | models.forEach( (model) => { 32 | require('./models/'+ model)(); 33 | }); 34 | 35 | 36 | app.use('/', require('./routes/index')); 37 | app.use('/users', require('./routes/users')); 38 | 39 | // catch 404 and forward to error handler 40 | app.use(function(req, res, next) { 41 | next(createError(404)); 42 | }); 43 | 44 | // error handler 45 | app.use(function(err, req, res, next) { 46 | // set locals, only providing error in development 47 | res.locals.message = err.message; 48 | res.locals.error = req.app.get('env') === 'development' ? err : {}; 49 | 50 | // render the error page 51 | res.status(err.status || 500); 52 | res.render('error'); 53 | }); 54 | 55 | module.exports = app; 56 | -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/4-file-uploads-multer/core/middlewares/files.js: -------------------------------------------------------------------------------- 1 | const path = require('path') 2 | const multer = require('multer') 3 | const mimeType = require('mime-types') 4 | 5 | const uploadDir = path.join(__dirname, '../../tmp/') 6 | const storage = multer.diskStorage({ 7 | filename: (req, file, cb) => { 8 | const ext = mimeType.extension(file.mimetype) 9 | cb(null, `file-${Date.now()}.${ext}`) 10 | }, 11 | destination: (req, file, cb) => { 12 | cb(null, uploadDir) 13 | } 14 | }) 15 | 16 | const upload = multer({ storage: storage }) 17 | const uploadPicture = multer({ storage: storage, fileFilter: _imgFilter }) 18 | 19 | module.exports = { 20 | uploadSingle, 21 | uploadArray, 22 | uploadFields, 23 | uploadProfilePic 24 | } 25 | 26 | function uploadSingle () { 27 | return upload.single('file') 28 | } 29 | 30 | function uploadArray () { 31 | return upload.array('files', 4) // first param is for key against which the multer is expecting files, 32 | // other is maxCount allowed 33 | } 34 | 35 | function uploadFields () { 36 | return upload.fields({ 37 | name: 'avatar', 38 | maxCount: 1 39 | }, { 40 | name: 'gallery', 41 | maxCount: 5 42 | }) 43 | } 44 | 45 | function uploadProfilePic () { 46 | return uploadPicture.single('image') 47 | } 48 | 49 | function _imgFilter (req, file, cb) { 50 | if (!file.originalname.match(/\.(png|jpeg|jpg|gif)/)) { 51 | cb(new Error('Only images are allowed'), false) // setting the second param 52 | } 53 | cb(null, true) 54 | } 55 | -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/4-file-uploads-multer/core/app.js: -------------------------------------------------------------------------------- 1 | const express = require('express') 2 | const path = require('path') 3 | const timeout = require('connect-timeout') 4 | const logger = require('morgan') 5 | const bodyParser = require('body-parser') 6 | const favicon = require('serve-favicon') 7 | 8 | const files = require('./routes/files') 9 | 10 | const app = express() 11 | 12 | app.use(timeout('2m')) // timeout after 2mins 13 | app.use(logger('dev')) 14 | app.use(bodyParser.json({limit: '5mb'})) 15 | app.use(bodyParser.urlencoded({ extended: true, limit: '5mb' })) 16 | app.use(haltOnTimeout) 17 | app.use(favicon(path.join(__dirname, '../public', 'favicon.ico'))) 18 | 19 | app.use(function (req, res, next) { 20 | res.header('Access-Control-Allow-Origin', '*') 21 | res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept') 22 | next() 23 | }) 24 | app.use('/files', files) 25 | 26 | // catch 404 and forward to error handler 27 | app.use(function (req, res, next) { 28 | const err = new Error('Not Found') 29 | err.status = 404 30 | next(err) 31 | }) 32 | 33 | // error handler 34 | app.use(function (err, req, res, next) { 35 | // set locals, only providing error in development 36 | res.locals.message = err.message 37 | res.locals.error = req.app.get('env') === 'development' ? err : {} 38 | 39 | res.status(err.status || 500) 40 | res.json({ 41 | err: 'error', 42 | message: err.message || 'internal server error', 43 | stack: err.stack || 'internal server error' 44 | }) 45 | }) 46 | 47 | function haltOnTimeout (req, res, next) { 48 | if (!req.timedout) { 49 | next() 50 | } 51 | } 52 | 53 | module.exports = app 54 | -------------------------------------------------------------------------------- /docs/css/fonts.css: -------------------------------------------------------------------------------- 1 | /* =================================================================== 2 | * fonts.scss) 3 | * 4 | * ------------------------------------------------------------------- */ 5 | 6 | /* 7 | * Libre Baskerville 8 | ================================================================================ */ 9 | @font-face { 10 | font-family: "librebaskerville-regular"; 11 | src: url("../fonts/librebaskerville/librebaskerville-regular-webfont.woff2") format("woff2"), url("../fonts/librebaskerville/librebaskerville-regular-webfont.woff") format("woff"); 12 | font-style: normal; 13 | font-weight: normal; 14 | } 15 | @font-face { 16 | font-family: "librebaskerville-italic"; 17 | src: url("../fonts/librebaskerville/librebaskerville-italic-webfont.woff2") format("woff2"), url("../fonts/librebaskerville/librebaskerville-italic-webfont.woff") format("woff"); 18 | font-style: normal; 19 | font-weight: normal; 20 | } 21 | @font-face { 22 | font-family: "librebaskerville-bold"; 23 | src: url("../fonts/librebaskerville/librebaskerville-bold-webfont.woff2") format("woff2"), url("../fonts/librebaskerville/librebaskerville-bold-webfont.woff") format("woff"); 24 | font-style: normal; 25 | font-weight: normal; 26 | } 27 | 28 | /* 29 | * Montserrat 30 | ================================================================================ */ 31 | @font-face { 32 | font-family: "montserrat-regular"; 33 | src: url("../fonts/montserrat/montserrat-regular-webfont.woff2") format("woff2"), url("../fonts/montserrat/montserrat-regular-webfont.woff") format("woff"); 34 | font-style: normal; 35 | font-weight: normal; 36 | } 37 | @font-face { 38 | font-family: "montserrat-bold"; 39 | src: url("../fonts/montserrat/montserrat-bold-webfont.woff2") format("woff2"), url("../fonts/montserrat/montserrat-bold-webfont.woff") format("woff"); 40 | font-style: normal; 41 | font-weight: normal; 42 | } 43 | -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/2-parsing-json-payload/views/index.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | <%= title %> 7 | 8 | 10 | 11 | 12 | 13 | 14 | 15 |
16 |

17 | <%= title %> 18 |

19 |

Welcome to 20 | <%= title %> 21 |

22 | 23 | 24 | 25 | 26 | 27 |
28 |
29 |
30 |
31 | 32 | 33 |
34 |
35 | 36 | 37 |
38 | 39 |
40 |
41 | 42 | 57 | 58 |
59 |
60 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/2-parsing-json-payload/bin/www: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | /** 4 | * Module dependencies. 5 | */ 6 | 7 | var app = require('../app'); 8 | var debug = require('debug')('2-parsing-json-payload:server'); 9 | var http = require('http'); 10 | 11 | /** 12 | * Get port from environment and store in Express. 13 | */ 14 | 15 | var port = normalizePort(process.env.PORT || '3000'); 16 | app.set('port', port); 17 | 18 | /** 19 | * Create HTTP server. 20 | */ 21 | 22 | var server = http.createServer(app); 23 | 24 | /** 25 | * Listen on provided port, on all network interfaces. 26 | */ 27 | 28 | server.listen(port); 29 | server.on('error', onError); 30 | server.on('listening', onListening); 31 | 32 | /** 33 | * Normalize a port into a number, string, or false. 34 | */ 35 | 36 | function normalizePort(val) { 37 | var port = parseInt(val, 10); 38 | 39 | if (isNaN(port)) { 40 | // named pipe 41 | return val; 42 | } 43 | 44 | if (port >= 0) { 45 | // port number 46 | return port; 47 | } 48 | 49 | return false; 50 | } 51 | 52 | /** 53 | * Event listener for HTTP server "error" event. 54 | */ 55 | 56 | function onError(error) { 57 | if (error.syscall !== 'listen') { 58 | throw error; 59 | } 60 | 61 | var bind = typeof port === 'string' 62 | ? 'Pipe ' + port 63 | : 'Port ' + port; 64 | 65 | // handle specific listen errors with friendly messages 66 | switch (error.code) { 67 | case 'EACCES': 68 | console.error(bind + ' requires elevated privileges'); 69 | process.exit(1); 70 | break; 71 | case 'EADDRINUSE': 72 | console.error(bind + ' is already in use'); 73 | process.exit(1); 74 | break; 75 | default: 76 | throw error; 77 | } 78 | } 79 | 80 | /** 81 | * Event listener for HTTP server "listening" event. 82 | */ 83 | 84 | function onListening() { 85 | var addr = server.address(); 86 | var bind = typeof addr === 'string' 87 | ? 'pipe ' + addr 88 | : 'port ' + addr.port; 89 | debug('Listening on ' + bind); 90 | } 91 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # NodeSchool Karachi [![Join the chat at https://gitter.im/nodeschool/karachi](https://badges.gitter.im/nodeschool/karachi.svg)](https://gitter.im/nodeschool/karachi?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) 2 | 3 | **We will be having links related to our meetup/events here in the [events](https://github.com/nodeschool/karachi/events) folder in this repo** 4 | 5 | NodeSchool is a series of open source workshops that teach web 6 | software skills. Individuals are encouraged to do the 7 | [workshoppers](http://nodeschool.io/) on their own or at one of the 8 | NodeSchool events around the world. The workshopper tutorials are used 9 | as the course curriculum, while mentors are here to help attendees 10 | work through challenges. 11 | 12 | * Website: [https://nodeschool.io/karachi/](https://nodeschool.io/karachi/) 13 | * Facebook: **[@nskarachi](https://web.facebook.com/nskarachi/)** 14 | * Gitter: [https://gitter.im/nodeschool/karachi](https://gitter.im/nodeschool/karachi) 15 | 16 | ## Want to attend? 17 | 18 | Keep your self up to date with our [Facebook](https://web.facebook.com/nskarachi/) page for event updates. 19 | 20 | ### Want to mentor or help organize? 21 | 22 | If you are interested in mentoring, please make a 23 | [Pull Request](https://github.com/nodeschool/karachi/pulls) to add 24 | yourself to this list. We also ask you to read over [Event Mentor Best Practices](https://github.com/nodeschool/organizers/wiki/Event-Mentor-Best-Practices) 25 | on what it's like being a mentor prior to signing up. Make sure to put some links of your past work! 26 | 27 | - [@ahsanayaz](https://github.com/ahsanayaz) 28 | - [@smkamranqadri](https://github.com/smkamranqadri) 29 | - [@farazmurtaza](https://github.com/farazmurtaza) 30 | - [@saadqamar](https://github.com/SaadQamar01) 31 | 32 | If you've come to a few NodeSchool events, we encourage you to mentor! :tada: 33 | 34 | ### Code of Conduct 35 | 36 | - [Code of Conduct for Nodeschool Karachi](code-of-conduct.md) 37 | - [No photography without an individual's permission](https://adainitiative.org/2013/07/another-way-to-attract-women-to-conferences-photography-policies/) 38 | -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/4-file-uploads-multer/core/bin/www: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | /** 4 | * Module dependencies. 5 | */ 6 | const config = require('config') 7 | const app = require('../app') 8 | const debug = require('debug')('myapp:server') 9 | const http = require('http') 10 | 11 | /** 12 | * Get port from environment and store in Express. 13 | */ 14 | 15 | const port = normalizePort(process.env.PORT || config.get('env.port')) 16 | app.set('port', port) 17 | 18 | /** 19 | * Create HTTP server. 20 | */ 21 | 22 | const server = http.createServer(app) 23 | server.timeout = config.get('env.reqTimeout') 24 | /** 25 | * Listen on provided port, on all network interfaces. 26 | */ 27 | 28 | server.listen(port) 29 | server.on('error', onError) 30 | server.on('listening', onListening) 31 | 32 | /** 33 | * Normalize a port into a number, string, or false. 34 | */ 35 | 36 | function normalizePort (val) { 37 | const port = parseInt(val, 10) 38 | 39 | if (isNaN(port)) { 40 | // named pipe 41 | return val 42 | } 43 | 44 | if (port >= 0) { 45 | // port number 46 | return port 47 | } 48 | 49 | return false 50 | } 51 | 52 | /** 53 | * Event listener for HTTP server "error" event. 54 | */ 55 | 56 | function onError (error) { 57 | if (error.syscall !== 'listen') { 58 | throw error 59 | } 60 | 61 | const bind = typeof port === 'string' 62 | ? 'Pipe ' + port 63 | : 'Port ' + port 64 | 65 | // handle specific listen errors with friendly messages 66 | switch (error.code) { 67 | case 'EACCES': 68 | console.error(bind + ' requires elevated privileges') 69 | process.exit(1) 70 | break 71 | case 'EADDRINUSE': 72 | console.error(bind + ' is already in use') 73 | process.exit(1) 74 | break 75 | default: 76 | throw error 77 | } 78 | } 79 | 80 | /** 81 | * Event listener for HTTP server "listening" event. 82 | */ 83 | 84 | function onListening () { 85 | const addr = server.address() 86 | const bind = typeof addr === 'string' 87 | ? 'pipe ' + addr 88 | : 'port ' + addr.port 89 | debug('Listening on ' + bind) 90 | } 91 | -------------------------------------------------------------------------------- /docs/inc/sendEmail.php: -------------------------------------------------------------------------------- 1 | "; 32 | $message .= "Email address: " . $email . "
"; 33 | $message .= "Message:
"; 34 | $message .= $contact_message; 35 | $message .= "
-----
This email was sent from your site's contact form.
"; 36 | 37 | // Set From: header 38 | $from = $name . " <" . $email . ">"; 39 | 40 | // Email Headers 41 | $headers = "From: " . $from . "\r\n"; 42 | $headers .= "Reply-To: ". $email . "\r\n"; 43 | $headers .= "MIME-Version: 1.0\r\n"; 44 | $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 45 | 46 | 47 | if (!$error) { 48 | 49 | ini_set("sendmail_from", $siteOwnersEmail); // for windows server 50 | $mail = mail($siteOwnersEmail, $subject, $message, $headers); 51 | 52 | if ($mail) { echo "OK"; } 53 | else { echo "Something went wrong. Please try again."; } 54 | 55 | } # end if - no validation error 56 | 57 | else { 58 | 59 | $response = (isset($error['name'])) ? $error['name'] . "
\n" : null; 60 | $response .= (isset($error['email'])) ? $error['email'] . "
\n" : null; 61 | $response .= (isset($error['message'])) ? $error['message'] . "
" : null; 62 | 63 | echo $response; 64 | 65 | } # end if - there was a validation error 66 | 67 | } 68 | 69 | ?> -------------------------------------------------------------------------------- /code-of-conduct.md: -------------------------------------------------------------------------------- 1 | # Code of Conduct 2 | 3 | We, the organizers of **Nodeschool Karachi**, are dedicated to providing a 4 | harassment-free community for everyone, regardless of sex, gender identity or 5 | expression, sexual orientation, disability, physical appearance, age, body 6 | size, race, nationality, or religious beliefs. We do not tolerate harassment of 7 | community members in any form. Participants violating these rules may be 8 | sanctioned or expelled from the community at the discretion of the organizers 9 | of **Nodeschool Karachi**. 10 | 11 | Harassment includes offensive verbal or written comments related to sex, gender 12 | identity or expression, sexual orientation, disability, physical appearance, 13 | age, body size, race, nationality, or religious beliefs, deliberate 14 | intimidation, threats, stalking, following, harassing photography or recording, 15 | sustained disruption of talks or other events, inappropriate physical contact, 16 | and unwelcome sexual attention. Sexual language and imagery is not appropriate 17 | for any events at **Nodeschool Karachi** meetups or in any related 18 | communication channels. Community members asked to stop any harassing behavior 19 | are expected to comply immediately. Sponsors and presenters are also subject to 20 | the anti-harassment policy. 21 | 22 | If a community member engages in harassing behavior, the organizers of 23 | **Nodeschool Karachi** may take any action they deem appropriate, including 24 | warning the offender or expulsion from the community. If you are being 25 | harassed, notice that someone else is being harassed, or have any concerns, 26 | please contact an organizer immediately. 27 | 28 | ### **Nodeschool Karachi** 29 | 30 | * Organizers: 31 | * **Ahsan Ayaz [@ahsan_ayz](https://twitter.com/ahsan_ayz)** 32 | * Website: [https://github.com/nodeschool/karachi](https://github.com/nodeschool/karachi) 33 | * Facebook: **[@nskarachi](https://web.facebook.com/nskarachi/)** 34 | * Gitter: [https://gitter.im/nodeschool/karachi](https://gitter.im/nodeschool/karachi) 35 | 36 | **If you have questions or feedback about this Code of Conduct please contact 37 | one of the organizers.** 38 | 39 | The organizers of the above communities developed this Code of Conduct to 40 | govern their respective events and communication channels. We used [PDX 41 | Python's anti-harassment policy](http://www.meetup.com/pdxpython/pages/Code_of_Conduct/) 42 | and the [Geek Feminism Conference anti-harassment policy](http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy) 43 | as a starting point. This Code of Conduct, like its inspirations, is licensed under 44 | the [Creative Commons Zero license](http://creativecommons.org/publicdomain/zero/1.0/). -------------------------------------------------------------------------------- /docs/fonts/lightgallery/lg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | { 8 | "fontFamily": "lg", 9 | "majorVersion": 1, 10 | "minorVersion": 0, 11 | "fontURL": "https://github.com/sachinchoolur/lightGallery", 12 | "copyright": "sachin", 13 | "license": "MLT", 14 | "licenseURL": "http://opensource.org/licenses/MIT", 15 | "version": "Version 1.0", 16 | "fontId": "lg", 17 | "psName": "lg", 18 | "subFamily": "Regular", 19 | "fullName": "lg", 20 | "description": "Font generated by IcoMoon." 21 | } 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /docs/readme.txt: -------------------------------------------------------------------------------- 1 | ================================================================================================== 2 | 3 | DESCRIPTION: 4 | 5 | INFINITY is a clean, modern and well crafted responsive template designed for creatives and agencies. 6 | The template suits the needs of creative agencies, freelancers, and even small business websites. 7 | Infinity is mobile and retina/hi-dpi ready which means your site will look awesome, crisp and sharp 8 | on any screen resolutions and devices. Also, the code behind infinity is clean and well organized 9 | which makes the template very easy to customize. 10 | 11 | ================================================================================================== 12 | 13 | 14 | LICENSE: 15 | 16 | 17 | INFINITY is released under the Creative Commons Attribution 3.0 License 18 | (http://creativecommons.org/licenses/by/3.0/). This means that you are free: 19 | 20 | to Share - to copy, distribute, display, and perform the work 21 | to Remix - to make derivative works 22 | to make commercial use of the work 23 | 24 | Under the following conditions: 25 | 26 | Attribution - You must attribute the work in the manner specified by the 27 | author or licensor (but not in any way that suggests that they endorse you 28 | or your use of the work). 29 | 30 | For any reuse or distribution, you must make clear to others the license 31 | terms of this work 32 | 33 | Any of these conditions can be waived if you get permission from the 34 | copyright holder 35 | 36 | Attribution: 37 | 38 | You must include a credit link to our website(http://www.Styleshout.com) somewhere on 39 | your site. We prefer the footer credit that comes with the template but you are still 40 | free to move it somewhere else. 41 | 42 | 43 | ----------------------------------------------------------------------------------------------------- 44 | 45 | 46 | REMOVING THE LINK: 47 | 48 | We understand that there are situations where you want to use the template without the 49 | crediting obligation. If that's your case, you can always send us a 50 | credit removal fee of 10 USD through Paypal. This will allow you to use the 51 | template attribution/credit link free on ONE DOMAIN name. 52 | 53 | You can send your payments through Paypal to this address: ealigam@gmail.com 54 | 55 | If possible, kindly send us the site's url where the template is being used. 56 | Also, keep your Paypal receipt as proof of payment and your good to go. 57 | 58 | 59 | ------------------------------------------------------------------------------------------------------ 60 | 61 | 62 | SUPPORT: 63 | 64 | Since INIFINITY is distributed for free, support is not offered. INFINITY is coded according 65 | to current web standards and we did our best to make the template easy to use and modify. 66 | If you have minimum web development experience, you can easily modify the template. 67 | However, If you're still new to HTML and CSS, I suggest that you visit the 68 | following tutorials: 69 | 70 | - http://tutsplus.com/course/30-days-to-learn-html-and-css/ 71 | - http://learn.shayhowe.com/html-css/ 72 | 73 | These will teach you the essentials of HTML and CSS. In addition, if you want to include 74 | jQuery in your skill-set, you can also check out these tutorials: 75 | 76 | - http://code.tutsplus.com/courses/30-days-to-learn-jquery 77 | - http://try.jquery.com/ 78 | 79 | 80 | ------------------------------------------------------------------------------------------------------ 81 | 82 | 83 | GET THE LATEST VERSION: 84 | 85 | We update our templates on a regular basis so to make sure that you have the latest version, 86 | always download the template files directly on our website(http://www.styleshout.com/) 87 | 88 | 89 | 90 | ------------------------------------------------------------------------------------------------------- 91 | 92 | 93 | SOURCES AND CREDITS: 94 | 95 | I've used the following resources as listed. 96 | 97 | Fonts: 98 | - Montserrat Font (https://www.google.com/fonts/specimen/Montserrat) 99 | - Libre Baskerville Font (https://fonts.google.com/specimen/Libre+Baskerville) 100 | 101 | Icons: 102 | - Font Awesome (http://fortawesome.github.io/Font-Awesome/) 103 | - Micons Free Icons (http://geticonjar.com/freebies/231-micons/) 104 | - Webfont generated by ICOMOON (https://icomoon.io/) 105 | 106 | Stock Photos and Graphics: 107 | - Pexels.com (https://www.pexels.com/) 108 | - Picjumbo.com (https://picjumbo.com/) 109 | - RawPixels.com (https://www.rawpixel.com/) 110 | 111 | Javascript Files: 112 | 113 | - JQuery (http://jquery.com/) 114 | - Modernizr (http://modernizr.com/) 115 | - Waypoints (http://imakewebthings.com/jquery-waypoints/) 116 | - jQuery Placeholder (https://github.com/mathiasbynens/jquery-placeholder) 117 | - FitVids (http://fitvidsjs.com/) 118 | - pace js (http://github.hubspot.com/pace/) 119 | - LightGallery (http://sachinchoolur.github.io/lightGallery/) 120 | - Masonry (http://masonry.desandro.com/) 121 | - ImagesLoaded (http://masonry.desandro.com/) 122 | - jQueryValidation (https://jqueryvalidation.org/) 123 | - ajaxChimp (https://github.com/scdoshi/jquery-ajaxchimp) 124 | 125 | 126 | 127 | ------------------------------------------------------------------------------------------------------- 128 | -------------------------------------------------------------------------------- /docs/js/modernizr.js: -------------------------------------------------------------------------------- 1 | /*! modernizr 3.3.1 (Custom Build) | MIT * 2 | * https://modernizr.com/download/?-audio-backgroundblendmode-canvas-cssanimations-csscalc-cssfilters-cssgradients-cssremunit-csstransforms-csstransforms3d-csstransitions-flexbox-flexboxlegacy-flexboxtweener-flexwrap-svg-touchevents-video-setclasses !*/ 3 | !function(e,n,t){function r(e,n){return typeof e===n}function o(){var e,n,t,o,a,s,i;for(var c in x)if(x.hasOwnProperty(c)){if(e=[],n=x[c],n.name&&(e.push(n.name.toLowerCase()),n.options&&n.options.aliases&&n.options.aliases.length))for(t=0;tu;u++)if(v=e[u],g=j.style[v],d(v,"-")&&(v=i(v)),j.style[v]!==t){if(a||r(o,"undefined"))return c(),"pfx"==n?v:!0;try{j.style[v]=o}catch(h){}if(j.style[v]!=g)return c(),"pfx"==n?v:!0}return c(),!1}function g(e,n,t,o,a){var s=e.charAt(0).toUpperCase()+e.slice(1),i=(e+" "+z.join(s+" ")+s).split(" ");return r(n,"string")||r(n,"undefined")?v(i,n,o,a):(i=(e+" "+$.join(s+" ")+s).split(" "),u(i,n,t))}function y(e,n,r){return g(e,t,t,n,r)}var h=[],x=[],T={_version:"3.3.1",_config:{classPrefix:"",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,n){var t=this;setTimeout(function(){n(t[e])},0)},addTest:function(e,n,t){x.push({name:e,fn:n,options:t})},addAsyncTest:function(e){x.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=T,Modernizr=new Modernizr,Modernizr.addTest("svg",!!n.createElementNS&&!!n.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect);var w=n.documentElement,b="svg"===w.nodeName.toLowerCase();Modernizr.addTest("audio",function(){var e=s("audio"),n=!1;try{(n=!!e.canPlayType)&&(n=new Boolean(n),n.ogg=e.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),n.mp3=e.canPlayType('audio/mpeg; codecs="mp3"').replace(/^no$/,""),n.opus=e.canPlayType('audio/ogg; codecs="opus"')||e.canPlayType('audio/webm; codecs="opus"').replace(/^no$/,""),n.wav=e.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),n.m4a=(e.canPlayType("audio/x-m4a;")||e.canPlayType("audio/aac;")).replace(/^no$/,""))}catch(t){}return n}),Modernizr.addTest("canvas",function(){var e=s("canvas");return!(!e.getContext||!e.getContext("2d"))}),Modernizr.addTest("cssremunit",function(){var e=s("a").style;try{e.fontSize="3rem"}catch(n){}return/rem/.test(e.fontSize)});var C=T._config.usePrefixes?" -webkit- -moz- -o- -ms- ".split(" "):["",""];T._prefixes=C,Modernizr.addTest("csscalc",function(){var e="width:",n="calc(10px);",t=s("a");return t.style.cssText=e+C.join(n+e),!!t.style.length}),Modernizr.addTest("cssgradients",function(){for(var e,n="background-image:",t="gradient(linear,left top,right bottom,from(#9f9),to(white));",r="",o=0,a=C.length-1;a>o;o++)e=0===o?"to ":"",r+=n+C[o]+"linear-gradient("+e+"left top, #9f9, white);";Modernizr._config.usePrefixes&&(r+=n+"-webkit-"+t);var i=s("a"),c=i.style;return c.cssText=r,(""+c.backgroundImage).indexOf("gradient")>-1});var S="CSS"in e&&"supports"in e.CSS,P="supportsCSS"in e;Modernizr.addTest("supports",S||P);var _=T.testStyles=l;Modernizr.addTest("touchevents",function(){var t;if("ontouchstart"in e||e.DocumentTouch&&n instanceof DocumentTouch)t=!0;else{var r=["@media (",C.join("touch-enabled),("),"heartz",")","{#modernizr{top:9px;position:absolute}}"].join("");_(r,function(e){t=9===e.offsetTop})}return t});var E="Moz O ms Webkit",z=T._config.usePrefixes?E.split(" "):[];T._cssomPrefixes=z;var k=function(n){var r,o=C.length,a=e.CSSRule;if("undefined"==typeof a)return t;if(!n)return!1;if(n=n.replace(/^@/,""),r=n.replace(/-/g,"_").toUpperCase()+"_RULE",r in a)return"@"+n;for(var s=0;o>s;s++){var i=C[s],c=i.toUpperCase()+"_"+r;if(c in a)return"@-"+i.toLowerCase()+"-"+n}return!1};T.atRule=k;var $=T._config.usePrefixes?E.toLowerCase().split(" "):[];T._domPrefixes=$;var N={elem:s("modernizr")};Modernizr._q.push(function(){delete N.elem});var j={style:N.elem.style};Modernizr._q.unshift(function(){delete j.style}),Modernizr.addTest("video",function(){var e=s("video"),n=!1;try{(n=!!e.canPlayType)&&(n=new Boolean(n),n.ogg=e.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),n.h264=e.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),n.webm=e.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,""),n.vp9=e.canPlayType('video/webm; codecs="vp9"').replace(/^no$/,""),n.hls=e.canPlayType('application/x-mpegURL; codecs="avc1.42E01E"').replace(/^no$/,""))}catch(t){}return n}),T.testAllProps=g,T.testAllProps=y,Modernizr.addTest("cssanimations",y("animationName","a",!0)),Modernizr.addTest("cssfilters",function(){if(Modernizr.supports)return y("filter","blur(2px)");var e=s("a");return e.style.cssText=C.join("filter:blur(2px); "),!!e.style.length&&(n.documentMode===t||n.documentMode>9)}),Modernizr.addTest("flexbox",y("flexBasis","1px",!0)),Modernizr.addTest("flexboxlegacy",y("boxDirection","reverse",!0)),Modernizr.addTest("flexboxtweener",y("flexAlign","end",!0)),Modernizr.addTest("flexwrap",y("flexWrap","wrap",!0)),Modernizr.addTest("csstransforms",function(){return-1===navigator.userAgent.indexOf("Android 2.")&&y("transform","scale(1)",!0)}),Modernizr.addTest("csstransforms3d",function(){var e=!!y("perspective","1px",!0),n=Modernizr._config.usePrefixes;if(e&&(!n||"webkitPerspective"in w.style)){var t,r="#modernizr{width:0;height:0}";Modernizr.supports?t="@supports (perspective: 1px)":(t="@media (transform-3d)",n&&(t+=",(-webkit-transform-3d)")),t+="{#modernizr{width:7px;height:18px;margin:0;padding:0;border:0}}",_(r+t,function(n){e=7===n.offsetWidth&&18===n.offsetHeight})}return e}),Modernizr.addTest("csstransitions",y("transition","all",!0));var A=T.prefixed=function(e,n,t){return 0===e.indexOf("@")?k(e):(-1!=e.indexOf("-")&&(e=i(e)),n?g(e,n,t):g(e,"pfx"))};Modernizr.addTest("backgroundblendmode",A("backgroundBlendMode","text")),o(),a(h),delete T.addTest,delete T.addAsyncTest;for(var L=0;Lb;b++)if(b in this&&this[b]===a)return b;return-1};for(u={catchupTime:100,initialRate:.03,minTime:250,ghostTime:100,maxProgressPerFrame:20,easeFactor:1.25,startOnPageLoad:!0,restartOnPushState:!0,restartOnRequestAfter:500,target:"body",elements:{checkInterval:100,selectors:["body"]},eventLag:{minSamples:10,sampleCount:3,lagThreshold:3},ajax:{trackMethods:["GET"],trackWebSockets:!0,ignoreURLs:[]}},C=function(){var a;return null!=(a="undefined"!=typeof performance&&null!==performance&&"function"==typeof performance.now?performance.now():void 0)?a:+new Date},E=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame,t=window.cancelAnimationFrame||window.mozCancelAnimationFrame,null==E&&(E=function(a){return setTimeout(a,50)},t=function(a){return clearTimeout(a)}),G=function(a){var b,c;return b=C(),(c=function(){var d;return d=C()-b,d>=33?(b=C(),a(d,function(){return E(c)})):setTimeout(c,33-d)})()},F=function(){var a,b,c;return c=arguments[0],b=arguments[1],a=3<=arguments.length?X.call(arguments,2):[],"function"==typeof c[b]?c[b].apply(c,a):c[b]},v=function(){var a,b,c,d,e,f,g;for(b=arguments[0],d=2<=arguments.length?X.call(arguments,1):[],f=0,g=d.length;g>f;f++)if(c=d[f])for(a in c)Y.call(c,a)&&(e=c[a],null!=b[a]&&"object"==typeof b[a]&&null!=e&&"object"==typeof e?v(b[a],e):b[a]=e);return b},q=function(a){var b,c,d,e,f;for(c=b=0,e=0,f=a.length;f>e;e++)d=a[e],c+=Math.abs(d),b++;return c/b},x=function(a,b){var c,d,e;if(null==a&&(a="options"),null==b&&(b=!0),e=document.querySelector("[data-pace-"+a+"]")){if(c=e.getAttribute("data-pace-"+a),!b)return c;try{return JSON.parse(c)}catch(f){return d=f,"undefined"!=typeof console&&null!==console?console.error("Error parsing inline pace options",d):void 0}}},g=function(){function a(){}return a.prototype.on=function(a,b,c,d){var e;return null==d&&(d=!1),null==this.bindings&&(this.bindings={}),null==(e=this.bindings)[a]&&(e[a]=[]),this.bindings[a].push({handler:b,ctx:c,once:d})},a.prototype.once=function(a,b,c){return this.on(a,b,c,!0)},a.prototype.off=function(a,b){var c,d,e;if(null!=(null!=(d=this.bindings)?d[a]:void 0)){if(null==b)return delete this.bindings[a];for(c=0,e=[];cQ;Q++)K=U[Q],D[K]===!0&&(D[K]=u[K]);i=function(a){function b(){return V=b.__super__.constructor.apply(this,arguments)}return Z(b,a),b}(Error),b=function(){function a(){this.progress=0}return a.prototype.getElement=function(){var a;if(null==this.el){if(a=document.querySelector(D.target),!a)throw new i;this.el=document.createElement("div"),this.el.className="pace pace-active",document.body.className=document.body.className.replace(/pace-done/g,""),document.body.className+=" pace-running",this.el.innerHTML='
\n
\n
\n
',null!=a.firstChild?a.insertBefore(this.el,a.firstChild):a.appendChild(this.el)}return this.el},a.prototype.finish=function(){var a;return a=this.getElement(),a.className=a.className.replace("pace-active",""),a.className+=" pace-inactive",document.body.className=document.body.className.replace("pace-running",""),document.body.className+=" pace-done"},a.prototype.update=function(a){return this.progress=a,this.render()},a.prototype.destroy=function(){try{this.getElement().parentNode.removeChild(this.getElement())}catch(a){i=a}return this.el=void 0},a.prototype.render=function(){var a,b,c,d,e,f,g;if(null==document.querySelector(D.target))return!1;for(a=this.getElement(),d="translate3d("+this.progress+"%, 0, 0)",g=["webkitTransform","msTransform","transform"],e=0,f=g.length;f>e;e++)b=g[e],a.children[0].style[b]=d;return(!this.lastRenderedProgress||this.lastRenderedProgress|0!==this.progress|0)&&(a.children[0].setAttribute("data-progress-text",""+(0|this.progress)+"%"),this.progress>=100?c="99":(c=this.progress<10?"0":"",c+=0|this.progress),a.children[0].setAttribute("data-progress",""+c)),this.lastRenderedProgress=this.progress},a.prototype.done=function(){return this.progress>=100},a}(),h=function(){function a(){this.bindings={}}return a.prototype.trigger=function(a,b){var c,d,e,f,g;if(null!=this.bindings[a]){for(f=this.bindings[a],g=[],d=0,e=f.length;e>d;d++)c=f[d],g.push(c.call(this,b));return g}},a.prototype.on=function(a,b){var c;return null==(c=this.bindings)[a]&&(c[a]=[]),this.bindings[a].push(b)},a}(),P=window.XMLHttpRequest,O=window.XDomainRequest,N=window.WebSocket,w=function(a,b){var c,d,e,f;f=[];for(d in b.prototype)try{e=b.prototype[d],f.push(null==a[d]&&"function"!=typeof e?a[d]=e:void 0)}catch(g){c=g}return f},A=[],j.ignore=function(){var a,b,c;return b=arguments[0],a=2<=arguments.length?X.call(arguments,1):[],A.unshift("ignore"),c=b.apply(null,a),A.shift(),c},j.track=function(){var a,b,c;return b=arguments[0],a=2<=arguments.length?X.call(arguments,1):[],A.unshift("track"),c=b.apply(null,a),A.shift(),c},J=function(a){var b;if(null==a&&(a="GET"),"track"===A[0])return"force";if(!A.length&&D.ajax){if("socket"===a&&D.ajax.trackWebSockets)return!0;if(b=a.toUpperCase(),$.call(D.ajax.trackMethods,b)>=0)return!0}return!1},k=function(a){function b(){var a,c=this;b.__super__.constructor.apply(this,arguments),a=function(a){var b;return b=a.open,a.open=function(d,e){return J(d)&&c.trigger("request",{type:d,url:e,request:a}),b.apply(a,arguments)}},window.XMLHttpRequest=function(b){var c;return c=new P(b),a(c),c};try{w(window.XMLHttpRequest,P)}catch(d){}if(null!=O){window.XDomainRequest=function(){var b;return b=new O,a(b),b};try{w(window.XDomainRequest,O)}catch(d){}}if(null!=N&&D.ajax.trackWebSockets){window.WebSocket=function(a,b){var d;return d=null!=b?new N(a,b):new N(a),J("socket")&&c.trigger("request",{type:"socket",url:a,protocols:b,request:d}),d};try{w(window.WebSocket,N)}catch(d){}}}return Z(b,a),b}(h),R=null,y=function(){return null==R&&(R=new k),R},I=function(a){var b,c,d,e;for(e=D.ajax.ignoreURLs,c=0,d=e.length;d>c;c++)if(b=e[c],"string"==typeof b){if(-1!==a.indexOf(b))return!0}else if(b.test(a))return!0;return!1},y().on("request",function(b){var c,d,e,f,g;return f=b.type,e=b.request,g=b.url,I(g)?void 0:j.running||D.restartOnRequestAfter===!1&&"force"!==J(f)?void 0:(d=arguments,c=D.restartOnRequestAfter||0,"boolean"==typeof c&&(c=0),setTimeout(function(){var b,c,g,h,i,k;if(b="socket"===f?e.readyState<2:0<(h=e.readyState)&&4>h){for(j.restart(),i=j.sources,k=[],c=0,g=i.length;g>c;c++){if(K=i[c],K instanceof a){K.watch.apply(K,d);break}k.push(void 0)}return k}},c))}),a=function(){function a(){var a=this;this.elements=[],y().on("request",function(){return a.watch.apply(a,arguments)})}return a.prototype.watch=function(a){var b,c,d,e;return d=a.type,b=a.request,e=a.url,I(e)?void 0:(c="socket"===d?new n(b):new o(b),this.elements.push(c))},a}(),o=function(){function a(a){var b,c,d,e,f,g,h=this;if(this.progress=0,null!=window.ProgressEvent)for(c=null,a.addEventListener("progress",function(a){return h.progress=a.lengthComputable?100*a.loaded/a.total:h.progress+(100-h.progress)/2},!1),g=["load","abort","timeout","error"],d=0,e=g.length;e>d;d++)b=g[d],a.addEventListener(b,function(){return h.progress=100},!1);else f=a.onreadystatechange,a.onreadystatechange=function(){var b;return 0===(b=a.readyState)||4===b?h.progress=100:3===a.readyState&&(h.progress=50),"function"==typeof f?f.apply(null,arguments):void 0}}return a}(),n=function(){function a(a){var b,c,d,e,f=this;for(this.progress=0,e=["error","open"],c=0,d=e.length;d>c;c++)b=e[c],a.addEventListener(b,function(){return f.progress=100},!1)}return a}(),d=function(){function a(a){var b,c,d,f;for(null==a&&(a={}),this.elements=[],null==a.selectors&&(a.selectors=[]),f=a.selectors,c=0,d=f.length;d>c;c++)b=f[c],this.elements.push(new e(b))}return a}(),e=function(){function a(a){this.selector=a,this.progress=0,this.check()}return a.prototype.check=function(){var a=this;return document.querySelector(this.selector)?this.done():setTimeout(function(){return a.check()},D.elements.checkInterval)},a.prototype.done=function(){return this.progress=100},a}(),c=function(){function a(){var a,b,c=this;this.progress=null!=(b=this.states[document.readyState])?b:100,a=document.onreadystatechange,document.onreadystatechange=function(){return null!=c.states[document.readyState]&&(c.progress=c.states[document.readyState]),"function"==typeof a?a.apply(null,arguments):void 0}}return a.prototype.states={loading:0,interactive:50,complete:100},a}(),f=function(){function a(){var a,b,c,d,e,f=this;this.progress=0,a=0,e=[],d=0,c=C(),b=setInterval(function(){var g;return g=C()-c-50,c=C(),e.push(g),e.length>D.eventLag.sampleCount&&e.shift(),a=q(e),++d>=D.eventLag.minSamples&&a=100&&(this.done=!0),b===this.last?this.sinceLastUpdate+=a:(this.sinceLastUpdate&&(this.rate=(b-this.last)/this.sinceLastUpdate),this.catchup=(b-this.progress)/D.catchupTime,this.sinceLastUpdate=0,this.last=b),b>this.progress&&(this.progress+=this.catchup*a),c=1-Math.pow(this.progress/100,D.easeFactor),this.progress+=c*this.rate*a,this.progress=Math.min(this.lastProgress+D.maxProgressPerFrame,this.progress),this.progress=Math.max(0,this.progress),this.progress=Math.min(100,this.progress),this.lastProgress=this.progress,this.progress},a}(),L=null,H=null,r=null,M=null,p=null,s=null,j.running=!1,z=function(){return D.restartOnPushState?j.restart():void 0},null!=window.history.pushState&&(T=window.history.pushState,window.history.pushState=function(){return z(),T.apply(window.history,arguments)}),null!=window.history.replaceState&&(W=window.history.replaceState,window.history.replaceState=function(){return z(),W.apply(window.history,arguments)}),l={ajax:a,elements:d,document:c,eventLag:f},(B=function(){var a,c,d,e,f,g,h,i;for(j.sources=L=[],g=["ajax","elements","document","eventLag"],c=0,e=g.length;e>c;c++)a=g[c],D[a]!==!1&&L.push(new l[a](D[a]));for(i=null!=(h=D.extraSources)?h:[],d=0,f=i.length;f>d;d++)K=i[d],L.push(new K(D));return j.bar=r=new b,H=[],M=new m})(),j.stop=function(){return j.trigger("stop"),j.running=!1,r.destroy(),s=!0,null!=p&&("function"==typeof t&&t(p),p=null),B()},j.restart=function(){return j.trigger("restart"),j.stop(),j.start()},j.go=function(){var a;return j.running=!0,r.render(),a=C(),s=!1,p=G(function(b,c){var d,e,f,g,h,i,k,l,n,o,p,q,t,u,v,w;for(l=100-r.progress,e=p=0,f=!0,i=q=0,u=L.length;u>q;i=++q)for(K=L[i],o=null!=H[i]?H[i]:H[i]=[],h=null!=(w=K.elements)?w:[K],k=t=0,v=h.length;v>t;k=++t)g=h[k],n=null!=o[k]?o[k]:o[k]=new m(g),f&=n.done,n.done||(e++,p+=n.tick(b));return d=p/e,r.update(M.tick(b,d)),r.done()||f||s?(r.update(100),j.trigger("done"),setTimeout(function(){return r.finish(),j.running=!1,j.trigger("hide")},Math.max(D.ghostTime,Math.max(D.minTime-(C()-a),0)))):c()})},j.start=function(a){v(D,a),j.running=!0;try{r.render()}catch(b){i=b}return document.querySelector(".pace")?(j.trigger("start"),j.go()):setTimeout(j.start,50)},"function"==typeof define&&define.amd?define(function(){return j}):"object"==typeof exports?module.exports=j:D.startOnPageLoad&&j.start()}).call(this); -------------------------------------------------------------------------------- /docs/js/main.js: -------------------------------------------------------------------------------- 1 | /* =================================================================== 2 | * Infinity - Main JS 3 | * 4 | * ------------------------------------------------------------------- */ 5 | 6 | (function ($) { 7 | 8 | "use strict"; 9 | 10 | var cfg = { 11 | defAnimation: "fadeInUp", // default css animation 12 | scrollDuration: 800, // smoothscroll duration 13 | mailChimpURL: 'http://facebook.us8.list-manage.com/subscribe/post?u=cdb7b577e41181934ed6a6a44&id=e65110b38d' 14 | }, 15 | 16 | $WIN = $(window); 17 | 18 | 19 | // Add the User Agent to the 20 | // will be used for IE10 detection (Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)) 21 | var doc = document.documentElement; 22 | doc.setAttribute('data-useragent', navigator.userAgent); 23 | 24 | 25 | /* Preloader 26 | * -------------------------------------------------- */ 27 | var ssPreloader = function () { 28 | 29 | $WIN.on('load', function () { 30 | 31 | // force page scroll position to top at page refresh 32 | $('html, body').animate({ scrollTop: 0 }, 'normal'); 33 | 34 | // will first fade out the loading animation 35 | $("#loader").fadeOut("slow", function () { 36 | 37 | // will fade out the whole DIV that covers the website. 38 | $("#preloader").delay(300).fadeOut("slow"); 39 | 40 | }); 41 | }); 42 | }; 43 | 44 | 45 | /* FitVids 46 | ------------------------------------------------------ */ 47 | var ssFitVids = function () { 48 | $(".fluid-video-wrapper").fitVids(); 49 | }; 50 | 51 | 52 | /* Masonry 53 | ------------------------------------------------------ */ 54 | var ssMasonryFolio = function () { 55 | 56 | var containerBricks = $('.bricks-wrapper'); 57 | 58 | containerBricks.imagesLoaded(function () { 59 | containerBricks.masonry({ 60 | itemSelector: '.brick', 61 | resize: true 62 | }); 63 | }); 64 | }; 65 | 66 | 67 | /* Light Gallery 68 | ------------------------------------------------------- */ 69 | var ssLightGallery = function () { 70 | 71 | $('#folio-wrap').lightGallery({ 72 | showThumbByDefault: false, 73 | hash: false, 74 | selector: ".item-wrap" 75 | }); 76 | }; 77 | 78 | 79 | /* Flexslider 80 | * ------------------------------------------------------ */ 81 | var ssFlexSlider = function () { 82 | 83 | $WIN.on('load', function () { 84 | 85 | $('#testimonial-slider').flexslider({ 86 | namespace: "flex-", 87 | controlsContainer: "", 88 | animation: 'slide', 89 | controlNav: true, 90 | directionNav: false, 91 | smoothHeight: true, 92 | slideshowSpeed: 7000, 93 | animationSpeed: 600, 94 | randomize: false, 95 | touch: true, 96 | }); 97 | 98 | }); 99 | 100 | }; 101 | 102 | 103 | /* Carousel 104 | * ------------------------------------------------------ */ 105 | var ssOwlCarousel = function () { 106 | 107 | $(".owl-carousel").owlCarousel({ 108 | nav: false, 109 | loop: true, 110 | margin: 50, 111 | responsiveClass: true, 112 | responsive: { 113 | 0: { 114 | items: 2, 115 | margin: 20 116 | }, 117 | 400: { 118 | items: 3, 119 | margin: 30 120 | }, 121 | 600: { 122 | items: 4, 123 | margin: 40 124 | }, 125 | 1000: { 126 | items: 6 127 | } 128 | } 129 | }); 130 | 131 | }; 132 | 133 | 134 | 135 | /* Menu on Scrolldown 136 | * ------------------------------------------------------ */ 137 | var ssMenuOnScrolldown = function () { 138 | 139 | var menuTrigger = $('#header-menu-trigger'); 140 | 141 | $WIN.on('scroll', function () { 142 | 143 | if ($WIN.scrollTop() > 150) { 144 | menuTrigger.addClass('opaque'); 145 | } 146 | else { 147 | menuTrigger.removeClass('opaque'); 148 | } 149 | 150 | }); 151 | }; 152 | 153 | 154 | /* OffCanvas Menu 155 | * ------------------------------------------------------ */ 156 | var ssOffCanvas = function () { 157 | 158 | var menuTrigger = $('#header-menu-trigger'), 159 | nav = $('#menu-nav-wrap'), 160 | closeButton = nav.find('.close-button'), 161 | siteBody = $('body'), 162 | mainContents = $('section, footer'); 163 | 164 | // open-close menu by clicking on the menu icon 165 | menuTrigger.on('click', function (e) { 166 | e.preventDefault(); 167 | menuTrigger.toggleClass('is-clicked'); 168 | siteBody.toggleClass('menu-is-open'); 169 | }); 170 | 171 | // close menu by clicking the close button 172 | closeButton.on('click', function (e) { 173 | e.preventDefault(); 174 | menuTrigger.trigger('click'); 175 | }); 176 | 177 | // close menu clicking outside the menu itself 178 | siteBody.on('click', function (e) { 179 | if (!$(e.target).is('#menu-nav-wrap, #header-menu-trigger, #header-menu-trigger span')) { 180 | menuTrigger.removeClass('is-clicked'); 181 | siteBody.removeClass('menu-is-open'); 182 | } 183 | }); 184 | 185 | }; 186 | 187 | 188 | /* Smooth Scrolling 189 | * ------------------------------------------------------ */ 190 | var ssSmoothScroll = function () { 191 | 192 | $('.smoothscroll').on('click', function (e) { 193 | var target = this.hash, 194 | $target = $(target); 195 | 196 | e.preventDefault(); 197 | e.stopPropagation(); 198 | 199 | $('html, body').stop().animate({ 200 | 'scrollTop': $target.offset().top 201 | }, cfg.scrollDuration, 'swing').promise().done(function () { 202 | 203 | // check if menu is open 204 | if ($('body').hasClass('menu-is-open')) { 205 | $('#header-menu-trigger').trigger('click'); 206 | } 207 | 208 | window.location.hash = target; 209 | }); 210 | }); 211 | 212 | }; 213 | 214 | 215 | /* Placeholder Plugin Settings 216 | * ------------------------------------------------------ */ 217 | var ssPlaceholder = function () { 218 | $('input, textarea, select').placeholder(); 219 | }; 220 | 221 | 222 | /* Alert Boxes 223 | ------------------------------------------------------- */ 224 | var ssAlertBoxes = function () { 225 | 226 | $('.alert-box').on('click', '.close', function () { 227 | $(this).parent().fadeOut(500); 228 | }); 229 | 230 | }; 231 | 232 | 233 | /* Animations 234 | * ------------------------------------------------------- */ 235 | var ssAnimations = function () { 236 | 237 | if (!$("html").hasClass('no-cssanimations')) { 238 | $('.animate-this').waypoint({ 239 | handler: function (direction) { 240 | 241 | var defAnimationEfx = cfg.defAnimation; 242 | 243 | if (direction === 'down' && !$(this.element).hasClass('animated')) { 244 | $(this.element).addClass('item-animate'); 245 | 246 | setTimeout(function () { 247 | $('body .animate-this.item-animate').each(function (ctr) { 248 | var el = $(this), 249 | animationEfx = el.data('animate') || null; 250 | 251 | if (!animationEfx) { 252 | animationEfx = defAnimationEfx; 253 | } 254 | 255 | setTimeout(function () { 256 | el.addClass(animationEfx + ' animated'); 257 | el.removeClass('item-animate'); 258 | }, ctr * 30); 259 | 260 | }); 261 | }, 100); 262 | } 263 | 264 | // trigger once only 265 | this.destroy(); 266 | }, 267 | offset: '95%' 268 | }); 269 | } 270 | 271 | }; 272 | 273 | 274 | /* Intro Animation 275 | * ------------------------------------------------------- */ 276 | var ssIntroAnimation = function () { 277 | 278 | $WIN.on('load', function () { 279 | 280 | if (!$("html").hasClass('no-cssanimations')) { 281 | setTimeout(function () { 282 | $('.animate-intro').each(function (ctr) { 283 | var el = $(this), 284 | animationEfx = el.data('animate') || null; 285 | 286 | if (!animationEfx) { 287 | animationEfx = cfg.defAnimation; 288 | } 289 | 290 | setTimeout(function () { 291 | el.addClass(animationEfx + ' animated'); 292 | }, ctr * 300); 293 | }); 294 | }, 100); 295 | } 296 | }); 297 | 298 | }; 299 | 300 | 301 | /* Contact Form 302 | * ------------------------------------------------------ */ 303 | var ssContactForm = function () { 304 | 305 | /* local validation */ 306 | $('#contactForm').validate({ 307 | 308 | /* submit via ajax */ 309 | submitHandler: function (form) { 310 | var sLoader = $('#submit-loader'); 311 | 312 | $.ajax({ 313 | type: "POST", 314 | url: "inc/sendEmail.php", 315 | data: $(form).serialize(), 316 | 317 | beforeSend: function () { 318 | sLoader.fadeIn(); 319 | }, 320 | success: function (msg) { 321 | // Message was sent 322 | if (msg == 'OK') { 323 | sLoader.fadeOut(); 324 | $('#message-warning').hide(); 325 | $('#contactForm').fadeOut(); 326 | $('#message-success').fadeIn(); 327 | } 328 | // There was an error 329 | else { 330 | sLoader.fadeOut(); 331 | $('#message-warning').html(msg); 332 | $('#message-warning').fadeIn(); 333 | } 334 | }, 335 | error: function () { 336 | sLoader.fadeOut(); 337 | $('#message-warning').html("Something went wrong. Please try again."); 338 | $('#message-warning').fadeIn(); 339 | } 340 | }); 341 | } 342 | 343 | }); 344 | }; 345 | 346 | 347 | /* AjaxChimp 348 | * ------------------------------------------------------ */ 349 | var ssAjaxChimp = function () { 350 | 351 | $('#mc-form').ajaxChimp({ 352 | language: 'es', 353 | url: cfg.mailChimpURL 354 | }); 355 | 356 | // Mailchimp translation 357 | // 358 | // Defaults: 359 | // 'submit': 'Submitting...', 360 | // 0: 'We have sent you a confirmation email', 361 | // 1: 'Please enter a value', 362 | // 2: 'An email address must contain a single @', 363 | // 3: 'The domain portion of the email address is invalid (the portion after the @: )', 364 | // 4: 'The username portion of the email address is invalid (the portion before the @: )', 365 | // 5: 'This email address looks fake or invalid. Please enter a real email address' 366 | 367 | $.ajaxChimp.translations.es = { 368 | 'submit': 'Submitting...', 369 | 0: ' We have sent you a confirmation email', 370 | 1: ' You must enter a valid e-mail address.', 371 | 2: ' E-mail address is not valid.', 372 | 3: ' E-mail address is not valid.', 373 | 4: ' E-mail address is not valid.', 374 | 5: ' E-mail address is not valid.' 375 | } 376 | 377 | }; 378 | 379 | 380 | /* Back to Top 381 | * ------------------------------------------------------ */ 382 | var ssBackToTop = function () { 383 | 384 | var pxShow = 500, // height on which the button will show 385 | fadeInTime = 400, // how slow/fast you want the button to show 386 | fadeOutTime = 400, // how slow/fast you want the button to hide 387 | scrollSpeed = 300, // how slow/fast you want the button to scroll to top. can be a value, 'slow', 'normal' or 'fast' 388 | goTopButton = $("#go-top") 389 | 390 | // Show or hide the sticky footer button 391 | $(window).on('scroll', function () { 392 | if ($(window).scrollTop() >= pxShow) { 393 | goTopButton.fadeIn(fadeInTime); 394 | } else { 395 | goTopButton.fadeOut(fadeOutTime); 396 | } 397 | }); 398 | }; 399 | 400 | 401 | 402 | /* Initialize 403 | * ------------------------------------------------------ */ 404 | (function ssInit() { 405 | 406 | ssPreloader(); 407 | ssFitVids(); 408 | ssMasonryFolio(); 409 | ssLightGallery(); 410 | ssFlexSlider(); 411 | ssOwlCarousel(); 412 | ssMenuOnScrolldown(); 413 | ssOffCanvas(); 414 | ssSmoothScroll(); 415 | ssPlaceholder(); 416 | ssAlertBoxes(); 417 | ssAnimations(); 418 | ssIntroAnimation(); 419 | ssContactForm(); 420 | ssAjaxChimp(); 421 | ssBackToTop(); 422 | 423 | })(); 424 | 425 | })(jQuery); 426 | //Sliders 427 | // * ------------------------------------------------------ */ 428 | var slideIndex = 1; 429 | showSlides(slideIndex); 430 | 431 | // Next/previous controls 432 | function plusSlides(n) { 433 | showSlides(slideIndex += n); 434 | } 435 | 436 | // Thumbnail image controls 437 | function currentSlide(n) { 438 | showSlides(slideIndex = n); 439 | } 440 | function showSlides(n) { 441 | var i; 442 | var slides = document.getElementsByClassName("mySlides"); 443 | var dots = document.getElementsByClassName("dot"); 444 | if (n > slides.length) { slideIndex = 1 } 445 | if (n < 1) { slideIndex = slides.length } 446 | for (i = 0; i < slides.length; i++) { 447 | slides[i].style.display = "none"; 448 | } 449 | for (i = 0; i < dots.length; i++) { 450 | dots[i].className = dots[i].className.replace(" active", ""); 451 | } 452 | slides[slideIndex - 1].style.display = "block"; 453 | dots[slideIndex - 1].className += " active"; 454 | } 455 | // ------------------------Model Start----------------------------// 456 | // Get the modal // 457 | // function Event(src, caption, eventLink, description, date) { //TODO: It will be used when we have many events 458 | // this.src = src; 459 | // this.caption = caption; 460 | // this.eventLink = eventLink; 461 | // this.description = description; 462 | // this.date = date; 463 | // } 464 | // var event1 = new Event("images/node_school_event1.jpg","NodeSchool Karachi - The Chapter Begins","https://web.facebook.com/events/541384019573592/","","Saturday, February 17 at 2 PM - 4 PM"); 465 | // var event2 = new Event("images/node_school_event2.jpg","Meetup #2 - REST APIs Workshop","https://web.facebook.com/events/162325484581405/","","Saturday, April 7 at 3 PM - 6 PM"); 466 | var modal = document.getElementById('myModal'); 467 | 468 | // Get the image and insert it inside the modal - use its "alt" text as a caption 469 | var img = document.getElementById('myImg'); 470 | var modalImg = document.getElementById("img01"); 471 | var captionText = document.getElementById("caption"); 472 | var eventDescription = document.getElementById("event-description"); 473 | var eventLink = document.getElementById("event-link"); 474 | var eventDate = document.getElementById("event-date"); 475 | var body = document.getElementsByTagName("BODY")[0]; 476 | function openModel(src,caption, link, event_Date){ 477 | modal.style.display = "block"; 478 | modalImg.src = src; 479 | captionText.innerHTML = caption; 480 | body.style.overflow = "hidden"; 481 | eventLink.href = link; 482 | eventDate.innerHTML = event_Date; 483 | } 484 | 485 | // Get the element that closes the modal 486 | var span = document.getElementsByClassName("close")[0]; 487 | 488 | // When the user clicks on (x), close the modal 489 | span.onclick = function() { 490 | modal.style.display = "none"; 491 | body.style.overflow = "scroll"; 492 | } -------------------------------------------------------------------------------- /docs/css/micons/micons.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'icomoon'; 3 | src: url('fonts/icomoon.eot?jo2z5t'); 4 | src: url('fonts/icomoon.eot?jo2z5t#iefix') format('embedded-opentype'), 5 | url('fonts/icomoon.ttf?jo2z5t') format('truetype'), 6 | url('fonts/icomoon.woff?jo2z5t') format('woff'), 7 | url('fonts/icomoon.svg?jo2z5t#icomoon') format('svg'); 8 | font-weight: normal; 9 | font-style: normal; 10 | } 11 | 12 | [class^="icon-"], [class*=" icon-"] { 13 | /* use !important to prevent issues with browser extensions that change fonts */ 14 | font-family: 'icomoon' !important; 15 | speak: none; 16 | font-style: normal; 17 | font-weight: normal; 18 | font-variant: normal; 19 | text-transform: none; 20 | line-height: 1; 21 | 22 | /* Better Font Rendering =========== */ 23 | -webkit-font-smoothing: antialiased; 24 | -moz-osx-font-smoothing: grayscale; 25 | } 26 | 27 | .icon-align-center:before { 28 | content: "\e900"; 29 | } 30 | .icon-align-justify:before { 31 | content: "\e901"; 32 | } 33 | .icon-align-left:before { 34 | content: "\e902"; 35 | } 36 | .icon-align-right:before { 37 | content: "\e903"; 38 | } 39 | .icon-alt:before { 40 | content: "\e904"; 41 | } 42 | .icon-arrow-right:before { 43 | content: "\e905"; 44 | } 45 | .icon-arrow-up:before { 46 | content: "\e906"; 47 | } 48 | .icon-artboard:before { 49 | content: "\e907"; 50 | } 51 | .icon-at:before { 52 | content: "\e908"; 53 | } 54 | .icon-attachment:before { 55 | content: "\e909"; 56 | } 57 | .icon-backward:before { 58 | content: "\e90a"; 59 | } 60 | .icon-badge:before { 61 | content: "\e90b"; 62 | } 63 | .icon-bank-note:before { 64 | content: "\e90c"; 65 | } 66 | .icon-bar-chart:before { 67 | content: "\e90d"; 68 | } 69 | .icon-basket-ball:before { 70 | content: "\e90e"; 71 | } 72 | .icon-battery-high:before { 73 | content: "\e90f"; 74 | } 75 | .icon-battery-low:before { 76 | content: "\e910"; 77 | } 78 | .icon-bed:before { 79 | content: "\e911"; 80 | } 81 | .icon-bell:before { 82 | content: "\e912"; 83 | } 84 | .icon-bin:before { 85 | content: "\e913"; 86 | } 87 | .icon-block:before { 88 | content: "\e914"; 89 | } 90 | .icon-bluetooth:before { 91 | content: "\e915"; 92 | } 93 | .icon-book:before { 94 | content: "\e916"; 95 | } 96 | .icon-box:before { 97 | content: "\e917"; 98 | } 99 | .icon-brightness:before { 100 | content: "\e918"; 101 | } 102 | .icon-brush:before { 103 | content: "\e919"; 104 | } 105 | .icon-bucket:before { 106 | content: "\e91a"; 107 | } 108 | .icon-building:before { 109 | content: "\e91b"; 110 | } 111 | .icon-calendar:before { 112 | content: "\e91c"; 113 | } 114 | .icon-camera:before { 115 | content: "\e91d"; 116 | } 117 | .icon-car:before { 118 | content: "\e91e"; 119 | } 120 | .icon-card:before { 121 | content: "\e91f"; 122 | } 123 | .icon-chat:before { 124 | content: "\e920"; 125 | } 126 | .icon-circle-bottom-left:before { 127 | content: "\e921"; 128 | } 129 | .icon-circle-bottom-right:before { 130 | content: "\e922"; 131 | } 132 | .icon-circle-down:before { 133 | content: "\e923"; 134 | } 135 | .icon-circle-left:before { 136 | content: "\e924"; 137 | } 138 | .icon-circle-right:before { 139 | content: "\e925"; 140 | } 141 | .icon-circle-top-left:before { 142 | content: "\e926"; 143 | } 144 | .icon-circle-top-right:before { 145 | content: "\e927"; 146 | } 147 | .icon-circle-up:before { 148 | content: "\e928"; 149 | } 150 | .icon-clock:before { 151 | content: "\e929"; 152 | } 153 | .icon-cloud:before { 154 | content: "\e92a"; 155 | } 156 | .icon-cmd:before { 157 | content: "\e92b"; 158 | } 159 | .icon-collapse:before { 160 | content: "\e92c"; 161 | } 162 | .icon-comment:before { 163 | content: "\e92d"; 164 | } 165 | .icon-contrast:before { 166 | content: "\e92e"; 167 | } 168 | .icon-corner-arrow:before { 169 | content: "\e92f"; 170 | } 171 | .icon-cube:before { 172 | content: "\e930"; 173 | } 174 | .icon-cup:before { 175 | content: "\e931"; 176 | } 177 | .icon-cursor:before { 178 | content: "\e932"; 179 | } 180 | .icon-desktop:before { 181 | content: "\e933"; 182 | } 183 | .icon-disk:before { 184 | content: "\e934"; 185 | } 186 | .icon-dollar:before { 187 | content: "\e935"; 188 | } 189 | .icon-download:before { 190 | content: "\e936"; 191 | } 192 | .icon-drawer:before { 193 | content: "\e937"; 194 | } 195 | .icon-drop:before { 196 | content: "\e938"; 197 | } 198 | .icon-earth:before { 199 | content: "\e939"; 200 | } 201 | .icon-edit:before { 202 | content: "\e93a"; 203 | } 204 | .icon-education:before { 205 | content: "\e93b"; 206 | } 207 | .icon-eject:before { 208 | content: "\e93c"; 209 | } 210 | .icon-euro:before { 211 | content: "\e93d"; 212 | } 213 | .icon-expand:before { 214 | content: "\e93e"; 215 | } 216 | .icon-external:before { 217 | content: "\e93f"; 218 | } 219 | .icon-eye:before { 220 | content: "\e940"; 221 | } 222 | .icon-factory:before { 223 | content: "\e941"; 224 | } 225 | .icon-fast-forward:before { 226 | content: "\e942"; 227 | } 228 | .icon-file:before { 229 | content: "\e943"; 230 | } 231 | .icon-file-add:before { 232 | content: "\e944"; 233 | } 234 | .icon-file-remove:before { 235 | content: "\e945"; 236 | } 237 | .icon-files:before { 238 | content: "\e946"; 239 | } 240 | .icon-filter:before { 241 | content: "\e947"; 242 | } 243 | .icon-fire:before { 244 | content: "\e948"; 245 | } 246 | .icon-first-aid:before { 247 | content: "\e949"; 248 | } 249 | .icon-flag:before { 250 | content: "\e94a"; 251 | } 252 | .icon-floppy:before { 253 | content: "\e94b"; 254 | } 255 | .icon-folder:before { 256 | content: "\e94c"; 257 | } 258 | .icon-folder-add:before { 259 | content: "\e94d"; 260 | } 261 | .icon-folder-remove:before { 262 | content: "\e94e"; 263 | } 264 | .icon-fork-knife:before { 265 | content: "\e94f"; 266 | } 267 | .icon-form:before { 268 | content: "\e950"; 269 | } 270 | .icon-frame:before { 271 | content: "\e951"; 272 | } 273 | .icon-full-screen:before { 274 | content: "\e952"; 275 | } 276 | .icon-gift:before { 277 | content: "\e953"; 278 | } 279 | .icon-glass:before { 280 | content: "\e954"; 281 | } 282 | .icon-glasses:before { 283 | content: "\e955"; 284 | } 285 | .icon-grid:before { 286 | content: "\e956"; 287 | } 288 | .icon-group:before { 289 | content: "\e957"; 290 | } 291 | .icon-headset:before { 292 | content: "\e958"; 293 | } 294 | .icon-heart:before { 295 | content: "\e959"; 296 | } 297 | .icon-hide-sdebar-vert:before { 298 | content: "\e95a"; 299 | } 300 | .icon-hide-sidebar-horiz:before { 301 | content: "\e95b"; 302 | } 303 | .icon-home:before { 304 | content: "\e95c"; 305 | } 306 | .icon-id:before { 307 | content: "\e95d"; 308 | } 309 | .icon-image:before { 310 | content: "\e95e"; 311 | } 312 | .icon-info:before { 313 | content: "\e95f"; 314 | } 315 | .icon-invoice:before { 316 | content: "\e960"; 317 | } 318 | .icon-juice:before { 319 | content: "\e961"; 320 | } 321 | .icon-key:before { 322 | content: "\e962"; 323 | } 324 | .icon-lamp:before { 325 | content: "\e963"; 326 | } 327 | .icon-layers:before { 328 | content: "\e964"; 329 | } 330 | .icon-leaf:before { 331 | content: "\e965"; 332 | } 333 | .icon-left:before { 334 | content: "\e966"; 335 | } 336 | .icon-left-right:before { 337 | content: "\e967"; 338 | } 339 | .icon-lego-block:before { 340 | content: "\e968"; 341 | } 342 | .icon-life-buoy:before { 343 | content: "\e969"; 344 | } 345 | .icon-light-bulb:before { 346 | content: "\e96a"; 347 | } 348 | .icon-link:before { 349 | content: "\e96b"; 350 | } 351 | .icon-list:before { 352 | content: "\e96c"; 353 | } 354 | .icon-loading:before { 355 | content: "\e96d"; 356 | } 357 | .icon-logout:before { 358 | content: "\e96e"; 359 | } 360 | .icon-mail:before { 361 | content: "\e96f"; 362 | } 363 | .icon-mail-open:before { 364 | content: "\e970"; 365 | } 366 | .icon-map:before { 367 | content: "\e971"; 368 | } 369 | .icon-margin:before { 370 | content: "\e972"; 371 | } 372 | .icon-megaphone:before { 373 | content: "\e973"; 374 | } 375 | .icon-meh:before { 376 | content: "\e974"; 377 | } 378 | .icon-menu-circle:before { 379 | content: "\e975"; 380 | } 381 | .icon-menu-circle-dots:before { 382 | content: "\e976"; 383 | } 384 | .icon-menu-dots:before { 385 | content: "\e977"; 386 | } 387 | .icon-menu-lines:before { 388 | content: "\e978"; 389 | } 390 | .icon-microphone:before { 391 | content: "\e979"; 392 | } 393 | .icon-minus:before { 394 | content: "\e97a"; 395 | } 396 | .icon-mobile:before { 397 | content: "\e97b"; 398 | } 399 | .icon-mouse:before { 400 | content: "\e97c"; 401 | } 402 | .icon-move:before { 403 | content: "\e97d"; 404 | } 405 | .icon-move-diagonal:before { 406 | content: "\e97e"; 407 | } 408 | .icon-move-horizontal:before { 409 | content: "\e97f"; 410 | } 411 | .icon-move-vertical:before { 412 | content: "\e980"; 413 | } 414 | .icon-mug:before { 415 | content: "\e981"; 416 | } 417 | .icon-music:before { 418 | content: "\e982"; 419 | } 420 | .icon-network:before { 421 | content: "\e983"; 422 | } 423 | .icon-new-file:before { 424 | content: "\e984"; 425 | } 426 | .icon-newspaper:before { 427 | content: "\e985"; 428 | } 429 | .icon-next:before { 430 | content: "\e986"; 431 | } 432 | .icon-no:before { 433 | content: "\e987"; 434 | } 435 | .icon-notes:before { 436 | content: "\e988"; 437 | } 438 | .icon-objects:before { 439 | content: "\e989"; 440 | } 441 | .icon-padding:before { 442 | content: "\e98a"; 443 | } 444 | .icon-padlock:before { 445 | content: "\e98b"; 446 | } 447 | .icon-padlock-open:before { 448 | content: "\e98c"; 449 | } 450 | .icon-paint-brush:before { 451 | content: "\e98d"; 452 | } 453 | .icon-paper-plane:before { 454 | content: "\e98e"; 455 | } 456 | .icon-pause:before { 457 | content: "\e98f"; 458 | } 459 | .icon-pen:before { 460 | content: "\e990"; 461 | } 462 | .icon-pencil:before { 463 | content: "\e991"; 464 | } 465 | .icon-pencil-ruler:before { 466 | content: "\e992"; 467 | } 468 | .icon-phone:before { 469 | content: "\e993"; 470 | } 471 | .icon-pie-chart:before { 472 | content: "\e994"; 473 | } 474 | .icon-pin:before { 475 | content: "\e995"; 476 | } 477 | .icon-pin-2:before { 478 | content: "\e996"; 479 | } 480 | .icon-pin-point:before { 481 | content: "\e997"; 482 | } 483 | .icon-play:before { 484 | content: "\e998"; 485 | } 486 | .icon-plug:before { 487 | content: "\e999"; 488 | } 489 | .icon-plus:before { 490 | content: "\e99a"; 491 | } 492 | .icon-pound:before { 493 | content: "\e99b"; 494 | } 495 | .icon-power-on:before { 496 | content: "\e99c"; 497 | } 498 | .icon-previous:before { 499 | content: "\e99d"; 500 | } 501 | .icon-printer:before { 502 | content: "\e99e"; 503 | } 504 | .icon-projector:before { 505 | content: "\e99f"; 506 | } 507 | .icon-question:before { 508 | content: "\e9a0"; 509 | } 510 | .icon-quote:before { 511 | content: "\e9a1"; 512 | } 513 | .icon-record:before { 514 | content: "\e9a2"; 515 | } 516 | .icon-recycle:before { 517 | content: "\e9a3"; 518 | } 519 | .icon-redo:before { 520 | content: "\e9a4"; 521 | } 522 | .icon-refresh:before { 523 | content: "\e9a5"; 524 | } 525 | .icon-rotate-clock:before { 526 | content: "\e9a6"; 527 | } 528 | .icon-rotate-counter:before { 529 | content: "\e9a7"; 530 | } 531 | .icon-sad:before { 532 | content: "\e9a8"; 533 | } 534 | .icon-scales:before { 535 | content: "\e9a9"; 536 | } 537 | .icon-search:before { 538 | content: "\e9aa"; 539 | } 540 | .icon-selection:before { 541 | content: "\e9ab"; 542 | } 543 | .icon-settings:before { 544 | content: "\e9ac"; 545 | } 546 | .icon-shapes:before { 547 | content: "\e9ad"; 548 | } 549 | .icon-share:before { 550 | content: "\e9ae"; 551 | } 552 | .icon-shield:before { 553 | content: "\e9af"; 554 | } 555 | .icon-shopping-cart:before { 556 | content: "\e9b0"; 557 | } 558 | .icon-show-sidebar-horiz:before { 559 | content: "\e9b1"; 560 | } 561 | .icon-show-sidebar-vert:before { 562 | content: "\e9b2"; 563 | } 564 | .icon-shuffle:before { 565 | content: "\e9b3"; 566 | } 567 | .icon-sign:before { 568 | content: "\e9b4"; 569 | } 570 | .icon-signal:before { 571 | content: "\e9b5"; 572 | } 573 | .icon-skull:before { 574 | content: "\e9b6"; 575 | } 576 | .icon-sliders:before { 577 | content: "\e9b7"; 578 | } 579 | .icon-small-screen:before { 580 | content: "\e9b8"; 581 | } 582 | .icon-smile:before { 583 | content: "\e9b9"; 584 | } 585 | .icon-soap:before { 586 | content: "\e9ba"; 587 | } 588 | .icon-speed-o-meter:before { 589 | content: "\e9bb"; 590 | } 591 | .icon-star:before { 592 | content: "\e9bc"; 593 | } 594 | .icon-stop:before { 595 | content: "\e9bd"; 596 | } 597 | .icon-styling-tools:before { 598 | content: "\e9be"; 599 | } 600 | .icon-suitcase:before { 601 | content: "\e9bf"; 602 | } 603 | .icon-syringe:before { 604 | content: "\e9c0"; 605 | } 606 | .icon-table:before { 607 | content: "\e9c1"; 608 | } 609 | .icon-tag:before { 610 | content: "\e9c2"; 611 | } 612 | .icon-target:before { 613 | content: "\e9c3"; 614 | } 615 | .icon-terminal:before { 616 | content: "\e9c4"; 617 | } 618 | .icon-text:before { 619 | content: "\e9c5"; 620 | } 621 | .icon-thumbs-down:before { 622 | content: "\e9c6"; 623 | } 624 | .icon-thumbs-up:before { 625 | content: "\e9c7"; 626 | } 627 | .icon-thunderbolt:before { 628 | content: "\e9c8"; 629 | } 630 | .icon-tie:before { 631 | content: "\e9c9"; 632 | } 633 | .icon-toggles:before { 634 | content: "\e9ca"; 635 | } 636 | .icon-trophy:before { 637 | content: "\e9cb"; 638 | } 639 | .icon-truck:before { 640 | content: "\e9cc"; 641 | } 642 | .icon-tube:before { 643 | content: "\e9cd"; 644 | } 645 | .icon-tv:before { 646 | content: "\e9ce"; 647 | } 648 | .icon-umbrella:before { 649 | content: "\e9cf"; 650 | } 651 | .icon-undo:before { 652 | content: "\e9d0"; 653 | } 654 | .icon-up:before { 655 | content: "\e9d1"; 656 | } 657 | .icon-update:before { 658 | content: "\e9d2"; 659 | } 660 | .icon-up-down:before { 661 | content: "\e9d3"; 662 | } 663 | .icon-upload:before { 664 | content: "\e9d4"; 665 | } 666 | .icon-user:before { 667 | content: "\e9d5"; 668 | } 669 | .icon-user-add:before { 670 | content: "\e9d6"; 671 | } 672 | .icon-user-remove:before { 673 | content: "\e9d7"; 674 | } 675 | .icon-users:before { 676 | content: "\e9d8"; 677 | } 678 | .icon-video:before { 679 | content: "\e9d9"; 680 | } 681 | .icon-video-camera:before { 682 | content: "\e9da"; 683 | } 684 | .icon-volume-down:before { 685 | content: "\e9db"; 686 | } 687 | .icon-volume-mute:before { 688 | content: "\e9dc"; 689 | } 690 | .icon-volume-up:before { 691 | content: "\e9dd"; 692 | } 693 | .icon-wallet:before { 694 | content: "\e9de"; 695 | } 696 | .icon-wand:before { 697 | content: "\e9df"; 698 | } 699 | .icon-warning:before { 700 | content: "\e9e0"; 701 | } 702 | .icon-wi-fi:before { 703 | content: "\e9e1"; 704 | } 705 | .icon-window:before { 706 | content: "\e9e2"; 707 | } 708 | .icon-wrench:before { 709 | content: "\e9e3"; 710 | } 711 | .icon-yes:before { 712 | content: "\e9e4"; 713 | } 714 | .icon-zoom-in:before { 715 | content: "\e9e5"; 716 | } 717 | .icon-zoom-out:before { 718 | content: "\e9e6"; 719 | } 720 | 721 | -------------------------------------------------------------------------------- /docs/css/base.css: -------------------------------------------------------------------------------- 1 | /* =================================================================== 2 | * 3 | * Infinity v1.0 Base Stylesheet 4 | * 01-02-2017 5 | * ------------------------------------------------------------------ 6 | * TOC: 7 | * 01. reset 8 | * 02. basic/base setup styles 9 | * 03. grid 10 | * 04. MISC 11 | * 12 | * =================================================================== */ 13 | 14 | /* =================================================================== 15 | * 01. reset - normalize.css v3.0.2 | MIT License | git.io/normalize 16 | * 17 | * ------------------------------------------------------------------- */ 18 | html { 19 | font-family: sans-serif; 20 | -ms-text-size-adjust: 100%; 21 | -webkit-text-size-adjust: 100%; 22 | } 23 | 24 | body { 25 | margin: 0; 26 | } 27 | 28 | article, 29 | aside, 30 | details, 31 | figcaption, 32 | figure, 33 | footer, 34 | header, 35 | hgroup, 36 | main, 37 | menu, 38 | nav, 39 | section, 40 | summary { 41 | display: block; 42 | } 43 | 44 | audio, canvas, progress, video { 45 | display: inline-block; 46 | vertical-align: baseline; 47 | } 48 | 49 | audio:not([controls]) { 50 | display: none; 51 | height: 0; 52 | } 53 | 54 | [hidden], 55 | template { 56 | display: none; 57 | } 58 | 59 | a { 60 | background: transparent; 61 | } 62 | 63 | a:active, a:hover { 64 | outline: 0; 65 | } 66 | 67 | abbr[title] { 68 | border-bottom: 1px dotted; 69 | } 70 | 71 | b, strong { 72 | font-weight: bold; 73 | } 74 | 75 | dfn { 76 | font-style: italic; 77 | } 78 | 79 | h1 { 80 | font-size: 2em; 81 | margin: 0.67em 0; 82 | } 83 | 84 | mark { 85 | background: #ff0; 86 | color: #000; 87 | } 88 | 89 | small { 90 | font-size: 80%; 91 | } 92 | 93 | sub, 94 | sup { 95 | font-size: 75%; 96 | line-height: 0; 97 | position: relative; 98 | vertical-align: baseline; 99 | } 100 | 101 | sup { 102 | top: -0.5em; 103 | } 104 | 105 | sub { 106 | bottom: -0.25em; 107 | } 108 | 109 | img { 110 | border: 0; 111 | } 112 | 113 | svg:not(:root) { 114 | overflow: hidden; 115 | } 116 | 117 | figure { 118 | margin: 1em 40px; 119 | } 120 | 121 | hr { 122 | -moz-box-sizing: content-box; 123 | box-sizing: content-box; 124 | height: 0; 125 | } 126 | 127 | pre { 128 | overflow: auto; 129 | } 130 | 131 | code, 132 | kbd, 133 | pre, 134 | samp { 135 | font-family: monospace, monospace; 136 | font-size: 1em; 137 | } 138 | 139 | button, input, optgroup, 140 | select, textarea { 141 | color: inherit; 142 | font: inherit; 143 | margin: 0; 144 | } 145 | 146 | button { 147 | overflow: visible; 148 | } 149 | 150 | button, select { 151 | text-transform: none; 152 | } 153 | 154 | button, 155 | html input[type="button"], 156 | input[type="reset"], 157 | input[type="submit"] { 158 | -webkit-appearance: button; 159 | cursor: pointer; 160 | } 161 | 162 | button[disabled], 163 | html input[disabled] { 164 | cursor: default; 165 | } 166 | 167 | button::-moz-focus-inner, 168 | input::-moz-focus-inner { 169 | border: 0; 170 | padding: 0; 171 | } 172 | 173 | input { 174 | line-height: normal; 175 | } 176 | 177 | input[type="checkbox"], 178 | input[type="radio"] { 179 | box-sizing: border-box; 180 | padding: 0; 181 | } 182 | 183 | input[type="number"]::-webkit-inner-spin-button, 184 | input[type="number"]::-webkit-outer-spin-button { 185 | height: auto; 186 | } 187 | 188 | input[type="search"] { 189 | -webkit-appearance: textfield; 190 | -moz-box-sizing: content-box; 191 | -webkit-box-sizing: content-box; 192 | box-sizing: content-box; 193 | } 194 | 195 | input[type="search"]::-webkit-search-cancel-button, 196 | input[type="search"]::-webkit-search-decoration { 197 | -webkit-appearance: none; 198 | } 199 | 200 | fieldset { 201 | border: 1px solid #c0c0c0; 202 | margin: 0 2px; 203 | padding: 0.35em 0.625em 0.75em; 204 | } 205 | 206 | legend { 207 | border: 0; 208 | padding: 0; 209 | } 210 | 211 | textarea { 212 | overflow: auto; 213 | } 214 | 215 | optgroup { 216 | font-weight: bold; 217 | } 218 | 219 | table { 220 | border-collapse: collapse; 221 | border-spacing: 0; 222 | } 223 | 224 | td, th { 225 | padding: 0; 226 | } 227 | 228 | /* =================================================================== 229 | * 02. basic/base setup styles - (_basic.scss) 230 | * 231 | * ------------------------------------------------------------------- */ 232 | html { 233 | font-size: 62.5%; 234 | box-sizing: border-box; 235 | } 236 | 237 | *, 238 | *::before, 239 | *::after { 240 | box-sizing: inherit; 241 | } 242 | 243 | body { 244 | font-weight: normal; 245 | line-height: 1; 246 | text-rendering: optimizeLegibility; 247 | word-wrap: break-word; 248 | -webkit-overflow-scrolling: touch; 249 | -webkit-text-size-adjust: none; 250 | } 251 | 252 | body, input, button { 253 | -moz-osx-font-smoothing: grayscale; 254 | -webkit-font-smoothing: antialiased; 255 | } 256 | 257 | /* ------------------------------------------------------------------- 258 | * Media - (_basic.scss) 259 | * ------------------------------------------------------------------- */ 260 | img, video { 261 | max-width: 100%; 262 | height: auto; 263 | } 264 | 265 | /* ------------------------------------------------------------------- 266 | * Typography resets - (_basic.scss) 267 | * ------------------------------------------------------------------- */ 268 | div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, form, p, blockquote, th, td { 269 | margin: 0; 270 | padding: 0; 271 | } 272 | 273 | h1, h2, h3, h4, h5, h6 { 274 | -webkit-font-variant-ligatures: common-ligatures; 275 | -moz-font-variant-ligatures: common-ligatures; 276 | font-variant-ligatures: common-ligatures; 277 | text-rendering: optimizeLegibility; 278 | } 279 | 280 | em, i { 281 | font-style: italic; 282 | line-height: inherit; 283 | } 284 | 285 | strong, b { 286 | font-weight: bold; 287 | line-height: inherit; 288 | } 289 | 290 | small { 291 | font-size: 60%; 292 | line-height: inherit; 293 | } 294 | 295 | ol, ul { 296 | list-style: none; 297 | } 298 | 299 | li { 300 | display: block; 301 | } 302 | 303 | /* ------------------------------------------------------------------- 304 | * links - (_basic.scss) 305 | * ------------------------------------------------------------------- */ 306 | a { 307 | text-decoration: none; 308 | line-height: inherit; 309 | } 310 | 311 | a img { 312 | border: none; 313 | } 314 | 315 | /* ------------------------------------------------------------------- 316 | * inputs - (_basic.scss) 317 | * ------------------------------------------------------------------- */ 318 | fieldset { 319 | margin: 0; 320 | padding: 0; 321 | } 322 | 323 | input[type="email"], 324 | input[type="number"], 325 | input[type="search"], 326 | input[type="text"], 327 | input[type="tel"], 328 | input[type="url"], 329 | input[type="password"], 330 | textarea { 331 | -webkit-appearance: none; 332 | -moz-appearance: none; 333 | -ms-appearance: none; 334 | -o-appearance: none; 335 | appearance: none; 336 | } 337 | 338 | /* =================================================================== 339 | * 03. grid - (_grid.scss) 340 | * 341 | * ------------------------------------------------------------------- */ 342 | .row { 343 | width: 94%; 344 | max-width: 1170px; 345 | margin: 0 auto; 346 | } 347 | .row:before, .row:after { 348 | content: ""; 349 | display: table; 350 | } 351 | .row:after { 352 | clear: both; 353 | } 354 | 355 | .row .row { 356 | width: auto; 357 | max-width: none; 358 | margin-left: -20px; 359 | margin-right: -20px; 360 | } 361 | 362 | [class*="col-"], .bgrid { 363 | float: left; 364 | } 365 | 366 | [class*="col-"] + [class*="col-"].end { 367 | float: right; 368 | } 369 | 370 | [class*="col-"] { 371 | padding: 0 20px; 372 | } 373 | 374 | .col-one { 375 | width: 8.33333%; 376 | } 377 | 378 | .col-two, .col-1-6 { 379 | width: 16.66667%; 380 | } 381 | 382 | .col-three, .col-1-4 { 383 | width: 25%; 384 | } 385 | 386 | .col-four, .col-1-3 { 387 | width: 33.33333%; 388 | } 389 | 390 | .col-five { 391 | width: 41.66667%; 392 | } 393 | 394 | .col-six, .col-1-2 { 395 | width: 50%; 396 | } 397 | 398 | .col-seven { 399 | width: 58.33333%; 400 | } 401 | 402 | .col-eight, .col-2-3 { 403 | width: 66.66667%; 404 | } 405 | 406 | .col-nine, .col-3-4 { 407 | width: 75%; 408 | } 409 | 410 | .col-ten, .col-5-6 { 411 | width: 83.33333%; 412 | } 413 | 414 | .col-eleven { 415 | width: 91.66667%; 416 | } 417 | 418 | .col-twelve, .col-full { 419 | width: 100%; 420 | } 421 | 422 | /* ------------------------------------------------------------------- 423 | * small screens - (_grid.scss) 424 | * ------------------------------------------------------------------- */ 425 | @media screen and (max-width: 1024px) { 426 | .row .row { 427 | margin-left: -18px; 428 | margin-right: -18px; 429 | } 430 | 431 | [class*="col-"] { 432 | padding: 0 18px; 433 | } 434 | } 435 | /* ------------------------------------------------------------------- 436 | * tablets - (_grid.scss) 437 | * ------------------------------------------------------------------- */ 438 | @media screen and (max-width: 768px) { 439 | .row { 440 | width: auto; 441 | padding-left: 30px; 442 | padding-right: 30px; 443 | } 444 | 445 | .row .row { 446 | padding-left: 0; 447 | padding-right: 0; 448 | margin-left: -15px; 449 | margin-right: -15px; 450 | } 451 | 452 | [class*="col-"] { 453 | padding: 0 15px; 454 | } 455 | 456 | .tab-1-4 { 457 | width: 25%; 458 | } 459 | 460 | .tab-1-3 { 461 | width: 33.33333%; 462 | } 463 | 464 | .tab-1-2 { 465 | width: 50%; 466 | } 467 | 468 | .tab-2-3 { 469 | width: 66.66667%; 470 | } 471 | 472 | .tab-3-4 { 473 | width: 75%; 474 | } 475 | 476 | .tab-full { 477 | width: 100%; 478 | } 479 | } 480 | /* ------------------------------------------------------------------- 481 | * large mobile devices - (_grid.scss) 482 | * ------------------------------------------------------------------- */ 483 | @media screen and (max-width: 600px) { 484 | .row { 485 | padding-left: 25px; 486 | padding-right: 25px; 487 | } 488 | 489 | .row .row { 490 | margin-left: -10px; 491 | margin-right: -10px; 492 | } 493 | 494 | [class*="col-"] { 495 | padding: 0 10px; 496 | } 497 | 498 | .mob-1-4 { 499 | width: 25%; 500 | } 501 | 502 | .mob-1-2 { 503 | width: 50%; 504 | } 505 | 506 | .mob-3-4 { 507 | width: 75%; 508 | } 509 | 510 | .mob-full { 511 | width: 100%; 512 | } 513 | } 514 | /* ------------------------------------------------------------------- 515 | * small mobile devices - (_grid.scss) 516 | * ------------------------------------------------------------------- */ 517 | @media screen and (max-width: 400px) { 518 | .row .row { 519 | padding-left: 0; 520 | padding-right: 0; 521 | margin-left: 0; 522 | margin-right: 0; 523 | } 524 | 525 | [class*="col-"] { 526 | width: 100% !important; 527 | float: none !important; 528 | clear: both !important; 529 | margin-left: 0; 530 | margin-right: 0; 531 | padding: 0; 532 | } 533 | 534 | [class*="col-"] + [class*="col-"].end { 535 | float: none; 536 | } 537 | } 538 | /* =================================================================== 539 | * block grids - (_grid.scss) 540 | * 541 | * ------------------------------------------------------------------- */ 542 | [class*="block-"]:before, [class*="block-"]:after { 543 | content: ""; 544 | display: table; 545 | } 546 | [class*="block-"]:after { 547 | clear: both; 548 | } 549 | 550 | .block-1-6 .bgrid { 551 | width: 16.66667%; 552 | } 553 | 554 | .block-1-4 .bgrid { 555 | width: 25%; 556 | } 557 | 558 | .block-1-3 .bgrid { 559 | width: 33.33333%; 560 | } 561 | 562 | .block-1-2 .bgrid { 563 | width: 50%; 564 | } 565 | 566 | /** 567 | * Clearing for block grid columns. Allow columns with 568 | * different heights to align properly. 569 | */ 570 | .block-1-6 .bgrid:nth-child(6n+1), 571 | .block-1-4 .bgrid:nth-child(4n+1), 572 | .block-1-3 .bgrid:nth-child(3n+1), 573 | .block-1-2 .bgrid:nth-child(2n+1) { 574 | clear: both; 575 | } 576 | 577 | /* ------------------------------------------------------------------- 578 | * small screens - (_grid.scss) 579 | * ------------------------------------------------------------------- */ 580 | @media screen and (max-width: 1024px) { 581 | .block-s-1-6 .bgrid { 582 | width: 16.66667%; 583 | } 584 | 585 | .block-s-1-4 .bgrid { 586 | width: 25%; 587 | } 588 | 589 | .block-s-1-3 .bgrid { 590 | width: 33.33333%; 591 | } 592 | 593 | .block-s-1-2 .bgrid { 594 | width: 50%; 595 | } 596 | 597 | .block-s-full .bgrid { 598 | width: 100%; 599 | clear: both; 600 | } 601 | 602 | [class*="block-s-"] .bgrid:nth-child(n) { 603 | clear: none; 604 | } 605 | 606 | .block-s-1-6 .bgrid:nth-child(6n+1), 607 | .block-s-1-4 .bgrid:nth-child(4n+1), 608 | .block-s-1-3 .bgrid:nth-child(3n+1), 609 | .block-s-1-2 .bgrid:nth-child(2n+1) { 610 | clear: both; 611 | } 612 | } 613 | /* ------------------------------------------------------------------- 614 | * tablets - (_grid.scss) 615 | * ------------------------------------------------------------------- */ 616 | @media screen and (max-width: 768px) { 617 | .block-tab-1-6 .bgrid { 618 | width: 16.66667%; 619 | } 620 | 621 | .block-tab-1-4 .bgrid { 622 | width: 25%; 623 | } 624 | 625 | .block-tab-1-3 .bgrid { 626 | width: 33.33333%; 627 | } 628 | 629 | .block-tab-1-2 .bgrid { 630 | width: 50%; 631 | } 632 | 633 | .block-tab-full .bgrid { 634 | width: 100%; 635 | clear: both; 636 | } 637 | 638 | [class*="block-tab-"] .bgrid:nth-child(n) { 639 | clear: none; 640 | } 641 | 642 | .block-tab-1-6 .bgrid:nth-child(6n+1), 643 | .block-tab-1-4 .bgrid:nth-child(4n+1), 644 | .block-tab-1-3 .bgrid:nth-child(3n+1), 645 | .block-tab-1-2 .bgrid:nth-child(2n+1) { 646 | clear: both; 647 | } 648 | } 649 | /* ------------------------------------------------------------------- 650 | * large mobile devices - (_grid.scss) 651 | * ------------------------------------------------------------------- */ 652 | @media screen and (max-width: 600px) { 653 | .block-mob-1-6 .bgrid { 654 | width: 16.66667%; 655 | } 656 | 657 | .block-mob-1-4 .bgrid { 658 | width: 25%; 659 | } 660 | 661 | .block-mob-1-3 .bgrid { 662 | width: 33.33333%; 663 | } 664 | 665 | .block-mob-1-2 .bgrid { 666 | width: 50%; 667 | } 668 | 669 | .block-mob-full .bgrid { 670 | width: 100%; 671 | clear: both; 672 | } 673 | 674 | [class*="block-mob-"] .bgrid:nth-child(n) { 675 | clear: none; 676 | } 677 | 678 | .block-mob-1-6 .bgrid:nth-child(6n+1), 679 | .block-mob-1-4 .bgrid:nth-child(4n+1), 680 | .block-mob-1-3 .bgrid:nth-child(3n+1), 681 | .block-mob-1-2 .bgrid:nth-child(2n+1) { 682 | clear: both; 683 | } 684 | } 685 | /* ------------------------------------------------------------------- 686 | * stack on small mobile devices - (_grid.scss) 687 | * ------------------------------------------------------------------- */ 688 | @media screen and (max-width: 400px) { 689 | .stack .bgrid { 690 | width: 100% !important; 691 | float: none !important; 692 | clear: both !important; 693 | margin-left: 0; 694 | margin-right: 0; 695 | } 696 | } 697 | /* =================================================================== 698 | * 04. MISC - (_grid.scss) 699 | * 700 | * ------------------------------------------------------------------- */ 701 | 702 | /* Clearing - (http://nicolasgallagher.com/micro-clearfix-hack/ 703 | */ 704 | .group:before, .group:after { 705 | content: ""; 706 | display: table; 707 | } 708 | .group:after { 709 | clear: both; 710 | } 711 | 712 | /* Misc Helper Styles 713 | */ 714 | .hide { 715 | display: none; 716 | } 717 | 718 | .invisible { 719 | visibility: hidden; 720 | } 721 | 722 | .antialiased { 723 | -webkit-font-smoothing: antialiased; 724 | -moz-osx-font-smoothing: grayscale; 725 | } 726 | 727 | .overflow-hidden { 728 | overflow: hidden; 729 | } 730 | 731 | .remove-bottom { 732 | margin-bottom: 0; 733 | } 734 | 735 | .half-bottom { 736 | margin-bottom: 1.5rem !important; 737 | } 738 | 739 | .add-bottom { 740 | margin-bottom: 3rem !important; 741 | } 742 | 743 | .no-border { 744 | border: none; 745 | } 746 | 747 | .full-width { 748 | width: 100%; 749 | } 750 | 751 | .text-center { 752 | text-align: center; 753 | } 754 | 755 | .text-left { 756 | text-align: left; 757 | } 758 | 759 | .text-right { 760 | text-align: right; 761 | } 762 | 763 | .pull-left { 764 | float: left; 765 | } 766 | 767 | .pull-right { 768 | float: right; 769 | } 770 | 771 | .align-center { 772 | margin-left: auto; 773 | margin-right: auto; 774 | text-align: center; 775 | } 776 | -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/1-node-express-mongodb/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nodeschool-workshop", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "accepts": { 8 | "version": "1.3.5", 9 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", 10 | "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", 11 | "requires": { 12 | "mime-types": "2.1.18", 13 | "negotiator": "0.6.1" 14 | } 15 | }, 16 | "array-flatten": { 17 | "version": "1.1.1", 18 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 19 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 20 | }, 21 | "async": { 22 | "version": "2.1.4", 23 | "resolved": "https://registry.npmjs.org/async/-/async-2.1.4.tgz", 24 | "integrity": "sha1-LSFgx3iAMuTdbL4lAvH5osj2zeQ=", 25 | "requires": { 26 | "lodash": "4.17.5" 27 | } 28 | }, 29 | "bluebird": { 30 | "version": "3.5.0", 31 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", 32 | "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=" 33 | }, 34 | "body-parser": { 35 | "version": "1.18.2", 36 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", 37 | "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", 38 | "requires": { 39 | "bytes": "3.0.0", 40 | "content-type": "1.0.4", 41 | "debug": "2.6.9", 42 | "depd": "1.1.2", 43 | "http-errors": "1.6.3", 44 | "iconv-lite": "0.4.19", 45 | "on-finished": "2.3.0", 46 | "qs": "6.5.1", 47 | "raw-body": "2.3.2", 48 | "type-is": "1.6.16" 49 | } 50 | }, 51 | "bson": { 52 | "version": "1.0.6", 53 | "resolved": "https://registry.npmjs.org/bson/-/bson-1.0.6.tgz", 54 | "integrity": "sha512-D8zmlb46xfuK2gGvKmUjIklQEouN2nQ0LEHHeZ/NoHM2LDiMk2EYzZ5Ntw/Urk+bgMDosOZxaRzXxvhI5TcAVQ==" 55 | }, 56 | "bytes": { 57 | "version": "3.0.0", 58 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", 59 | "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" 60 | }, 61 | "content-disposition": { 62 | "version": "0.5.2", 63 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", 64 | "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" 65 | }, 66 | "content-type": { 67 | "version": "1.0.4", 68 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 69 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 70 | }, 71 | "cookie": { 72 | "version": "0.3.1", 73 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", 74 | "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" 75 | }, 76 | "cookie-signature": { 77 | "version": "1.0.6", 78 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 79 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 80 | }, 81 | "debug": { 82 | "version": "2.6.9", 83 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 84 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 85 | "requires": { 86 | "ms": "2.0.0" 87 | } 88 | }, 89 | "depd": { 90 | "version": "1.1.2", 91 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 92 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 93 | }, 94 | "destroy": { 95 | "version": "1.0.4", 96 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 97 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 98 | }, 99 | "ee-first": { 100 | "version": "1.1.1", 101 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 102 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 103 | }, 104 | "encodeurl": { 105 | "version": "1.0.2", 106 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 107 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 108 | }, 109 | "escape-html": { 110 | "version": "1.0.3", 111 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 112 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 113 | }, 114 | "etag": { 115 | "version": "1.8.1", 116 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 117 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 118 | }, 119 | "express": { 120 | "version": "4.16.3", 121 | "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", 122 | "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", 123 | "requires": { 124 | "accepts": "1.3.5", 125 | "array-flatten": "1.1.1", 126 | "body-parser": "1.18.2", 127 | "content-disposition": "0.5.2", 128 | "content-type": "1.0.4", 129 | "cookie": "0.3.1", 130 | "cookie-signature": "1.0.6", 131 | "debug": "2.6.9", 132 | "depd": "1.1.2", 133 | "encodeurl": "1.0.2", 134 | "escape-html": "1.0.3", 135 | "etag": "1.8.1", 136 | "finalhandler": "1.1.1", 137 | "fresh": "0.5.2", 138 | "merge-descriptors": "1.0.1", 139 | "methods": "1.1.2", 140 | "on-finished": "2.3.0", 141 | "parseurl": "1.3.2", 142 | "path-to-regexp": "0.1.7", 143 | "proxy-addr": "2.0.3", 144 | "qs": "6.5.1", 145 | "range-parser": "1.2.0", 146 | "safe-buffer": "5.1.1", 147 | "send": "0.16.2", 148 | "serve-static": "1.13.2", 149 | "setprototypeof": "1.1.0", 150 | "statuses": "1.4.0", 151 | "type-is": "1.6.16", 152 | "utils-merge": "1.0.1", 153 | "vary": "1.1.2" 154 | } 155 | }, 156 | "finalhandler": { 157 | "version": "1.1.1", 158 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", 159 | "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", 160 | "requires": { 161 | "debug": "2.6.9", 162 | "encodeurl": "1.0.2", 163 | "escape-html": "1.0.3", 164 | "on-finished": "2.3.0", 165 | "parseurl": "1.3.2", 166 | "statuses": "1.4.0", 167 | "unpipe": "1.0.0" 168 | } 169 | }, 170 | "forwarded": { 171 | "version": "0.1.2", 172 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", 173 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" 174 | }, 175 | "fresh": { 176 | "version": "0.5.2", 177 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 178 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 179 | }, 180 | "http-errors": { 181 | "version": "1.6.3", 182 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", 183 | "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", 184 | "requires": { 185 | "depd": "1.1.2", 186 | "inherits": "2.0.3", 187 | "setprototypeof": "1.1.0", 188 | "statuses": "1.4.0" 189 | } 190 | }, 191 | "iconv-lite": { 192 | "version": "0.4.19", 193 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", 194 | "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" 195 | }, 196 | "inherits": { 197 | "version": "2.0.3", 198 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 199 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 200 | }, 201 | "ipaddr.js": { 202 | "version": "1.6.0", 203 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz", 204 | "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=" 205 | }, 206 | "kareem": { 207 | "version": "2.0.6", 208 | "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.0.6.tgz", 209 | "integrity": "sha512-/C+l8gABdHsAIfNpykJNWmYodpTnDRyn+JhORkP2VgEf1GgdAc+oTHjVADwISwCJKta031EOIwY6+Hki5z8SpQ==" 210 | }, 211 | "lodash": { 212 | "version": "4.17.5", 213 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", 214 | "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" 215 | }, 216 | "lodash.get": { 217 | "version": "4.4.2", 218 | "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", 219 | "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" 220 | }, 221 | "media-typer": { 222 | "version": "0.3.0", 223 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 224 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 225 | }, 226 | "merge-descriptors": { 227 | "version": "1.0.1", 228 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 229 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 230 | }, 231 | "methods": { 232 | "version": "1.1.2", 233 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 234 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" 235 | }, 236 | "mime": { 237 | "version": "1.4.1", 238 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", 239 | "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" 240 | }, 241 | "mime-db": { 242 | "version": "1.33.0", 243 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", 244 | "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" 245 | }, 246 | "mime-types": { 247 | "version": "2.1.18", 248 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", 249 | "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", 250 | "requires": { 251 | "mime-db": "1.33.0" 252 | } 253 | }, 254 | "mongodb": { 255 | "version": "3.0.4", 256 | "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.0.4.tgz", 257 | "integrity": "sha512-90YIIs7A4ko4kCGafxxXj3foexCAlJBC0YLwwIKgSLoE7Vni2IqUMz6HSsZ3zbXOfR1KWtxfnc0RyAMAY/ViLg==", 258 | "requires": { 259 | "mongodb-core": "3.0.4" 260 | } 261 | }, 262 | "mongodb-core": { 263 | "version": "3.0.4", 264 | "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.0.4.tgz", 265 | "integrity": "sha512-OTH267FjfwBdEufSnrgd+u8HuLWRuQ6p8DR0XirPl2BdlLEMh4XwjJf1RTlruILp5p2m1w8dDC8rCxibC3W8qQ==", 266 | "requires": { 267 | "bson": "1.0.6", 268 | "require_optional": "1.0.1" 269 | } 270 | }, 271 | "mongoose": { 272 | "version": "5.0.13", 273 | "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.0.13.tgz", 274 | "integrity": "sha512-VCiutgdxwhTuNHIuUgMRWVYvv0GFw6FUi4j14B7um/Wcy1uhuwF552a6XVKUCth/AY8C+PjVU9fVGJ5K0JmrmQ==", 275 | "requires": { 276 | "async": "2.1.4", 277 | "bson": "1.0.6", 278 | "kareem": "2.0.6", 279 | "lodash.get": "4.4.2", 280 | "mongodb": "3.0.4", 281 | "mongoose-legacy-pluralize": "1.0.2", 282 | "mpath": "0.3.0", 283 | "mquery": "3.0.0", 284 | "ms": "2.0.0", 285 | "regexp-clone": "0.0.1", 286 | "sliced": "1.0.1" 287 | } 288 | }, 289 | "mongoose-legacy-pluralize": { 290 | "version": "1.0.2", 291 | "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz", 292 | "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==" 293 | }, 294 | "mpath": { 295 | "version": "0.3.0", 296 | "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.3.0.tgz", 297 | "integrity": "sha1-elj3iem1/TyUUgY0FXlg8mvV70Q=" 298 | }, 299 | "mquery": { 300 | "version": "3.0.0", 301 | "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.0.0.tgz", 302 | "integrity": "sha512-WL1Lk8v4l8VFSSwN3yCzY9TXw+fKVYKn6f+w86TRzOLSE8k1yTgGaLBPUByJQi8VcLbOdnUneFV/y3Kv874pnQ==", 303 | "requires": { 304 | "bluebird": "3.5.0", 305 | "debug": "2.6.9", 306 | "regexp-clone": "0.0.1", 307 | "sliced": "0.0.5" 308 | }, 309 | "dependencies": { 310 | "sliced": { 311 | "version": "0.0.5", 312 | "resolved": "https://registry.npmjs.org/sliced/-/sliced-0.0.5.tgz", 313 | "integrity": "sha1-XtwETKTrb3gW1Qui/GPiXY/kcH8=" 314 | } 315 | } 316 | }, 317 | "ms": { 318 | "version": "2.0.0", 319 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 320 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 321 | }, 322 | "negotiator": { 323 | "version": "0.6.1", 324 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", 325 | "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" 326 | }, 327 | "on-finished": { 328 | "version": "2.3.0", 329 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 330 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 331 | "requires": { 332 | "ee-first": "1.1.1" 333 | } 334 | }, 335 | "parseurl": { 336 | "version": "1.3.2", 337 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", 338 | "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" 339 | }, 340 | "path-to-regexp": { 341 | "version": "0.1.7", 342 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 343 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 344 | }, 345 | "proxy-addr": { 346 | "version": "2.0.3", 347 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", 348 | "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", 349 | "requires": { 350 | "forwarded": "0.1.2", 351 | "ipaddr.js": "1.6.0" 352 | } 353 | }, 354 | "qs": { 355 | "version": "6.5.1", 356 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", 357 | "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" 358 | }, 359 | "range-parser": { 360 | "version": "1.2.0", 361 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", 362 | "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" 363 | }, 364 | "raw-body": { 365 | "version": "2.3.2", 366 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", 367 | "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", 368 | "requires": { 369 | "bytes": "3.0.0", 370 | "http-errors": "1.6.2", 371 | "iconv-lite": "0.4.19", 372 | "unpipe": "1.0.0" 373 | }, 374 | "dependencies": { 375 | "depd": { 376 | "version": "1.1.1", 377 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", 378 | "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" 379 | }, 380 | "http-errors": { 381 | "version": "1.6.2", 382 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", 383 | "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", 384 | "requires": { 385 | "depd": "1.1.1", 386 | "inherits": "2.0.3", 387 | "setprototypeof": "1.0.3", 388 | "statuses": "1.4.0" 389 | } 390 | }, 391 | "setprototypeof": { 392 | "version": "1.0.3", 393 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", 394 | "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" 395 | } 396 | } 397 | }, 398 | "regexp-clone": { 399 | "version": "0.0.1", 400 | "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-0.0.1.tgz", 401 | "integrity": "sha1-p8LgmJH9vzj7sQ03b7cwA+aKxYk=" 402 | }, 403 | "require_optional": { 404 | "version": "1.0.1", 405 | "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", 406 | "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", 407 | "requires": { 408 | "resolve-from": "2.0.0", 409 | "semver": "5.5.0" 410 | } 411 | }, 412 | "resolve-from": { 413 | "version": "2.0.0", 414 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", 415 | "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" 416 | }, 417 | "safe-buffer": { 418 | "version": "5.1.1", 419 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 420 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" 421 | }, 422 | "semver": { 423 | "version": "5.5.0", 424 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", 425 | "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" 426 | }, 427 | "send": { 428 | "version": "0.16.2", 429 | "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", 430 | "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", 431 | "requires": { 432 | "debug": "2.6.9", 433 | "depd": "1.1.2", 434 | "destroy": "1.0.4", 435 | "encodeurl": "1.0.2", 436 | "escape-html": "1.0.3", 437 | "etag": "1.8.1", 438 | "fresh": "0.5.2", 439 | "http-errors": "1.6.3", 440 | "mime": "1.4.1", 441 | "ms": "2.0.0", 442 | "on-finished": "2.3.0", 443 | "range-parser": "1.2.0", 444 | "statuses": "1.4.0" 445 | } 446 | }, 447 | "serve-static": { 448 | "version": "1.13.2", 449 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", 450 | "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", 451 | "requires": { 452 | "encodeurl": "1.0.2", 453 | "escape-html": "1.0.3", 454 | "parseurl": "1.3.2", 455 | "send": "0.16.2" 456 | } 457 | }, 458 | "setprototypeof": { 459 | "version": "1.1.0", 460 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", 461 | "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" 462 | }, 463 | "sliced": { 464 | "version": "1.0.1", 465 | "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", 466 | "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" 467 | }, 468 | "statuses": { 469 | "version": "1.4.0", 470 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", 471 | "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" 472 | }, 473 | "type-is": { 474 | "version": "1.6.16", 475 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", 476 | "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", 477 | "requires": { 478 | "media-typer": "0.3.0", 479 | "mime-types": "2.1.18" 480 | } 481 | }, 482 | "unpipe": { 483 | "version": "1.0.0", 484 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 485 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 486 | }, 487 | "utils-merge": { 488 | "version": "1.0.1", 489 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 490 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 491 | }, 492 | "vary": { 493 | "version": "1.1.2", 494 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 495 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 496 | } 497 | } 498 | } 499 | -------------------------------------------------------------------------------- /events/meetup-2__rest-apis-workshop/workshop-content/2-parsing-json-payload/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "2-parsing-json-payload", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "accepts": { 8 | "version": "1.3.5", 9 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", 10 | "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", 11 | "requires": { 12 | "mime-types": "2.1.18", 13 | "negotiator": "0.6.1" 14 | } 15 | }, 16 | "array-flatten": { 17 | "version": "1.1.1", 18 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 19 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 20 | }, 21 | "async": { 22 | "version": "2.1.4", 23 | "resolved": "https://registry.npmjs.org/async/-/async-2.1.4.tgz", 24 | "integrity": "sha1-LSFgx3iAMuTdbL4lAvH5osj2zeQ=", 25 | "requires": { 26 | "lodash": "4.17.5" 27 | } 28 | }, 29 | "basic-auth": { 30 | "version": "2.0.0", 31 | "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.0.tgz", 32 | "integrity": "sha1-AV2z81PgLlY3d1X5YnQuiYHnu7o=", 33 | "requires": { 34 | "safe-buffer": "5.1.1" 35 | } 36 | }, 37 | "bluebird": { 38 | "version": "3.5.0", 39 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", 40 | "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=" 41 | }, 42 | "body-parser": { 43 | "version": "1.18.2", 44 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", 45 | "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", 46 | "requires": { 47 | "bytes": "3.0.0", 48 | "content-type": "1.0.4", 49 | "debug": "2.6.9", 50 | "depd": "1.1.2", 51 | "http-errors": "1.6.3", 52 | "iconv-lite": "0.4.19", 53 | "on-finished": "2.3.0", 54 | "qs": "6.5.1", 55 | "raw-body": "2.3.2", 56 | "type-is": "1.6.16" 57 | } 58 | }, 59 | "bson": { 60 | "version": "1.0.6", 61 | "resolved": "https://registry.npmjs.org/bson/-/bson-1.0.6.tgz", 62 | "integrity": "sha512-D8zmlb46xfuK2gGvKmUjIklQEouN2nQ0LEHHeZ/NoHM2LDiMk2EYzZ5Ntw/Urk+bgMDosOZxaRzXxvhI5TcAVQ==" 63 | }, 64 | "bytes": { 65 | "version": "3.0.0", 66 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", 67 | "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" 68 | }, 69 | "content-disposition": { 70 | "version": "0.5.2", 71 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", 72 | "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" 73 | }, 74 | "content-type": { 75 | "version": "1.0.4", 76 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 77 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 78 | }, 79 | "cookie": { 80 | "version": "0.3.1", 81 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", 82 | "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" 83 | }, 84 | "cookie-parser": { 85 | "version": "1.4.3", 86 | "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.3.tgz", 87 | "integrity": "sha1-D+MfoZ0AC5X0qt8fU/3CuKIDuqU=", 88 | "requires": { 89 | "cookie": "0.3.1", 90 | "cookie-signature": "1.0.6" 91 | } 92 | }, 93 | "cookie-signature": { 94 | "version": "1.0.6", 95 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 96 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 97 | }, 98 | "debug": { 99 | "version": "2.6.9", 100 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 101 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 102 | "requires": { 103 | "ms": "2.0.0" 104 | } 105 | }, 106 | "depd": { 107 | "version": "1.1.2", 108 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 109 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 110 | }, 111 | "destroy": { 112 | "version": "1.0.4", 113 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 114 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 115 | }, 116 | "ee-first": { 117 | "version": "1.1.1", 118 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 119 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 120 | }, 121 | "ejs": { 122 | "version": "2.5.8", 123 | "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.8.tgz", 124 | "integrity": "sha512-QIDZL54fyV8MDcAsO91BMH1ft2qGGaHIJsJIA/+t+7uvXol1dm413fPcUgUb4k8F/9457rx4/KFE4XfDifrQxQ==" 125 | }, 126 | "encodeurl": { 127 | "version": "1.0.2", 128 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 129 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 130 | }, 131 | "escape-html": { 132 | "version": "1.0.3", 133 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 134 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 135 | }, 136 | "etag": { 137 | "version": "1.8.1", 138 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 139 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 140 | }, 141 | "express": { 142 | "version": "4.16.3", 143 | "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", 144 | "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", 145 | "requires": { 146 | "accepts": "1.3.5", 147 | "array-flatten": "1.1.1", 148 | "body-parser": "1.18.2", 149 | "content-disposition": "0.5.2", 150 | "content-type": "1.0.4", 151 | "cookie": "0.3.1", 152 | "cookie-signature": "1.0.6", 153 | "debug": "2.6.9", 154 | "depd": "1.1.2", 155 | "encodeurl": "1.0.2", 156 | "escape-html": "1.0.3", 157 | "etag": "1.8.1", 158 | "finalhandler": "1.1.1", 159 | "fresh": "0.5.2", 160 | "merge-descriptors": "1.0.1", 161 | "methods": "1.1.2", 162 | "on-finished": "2.3.0", 163 | "parseurl": "1.3.2", 164 | "path-to-regexp": "0.1.7", 165 | "proxy-addr": "2.0.3", 166 | "qs": "6.5.1", 167 | "range-parser": "1.2.0", 168 | "safe-buffer": "5.1.1", 169 | "send": "0.16.2", 170 | "serve-static": "1.13.2", 171 | "setprototypeof": "1.1.0", 172 | "statuses": "1.4.0", 173 | "type-is": "1.6.16", 174 | "utils-merge": "1.0.1", 175 | "vary": "1.1.2" 176 | } 177 | }, 178 | "finalhandler": { 179 | "version": "1.1.1", 180 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", 181 | "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", 182 | "requires": { 183 | "debug": "2.6.9", 184 | "encodeurl": "1.0.2", 185 | "escape-html": "1.0.3", 186 | "on-finished": "2.3.0", 187 | "parseurl": "1.3.2", 188 | "statuses": "1.4.0", 189 | "unpipe": "1.0.0" 190 | } 191 | }, 192 | "forwarded": { 193 | "version": "0.1.2", 194 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", 195 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" 196 | }, 197 | "fresh": { 198 | "version": "0.5.2", 199 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 200 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 201 | }, 202 | "http-errors": { 203 | "version": "1.6.3", 204 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", 205 | "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", 206 | "requires": { 207 | "depd": "1.1.2", 208 | "inherits": "2.0.3", 209 | "setprototypeof": "1.1.0", 210 | "statuses": "1.4.0" 211 | } 212 | }, 213 | "iconv-lite": { 214 | "version": "0.4.19", 215 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", 216 | "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" 217 | }, 218 | "inherits": { 219 | "version": "2.0.3", 220 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 221 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 222 | }, 223 | "ipaddr.js": { 224 | "version": "1.6.0", 225 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz", 226 | "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=" 227 | }, 228 | "kareem": { 229 | "version": "2.0.6", 230 | "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.0.6.tgz", 231 | "integrity": "sha512-/C+l8gABdHsAIfNpykJNWmYodpTnDRyn+JhORkP2VgEf1GgdAc+oTHjVADwISwCJKta031EOIwY6+Hki5z8SpQ==" 232 | }, 233 | "lodash": { 234 | "version": "4.17.5", 235 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", 236 | "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" 237 | }, 238 | "lodash.get": { 239 | "version": "4.4.2", 240 | "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", 241 | "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" 242 | }, 243 | "media-typer": { 244 | "version": "0.3.0", 245 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 246 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 247 | }, 248 | "merge-descriptors": { 249 | "version": "1.0.1", 250 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 251 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 252 | }, 253 | "methods": { 254 | "version": "1.1.2", 255 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 256 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" 257 | }, 258 | "mime": { 259 | "version": "1.4.1", 260 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", 261 | "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" 262 | }, 263 | "mime-db": { 264 | "version": "1.33.0", 265 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", 266 | "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" 267 | }, 268 | "mime-types": { 269 | "version": "2.1.18", 270 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", 271 | "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", 272 | "requires": { 273 | "mime-db": "1.33.0" 274 | } 275 | }, 276 | "mongodb": { 277 | "version": "3.0.4", 278 | "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.0.4.tgz", 279 | "integrity": "sha512-90YIIs7A4ko4kCGafxxXj3foexCAlJBC0YLwwIKgSLoE7Vni2IqUMz6HSsZ3zbXOfR1KWtxfnc0RyAMAY/ViLg==", 280 | "requires": { 281 | "mongodb-core": "3.0.4" 282 | } 283 | }, 284 | "mongodb-core": { 285 | "version": "3.0.4", 286 | "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.0.4.tgz", 287 | "integrity": "sha512-OTH267FjfwBdEufSnrgd+u8HuLWRuQ6p8DR0XirPl2BdlLEMh4XwjJf1RTlruILp5p2m1w8dDC8rCxibC3W8qQ==", 288 | "requires": { 289 | "bson": "1.0.6", 290 | "require_optional": "1.0.1" 291 | } 292 | }, 293 | "mongoose": { 294 | "version": "5.0.13", 295 | "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.0.13.tgz", 296 | "integrity": "sha512-VCiutgdxwhTuNHIuUgMRWVYvv0GFw6FUi4j14B7um/Wcy1uhuwF552a6XVKUCth/AY8C+PjVU9fVGJ5K0JmrmQ==", 297 | "requires": { 298 | "async": "2.1.4", 299 | "bson": "1.0.6", 300 | "kareem": "2.0.6", 301 | "lodash.get": "4.4.2", 302 | "mongodb": "3.0.4", 303 | "mongoose-legacy-pluralize": "1.0.2", 304 | "mpath": "0.3.0", 305 | "mquery": "3.0.0", 306 | "ms": "2.0.0", 307 | "regexp-clone": "0.0.1", 308 | "sliced": "1.0.1" 309 | } 310 | }, 311 | "mongoose-legacy-pluralize": { 312 | "version": "1.0.2", 313 | "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz", 314 | "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==" 315 | }, 316 | "morgan": { 317 | "version": "1.9.0", 318 | "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz", 319 | "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=", 320 | "requires": { 321 | "basic-auth": "2.0.0", 322 | "debug": "2.6.9", 323 | "depd": "1.1.2", 324 | "on-finished": "2.3.0", 325 | "on-headers": "1.0.1" 326 | } 327 | }, 328 | "mpath": { 329 | "version": "0.3.0", 330 | "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.3.0.tgz", 331 | "integrity": "sha1-elj3iem1/TyUUgY0FXlg8mvV70Q=" 332 | }, 333 | "mquery": { 334 | "version": "3.0.0", 335 | "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.0.0.tgz", 336 | "integrity": "sha512-WL1Lk8v4l8VFSSwN3yCzY9TXw+fKVYKn6f+w86TRzOLSE8k1yTgGaLBPUByJQi8VcLbOdnUneFV/y3Kv874pnQ==", 337 | "requires": { 338 | "bluebird": "3.5.0", 339 | "debug": "2.6.9", 340 | "regexp-clone": "0.0.1", 341 | "sliced": "0.0.5" 342 | }, 343 | "dependencies": { 344 | "sliced": { 345 | "version": "0.0.5", 346 | "resolved": "https://registry.npmjs.org/sliced/-/sliced-0.0.5.tgz", 347 | "integrity": "sha1-XtwETKTrb3gW1Qui/GPiXY/kcH8=" 348 | } 349 | } 350 | }, 351 | "ms": { 352 | "version": "2.0.0", 353 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 354 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 355 | }, 356 | "negotiator": { 357 | "version": "0.6.1", 358 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", 359 | "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" 360 | }, 361 | "on-finished": { 362 | "version": "2.3.0", 363 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 364 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 365 | "requires": { 366 | "ee-first": "1.1.1" 367 | } 368 | }, 369 | "on-headers": { 370 | "version": "1.0.1", 371 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", 372 | "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=" 373 | }, 374 | "parseurl": { 375 | "version": "1.3.2", 376 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", 377 | "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" 378 | }, 379 | "path-to-regexp": { 380 | "version": "0.1.7", 381 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 382 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 383 | }, 384 | "proxy-addr": { 385 | "version": "2.0.3", 386 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", 387 | "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", 388 | "requires": { 389 | "forwarded": "0.1.2", 390 | "ipaddr.js": "1.6.0" 391 | } 392 | }, 393 | "qs": { 394 | "version": "6.5.1", 395 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", 396 | "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" 397 | }, 398 | "range-parser": { 399 | "version": "1.2.0", 400 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", 401 | "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" 402 | }, 403 | "raw-body": { 404 | "version": "2.3.2", 405 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", 406 | "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", 407 | "requires": { 408 | "bytes": "3.0.0", 409 | "http-errors": "1.6.2", 410 | "iconv-lite": "0.4.19", 411 | "unpipe": "1.0.0" 412 | }, 413 | "dependencies": { 414 | "depd": { 415 | "version": "1.1.1", 416 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", 417 | "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" 418 | }, 419 | "http-errors": { 420 | "version": "1.6.2", 421 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", 422 | "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", 423 | "requires": { 424 | "depd": "1.1.1", 425 | "inherits": "2.0.3", 426 | "setprototypeof": "1.0.3", 427 | "statuses": "1.4.0" 428 | } 429 | }, 430 | "setprototypeof": { 431 | "version": "1.0.3", 432 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", 433 | "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" 434 | } 435 | } 436 | }, 437 | "regexp-clone": { 438 | "version": "0.0.1", 439 | "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-0.0.1.tgz", 440 | "integrity": "sha1-p8LgmJH9vzj7sQ03b7cwA+aKxYk=" 441 | }, 442 | "require_optional": { 443 | "version": "1.0.1", 444 | "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", 445 | "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", 446 | "requires": { 447 | "resolve-from": "2.0.0", 448 | "semver": "5.5.0" 449 | } 450 | }, 451 | "resolve-from": { 452 | "version": "2.0.0", 453 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", 454 | "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" 455 | }, 456 | "safe-buffer": { 457 | "version": "5.1.1", 458 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 459 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" 460 | }, 461 | "semver": { 462 | "version": "5.5.0", 463 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", 464 | "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" 465 | }, 466 | "send": { 467 | "version": "0.16.2", 468 | "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", 469 | "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", 470 | "requires": { 471 | "debug": "2.6.9", 472 | "depd": "1.1.2", 473 | "destroy": "1.0.4", 474 | "encodeurl": "1.0.2", 475 | "escape-html": "1.0.3", 476 | "etag": "1.8.1", 477 | "fresh": "0.5.2", 478 | "http-errors": "1.6.3", 479 | "mime": "1.4.1", 480 | "ms": "2.0.0", 481 | "on-finished": "2.3.0", 482 | "range-parser": "1.2.0", 483 | "statuses": "1.4.0" 484 | } 485 | }, 486 | "serve-static": { 487 | "version": "1.13.2", 488 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", 489 | "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", 490 | "requires": { 491 | "encodeurl": "1.0.2", 492 | "escape-html": "1.0.3", 493 | "parseurl": "1.3.2", 494 | "send": "0.16.2" 495 | } 496 | }, 497 | "setprototypeof": { 498 | "version": "1.1.0", 499 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", 500 | "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" 501 | }, 502 | "sliced": { 503 | "version": "1.0.1", 504 | "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", 505 | "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" 506 | }, 507 | "statuses": { 508 | "version": "1.4.0", 509 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", 510 | "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" 511 | }, 512 | "type-is": { 513 | "version": "1.6.16", 514 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", 515 | "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", 516 | "requires": { 517 | "media-typer": "0.3.0", 518 | "mime-types": "2.1.18" 519 | } 520 | }, 521 | "unpipe": { 522 | "version": "1.0.0", 523 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 524 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 525 | }, 526 | "utils-merge": { 527 | "version": "1.0.1", 528 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 529 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 530 | }, 531 | "vary": { 532 | "version": "1.1.2", 533 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 534 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 535 | } 536 | } 537 | } 538 | -------------------------------------------------------------------------------- /docs/styles.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | Style Guide - Infinity 11 | 12 | 13 | 14 | 16 | 17 | 18 | 20 | 21 | 22 | 23 | 24 | 31 | 32 | 34 | 35 | 36 | 37 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 48 |
49 | 50 | 53 | 54 | 55 | Menu 56 | 57 | 58 | 59 | 98 | 99 |
100 | 101 | 102 | 104 |
105 | 106 |
107 | 108 |
109 |
110 |
111 |
112 | 113 |

We Are Infinity.

114 |

115 | We Craft Stunning
116 | Digital Experiences. 117 |

118 | 119 | 124 | 125 |
126 |
127 |
128 |
129 | 130 |
    131 |
  • 132 | 133 |
  • 134 |
  • 135 | 136 |
  • 137 |
  • 138 | 139 |
  • 140 |
  • 141 | 142 |
  • 143 |
  • 144 | 145 |
  • 146 |
147 | 148 | 154 | 155 |
156 | 157 | 158 | 160 |
161 | 162 |
163 | 164 |
165 | 166 |

This is the style page.

167 | 168 |

Lorem ipsum Officia elit ad tempor dolore est ex incididunt incididunt occaecat culpa deserunt sunt labore in cillum ullamco magna in Excepteur consequat in reprehenderit proident mollit incididunt officia commodo. 169 | Duis ea officia sed dolor pariatur enim dolore dolore quis incididunt nulla exercitation commodo veniam et ea incididunt.

170 | 171 |
172 | 173 |
174 | 175 |
176 | 177 |
178 | 179 |

Paragraph and Image

180 | 181 |

sample-image 182 | Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec libero. Suspendisse bibendum.Cras id urna. Morbi tincidunt, orci ac convallis aliquam, lectus turpis varius lorem, eu posuere nunc justo tempus leo. Donec mattis, purus nec placerat bibendum, dui pede condimentum odio, ac blandit ante orci ut diam. Cras fringilla magna. Phasellus suscipit, leo a pharetra condimentum, lorem tellus eleifend magna, eget fringilla velit magna id neque posuere nunc justo tempus leo.

183 | 184 |

185 | Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec libero. Suspendisse bibendum. Cras id urna. Morbi tincidunt, orci ac convallis aliquam, lectus turpis varius lorem, eu posuere nunc justo tempus leo. Donec mattis, purus nec placerat bibendum, dui pede condimentumodio, ac blandit ante orci ut diam. 186 |

187 | 188 |

A link, 189 | abbrebation, 190 | strong text, 191 | em text, 192 | deleted text, and 193 | this is a mark text. 194 | .code 195 |

196 | 197 |
198 | 199 |
200 | 201 |

Drop Caps

202 | 203 |

Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, 204 | there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the 205 | Semantics, a large language ocean. A small river named Duden flows by their place and supplies it with the necessary regelialia. Morbi tincidunt, orci ac convallis aliquam, lectus turpis varius lorem, eu posuere nunc justo tempus leo. Donec mattis, purus nec placerat bibendum, dui pede condimentum odio, ac blandit ante orci ut diam. Cras fringilla magna. Phasellus suscipit, leo a pharetra condimentum, lorem tellus eleifend magna, eget fringilla velit magna id neque. 206 |

207 | 208 |

Small Print

209 | 210 |

Buy one widget, get one free! 211 | (While supplies last. Offer expires on the vernal equinox. Not valid in Ohio.) 212 |

213 | 214 |
215 | 216 |
217 | 218 |
219 | 220 |
221 | 222 |

Pull Quotes

223 | 224 | 232 | 233 |
234 | 235 |
236 | 237 |

Block Quotes

238 | 239 |
240 |

Your work is going to fill a large part of your life, and the only way to be truly satisfied is 241 | to do what you believe is great work. And the only way to do great work is to love what you do. 242 | If you haven't found it yet, keep looking. Don't settle. As with all matters of the heart, you'll know when you find it. 243 |

244 | 245 | Steve Jobs 246 | 247 |
248 | 249 |
250 |

Good design is as little design as possible.

251 | Dieter Rams 252 |
253 | 254 |
255 | 256 |
257 | 258 |
259 | 260 |
261 | 262 |

Example Lists

263 | 264 |
    265 |
  1. Here is an example
  2. 266 |
  3. of an ordered list.
  4. 267 |
  5. A parent list item. 268 |
      269 |
    • one
    • 270 |
    • two
    • 271 |
    • three
    • 272 |
    273 |
  6. 274 |
  7. A list item.
  8. 275 |
276 | 277 |
    278 |
  • Here is an example
  • 279 |
  • of an unordered list.
  • 280 |
281 | 282 |

Definition Lists

283 | 284 |
a) Multi-line Definitions (default)
285 | 286 |
287 |
This is a term
288 |
this is the definition of that term, which both live in a dl.
289 |
Another Term
290 |
And it gets a definition too, which is this line
291 |
This is a 2nd definition for a single term. A dt may be followed by multiple dds.
292 |
293 | 294 |
295 | 296 |
297 | 298 |

Headers

299 | 300 |

H1 Heading

301 |

H2 Heading

302 |

H3 Heading

303 |

H4 Heading

304 |
H5 Heading
305 |
H6 Heading
306 | 307 |
308 | 309 |

Buttons

310 | 311 |

312 | Primary Button 313 | Default Button 314 |

315 | 316 |
317 | 318 |
319 | 320 |
321 | 322 |
323 | 324 |

Stats Tabs

325 | 326 | 334 | 335 |
336 | 337 |
338 | 339 |
340 | 341 |
342 | 343 |

Responsive Image

344 |

345 | 346 |
347 | 348 |
349 | 350 |

Responsive video

351 | 352 |
353 | 354 |
355 | 356 |
357 | 358 |
359 | 360 |
361 | 362 |
363 | 364 |

Tables

365 |

Be sure to use properly formed table markup with <thead> and <tbody> when building a table.

366 | 367 |
368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 |
NameAgeSexLocation
Naruto Uzumaki16MaleKonoha
Sakura Haruno16FemaleKonoha
393 | 394 |
395 | 396 |
397 | 398 |
399 | 400 |
401 | 402 |
403 | 404 |

Form Styles

405 | 406 |
407 |
408 | 409 | 410 |
411 |
412 | 413 |
414 | 419 |
420 |
421 | 422 | 423 | 424 | 425 | 429 | 430 | 431 | 432 |
433 | 434 |
435 | 436 |
437 | 438 |

Alert Boxes

439 | 440 |
441 | 442 |
443 |

Error Message. Your Message Goes Here.

444 | 445 |
446 | 447 |
448 |

Success Message. Your Message Goes Here.

449 | 450 |
451 | 452 |
453 |

Info Message. Your Message Goes Here.

454 | 455 |
456 | 457 |
458 |

Notice Message. Your Message Goes Here.

459 | 460 |
461 | 462 |
463 | 464 |
465 | 466 |
467 | 468 | 469 | 471 |
472 | 473 |
474 | 475 |
476 |
477 |

Contact

478 |

Get In Touch.

479 | 480 |

Quisque velit nisi, pretium ut lacinia in, elementum id enim. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi.

481 |
482 |
483 | 484 |
485 | 486 |
487 | 488 |
Send Us A Message
489 | 490 | 491 |
492 | 493 |
494 | 495 |
496 | 497 |
498 |
499 |
500 | 501 |
502 |
503 |
504 |
505 | 506 |
507 |
508 |
509 | 510 |
511 | 512 |
513 | 514 |
515 | 516 | 517 |
518 |
Sending...
519 |
520 |
521 |
522 |
523 |
524 |
525 |
526 | 527 |
528 | 529 | 530 |
531 | 532 | 533 |
534 | Your message was sent, thank you!
535 |
536 | 537 |
538 | 539 |
540 | 541 |
Contact Information
542 | 543 |
544 |
Where to Find Us
545 |

546 | 1600 Amphitheatre Parkway
547 | Mountain View, CA
548 | 94043 US 549 |

550 |
551 | 552 |
553 |
Email Us At
554 |

555 | someone@infinitysite.com
556 | info@infinitysite.com 557 |

558 |
559 | 560 |
561 |
Call Us At
562 |

563 | Phone: (+63) 555 1212
564 | Mobile: (+63) 555 0100
565 | Fax: (+63) 555 0101 566 |

567 |
568 | 569 |
570 | 571 |
572 | 573 |
574 | 575 | 576 | 578 |
579 | 631 | 632 | 646 | 647 |
648 | 649 | 650 | 651 |
652 |
653 | 654 |
655 |
656 |
657 | 658 | 660 | 661 | 662 | 663 | 664 | 665 | 666 | --------------------------------------------------------------------------------