├── Lecture12
├── file.js
└── NodeIntro
│ ├── index.html
│ ├── hello.js
│ ├── modulescopes
│ ├── file1.js
│ ├── file2.js
│ └── file3.js
│ ├── moduleprivates
│ ├── main.js
│ └── module.js
│ └── data.js
├── .gitignore
├── Lecture13
└── MoreAboutNode
│ ├── exec.js
│ ├── fizzbuzz
│ ├── input
│ ├── output
│ └── fizzbuzz.js
│ └── fileops.js
├── Lecture09
├── AdvancedJS
│ ├── script2.js
│ ├── index.html
│ ├── hoisting.js
│ ├── moreclosures.js
│ ├── constructors.js
│ ├── objects.js
│ └── closure.js
└── TodoList
│ ├── fonts
│ ├── FontAwesome.otf
│ ├── fontawesome-webfont.eot
│ ├── fontawesome-webfont.ttf
│ ├── fontawesome-webfont.woff
│ └── fontawesome-webfont.woff2
│ ├── css
│ ├── custom.css
│ ├── bootstrap-reboot.min.css.map
│ ├── bootstrap-reboot.min.css
│ ├── bootstrap-reboot.css
│ └── bootstrap-reboot.css.map
│ ├── index.html
│ └── js
│ └── todolist.js
├── Lecture19
├── Handlebars
│ ├── public
│ │ └── style.css
│ ├── views
│ │ ├── user.hbs
│ │ └── students.hbs
│ ├── package.json
│ └── server.js
├── Authentication
│ ├── users.js
│ ├── public
│ │ ├── index.html
│ │ └── login.html
│ ├── private
│ │ └── index.html
│ ├── package.json
│ ├── passport.js
│ └── server.js
├── assignment.md
└── sequelize-example.js
├── Lecture02
└── html
│ ├── cblogo big.png
│ ├── tables.html
│ ├── forms.html
│ └── index2.html
├── Lecture03
├── av
│ ├── sampleaudio.mp3
│ ├── samplevideo.mp4
│ └── index.html
└── jsintro
│ ├── index.html
│ └── script.js
├── Lecture11
└── jQuery
│ ├── fonts
│ ├── FontAwesome.otf
│ ├── fontawesome-webfont.eot
│ ├── fontawesome-webfont.ttf
│ ├── fontawesome-webfont.woff
│ └── fontawesome-webfont.woff2
│ ├── index.html
│ ├── script.js
│ ├── css
│ ├── custom.css
│ ├── bootstrap-reboot.min.css.map
│ ├── bootstrap-reboot.min.css
│ ├── bootstrap-reboot.css
│ └── bootstrap-reboot.css.map
│ ├── todolist.html
│ └── js
│ ├── todolistjquery.js
│ └── todolist.js
├── Lecture07
└── Javascript
│ ├── this.js
│ ├── index.html
│ ├── classes.js
│ ├── scopes.js
│ ├── string.js
│ └── arrays.js
├── Lecture20
├── Testing
│ ├── coverage
│ │ ├── lcov-report
│ │ │ ├── sort-arrow-sprite.png
│ │ │ ├── prettify.css
│ │ │ ├── index.html
│ │ │ ├── calcfare.js.html
│ │ │ ├── sorter.js
│ │ │ └── base.css
│ │ └── lcov.info
│ ├── calcfare.js
│ ├── test
│ │ └── calcFareTest.js
│ ├── package.json
│ └── .nyc_output
│ │ └── ac0c5e39b7f5a2bbd8c1b289c49b139a.json
└── heroku-deploy
│ ├── server.js
│ ├── package.json
│ ├── db.js
│ └── .gitignore
├── Lecture10
└── AdvancedJS
│ ├── functionscopes.js
│ ├── index.html
│ ├── asyncFunctions3.js
│ ├── constructors.js
│ ├── classPrototypes.js
│ ├── closures.js
│ ├── objectCreate.js
│ ├── asyncFunctions2.js
│ ├── asyncFunctions.js
│ ├── es5classes.js
│ ├── asyncFunctions4.js
│ └── prototypes.js
├── Lecture14
└── ExpressIntro
│ ├── public_static
│ ├── index.html
│ ├── other.html
│ ├── todos.html
│ └── todos.js
│ ├── package.json
│ ├── server.js
│ └── package-lock.json
├── Lecture06
└── html2 and CSS
│ ├── iframe3.html
│ ├── iframe.html
│ ├── iframe2.html
│ ├── index2.html
│ ├── style.css
│ └── index_css.html
├── Lecture05
└── CSS
│ ├── index.html
│ ├── inheritance.css
│ ├── inheritance.html
│ ├── interpolators.html
│ ├── style.css
│ ├── interpolators.css
│ └── bootstrap.html
├── Lecture16
├── AsyncAwaitPromises
│ ├── promise-example-2.js
│ ├── async.js
│ ├── await.js
│ └── promise-example.js
├── MysqlExample
│ ├── package.json
│ ├── trymysql.js
│ └── package-lock.json
└── TodoDB
│ ├── public_static
│ ├── index.html
│ └── todo.js
│ ├── package.json
│ ├── db.js
│ └── server.js
├── Lecture18
└── MongoDB
│ ├── package.json
│ ├── trymongo.js
│ └── package-lock.json
├── Lecture15
├── Middlewares
│ ├── package.json
│ ├── old-server.js
│ ├── server.js
│ └── package-lock.json
└── Routers
│ ├── package.json
│ ├── routes
│ ├── teachers.js
│ └── students.js
│ └── server.js
├── Lecture17
└── Sockets
│ ├── package.json
│ ├── public_static
│ ├── index.html
│ └── client.js
│ └── server.js
└── Lecture08
└── TodoList
├── form.html
├── index.html
├── domtraversal.html
├── events.html
├── events.js
└── todolist.js
/Lecture12/file.js:
--------------------------------------------------------------------------------
1 | console.log('hello')
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea/
2 | build/
3 | node_modules/
4 |
5 |
--------------------------------------------------------------------------------
/Lecture13/MoreAboutNode/exec.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by championswimmer on 04/07/17.
3 | */
4 |
--------------------------------------------------------------------------------
/Lecture09/AdvancedJS/script2.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by championswimmer on 25/06/17.
3 | */
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Lecture13/MoreAboutNode/fizzbuzz/input:
--------------------------------------------------------------------------------
1 | 12
2 | 23
3 | 6
4 | 12
5 | 2
6 | 24
7 | 124
8 | 468
9 | 13
10 |
--------------------------------------------------------------------------------
/Lecture19/Handlebars/public/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | color: red
3 | }
4 |
5 | .bigtext {
6 | font-size: 14pt;
7 | }
--------------------------------------------------------------------------------
/Lecture13/MoreAboutNode/fizzbuzz/output:
--------------------------------------------------------------------------------
1 | fizz
2 | 23
3 | fizz
4 | fizz
5 | 2
6 | fizz
7 | 124
8 | fizz
9 | 13
10 | NaN
--------------------------------------------------------------------------------
/Lecture02/html/cblogo big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coding-blocks-archives/WebNode_2017_Summer_Pitampura/HEAD/Lecture02/html/cblogo big.png
--------------------------------------------------------------------------------
/Lecture03/av/sampleaudio.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coding-blocks-archives/WebNode_2017_Summer_Pitampura/HEAD/Lecture03/av/sampleaudio.mp3
--------------------------------------------------------------------------------
/Lecture03/av/samplevideo.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coding-blocks-archives/WebNode_2017_Summer_Pitampura/HEAD/Lecture03/av/samplevideo.mp4
--------------------------------------------------------------------------------
/Lecture09/TodoList/fonts/FontAwesome.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coding-blocks-archives/WebNode_2017_Summer_Pitampura/HEAD/Lecture09/TodoList/fonts/FontAwesome.otf
--------------------------------------------------------------------------------
/Lecture11/jQuery/fonts/FontAwesome.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coding-blocks-archives/WebNode_2017_Summer_Pitampura/HEAD/Lecture11/jQuery/fonts/FontAwesome.otf
--------------------------------------------------------------------------------
/Lecture11/jQuery/fonts/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coding-blocks-archives/WebNode_2017_Summer_Pitampura/HEAD/Lecture11/jQuery/fonts/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/Lecture11/jQuery/fonts/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coding-blocks-archives/WebNode_2017_Summer_Pitampura/HEAD/Lecture11/jQuery/fonts/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/Lecture11/jQuery/fonts/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coding-blocks-archives/WebNode_2017_Summer_Pitampura/HEAD/Lecture11/jQuery/fonts/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/Lecture07/Javascript/this.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by championswimmer on 20/06/17.
3 | */
4 |
5 | var p = 'hello';
6 | console.log(this);
7 | console.log(global.p);
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Lecture09/TodoList/fonts/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coding-blocks-archives/WebNode_2017_Summer_Pitampura/HEAD/Lecture09/TodoList/fonts/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/Lecture09/TodoList/fonts/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coding-blocks-archives/WebNode_2017_Summer_Pitampura/HEAD/Lecture09/TodoList/fonts/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/Lecture09/TodoList/fonts/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coding-blocks-archives/WebNode_2017_Summer_Pitampura/HEAD/Lecture09/TodoList/fonts/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/Lecture09/TodoList/fonts/fontawesome-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coding-blocks-archives/WebNode_2017_Summer_Pitampura/HEAD/Lecture09/TodoList/fonts/fontawesome-webfont.woff2
--------------------------------------------------------------------------------
/Lecture11/jQuery/fonts/fontawesome-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coding-blocks-archives/WebNode_2017_Summer_Pitampura/HEAD/Lecture11/jQuery/fonts/fontawesome-webfont.woff2
--------------------------------------------------------------------------------
/Lecture20/Testing/coverage/lcov-report/sort-arrow-sprite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coding-blocks-archives/WebNode_2017_Summer_Pitampura/HEAD/Lecture20/Testing/coverage/lcov-report/sort-arrow-sprite.png
--------------------------------------------------------------------------------
/Lecture10/AdvancedJS/functionscopes.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by championswimmer on 27/06/17.
3 | */
4 |
5 |
6 | function myFun () {
7 | var a = 10;
8 | }
9 |
10 | myFun();
11 |
12 | console.log(a);
13 |
--------------------------------------------------------------------------------
/Lecture14/ExpressIntro/public_static/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
2 |
3 |
4 |
5 | Title
6 |
7 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/Lecture15/Routers/routes/students.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by championswimmer on 09/07/17.
3 | */
4 | const route = require('express').Router();
5 |
6 | let students = [
7 | {name:"Abhinav", age: 15},
8 | {name:"Raghav", age: 16},
9 | {name:"Kushal", age: 18},
10 | ]
11 |
12 | route.get('/', (req, res) => {
13 | res.send(students)
14 | })
15 |
16 |
17 | route.get('/:id', (req, res, next) => {
18 | if (isNaN(parseInt(req.params.id))) {
19 | next()
20 | }
21 | res.send(students[req.params.id - 1])
22 | })
23 |
24 | route.post('/new', (req, res) => {
25 | students.push({
26 | name: req.body.name,
27 | age: req.body.age
28 | })
29 | res.redirect(req.baseUrl)
30 | })
31 |
32 |
33 | // route.get('/redir', (req, res) => {
34 | // res.redirect(req.baseUrl)
35 | // })
36 |
37 |
38 | module.exports = route
--------------------------------------------------------------------------------
/Lecture03/jsintro/script.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by championswimmer on 11/06/17.
3 | */
4 |
5 | window.onload = function () {
6 |
7 | var num = document.getElementById('num')
8 | var run = document.getElementById('run')
9 | var list = document.getElementById('list')
10 |
11 | run.onclick = function () {
12 | var start = (new Date()).getTime();
13 | list.innerHTML = "";
14 | var listString = "";
15 | var N = parseInt(num.value);
16 |
17 | for (var i = 1; i <= N; i++) {
18 | // var li = document.createElement('li');
19 | // li.innerText = i
20 | // list.append(li);
21 | listString += "" + i + " "
22 | }
23 | list.innerHTML = listString;
24 |
25 | console.log((new Date()).getTime() - start)
26 | }
27 |
28 | };
--------------------------------------------------------------------------------
/Lecture10/AdvancedJS/asyncFunctions4.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by championswimmer on 27/06/17.
3 | */
4 |
5 | function downloadFile(url, downloaded) {
6 | //we are downloading here
7 | setTimeout(function () {
8 | downloaded('some file data')
9 | }, 3000)
10 | }
11 |
12 | function compressFile(data, type, compressed) {
13 | setTimeout(function () {
14 | compressed('compressed data')
15 | }, 2000)
16 | }
17 |
18 | function saveFile(data, fileLocation, saved) {
19 | setTimeout(function () {
20 | saved(true)
21 | }, 3000)
22 | }
23 |
24 | downloadFile('google.com/file', function (data) {
25 | compressFile(fileData, 'zip', function (data) {
26 | saveFile(compressedData, 'C:/myfile.txt', function () {
27 | console.log('Download complete');
28 | })
29 | })
30 | });
31 | console.log('Download started');
32 |
33 |
--------------------------------------------------------------------------------
/Lecture19/sequelize-example.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by championswimmer on 21/07/17.
3 | */
4 |
5 | const Product = db.define('product', {
6 | id: {
7 | primaryKey: true,
8 | type: Sequelize.DataTypes.Integer
9 | },
10 | name: Sequelize.DataTypes.STRING,
11 | })
12 |
13 | const User = db.define('user', {
14 | name: {},
15 | id: {}
16 | });
17 |
18 |
19 | const UserProduct = db.define('userproduct', {
20 | id: {}
21 | })
22 |
23 | UserProduct.belongsTo(User);
24 | UserProduct.belongsTo(Product);
25 | User.hasMany(UserProduct);
26 | Product.hasMany(UserProduct);
27 |
28 |
29 | UserProduct.find({
30 | where: {
31 | userId: 4
32 | },
33 | includes: [User, Product]
34 | }).then(function(userProducts) {
35 | for (let up of userProducts) {
36 | let user = up.user;
37 | let product = up.product;
38 | }
39 | })
40 |
--------------------------------------------------------------------------------
/Lecture17/Sockets/public_static/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Chatbox
6 |
7 |
8 |
9 |
14 |
15 |
16 |
17 |
18 |
19 | Login
20 |
21 |
22 |
23 |
Chats
24 |
26 |
27 |
28 |
29 |
Send
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/Lecture16/TodoDB/db.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by championswimmer on 11/07/17.
3 | */
4 | const Sequelize = require('sequelize');
5 |
6 | const db = new Sequelize({
7 | host: 'localhost',
8 | username: 'someuser',
9 | database: 'somedatabase',
10 | password: 'somepass',
11 | dialect: 'mysql'
12 | })
13 |
14 |
15 | const Todos = db.define('todos', {
16 | id: {
17 | type: Sequelize.DataTypes.INTEGER,
18 | primaryKey: true,
19 | autoIncrement: true
20 | },
21 | task: Sequelize.DataTypes.STRING,
22 | done: Sequelize.DataTypes.BOOLEAN
23 | })
24 |
25 | db.sync({alter: true}).then(function () {
26 | console.log("Database is ready");
27 | })
28 |
29 | function addTodo(task) {
30 | return Todos.create({
31 | task: task,
32 | done: false
33 | })
34 | }
35 |
36 | function getTodos () {
37 | return Todos.findAll()
38 | }
39 |
40 | module.exports = {
41 | addTodo, getTodos
42 | }
--------------------------------------------------------------------------------
/Lecture16/MysqlExample/trymysql.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by championswimmer on 11/07/17.
3 | */
4 | const mysql = require('mysql2');
5 |
6 | const connection = mysql.createConnection({
7 | host: 'localhost',
8 | database: 'somedatabase',
9 | user: 'someuser',
10 | password: 'somepass'
11 | })
12 |
13 | // connection.query(
14 | // 'SELECT * FROM courses',
15 | // function (err, results, fields) {
16 | //
17 | // if (err) throw err;
18 | //
19 | // console.log("Results = ");
20 | // console.log(results);
21 | // console.log("Fields = ");
22 | // console.log(fields);
23 | // }
24 | // )
25 | connection.query(
26 | "INSERT INTO courses(id, name) VALUES(1, 'Crux')",
27 | function (err, results, fields) {
28 | if (err) throw err;
29 |
30 | console.log("Results = ");
31 | console.log(results);
32 | console.log("Fields = ");
33 | console.log(fields);
34 |
35 | }
36 |
37 | )
--------------------------------------------------------------------------------
/Lecture16/TodoDB/public_static/todo.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by championswimmer on 11/07/17.
3 | */
4 |
5 | $(function () {
6 |
7 | let newtodoel = $('#newtodo')
8 | let addtodobtn = $('#addtodo')
9 | let todolist = $('#todolist')
10 |
11 | function refreshTodos() {
12 | todolist.empty();
13 | $.get('/todos',
14 | function (data) {
15 | for (todo of data) {
16 | todolist.append($(`
17 |
18 | ${todo.task}
19 | done = ${todo.done}
20 | `
21 | ))
22 | }
23 | }
24 | )
25 | }
26 |
27 | refreshTodos();
28 |
29 | addtodobtn.click(function () {
30 |
31 | $.post('/todos',
32 | {task: newtodoel.val()},
33 | function (data) {
34 | if (data.success) {
35 | refreshTodos();
36 | }
37 | }
38 | )
39 |
40 | })
41 |
42 |
43 |
44 | })
45 |
--------------------------------------------------------------------------------
/Lecture15/Middlewares/server.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by championswimmer on 09/07/17.
3 | */
4 | const express = require('express');
5 |
6 | const app = express();
7 |
8 | app.use((req, res, next) => {
9 | console.log("global middleware"); next();
10 | })
11 |
12 | app.use('/info', (req, res, next) => {
13 | console.log("info path middleware"); next();
14 | })
15 |
16 | app.get('/', (req, res) => {
17 | res.send("Hello")
18 | })
19 | app.get('/info', (req, res, next) => {
20 | res.send("Here you have some info")
21 | //next();
22 | })
23 | app.get('/info', (req, res) => {
24 | console.log("Information");
25 | })
26 | app.all('/info/1', (req, res) => {
27 | res.send("Information about 1")
28 | })
29 | app.use((req, res, next) => {
30 | res.send("Nothing to be found here");
31 | })
32 |
33 | app.listen(2345, function () {
34 | console.log("Server started on http://localhost:2345");
35 | });
36 |
--------------------------------------------------------------------------------
/Lecture19/Handlebars/server.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by championswimmer on 21/07/17.
3 | */
4 | const express = require('express');
5 |
6 | const app = express();
7 |
8 | let students = [
9 | {name: 'Anirban', attendance: 50},
10 | {name: 'Divyank', attendance: 20},
11 | {name: 'Sakshi', attendance: 80},
12 | {name: 'Rahul', attendance: 75},
13 | ];
14 |
15 | app.set('view engine', 'hbs');
16 | //app.set('views', 'myviews') //to use different folder for views
17 |
18 | app.get('/user', (req, res) => {
19 |
20 | res.render('user', {
21 | username: 'championswimmer',
22 | name: 'Arnav Gupta'
23 | })
24 | });
25 |
26 | app.get('/students', (req, res) => {
27 | res.render('students', {
28 | students: students
29 | })
30 | });
31 |
32 | app.use('/', express.static(__dirname + '/public'));
33 |
34 |
35 | app.listen(3456, function () {
36 | console.log("Server started on http://localhost:3456");
37 | });
--------------------------------------------------------------------------------
/Lecture10/AdvancedJS/prototypes.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by championswimmer on 27/06/17.
3 | */
4 |
5 | var oneObj = {
6 | key: 'value'
7 | }
8 |
9 | var otherObj = Object.create(oneObj);
10 | otherObj.otherKey = 12345;
11 |
12 | var anotherObj = Object.create(otherObj);
13 | anotherObj.someBool = false;
14 |
15 | function aFun () {
16 | console.log(this.someBool);
17 | }
18 | anotherObj.someFun = aFun
19 |
20 | /*
21 | otherObj
22 | Object { otherKey: 12345 }
23 | otherObj.key = 'askhdbaskhd'
24 | "askhdbaskhd"
25 | anotherObj.key
26 | "askhdbaskhd"
27 | anotherObj
28 | Object { someBool: false }
29 | anotherObj.key
30 | "askhdbaskhd"
31 | delete otherObj.key
32 | true
33 | otherObj
34 | Object { otherKey: 12345 }
35 | otherObj.key
36 | "value"
37 | anotherObj.key
38 | "value"
39 | anotherObj
40 | Object { someBool: false }
41 | delete anotherObj.key
42 | true
43 | anotherObj.key
44 | "value"
45 | */
46 |
--------------------------------------------------------------------------------
/Lecture16/TodoDB/server.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by championswimmer on 11/07/17.
3 | */
4 | const express = require('express');
5 | const bp = require('body-parser');
6 | const db = require('./db')
7 |
8 | const app = express();
9 |
10 | app.use('/', express.static(__dirname + "/public_static"));
11 |
12 | app.use(bp.urlencoded({extended: true}))
13 | app.use(bp.json())
14 |
15 | //Return list of all todos
16 | app.get('/todos', (req, res) => {
17 | db.getTodos().then(function (todos) {
18 | res.send(todos)
19 | }).catch(function (err) {
20 | res.send({error: "Could not retrieve todos"})
21 | })
22 | })
23 |
24 | //Add a new todo
25 | app.post('/todos', (req, res) => {
26 | db.addTodo(req.query.task).then(function () {
27 |
28 | res.send({success: true})
29 |
30 | }).catch(function (err) {
31 |
32 | })
33 | })
34 |
35 | app.listen(7890, function () {
36 | console.log("Server started on http://localhost:7890");
37 | });
--------------------------------------------------------------------------------
/Lecture02/html/forms.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Title
6 |
7 |
8 |
27 |
28 |
29 | eadable content of a page when looking at its layout.
30 | The point of using
31 |
32 |
33 |
--------------------------------------------------------------------------------
/Lecture07/Javascript/scopes.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by championswimmer on 20/06/17.
3 | */
4 |
5 |
6 | var a = 10;
7 | let aa = 10;
8 | const myconst = [1,2];
9 | myconst.push(3);
10 | console.log(myconst);
11 |
12 | function myfun () {
13 | var b = 20;
14 | console.log(a);
15 | console.log(b);
16 | console.log(aa);
17 | let ab = 'outside';
18 | var ac = 'outside';
19 | const m = 10;
20 | if (true) {
21 | var c = 45;
22 | console.log(m);
23 | let ab = 'inside';
24 | var ac = 'inside';
25 | console.log(c);
26 | console.log(ab);
27 | const m = 12;
28 | console.log(m);
29 | }
30 | console.log(ab);
31 | console.log(ac);
32 | }
33 |
34 | // var myVar = 'some value';
35 | //
36 | // function redeclare() {
37 | // var myVar = 'wow';
38 | // let myVar = myVar + ' that was not there'; //errors
39 | // console.log(myVar);
40 | // }
41 | //
42 | //
43 | myfun();
44 | //
45 | // redeclare();
--------------------------------------------------------------------------------
/Lecture19/Authentication/passport.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by championswimmer on 21/07/17.
3 | */
4 | const passport = require('passport');
5 | const LocalStrategy = require('passport-local').Strategy;
6 | const users = require('./users')
7 |
8 | passport.serializeUser(function (user, done) {
9 | console.log('serialize');
10 | done(null, user.id)
11 | });
12 |
13 | passport.deserializeUser(function (userId, done) {
14 | console.log('deserialize');
15 | done(null, users[userId])
16 | });
17 |
18 |
19 | const localStrategy = new LocalStrategy(
20 | function (username, password, done) {
21 | console.log('local strategy');
22 | for (let i in users) {
23 | if (users[i].username == username) {
24 | if (users[i].password == password) {
25 | users[i].id = i;
26 | done(null, users[i])
27 | } else {
28 | done(null, false, {message: 'Wrong password'})
29 | }
30 | }
31 | }
32 | done(null, false, {message: 'User not found'})
33 | });
34 |
35 | passport.use(localStrategy);
36 |
37 | module.exports = passport;
--------------------------------------------------------------------------------
/Lecture13/MoreAboutNode/fizzbuzz/fizzbuzz.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by championswimmer on 04/07/17.
3 | */
4 |
5 | const fs = require('fs');
6 | const path = require('path')
7 |
8 | const inputFile = path.join(__dirname, 'input')
9 | const outputFile = path.join(__dirname, 'output')
10 |
11 | function getFizzBuzzForNum (num) {
12 | let res = '';
13 | num = parseInt(num);
14 | if (num % 3 == 0) res += 'fizz'
15 |
16 | if (num % 5 == 0) res += 'buzz'
17 |
18 | if (res === '') res += num;
19 |
20 | return res
21 | }
22 |
23 | function resultReducer(accum, currVal) {
24 | return accum + '\n' + currVal;
25 | }
26 |
27 | fs.readFile(inputFile, (err, data) => {
28 | if (err) throw err;
29 |
30 | let fileData = data.toString();
31 | let fileDataVals = fileData.split(/\r?\n/);
32 | let fizzBuzzVals = fileDataVals.map(getFizzBuzzForNum);
33 | let resString = fizzBuzzVals.reduce(resultReducer);
34 |
35 | fs.writeFile(outputFile, resString, function (err) {
36 | if (err) throw err;
37 |
38 | console.log('All done!');
39 | })
40 | })
41 |
42 |
43 |
--------------------------------------------------------------------------------
/Lecture05/CSS/style.css:
--------------------------------------------------------------------------------
1 | #div1 {
2 | margin: 30px;
3 | background-color: red;
4 | width: 100px;
5 | height: 100px;
6 | transition: width 1s;
7 |
8 | /*transform: translate(30px, 40px);*/
9 | /*transform: rotate(0.1rad);*/
10 | /*transform: skewY(20deg);*/
11 | /*transform: scale(2,2);*/
12 | /*transform: matrix(1,0,0!* x90 *!,1,50,50!* px *!);*/
13 | /*transform: rotateX(45deg);*/
14 | }
15 |
16 | @keyframes godown {
17 | 0% {
18 | height: 100px;
19 | }
20 | 25% {
21 | transform: rotate(30deg);
22 | height: 200px;
23 | }
24 | 50% {
25 | height: 100px;
26 | }
27 | 75% {
28 | height: 200px;
29 | }
30 | }
31 |
32 | #div1:hover {
33 | background-color: blue;
34 | width: 130px;
35 | height: 200px;
36 | /*transition: width 1s, background-color 3s;*/
37 | animation: godown 2s;
38 | }
39 |
40 |
41 | col-lg-6 {
42 | max-width: 100%;
43 | }
44 |
45 |
46 | @media (min-width: 576px) {
47 | col-lg-6 {
48 | max-width: 100%;
49 | }
50 | }
51 |
52 | @media (min-width: 768px) {
53 | col-lg-6 {
54 | max-width: 50%;
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/Lecture05/CSS/interpolators.css:
--------------------------------------------------------------------------------
1 |
2 | .box {
3 | display: block;
4 | width: 60px;
5 | height: 60px;
6 | margin: 20px;
7 | background-color: #fc4f4f;
8 | box-shadow: #888 2px 2px 5px;
9 | /*animation-name: bounce;*/
10 | /*animation-iteration-count: 100;*/
11 | /*animation-duration: 2s;*/
12 | /*top: 30px;*/
13 |
14 | }
15 | .box:hover {
16 | position: relative;
17 | bottom: 3px;
18 | right: 3px;
19 | box-shadow: #888 6px 6px 5px;
20 |
21 | }
22 | .box:active {
23 | position: relative;
24 | bottom: -2px;
25 | right: -2px;
26 | box-shadow: #888 1px 1px 5px;
27 |
28 | }
29 |
30 | #one {
31 | animation-timing-function: ease;
32 | }
33 | #two {
34 | animation-timing-function: linear;
35 | }
36 | #three {
37 | animation-timing-function: ease-in;
38 | }
39 | #four {
40 | animation-timing-function: ease-out;
41 | }
42 | #five {
43 | animation-timing-function: ease-in-out;
44 | }
45 | #six {
46 | }
47 |
48 | @keyframes bounce {
49 | 0% {
50 | margin-left: 30px;
51 | }
52 | 50% {
53 | margin-left: 200px;
54 | margin-top: 100px;
55 | background-color: blue;
56 | }
57 | 100% {
58 | margin-left: 30px;
59 | }
60 | }
61 |
62 |
--------------------------------------------------------------------------------
/Lecture20/heroku-deploy/db.js:
--------------------------------------------------------------------------------
1 | const Sequelize = require('sequelize');
2 |
3 | process.env.DATABASE_URL =
4 | process.env.DATABASE_URL || `${dialect}://${user}:${pass}@${host}:@${port}/${database}`
5 |
6 | // postgres://user:pass@domain:port/dbname
7 | const db = new Sequelize(process.env.DATABASE_URL);
8 |
9 | const Product = db.define('product', {
10 | id: {type: Sequelize.DataTypes.INTEGER, primaryKey: true, autoIncrement: true},
11 | name: Sequelize.DataTypes.STRING,
12 | price: Sequelize.DataTypes.FLOAT
13 | });
14 |
15 | const User = db.define('user', {
16 | id: {type: Sequelize.DataTypes.INTEGER, primaryKey: true, autoIncrement: true},
17 | name: Sequelize.DataTypes.STRING,
18 | email: Sequelize.DataTypes.STRING
19 | });
20 |
21 | const UserProduct = db.define('cart', {
22 | id: {type: Sequelize.DataTypes.INTEGER, primaryKey: true, autoIncrement: true},
23 | });
24 |
25 | User.belongsTo(UserProduct)
26 | UserProduct.hasMany(User)
27 |
28 | Product.belongsTo(UserProduct)
29 | UserProduct.hasMany(Product)
30 |
31 | Product.find({
32 | where: {
33 | '$userproduct.user.email$': 'a@cb.lk'
34 | },
35 | attributes: ['id', 'price', 'name'],
36 | includes: [{model: UserProduct, includes:[User]}]
37 | }).then((products) => {
38 |
39 | })
40 |
--------------------------------------------------------------------------------
/Lecture07/Javascript/string.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by championswimmer on 20/06/17.
3 | */
4 |
5 | console.log('Hello');
6 |
7 | var integer = 10;
8 | var myfloat = 10.1;
9 | var mystring = "This is a string! Some more text is here too";
10 | var mybool = false;
11 |
12 | var myobj = {
13 | key1: "value1",
14 | key2: 10,
15 | key3: true
16 |
17 | };
18 |
19 | var myarr = ["asdsa", 12, {a:10}, true];
20 | function findAllIndexesOf(str, char) {
21 | var idx = -2;
22 | var pos = [];
23 | while(idx != -1) {
24 | idx = str.indexOf(char, idx);
25 | if (idx != -1) pos.push(idx)
26 | else break;
27 | idx++;
28 | }
29 | console.log(pos);
30 | }
31 | console.log(mystring.concat("Another String"));
32 | console.log(mystring.split(" "));
33 | console.log(mystring.substr(3 //start
34 | , 5//length
35 | ));
36 | console.log(mystring.substring(4 //start
37 | , 8 //end
38 | ));
39 | console.log(mystring.charAt(8));
40 | console.log(mystring.indexOf("!"));
41 | console.log(mystring.indexOf("s", mystring.indexOf("s") + 1));
42 | console.log(mystring.lastIndexOf("s", 55));
43 | console.log(mystring.includes("his", 8));
44 | console.log(" asdsad ".trim() + "asdas");
45 |
46 |
47 | console.log(mystring);
48 |
49 | mystring = mystring.concat("Other stuff");
50 |
--------------------------------------------------------------------------------
/Lecture17/Sockets/public_static/client.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by championswimmer on 14/07/17.
3 | */
4 |
5 | let socket = io();
6 |
7 | $(function () {
8 |
9 | let newmsg = $('#newmsg')
10 | let sendmsgbtn = $('#sendmsg')
11 | let msglist = $('#msglist')
12 | let loginbtn = $('#login')
13 | let username = $('#username')
14 | let loginframe = $('#login-container')
15 | let chatframe = $('#chat-container')
16 |
17 | if (sessionStorage.getItem('username')) {
18 | socket.emit('login', sessionStorage.getItem('username'))
19 | }
20 |
21 | loginbtn.click(function () {
22 | socket.emit('login', username.val())
23 | })
24 |
25 | socket.on('logged_in', (data) => {
26 | chatframe.show();
27 | loginframe.hide();
28 | console.log('logged_in');
29 | for (let chat of data.chats) {
30 | msglist.append($(`${chat} `))
31 | }
32 | sessionStorage.setItem('username', data.username)
33 | })
34 |
35 | sendmsgbtn.click(function () {
36 | socket.emit('new_message', newmsg.val())
37 | })
38 |
39 | socket.on('recv_message', (data) => {
40 | console.log('msg recvd');
41 | msglist.append($(`${data} `))
42 | })
43 |
44 | socket.on('disconnect', () => {
45 | chatframe.hide();
46 | loginframe.show();
47 | msglist.empty();
48 | })
49 |
50 | })
--------------------------------------------------------------------------------
/Lecture19/Authentication/server.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by championswimmer on 21/07/17.
3 | */
4 | const express = require('express');
5 | const path = require('path');
6 | const session = require('express-session')
7 | const cp = require('cookie-parser');
8 | const bp = require('body-parser');
9 | const passport = require('./passport.js')
10 |
11 | const app = express();
12 |
13 |
14 | app.use(cp('somesecret'));
15 | app.use(session({
16 | secret: 'somesecret',
17 | resave: false,
18 | saveUninitialized: true
19 | }));
20 | app.use(bp.urlencoded({extended: true}))
21 | app.use(bp.json())
22 |
23 | app.use(passport.initialize());
24 | app.use(passport.session());
25 |
26 | app.use((r,s,n) => {
27 | console.log(r.user); n();
28 | })
29 |
30 | function checkLoggedIn(req, res, next) {
31 | console.log('check logged in');
32 | if (req.user) {
33 | next();
34 | } else {
35 | res.status(404).send('Unauthorised')
36 | }
37 | }
38 |
39 |
40 | app.use('/public', express.static(path.join(__dirname, "public")))
41 | app.use('/private', checkLoggedIn, express.static(path.join(__dirname, "private")))
42 |
43 | app.post('/login', passport.authenticate('local', {
44 | failureRedirect: '/public',
45 | successRedirect: '/private'
46 | }),
47 | );
48 |
49 | app.listen(1234, function () {
50 | console.log("Server started on http://localhost:1234");
51 | });
--------------------------------------------------------------------------------
/Lecture17/Sockets/server.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by championswimmer on 14/07/17.
3 | */
4 | const express = require('express');
5 | const http = require('http');
6 | const socketio = require('socket.io');
7 |
8 | const app = express();
9 | const server = http.Server(app);
10 | const io = socketio(server);
11 |
12 | let users = {}
13 | let chats = []
14 |
15 | app.use('/', express.static(__dirname + "/public_static"))
16 | app.get('/hello', (r,s) => s.send("hello"))
17 |
18 | io.on('connection', (socket) => {
19 | console.log("New client connected");
20 |
21 | socket.on('login', (username) => {
22 | console.log('User logged in : ' + socket.id);
23 | users[socket.id] = username
24 | socket.join(username)
25 | socket.emit('logged_in', {username, chats})
26 | })
27 |
28 |
29 | socket.on('new_message', (data) => {
30 | if (data.charAt(0) === '@') {
31 | let sendTo = data.substr(1).split(' ')[0]
32 | let chat = users[socket.id] + ": " + data
33 |
34 | io.to(sendTo).emit('recv_message', chat)
35 |
36 | } else {
37 |
38 | let chat = users[socket.id] + ": " + data
39 | chats.push(chat)
40 | console.log('msg received');
41 | io.emit('recv_message', chat)
42 |
43 | }
44 |
45 | })
46 |
47 | })
48 |
49 |
50 | server.listen(3245, function () {
51 | console.log("Server started on http://localhost:3245");
52 | });
--------------------------------------------------------------------------------
/Lecture08/TodoList/events.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by championswimmer on 23/06/17.
3 | */
4 |
5 |
6 | window.onload = function () {
7 | let myDiv = document.getElementById('mydiv');
8 | console.log(myDiv);
9 |
10 | let div1 = document.getElementById('one')
11 | let div2 = document.getElementById('two')
12 | let div3 = document.getElementById('three')
13 |
14 | // myDiv.onclick = function () {
15 | // console.log('div has been clicked');
16 | // }
17 | // myDiv.onclick = function () {
18 | // console.log('div-clicked');
19 | // }
20 | //
21 | // myDiv.addEventListener('click', function () {
22 | // console.log('div has been clicked');
23 | // })
24 | // myDiv.addEventListener('mouseover', function () {
25 | // console.log('div has mouseover');
26 | // })
27 | // myDiv.addEventListener('mouseup', function () {
28 | // console.log('div mouseup');
29 | // })
30 | // myDiv.addEventListener('mousedown', function () {
31 | // console.log('div mousedown');
32 | // })
33 |
34 | function clicked(event) {
35 | console.log(event.target.id);
36 | }
37 |
38 | div1.addEventListener('click', (event) => {
39 | console.log('1 clicked');
40 | console.log(event);
41 | }, true)
42 | div2.addEventListener('click', () => {
43 | console.log('2 clicked');
44 | })
45 | div3.addEventListener('click', () => {
46 | console.log('3 clicked');
47 | })
48 |
49 | };
--------------------------------------------------------------------------------
/Lecture09/TodoList/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | TodoList
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
22 |
23 |
24 |
39 |
40 |
41 |
42 | Sample Item
43 | Sample Item
44 |
45 |
46 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/Lecture11/jQuery/todolist.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | TodoList
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
23 |
24 |
25 |
40 |
41 |
42 |
43 | Sample Item
44 | Sample Item
45 |
46 |
47 |
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/Lecture08/TodoList/todolist.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by championswimmer on 23/06/17.
3 | */
4 |
5 | let todoItems = [];
6 |
7 | window.onload = function () {
8 | let newtodo = document.getElementById('newtodo');
9 | let addtodo = document.getElementById('addtodo');
10 |
11 | let todolist = document.getElementById('todolist');
12 |
13 | refreshTodos();
14 |
15 | addtodo.onclick = function () {
16 | addAndSave(newtodo.value);
17 | }
18 | };
19 |
20 | function addItemToList(list, itemIndex, itemObj) {
21 | let todoItem = document.createElement('li');
22 | todoItem.innerText = itemObj.task;
23 | todoItem.setAttribute('data-id', itemIndex);
24 | if (itemObj.done) {
25 | todoItem.style.textDecoration = 'line-through'
26 | }
27 | todoItem.addEventListener('click', doneSelf);
28 | list.appendChild(todoItem);
29 | }
30 |
31 | function doneSelf(event) {
32 | let idToDone = event.target.getAttribute('data-id');
33 | console.log('Done = ' + idToDone);
34 | todoItems[idToDone].done = !todoItems[idToDone].done;
35 | saveTodos();
36 | refreshTodos()
37 | }
38 |
39 | function deleteSelf(event) {
40 | let idToDel = event.target.getAttribute('data-id');
41 | console.log('Delete = ' + idToDel);
42 | todoItems.splice(idToDel, 1);
43 | saveTodos();
44 | refreshTodos()
45 | }
46 |
47 | function refreshTodos() {
48 | retrieveTodos();
49 | setItemArrayToList(todolist, todoItems);
50 |
51 | }
52 |
53 | function saveTodos() {
54 | localStorage.setItem('todolist', JSON.stringify(todoItems));
55 | }
56 |
57 | function setItemArrayToList(list, itemArray) {
58 | list.innerHTML = '';
59 | for (index in itemArray) {
60 | addItemToList(list, index, itemArray[index])
61 | }
62 | }
63 |
64 | function retrieveTodos () {
65 | let todosInStore = localStorage.getItem('todolist')
66 | if (todosInStore) {
67 | todoItems = JSON.parse(todosInStore);
68 | }
69 | }
70 |
71 | function addAndSave(itemText) {
72 | todoItems.push({
73 | task: itemText,
74 | done: false
75 | });
76 | saveTodos();
77 | refreshTodos();
78 |
79 | }
80 |
81 |
--------------------------------------------------------------------------------
/Lecture20/Testing/.nyc_output/ac0c5e39b7f5a2bbd8c1b289c49b139a.json:
--------------------------------------------------------------------------------
1 | {"/Users/championswimmer/CodingBlocks/Courses/Elixir/2017Summer/Lecture20/Testing/calcfare.js":{"path":"/Users/championswimmer/CodingBlocks/Courses/Elixir/2017Summer/Lecture20/Testing/calcfare.js","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":3,"column":58}},"1":{"start":{"line":3,"column":2},"end":{"line":3,"column":58}},"2":{"start":{"line":5,"column":0},"end":{"line":6,"column":70}},"3":{"start":{"line":6,"column":2},"end":{"line":6,"column":70}},"4":{"start":{"line":8,"column":0},"end":{"line":15,"column":1}},"5":{"start":{"line":9,"column":2},"end":{"line":11,"column":3}},"6":{"start":{"line":13,"column":2},"end":{"line":13,"column":27}},"7":{"start":{"line":14,"column":2},"end":{"line":14,"column":29}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":10},"end":{"line":2,"column":11}},"loc":{"start":{"line":3,"column":2},"end":{"line":3,"column":58}},"line":3},"1":{"name":"(anonymous_1)","decl":{"start":{"line":5,"column":11},"end":{"line":5,"column":12}},"loc":{"start":{"line":6,"column":2},"end":{"line":6,"column":70}},"line":6}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":8},"end":{"line":6,"column":37}},"type":"cond-expr","locations":[{"start":{"line":6,"column":20},"end":{"line":6,"column":32}},{"start":{"line":6,"column":36},"end":{"line":6,"column":37}}],"line":6},"1":{"loc":{"start":{"line":6,"column":42},"end":{"line":6,"column":69}},"type":"cond-expr","locations":[{"start":{"line":6,"column":56},"end":{"line":6,"column":64}},{"start":{"line":6,"column":68},"end":{"line":6,"column":69}}],"line":6},"2":{"loc":{"start":{"line":8,"column":0},"end":{"line":15,"column":1}},"type":"if","locations":[{"start":{"line":8,"column":0},"end":{"line":15,"column":1}},{"start":{"line":8,"column":0},"end":{"line":15,"column":1}}],"line":8}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":0,"7":0},"f":{"0":1,"1":1},"b":{"0":[0,1],"1":[0,1],"2":[1,0]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"d4c509fb347e29b80133c5004d5e7ec1dd37071c","contentHash":"e2b6c336256bc81c1e612619fdcb5faf_11.0.3"}}
--------------------------------------------------------------------------------
/Lecture07/Javascript/arrays.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by championswimmer on 20/06/17.
3 | */
4 |
5 |
6 | var arr = [1,2,3,4, "Asd"];
7 | var arr2 = new Array(1,2, "As");
8 | var arr3 = [1,2,3,4,5,6,7,8,9];
9 | var arr4 = [1,2,3,4,5,6,7,8,9];
10 | var arr5 = [1,'a', true, {a:10}, [3,4]];
11 | var obj1 = {a:10, b:11, c:12};
12 |
13 | console.log(arr);
14 | console.log(arr2);
15 | console.log([1,2] == [1,2]);
16 | console.log(arr3.slice(-5, -2));
17 | console.log(arr3);
18 | console.log(arr3.splice(4,2, 10,12,13,14));
19 | console.log(arr3);
20 | console.log(arr4.indexOf(5));
21 | console.log(arr4.concat('a'));
22 | console.log(arr4.concat('a', 'b'));
23 | console.log(arr4.concat(arr2));
24 | console.log(arr4.concat(arr3, arr2));
25 | console.log(arr4.concat([arr3, arr2]));
26 | console.log(arr4.join('-'));
27 | console.log(arr4.join([1,2]));
28 | console.log('------------normal for loop');
29 | for (var i = 0; i < arr5.length; i++) {
30 | console.log(arr5[i]);
31 | }
32 | console.log('------------for-of loop');
33 | for (var i of arr5) {
34 | console.log(i);
35 | }
36 | console.log('-------------for-in loop');
37 | for (var i in arr5) {
38 | console.log(i);
39 | }
40 | console.log('-------------for-in loop');
41 | for (var i in obj1) {
42 | console.log(i + ":" + obj1[i]);
43 | }
44 | // console.log('------------for-of loop');
45 | // for (var i of obj1) {
46 | // console.log(i);
47 | // }
48 | console.log('--------- forEach');
49 | var k = arr4.forEach(function (item, index, arr) {
50 | // console.log(index + ":" + item);
51 | // console.log(arr);
52 | arr[index] = item + 1;
53 | });
54 | console.log(arr4);
55 | console.log(k); //undefined
56 |
57 | console.log('-------------- map');
58 | var l = arr4.map(Math.sqrt);
59 | console.log(arr4);
60 | console.log(l);
61 |
62 | console.log('------------- reduce');
63 | var r = arr4.reduce(function (acc, item, index, arr) {
64 | console.log(index);
65 | },10);
66 | console.log(r);
67 |
68 | var sum = arr4.reduce((a,i) => a+i);
69 |
70 | console.log('-----filter');
71 | var f = arr4.filter(function (item, index, array) {
72 | return item % 2;
73 | });
74 |
75 | console.log(f);
76 |
77 |
78 | var onlynums = arr5.filter((i) => typeof i == 'string');
79 | console.log(onlynums);
80 |
81 | var fun = function (a, b) {
82 | return a + b
83 | }
84 |
85 | fun = (a,b) => a+b;
86 |
87 | fun = "not so funny";
--------------------------------------------------------------------------------
/Lecture20/heroku-deploy/.gitignore:
--------------------------------------------------------------------------------
1 | # Created by .ignore support plugin (hsz.mobi)
2 | ### JetBrains template
3 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
4 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
5 |
6 | # User-specific stuff:
7 | .idea/**/workspace.xml
8 | .idea/**/tasks.xml
9 | .idea/dictionaries
10 |
11 | # Sensitive or high-churn files:
12 | .idea/**/dataSources/
13 | .idea/**/dataSources.ids
14 | .idea/**/dataSources.xml
15 | .idea/**/dataSources.local.xml
16 | .idea/**/sqlDataSources.xml
17 | .idea/**/dynamic.xml
18 | .idea/**/uiDesigner.xml
19 |
20 | # Gradle:
21 | .idea/**/gradle.xml
22 | .idea/**/libraries
23 |
24 | # Mongo Explorer plugin:
25 | .idea/**/mongoSettings.xml
26 |
27 | ## File-based project format:
28 | *.iws
29 |
30 | ## Plugin-specific files:
31 |
32 | # IntelliJ
33 | /out/
34 |
35 | # mpeltonen/sbt-idea plugin
36 | .idea_modules/
37 |
38 | # JIRA plugin
39 | atlassian-ide-plugin.xml
40 |
41 | # Crashlytics plugin (for Android Studio and IntelliJ)
42 | com_crashlytics_export_strings.xml
43 | crashlytics.properties
44 | crashlytics-build.properties
45 | fabric.properties
46 | ### Node template
47 | # Logs
48 | logs
49 | *.log
50 | npm-debug.log*
51 | yarn-debug.log*
52 | yarn-error.log*
53 |
54 | # Runtime data
55 | pids
56 | *.pid
57 | *.seed
58 | *.pid.lock
59 |
60 | # Directory for instrumented libs generated by jscoverage/JSCover
61 | lib-cov
62 |
63 | # Coverage directory used by tools like istanbul
64 | coverage
65 |
66 | # nyc test coverage
67 | .nyc_output
68 |
69 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
70 | .grunt
71 |
72 | # Bower dependency directory (https://bower.io/)
73 | bower_components
74 |
75 | # node-waf configuration
76 | .lock-wscript
77 |
78 | # Compiled binary addons (http://nodejs.org/api/addons.html)
79 | build/Release
80 |
81 | # Dependency directories
82 | node_modules/
83 | jspm_packages/
84 |
85 | # Typescript v1 declaration files
86 | typings/
87 |
88 | # Optional npm cache directory
89 | .npm
90 |
91 | # Optional eslint cache
92 | .eslintcache
93 |
94 | # Optional REPL history
95 | .node_repl_history
96 |
97 | # Output of 'npm pack'
98 | *.tgz
99 |
100 | # Yarn Integrity file
101 | .yarn-integrity
102 |
103 | # dotenv environment variables file
104 | .env
105 |
106 |
107 |
--------------------------------------------------------------------------------
/Lecture06/html2 and CSS/index_css.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CSS
6 |
7 |
8 |
9 |
10 |
11 | It is a long established fact that a reader will be distracted
12 | by the readable content of a page when looking at its layout.
13 | The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy.
14 | Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour
15 | an the like).
16 |
17 | It is a long established fact that a reader will be distracted
18 | by the readable content of a page when looking at its layout.
19 | The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy.
20 | Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour
21 | an the like).
22 |
23 |
24 | item 1
25 | item 2
26 | item 3
27 | item 4
28 |
29 |
30 |
31 | item 1
32 | item 2
33 | item 3
34 | item 4
35 | item 5
36 |
37 |
38 |
39 |
This is a para just below div
40 |
This is para NOT just below div
41 |
42 | item 1
43 | item 2
44 | item 3
45 | item 4
46 | item 5
47 |
48 |
49 | item 1
50 | item 2
51 | item 3
52 | item 4
53 |
54 |
55 |
56 | This is adjacent to div
57 | this is also adjacent but not immediate
58 |
59 |
60 |
--------------------------------------------------------------------------------
/Lecture11/jQuery/js/todolistjquery.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by championswimmer on 30/06/17.
3 | */
4 |
5 | let todos = [];
6 | let todoListElement;
7 |
8 | function Todo(task, done) {
9 | this.task = task;
10 | this.done = !!done;
11 | }
12 |
13 | $(function () {
14 |
15 | let btnAdd = $('#btn-add-todo');
16 | let btnClean = $('#btn-clear-done');
17 | let inputNewTodo = $('#input-new-todo');
18 | todoListElement = $('#list-todos');
19 |
20 | refreshTodos(true);
21 |
22 | btnAdd.click(function () {
23 | addTodo(inputNewTodo.val())
24 | })
25 |
26 | });
27 |
28 | function refreshTodos(firstPageLoad = false) {
29 | if (!firstPageLoad) {
30 | saveTodos();
31 | }
32 | if (!todoListElement) {
33 | return;
34 | }
35 | retrieveTodos();
36 | todoListElement.empty();
37 | for (i in todos) {
38 | let todoItem = createTodoListItem(i);
39 | todoListElement.append(todoItem)
40 | }
41 |
42 | }
43 |
44 | function deleteTodo(ev) {
45 | let todoId = $(ev.target).parent().attr('data-id');
46 | todos.splice(todoId,1);
47 | refreshTodos();
48 | }
49 |
50 | function moveTodoUp(ev) {
51 | let todoId = +($(ev.target).parent().attr('data-id'));
52 | todos.splice((todoId-1),0,todos.splice(todoId,1)[0]);
53 | refreshTodos();
54 | }
55 |
56 |
57 | function moveTodoDown(ev) {
58 | let todoId = +($(ev.target).parent().attr('data-id'));
59 | todos.splice((todoId+1),0,todos.splice(todoId,1)[0]);
60 | refreshTodos();
61 | }
62 | function createTodoListItem (i) {
63 |
64 | let todoItem =$(` `);
65 | todoItem.append($(' ').attr('checked', todos[i].done));
66 | todoItem.append($(`${todos[i].task} `));
67 |
68 | todoItem.append($(' ')
69 | .click(deleteTodo));
70 |
71 | todoItem.append($(' ')
72 | .click(moveTodoUp));
73 |
74 | todoItem.append($(' ')
75 | .click(moveTodoDown));
76 | return todoItem
77 |
78 |
79 | }
80 |
81 | function retrieveTodos() {
82 | let savedTodos = localStorage.getItem('todos');
83 | if (savedTodos) {
84 | todos = JSON.parse(savedTodos);
85 | }
86 | }
87 |
88 | function saveTodos() {
89 | localStorage.setItem("todos", JSON.stringify(todos))
90 | }
91 |
92 | function addTodo (todoTask) {
93 | todos.push(new Todo(todoTask, false));
94 | refreshTodos();
95 | }
--------------------------------------------------------------------------------
/Lecture11/jQuery/css/bootstrap-reboot.min.css.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["../../scss/_normalize.scss","bootstrap-reboot.css","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_hover.scss"],"names":[],"mappings":"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"}
--------------------------------------------------------------------------------
/Lecture09/TodoList/css/bootstrap-reboot.min.css.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["../../scss/_normalize.scss","bootstrap-reboot.css","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_hover.scss"],"names":[],"mappings":"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"}
--------------------------------------------------------------------------------
/Lecture20/Testing/coverage/lcov-report/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Code coverage report for All files
5 |
6 |
7 |
8 |
9 |
14 |
15 |
16 |
17 |
18 |
19 | All files
20 |
21 |
22 |
23 | 75%
24 | Statements
25 | 6/8
26 |
27 |
28 | 50%
29 | Branches
30 | 3/6
31 |
32 |
33 | 100%
34 | Functions
35 | 2/2
36 |
37 |
38 | 75%
39 | Lines
40 | 6/8
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 | File
50 |
51 | Statements
52 |
53 | Branches
54 |
55 | Functions
56 |
57 | Lines
58 |
59 |
60 |
61 |
62 | calcfare.js
63 |
64 | 75%
65 | 6/8
66 | 50%
67 | 3/6
68 | 100%
69 | 2/2
70 | 75%
71 | 6/8
72 |
73 |
74 |
75 |
76 |
77 |
78 |
82 |
83 |
84 |
91 |
92 |
93 |
94 |
--------------------------------------------------------------------------------
/Lecture20/Testing/coverage/lcov-report/calcfare.js.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Code coverage report for calcfare.js
5 |
6 |
7 |
8 |
9 |
14 |
15 |
16 |
17 |
18 |
19 | All files calcfare.js
20 |
21 |
22 |
23 | 75%
24 | Statements
25 | 6/8
26 |
27 |
28 | 50%
29 | Branches
30 | 3/6
31 |
32 |
33 | 100%
34 | Functions
35 | 2/2
36 |
37 |
38 | 75%
39 | Lines
40 | 6/8
41 |
42 |
43 |
44 |
45 |
46 | 1
47 | 2
48 | 3
49 | 4
50 | 5
51 | 6
52 | 7
53 | 8
54 | 9
55 | 10
56 | 11
57 | 12
58 | 13
59 | 14
60 | 15
61 | 1x
62 | 1x
63 |
64 | 1x
65 | 1x
66 |
67 | 1x
68 | 1x
69 |
70 |
71 |
72 |
73 |
74 |
75 | getFare = (km, min) =>
76 | Math.max(25, (25 + 8*(km -2))) + Math.max(0, (min - 15))
77 |
78 | getFare2 = (km, min) =>
79 | 25 + ((km > 2) ? (8 * (km - 2)) : 0) + ((min > 15) ? (min - 15) : 0)
80 |
81 | E if (typeof module != null) {
82 | module.exports = {
83 | getFare, getFare2
84 | }
85 | } else {
86 | window.getFare = getFare;
87 | window.getFare2 = getFare2;
88 | }
89 |
90 |
91 |
92 |
96 |
97 |
98 |
105 |
106 |
107 |
108 |
--------------------------------------------------------------------------------
/Lecture09/TodoList/js/todolist.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by championswimmer on 25/06/17.
3 | */
4 |
5 | let todoList = [];
6 | let todoListElement = null;
7 | /*
8 | { task: 'task to do'
9 | done: false
10 | */
11 | window.onload = function () {
12 |
13 | let btnAdd = document.getElementById('btn-add-todo');
14 | let btnClean = document.getElementById('btn-clear-done');
15 | let inputNewTodo = document.getElementById('input-new-todo');
16 | todoListElement = document.getElementById('list-todos');
17 |
18 | showTodos(todoListElement);
19 |
20 | btnAdd.addEventListener('click', function (ev) {
21 | addTodo(inputNewTodo.value);
22 | showTodos();
23 | inputNewTodo.value = '';
24 | });
25 |
26 | btnClean.addEventListener('click', deleteDone);
27 |
28 | };
29 |
30 | function retrieveTodos() {
31 | let savedTodos = localStorage.getItem('todos');
32 | if (savedTodos) {
33 | todoList = JSON.parse(savedTodos);
34 | }
35 | }
36 |
37 | function saveTodos() {
38 | localStorage.setItem("todos", JSON.stringify(todoList))
39 | }
40 |
41 | function showTodos() {
42 | if (!todoListElement) {
43 | return;
44 | }
45 | retrieveTodos();
46 | todoListElement.innerHTML = "";
47 | for (i in todoList) {
48 | todoListElement.appendChild(
49 | createTodoListItem(i, todoList[i].task, todoList[i].done)
50 | )
51 | }
52 | }
53 |
54 | function setTodoAsDone(ev) {
55 | let todoId = ev.target.parentElement.getAttribute('data-id')
56 | todoList[todoId].done = ev.target.checked;
57 | saveTodos();
58 | showTodos();
59 | }
60 |
61 | function deleteTodo(ev) {
62 | let todoId = ev.target.parentElement.getAttribute('data-id');
63 | todoList.splice(todoId,1);
64 | saveTodos();
65 | showTodos();
66 | }
67 |
68 | function moveTaskUp(ev) {
69 | let todoId = ev.target.parentElement.getAttribute('data-id');
70 | todoId = parseInt(todoId);
71 | todoList.splice((todoId-1),0,todoList.splice(todoId,1)[0]);
72 | saveTodos();
73 | showTodos();
74 | }
75 |
76 | function moveTaskDown(ev) {
77 | let todoId = ev.target.parentElement.getAttribute('data-id');
78 | todoId = parseInt(todoId);
79 | todoList.splice((todoId+1),0,todoList.splice(todoId,1)[0]);
80 | saveTodos();
81 | showTodos();
82 | }
83 |
84 | function deleteDone() {
85 | todoList = todoList.filter(function (item, index, array) {
86 | return !item.done;
87 | });
88 | saveTodos();
89 | showTodos();
90 | }
91 |
92 | function createTodoListItem(id, task, done) {
93 | let todoListItem = document.createElement('li');
94 | todoListItem.className = 'list-group-item';
95 | todoListItem.setAttribute('data-id', id);
96 |
97 | let todoDoneCheckbox = document.createElement('input');
98 | todoDoneCheckbox.setAttribute('type', 'checkbox');
99 | todoDoneCheckbox.className = 'col-1';
100 | todoDoneCheckbox.addEventListener('change', setTodoAsDone);
101 |
102 | let taskSpan = document.createElement('span');
103 | taskSpan.innerText = task;
104 | taskSpan.className = 'col-8';
105 |
106 | let taskDeleteButton = document.createElement('i');
107 | taskDeleteButton.className = 'fa fa-remove col-1 delete';
108 | taskDeleteButton.addEventListener('click', deleteTodo);
109 |
110 | let moveUpButton = document.createElement('i');
111 | moveUpButton.className = 'fa fa-chevron-up col-1 icn-move';
112 | moveUpButton.addEventListener('click', moveTaskUp);
113 |
114 | let moveDownButton = document.createElement('i');
115 | moveDownButton.className = 'fa fa-chevron-down col-1 icn-move';
116 | moveDownButton.addEventListener('click', moveTaskDown);
117 |
118 | if (done) {
119 | taskSpan.className += ' todo-done';
120 | todoDoneCheckbox.setAttribute('checked', 'true');
121 | }
122 |
123 | todoListItem.appendChild(todoDoneCheckbox);
124 | todoListItem.appendChild(taskSpan);
125 | todoListItem.appendChild(taskDeleteButton);
126 | todoListItem.appendChild(moveUpButton);
127 | todoListItem.appendChild(moveDownButton);
128 |
129 | return todoListItem;
130 |
131 | }
132 |
133 | function addTodo(taskText) {
134 | let newTodo = {
135 | task: taskText,
136 | done: false
137 | };
138 | todoList.push(newTodo);
139 | saveTodos();
140 | }
--------------------------------------------------------------------------------
/Lecture11/jQuery/js/todolist.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by championswimmer on 25/06/17.
3 | */
4 |
5 | let todoList = [];
6 | let todoListElement = null;
7 | /*
8 | { task: 'task to do'
9 | done: false
10 | */
11 | window.onload = function () {
12 |
13 | let btnAdd = document.getElementById('btn-add-todo');
14 | let btnClean = document.getElementById('btn-clear-done');
15 | let inputNewTodo = document.getElementById('input-new-todo');
16 | todoListElement = document.getElementById('list-todos');
17 |
18 | showTodos(todoListElement);
19 |
20 | btnAdd.addEventListener('click', function (ev) {
21 | addTodo(inputNewTodo.value);
22 | showTodos();
23 | inputNewTodo.value = '';
24 | });
25 |
26 | btnClean.addEventListener('click', deleteDone);
27 |
28 | };
29 |
30 | function retrieveTodos() {
31 | let savedTodos = localStorage.getItem('todos');
32 | if (savedTodos) {
33 | todoList = JSON.parse(savedTodos);
34 | }
35 | }
36 |
37 | function saveTodos() {
38 | localStorage.setItem("todos", JSON.stringify(todoList))
39 | }
40 |
41 | function showTodos() {
42 | if (!todoListElement) {
43 | return;
44 | }
45 | retrieveTodos();
46 | todoListElement.innerHTML = "";
47 | for (i in todoList) {
48 | todoListElement.appendChild(
49 | createTodoListItem(i, todoList[i].task, todoList[i].done)
50 | )
51 | }
52 | }
53 |
54 | function setTodoAsDone(ev) {
55 | let todoId = ev.target.parentElement.getAttribute('data-id')
56 | todoList[todoId].done = ev.target.checked;
57 | saveTodos();
58 | showTodos();
59 | }
60 |
61 | function deleteTodo(ev) {
62 | let todoId = ev.target.parentElement.getAttribute('data-id');
63 | todoList.splice(todoId,1);
64 | saveTodos();
65 | showTodos();
66 | }
67 |
68 | function moveTaskUp(ev) {
69 | let todoId = ev.target.parentElement.getAttribute('data-id');
70 | todoId = parseInt(todoId);
71 | todoList.splice((todoId-1),0,todoList.splice(todoId,1)[0]);
72 | saveTodos();
73 | showTodos();
74 | }
75 |
76 | function moveTaskDown(ev) {
77 | let todoId = ev.target.parentElement.getAttribute('data-id');
78 | todoId = parseInt(todoId);
79 | todoList.splice((todoId+1),0,todoList.splice(todoId,1)[0]);
80 | saveTodos();
81 | showTodos();
82 | }
83 |
84 | function deleteDone() {
85 | todoList = todoList.filter(function (item, index, array) {
86 | return !item.done;
87 | });
88 | saveTodos();
89 | showTodos();
90 | }
91 |
92 | function createTodoListItem(id, task, done) {
93 | let todoListItem = document.createElement('li');
94 | todoListItem.className = 'list-group-item';
95 | todoListItem.setAttribute('data-id', id);
96 |
97 | let todoDoneCheckbox = document.createElement('input');
98 | todoDoneCheckbox.setAttribute('type', 'checkbox');
99 | todoDoneCheckbox.className = 'col-1';
100 | todoDoneCheckbox.addEventListener('change', setTodoAsDone);
101 |
102 | let taskSpan = document.createElement('span');
103 | taskSpan.innerText = task;
104 | taskSpan.className = 'col-8';
105 |
106 | let taskDeleteButton = document.createElement('i');
107 | taskDeleteButton.className = 'fa fa-remove col-1 delete';
108 | taskDeleteButton.addEventListener('click', deleteTodo);
109 |
110 | let moveUpButton = document.createElement('i');
111 | moveUpButton.className = 'fa fa-chevron-up col-1 icn-move';
112 | moveUpButton.addEventListener('click', moveTaskUp);
113 |
114 | let moveDownButton = document.createElement('i');
115 | moveDownButton.className = 'fa fa-chevron-down col-1 icn-move';
116 | moveDownButton.addEventListener('click', moveTaskDown);
117 |
118 | if (done) {
119 | taskSpan.className += ' todo-done';
120 | todoDoneCheckbox.setAttribute('checked', 'true');
121 | }
122 |
123 | todoListItem.appendChild(todoDoneCheckbox);
124 | todoListItem.appendChild(taskSpan);
125 | todoListItem.appendChild(taskDeleteButton);
126 | todoListItem.appendChild(moveUpButton);
127 | todoListItem.appendChild(moveDownButton);
128 |
129 | return todoListItem;
130 |
131 | }
132 |
133 | function addTodo(taskText) {
134 | let newTodo = {
135 | task: taskText,
136 | done: false
137 | };
138 | todoList.push(newTodo);
139 | saveTodos();
140 | }
--------------------------------------------------------------------------------
/Lecture05/CSS/bootstrap.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Title
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.
16 |
17 |
18 | Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.
19 |
20 |
21 | Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/Lecture11/jQuery/css/bootstrap-reboot.min.css:
--------------------------------------------------------------------------------
1 | /*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}template{display:none}[hidden]{display:none}html{-webkit-box-sizing:border-box;box-sizing:border-box}*,::after,::before{-webkit-box-sizing:inherit;box-sizing:inherit}@-ms-viewport{width:device-width}html{-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}body{font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:1rem;font-weight:400;line-height:1.5;color:#292b2c;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{cursor:help}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}a{color:#0275d8;text-decoration:none}a:focus,a:hover{color:#014c8c;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle}[role=button]{cursor:pointer}[role=button],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse;background-color:transparent}caption{padding-top:.75rem;padding-bottom:.75rem;color:#636c72;text-align:left;caption-side:bottom}th{text-align:left}label{display:inline-block;margin-bottom:.5rem}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,select,textarea{line-height:inherit}input[type=checkbox]:disabled,input[type=radio]:disabled{cursor:not-allowed}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{-webkit-appearance:listbox}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit}input[type=search]{-webkit-appearance:none}output{display:inline-block}[hidden]{display:none!important}/*# sourceMappingURL=bootstrap-reboot.min.css.map */
--------------------------------------------------------------------------------
/Lecture09/TodoList/css/bootstrap-reboot.min.css:
--------------------------------------------------------------------------------
1 | /*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}template{display:none}[hidden]{display:none}html{-webkit-box-sizing:border-box;box-sizing:border-box}*,::after,::before{-webkit-box-sizing:inherit;box-sizing:inherit}@-ms-viewport{width:device-width}html{-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}body{font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:1rem;font-weight:400;line-height:1.5;color:#292b2c;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{cursor:help}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}a{color:#0275d8;text-decoration:none}a:focus,a:hover{color:#014c8c;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle}[role=button]{cursor:pointer}[role=button],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse;background-color:transparent}caption{padding-top:.75rem;padding-bottom:.75rem;color:#636c72;text-align:left;caption-side:bottom}th{text-align:left}label{display:inline-block;margin-bottom:.5rem}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,select,textarea{line-height:inherit}input[type=checkbox]:disabled,input[type=radio]:disabled{cursor:not-allowed}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{-webkit-appearance:listbox}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit}input[type=search]{-webkit-appearance:none}output{display:inline-block}[hidden]{display:none!important}/*# sourceMappingURL=bootstrap-reboot.min.css.map */
--------------------------------------------------------------------------------
/Lecture18/MongoDB/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "trymongodb",
3 | "version": "1.0.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "bson": {
8 | "version": "1.0.4",
9 | "resolved": "https://registry.npmjs.org/bson/-/bson-1.0.4.tgz",
10 | "integrity": "sha1-k8ENOeqltYQVy8QFLz5T5WKwtyw="
11 | },
12 | "buffer-shims": {
13 | "version": "1.0.0",
14 | "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz",
15 | "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E="
16 | },
17 | "core-util-is": {
18 | "version": "1.0.2",
19 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
20 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
21 | },
22 | "es6-promise": {
23 | "version": "3.2.1",
24 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.2.1.tgz",
25 | "integrity": "sha1-7FYjOGgDKQkgcXDDlEjiREndH8Q="
26 | },
27 | "inherits": {
28 | "version": "2.0.3",
29 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
30 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
31 | },
32 | "isarray": {
33 | "version": "1.0.0",
34 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
35 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
36 | },
37 | "mongodb": {
38 | "version": "2.2.30",
39 | "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.2.30.tgz",
40 | "integrity": "sha1-jM2AH2dsgXIEDC8rR+lgKg1WNKs=",
41 | "requires": {
42 | "es6-promise": "3.2.1",
43 | "mongodb-core": "2.1.14",
44 | "readable-stream": "2.2.7"
45 | }
46 | },
47 | "mongodb-core": {
48 | "version": "2.1.14",
49 | "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-2.1.14.tgz",
50 | "integrity": "sha1-E8uidkImtb49GJkq8Mljzl6g8P0=",
51 | "requires": {
52 | "bson": "1.0.4",
53 | "require_optional": "1.0.1"
54 | }
55 | },
56 | "process-nextick-args": {
57 | "version": "1.0.7",
58 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
59 | "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
60 | },
61 | "readable-stream": {
62 | "version": "2.2.7",
63 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.7.tgz",
64 | "integrity": "sha1-BwV6y+JGeyIELTb5jFrVBwVOlbE=",
65 | "requires": {
66 | "buffer-shims": "1.0.0",
67 | "core-util-is": "1.0.2",
68 | "inherits": "2.0.3",
69 | "isarray": "1.0.0",
70 | "process-nextick-args": "1.0.7",
71 | "string_decoder": "1.0.3",
72 | "util-deprecate": "1.0.2"
73 | }
74 | },
75 | "require_optional": {
76 | "version": "1.0.1",
77 | "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz",
78 | "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==",
79 | "requires": {
80 | "resolve-from": "2.0.0",
81 | "semver": "5.3.0"
82 | }
83 | },
84 | "resolve-from": {
85 | "version": "2.0.0",
86 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz",
87 | "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c="
88 | },
89 | "safe-buffer": {
90 | "version": "5.1.1",
91 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
92 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
93 | },
94 | "semver": {
95 | "version": "5.3.0",
96 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
97 | "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8="
98 | },
99 | "string_decoder": {
100 | "version": "1.0.3",
101 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
102 | "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
103 | "requires": {
104 | "safe-buffer": "5.1.1"
105 | }
106 | },
107 | "util-deprecate": {
108 | "version": "1.0.2",
109 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
110 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
111 | }
112 | }
113 | }
114 |
--------------------------------------------------------------------------------
/Lecture20/Testing/coverage/lcov-report/sorter.js:
--------------------------------------------------------------------------------
1 | var addSorting = (function () {
2 | "use strict";
3 | var cols,
4 | currentSort = {
5 | index: 0,
6 | desc: false
7 | };
8 |
9 | // returns the summary table element
10 | function getTable() { return document.querySelector('.coverage-summary'); }
11 | // returns the thead element of the summary table
12 | function getTableHeader() { return getTable().querySelector('thead tr'); }
13 | // returns the tbody element of the summary table
14 | function getTableBody() { return getTable().querySelector('tbody'); }
15 | // returns the th element for nth column
16 | function getNthColumn(n) { return getTableHeader().querySelectorAll('th')[n]; }
17 |
18 | // loads all columns
19 | function loadColumns() {
20 | var colNodes = getTableHeader().querySelectorAll('th'),
21 | colNode,
22 | cols = [],
23 | col,
24 | i;
25 |
26 | for (i = 0; i < colNodes.length; i += 1) {
27 | colNode = colNodes[i];
28 | col = {
29 | key: colNode.getAttribute('data-col'),
30 | sortable: !colNode.getAttribute('data-nosort'),
31 | type: colNode.getAttribute('data-type') || 'string'
32 | };
33 | cols.push(col);
34 | if (col.sortable) {
35 | col.defaultDescSort = col.type === 'number';
36 | colNode.innerHTML = colNode.innerHTML + ' ';
37 | }
38 | }
39 | return cols;
40 | }
41 | // attaches a data attribute to every tr element with an object
42 | // of data values keyed by column name
43 | function loadRowData(tableRow) {
44 | var tableCols = tableRow.querySelectorAll('td'),
45 | colNode,
46 | col,
47 | data = {},
48 | i,
49 | val;
50 | for (i = 0; i < tableCols.length; i += 1) {
51 | colNode = tableCols[i];
52 | col = cols[i];
53 | val = colNode.getAttribute('data-value');
54 | if (col.type === 'number') {
55 | val = Number(val);
56 | }
57 | data[col.key] = val;
58 | }
59 | return data;
60 | }
61 | // loads all row data
62 | function loadData() {
63 | var rows = getTableBody().querySelectorAll('tr'),
64 | i;
65 |
66 | for (i = 0; i < rows.length; i += 1) {
67 | rows[i].data = loadRowData(rows[i]);
68 | }
69 | }
70 | // sorts the table using the data for the ith column
71 | function sortByIndex(index, desc) {
72 | var key = cols[index].key,
73 | sorter = function (a, b) {
74 | a = a.data[key];
75 | b = b.data[key];
76 | return a < b ? -1 : a > b ? 1 : 0;
77 | },
78 | finalSorter = sorter,
79 | tableBody = document.querySelector('.coverage-summary tbody'),
80 | rowNodes = tableBody.querySelectorAll('tr'),
81 | rows = [],
82 | i;
83 |
84 | if (desc) {
85 | finalSorter = function (a, b) {
86 | return -1 * sorter(a, b);
87 | };
88 | }
89 |
90 | for (i = 0; i < rowNodes.length; i += 1) {
91 | rows.push(rowNodes[i]);
92 | tableBody.removeChild(rowNodes[i]);
93 | }
94 |
95 | rows.sort(finalSorter);
96 |
97 | for (i = 0; i < rows.length; i += 1) {
98 | tableBody.appendChild(rows[i]);
99 | }
100 | }
101 | // removes sort indicators for current column being sorted
102 | function removeSortIndicators() {
103 | var col = getNthColumn(currentSort.index),
104 | cls = col.className;
105 |
106 | cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, '');
107 | col.className = cls;
108 | }
109 | // adds sort indicators for current column being sorted
110 | function addSortIndicators() {
111 | getNthColumn(currentSort.index).className += currentSort.desc ? ' sorted-desc' : ' sorted';
112 | }
113 | // adds event listeners for all sorter widgets
114 | function enableUI() {
115 | var i,
116 | el,
117 | ithSorter = function ithSorter(i) {
118 | var col = cols[i];
119 |
120 | return function () {
121 | var desc = col.defaultDescSort;
122 |
123 | if (currentSort.index === i) {
124 | desc = !currentSort.desc;
125 | }
126 | sortByIndex(i, desc);
127 | removeSortIndicators();
128 | currentSort.index = i;
129 | currentSort.desc = desc;
130 | addSortIndicators();
131 | };
132 | };
133 | for (i =0 ; i < cols.length; i += 1) {
134 | if (cols[i].sortable) {
135 | // add the click event handler on the th so users
136 | // dont have to click on those tiny arrows
137 | el = getNthColumn(i).querySelector('.sorter').parentElement;
138 | if (el.addEventListener) {
139 | el.addEventListener('click', ithSorter(i));
140 | } else {
141 | el.attachEvent('onclick', ithSorter(i));
142 | }
143 | }
144 | }
145 | }
146 | // adds sorting functionality to the UI
147 | return function () {
148 | if (!getTable()) {
149 | return;
150 | }
151 | cols = loadColumns();
152 | loadData(cols);
153 | addSortIndicators();
154 | enableUI();
155 | };
156 | })();
157 |
158 | window.addEventListener('load', addSorting);
159 |
--------------------------------------------------------------------------------
/Lecture20/Testing/coverage/lcov-report/base.css:
--------------------------------------------------------------------------------
1 | body, html {
2 | margin:0; padding: 0;
3 | height: 100%;
4 | }
5 | body {
6 | font-family: Helvetica Neue, Helvetica, Arial;
7 | font-size: 14px;
8 | color:#333;
9 | }
10 | .small { font-size: 12px; }
11 | *, *:after, *:before {
12 | -webkit-box-sizing:border-box;
13 | -moz-box-sizing:border-box;
14 | box-sizing:border-box;
15 | }
16 | h1 { font-size: 20px; margin: 0;}
17 | h2 { font-size: 14px; }
18 | pre {
19 | font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace;
20 | margin: 0;
21 | padding: 0;
22 | -moz-tab-size: 2;
23 | -o-tab-size: 2;
24 | tab-size: 2;
25 | }
26 | a { color:#0074D9; text-decoration:none; }
27 | a:hover { text-decoration:underline; }
28 | .strong { font-weight: bold; }
29 | .space-top1 { padding: 10px 0 0 0; }
30 | .pad2y { padding: 20px 0; }
31 | .pad1y { padding: 10px 0; }
32 | .pad2x { padding: 0 20px; }
33 | .pad2 { padding: 20px; }
34 | .pad1 { padding: 10px; }
35 | .space-left2 { padding-left:55px; }
36 | .space-right2 { padding-right:20px; }
37 | .center { text-align:center; }
38 | .clearfix { display:block; }
39 | .clearfix:after {
40 | content:'';
41 | display:block;
42 | height:0;
43 | clear:both;
44 | visibility:hidden;
45 | }
46 | .fl { float: left; }
47 | @media only screen and (max-width:640px) {
48 | .col3 { width:100%; max-width:100%; }
49 | .hide-mobile { display:none!important; }
50 | }
51 |
52 | .quiet {
53 | color: #7f7f7f;
54 | color: rgba(0,0,0,0.5);
55 | }
56 | .quiet a { opacity: 0.7; }
57 |
58 | .fraction {
59 | font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
60 | font-size: 10px;
61 | color: #555;
62 | background: #E8E8E8;
63 | padding: 4px 5px;
64 | border-radius: 3px;
65 | vertical-align: middle;
66 | }
67 |
68 | div.path a:link, div.path a:visited { color: #333; }
69 | table.coverage {
70 | border-collapse: collapse;
71 | margin: 10px 0 0 0;
72 | padding: 0;
73 | }
74 |
75 | table.coverage td {
76 | margin: 0;
77 | padding: 0;
78 | vertical-align: top;
79 | }
80 | table.coverage td.line-count {
81 | text-align: right;
82 | padding: 0 5px 0 20px;
83 | }
84 | table.coverage td.line-coverage {
85 | text-align: right;
86 | padding-right: 10px;
87 | min-width:20px;
88 | }
89 |
90 | table.coverage td span.cline-any {
91 | display: inline-block;
92 | padding: 0 5px;
93 | width: 100%;
94 | }
95 | .missing-if-branch {
96 | display: inline-block;
97 | margin-right: 5px;
98 | border-radius: 3px;
99 | position: relative;
100 | padding: 0 4px;
101 | background: #333;
102 | color: yellow;
103 | }
104 |
105 | .skip-if-branch {
106 | display: none;
107 | margin-right: 10px;
108 | position: relative;
109 | padding: 0 4px;
110 | background: #ccc;
111 | color: white;
112 | }
113 | .missing-if-branch .typ, .skip-if-branch .typ {
114 | color: inherit !important;
115 | }
116 | .coverage-summary {
117 | border-collapse: collapse;
118 | width: 100%;
119 | }
120 | .coverage-summary tr { border-bottom: 1px solid #bbb; }
121 | .keyline-all { border: 1px solid #ddd; }
122 | .coverage-summary td, .coverage-summary th { padding: 10px; }
123 | .coverage-summary tbody { border: 1px solid #bbb; }
124 | .coverage-summary td { border-right: 1px solid #bbb; }
125 | .coverage-summary td:last-child { border-right: none; }
126 | .coverage-summary th {
127 | text-align: left;
128 | font-weight: normal;
129 | white-space: nowrap;
130 | }
131 | .coverage-summary th.file { border-right: none !important; }
132 | .coverage-summary th.pct { }
133 | .coverage-summary th.pic,
134 | .coverage-summary th.abs,
135 | .coverage-summary td.pct,
136 | .coverage-summary td.abs { text-align: right; }
137 | .coverage-summary td.file { white-space: nowrap; }
138 | .coverage-summary td.pic { min-width: 120px !important; }
139 | .coverage-summary tfoot td { }
140 |
141 | .coverage-summary .sorter {
142 | height: 10px;
143 | width: 7px;
144 | display: inline-block;
145 | margin-left: 0.5em;
146 | background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent;
147 | }
148 | .coverage-summary .sorted .sorter {
149 | background-position: 0 -20px;
150 | }
151 | .coverage-summary .sorted-desc .sorter {
152 | background-position: 0 -10px;
153 | }
154 | .status-line { height: 10px; }
155 | /* dark red */
156 | .red.solid, .status-line.low, .low .cover-fill { background:#C21F39 }
157 | .low .chart { border:1px solid #C21F39 }
158 | /* medium red */
159 | .cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE }
160 | /* light red */
161 | .low, .cline-no { background:#FCE1E5 }
162 | /* light green */
163 | .high, .cline-yes { background:rgb(230,245,208) }
164 | /* medium green */
165 | .cstat-yes { background:rgb(161,215,106) }
166 | /* dark green */
167 | .status-line.high, .high .cover-fill { background:rgb(77,146,33) }
168 | .high .chart { border:1px solid rgb(77,146,33) }
169 |
170 |
171 | .medium .chart { border:1px solid #666; }
172 | .medium .cover-fill { background: #666; }
173 |
174 | .cbranch-no { background: yellow !important; color: #111; }
175 |
176 | .cstat-skip { background: #ddd; color: #111; }
177 | .fstat-skip { background: #ddd; color: #111 !important; }
178 | .cbranch-skip { background: #ddd !important; color: #111; }
179 |
180 | span.cline-neutral { background: #eaeaea; }
181 | .medium { background: #eaeaea; }
182 |
183 | .cover-fill, .cover-empty {
184 | display:inline-block;
185 | height: 12px;
186 | }
187 | .chart {
188 | line-height: 0;
189 | }
190 | .cover-empty {
191 | background: white;
192 | }
193 | .cover-full {
194 | border-right: none !important;
195 | }
196 | pre.prettyprint {
197 | border: none !important;
198 | padding: 0 !important;
199 | margin: 0 !important;
200 | }
201 | .com { color: #999 !important; }
202 | .ignore-none { color: #999; font-weight: normal; }
203 |
204 | .wrapper {
205 | min-height: 100%;
206 | height: auto !important;
207 | height: 100%;
208 | margin: 0 auto -48px;
209 | }
210 | .footer, .push {
211 | height: 48px;
212 | }
213 |
--------------------------------------------------------------------------------
/Lecture02/html/index2.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | title
6 |
7 |
8 | heading 1
9 | heading 2
10 | heading 3
11 | heading 4
12 | heading 5
13 |
14 |
15 | this is not a heading
16 |
17 |
18 | eadable
19 |
22 |
eadable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).
23 | eadable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).
24 |
25 |
26 |
27 |
28 |
29 | list item 1
30 | list item 2
31 | list item 3
32 | list item 4
33 |
34 |
35 |
36 | item
37 | item
38 | item
39 | item
40 | item
41 |
42 |
43 |
44 | List Title
45 | List Desc
46 |
47 |
48 |
49 | this is line is seprated by space
50 | this is not seprated
51 |
52 | public static void main(){
53 | system.out.print("Rishabh Khanna");
54 | }
55 |
56 |
57 |
58 |
59 |
60 | desktop this is not in a
61 |
62 | CB
63 |
64 | public static void main(){
65 | system.out.print("Rishabh Khanna");
66 | }
67 |
68 |
69 |
70 | bold
71 | italics
72 | strike
73 |
74 |
75 | emphaisis
76 | strong
77 | underline
78 |
79 | mark
80 |
81 | this is quote
82 |
83 | this is sub and this is sup
84 | 16 o8
85 |
86 |
87 |
88 |
89 |
90 | eadable content of a page when looking at its layout.
91 | The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).
92 |
93 |
94 | eadable content of a page when looking at its layout.
95 | The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).
96 |
97 |
98 | eadable content of a page when looking at its layout.
99 | The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).
100 |
101 |
102 |
103 | eadable content of a page when looking at its layout.
104 | The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).
105 |
106 |
107 |
108 |
109 |
110 |
111 | a
112 | b
113 | c
114 | d
115 |
116 |
117 | a
118 | b
119 | c
120 | d
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
--------------------------------------------------------------------------------
/Lecture16/MysqlExample/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "mysqlexample",
3 | "version": "1.0.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "ansicolors": {
8 | "version": "0.2.1",
9 | "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.2.1.tgz",
10 | "integrity": "sha1-vgiVmQl7dKXJxKhKDNvNtivYeu8="
11 | },
12 | "cardinal": {
13 | "version": "1.0.0",
14 | "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-1.0.0.tgz",
15 | "integrity": "sha1-UOIcGwqjdyn5N33vGWtanOyTLuk=",
16 | "requires": {
17 | "ansicolors": "0.2.1",
18 | "redeyed": "1.0.1"
19 | }
20 | },
21 | "core-util-is": {
22 | "version": "1.0.2",
23 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
24 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
25 | },
26 | "denque": {
27 | "version": "1.1.1",
28 | "resolved": "https://registry.npmjs.org/denque/-/denque-1.1.1.tgz",
29 | "integrity": "sha1-ECKcK4juwb0V/4LF/eNW5762254="
30 | },
31 | "esprima": {
32 | "version": "3.0.0",
33 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.0.0.tgz",
34 | "integrity": "sha1-U88kes2ncxPlUcOqLnM0LT+099k="
35 | },
36 | "generate-function": {
37 | "version": "2.0.0",
38 | "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz",
39 | "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ="
40 | },
41 | "iconv-lite": {
42 | "version": "0.4.18",
43 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz",
44 | "integrity": "sha512-sr1ZQph3UwHTR0XftSbK85OvBbxe/abLGzEnPENCQwmHf7sck8Oyu4ob3LgBxWWxRoM+QszeUyl7jbqapu2TqA=="
45 | },
46 | "inherits": {
47 | "version": "2.0.3",
48 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
49 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
50 | },
51 | "isarray": {
52 | "version": "1.0.0",
53 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
54 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
55 | },
56 | "long": {
57 | "version": "3.2.0",
58 | "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz",
59 | "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s="
60 | },
61 | "lru-cache": {
62 | "version": "4.1.1",
63 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz",
64 | "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==",
65 | "requires": {
66 | "pseudomap": "1.0.2",
67 | "yallist": "2.1.2"
68 | }
69 | },
70 | "mysql2": {
71 | "version": "1.3.5",
72 | "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-1.3.5.tgz",
73 | "integrity": "sha1-rmoJkiij3Ln5RUZ2B2/pOT1wrv4=",
74 | "requires": {
75 | "cardinal": "1.0.0",
76 | "denque": "1.1.1",
77 | "generate-function": "2.0.0",
78 | "iconv-lite": "0.4.18",
79 | "long": "3.2.0",
80 | "lru-cache": "4.1.1",
81 | "named-placeholders": "1.1.1",
82 | "object-assign": "4.1.1",
83 | "readable-stream": "2.2.11",
84 | "safe-buffer": "5.1.1",
85 | "seq-queue": "0.0.5",
86 | "sqlstring": "2.2.0"
87 | }
88 | },
89 | "named-placeholders": {
90 | "version": "1.1.1",
91 | "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.1.tgz",
92 | "integrity": "sha1-O3oNJiA910s6nfTJz7gnsvuQfmQ=",
93 | "requires": {
94 | "lru-cache": "2.5.0"
95 | },
96 | "dependencies": {
97 | "lru-cache": {
98 | "version": "2.5.0",
99 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.5.0.tgz",
100 | "integrity": "sha1-2COIrpyWC+y+oMc7uet5tsbOmus="
101 | }
102 | }
103 | },
104 | "object-assign": {
105 | "version": "4.1.1",
106 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
107 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
108 | },
109 | "process-nextick-args": {
110 | "version": "1.0.7",
111 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
112 | "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
113 | },
114 | "pseudomap": {
115 | "version": "1.0.2",
116 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
117 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
118 | },
119 | "readable-stream": {
120 | "version": "2.2.11",
121 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.11.tgz",
122 | "integrity": "sha512-h+8+r3MKEhkiVrwdKL8aWs1oc1VvBu33ueshOvS26RsZQ3Amhx/oO3TKe4lApSV9ueY6as8EAh7mtuFjdlhg9Q==",
123 | "requires": {
124 | "core-util-is": "1.0.2",
125 | "inherits": "2.0.3",
126 | "isarray": "1.0.0",
127 | "process-nextick-args": "1.0.7",
128 | "safe-buffer": "5.0.1",
129 | "string_decoder": "1.0.3",
130 | "util-deprecate": "1.0.2"
131 | },
132 | "dependencies": {
133 | "safe-buffer": {
134 | "version": "5.0.1",
135 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz",
136 | "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c="
137 | }
138 | }
139 | },
140 | "redeyed": {
141 | "version": "1.0.1",
142 | "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-1.0.1.tgz",
143 | "integrity": "sha1-6WwZO0DAgWsArshCaY5hGF5VSYo=",
144 | "requires": {
145 | "esprima": "3.0.0"
146 | }
147 | },
148 | "safe-buffer": {
149 | "version": "5.1.1",
150 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
151 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
152 | },
153 | "seq-queue": {
154 | "version": "0.0.5",
155 | "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz",
156 | "integrity": "sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4="
157 | },
158 | "sqlstring": {
159 | "version": "2.2.0",
160 | "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.2.0.tgz",
161 | "integrity": "sha1-wxNcTqirzX5+50GklmqJHYak8ZE="
162 | },
163 | "string_decoder": {
164 | "version": "1.0.3",
165 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
166 | "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
167 | "requires": {
168 | "safe-buffer": "5.1.1"
169 | }
170 | },
171 | "util-deprecate": {
172 | "version": "1.0.2",
173 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
174 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
175 | },
176 | "yallist": {
177 | "version": "2.1.2",
178 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
179 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
180 | }
181 | }
182 | }
183 |
--------------------------------------------------------------------------------
/Lecture11/jQuery/css/bootstrap-reboot.css:
--------------------------------------------------------------------------------
1 | /*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */
2 | html {
3 | font-family: sans-serif;
4 | line-height: 1.15;
5 | -ms-text-size-adjust: 100%;
6 | -webkit-text-size-adjust: 100%;
7 | }
8 |
9 | body {
10 | margin: 0;
11 | }
12 |
13 | article,
14 | aside,
15 | footer,
16 | header,
17 | nav,
18 | section {
19 | display: block;
20 | }
21 |
22 | h1 {
23 | font-size: 2em;
24 | margin: 0.67em 0;
25 | }
26 |
27 | figcaption,
28 | figure,
29 | main {
30 | display: block;
31 | }
32 |
33 | figure {
34 | margin: 1em 40px;
35 | }
36 |
37 | hr {
38 | -webkit-box-sizing: content-box;
39 | box-sizing: content-box;
40 | height: 0;
41 | overflow: visible;
42 | }
43 |
44 | pre {
45 | font-family: monospace, monospace;
46 | font-size: 1em;
47 | }
48 |
49 | a {
50 | background-color: transparent;
51 | -webkit-text-decoration-skip: objects;
52 | }
53 |
54 | a:active,
55 | a:hover {
56 | outline-width: 0;
57 | }
58 |
59 | abbr[title] {
60 | border-bottom: none;
61 | text-decoration: underline;
62 | text-decoration: underline dotted;
63 | }
64 |
65 | b,
66 | strong {
67 | font-weight: inherit;
68 | }
69 |
70 | b,
71 | strong {
72 | font-weight: bolder;
73 | }
74 |
75 | code,
76 | kbd,
77 | samp {
78 | font-family: monospace, monospace;
79 | font-size: 1em;
80 | }
81 |
82 | dfn {
83 | font-style: italic;
84 | }
85 |
86 | mark {
87 | background-color: #ff0;
88 | color: #000;
89 | }
90 |
91 | small {
92 | font-size: 80%;
93 | }
94 |
95 | sub,
96 | sup {
97 | font-size: 75%;
98 | line-height: 0;
99 | position: relative;
100 | vertical-align: baseline;
101 | }
102 |
103 | sub {
104 | bottom: -0.25em;
105 | }
106 |
107 | sup {
108 | top: -0.5em;
109 | }
110 |
111 | audio,
112 | video {
113 | display: inline-block;
114 | }
115 |
116 | audio:not([controls]) {
117 | display: none;
118 | height: 0;
119 | }
120 |
121 | img {
122 | border-style: none;
123 | }
124 |
125 | svg:not(:root) {
126 | overflow: hidden;
127 | }
128 |
129 | button,
130 | input,
131 | optgroup,
132 | select,
133 | textarea {
134 | font-family: sans-serif;
135 | font-size: 100%;
136 | line-height: 1.15;
137 | margin: 0;
138 | }
139 |
140 | button,
141 | input {
142 | overflow: visible;
143 | }
144 |
145 | button,
146 | select {
147 | text-transform: none;
148 | }
149 |
150 | button,
151 | html [type="button"],
152 | [type="reset"],
153 | [type="submit"] {
154 | -webkit-appearance: button;
155 | }
156 |
157 | button::-moz-focus-inner,
158 | [type="button"]::-moz-focus-inner,
159 | [type="reset"]::-moz-focus-inner,
160 | [type="submit"]::-moz-focus-inner {
161 | border-style: none;
162 | padding: 0;
163 | }
164 |
165 | button:-moz-focusring,
166 | [type="button"]:-moz-focusring,
167 | [type="reset"]:-moz-focusring,
168 | [type="submit"]:-moz-focusring {
169 | outline: 1px dotted ButtonText;
170 | }
171 |
172 | fieldset {
173 | border: 1px solid #c0c0c0;
174 | margin: 0 2px;
175 | padding: 0.35em 0.625em 0.75em;
176 | }
177 |
178 | legend {
179 | -webkit-box-sizing: border-box;
180 | box-sizing: border-box;
181 | color: inherit;
182 | display: table;
183 | max-width: 100%;
184 | padding: 0;
185 | white-space: normal;
186 | }
187 |
188 | progress {
189 | display: inline-block;
190 | vertical-align: baseline;
191 | }
192 |
193 | textarea {
194 | overflow: auto;
195 | }
196 |
197 | [type="checkbox"],
198 | [type="radio"] {
199 | -webkit-box-sizing: border-box;
200 | box-sizing: border-box;
201 | padding: 0;
202 | }
203 |
204 | [type="number"]::-webkit-inner-spin-button,
205 | [type="number"]::-webkit-outer-spin-button {
206 | height: auto;
207 | }
208 |
209 | [type="search"] {
210 | -webkit-appearance: textfield;
211 | outline-offset: -2px;
212 | }
213 |
214 | [type="search"]::-webkit-search-cancel-button,
215 | [type="search"]::-webkit-search-decoration {
216 | -webkit-appearance: none;
217 | }
218 |
219 | ::-webkit-file-upload-button {
220 | -webkit-appearance: button;
221 | font: inherit;
222 | }
223 |
224 | details,
225 | menu {
226 | display: block;
227 | }
228 |
229 | summary {
230 | display: list-item;
231 | }
232 |
233 | canvas {
234 | display: inline-block;
235 | }
236 |
237 | template {
238 | display: none;
239 | }
240 |
241 | [hidden] {
242 | display: none;
243 | }
244 |
245 | html {
246 | -webkit-box-sizing: border-box;
247 | box-sizing: border-box;
248 | }
249 |
250 | *,
251 | *::before,
252 | *::after {
253 | -webkit-box-sizing: inherit;
254 | box-sizing: inherit;
255 | }
256 |
257 | @-ms-viewport {
258 | width: device-width;
259 | }
260 |
261 | html {
262 | -ms-overflow-style: scrollbar;
263 | -webkit-tap-highlight-color: transparent;
264 | }
265 |
266 | body {
267 | font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
268 | font-size: 1rem;
269 | font-weight: normal;
270 | line-height: 1.5;
271 | color: #292b2c;
272 | background-color: #fff;
273 | }
274 |
275 | [tabindex="-1"]:focus {
276 | outline: none !important;
277 | }
278 |
279 | h1, h2, h3, h4, h5, h6 {
280 | margin-top: 0;
281 | margin-bottom: .5rem;
282 | }
283 |
284 | p {
285 | margin-top: 0;
286 | margin-bottom: 1rem;
287 | }
288 |
289 | abbr[title],
290 | abbr[data-original-title] {
291 | cursor: help;
292 | }
293 |
294 | address {
295 | margin-bottom: 1rem;
296 | font-style: normal;
297 | line-height: inherit;
298 | }
299 |
300 | ol,
301 | ul,
302 | dl {
303 | margin-top: 0;
304 | margin-bottom: 1rem;
305 | }
306 |
307 | ol ol,
308 | ul ul,
309 | ol ul,
310 | ul ol {
311 | margin-bottom: 0;
312 | }
313 |
314 | dt {
315 | font-weight: bold;
316 | }
317 |
318 | dd {
319 | margin-bottom: .5rem;
320 | margin-left: 0;
321 | }
322 |
323 | blockquote {
324 | margin: 0 0 1rem;
325 | }
326 |
327 | a {
328 | color: #0275d8;
329 | text-decoration: none;
330 | }
331 |
332 | a:focus, a:hover {
333 | color: #014c8c;
334 | text-decoration: underline;
335 | }
336 |
337 | a:not([href]):not([tabindex]) {
338 | color: inherit;
339 | text-decoration: none;
340 | }
341 |
342 | a:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover {
343 | color: inherit;
344 | text-decoration: none;
345 | }
346 |
347 | a:not([href]):not([tabindex]):focus {
348 | outline: 0;
349 | }
350 |
351 | pre {
352 | margin-top: 0;
353 | margin-bottom: 1rem;
354 | overflow: auto;
355 | }
356 |
357 | figure {
358 | margin: 0 0 1rem;
359 | }
360 |
361 | img {
362 | vertical-align: middle;
363 | }
364 |
365 | [role="button"] {
366 | cursor: pointer;
367 | }
368 |
369 | a,
370 | area,
371 | button,
372 | [role="button"],
373 | input,
374 | label,
375 | select,
376 | summary,
377 | textarea {
378 | -ms-touch-action: manipulation;
379 | touch-action: manipulation;
380 | }
381 |
382 | table {
383 | border-collapse: collapse;
384 | background-color: transparent;
385 | }
386 |
387 | caption {
388 | padding-top: 0.75rem;
389 | padding-bottom: 0.75rem;
390 | color: #636c72;
391 | text-align: left;
392 | caption-side: bottom;
393 | }
394 |
395 | th {
396 | text-align: left;
397 | }
398 |
399 | label {
400 | display: inline-block;
401 | margin-bottom: .5rem;
402 | }
403 |
404 | button:focus {
405 | outline: 1px dotted;
406 | outline: 5px auto -webkit-focus-ring-color;
407 | }
408 |
409 | input,
410 | button,
411 | select,
412 | textarea {
413 | line-height: inherit;
414 | }
415 |
416 | input[type="radio"]:disabled,
417 | input[type="checkbox"]:disabled {
418 | cursor: not-allowed;
419 | }
420 |
421 | input[type="date"],
422 | input[type="time"],
423 | input[type="datetime-local"],
424 | input[type="month"] {
425 | -webkit-appearance: listbox;
426 | }
427 |
428 | textarea {
429 | resize: vertical;
430 | }
431 |
432 | fieldset {
433 | min-width: 0;
434 | padding: 0;
435 | margin: 0;
436 | border: 0;
437 | }
438 |
439 | legend {
440 | display: block;
441 | width: 100%;
442 | padding: 0;
443 | margin-bottom: .5rem;
444 | font-size: 1.5rem;
445 | line-height: inherit;
446 | }
447 |
448 | input[type="search"] {
449 | -webkit-appearance: none;
450 | }
451 |
452 | output {
453 | display: inline-block;
454 | }
455 |
456 | [hidden] {
457 | display: none !important;
458 | }
459 | /*# sourceMappingURL=bootstrap-reboot.css.map */
--------------------------------------------------------------------------------
/Lecture09/TodoList/css/bootstrap-reboot.css:
--------------------------------------------------------------------------------
1 | /*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */
2 | html {
3 | font-family: sans-serif;
4 | line-height: 1.15;
5 | -ms-text-size-adjust: 100%;
6 | -webkit-text-size-adjust: 100%;
7 | }
8 |
9 | body {
10 | margin: 0;
11 | }
12 |
13 | article,
14 | aside,
15 | footer,
16 | header,
17 | nav,
18 | section {
19 | display: block;
20 | }
21 |
22 | h1 {
23 | font-size: 2em;
24 | margin: 0.67em 0;
25 | }
26 |
27 | figcaption,
28 | figure,
29 | main {
30 | display: block;
31 | }
32 |
33 | figure {
34 | margin: 1em 40px;
35 | }
36 |
37 | hr {
38 | -webkit-box-sizing: content-box;
39 | box-sizing: content-box;
40 | height: 0;
41 | overflow: visible;
42 | }
43 |
44 | pre {
45 | font-family: monospace, monospace;
46 | font-size: 1em;
47 | }
48 |
49 | a {
50 | background-color: transparent;
51 | -webkit-text-decoration-skip: objects;
52 | }
53 |
54 | a:active,
55 | a:hover {
56 | outline-width: 0;
57 | }
58 |
59 | abbr[title] {
60 | border-bottom: none;
61 | text-decoration: underline;
62 | text-decoration: underline dotted;
63 | }
64 |
65 | b,
66 | strong {
67 | font-weight: inherit;
68 | }
69 |
70 | b,
71 | strong {
72 | font-weight: bolder;
73 | }
74 |
75 | code,
76 | kbd,
77 | samp {
78 | font-family: monospace, monospace;
79 | font-size: 1em;
80 | }
81 |
82 | dfn {
83 | font-style: italic;
84 | }
85 |
86 | mark {
87 | background-color: #ff0;
88 | color: #000;
89 | }
90 |
91 | small {
92 | font-size: 80%;
93 | }
94 |
95 | sub,
96 | sup {
97 | font-size: 75%;
98 | line-height: 0;
99 | position: relative;
100 | vertical-align: baseline;
101 | }
102 |
103 | sub {
104 | bottom: -0.25em;
105 | }
106 |
107 | sup {
108 | top: -0.5em;
109 | }
110 |
111 | audio,
112 | video {
113 | display: inline-block;
114 | }
115 |
116 | audio:not([controls]) {
117 | display: none;
118 | height: 0;
119 | }
120 |
121 | img {
122 | border-style: none;
123 | }
124 |
125 | svg:not(:root) {
126 | overflow: hidden;
127 | }
128 |
129 | button,
130 | input,
131 | optgroup,
132 | select,
133 | textarea {
134 | font-family: sans-serif;
135 | font-size: 100%;
136 | line-height: 1.15;
137 | margin: 0;
138 | }
139 |
140 | button,
141 | input {
142 | overflow: visible;
143 | }
144 |
145 | button,
146 | select {
147 | text-transform: none;
148 | }
149 |
150 | button,
151 | html [type="button"],
152 | [type="reset"],
153 | [type="submit"] {
154 | -webkit-appearance: button;
155 | }
156 |
157 | button::-moz-focus-inner,
158 | [type="button"]::-moz-focus-inner,
159 | [type="reset"]::-moz-focus-inner,
160 | [type="submit"]::-moz-focus-inner {
161 | border-style: none;
162 | padding: 0;
163 | }
164 |
165 | button:-moz-focusring,
166 | [type="button"]:-moz-focusring,
167 | [type="reset"]:-moz-focusring,
168 | [type="submit"]:-moz-focusring {
169 | outline: 1px dotted ButtonText;
170 | }
171 |
172 | fieldset {
173 | border: 1px solid #c0c0c0;
174 | margin: 0 2px;
175 | padding: 0.35em 0.625em 0.75em;
176 | }
177 |
178 | legend {
179 | -webkit-box-sizing: border-box;
180 | box-sizing: border-box;
181 | color: inherit;
182 | display: table;
183 | max-width: 100%;
184 | padding: 0;
185 | white-space: normal;
186 | }
187 |
188 | progress {
189 | display: inline-block;
190 | vertical-align: baseline;
191 | }
192 |
193 | textarea {
194 | overflow: auto;
195 | }
196 |
197 | [type="checkbox"],
198 | [type="radio"] {
199 | -webkit-box-sizing: border-box;
200 | box-sizing: border-box;
201 | padding: 0;
202 | }
203 |
204 | [type="number"]::-webkit-inner-spin-button,
205 | [type="number"]::-webkit-outer-spin-button {
206 | height: auto;
207 | }
208 |
209 | [type="search"] {
210 | -webkit-appearance: textfield;
211 | outline-offset: -2px;
212 | }
213 |
214 | [type="search"]::-webkit-search-cancel-button,
215 | [type="search"]::-webkit-search-decoration {
216 | -webkit-appearance: none;
217 | }
218 |
219 | ::-webkit-file-upload-button {
220 | -webkit-appearance: button;
221 | font: inherit;
222 | }
223 |
224 | details,
225 | menu {
226 | display: block;
227 | }
228 |
229 | summary {
230 | display: list-item;
231 | }
232 |
233 | canvas {
234 | display: inline-block;
235 | }
236 |
237 | template {
238 | display: none;
239 | }
240 |
241 | [hidden] {
242 | display: none;
243 | }
244 |
245 | html {
246 | -webkit-box-sizing: border-box;
247 | box-sizing: border-box;
248 | }
249 |
250 | *,
251 | *::before,
252 | *::after {
253 | -webkit-box-sizing: inherit;
254 | box-sizing: inherit;
255 | }
256 |
257 | @-ms-viewport {
258 | width: device-width;
259 | }
260 |
261 | html {
262 | -ms-overflow-style: scrollbar;
263 | -webkit-tap-highlight-color: transparent;
264 | }
265 |
266 | body {
267 | font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
268 | font-size: 1rem;
269 | font-weight: normal;
270 | line-height: 1.5;
271 | color: #292b2c;
272 | background-color: #fff;
273 | }
274 |
275 | [tabindex="-1"]:focus {
276 | outline: none !important;
277 | }
278 |
279 | h1, h2, h3, h4, h5, h6 {
280 | margin-top: 0;
281 | margin-bottom: .5rem;
282 | }
283 |
284 | p {
285 | margin-top: 0;
286 | margin-bottom: 1rem;
287 | }
288 |
289 | abbr[title],
290 | abbr[data-original-title] {
291 | cursor: help;
292 | }
293 |
294 | address {
295 | margin-bottom: 1rem;
296 | font-style: normal;
297 | line-height: inherit;
298 | }
299 |
300 | ol,
301 | ul,
302 | dl {
303 | margin-top: 0;
304 | margin-bottom: 1rem;
305 | }
306 |
307 | ol ol,
308 | ul ul,
309 | ol ul,
310 | ul ol {
311 | margin-bottom: 0;
312 | }
313 |
314 | dt {
315 | font-weight: bold;
316 | }
317 |
318 | dd {
319 | margin-bottom: .5rem;
320 | margin-left: 0;
321 | }
322 |
323 | blockquote {
324 | margin: 0 0 1rem;
325 | }
326 |
327 | a {
328 | color: #0275d8;
329 | text-decoration: none;
330 | }
331 |
332 | a:focus, a:hover {
333 | color: #014c8c;
334 | text-decoration: underline;
335 | }
336 |
337 | a:not([href]):not([tabindex]) {
338 | color: inherit;
339 | text-decoration: none;
340 | }
341 |
342 | a:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover {
343 | color: inherit;
344 | text-decoration: none;
345 | }
346 |
347 | a:not([href]):not([tabindex]):focus {
348 | outline: 0;
349 | }
350 |
351 | pre {
352 | margin-top: 0;
353 | margin-bottom: 1rem;
354 | overflow: auto;
355 | }
356 |
357 | figure {
358 | margin: 0 0 1rem;
359 | }
360 |
361 | img {
362 | vertical-align: middle;
363 | }
364 |
365 | [role="button"] {
366 | cursor: pointer;
367 | }
368 |
369 | a,
370 | area,
371 | button,
372 | [role="button"],
373 | input,
374 | label,
375 | select,
376 | summary,
377 | textarea {
378 | -ms-touch-action: manipulation;
379 | touch-action: manipulation;
380 | }
381 |
382 | table {
383 | border-collapse: collapse;
384 | background-color: transparent;
385 | }
386 |
387 | caption {
388 | padding-top: 0.75rem;
389 | padding-bottom: 0.75rem;
390 | color: #636c72;
391 | text-align: left;
392 | caption-side: bottom;
393 | }
394 |
395 | th {
396 | text-align: left;
397 | }
398 |
399 | label {
400 | display: inline-block;
401 | margin-bottom: .5rem;
402 | }
403 |
404 | button:focus {
405 | outline: 1px dotted;
406 | outline: 5px auto -webkit-focus-ring-color;
407 | }
408 |
409 | input,
410 | button,
411 | select,
412 | textarea {
413 | line-height: inherit;
414 | }
415 |
416 | input[type="radio"]:disabled,
417 | input[type="checkbox"]:disabled {
418 | cursor: not-allowed;
419 | }
420 |
421 | input[type="date"],
422 | input[type="time"],
423 | input[type="datetime-local"],
424 | input[type="month"] {
425 | -webkit-appearance: listbox;
426 | }
427 |
428 | textarea {
429 | resize: vertical;
430 | }
431 |
432 | fieldset {
433 | min-width: 0;
434 | padding: 0;
435 | margin: 0;
436 | border: 0;
437 | }
438 |
439 | legend {
440 | display: block;
441 | width: 100%;
442 | padding: 0;
443 | margin-bottom: .5rem;
444 | font-size: 1.5rem;
445 | line-height: inherit;
446 | }
447 |
448 | input[type="search"] {
449 | -webkit-appearance: none;
450 | }
451 |
452 | output {
453 | display: inline-block;
454 | }
455 |
456 | [hidden] {
457 | display: none !important;
458 | }
459 | /*# sourceMappingURL=bootstrap-reboot.css.map */
--------------------------------------------------------------------------------
/Lecture11/jQuery/css/bootstrap-reboot.css.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["../../scss/_normalize.scss","bootstrap-reboot.css","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_hover.scss"],"names":[],"mappings":"AAAA,4EAA4E;AAY5E;EACE,wBAAuB;EACvB,kBAAiB;EACjB,2BAA0B;EAC1B,+BAA8B;CAC/B;;AASD;EACE,UAAS;CACV;;AAMD;;;;;;EAME,eAAc;CACf;;AAOD;EACE,eAAc;EACd,iBAAgB;CACjB;;AAUD;;;EAGE,eAAc;CACf;;AAMD;EACE,iBAAgB;CACjB;;AAOD;EACE,gCAAuB;UAAvB,wBAAuB;EACvB,UAAS;EACT,kBAAiB;CAClB;;AAOD;EACE,kCAAiC;EACjC,eAAc;CACf;;AAUD;EACE,8BAA6B;EAC7B,sCAAqC;CACtC;;AAOD;;EAEE,iBAAgB;CACjB;;AAOD;EACE,oBAAmB;EACnB,2BAA0B;EAC1B,kCAAiC;CAClC;;AAMD;;EAEE,qBAAoB;CACrB;;AAMD;;EAEE,oBAAmB;CACpB;;AAOD;;;EAGE,kCAAiC;EACjC,eAAc;CACf;;AAMD;EACE,mBAAkB;CACnB;;AAMD;EACE,uBAAsB;EACtB,YAAW;CACZ;;AAMD;EACE,eAAc;CACf;;AAOD;;EAEE,eAAc;EACd,eAAc;EACd,mBAAkB;EAClB,yBAAwB;CACzB;;AAED;EACE,gBAAe;CAChB;;AAED;EACE,YAAW;CACZ;;AASD;;EAEE,sBAAqB;CACtB;;AAMD;EACE,cAAa;EACb,UAAS;CACV;;AAMD;EACE,mBAAkB;CACnB;;AAMD;EACE,iBAAgB;CACjB;;AAUD;;;;;EAKE,wBAAuB;EACvB,gBAAe;EACf,kBAAiB;EACjB,UAAS;CACV;;AAOD;;EAEE,kBAAiB;CAClB;;AAOD;;EAEE,qBAAoB;CACrB;;AAQD;;;;EAIE,2BAA0B;CAC3B;;AAMD;;;;EAIE,mBAAkB;EAClB,WAAU;CACX;;AAMD;;;;EAIE,+BAA8B;CAC/B;;AAMD;EACE,0BAAyB;EACzB,cAAa;EACb,+BAA8B;CAC/B;;AASD;EACE,+BAAsB;UAAtB,uBAAsB;EACtB,eAAc;EACd,eAAc;EACd,gBAAe;EACf,WAAU;EACV,oBAAmB;CACpB;;AAOD;EACE,sBAAqB;EACrB,yBAAwB;CACzB;;AAMD;EACE,eAAc;CACf;;ACtKD;;ED+KE,+BAAsB;UAAtB,uBAAsB;EACtB,WAAU;CACX;;AC3KD;;EDmLE,aAAY;CACb;;AC/KD;EDuLE,8BAA6B;EAC7B,qBAAoB;CACrB;;ACpLD;;ED4LE,yBAAwB;CACzB;;AAOD;EACE,2BAA0B;EAC1B,cAAa;CACd;;AAUD;;EAEE,eAAc;CACf;;AAMD;EACE,mBAAkB;CACnB;;AASD;EACE,sBAAqB;CACtB;;AAMD;EACE,cAAa;CACd;;ACpND;ED8NE,cAAa;CACd;;AEvbD;EACE,+BAAsB;UAAtB,uBAAsB;CACvB;;AAED;;;EAGE,4BAAmB;UAAnB,oBAAmB;CACpB;;AAmBC;EAAgB,oBAAmB;CD6MpC;;ACrMD;EAYE,8BAA6B;EAG7B,yCAA0C;CAC3C;;AAED;EACE,mHC2K4H;ED1K5H,gBC+KmB;ED9KnB,oBCmLyB;EDlLzB,iBCsLoB;EDpLpB,eC0BiC;EDxBjC,uBCYW;CDXZ;;AD0LD;EClLE,yBAAwB;CACzB;;AAWD;EACE,cAAa;EACb,qBAAoB;CACrB;;AAMD;EACE,cAAa;EACb,oBAAmB;CACpB;;AAGD;;EAGE,aAAY;CACb;;AAED;EACE,oBAAmB;EACnB,mBAAkB;EAClB,qBAAoB;CACrB;;AAED;;;EAGE,cAAa;EACb,oBAAmB;CACpB;;AAED;;;;EAIE,iBAAgB;CACjB;;AAED;EACE,kBCgHqB;CD/GtB;;AAED;EACE,qBAAoB;EACpB,eAAc;CACf;;AAED;EACE,iBAAgB;CACjB;;AAOD;EACE,eC/Dc;EDgEd,sBC8B0B;CDxB3B;;AEtJG;EFmJA,eC4B4C;ED3B5C,2BC4B6B;CC7K5B;;AF2JL;EACE,eAAc;EACd,sBAAqB;CAUtB;;AE1KG;EFmKA,eAAc;EACd,sBAAqB;CEjKpB;;AF2JL;EAUI,WAAU;CACX;;AAQH;EAEE,cAAa;EAEb,oBAAmB;EAEnB,eAAc;CACf;;AAOD;EAGE,iBAAgB;CACjB;;AAOD;EAGE,uBAAsB;CAGvB;;ADmID;ECzHE,gBAAe;CAChB;;AAaD;;;;;;;;;EASE,+BAA0B;MAA1B,2BAA0B;CAC3B;;AAOD;EAEE,0BAAyB;EAEzB,8BCoEyC;CDnE1C;;AAED;EACE,qBC6DoC;ED5DpC,wBC4DoC;ED3DpC,eC3KiC;ED4KjC,iBAAgB;EAChB,qBAAoB;CACrB;;AAED;EAEE,iBAAgB;CACjB;;AAOD;EAEE,sBAAqB;EACrB,qBAAoB;CACrB;;AAMD;EACE,oBAAmB;EACnB,2CAA0C;CAC3C;;AAED;;;;EAME,qBAAoB;CACrB;;AAED;;EAMI,oBC4IwC;CD3IzC;;AAIH;;;;EASE,4BAA2B;CAC5B;;AAED;EAEE,iBAAgB;CACjB;;AAED;EAME,aAAY;EAEZ,WAAU;EACV,UAAS;EACT,UAAS;CACV;;AAED;EAEE,eAAc;EACd,YAAW;EACX,WAAU;EACV,qBAAoB;EACpB,kBAAiB;EACjB,qBAAoB;CACrB;;AAED;EAKE,yBAAwB;CACzB;;AAGD;EACE,sBAAqB;CAItB;;ADkED;EC9DE,yBAAwB;CACzB","file":"bootstrap-reboot.css","sourcesContent":[null,"/*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */\nhtml {\n font-family: sans-serif;\n line-height: 1.15;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\n\nbody {\n margin: 0;\n}\n\narticle,\naside,\nfooter,\nheader,\nnav,\nsection {\n display: block;\n}\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\nfigcaption,\nfigure,\nmain {\n display: block;\n}\n\nfigure {\n margin: 1em 40px;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\npre {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\na {\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n}\n\na:active,\na:hover {\n outline-width: 0;\n}\n\nabbr[title] {\n border-bottom: none;\n text-decoration: underline;\n text-decoration: underline dotted;\n}\n\nb,\nstrong {\n font-weight: inherit;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\ndfn {\n font-style: italic;\n}\n\nmark {\n background-color: #ff0;\n color: #000;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\naudio,\nvideo {\n display: inline-block;\n}\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\nimg {\n border-style: none;\n}\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: sans-serif;\n font-size: 100%;\n line-height: 1.15;\n margin: 0;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\nlegend {\n box-sizing: border-box;\n color: inherit;\n display: table;\n max-width: 100%;\n padding: 0;\n white-space: normal;\n}\n\nprogress {\n display: inline-block;\n vertical-align: baseline;\n}\n\ntextarea {\n overflow: auto;\n}\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n -webkit-appearance: button;\n font: inherit;\n}\n\ndetails,\nmenu {\n display: block;\n}\n\nsummary {\n display: list-item;\n}\n\ncanvas {\n display: inline-block;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none;\n}\n\nhtml {\n box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n@-ms-viewport {\n width: device-width;\n}\n\nhtml {\n -ms-overflow-style: scrollbar;\n -webkit-tap-highlight-color: transparent;\n}\n\nbody {\n font-family: -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-size: 1rem;\n font-weight: normal;\n line-height: 1.5;\n color: #292b2c;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n outline: none !important;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: .5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: bold;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\na {\n color: #0275d8;\n text-decoration: none;\n}\n\na:focus, a:hover {\n color: #014c8c;\n text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n outline: 0;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n}\n\n[role=\"button\"] {\n cursor: pointer;\n}\n\na,\narea,\nbutton,\n[role=\"button\"],\ninput,\nlabel,\nselect,\nsummary,\ntextarea {\n touch-action: manipulation;\n}\n\ntable {\n border-collapse: collapse;\n background-color: transparent;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #636c72;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: left;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: .5rem;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\ntextarea {\n line-height: inherit;\n}\n\ninput[type=\"radio\"]:disabled,\ninput[type=\"checkbox\"]:disabled {\n cursor: not-allowed;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n}\n\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n\noutput {\n display: inline-block;\n}\n\n[hidden] {\n display: none !important;\n}\n\n/*# sourceMappingURL=bootstrap-reboot.css.map */",null,null,null]}
--------------------------------------------------------------------------------
/Lecture09/TodoList/css/bootstrap-reboot.css.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["../../scss/_normalize.scss","bootstrap-reboot.css","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_hover.scss"],"names":[],"mappings":"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","file":"bootstrap-reboot.css","sourcesContent":[null,"/*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */\nhtml {\n font-family: sans-serif;\n line-height: 1.15;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\n\nbody {\n margin: 0;\n}\n\narticle,\naside,\nfooter,\nheader,\nnav,\nsection {\n display: block;\n}\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\nfigcaption,\nfigure,\nmain {\n display: block;\n}\n\nfigure {\n margin: 1em 40px;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\npre {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\na {\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n}\n\na:active,\na:hover {\n outline-width: 0;\n}\n\nabbr[title] {\n border-bottom: none;\n text-decoration: underline;\n text-decoration: underline dotted;\n}\n\nb,\nstrong {\n font-weight: inherit;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\ndfn {\n font-style: italic;\n}\n\nmark {\n background-color: #ff0;\n color: #000;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\naudio,\nvideo {\n display: inline-block;\n}\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\nimg {\n border-style: none;\n}\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: sans-serif;\n font-size: 100%;\n line-height: 1.15;\n margin: 0;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\nlegend {\n box-sizing: border-box;\n color: inherit;\n display: table;\n max-width: 100%;\n padding: 0;\n white-space: normal;\n}\n\nprogress {\n display: inline-block;\n vertical-align: baseline;\n}\n\ntextarea {\n overflow: auto;\n}\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n -webkit-appearance: button;\n font: inherit;\n}\n\ndetails,\nmenu {\n display: block;\n}\n\nsummary {\n display: list-item;\n}\n\ncanvas {\n display: inline-block;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none;\n}\n\nhtml {\n box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n@-ms-viewport {\n width: device-width;\n}\n\nhtml {\n -ms-overflow-style: scrollbar;\n -webkit-tap-highlight-color: transparent;\n}\n\nbody {\n font-family: -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-size: 1rem;\n font-weight: normal;\n line-height: 1.5;\n color: #292b2c;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n outline: none !important;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: .5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: bold;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\na {\n color: #0275d8;\n text-decoration: none;\n}\n\na:focus, a:hover {\n color: #014c8c;\n text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n outline: 0;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n}\n\n[role=\"button\"] {\n cursor: pointer;\n}\n\na,\narea,\nbutton,\n[role=\"button\"],\ninput,\nlabel,\nselect,\nsummary,\ntextarea {\n touch-action: manipulation;\n}\n\ntable {\n border-collapse: collapse;\n background-color: transparent;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #636c72;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: left;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: .5rem;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\ntextarea {\n line-height: inherit;\n}\n\ninput[type=\"radio\"]:disabled,\ninput[type=\"checkbox\"]:disabled {\n cursor: not-allowed;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n}\n\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n\noutput {\n display: inline-block;\n}\n\n[hidden] {\n display: none !important;\n}\n\n/*# sourceMappingURL=bootstrap-reboot.css.map */",null,null,null]}
--------------------------------------------------------------------------------
/Lecture15/Middlewares/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "exp-mddlwr",
3 | "version": "1.0.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "accepts": {
8 | "version": "1.3.3",
9 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz",
10 | "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=",
11 | "requires": {
12 | "mime-types": "2.1.15",
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 | "content-disposition": {
22 | "version": "0.5.2",
23 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
24 | "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ="
25 | },
26 | "content-type": {
27 | "version": "1.0.2",
28 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz",
29 | "integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0="
30 | },
31 | "cookie": {
32 | "version": "0.3.1",
33 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
34 | "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
35 | },
36 | "cookie-signature": {
37 | "version": "1.0.6",
38 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
39 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
40 | },
41 | "debug": {
42 | "version": "2.6.7",
43 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz",
44 | "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=",
45 | "requires": {
46 | "ms": "2.0.0"
47 | }
48 | },
49 | "depd": {
50 | "version": "1.1.0",
51 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz",
52 | "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM="
53 | },
54 | "destroy": {
55 | "version": "1.0.4",
56 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
57 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
58 | },
59 | "ee-first": {
60 | "version": "1.1.1",
61 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
62 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
63 | },
64 | "encodeurl": {
65 | "version": "1.0.1",
66 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz",
67 | "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA="
68 | },
69 | "escape-html": {
70 | "version": "1.0.3",
71 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
72 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
73 | },
74 | "etag": {
75 | "version": "1.8.0",
76 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz",
77 | "integrity": "sha1-b2Ma7zNtbEY2K1F2QETOIWvjwFE="
78 | },
79 | "express": {
80 | "version": "4.15.3",
81 | "resolved": "https://registry.npmjs.org/express/-/express-4.15.3.tgz",
82 | "integrity": "sha1-urZdDwOqgMNYQIly/HAPkWlEtmI=",
83 | "requires": {
84 | "accepts": "1.3.3",
85 | "array-flatten": "1.1.1",
86 | "content-disposition": "0.5.2",
87 | "content-type": "1.0.2",
88 | "cookie": "0.3.1",
89 | "cookie-signature": "1.0.6",
90 | "debug": "2.6.7",
91 | "depd": "1.1.0",
92 | "encodeurl": "1.0.1",
93 | "escape-html": "1.0.3",
94 | "etag": "1.8.0",
95 | "finalhandler": "1.0.3",
96 | "fresh": "0.5.0",
97 | "merge-descriptors": "1.0.1",
98 | "methods": "1.1.2",
99 | "on-finished": "2.3.0",
100 | "parseurl": "1.3.1",
101 | "path-to-regexp": "0.1.7",
102 | "proxy-addr": "1.1.4",
103 | "qs": "6.4.0",
104 | "range-parser": "1.2.0",
105 | "send": "0.15.3",
106 | "serve-static": "1.12.3",
107 | "setprototypeof": "1.0.3",
108 | "statuses": "1.3.1",
109 | "type-is": "1.6.15",
110 | "utils-merge": "1.0.0",
111 | "vary": "1.1.1"
112 | }
113 | },
114 | "finalhandler": {
115 | "version": "1.0.3",
116 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz",
117 | "integrity": "sha1-70fneVDpmXgOhgIqVg4yF+DQzIk=",
118 | "requires": {
119 | "debug": "2.6.7",
120 | "encodeurl": "1.0.1",
121 | "escape-html": "1.0.3",
122 | "on-finished": "2.3.0",
123 | "parseurl": "1.3.1",
124 | "statuses": "1.3.1",
125 | "unpipe": "1.0.0"
126 | }
127 | },
128 | "forwarded": {
129 | "version": "0.1.0",
130 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz",
131 | "integrity": "sha1-Ge+YdMSuHCl7zweP3mOgm2aoQ2M="
132 | },
133 | "fresh": {
134 | "version": "0.5.0",
135 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz",
136 | "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44="
137 | },
138 | "http-errors": {
139 | "version": "1.6.1",
140 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz",
141 | "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc=",
142 | "requires": {
143 | "depd": "1.1.0",
144 | "inherits": "2.0.3",
145 | "setprototypeof": "1.0.3",
146 | "statuses": "1.3.1"
147 | }
148 | },
149 | "inherits": {
150 | "version": "2.0.3",
151 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
152 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
153 | },
154 | "ipaddr.js": {
155 | "version": "1.3.0",
156 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.3.0.tgz",
157 | "integrity": "sha1-HgOlL9rYOou7KyXL9JmLTP/NPew="
158 | },
159 | "media-typer": {
160 | "version": "0.3.0",
161 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
162 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
163 | },
164 | "merge-descriptors": {
165 | "version": "1.0.1",
166 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
167 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
168 | },
169 | "methods": {
170 | "version": "1.1.2",
171 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
172 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
173 | },
174 | "mime": {
175 | "version": "1.3.4",
176 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz",
177 | "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM="
178 | },
179 | "mime-db": {
180 | "version": "1.27.0",
181 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz",
182 | "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE="
183 | },
184 | "mime-types": {
185 | "version": "2.1.15",
186 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz",
187 | "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=",
188 | "requires": {
189 | "mime-db": "1.27.0"
190 | }
191 | },
192 | "ms": {
193 | "version": "2.0.0",
194 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
195 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
196 | },
197 | "negotiator": {
198 | "version": "0.6.1",
199 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
200 | "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
201 | },
202 | "on-finished": {
203 | "version": "2.3.0",
204 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
205 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
206 | "requires": {
207 | "ee-first": "1.1.1"
208 | }
209 | },
210 | "parseurl": {
211 | "version": "1.3.1",
212 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz",
213 | "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY="
214 | },
215 | "path-to-regexp": {
216 | "version": "0.1.7",
217 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
218 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
219 | },
220 | "proxy-addr": {
221 | "version": "1.1.4",
222 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.4.tgz",
223 | "integrity": "sha1-J+VF9pYKRKYn2bREZ+NcG2tM4vM=",
224 | "requires": {
225 | "forwarded": "0.1.0",
226 | "ipaddr.js": "1.3.0"
227 | }
228 | },
229 | "qs": {
230 | "version": "6.4.0",
231 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
232 | "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM="
233 | },
234 | "range-parser": {
235 | "version": "1.2.0",
236 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
237 | "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
238 | },
239 | "send": {
240 | "version": "0.15.3",
241 | "resolved": "https://registry.npmjs.org/send/-/send-0.15.3.tgz",
242 | "integrity": "sha1-UBP5+ZAj31DRvZiSwZ4979HVMwk=",
243 | "requires": {
244 | "debug": "2.6.7",
245 | "depd": "1.1.0",
246 | "destroy": "1.0.4",
247 | "encodeurl": "1.0.1",
248 | "escape-html": "1.0.3",
249 | "etag": "1.8.0",
250 | "fresh": "0.5.0",
251 | "http-errors": "1.6.1",
252 | "mime": "1.3.4",
253 | "ms": "2.0.0",
254 | "on-finished": "2.3.0",
255 | "range-parser": "1.2.0",
256 | "statuses": "1.3.1"
257 | }
258 | },
259 | "serve-static": {
260 | "version": "1.12.3",
261 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.3.tgz",
262 | "integrity": "sha1-n0uhni8wMMVH+K+ZEHg47DjVseI=",
263 | "requires": {
264 | "encodeurl": "1.0.1",
265 | "escape-html": "1.0.3",
266 | "parseurl": "1.3.1",
267 | "send": "0.15.3"
268 | }
269 | },
270 | "setprototypeof": {
271 | "version": "1.0.3",
272 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
273 | "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ="
274 | },
275 | "statuses": {
276 | "version": "1.3.1",
277 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
278 | "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4="
279 | },
280 | "type-is": {
281 | "version": "1.6.15",
282 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz",
283 | "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=",
284 | "requires": {
285 | "media-typer": "0.3.0",
286 | "mime-types": "2.1.15"
287 | }
288 | },
289 | "unpipe": {
290 | "version": "1.0.0",
291 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
292 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
293 | },
294 | "utils-merge": {
295 | "version": "1.0.0",
296 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz",
297 | "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg="
298 | },
299 | "vary": {
300 | "version": "1.1.1",
301 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.1.tgz",
302 | "integrity": "sha1-Z1Neu2lMHVIldFeYRmUyP1h+jTc="
303 | }
304 | }
305 | }
306 |
--------------------------------------------------------------------------------
/Lecture14/ExpressIntro/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "expressintro",
3 | "version": "0.0.1",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "accepts": {
8 | "version": "1.3.3",
9 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz",
10 | "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=",
11 | "requires": {
12 | "mime-types": "2.1.15",
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 | "content-disposition": {
22 | "version": "0.5.2",
23 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
24 | "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ="
25 | },
26 | "content-type": {
27 | "version": "1.0.2",
28 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz",
29 | "integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0="
30 | },
31 | "cookie": {
32 | "version": "0.3.1",
33 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
34 | "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
35 | },
36 | "cookie-signature": {
37 | "version": "1.0.6",
38 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
39 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
40 | },
41 | "debug": {
42 | "version": "2.6.7",
43 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz",
44 | "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=",
45 | "requires": {
46 | "ms": "2.0.0"
47 | }
48 | },
49 | "depd": {
50 | "version": "1.1.0",
51 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz",
52 | "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM="
53 | },
54 | "destroy": {
55 | "version": "1.0.4",
56 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
57 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
58 | },
59 | "ee-first": {
60 | "version": "1.1.1",
61 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
62 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
63 | },
64 | "encodeurl": {
65 | "version": "1.0.1",
66 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz",
67 | "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA="
68 | },
69 | "escape-html": {
70 | "version": "1.0.3",
71 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
72 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
73 | },
74 | "etag": {
75 | "version": "1.8.0",
76 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz",
77 | "integrity": "sha1-b2Ma7zNtbEY2K1F2QETOIWvjwFE="
78 | },
79 | "express": {
80 | "version": "4.15.3",
81 | "resolved": "https://registry.npmjs.org/express/-/express-4.15.3.tgz",
82 | "integrity": "sha1-urZdDwOqgMNYQIly/HAPkWlEtmI=",
83 | "requires": {
84 | "accepts": "1.3.3",
85 | "array-flatten": "1.1.1",
86 | "content-disposition": "0.5.2",
87 | "content-type": "1.0.2",
88 | "cookie": "0.3.1",
89 | "cookie-signature": "1.0.6",
90 | "debug": "2.6.7",
91 | "depd": "1.1.0",
92 | "encodeurl": "1.0.1",
93 | "escape-html": "1.0.3",
94 | "etag": "1.8.0",
95 | "finalhandler": "1.0.3",
96 | "fresh": "0.5.0",
97 | "merge-descriptors": "1.0.1",
98 | "methods": "1.1.2",
99 | "on-finished": "2.3.0",
100 | "parseurl": "1.3.1",
101 | "path-to-regexp": "0.1.7",
102 | "proxy-addr": "1.1.4",
103 | "qs": "6.4.0",
104 | "range-parser": "1.2.0",
105 | "send": "0.15.3",
106 | "serve-static": "1.12.3",
107 | "setprototypeof": "1.0.3",
108 | "statuses": "1.3.1",
109 | "type-is": "1.6.15",
110 | "utils-merge": "1.0.0",
111 | "vary": "1.1.1"
112 | }
113 | },
114 | "finalhandler": {
115 | "version": "1.0.3",
116 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz",
117 | "integrity": "sha1-70fneVDpmXgOhgIqVg4yF+DQzIk=",
118 | "requires": {
119 | "debug": "2.6.7",
120 | "encodeurl": "1.0.1",
121 | "escape-html": "1.0.3",
122 | "on-finished": "2.3.0",
123 | "parseurl": "1.3.1",
124 | "statuses": "1.3.1",
125 | "unpipe": "1.0.0"
126 | }
127 | },
128 | "forwarded": {
129 | "version": "0.1.0",
130 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz",
131 | "integrity": "sha1-Ge+YdMSuHCl7zweP3mOgm2aoQ2M="
132 | },
133 | "fresh": {
134 | "version": "0.5.0",
135 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz",
136 | "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44="
137 | },
138 | "http-errors": {
139 | "version": "1.6.1",
140 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz",
141 | "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc=",
142 | "requires": {
143 | "depd": "1.1.0",
144 | "inherits": "2.0.3",
145 | "setprototypeof": "1.0.3",
146 | "statuses": "1.3.1"
147 | }
148 | },
149 | "inherits": {
150 | "version": "2.0.3",
151 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
152 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
153 | },
154 | "ipaddr.js": {
155 | "version": "1.3.0",
156 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.3.0.tgz",
157 | "integrity": "sha1-HgOlL9rYOou7KyXL9JmLTP/NPew="
158 | },
159 | "media-typer": {
160 | "version": "0.3.0",
161 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
162 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
163 | },
164 | "merge-descriptors": {
165 | "version": "1.0.1",
166 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
167 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
168 | },
169 | "methods": {
170 | "version": "1.1.2",
171 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
172 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
173 | },
174 | "mime": {
175 | "version": "1.3.4",
176 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz",
177 | "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM="
178 | },
179 | "mime-db": {
180 | "version": "1.27.0",
181 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz",
182 | "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE="
183 | },
184 | "mime-types": {
185 | "version": "2.1.15",
186 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz",
187 | "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=",
188 | "requires": {
189 | "mime-db": "1.27.0"
190 | }
191 | },
192 | "ms": {
193 | "version": "2.0.0",
194 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
195 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
196 | },
197 | "negotiator": {
198 | "version": "0.6.1",
199 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
200 | "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
201 | },
202 | "on-finished": {
203 | "version": "2.3.0",
204 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
205 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
206 | "requires": {
207 | "ee-first": "1.1.1"
208 | }
209 | },
210 | "parseurl": {
211 | "version": "1.3.1",
212 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz",
213 | "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY="
214 | },
215 | "path-to-regexp": {
216 | "version": "0.1.7",
217 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
218 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
219 | },
220 | "proxy-addr": {
221 | "version": "1.1.4",
222 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.4.tgz",
223 | "integrity": "sha1-J+VF9pYKRKYn2bREZ+NcG2tM4vM=",
224 | "requires": {
225 | "forwarded": "0.1.0",
226 | "ipaddr.js": "1.3.0"
227 | }
228 | },
229 | "qs": {
230 | "version": "6.4.0",
231 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
232 | "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM="
233 | },
234 | "range-parser": {
235 | "version": "1.2.0",
236 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
237 | "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
238 | },
239 | "send": {
240 | "version": "0.15.3",
241 | "resolved": "https://registry.npmjs.org/send/-/send-0.15.3.tgz",
242 | "integrity": "sha1-UBP5+ZAj31DRvZiSwZ4979HVMwk=",
243 | "requires": {
244 | "debug": "2.6.7",
245 | "depd": "1.1.0",
246 | "destroy": "1.0.4",
247 | "encodeurl": "1.0.1",
248 | "escape-html": "1.0.3",
249 | "etag": "1.8.0",
250 | "fresh": "0.5.0",
251 | "http-errors": "1.6.1",
252 | "mime": "1.3.4",
253 | "ms": "2.0.0",
254 | "on-finished": "2.3.0",
255 | "range-parser": "1.2.0",
256 | "statuses": "1.3.1"
257 | }
258 | },
259 | "serve-static": {
260 | "version": "1.12.3",
261 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.3.tgz",
262 | "integrity": "sha1-n0uhni8wMMVH+K+ZEHg47DjVseI=",
263 | "requires": {
264 | "encodeurl": "1.0.1",
265 | "escape-html": "1.0.3",
266 | "parseurl": "1.3.1",
267 | "send": "0.15.3"
268 | }
269 | },
270 | "setprototypeof": {
271 | "version": "1.0.3",
272 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
273 | "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ="
274 | },
275 | "statuses": {
276 | "version": "1.3.1",
277 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
278 | "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4="
279 | },
280 | "type-is": {
281 | "version": "1.6.15",
282 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz",
283 | "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=",
284 | "requires": {
285 | "media-typer": "0.3.0",
286 | "mime-types": "2.1.15"
287 | }
288 | },
289 | "unpipe": {
290 | "version": "1.0.0",
291 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
292 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
293 | },
294 | "utils-merge": {
295 | "version": "1.0.0",
296 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz",
297 | "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg="
298 | },
299 | "vary": {
300 | "version": "1.1.1",
301 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.1.tgz",
302 | "integrity": "sha1-Z1Neu2lMHVIldFeYRmUyP1h+jTc="
303 | }
304 | }
305 | }
306 |
--------------------------------------------------------------------------------