├── .github └── ISSUE_TEMPLATE │ └── question.md ├── .gitignore ├── README.md ├── session-1-intro-to-frontend ├── README.md ├── demo │ ├── index.html │ ├── script.js │ └── style.css └── images │ ├── animation.png │ ├── borderradius.png │ ├── class.png │ ├── copyimageaddress.png │ ├── dommanipulation.png │ ├── fonts.png │ ├── googlefonts1.png │ ├── googlefonts2.png │ ├── helloworld.png │ ├── hiidlike.png │ ├── id.png │ ├── inspect.png │ ├── ipaddress.png │ ├── javascript.png │ ├── network.png │ ├── networkagain.png │ ├── networkfiles.png │ ├── secretmessage.png │ └── yanoprobs.png ├── session-2-intro-to-backend ├── README.md ├── demo │ ├── inConsole.js │ ├── index.html │ ├── index.js │ ├── node_modules │ │ ├── .bin │ │ │ └── mime │ │ ├── accepts │ │ │ ├── HISTORY.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── array-flatten │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── array-flatten.js │ │ │ └── package.json │ │ ├── body-parser │ │ │ ├── HISTORY.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.js │ │ │ ├── lib │ │ │ │ ├── read.js │ │ │ │ └── types │ │ │ │ │ ├── json.js │ │ │ │ │ ├── raw.js │ │ │ │ │ ├── text.js │ │ │ │ │ └── urlencoded.js │ │ │ └── package.json │ │ ├── bytes │ │ │ ├── History.md │ │ │ ├── LICENSE │ │ │ ├── Readme.md │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── content-disposition │ │ │ ├── HISTORY.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── content-type │ │ │ ├── HISTORY.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── cookie-signature │ │ │ ├── .npmignore │ │ │ ├── History.md │ │ │ ├── Readme.md │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── cookie │ │ │ ├── HISTORY.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── debug │ │ │ ├── .coveralls.yml │ │ │ ├── .eslintrc │ │ │ ├── .npmignore │ │ │ ├── .travis.yml │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── Makefile │ │ │ ├── README.md │ │ │ ├── component.json │ │ │ ├── karma.conf.js │ │ │ ├── node.js │ │ │ ├── package.json │ │ │ └── src │ │ │ │ ├── browser.js │ │ │ │ ├── debug.js │ │ │ │ ├── index.js │ │ │ │ ├── inspector-log.js │ │ │ │ └── node.js │ │ ├── depd │ │ │ ├── History.md │ │ │ ├── LICENSE │ │ │ ├── Readme.md │ │ │ ├── index.js │ │ │ ├── lib │ │ │ │ ├── browser │ │ │ │ │ └── index.js │ │ │ │ └── compat │ │ │ │ │ ├── callsite-tostring.js │ │ │ │ │ ├── event-listener-count.js │ │ │ │ │ └── index.js │ │ │ └── package.json │ │ ├── destroy │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── ee-first │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── encodeurl │ │ │ ├── HISTORY.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── escape-html │ │ │ ├── LICENSE │ │ │ ├── Readme.md │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── etag │ │ │ ├── HISTORY.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── express │ │ │ ├── History.md │ │ │ ├── LICENSE │ │ │ ├── Readme.md │ │ │ ├── index.js │ │ │ ├── lib │ │ │ │ ├── application.js │ │ │ │ ├── express.js │ │ │ │ ├── middleware │ │ │ │ │ ├── init.js │ │ │ │ │ └── query.js │ │ │ │ ├── request.js │ │ │ │ ├── response.js │ │ │ │ ├── router │ │ │ │ │ ├── index.js │ │ │ │ │ ├── layer.js │ │ │ │ │ └── route.js │ │ │ │ ├── utils.js │ │ │ │ └── view.js │ │ │ └── package.json │ │ ├── finalhandler │ │ │ ├── HISTORY.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── forwarded │ │ │ ├── HISTORY.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── fresh │ │ │ ├── HISTORY.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── http-errors │ │ │ ├── HISTORY.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── iconv-lite │ │ │ ├── Changelog.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── encodings │ │ │ │ ├── dbcs-codec.js │ │ │ │ ├── dbcs-data.js │ │ │ │ ├── index.js │ │ │ │ ├── internal.js │ │ │ │ ├── sbcs-codec.js │ │ │ │ ├── sbcs-data-generated.js │ │ │ │ ├── sbcs-data.js │ │ │ │ ├── tables │ │ │ │ │ ├── big5-added.json │ │ │ │ │ ├── cp936.json │ │ │ │ │ ├── cp949.json │ │ │ │ │ ├── cp950.json │ │ │ │ │ ├── eucjp.json │ │ │ │ │ ├── gb18030-ranges.json │ │ │ │ │ ├── gbk-added.json │ │ │ │ │ └── shiftjis.json │ │ │ │ ├── utf16.js │ │ │ │ └── utf7.js │ │ │ ├── lib │ │ │ │ ├── bom-handling.js │ │ │ │ ├── extend-node.js │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ └── streams.js │ │ │ └── package.json │ │ ├── inherits │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── inherits.js │ │ │ ├── inherits_browser.js │ │ │ └── package.json │ │ ├── ipaddr.js │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── ipaddr.min.js │ │ │ ├── lib │ │ │ │ ├── ipaddr.js │ │ │ │ └── ipaddr.js.d.ts │ │ │ └── package.json │ │ ├── media-typer │ │ │ ├── HISTORY.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── merge-descriptors │ │ │ ├── HISTORY.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── methods │ │ │ ├── HISTORY.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── mime-db │ │ │ ├── HISTORY.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── db.json │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── mime-types │ │ │ ├── HISTORY.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── mime │ │ │ ├── .npmignore │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── cli.js │ │ │ ├── mime.js │ │ │ ├── package.json │ │ │ ├── src │ │ │ │ ├── build.js │ │ │ │ └── test.js │ │ │ └── types.json │ │ ├── ms │ │ │ ├── index.js │ │ │ ├── license.md │ │ │ ├── package.json │ │ │ └── readme.md │ │ ├── negotiator │ │ │ ├── HISTORY.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.js │ │ │ ├── lib │ │ │ │ ├── charset.js │ │ │ │ ├── encoding.js │ │ │ │ ├── language.js │ │ │ │ └── mediaType.js │ │ │ └── package.json │ │ ├── on-finished │ │ │ ├── HISTORY.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── parseurl │ │ │ ├── HISTORY.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── path-to-regexp │ │ │ ├── History.md │ │ │ ├── LICENSE │ │ │ ├── Readme.md │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── proxy-addr │ │ │ ├── HISTORY.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── qs │ │ │ ├── .editorconfig │ │ │ ├── .eslintignore │ │ │ ├── .eslintrc │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── dist │ │ │ │ └── qs.js │ │ │ ├── lib │ │ │ │ ├── formats.js │ │ │ │ ├── index.js │ │ │ │ ├── parse.js │ │ │ │ ├── stringify.js │ │ │ │ └── utils.js │ │ │ ├── package.json │ │ │ └── test │ │ │ │ ├── .eslintrc │ │ │ │ ├── index.js │ │ │ │ ├── parse.js │ │ │ │ ├── stringify.js │ │ │ │ └── utils.js │ │ ├── range-parser │ │ │ ├── HISTORY.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── raw-body │ │ │ ├── HISTORY.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── safe-buffer │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── safer-buffer │ │ │ ├── LICENSE │ │ │ ├── Porting-Buffer.md │ │ │ ├── Readme.md │ │ │ ├── dangerous.js │ │ │ ├── package.json │ │ │ ├── safer.js │ │ │ └── tests.js │ │ ├── send │ │ │ ├── HISTORY.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.js │ │ │ ├── node_modules │ │ │ │ └── ms │ │ │ │ │ ├── index.js │ │ │ │ │ ├── license.md │ │ │ │ │ ├── package.json │ │ │ │ │ └── readme.md │ │ │ └── package.json │ │ ├── serve-static │ │ │ ├── HISTORY.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── setprototypeof │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── package.json │ │ │ └── test │ │ │ │ └── index.js │ │ ├── statuses │ │ │ ├── HISTORY.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── codes.json │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── toidentifier │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── type-is │ │ │ ├── HISTORY.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── unpipe │ │ │ ├── HISTORY.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── utils-merge │ │ │ ├── .npmignore │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.js │ │ │ └── package.json │ │ └── vary │ │ │ ├── HISTORY.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.js │ │ │ └── package.json │ ├── package-lock.json │ ├── package.json │ └── sum.js └── images │ ├── const-assignment.png │ ├── folder-navigation.png │ └── values.png ├── session-3-backend-api ├── README.md ├── demo │ └── index.js └── images │ ├── 400postman.png │ ├── error404.png │ ├── memepage.jpg │ ├── post.png │ ├── postmanResTab.png │ └── postmeme.jpg ├── session-3-frontend-javascript-and-the-dom ├── README.md ├── demo │ ├── inConsole.js │ ├── index.html │ ├── script.js │ └── style.css └── images │ ├── breadgallery.png │ ├── documentget.png │ ├── dom.png │ ├── helpfulfunctions.png │ └── html.png ├── session-4-backend-express └── README.md ├── session-4-css-layout ├── README.md ├── images │ ├── absolute.png │ ├── displayblock.png │ ├── done.png │ ├── hi.png │ ├── inlineblock.png │ └── relative.png ├── index.html ├── project │ ├── h.html │ └── style.css └── style.css ├── session-5-backend-async ├── README.md ├── assets │ ├── async.png │ ├── linkCooking.gif │ ├── sidebyside.png │ └── sync.png └── example-files │ ├── 1-slowPasta.js │ ├── 2-setTimeoutPasta.js │ ├── 3-promisePasta.js │ ├── 4-parallelPasta.js │ ├── 5-lotsOfPots.js │ ├── 6-resolveValue.js │ ├── 7-jokes.js │ ├── 8-lotsOfJokes.js │ └── index.js ├── session-5-frontend-intro-to-react ├── README.md ├── demo │ └── index.html └── images │ ├── fbpost.png │ └── reactdom-render.png ├── session-6-backend-database ├── README.md └── images │ ├── demo-db-organization.png │ ├── firebase-console.png │ ├── firebase-create-db.gif │ ├── firebase-init.png │ ├── firebase-organization.png │ ├── firebase-service-account.gif │ ├── goldfish-server.png │ └── server-2-database.png ├── session-6-frontend-more-on-react ├── README.md ├── index.html └── style.css └── session-7-fullstack-bringing-it-together ├── assets ├── basic_html_page.png ├── front_vs_back.png ├── html_page_styled.png └── react_page.png ├── example ├── 1_static_page │ └── static_page.html ├── 2_static_page_with_styling │ ├── static_page.html │ └── style.css ├── 3_static_page_with_backend │ ├── index.js │ ├── package-lock.json │ ├── package.json │ ├── static_page.html │ └── style.css ├── 4_react_component │ ├── index.js │ ├── package-lock.json │ ├── package.json │ ├── static_page.html │ └── style.css ├── 5_serve_data │ ├── index.js │ ├── package-lock.json │ ├── package.json │ ├── static_page.html │ └── style.css └── 6_fetch_data │ ├── index.js │ ├── package-lock.json │ ├── package.json │ ├── static_page.html │ └── style.css └── readme.md /.github/ISSUE_TEMPLATE/question.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Question 3 | about: Ask a question – for yourself and your classmates 4 | title: '' 5 | labels: help, unresolved 6 | assignees: '' 7 | 8 | --- 9 | 10 | **What you are trying to accomplish** 11 | 12 | 13 | **What you've tried** 14 | 15 | 16 | **Your code** 17 | ``` 18 | If applicable, copy/paste your code here between the triple backticks. 19 | Also copy-paste any applicable command-line interactions. 20 | ``` 21 | 22 | **Screenshots** 23 | If applicable, add screenshots to help explain your problem. 24 | 25 | 26 | **Which operating system you are using** (macOS, Windows, Debian, Ubuntu, etc.) 27 | 28 | 29 | **Additional context** 30 | Add any other context about your question here. 31 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules -------------------------------------------------------------------------------- /session-1-intro-to-frontend/demo/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Landing page 5 | 6 | 7 | 8 | 9 |

Hello World

10 |

Noot

11 |

Noot noot

12 |

Noot noot noot

13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /session-1-intro-to-frontend/demo/script.js: -------------------------------------------------------------------------------- 1 | document.getElementById('last').onclick = () => { 2 | document.getElementById('last').innerHTML = 'Secret message'; 3 | }; 4 | -------------------------------------------------------------------------------- /session-1-intro-to-frontend/demo/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | color: red; 3 | } 4 | 5 | h1 { 6 | font-size: 36px; 7 | font-family: 'Comic Sans MS'; 8 | } 9 | 10 | img { 11 | border-radius: 50% 20% / 10% 40%; 12 | } 13 | 14 | .noot { 15 | color: green; 16 | font-family: 'Beth Ellen', cursive; 17 | } 18 | 19 | #last { 20 | color: purple; 21 | animation: fire 4s ease infinite; 22 | } 23 | 24 | @keyframes fire { 25 | 0% {color: red; transform: translate(100px, 0px);} 26 | 50% {color: yellow; transform: translate(0px, 0px);} 27 | 100% {color: red; transform: translate(100px, 0px);} 28 | } 29 | 30 | -------------------------------------------------------------------------------- /session-1-intro-to-frontend/images/animation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-1-intro-to-frontend/images/animation.png -------------------------------------------------------------------------------- /session-1-intro-to-frontend/images/borderradius.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-1-intro-to-frontend/images/borderradius.png -------------------------------------------------------------------------------- /session-1-intro-to-frontend/images/class.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-1-intro-to-frontend/images/class.png -------------------------------------------------------------------------------- /session-1-intro-to-frontend/images/copyimageaddress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-1-intro-to-frontend/images/copyimageaddress.png -------------------------------------------------------------------------------- /session-1-intro-to-frontend/images/dommanipulation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-1-intro-to-frontend/images/dommanipulation.png -------------------------------------------------------------------------------- /session-1-intro-to-frontend/images/fonts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-1-intro-to-frontend/images/fonts.png -------------------------------------------------------------------------------- /session-1-intro-to-frontend/images/googlefonts1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-1-intro-to-frontend/images/googlefonts1.png -------------------------------------------------------------------------------- /session-1-intro-to-frontend/images/googlefonts2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-1-intro-to-frontend/images/googlefonts2.png -------------------------------------------------------------------------------- /session-1-intro-to-frontend/images/helloworld.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-1-intro-to-frontend/images/helloworld.png -------------------------------------------------------------------------------- /session-1-intro-to-frontend/images/hiidlike.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-1-intro-to-frontend/images/hiidlike.png -------------------------------------------------------------------------------- /session-1-intro-to-frontend/images/id.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-1-intro-to-frontend/images/id.png -------------------------------------------------------------------------------- /session-1-intro-to-frontend/images/inspect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-1-intro-to-frontend/images/inspect.png -------------------------------------------------------------------------------- /session-1-intro-to-frontend/images/ipaddress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-1-intro-to-frontend/images/ipaddress.png -------------------------------------------------------------------------------- /session-1-intro-to-frontend/images/javascript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-1-intro-to-frontend/images/javascript.png -------------------------------------------------------------------------------- /session-1-intro-to-frontend/images/network.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-1-intro-to-frontend/images/network.png -------------------------------------------------------------------------------- /session-1-intro-to-frontend/images/networkagain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-1-intro-to-frontend/images/networkagain.png -------------------------------------------------------------------------------- /session-1-intro-to-frontend/images/networkfiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-1-intro-to-frontend/images/networkfiles.png -------------------------------------------------------------------------------- /session-1-intro-to-frontend/images/secretmessage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-1-intro-to-frontend/images/secretmessage.png -------------------------------------------------------------------------------- /session-1-intro-to-frontend/images/yanoprobs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-1-intro-to-frontend/images/yanoprobs.png -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/inConsole.js: -------------------------------------------------------------------------------- 1 | // Variables 2 | 3 | let age; 4 | age = 9; 5 | console.log(age); 6 | age = 10; 7 | console.log(age); 8 | 9 | let x = 5; 10 | console.log(x + 2); 11 | 12 | const thisMustBeOne = 1; 13 | const pi = 3.1415926535897932; 14 | 15 | thisMustBeOne = 2; // error 16 | pi = pi * 2; // error 17 | 18 | let name = 'Kristie'; 19 | console.log(name); 20 | 21 | name = 'Galena'; 22 | console.log('Hello ' + name); 23 | 24 | // to illustrate the difference between numbers and strings 25 | let num = 1; 26 | let str = '1'; 27 | console.log(num + num); 28 | console.log(str + str); 29 | 30 | // Functions 31 | 32 | const plus = (x, y) => { 33 | return x + y; 34 | }; 35 | 36 | const s = plus(5, 2); 37 | console.log(s); 38 | 39 | const saySomething = () => { 40 | return "I'm giving up on you"; 41 | }; 42 | saySomething(); 43 | 44 | const printHello = () => { 45 | console.log('Heeeeeeeeeeello'); 46 | // no return statement 47 | }; 48 | printHello(); 49 | 50 | const printNoot = () => { 51 | console.log('noot'); 52 | console.log('noot noot'); 53 | console.log('noot noot noot'); 54 | }; 55 | printNoot(); 56 | 57 | const quickMaths = () => { 58 | return plus(2, 2) - 1; 59 | }; 60 | console.log(quickMaths()); 61 | 62 | // Objects 63 | 64 | let person = { 65 | age: 18, 66 | school: 'UCLA' 67 | }; 68 | 69 | person.birthday = '9 Nov 1800'; 70 | 71 | person['name'] = 'M&M'; 72 | 73 | person.age = 217; 74 | 75 | person.rap = () => { 76 | console.log("I'm beginning to feel like a web god, web god."); 77 | }; 78 | 79 | person.rap(); -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Hello World 5 | 6 | 7 |

Hello, this is my first server.

8 | 9 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/index.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const app = express(); 3 | 4 | app.get('/mypage', (request, response) => { 5 | response.sendFile(__dirname + '/index.html'); 6 | }) 7 | 8 | app.get('/random', (request, response) => { 9 | response.send('Your random number is: ' + Math.random() + ''); 10 | response.end(); 11 | }); 12 | 13 | app.listen(3000); -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/.bin/mime: -------------------------------------------------------------------------------- 1 | ../mime/cli.js -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/accepts/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2014 Jonathan Ong 4 | Copyright (c) 2015 Douglas Christopher Wilson 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining 7 | a copy of this software and associated documentation files (the 8 | 'Software'), to deal in the Software without restriction, including 9 | without limitation the rights to use, copy, modify, merge, publish, 10 | distribute, sublicense, and/or sell copies of the Software, and to 11 | permit persons to whom the Software is furnished to do so, subject to 12 | the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be 15 | included in all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 18 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 20 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 21 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 22 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 23 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/array-flatten/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/array-flatten/README.md: -------------------------------------------------------------------------------- 1 | # Array Flatten 2 | 3 | [![NPM version][npm-image]][npm-url] 4 | [![NPM downloads][downloads-image]][downloads-url] 5 | [![Build status][travis-image]][travis-url] 6 | [![Test coverage][coveralls-image]][coveralls-url] 7 | 8 | > Flatten an array of nested arrays into a single flat array. Accepts an optional depth. 9 | 10 | ## Installation 11 | 12 | ``` 13 | npm install array-flatten --save 14 | ``` 15 | 16 | ## Usage 17 | 18 | ```javascript 19 | var flatten = require('array-flatten') 20 | 21 | flatten([1, [2, [3, [4, [5], 6], 7], 8], 9]) 22 | //=> [1, 2, 3, 4, 5, 6, 7, 8, 9] 23 | 24 | flatten([1, [2, [3, [4, [5], 6], 7], 8], 9], 2) 25 | //=> [1, 2, 3, [4, [5], 6], 7, 8, 9] 26 | 27 | (function () { 28 | flatten(arguments) //=> [1, 2, 3] 29 | })(1, [2, 3]) 30 | ``` 31 | 32 | ## License 33 | 34 | MIT 35 | 36 | [npm-image]: https://img.shields.io/npm/v/array-flatten.svg?style=flat 37 | [npm-url]: https://npmjs.org/package/array-flatten 38 | [downloads-image]: https://img.shields.io/npm/dm/array-flatten.svg?style=flat 39 | [downloads-url]: https://npmjs.org/package/array-flatten 40 | [travis-image]: https://img.shields.io/travis/blakeembrey/array-flatten.svg?style=flat 41 | [travis-url]: https://travis-ci.org/blakeembrey/array-flatten 42 | [coveralls-image]: https://img.shields.io/coveralls/blakeembrey/array-flatten.svg?style=flat 43 | [coveralls-url]: https://coveralls.io/r/blakeembrey/array-flatten?branch=master 44 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/array-flatten/array-flatten.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | /** 4 | * Expose `arrayFlatten`. 5 | */ 6 | module.exports = arrayFlatten 7 | 8 | /** 9 | * Recursive flatten function with depth. 10 | * 11 | * @param {Array} array 12 | * @param {Array} result 13 | * @param {Number} depth 14 | * @return {Array} 15 | */ 16 | function flattenWithDepth (array, result, depth) { 17 | for (var i = 0; i < array.length; i++) { 18 | var value = array[i] 19 | 20 | if (depth > 0 && Array.isArray(value)) { 21 | flattenWithDepth(value, result, depth - 1) 22 | } else { 23 | result.push(value) 24 | } 25 | } 26 | 27 | return result 28 | } 29 | 30 | /** 31 | * Recursive flatten function. Omitting depth is slightly faster. 32 | * 33 | * @param {Array} array 34 | * @param {Array} result 35 | * @return {Array} 36 | */ 37 | function flattenForever (array, result) { 38 | for (var i = 0; i < array.length; i++) { 39 | var value = array[i] 40 | 41 | if (Array.isArray(value)) { 42 | flattenForever(value, result) 43 | } else { 44 | result.push(value) 45 | } 46 | } 47 | 48 | return result 49 | } 50 | 51 | /** 52 | * Flatten an array, with the ability to define a depth. 53 | * 54 | * @param {Array} array 55 | * @param {Number} depth 56 | * @return {Array} 57 | */ 58 | function arrayFlatten (array, depth) { 59 | if (depth == null) { 60 | return flattenForever(array, []) 61 | } 62 | 63 | return flattenWithDepth(array, [], depth) 64 | } 65 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/array-flatten/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "_from": "array-flatten@1.1.1", 3 | "_id": "array-flatten@1.1.1", 4 | "_inBundle": false, 5 | "_integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", 6 | "_location": "/array-flatten", 7 | "_phantomChildren": {}, 8 | "_requested": { 9 | "type": "version", 10 | "registry": true, 11 | "raw": "array-flatten@1.1.1", 12 | "name": "array-flatten", 13 | "escapedName": "array-flatten", 14 | "rawSpec": "1.1.1", 15 | "saveSpec": null, 16 | "fetchSpec": "1.1.1" 17 | }, 18 | "_requiredBy": [ 19 | "/express" 20 | ], 21 | "_resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 22 | "_shasum": "9a5f699051b1e7073328f2a008968b64ea2955d2", 23 | "_spec": "array-flatten@1.1.1", 24 | "_where": "/Users/timthetic/Desktop/ACM/hackschool-f19/session-2-intro-to-backend/demo/node_modules/express", 25 | "author": { 26 | "name": "Blake Embrey", 27 | "email": "hello@blakeembrey.com", 28 | "url": "http://blakeembrey.me" 29 | }, 30 | "bugs": { 31 | "url": "https://github.com/blakeembrey/array-flatten/issues" 32 | }, 33 | "bundleDependencies": false, 34 | "deprecated": false, 35 | "description": "Flatten an array of nested arrays into a single flat array", 36 | "devDependencies": { 37 | "istanbul": "^0.3.13", 38 | "mocha": "^2.2.4", 39 | "pre-commit": "^1.0.7", 40 | "standard": "^3.7.3" 41 | }, 42 | "files": [ 43 | "array-flatten.js", 44 | "LICENSE" 45 | ], 46 | "homepage": "https://github.com/blakeembrey/array-flatten", 47 | "keywords": [ 48 | "array", 49 | "flatten", 50 | "arguments", 51 | "depth" 52 | ], 53 | "license": "MIT", 54 | "main": "array-flatten.js", 55 | "name": "array-flatten", 56 | "repository": { 57 | "type": "git", 58 | "url": "git://github.com/blakeembrey/array-flatten.git" 59 | }, 60 | "scripts": { 61 | "test": "istanbul cover _mocha -- -R spec" 62 | }, 63 | "version": "1.1.1" 64 | } 65 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/body-parser/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2014 Jonathan Ong 4 | Copyright (c) 2014-2015 Douglas Christopher Wilson 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining 7 | a copy of this software and associated documentation files (the 8 | 'Software'), to deal in the Software without restriction, including 9 | without limitation the rights to use, copy, modify, merge, publish, 10 | distribute, sublicense, and/or sell copies of the Software, and to 11 | permit persons to whom the Software is furnished to do so, subject to 12 | the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be 15 | included in all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 18 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 20 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 21 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 22 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 23 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/bytes/History.md: -------------------------------------------------------------------------------- 1 | 3.1.0 / 2019-01-22 2 | ================== 3 | 4 | * Add petabyte (`pb`) support 5 | 6 | 3.0.0 / 2017-08-31 7 | ================== 8 | 9 | * Change "kB" to "KB" in format output 10 | * Remove support for Node.js 0.6 11 | * Remove support for ComponentJS 12 | 13 | 2.5.0 / 2017-03-24 14 | ================== 15 | 16 | * Add option "unit" 17 | 18 | 2.4.0 / 2016-06-01 19 | ================== 20 | 21 | * Add option "unitSeparator" 22 | 23 | 2.3.0 / 2016-02-15 24 | ================== 25 | 26 | * Drop partial bytes on all parsed units 27 | * Fix non-finite numbers to `.format` to return `null` 28 | * Fix parsing byte string that looks like hex 29 | * perf: hoist regular expressions 30 | 31 | 2.2.0 / 2015-11-13 32 | ================== 33 | 34 | * add option "decimalPlaces" 35 | * add option "fixedDecimals" 36 | 37 | 2.1.0 / 2015-05-21 38 | ================== 39 | 40 | * add `.format` export 41 | * add `.parse` export 42 | 43 | 2.0.2 / 2015-05-20 44 | ================== 45 | 46 | * remove map recreation 47 | * remove unnecessary object construction 48 | 49 | 2.0.1 / 2015-05-07 50 | ================== 51 | 52 | * fix browserify require 53 | * remove node.extend dependency 54 | 55 | 2.0.0 / 2015-04-12 56 | ================== 57 | 58 | * add option "case" 59 | * add option "thousandsSeparator" 60 | * return "null" on invalid parse input 61 | * support proper round-trip: bytes(bytes(num)) === num 62 | * units no longer case sensitive when parsing 63 | 64 | 1.0.0 / 2014-05-05 65 | ================== 66 | 67 | * add negative support. fixes #6 68 | 69 | 0.3.0 / 2014-03-19 70 | ================== 71 | 72 | * added terabyte support 73 | 74 | 0.2.1 / 2013-04-01 75 | ================== 76 | 77 | * add .component 78 | 79 | 0.2.0 / 2012-10-28 80 | ================== 81 | 82 | * bytes(200).should.eql('200b') 83 | 84 | 0.1.0 / 2012-07-04 85 | ================== 86 | 87 | * add bytes to string conversion [yields] 88 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/bytes/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2012-2014 TJ Holowaychuk 4 | Copyright (c) 2015 Jed Watson 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining 7 | a copy of this software and associated documentation files (the 8 | 'Software'), to deal in the Software without restriction, including 9 | without limitation the rights to use, copy, modify, merge, publish, 10 | distribute, sublicense, and/or sell copies of the Software, and to 11 | permit persons to whom the Software is furnished to do so, subject to 12 | the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be 15 | included in all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 18 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 20 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 21 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 22 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 23 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/content-disposition/HISTORY.md: -------------------------------------------------------------------------------- 1 | 0.5.3 / 2018-12-17 2 | ================== 3 | 4 | * Use `safe-buffer` for improved Buffer API 5 | 6 | 0.5.2 / 2016-12-08 7 | ================== 8 | 9 | * Fix `parse` to accept any linear whitespace character 10 | 11 | 0.5.1 / 2016-01-17 12 | ================== 13 | 14 | * perf: enable strict mode 15 | 16 | 0.5.0 / 2014-10-11 17 | ================== 18 | 19 | * Add `parse` function 20 | 21 | 0.4.0 / 2014-09-21 22 | ================== 23 | 24 | * Expand non-Unicode `filename` to the full ISO-8859-1 charset 25 | 26 | 0.3.0 / 2014-09-20 27 | ================== 28 | 29 | * Add `fallback` option 30 | * Add `type` option 31 | 32 | 0.2.0 / 2014-09-19 33 | ================== 34 | 35 | * Reduce ambiguity of file names with hex escape in buggy browsers 36 | 37 | 0.1.2 / 2014-09-19 38 | ================== 39 | 40 | * Fix periodic invalid Unicode filename header 41 | 42 | 0.1.1 / 2014-09-19 43 | ================== 44 | 45 | * Fix invalid characters appearing in `filename*` parameter 46 | 47 | 0.1.0 / 2014-09-18 48 | ================== 49 | 50 | * Make the `filename` argument optional 51 | 52 | 0.0.0 / 2014-09-18 53 | ================== 54 | 55 | * Initial release 56 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/content-disposition/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2014-2017 Douglas Christopher Wilson 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | 'Software'), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/content-type/HISTORY.md: -------------------------------------------------------------------------------- 1 | 1.0.4 / 2017-09-11 2 | ================== 3 | 4 | * perf: skip parameter parsing when no parameters 5 | 6 | 1.0.3 / 2017-09-10 7 | ================== 8 | 9 | * perf: remove argument reassignment 10 | 11 | 1.0.2 / 2016-05-09 12 | ================== 13 | 14 | * perf: enable strict mode 15 | 16 | 1.0.1 / 2015-02-13 17 | ================== 18 | 19 | * Improve missing `Content-Type` header error message 20 | 21 | 1.0.0 / 2015-02-01 22 | ================== 23 | 24 | * Initial implementation, derived from `media-typer@0.3.0` 25 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/content-type/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2015 Douglas Christopher Wilson 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | 'Software'), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/cookie-signature/.npmignore: -------------------------------------------------------------------------------- 1 | support 2 | test 3 | examples 4 | *.sock 5 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/cookie-signature/History.md: -------------------------------------------------------------------------------- 1 | 1.0.6 / 2015-02-03 2 | ================== 3 | 4 | * use `npm test` instead of `make test` to run tests 5 | * clearer assertion messages when checking input 6 | 7 | 8 | 1.0.5 / 2014-09-05 9 | ================== 10 | 11 | * add license to package.json 12 | 13 | 1.0.4 / 2014-06-25 14 | ================== 15 | 16 | * corrected avoidance of timing attacks (thanks @tenbits!) 17 | 18 | 1.0.3 / 2014-01-28 19 | ================== 20 | 21 | * [incorrect] fix for timing attacks 22 | 23 | 1.0.2 / 2014-01-28 24 | ================== 25 | 26 | * fix missing repository warning 27 | * fix typo in test 28 | 29 | 1.0.1 / 2013-04-15 30 | ================== 31 | 32 | * Revert "Changed underlying HMAC algo. to sha512." 33 | * Revert "Fix for timing attacks on MAC verification." 34 | 35 | 0.0.1 / 2010-01-03 36 | ================== 37 | 38 | * Initial release 39 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/cookie-signature/Readme.md: -------------------------------------------------------------------------------- 1 | 2 | # cookie-signature 3 | 4 | Sign and unsign cookies. 5 | 6 | ## Example 7 | 8 | ```js 9 | var cookie = require('cookie-signature'); 10 | 11 | var val = cookie.sign('hello', 'tobiiscool'); 12 | val.should.equal('hello.DGDUkGlIkCzPz+C0B064FNgHdEjox7ch8tOBGslZ5QI'); 13 | 14 | var val = cookie.sign('hello', 'tobiiscool'); 15 | cookie.unsign(val, 'tobiiscool').should.equal('hello'); 16 | cookie.unsign(val, 'luna').should.be.false; 17 | ``` 18 | 19 | ## License 20 | 21 | (The MIT License) 22 | 23 | Copyright (c) 2012 LearnBoost <tj@learnboost.com> 24 | 25 | Permission is hereby granted, free of charge, to any person obtaining 26 | a copy of this software and associated documentation files (the 27 | 'Software'), to deal in the Software without restriction, including 28 | without limitation the rights to use, copy, modify, merge, publish, 29 | distribute, sublicense, and/or sell copies of the Software, and to 30 | permit persons to whom the Software is furnished to do so, subject to 31 | the following conditions: 32 | 33 | The above copyright notice and this permission notice shall be 34 | included in all copies or substantial portions of the Software. 35 | 36 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 37 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 38 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 39 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 40 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 41 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 42 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/cookie-signature/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Module dependencies. 3 | */ 4 | 5 | var crypto = require('crypto'); 6 | 7 | /** 8 | * Sign the given `val` with `secret`. 9 | * 10 | * @param {String} val 11 | * @param {String} secret 12 | * @return {String} 13 | * @api private 14 | */ 15 | 16 | exports.sign = function(val, secret){ 17 | if ('string' != typeof val) throw new TypeError("Cookie value must be provided as a string."); 18 | if ('string' != typeof secret) throw new TypeError("Secret string must be provided."); 19 | return val + '.' + crypto 20 | .createHmac('sha256', secret) 21 | .update(val) 22 | .digest('base64') 23 | .replace(/\=+$/, ''); 24 | }; 25 | 26 | /** 27 | * Unsign and decode the given `val` with `secret`, 28 | * returning `false` if the signature is invalid. 29 | * 30 | * @param {String} val 31 | * @param {String} secret 32 | * @return {String|Boolean} 33 | * @api private 34 | */ 35 | 36 | exports.unsign = function(val, secret){ 37 | if ('string' != typeof val) throw new TypeError("Signed cookie string must be provided."); 38 | if ('string' != typeof secret) throw new TypeError("Secret string must be provided."); 39 | var str = val.slice(0, val.lastIndexOf('.')) 40 | , mac = exports.sign(str, secret); 41 | 42 | return sha1(mac) == sha1(val) ? str : false; 43 | }; 44 | 45 | /** 46 | * Private 47 | */ 48 | 49 | function sha1(str){ 50 | return crypto.createHash('sha1').update(str).digest('hex'); 51 | } 52 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/cookie-signature/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "_from": "cookie-signature@1.0.6", 3 | "_id": "cookie-signature@1.0.6", 4 | "_inBundle": false, 5 | "_integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", 6 | "_location": "/cookie-signature", 7 | "_phantomChildren": {}, 8 | "_requested": { 9 | "type": "version", 10 | "registry": true, 11 | "raw": "cookie-signature@1.0.6", 12 | "name": "cookie-signature", 13 | "escapedName": "cookie-signature", 14 | "rawSpec": "1.0.6", 15 | "saveSpec": null, 16 | "fetchSpec": "1.0.6" 17 | }, 18 | "_requiredBy": [ 19 | "/express" 20 | ], 21 | "_resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 22 | "_shasum": "e303a882b342cc3ee8ca513a79999734dab3ae2c", 23 | "_spec": "cookie-signature@1.0.6", 24 | "_where": "/Users/timthetic/Desktop/ACM/hackschool-f19/session-2-intro-to-backend/demo/node_modules/express", 25 | "author": { 26 | "name": "TJ Holowaychuk", 27 | "email": "tj@learnboost.com" 28 | }, 29 | "bugs": { 30 | "url": "https://github.com/visionmedia/node-cookie-signature/issues" 31 | }, 32 | "bundleDependencies": false, 33 | "dependencies": {}, 34 | "deprecated": false, 35 | "description": "Sign and unsign cookies", 36 | "devDependencies": { 37 | "mocha": "*", 38 | "should": "*" 39 | }, 40 | "homepage": "https://github.com/visionmedia/node-cookie-signature#readme", 41 | "keywords": [ 42 | "cookie", 43 | "sign", 44 | "unsign" 45 | ], 46 | "license": "MIT", 47 | "main": "index", 48 | "name": "cookie-signature", 49 | "repository": { 50 | "type": "git", 51 | "url": "git+https://github.com/visionmedia/node-cookie-signature.git" 52 | }, 53 | "scripts": { 54 | "test": "mocha --require should --reporter spec" 55 | }, 56 | "version": "1.0.6" 57 | } 58 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/cookie/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2012-2014 Roman Shtylman 4 | Copyright (c) 2015 Douglas Christopher Wilson 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining 7 | a copy of this software and associated documentation files (the 8 | 'Software'), to deal in the Software without restriction, including 9 | without limitation the rights to use, copy, modify, merge, publish, 10 | distribute, sublicense, and/or sell copies of the Software, and to 11 | permit persons to whom the Software is furnished to do so, subject to 12 | the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be 15 | included in all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 18 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 20 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 21 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 22 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 23 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24 | 25 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/debug/.coveralls.yml: -------------------------------------------------------------------------------- 1 | repo_token: SIAeZjKYlHK74rbcFvNHMUzjRiMpflxve 2 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/debug/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "node": true 5 | }, 6 | "rules": { 7 | "no-console": 0, 8 | "no-empty": [1, { "allowEmptyCatch": true }] 9 | }, 10 | "extends": "eslint:recommended" 11 | } 12 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/debug/.npmignore: -------------------------------------------------------------------------------- 1 | support 2 | test 3 | examples 4 | example 5 | *.sock 6 | dist 7 | yarn.lock 8 | coverage 9 | bower.json 10 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/debug/.travis.yml: -------------------------------------------------------------------------------- 1 | 2 | language: node_js 3 | node_js: 4 | - "6" 5 | - "5" 6 | - "4" 7 | 8 | install: 9 | - make node_modules 10 | 11 | script: 12 | - make lint 13 | - make test 14 | - make coveralls 15 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/debug/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2014 TJ Holowaychuk 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software 6 | and associated documentation files (the 'Software'), to deal in the Software without restriction, 7 | including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, 8 | and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, 9 | subject to the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be included in all copies or substantial 12 | portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT 15 | LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 16 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 17 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 18 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 19 | 20 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/debug/Makefile: -------------------------------------------------------------------------------- 1 | # get Makefile directory name: http://stackoverflow.com/a/5982798/376773 2 | THIS_MAKEFILE_PATH:=$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) 3 | THIS_DIR:=$(shell cd $(dir $(THIS_MAKEFILE_PATH));pwd) 4 | 5 | # BIN directory 6 | BIN := $(THIS_DIR)/node_modules/.bin 7 | 8 | # Path 9 | PATH := node_modules/.bin:$(PATH) 10 | SHELL := /bin/bash 11 | 12 | # applications 13 | NODE ?= $(shell which node) 14 | YARN ?= $(shell which yarn) 15 | PKG ?= $(if $(YARN),$(YARN),$(NODE) $(shell which npm)) 16 | BROWSERIFY ?= $(NODE) $(BIN)/browserify 17 | 18 | .FORCE: 19 | 20 | install: node_modules 21 | 22 | node_modules: package.json 23 | @NODE_ENV= $(PKG) install 24 | @touch node_modules 25 | 26 | lint: .FORCE 27 | eslint browser.js debug.js index.js node.js 28 | 29 | test-node: .FORCE 30 | istanbul cover node_modules/mocha/bin/_mocha -- test/**.js 31 | 32 | test-browser: .FORCE 33 | mkdir -p dist 34 | 35 | @$(BROWSERIFY) \ 36 | --standalone debug \ 37 | . > dist/debug.js 38 | 39 | karma start --single-run 40 | rimraf dist 41 | 42 | test: .FORCE 43 | concurrently \ 44 | "make test-node" \ 45 | "make test-browser" 46 | 47 | coveralls: 48 | cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js 49 | 50 | .PHONY: all install clean distclean 51 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/debug/component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "debug", 3 | "repo": "visionmedia/debug", 4 | "description": "small debugging utility", 5 | "version": "2.6.9", 6 | "keywords": [ 7 | "debug", 8 | "log", 9 | "debugger" 10 | ], 11 | "main": "src/browser.js", 12 | "scripts": [ 13 | "src/browser.js", 14 | "src/debug.js" 15 | ], 16 | "dependencies": { 17 | "rauchg/ms.js": "0.7.1" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/debug/karma.conf.js: -------------------------------------------------------------------------------- 1 | // Karma configuration 2 | // Generated on Fri Dec 16 2016 13:09:51 GMT+0000 (UTC) 3 | 4 | module.exports = function(config) { 5 | config.set({ 6 | 7 | // base path that will be used to resolve all patterns (eg. files, exclude) 8 | basePath: '', 9 | 10 | 11 | // frameworks to use 12 | // available frameworks: https://npmjs.org/browse/keyword/karma-adapter 13 | frameworks: ['mocha', 'chai', 'sinon'], 14 | 15 | 16 | // list of files / patterns to load in the browser 17 | files: [ 18 | 'dist/debug.js', 19 | 'test/*spec.js' 20 | ], 21 | 22 | 23 | // list of files to exclude 24 | exclude: [ 25 | 'src/node.js' 26 | ], 27 | 28 | 29 | // preprocess matching files before serving them to the browser 30 | // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor 31 | preprocessors: { 32 | }, 33 | 34 | // test results reporter to use 35 | // possible values: 'dots', 'progress' 36 | // available reporters: https://npmjs.org/browse/keyword/karma-reporter 37 | reporters: ['progress'], 38 | 39 | 40 | // web server port 41 | port: 9876, 42 | 43 | 44 | // enable / disable colors in the output (reporters and logs) 45 | colors: true, 46 | 47 | 48 | // level of logging 49 | // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG 50 | logLevel: config.LOG_INFO, 51 | 52 | 53 | // enable / disable watching file and executing tests whenever any file changes 54 | autoWatch: true, 55 | 56 | 57 | // start these browsers 58 | // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher 59 | browsers: ['PhantomJS'], 60 | 61 | 62 | // Continuous Integration mode 63 | // if true, Karma captures browsers, runs the tests and exits 64 | singleRun: false, 65 | 66 | // Concurrency level 67 | // how many browser should be started simultaneous 68 | concurrency: Infinity 69 | }) 70 | } 71 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/debug/node.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./src/node'); 2 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/debug/src/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Detect Electron renderer process, which is node, but we should 3 | * treat as a browser. 4 | */ 5 | 6 | if (typeof process !== 'undefined' && process.type === 'renderer') { 7 | module.exports = require('./browser.js'); 8 | } else { 9 | module.exports = require('./node.js'); 10 | } 11 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/debug/src/inspector-log.js: -------------------------------------------------------------------------------- 1 | module.exports = inspectorLog; 2 | 3 | // black hole 4 | const nullStream = new (require('stream').Writable)(); 5 | nullStream._write = () => {}; 6 | 7 | /** 8 | * Outputs a `console.log()` to the Node.js Inspector console *only*. 9 | */ 10 | function inspectorLog() { 11 | const stdout = console._stdout; 12 | console._stdout = nullStream; 13 | console.log.apply(console, arguments); 14 | console._stdout = stdout; 15 | } 16 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/depd/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2014-2017 Douglas Christopher Wilson 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | 'Software'), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/depd/lib/browser/index.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * depd 3 | * Copyright(c) 2015 Douglas Christopher Wilson 4 | * MIT Licensed 5 | */ 6 | 7 | 'use strict' 8 | 9 | /** 10 | * Module exports. 11 | * @public 12 | */ 13 | 14 | module.exports = depd 15 | 16 | /** 17 | * Create deprecate for namespace in caller. 18 | */ 19 | 20 | function depd (namespace) { 21 | if (!namespace) { 22 | throw new TypeError('argument namespace is required') 23 | } 24 | 25 | function deprecate (message) { 26 | // no-op in browser 27 | } 28 | 29 | deprecate._file = undefined 30 | deprecate._ignored = true 31 | deprecate._namespace = namespace 32 | deprecate._traced = false 33 | deprecate._warned = Object.create(null) 34 | 35 | deprecate.function = wrapfunction 36 | deprecate.property = wrapproperty 37 | 38 | return deprecate 39 | } 40 | 41 | /** 42 | * Return a wrapped function in a deprecation message. 43 | * 44 | * This is a no-op version of the wrapper, which does nothing but call 45 | * validation. 46 | */ 47 | 48 | function wrapfunction (fn, message) { 49 | if (typeof fn !== 'function') { 50 | throw new TypeError('argument fn must be a function') 51 | } 52 | 53 | return fn 54 | } 55 | 56 | /** 57 | * Wrap property in a deprecation message. 58 | * 59 | * This is a no-op version of the wrapper, which does nothing but call 60 | * validation. 61 | */ 62 | 63 | function wrapproperty (obj, prop, message) { 64 | if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) { 65 | throw new TypeError('argument obj must be object') 66 | } 67 | 68 | var descriptor = Object.getOwnPropertyDescriptor(obj, prop) 69 | 70 | if (!descriptor) { 71 | throw new TypeError('must call property on owner object') 72 | } 73 | 74 | if (!descriptor.configurable) { 75 | throw new TypeError('property must be configurable') 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/depd/lib/compat/event-listener-count.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * depd 3 | * Copyright(c) 2015 Douglas Christopher Wilson 4 | * MIT Licensed 5 | */ 6 | 7 | 'use strict' 8 | 9 | /** 10 | * Module exports. 11 | * @public 12 | */ 13 | 14 | module.exports = eventListenerCount 15 | 16 | /** 17 | * Get the count of listeners on an event emitter of a specific type. 18 | */ 19 | 20 | function eventListenerCount (emitter, type) { 21 | return emitter.listeners(type).length 22 | } 23 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/depd/lib/compat/index.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * depd 3 | * Copyright(c) 2014-2015 Douglas Christopher Wilson 4 | * MIT Licensed 5 | */ 6 | 7 | 'use strict' 8 | 9 | /** 10 | * Module dependencies. 11 | * @private 12 | */ 13 | 14 | var EventEmitter = require('events').EventEmitter 15 | 16 | /** 17 | * Module exports. 18 | * @public 19 | */ 20 | 21 | lazyProperty(module.exports, 'callSiteToString', function callSiteToString () { 22 | var limit = Error.stackTraceLimit 23 | var obj = {} 24 | var prep = Error.prepareStackTrace 25 | 26 | function prepareObjectStackTrace (obj, stack) { 27 | return stack 28 | } 29 | 30 | Error.prepareStackTrace = prepareObjectStackTrace 31 | Error.stackTraceLimit = 2 32 | 33 | // capture the stack 34 | Error.captureStackTrace(obj) 35 | 36 | // slice the stack 37 | var stack = obj.stack.slice() 38 | 39 | Error.prepareStackTrace = prep 40 | Error.stackTraceLimit = limit 41 | 42 | return stack[0].toString ? toString : require('./callsite-tostring') 43 | }) 44 | 45 | lazyProperty(module.exports, 'eventListenerCount', function eventListenerCount () { 46 | return EventEmitter.listenerCount || require('./event-listener-count') 47 | }) 48 | 49 | /** 50 | * Define a lazy property. 51 | */ 52 | 53 | function lazyProperty (obj, prop, getter) { 54 | function get () { 55 | var val = getter() 56 | 57 | Object.defineProperty(obj, prop, { 58 | configurable: true, 59 | enumerable: true, 60 | value: val 61 | }) 62 | 63 | return val 64 | } 65 | 66 | Object.defineProperty(obj, prop, { 67 | configurable: true, 68 | enumerable: true, 69 | get: get 70 | }) 71 | } 72 | 73 | /** 74 | * Call toString() on the obj 75 | */ 76 | 77 | function toString (obj) { 78 | return obj.toString() 79 | } 80 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/destroy/LICENSE: -------------------------------------------------------------------------------- 1 | 2 | The MIT License (MIT) 3 | 4 | Copyright (c) 2014 Jonathan Ong me@jongleberry.com 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in 14 | all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/destroy/index.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * destroy 3 | * Copyright(c) 2014 Jonathan Ong 4 | * MIT Licensed 5 | */ 6 | 7 | 'use strict' 8 | 9 | /** 10 | * Module dependencies. 11 | * @private 12 | */ 13 | 14 | var ReadStream = require('fs').ReadStream 15 | var Stream = require('stream') 16 | 17 | /** 18 | * Module exports. 19 | * @public 20 | */ 21 | 22 | module.exports = destroy 23 | 24 | /** 25 | * Destroy a stream. 26 | * 27 | * @param {object} stream 28 | * @public 29 | */ 30 | 31 | function destroy(stream) { 32 | if (stream instanceof ReadStream) { 33 | return destroyReadStream(stream) 34 | } 35 | 36 | if (!(stream instanceof Stream)) { 37 | return stream 38 | } 39 | 40 | if (typeof stream.destroy === 'function') { 41 | stream.destroy() 42 | } 43 | 44 | return stream 45 | } 46 | 47 | /** 48 | * Destroy a ReadStream. 49 | * 50 | * @param {object} stream 51 | * @private 52 | */ 53 | 54 | function destroyReadStream(stream) { 55 | stream.destroy() 56 | 57 | if (typeof stream.close === 'function') { 58 | // node.js core bug work-around 59 | stream.on('open', onOpenClose) 60 | } 61 | 62 | return stream 63 | } 64 | 65 | /** 66 | * On open handler to close stream. 67 | * @private 68 | */ 69 | 70 | function onOpenClose() { 71 | if (typeof this.fd === 'number') { 72 | // actually close down the fd 73 | this.close() 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/ee-first/LICENSE: -------------------------------------------------------------------------------- 1 | 2 | The MIT License (MIT) 3 | 4 | Copyright (c) 2014 Jonathan Ong me@jongleberry.com 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in 14 | all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/encodeurl/HISTORY.md: -------------------------------------------------------------------------------- 1 | 1.0.2 / 2018-01-21 2 | ================== 3 | 4 | * Fix encoding `%` as last character 5 | 6 | 1.0.1 / 2016-06-09 7 | ================== 8 | 9 | * Fix encoding unpaired surrogates at start/end of string 10 | 11 | 1.0.0 / 2016-06-08 12 | ================== 13 | 14 | * Initial release 15 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/encodeurl/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2016 Douglas Christopher Wilson 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | 'Software'), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/encodeurl/index.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * encodeurl 3 | * Copyright(c) 2016 Douglas Christopher Wilson 4 | * MIT Licensed 5 | */ 6 | 7 | 'use strict' 8 | 9 | /** 10 | * Module exports. 11 | * @public 12 | */ 13 | 14 | module.exports = encodeUrl 15 | 16 | /** 17 | * RegExp to match non-URL code points, *after* encoding (i.e. not including "%") 18 | * and including invalid escape sequences. 19 | * @private 20 | */ 21 | 22 | var ENCODE_CHARS_REGEXP = /(?:[^\x21\x25\x26-\x3B\x3D\x3F-\x5B\x5D\x5F\x61-\x7A\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g 23 | 24 | /** 25 | * RegExp to match unmatched surrogate pair. 26 | * @private 27 | */ 28 | 29 | var UNMATCHED_SURROGATE_PAIR_REGEXP = /(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g 30 | 31 | /** 32 | * String to replace unmatched surrogate pair with. 33 | * @private 34 | */ 35 | 36 | var UNMATCHED_SURROGATE_PAIR_REPLACE = '$1\uFFFD$2' 37 | 38 | /** 39 | * Encode a URL to a percent-encoded form, excluding already-encoded sequences. 40 | * 41 | * This function will take an already-encoded URL and encode all the non-URL 42 | * code points. This function will not encode the "%" character unless it is 43 | * not part of a valid sequence (`%20` will be left as-is, but `%foo` will 44 | * be encoded as `%25foo`). 45 | * 46 | * This encode is meant to be "safe" and does not throw errors. It will try as 47 | * hard as it can to properly encode the given URL, including replacing any raw, 48 | * unpaired surrogate pairs with the Unicode replacement character prior to 49 | * encoding. 50 | * 51 | * @param {string} url 52 | * @return {string} 53 | * @public 54 | */ 55 | 56 | function encodeUrl (url) { 57 | return String(url) 58 | .replace(UNMATCHED_SURROGATE_PAIR_REGEXP, UNMATCHED_SURROGATE_PAIR_REPLACE) 59 | .replace(ENCODE_CHARS_REGEXP, encodeURI) 60 | } 61 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/escape-html/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2012-2013 TJ Holowaychuk 4 | Copyright (c) 2015 Andreas Lubbe 5 | Copyright (c) 2015 Tiancheng "Timothy" Gu 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining 8 | a copy of this software and associated documentation files (the 9 | 'Software'), to deal in the Software without restriction, including 10 | without limitation the rights to use, copy, modify, merge, publish, 11 | distribute, sublicense, and/or sell copies of the Software, and to 12 | permit persons to whom the Software is furnished to do so, subject to 13 | the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be 16 | included in all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 19 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 21 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/escape-html/Readme.md: -------------------------------------------------------------------------------- 1 | 2 | # escape-html 3 | 4 | Escape string for use in HTML 5 | 6 | ## Example 7 | 8 | ```js 9 | var escape = require('escape-html'); 10 | var html = escape('foo & bar'); 11 | // -> foo & bar 12 | ``` 13 | 14 | ## Benchmark 15 | 16 | ``` 17 | $ npm run-script bench 18 | 19 | > escape-html@1.0.3 bench nodejs-escape-html 20 | > node benchmark/index.js 21 | 22 | 23 | http_parser@1.0 24 | node@0.10.33 25 | v8@3.14.5.9 26 | ares@1.9.0-DEV 27 | uv@0.10.29 28 | zlib@1.2.3 29 | modules@11 30 | openssl@1.0.1j 31 | 32 | 1 test completed. 33 | 2 tests completed. 34 | 3 tests completed. 35 | 36 | no special characters x 19,435,271 ops/sec ±0.85% (187 runs sampled) 37 | single special character x 6,132,421 ops/sec ±0.67% (194 runs sampled) 38 | many special characters x 3,175,826 ops/sec ±0.65% (193 runs sampled) 39 | ``` 40 | 41 | ## License 42 | 43 | MIT -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/escape-html/index.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * escape-html 3 | * Copyright(c) 2012-2013 TJ Holowaychuk 4 | * Copyright(c) 2015 Andreas Lubbe 5 | * Copyright(c) 2015 Tiancheng "Timothy" Gu 6 | * MIT Licensed 7 | */ 8 | 9 | 'use strict'; 10 | 11 | /** 12 | * Module variables. 13 | * @private 14 | */ 15 | 16 | var matchHtmlRegExp = /["'&<>]/; 17 | 18 | /** 19 | * Module exports. 20 | * @public 21 | */ 22 | 23 | module.exports = escapeHtml; 24 | 25 | /** 26 | * Escape special characters in the given string of html. 27 | * 28 | * @param {string} string The string to escape for inserting into HTML 29 | * @return {string} 30 | * @public 31 | */ 32 | 33 | function escapeHtml(string) { 34 | var str = '' + string; 35 | var match = matchHtmlRegExp.exec(str); 36 | 37 | if (!match) { 38 | return str; 39 | } 40 | 41 | var escape; 42 | var html = ''; 43 | var index = 0; 44 | var lastIndex = 0; 45 | 46 | for (index = match.index; index < str.length; index++) { 47 | switch (str.charCodeAt(index)) { 48 | case 34: // " 49 | escape = '"'; 50 | break; 51 | case 38: // & 52 | escape = '&'; 53 | break; 54 | case 39: // ' 55 | escape = '''; 56 | break; 57 | case 60: // < 58 | escape = '<'; 59 | break; 60 | case 62: // > 61 | escape = '>'; 62 | break; 63 | default: 64 | continue; 65 | } 66 | 67 | if (lastIndex !== index) { 68 | html += str.substring(lastIndex, index); 69 | } 70 | 71 | lastIndex = index + 1; 72 | html += escape; 73 | } 74 | 75 | return lastIndex !== index 76 | ? html + str.substring(lastIndex, index) 77 | : html; 78 | } 79 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/escape-html/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "_from": "escape-html@~1.0.3", 3 | "_id": "escape-html@1.0.3", 4 | "_inBundle": false, 5 | "_integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", 6 | "_location": "/escape-html", 7 | "_phantomChildren": {}, 8 | "_requested": { 9 | "type": "range", 10 | "registry": true, 11 | "raw": "escape-html@~1.0.3", 12 | "name": "escape-html", 13 | "escapedName": "escape-html", 14 | "rawSpec": "~1.0.3", 15 | "saveSpec": null, 16 | "fetchSpec": "~1.0.3" 17 | }, 18 | "_requiredBy": [ 19 | "/express", 20 | "/finalhandler", 21 | "/send", 22 | "/serve-static" 23 | ], 24 | "_resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 25 | "_shasum": "0258eae4d3d0c0974de1c169188ef0051d1d1988", 26 | "_spec": "escape-html@~1.0.3", 27 | "_where": "/Users/timthetic/Desktop/ACM/hackschool-f19/session-2-intro-to-backend/demo/node_modules/express", 28 | "bugs": { 29 | "url": "https://github.com/component/escape-html/issues" 30 | }, 31 | "bundleDependencies": false, 32 | "deprecated": false, 33 | "description": "Escape string for use in HTML", 34 | "devDependencies": { 35 | "beautify-benchmark": "0.2.4", 36 | "benchmark": "1.0.0" 37 | }, 38 | "files": [ 39 | "LICENSE", 40 | "Readme.md", 41 | "index.js" 42 | ], 43 | "homepage": "https://github.com/component/escape-html#readme", 44 | "keywords": [ 45 | "escape", 46 | "html", 47 | "utility" 48 | ], 49 | "license": "MIT", 50 | "name": "escape-html", 51 | "repository": { 52 | "type": "git", 53 | "url": "git+https://github.com/component/escape-html.git" 54 | }, 55 | "scripts": { 56 | "bench": "node benchmark/index.js" 57 | }, 58 | "version": "1.0.3" 59 | } 60 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/etag/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2014-2016 Douglas Christopher Wilson 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | 'Software'), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/express/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2009-2014 TJ Holowaychuk 4 | Copyright (c) 2013-2014 Roman Shtylman 5 | Copyright (c) 2014-2015 Douglas Christopher Wilson 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining 8 | a copy of this software and associated documentation files (the 9 | 'Software'), to deal in the Software without restriction, including 10 | without limitation the rights to use, copy, modify, merge, publish, 11 | distribute, sublicense, and/or sell copies of the Software, and to 12 | permit persons to whom the Software is furnished to do so, subject to 13 | the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be 16 | included in all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 19 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 21 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/express/index.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * express 3 | * Copyright(c) 2009-2013 TJ Holowaychuk 4 | * Copyright(c) 2013 Roman Shtylman 5 | * Copyright(c) 2014-2015 Douglas Christopher Wilson 6 | * MIT Licensed 7 | */ 8 | 9 | 'use strict'; 10 | 11 | module.exports = require('./lib/express'); 12 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/express/lib/middleware/init.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * express 3 | * Copyright(c) 2009-2013 TJ Holowaychuk 4 | * Copyright(c) 2013 Roman Shtylman 5 | * Copyright(c) 2014-2015 Douglas Christopher Wilson 6 | * MIT Licensed 7 | */ 8 | 9 | 'use strict'; 10 | 11 | /** 12 | * Module dependencies. 13 | * @private 14 | */ 15 | 16 | var setPrototypeOf = require('setprototypeof') 17 | 18 | /** 19 | * Initialization middleware, exposing the 20 | * request and response to each other, as well 21 | * as defaulting the X-Powered-By header field. 22 | * 23 | * @param {Function} app 24 | * @return {Function} 25 | * @api private 26 | */ 27 | 28 | exports.init = function(app){ 29 | return function expressInit(req, res, next){ 30 | if (app.enabled('x-powered-by')) res.setHeader('X-Powered-By', 'Express'); 31 | req.res = res; 32 | res.req = req; 33 | req.next = next; 34 | 35 | setPrototypeOf(req, app.request) 36 | setPrototypeOf(res, app.response) 37 | 38 | res.locals = res.locals || Object.create(null); 39 | 40 | next(); 41 | }; 42 | }; 43 | 44 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/express/lib/middleware/query.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * express 3 | * Copyright(c) 2009-2013 TJ Holowaychuk 4 | * Copyright(c) 2013 Roman Shtylman 5 | * Copyright(c) 2014-2015 Douglas Christopher Wilson 6 | * MIT Licensed 7 | */ 8 | 9 | 'use strict'; 10 | 11 | /** 12 | * Module dependencies. 13 | */ 14 | 15 | var merge = require('utils-merge') 16 | var parseUrl = require('parseurl'); 17 | var qs = require('qs'); 18 | 19 | /** 20 | * @param {Object} options 21 | * @return {Function} 22 | * @api public 23 | */ 24 | 25 | module.exports = function query(options) { 26 | var opts = merge({}, options) 27 | var queryparse = qs.parse; 28 | 29 | if (typeof options === 'function') { 30 | queryparse = options; 31 | opts = undefined; 32 | } 33 | 34 | if (opts !== undefined && opts.allowPrototypes === undefined) { 35 | // back-compat for qs module 36 | opts.allowPrototypes = true; 37 | } 38 | 39 | return function query(req, res, next){ 40 | if (!req.query) { 41 | var val = parseUrl(req).query; 42 | req.query = queryparse(val, opts); 43 | } 44 | 45 | next(); 46 | }; 47 | }; 48 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/finalhandler/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2014-2017 Douglas Christopher Wilson 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | 'Software'), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/forwarded/HISTORY.md: -------------------------------------------------------------------------------- 1 | 0.1.2 / 2017-09-14 2 | ================== 3 | 4 | * perf: improve header parsing 5 | * perf: reduce overhead when no `X-Forwarded-For` header 6 | 7 | 0.1.1 / 2017-09-10 8 | ================== 9 | 10 | * Fix trimming leading / trailing OWS 11 | * perf: hoist regular expression 12 | 13 | 0.1.0 / 2014-09-21 14 | ================== 15 | 16 | * Initial release 17 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/forwarded/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2014-2017 Douglas Christopher Wilson 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | 'Software'), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/forwarded/README.md: -------------------------------------------------------------------------------- 1 | # forwarded 2 | 3 | [![NPM Version][npm-image]][npm-url] 4 | [![NPM Downloads][downloads-image]][downloads-url] 5 | [![Node.js Version][node-version-image]][node-version-url] 6 | [![Build Status][travis-image]][travis-url] 7 | [![Test Coverage][coveralls-image]][coveralls-url] 8 | 9 | Parse HTTP X-Forwarded-For header 10 | 11 | ## Installation 12 | 13 | This is a [Node.js](https://nodejs.org/en/) module available through the 14 | [npm registry](https://www.npmjs.com/). Installation is done using the 15 | [`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): 16 | 17 | ```sh 18 | $ npm install forwarded 19 | ``` 20 | 21 | ## API 22 | 23 | ```js 24 | var forwarded = require('forwarded') 25 | ``` 26 | 27 | ### forwarded(req) 28 | 29 | ```js 30 | var addresses = forwarded(req) 31 | ``` 32 | 33 | Parse the `X-Forwarded-For` header from the request. Returns an array 34 | of the addresses, including the socket address for the `req`, in reverse 35 | order (i.e. index `0` is the socket address and the last index is the 36 | furthest address, typically the end-user). 37 | 38 | ## Testing 39 | 40 | ```sh 41 | $ npm test 42 | ``` 43 | 44 | ## License 45 | 46 | [MIT](LICENSE) 47 | 48 | [npm-image]: https://img.shields.io/npm/v/forwarded.svg 49 | [npm-url]: https://npmjs.org/package/forwarded 50 | [node-version-image]: https://img.shields.io/node/v/forwarded.svg 51 | [node-version-url]: https://nodejs.org/en/download/ 52 | [travis-image]: https://img.shields.io/travis/jshttp/forwarded/master.svg 53 | [travis-url]: https://travis-ci.org/jshttp/forwarded 54 | [coveralls-image]: https://img.shields.io/coveralls/jshttp/forwarded/master.svg 55 | [coveralls-url]: https://coveralls.io/r/jshttp/forwarded?branch=master 56 | [downloads-image]: https://img.shields.io/npm/dm/forwarded.svg 57 | [downloads-url]: https://npmjs.org/package/forwarded 58 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/forwarded/index.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * forwarded 3 | * Copyright(c) 2014-2017 Douglas Christopher Wilson 4 | * MIT Licensed 5 | */ 6 | 7 | 'use strict' 8 | 9 | /** 10 | * Module exports. 11 | * @public 12 | */ 13 | 14 | module.exports = forwarded 15 | 16 | /** 17 | * Get all addresses in the request, using the `X-Forwarded-For` header. 18 | * 19 | * @param {object} req 20 | * @return {array} 21 | * @public 22 | */ 23 | 24 | function forwarded (req) { 25 | if (!req) { 26 | throw new TypeError('argument req is required') 27 | } 28 | 29 | // simple header parsing 30 | var proxyAddrs = parse(req.headers['x-forwarded-for'] || '') 31 | var socketAddr = req.connection.remoteAddress 32 | var addrs = [socketAddr].concat(proxyAddrs) 33 | 34 | // return all addresses 35 | return addrs 36 | } 37 | 38 | /** 39 | * Parse the X-Forwarded-For header. 40 | * 41 | * @param {string} header 42 | * @private 43 | */ 44 | 45 | function parse (header) { 46 | var end = header.length 47 | var list = [] 48 | var start = header.length 49 | 50 | // gather addresses, backwards 51 | for (var i = header.length - 1; i >= 0; i--) { 52 | switch (header.charCodeAt(i)) { 53 | case 0x20: /* */ 54 | if (start === end) { 55 | start = end = i 56 | } 57 | break 58 | case 0x2c: /* , */ 59 | if (start !== end) { 60 | list.push(header.substring(start, end)) 61 | } 62 | start = end = i 63 | break 64 | default: 65 | start = i 66 | break 67 | } 68 | } 69 | 70 | // final address 71 | if (start !== end) { 72 | list.push(header.substring(start, end)) 73 | } 74 | 75 | return list 76 | } 77 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/fresh/HISTORY.md: -------------------------------------------------------------------------------- 1 | 0.5.2 / 2017-09-13 2 | ================== 3 | 4 | * Fix regression matching multiple ETags in `If-None-Match` 5 | * perf: improve `If-None-Match` token parsing 6 | 7 | 0.5.1 / 2017-09-11 8 | ================== 9 | 10 | * Fix handling of modified headers with invalid dates 11 | * perf: improve ETag match loop 12 | 13 | 0.5.0 / 2017-02-21 14 | ================== 15 | 16 | * Fix incorrect result when `If-None-Match` has both `*` and ETags 17 | * Fix weak `ETag` matching to match spec 18 | * perf: delay reading header values until needed 19 | * perf: skip checking modified time if ETag check failed 20 | * perf: skip parsing `If-None-Match` when no `ETag` header 21 | * perf: use `Date.parse` instead of `new Date` 22 | 23 | 0.4.0 / 2017-02-05 24 | ================== 25 | 26 | * Fix false detection of `no-cache` request directive 27 | * perf: enable strict mode 28 | * perf: hoist regular expressions 29 | * perf: remove duplicate conditional 30 | * perf: remove unnecessary boolean coercions 31 | 32 | 0.3.0 / 2015-05-12 33 | ================== 34 | 35 | * Add weak `ETag` matching support 36 | 37 | 0.2.4 / 2014-09-07 38 | ================== 39 | 40 | * Support Node.js 0.6 41 | 42 | 0.2.3 / 2014-09-07 43 | ================== 44 | 45 | * Move repository to jshttp 46 | 47 | 0.2.2 / 2014-02-19 48 | ================== 49 | 50 | * Revert "Fix for blank page on Safari reload" 51 | 52 | 0.2.1 / 2014-01-29 53 | ================== 54 | 55 | * Fix for blank page on Safari reload 56 | 57 | 0.2.0 / 2013-08-11 58 | ================== 59 | 60 | * Return stale for `Cache-Control: no-cache` 61 | 62 | 0.1.0 / 2012-06-15 63 | ================== 64 | 65 | * Add `If-None-Match: *` support 66 | 67 | 0.0.1 / 2012-06-10 68 | ================== 69 | 70 | * Initial release 71 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/fresh/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2012 TJ Holowaychuk 4 | Copyright (c) 2016-2017 Douglas Christopher Wilson 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining 7 | a copy of this software and associated documentation files (the 8 | 'Software'), to deal in the Software without restriction, including 9 | without limitation the rights to use, copy, modify, merge, publish, 10 | distribute, sublicense, and/or sell copies of the Software, and to 11 | permit persons to whom the Software is furnished to do so, subject to 12 | the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be 15 | included in all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 18 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 20 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 21 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 22 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 23 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/http-errors/LICENSE: -------------------------------------------------------------------------------- 1 | 2 | The MIT License (MIT) 3 | 4 | Copyright (c) 2014 Jonathan Ong me@jongleberry.com 5 | Copyright (c) 2016 Douglas Christopher Wilson doug@somethingdoug.com 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/iconv-lite/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011 Alexander Shtuchkin 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | 22 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/iconv-lite/encodings/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | // Update this array if you add/rename/remove files in this directory. 4 | // We support Browserify by skipping automatic module discovery and requiring modules directly. 5 | var modules = [ 6 | require("./internal"), 7 | require("./utf16"), 8 | require("./utf7"), 9 | require("./sbcs-codec"), 10 | require("./sbcs-data"), 11 | require("./sbcs-data-generated"), 12 | require("./dbcs-codec"), 13 | require("./dbcs-data"), 14 | ]; 15 | 16 | // Put all encoding/alias/codec definitions to single object and export it. 17 | for (var i = 0; i < modules.length; i++) { 18 | var module = modules[i]; 19 | for (var enc in module) 20 | if (Object.prototype.hasOwnProperty.call(module, enc)) 21 | exports[enc] = module[enc]; 22 | } 23 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/iconv-lite/encodings/tables/gbk-added.json: -------------------------------------------------------------------------------- 1 | [ 2 | ["a140","",62], 3 | ["a180","",32], 4 | ["a240","",62], 5 | ["a280","",32], 6 | ["a2ab","",5], 7 | ["a2e3","€"], 8 | ["a2ef",""], 9 | ["a2fd",""], 10 | ["a340","",62], 11 | ["a380","",31," "], 12 | ["a440","",62], 13 | ["a480","",32], 14 | ["a4f4","",10], 15 | ["a540","",62], 16 | ["a580","",32], 17 | ["a5f7","",7], 18 | ["a640","",62], 19 | ["a680","",32], 20 | ["a6b9","",7], 21 | ["a6d9","",6], 22 | ["a6ec",""], 23 | ["a6f3",""], 24 | ["a6f6","",8], 25 | ["a740","",62], 26 | ["a780","",32], 27 | ["a7c2","",14], 28 | ["a7f2","",12], 29 | ["a896","",10], 30 | ["a8bc",""], 31 | ["a8bf","ǹ"], 32 | ["a8c1",""], 33 | ["a8ea","",20], 34 | ["a958",""], 35 | ["a95b",""], 36 | ["a95d",""], 37 | ["a989","〾⿰",11], 38 | ["a997","",12], 39 | ["a9f0","",14], 40 | ["aaa1","",93], 41 | ["aba1","",93], 42 | ["aca1","",93], 43 | ["ada1","",93], 44 | ["aea1","",93], 45 | ["afa1","",93], 46 | ["d7fa","",4], 47 | ["f8a1","",93], 48 | ["f9a1","",93], 49 | ["faa1","",93], 50 | ["fba1","",93], 51 | ["fca1","",93], 52 | ["fda1","",93], 53 | ["fe50","⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌"], 54 | ["fe80","䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓",6,"䶮",93] 55 | ] 56 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/iconv-lite/lib/bom-handling.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | var BOMChar = '\uFEFF'; 4 | 5 | exports.PrependBOM = PrependBOMWrapper 6 | function PrependBOMWrapper(encoder, options) { 7 | this.encoder = encoder; 8 | this.addBOM = true; 9 | } 10 | 11 | PrependBOMWrapper.prototype.write = function(str) { 12 | if (this.addBOM) { 13 | str = BOMChar + str; 14 | this.addBOM = false; 15 | } 16 | 17 | return this.encoder.write(str); 18 | } 19 | 20 | PrependBOMWrapper.prototype.end = function() { 21 | return this.encoder.end(); 22 | } 23 | 24 | 25 | //------------------------------------------------------------------------------ 26 | 27 | exports.StripBOM = StripBOMWrapper; 28 | function StripBOMWrapper(decoder, options) { 29 | this.decoder = decoder; 30 | this.pass = false; 31 | this.options = options || {}; 32 | } 33 | 34 | StripBOMWrapper.prototype.write = function(buf) { 35 | var res = this.decoder.write(buf); 36 | if (this.pass || !res) 37 | return res; 38 | 39 | if (res[0] === BOMChar) { 40 | res = res.slice(1); 41 | if (typeof this.options.stripBOM === 'function') 42 | this.options.stripBOM(); 43 | } 44 | 45 | this.pass = true; 46 | return res; 47 | } 48 | 49 | StripBOMWrapper.prototype.end = function() { 50 | return this.decoder.end(); 51 | } 52 | 53 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/iconv-lite/lib/index.d.ts: -------------------------------------------------------------------------------- 1 | /*--------------------------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * Licensed under the MIT License. 4 | * REQUIREMENT: This definition is dependent on the @types/node definition. 5 | * Install with `npm install @types/node --save-dev` 6 | *--------------------------------------------------------------------------------------------*/ 7 | 8 | declare module 'iconv-lite' { 9 | export function decode(buffer: Buffer, encoding: string, options?: Options): string; 10 | 11 | export function encode(content: string, encoding: string, options?: Options): Buffer; 12 | 13 | export function encodingExists(encoding: string): boolean; 14 | 15 | export function decodeStream(encoding: string, options?: Options): NodeJS.ReadWriteStream; 16 | 17 | export function encodeStream(encoding: string, options?: Options): NodeJS.ReadWriteStream; 18 | } 19 | 20 | export interface Options { 21 | stripBOM?: boolean; 22 | addBOM?: boolean; 23 | defaultEncoding?: string; 24 | } 25 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/inherits/LICENSE: -------------------------------------------------------------------------------- 1 | The ISC License 2 | 3 | Copyright (c) Isaac Z. Schlueter 4 | 5 | Permission to use, copy, modify, and/or distribute this software for any 6 | purpose with or without fee is hereby granted, provided that the above 7 | copyright notice and this permission notice appear in all copies. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 10 | REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 11 | FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 12 | INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 13 | LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 14 | OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 15 | PERFORMANCE OF THIS SOFTWARE. 16 | 17 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/inherits/README.md: -------------------------------------------------------------------------------- 1 | Browser-friendly inheritance fully compatible with standard node.js 2 | [inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor). 3 | 4 | This package exports standard `inherits` from node.js `util` module in 5 | node environment, but also provides alternative browser-friendly 6 | implementation through [browser 7 | field](https://gist.github.com/shtylman/4339901). Alternative 8 | implementation is a literal copy of standard one located in standalone 9 | module to avoid requiring of `util`. It also has a shim for old 10 | browsers with no `Object.create` support. 11 | 12 | While keeping you sure you are using standard `inherits` 13 | implementation in node.js environment, it allows bundlers such as 14 | [browserify](https://github.com/substack/node-browserify) to not 15 | include full `util` package to your client code if all you need is 16 | just `inherits` function. It worth, because browser shim for `util` 17 | package is large and `inherits` is often the single function you need 18 | from it. 19 | 20 | It's recommended to use this package instead of 21 | `require('util').inherits` for any code that has chances to be used 22 | not only in node.js but in browser too. 23 | 24 | ## usage 25 | 26 | ```js 27 | var inherits = require('inherits'); 28 | // then use exactly as the standard one 29 | ``` 30 | 31 | ## note on version ~1.0 32 | 33 | Version ~1.0 had completely different motivation and is not compatible 34 | neither with 2.0 nor with standard node.js `inherits`. 35 | 36 | If you are using version ~1.0 and planning to switch to ~2.0, be 37 | careful: 38 | 39 | * new version uses `super_` instead of `super` for referencing 40 | superclass 41 | * new version overwrites current prototype while old one preserves any 42 | existing fields on it 43 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/inherits/inherits.js: -------------------------------------------------------------------------------- 1 | try { 2 | var util = require('util'); 3 | if (typeof util.inherits !== 'function') throw ''; 4 | module.exports = util.inherits; 5 | } catch (e) { 6 | module.exports = require('./inherits_browser.js'); 7 | } 8 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/inherits/inherits_browser.js: -------------------------------------------------------------------------------- 1 | if (typeof Object.create === 'function') { 2 | // implementation from standard node.js 'util' module 3 | module.exports = function inherits(ctor, superCtor) { 4 | ctor.super_ = superCtor 5 | ctor.prototype = Object.create(superCtor.prototype, { 6 | constructor: { 7 | value: ctor, 8 | enumerable: false, 9 | writable: true, 10 | configurable: true 11 | } 12 | }); 13 | }; 14 | } else { 15 | // old school shim for old browsers 16 | module.exports = function inherits(ctor, superCtor) { 17 | ctor.super_ = superCtor 18 | var TempCtor = function () {} 19 | TempCtor.prototype = superCtor.prototype 20 | ctor.prototype = new TempCtor() 21 | ctor.prototype.constructor = ctor 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/inherits/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "_from": "inherits@2.0.3", 3 | "_id": "inherits@2.0.3", 4 | "_inBundle": false, 5 | "_integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 6 | "_location": "/inherits", 7 | "_phantomChildren": {}, 8 | "_requested": { 9 | "type": "version", 10 | "registry": true, 11 | "raw": "inherits@2.0.3", 12 | "name": "inherits", 13 | "escapedName": "inherits", 14 | "rawSpec": "2.0.3", 15 | "saveSpec": null, 16 | "fetchSpec": "2.0.3" 17 | }, 18 | "_requiredBy": [ 19 | "/http-errors" 20 | ], 21 | "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 22 | "_shasum": "633c2c83e3da42a502f52466022480f4208261de", 23 | "_spec": "inherits@2.0.3", 24 | "_where": "/Users/timthetic/Desktop/ACM/hackschool-f19/session-2-intro-to-backend/demo/node_modules/http-errors", 25 | "browser": "./inherits_browser.js", 26 | "bugs": { 27 | "url": "https://github.com/isaacs/inherits/issues" 28 | }, 29 | "bundleDependencies": false, 30 | "deprecated": false, 31 | "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()", 32 | "devDependencies": { 33 | "tap": "^7.1.0" 34 | }, 35 | "files": [ 36 | "inherits.js", 37 | "inherits_browser.js" 38 | ], 39 | "homepage": "https://github.com/isaacs/inherits#readme", 40 | "keywords": [ 41 | "inheritance", 42 | "class", 43 | "klass", 44 | "oop", 45 | "object-oriented", 46 | "inherits", 47 | "browser", 48 | "browserify" 49 | ], 50 | "license": "ISC", 51 | "main": "./inherits.js", 52 | "name": "inherits", 53 | "repository": { 54 | "type": "git", 55 | "url": "git://github.com/isaacs/inherits.git" 56 | }, 57 | "scripts": { 58 | "test": "node test" 59 | }, 60 | "version": "2.0.3" 61 | } 62 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/ipaddr.js/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (C) 2011-2017 whitequark 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/media-typer/HISTORY.md: -------------------------------------------------------------------------------- 1 | 0.3.0 / 2014-09-07 2 | ================== 3 | 4 | * Support Node.js 0.6 5 | * Throw error when parameter format invalid on parse 6 | 7 | 0.2.0 / 2014-06-18 8 | ================== 9 | 10 | * Add `typer.format()` to format media types 11 | 12 | 0.1.0 / 2014-06-17 13 | ================== 14 | 15 | * Accept `req` as argument to `parse` 16 | * Accept `res` as argument to `parse` 17 | * Parse media type with extra LWS between type and first parameter 18 | 19 | 0.0.0 / 2014-06-13 20 | ================== 21 | 22 | * Initial implementation 23 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/media-typer/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2014 Douglas Christopher Wilson 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | 'Software'), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/merge-descriptors/HISTORY.md: -------------------------------------------------------------------------------- 1 | 1.0.1 / 2016-01-17 2 | ================== 3 | 4 | * perf: enable strict mode 5 | 6 | 1.0.0 / 2015-03-01 7 | ================== 8 | 9 | * Add option to only add new descriptors 10 | * Add simple argument validation 11 | * Add jsdoc to source file 12 | 13 | 0.0.2 / 2013-12-14 14 | ================== 15 | 16 | * Move repository to `component` organization 17 | 18 | 0.0.1 / 2013-10-29 19 | ================== 20 | 21 | * Initial release 22 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/merge-descriptors/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2013 Jonathan Ong 4 | Copyright (c) 2015 Douglas Christopher Wilson 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining 7 | a copy of this software and associated documentation files (the 8 | 'Software'), to deal in the Software without restriction, including 9 | without limitation the rights to use, copy, modify, merge, publish, 10 | distribute, sublicense, and/or sell copies of the Software, and to 11 | permit persons to whom the Software is furnished to do so, subject to 12 | the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be 15 | included in all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 18 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 20 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 21 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 22 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 23 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/merge-descriptors/README.md: -------------------------------------------------------------------------------- 1 | # Merge Descriptors 2 | 3 | [![NPM Version][npm-image]][npm-url] 4 | [![NPM Downloads][downloads-image]][downloads-url] 5 | [![Build Status][travis-image]][travis-url] 6 | [![Test Coverage][coveralls-image]][coveralls-url] 7 | 8 | Merge objects using descriptors. 9 | 10 | ```js 11 | var thing = { 12 | get name() { 13 | return 'jon' 14 | } 15 | } 16 | 17 | var animal = { 18 | 19 | } 20 | 21 | merge(animal, thing) 22 | 23 | animal.name === 'jon' 24 | ``` 25 | 26 | ## API 27 | 28 | ### merge(destination, source) 29 | 30 | Redefines `destination`'s descriptors with `source`'s. 31 | 32 | ### merge(destination, source, false) 33 | 34 | Defines `source`'s descriptors on `destination` if `destination` does not have 35 | a descriptor by the same name. 36 | 37 | ## License 38 | 39 | [MIT](LICENSE) 40 | 41 | [npm-image]: https://img.shields.io/npm/v/merge-descriptors.svg 42 | [npm-url]: https://npmjs.org/package/merge-descriptors 43 | [travis-image]: https://img.shields.io/travis/component/merge-descriptors/master.svg 44 | [travis-url]: https://travis-ci.org/component/merge-descriptors 45 | [coveralls-image]: https://img.shields.io/coveralls/component/merge-descriptors/master.svg 46 | [coveralls-url]: https://coveralls.io/r/component/merge-descriptors?branch=master 47 | [downloads-image]: https://img.shields.io/npm/dm/merge-descriptors.svg 48 | [downloads-url]: https://npmjs.org/package/merge-descriptors 49 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/merge-descriptors/index.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * merge-descriptors 3 | * Copyright(c) 2014 Jonathan Ong 4 | * Copyright(c) 2015 Douglas Christopher Wilson 5 | * MIT Licensed 6 | */ 7 | 8 | 'use strict' 9 | 10 | /** 11 | * Module exports. 12 | * @public 13 | */ 14 | 15 | module.exports = merge 16 | 17 | /** 18 | * Module variables. 19 | * @private 20 | */ 21 | 22 | var hasOwnProperty = Object.prototype.hasOwnProperty 23 | 24 | /** 25 | * Merge the property descriptors of `src` into `dest` 26 | * 27 | * @param {object} dest Object to add descriptors to 28 | * @param {object} src Object to clone descriptors from 29 | * @param {boolean} [redefine=true] Redefine `dest` properties with `src` properties 30 | * @returns {object} Reference to dest 31 | * @public 32 | */ 33 | 34 | function merge(dest, src, redefine) { 35 | if (!dest) { 36 | throw new TypeError('argument dest is required') 37 | } 38 | 39 | if (!src) { 40 | throw new TypeError('argument src is required') 41 | } 42 | 43 | if (redefine === undefined) { 44 | // Default to true 45 | redefine = true 46 | } 47 | 48 | Object.getOwnPropertyNames(src).forEach(function forEachOwnPropertyName(name) { 49 | if (!redefine && hasOwnProperty.call(dest, name)) { 50 | // Skip desriptor 51 | return 52 | } 53 | 54 | // Copy descriptor 55 | var descriptor = Object.getOwnPropertyDescriptor(src, name) 56 | Object.defineProperty(dest, name, descriptor) 57 | }) 58 | 59 | return dest 60 | } 61 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/methods/HISTORY.md: -------------------------------------------------------------------------------- 1 | 1.1.2 / 2016-01-17 2 | ================== 3 | 4 | * perf: enable strict mode 5 | 6 | 1.1.1 / 2014-12-30 7 | ================== 8 | 9 | * Improve `browserify` support 10 | 11 | 1.1.0 / 2014-07-05 12 | ================== 13 | 14 | * Add `CONNECT` method 15 | 16 | 1.0.1 / 2014-06-02 17 | ================== 18 | 19 | * Fix module to work with harmony transform 20 | 21 | 1.0.0 / 2014-05-08 22 | ================== 23 | 24 | * Add `PURGE` method 25 | 26 | 0.1.0 / 2013-10-28 27 | ================== 28 | 29 | * Add `http.METHODS` support 30 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/methods/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2013-2014 TJ Holowaychuk 4 | Copyright (c) 2015-2016 Douglas Christopher Wilson 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining 7 | a copy of this software and associated documentation files (the 8 | 'Software'), to deal in the Software without restriction, including 9 | without limitation the rights to use, copy, modify, merge, publish, 10 | distribute, sublicense, and/or sell copies of the Software, and to 11 | permit persons to whom the Software is furnished to do so, subject to 12 | the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be 15 | included in all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 18 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 20 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 21 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 22 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 23 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24 | 25 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/methods/README.md: -------------------------------------------------------------------------------- 1 | # Methods 2 | 3 | [![NPM Version][npm-image]][npm-url] 4 | [![NPM Downloads][downloads-image]][downloads-url] 5 | [![Node.js Version][node-version-image]][node-version-url] 6 | [![Build Status][travis-image]][travis-url] 7 | [![Test Coverage][coveralls-image]][coveralls-url] 8 | 9 | HTTP verbs that Node.js core's HTTP parser supports. 10 | 11 | This module provides an export that is just like `http.METHODS` from Node.js core, 12 | with the following differences: 13 | 14 | * All method names are lower-cased. 15 | * Contains a fallback list of methods for Node.js versions that do not have a 16 | `http.METHODS` export (0.10 and lower). 17 | * Provides the fallback list when using tools like `browserify` without pulling 18 | in the `http` shim module. 19 | 20 | ## Install 21 | 22 | ```bash 23 | $ npm install methods 24 | ``` 25 | 26 | ## API 27 | 28 | ```js 29 | var methods = require('methods') 30 | ``` 31 | 32 | ### methods 33 | 34 | This is an array of lower-cased method names that Node.js supports. If Node.js 35 | provides the `http.METHODS` export, then this is the same array lower-cased, 36 | otherwise it is a snapshot of the verbs from Node.js 0.10. 37 | 38 | ## License 39 | 40 | [MIT](LICENSE) 41 | 42 | [npm-image]: https://img.shields.io/npm/v/methods.svg?style=flat 43 | [npm-url]: https://npmjs.org/package/methods 44 | [node-version-image]: https://img.shields.io/node/v/methods.svg?style=flat 45 | [node-version-url]: https://nodejs.org/en/download/ 46 | [travis-image]: https://img.shields.io/travis/jshttp/methods.svg?style=flat 47 | [travis-url]: https://travis-ci.org/jshttp/methods 48 | [coveralls-image]: https://img.shields.io/coveralls/jshttp/methods.svg?style=flat 49 | [coveralls-url]: https://coveralls.io/r/jshttp/methods?branch=master 50 | [downloads-image]: https://img.shields.io/npm/dm/methods.svg?style=flat 51 | [downloads-url]: https://npmjs.org/package/methods 52 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/methods/index.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * methods 3 | * Copyright(c) 2013-2014 TJ Holowaychuk 4 | * Copyright(c) 2015-2016 Douglas Christopher Wilson 5 | * MIT Licensed 6 | */ 7 | 8 | 'use strict'; 9 | 10 | /** 11 | * Module dependencies. 12 | * @private 13 | */ 14 | 15 | var http = require('http'); 16 | 17 | /** 18 | * Module exports. 19 | * @public 20 | */ 21 | 22 | module.exports = getCurrentNodeMethods() || getBasicNodeMethods(); 23 | 24 | /** 25 | * Get the current Node.js methods. 26 | * @private 27 | */ 28 | 29 | function getCurrentNodeMethods() { 30 | return http.METHODS && http.METHODS.map(function lowerCaseMethod(method) { 31 | return method.toLowerCase(); 32 | }); 33 | } 34 | 35 | /** 36 | * Get the "basic" Node.js methods, a snapshot from Node.js 0.10. 37 | * @private 38 | */ 39 | 40 | function getBasicNodeMethods() { 41 | return [ 42 | 'get', 43 | 'post', 44 | 'put', 45 | 'head', 46 | 'delete', 47 | 'options', 48 | 'trace', 49 | 'copy', 50 | 'lock', 51 | 'mkcol', 52 | 'move', 53 | 'purge', 54 | 'propfind', 55 | 'proppatch', 56 | 'unlock', 57 | 'report', 58 | 'mkactivity', 59 | 'checkout', 60 | 'merge', 61 | 'm-search', 62 | 'notify', 63 | 'subscribe', 64 | 'unsubscribe', 65 | 'patch', 66 | 'search', 67 | 'connect' 68 | ]; 69 | } 70 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/mime-db/LICENSE: -------------------------------------------------------------------------------- 1 | 2 | The MIT License (MIT) 3 | 4 | Copyright (c) 2014 Jonathan Ong me@jongleberry.com 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in 14 | all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/mime-db/index.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * mime-db 3 | * Copyright(c) 2014 Jonathan Ong 4 | * MIT Licensed 5 | */ 6 | 7 | /** 8 | * Module exports. 9 | */ 10 | 11 | module.exports = require('./db.json') 12 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/mime-types/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2014 Jonathan Ong 4 | Copyright (c) 2015 Douglas Christopher Wilson 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining 7 | a copy of this software and associated documentation files (the 8 | 'Software'), to deal in the Software without restriction, including 9 | without limitation the rights to use, copy, modify, merge, publish, 10 | distribute, sublicense, and/or sell copies of the Software, and to 11 | permit persons to whom the Software is furnished to do so, subject to 12 | the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be 15 | included in all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 18 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 20 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 21 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 22 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 23 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/mime/.npmignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-2-intro-to-backend/demo/node_modules/mime/.npmignore -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/mime/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2010 Benjamin Thomas, Robert Kieffer 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/mime/cli.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | var mime = require('./mime.js'); 4 | var file = process.argv[2]; 5 | var type = mime.lookup(file); 6 | 7 | process.stdout.write(type + '\n'); 8 | 9 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/mime/src/build.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | 'use strict'; 4 | 5 | const fs = require('fs'); 6 | const path = require('path'); 7 | const mimeScore = require('mime-score'); 8 | 9 | let db = require('mime-db'); 10 | let chalk = require('chalk'); 11 | 12 | const STANDARD_FACET_SCORE = 900; 13 | 14 | const byExtension = {}; 15 | 16 | // Clear out any conflict extensions in mime-db 17 | for (let type in db) { 18 | let entry = db[type]; 19 | entry.type = type; 20 | 21 | if (!entry.extensions) continue; 22 | 23 | entry.extensions.forEach(ext => { 24 | if (ext in byExtension) { 25 | const e0 = entry; 26 | const e1 = byExtension[ext]; 27 | e0.pri = mimeScore(e0.type, e0.source); 28 | e1.pri = mimeScore(e1.type, e1.source); 29 | 30 | let drop = e0.pri < e1.pri ? e0 : e1; 31 | let keep = e0.pri >= e1.pri ? e0 : e1; 32 | drop.extensions = drop.extensions.filter(e => e !== ext); 33 | 34 | console.log(`${ext}: Keeping ${chalk.green(keep.type)} (${keep.pri}), dropping ${chalk.red(drop.type)} (${drop.pri})`); 35 | } 36 | byExtension[ext] = entry; 37 | }); 38 | } 39 | 40 | function writeTypesFile(types, path) { 41 | fs.writeFileSync(path, JSON.stringify(types)); 42 | } 43 | 44 | // Segregate into standard and non-standard types based on facet per 45 | // https://tools.ietf.org/html/rfc6838#section-3.1 46 | const types = {}; 47 | 48 | Object.keys(db).sort().forEach(k => { 49 | const entry = db[k]; 50 | types[entry.type] = entry.extensions; 51 | }); 52 | 53 | writeTypesFile(types, path.join(__dirname, '..', 'types.json')); 54 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/ms/license.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Zeit, Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/ms/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "_from": "ms@2.0.0", 3 | "_id": "ms@2.0.0", 4 | "_inBundle": false, 5 | "_integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 6 | "_location": "/ms", 7 | "_phantomChildren": {}, 8 | "_requested": { 9 | "type": "version", 10 | "registry": true, 11 | "raw": "ms@2.0.0", 12 | "name": "ms", 13 | "escapedName": "ms", 14 | "rawSpec": "2.0.0", 15 | "saveSpec": null, 16 | "fetchSpec": "2.0.0" 17 | }, 18 | "_requiredBy": [ 19 | "/debug" 20 | ], 21 | "_resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 22 | "_shasum": "5608aeadfc00be6c2901df5f9861788de0d597c8", 23 | "_spec": "ms@2.0.0", 24 | "_where": "/Users/timthetic/Desktop/ACM/hackschool-f19/session-2-intro-to-backend/demo/node_modules/debug", 25 | "bugs": { 26 | "url": "https://github.com/zeit/ms/issues" 27 | }, 28 | "bundleDependencies": false, 29 | "deprecated": false, 30 | "description": "Tiny milisecond conversion utility", 31 | "devDependencies": { 32 | "eslint": "3.19.0", 33 | "expect.js": "0.3.1", 34 | "husky": "0.13.3", 35 | "lint-staged": "3.4.1", 36 | "mocha": "3.4.1" 37 | }, 38 | "eslintConfig": { 39 | "extends": "eslint:recommended", 40 | "env": { 41 | "node": true, 42 | "es6": true 43 | } 44 | }, 45 | "files": [ 46 | "index.js" 47 | ], 48 | "homepage": "https://github.com/zeit/ms#readme", 49 | "license": "MIT", 50 | "lint-staged": { 51 | "*.js": [ 52 | "npm run lint", 53 | "prettier --single-quote --write", 54 | "git add" 55 | ] 56 | }, 57 | "main": "./index", 58 | "name": "ms", 59 | "repository": { 60 | "type": "git", 61 | "url": "git+https://github.com/zeit/ms.git" 62 | }, 63 | "scripts": { 64 | "lint": "eslint lib/* bin/*", 65 | "precommit": "lint-staged", 66 | "test": "mocha tests.js" 67 | }, 68 | "version": "2.0.0" 69 | } 70 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/ms/readme.md: -------------------------------------------------------------------------------- 1 | # ms 2 | 3 | [![Build Status](https://travis-ci.org/zeit/ms.svg?branch=master)](https://travis-ci.org/zeit/ms) 4 | [![Slack Channel](http://zeit-slackin.now.sh/badge.svg)](https://zeit.chat/) 5 | 6 | Use this package to easily convert various time formats to milliseconds. 7 | 8 | ## Examples 9 | 10 | ```js 11 | ms('2 days') // 172800000 12 | ms('1d') // 86400000 13 | ms('10h') // 36000000 14 | ms('2.5 hrs') // 9000000 15 | ms('2h') // 7200000 16 | ms('1m') // 60000 17 | ms('5s') // 5000 18 | ms('1y') // 31557600000 19 | ms('100') // 100 20 | ``` 21 | 22 | ### Convert from milliseconds 23 | 24 | ```js 25 | ms(60000) // "1m" 26 | ms(2 * 60000) // "2m" 27 | ms(ms('10 hours')) // "10h" 28 | ``` 29 | 30 | ### Time format written-out 31 | 32 | ```js 33 | ms(60000, { long: true }) // "1 minute" 34 | ms(2 * 60000, { long: true }) // "2 minutes" 35 | ms(ms('10 hours'), { long: true }) // "10 hours" 36 | ``` 37 | 38 | ## Features 39 | 40 | - Works both in [node](https://nodejs.org) and in the browser. 41 | - If a number is supplied to `ms`, a string with a unit is returned. 42 | - If a string that contains the number is supplied, it returns it as a number (e.g.: it returns `100` for `'100'`). 43 | - If you pass a string with a number and a valid unit, the number of equivalent ms is returned. 44 | 45 | ## Caught a bug? 46 | 47 | 1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device 48 | 2. Link the package to the global module directory: `npm link` 49 | 3. Within the module you want to test your local development instance of ms, just link it to the dependencies: `npm link ms`. Instead of the default one from npm, node will now use your clone of ms! 50 | 51 | As always, you can run the tests using: `npm test` 52 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/negotiator/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2012-2014 Federico Romero 4 | Copyright (c) 2012-2014 Isaac Z. Schlueter 5 | Copyright (c) 2014-2015 Douglas Christopher Wilson 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining 8 | a copy of this software and associated documentation files (the 9 | 'Software'), to deal in the Software without restriction, including 10 | without limitation the rights to use, copy, modify, merge, publish, 11 | distribute, sublicense, and/or sell copies of the Software, and to 12 | permit persons to whom the Software is furnished to do so, subject to 13 | the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be 16 | included in all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 19 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 21 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/on-finished/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2013 Jonathan Ong 4 | Copyright (c) 2014 Douglas Christopher Wilson 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining 7 | a copy of this software and associated documentation files (the 8 | 'Software'), to deal in the Software without restriction, including 9 | without limitation the rights to use, copy, modify, merge, publish, 10 | distribute, sublicense, and/or sell copies of the Software, and to 11 | permit persons to whom the Software is furnished to do so, subject to 12 | the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be 15 | included in all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 18 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 20 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 21 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 22 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 23 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/parseurl/HISTORY.md: -------------------------------------------------------------------------------- 1 | 1.3.3 / 2019-04-15 2 | ================== 3 | 4 | * Fix Node.js 0.8 return value inconsistencies 5 | 6 | 1.3.2 / 2017-09-09 7 | ================== 8 | 9 | * perf: reduce overhead for full URLs 10 | * perf: unroll the "fast-path" `RegExp` 11 | 12 | 1.3.1 / 2016-01-17 13 | ================== 14 | 15 | * perf: enable strict mode 16 | 17 | 1.3.0 / 2014-08-09 18 | ================== 19 | 20 | * Add `parseurl.original` for parsing `req.originalUrl` with fallback 21 | * Return `undefined` if `req.url` is `undefined` 22 | 23 | 1.2.0 / 2014-07-21 24 | ================== 25 | 26 | * Cache URLs based on original value 27 | * Remove no-longer-needed URL mis-parse work-around 28 | * Simplify the "fast-path" `RegExp` 29 | 30 | 1.1.3 / 2014-07-08 31 | ================== 32 | 33 | * Fix typo 34 | 35 | 1.1.2 / 2014-07-08 36 | ================== 37 | 38 | * Seriously fix Node.js 0.8 compatibility 39 | 40 | 1.1.1 / 2014-07-08 41 | ================== 42 | 43 | * Fix Node.js 0.8 compatibility 44 | 45 | 1.1.0 / 2014-07-08 46 | ================== 47 | 48 | * Incorporate URL href-only parse fast-path 49 | 50 | 1.0.1 / 2014-03-08 51 | ================== 52 | 53 | * Add missing `require` 54 | 55 | 1.0.0 / 2014-03-08 56 | ================== 57 | 58 | * Genesis from `connect` 59 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/parseurl/LICENSE: -------------------------------------------------------------------------------- 1 | 2 | (The MIT License) 3 | 4 | Copyright (c) 2014 Jonathan Ong 5 | Copyright (c) 2014-2017 Douglas Christopher Wilson 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining 8 | a copy of this software and associated documentation files (the 9 | 'Software'), to deal in the Software without restriction, including 10 | without limitation the rights to use, copy, modify, merge, publish, 11 | distribute, sublicense, and/or sell copies of the Software, and to 12 | permit persons to whom the Software is furnished to do so, subject to 13 | the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be 16 | included in all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 19 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 21 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/path-to-regexp/History.md: -------------------------------------------------------------------------------- 1 | 0.1.7 / 2015-07-28 2 | ================== 3 | 4 | * Fixed regression with escaped round brackets and matching groups. 5 | 6 | 0.1.6 / 2015-06-19 7 | ================== 8 | 9 | * Replace `index` feature by outputting all parameters, unnamed and named. 10 | 11 | 0.1.5 / 2015-05-08 12 | ================== 13 | 14 | * Add an index property for position in match result. 15 | 16 | 0.1.4 / 2015-03-05 17 | ================== 18 | 19 | * Add license information 20 | 21 | 0.1.3 / 2014-07-06 22 | ================== 23 | 24 | * Better array support 25 | * Improved support for trailing slash in non-ending mode 26 | 27 | 0.1.0 / 2014-03-06 28 | ================== 29 | 30 | * add options.end 31 | 32 | 0.0.2 / 2013-02-10 33 | ================== 34 | 35 | * Update to match current express 36 | * add .license property to component.json 37 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/path-to-regexp/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/path-to-regexp/Readme.md: -------------------------------------------------------------------------------- 1 | # Path-to-RegExp 2 | 3 | Turn an Express-style path string such as `/user/:name` into a regular expression. 4 | 5 | **Note:** This is a legacy branch. You should upgrade to `1.x`. 6 | 7 | ## Usage 8 | 9 | ```javascript 10 | var pathToRegexp = require('path-to-regexp'); 11 | ``` 12 | 13 | ### pathToRegexp(path, keys, options) 14 | 15 | - **path** A string in the express format, an array of such strings, or a regular expression 16 | - **keys** An array to be populated with the keys present in the url. Once the function completes, this will be an array of strings. 17 | - **options** 18 | - **options.sensitive** Defaults to false, set this to true to make routes case sensitive 19 | - **options.strict** Defaults to false, set this to true to make the trailing slash matter. 20 | - **options.end** Defaults to true, set this to false to only match the prefix of the URL. 21 | 22 | ```javascript 23 | var keys = []; 24 | var exp = pathToRegexp('/foo/:bar', keys); 25 | //keys = ['bar'] 26 | //exp = /^\/foo\/(?:([^\/]+?))\/?$/i 27 | ``` 28 | 29 | ## Live Demo 30 | 31 | You can see a live demo of this library in use at [express-route-tester](http://forbeslindesay.github.com/express-route-tester/). 32 | 33 | ## License 34 | 35 | MIT 36 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/path-to-regexp/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "_from": "path-to-regexp@0.1.7", 3 | "_id": "path-to-regexp@0.1.7", 4 | "_inBundle": false, 5 | "_integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", 6 | "_location": "/path-to-regexp", 7 | "_phantomChildren": {}, 8 | "_requested": { 9 | "type": "version", 10 | "registry": true, 11 | "raw": "path-to-regexp@0.1.7", 12 | "name": "path-to-regexp", 13 | "escapedName": "path-to-regexp", 14 | "rawSpec": "0.1.7", 15 | "saveSpec": null, 16 | "fetchSpec": "0.1.7" 17 | }, 18 | "_requiredBy": [ 19 | "/express" 20 | ], 21 | "_resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 22 | "_shasum": "df604178005f522f15eb4490e7247a1bfaa67f8c", 23 | "_spec": "path-to-regexp@0.1.7", 24 | "_where": "/Users/timthetic/Desktop/ACM/hackschool-f19/session-2-intro-to-backend/demo/node_modules/express", 25 | "bugs": { 26 | "url": "https://github.com/component/path-to-regexp/issues" 27 | }, 28 | "bundleDependencies": false, 29 | "component": { 30 | "scripts": { 31 | "path-to-regexp": "index.js" 32 | } 33 | }, 34 | "deprecated": false, 35 | "description": "Express style path to RegExp utility", 36 | "devDependencies": { 37 | "istanbul": "^0.2.6", 38 | "mocha": "^1.17.1" 39 | }, 40 | "files": [ 41 | "index.js", 42 | "LICENSE" 43 | ], 44 | "homepage": "https://github.com/component/path-to-regexp#readme", 45 | "keywords": [ 46 | "express", 47 | "regexp" 48 | ], 49 | "license": "MIT", 50 | "name": "path-to-regexp", 51 | "repository": { 52 | "type": "git", 53 | "url": "git+https://github.com/component/path-to-regexp.git" 54 | }, 55 | "scripts": { 56 | "test": "istanbul cover _mocha -- -R spec" 57 | }, 58 | "version": "0.1.7" 59 | } 60 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/proxy-addr/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2014-2016 Douglas Christopher Wilson 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | 'Software'), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/qs/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 4 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | max_line_length = 160 11 | 12 | [test/*] 13 | max_line_length = off 14 | 15 | [*.md] 16 | max_line_length = off 17 | 18 | [*.json] 19 | max_line_length = off 20 | 21 | [Makefile] 22 | max_line_length = off 23 | 24 | [CHANGELOG.md] 25 | indent_style = space 26 | indent_size = 2 27 | 28 | [LICENSE] 29 | indent_size = 2 30 | max_line_length = off 31 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/qs/.eslintignore: -------------------------------------------------------------------------------- 1 | dist 2 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/qs/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | 4 | "extends": "@ljharb", 5 | 6 | "rules": { 7 | "complexity": 0, 8 | "consistent-return": 1, 9 | "func-name-matching": 0, 10 | "id-length": [2, { "min": 1, "max": 25, "properties": "never" }], 11 | "indent": [2, 4], 12 | "max-lines-per-function": [2, { "max": 150 }], 13 | "max-params": [2, 14], 14 | "max-statements": [2, 52], 15 | "multiline-comment-style": 0, 16 | "no-continue": 1, 17 | "no-magic-numbers": 0, 18 | "no-restricted-syntax": [2, "BreakStatement", "DebuggerStatement", "ForInStatement", "LabeledStatement", "WithStatement"], 19 | "operator-linebreak": [2, "before"], 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/qs/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014 Nathan LaFreniere and other contributors. 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | * Redistributions of source code must retain the above copyright 7 | notice, this list of conditions and the following disclaimer. 8 | * Redistributions in binary form must reproduce the above copyright 9 | notice, this list of conditions and the following disclaimer in the 10 | documentation and/or other materials provided with the distribution. 11 | * The names of any contributors may not be used to endorse or promote 12 | products derived from this software without specific prior written 13 | permission. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 16 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY 19 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | 26 | * * * 27 | 28 | The complete list of contributors can be found at: https://github.com/hapijs/qs/graphs/contributors 29 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/qs/lib/formats.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var replace = String.prototype.replace; 4 | var percentTwenties = /%20/g; 5 | 6 | module.exports = { 7 | 'default': 'RFC3986', 8 | formatters: { 9 | RFC1738: function (value) { 10 | return replace.call(value, percentTwenties, '+'); 11 | }, 12 | RFC3986: function (value) { 13 | return value; 14 | } 15 | }, 16 | RFC1738: 'RFC1738', 17 | RFC3986: 'RFC3986' 18 | }; 19 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/qs/lib/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var stringify = require('./stringify'); 4 | var parse = require('./parse'); 5 | var formats = require('./formats'); 6 | 7 | module.exports = { 8 | formats: formats, 9 | parse: parse, 10 | stringify: stringify 11 | }; 12 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/qs/test/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "rules": { 3 | "array-bracket-newline": 0, 4 | "array-element-newline": 0, 5 | "consistent-return": 2, 6 | "function-paren-newline": 0, 7 | "max-lines": 0, 8 | "max-lines-per-function": 0, 9 | "max-nested-callbacks": [2, 3], 10 | "max-statements": 0, 11 | "no-buffer-constructor": 0, 12 | "no-extend-native": 0, 13 | "no-magic-numbers": 0, 14 | "object-curly-newline": 0, 15 | "sort-keys": 0 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/qs/test/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | require('./parse'); 4 | 5 | require('./stringify'); 6 | 7 | require('./utils'); 8 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/range-parser/HISTORY.md: -------------------------------------------------------------------------------- 1 | 1.2.1 / 2019-05-10 2 | ================== 3 | 4 | * Improve error when `str` is not a string 5 | 6 | 1.2.0 / 2016-06-01 7 | ================== 8 | 9 | * Add `combine` option to combine overlapping ranges 10 | 11 | 1.1.0 / 2016-05-13 12 | ================== 13 | 14 | * Fix incorrectly returning -1 when there is at least one valid range 15 | * perf: remove internal function 16 | 17 | 1.0.3 / 2015-10-29 18 | ================== 19 | 20 | * perf: enable strict mode 21 | 22 | 1.0.2 / 2014-09-08 23 | ================== 24 | 25 | * Support Node.js 0.6 26 | 27 | 1.0.1 / 2014-09-07 28 | ================== 29 | 30 | * Move repository to jshttp 31 | 32 | 1.0.0 / 2013-12-11 33 | ================== 34 | 35 | * Add repository to package.json 36 | * Add MIT license 37 | 38 | 0.0.4 / 2012-06-17 39 | ================== 40 | 41 | * Change ret -1 for unsatisfiable and -2 when invalid 42 | 43 | 0.0.3 / 2012-06-17 44 | ================== 45 | 46 | * Fix last-byte-pos default to len - 1 47 | 48 | 0.0.2 / 2012-06-14 49 | ================== 50 | 51 | * Add `.type` 52 | 53 | 0.0.1 / 2012-06-11 54 | ================== 55 | 56 | * Initial release 57 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/range-parser/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2012-2014 TJ Holowaychuk 4 | Copyright (c) 2015-2016 Douglas Christopher Wilson 4 | Copyright (c) 2014-2015 Douglas Christopher Wilson 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in 14 | all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/safe-buffer/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) Feross Aboukhadijeh 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/safe-buffer/index.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable node/no-deprecated-api */ 2 | var buffer = require('buffer') 3 | var Buffer = buffer.Buffer 4 | 5 | // alternative to using Object.keys for old browsers 6 | function copyProps (src, dst) { 7 | for (var key in src) { 8 | dst[key] = src[key] 9 | } 10 | } 11 | if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { 12 | module.exports = buffer 13 | } else { 14 | // Copy properties from require('buffer') 15 | copyProps(buffer, exports) 16 | exports.Buffer = SafeBuffer 17 | } 18 | 19 | function SafeBuffer (arg, encodingOrOffset, length) { 20 | return Buffer(arg, encodingOrOffset, length) 21 | } 22 | 23 | // Copy static methods from Buffer 24 | copyProps(Buffer, SafeBuffer) 25 | 26 | SafeBuffer.from = function (arg, encodingOrOffset, length) { 27 | if (typeof arg === 'number') { 28 | throw new TypeError('Argument must not be a number') 29 | } 30 | return Buffer(arg, encodingOrOffset, length) 31 | } 32 | 33 | SafeBuffer.alloc = function (size, fill, encoding) { 34 | if (typeof size !== 'number') { 35 | throw new TypeError('Argument must be a number') 36 | } 37 | var buf = Buffer(size) 38 | if (fill !== undefined) { 39 | if (typeof encoding === 'string') { 40 | buf.fill(fill, encoding) 41 | } else { 42 | buf.fill(fill) 43 | } 44 | } else { 45 | buf.fill(0) 46 | } 47 | return buf 48 | } 49 | 50 | SafeBuffer.allocUnsafe = function (size) { 51 | if (typeof size !== 'number') { 52 | throw new TypeError('Argument must be a number') 53 | } 54 | return Buffer(size) 55 | } 56 | 57 | SafeBuffer.allocUnsafeSlow = function (size) { 58 | if (typeof size !== 'number') { 59 | throw new TypeError('Argument must be a number') 60 | } 61 | return buffer.SlowBuffer(size) 62 | } 63 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/safe-buffer/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "_from": "safe-buffer@5.1.2", 3 | "_id": "safe-buffer@5.1.2", 4 | "_inBundle": false, 5 | "_integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 6 | "_location": "/safe-buffer", 7 | "_phantomChildren": {}, 8 | "_requested": { 9 | "type": "version", 10 | "registry": true, 11 | "raw": "safe-buffer@5.1.2", 12 | "name": "safe-buffer", 13 | "escapedName": "safe-buffer", 14 | "rawSpec": "5.1.2", 15 | "saveSpec": null, 16 | "fetchSpec": "5.1.2" 17 | }, 18 | "_requiredBy": [ 19 | "/content-disposition", 20 | "/express" 21 | ], 22 | "_resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 23 | "_shasum": "991ec69d296e0313747d59bdfd2b745c35f8828d", 24 | "_spec": "safe-buffer@5.1.2", 25 | "_where": "/Users/timthetic/Desktop/ACM/hackschool-f19/session-2-intro-to-backend/demo/node_modules/express", 26 | "author": { 27 | "name": "Feross Aboukhadijeh", 28 | "email": "feross@feross.org", 29 | "url": "http://feross.org" 30 | }, 31 | "bugs": { 32 | "url": "https://github.com/feross/safe-buffer/issues" 33 | }, 34 | "bundleDependencies": false, 35 | "deprecated": false, 36 | "description": "Safer Node.js Buffer API", 37 | "devDependencies": { 38 | "standard": "*", 39 | "tape": "^4.0.0" 40 | }, 41 | "homepage": "https://github.com/feross/safe-buffer", 42 | "keywords": [ 43 | "buffer", 44 | "buffer allocate", 45 | "node security", 46 | "safe", 47 | "safe-buffer", 48 | "security", 49 | "uninitialized" 50 | ], 51 | "license": "MIT", 52 | "main": "index.js", 53 | "name": "safe-buffer", 54 | "repository": { 55 | "type": "git", 56 | "url": "git://github.com/feross/safe-buffer.git" 57 | }, 58 | "scripts": { 59 | "test": "standard && tape test/*.js" 60 | }, 61 | "types": "index.d.ts", 62 | "version": "5.1.2" 63 | } 64 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/safer-buffer/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Nikita Skovoroda 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/safer-buffer/dangerous.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable node/no-deprecated-api */ 2 | 3 | 'use strict' 4 | 5 | var buffer = require('buffer') 6 | var Buffer = buffer.Buffer 7 | var safer = require('./safer.js') 8 | var Safer = safer.Buffer 9 | 10 | var dangerous = {} 11 | 12 | var key 13 | 14 | for (key in safer) { 15 | if (!safer.hasOwnProperty(key)) continue 16 | dangerous[key] = safer[key] 17 | } 18 | 19 | var Dangereous = dangerous.Buffer = {} 20 | 21 | // Copy Safer API 22 | for (key in Safer) { 23 | if (!Safer.hasOwnProperty(key)) continue 24 | Dangereous[key] = Safer[key] 25 | } 26 | 27 | // Copy those missing unsafe methods, if they are present 28 | for (key in Buffer) { 29 | if (!Buffer.hasOwnProperty(key)) continue 30 | if (Dangereous.hasOwnProperty(key)) continue 31 | Dangereous[key] = Buffer[key] 32 | } 33 | 34 | if (!Dangereous.allocUnsafe) { 35 | Dangereous.allocUnsafe = function (size) { 36 | if (typeof size !== 'number') { 37 | throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size) 38 | } 39 | if (size < 0 || size >= 2 * (1 << 30)) { 40 | throw new RangeError('The value "' + size + '" is invalid for option "size"') 41 | } 42 | return Buffer(size) 43 | } 44 | } 45 | 46 | if (!Dangereous.allocUnsafeSlow) { 47 | Dangereous.allocUnsafeSlow = function (size) { 48 | if (typeof size !== 'number') { 49 | throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size) 50 | } 51 | if (size < 0 || size >= 2 * (1 << 30)) { 52 | throw new RangeError('The value "' + size + '" is invalid for option "size"') 53 | } 54 | return buffer.SlowBuffer(size) 55 | } 56 | } 57 | 58 | module.exports = dangerous 59 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/send/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2012 TJ Holowaychuk 4 | Copyright (c) 2014-2016 Douglas Christopher Wilson 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining 7 | a copy of this software and associated documentation files (the 8 | 'Software'), to deal in the Software without restriction, including 9 | without limitation the rights to use, copy, modify, merge, publish, 10 | distribute, sublicense, and/or sell copies of the Software, and to 11 | permit persons to whom the Software is furnished to do so, subject to 12 | the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be 15 | included in all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 18 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 20 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 21 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 22 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 23 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/send/node_modules/ms/license.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Zeit, Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/send/node_modules/ms/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "_from": "ms@2.1.1", 3 | "_id": "ms@2.1.1", 4 | "_inBundle": false, 5 | "_integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", 6 | "_location": "/send/ms", 7 | "_phantomChildren": {}, 8 | "_requested": { 9 | "type": "version", 10 | "registry": true, 11 | "raw": "ms@2.1.1", 12 | "name": "ms", 13 | "escapedName": "ms", 14 | "rawSpec": "2.1.1", 15 | "saveSpec": null, 16 | "fetchSpec": "2.1.1" 17 | }, 18 | "_requiredBy": [ 19 | "/send" 20 | ], 21 | "_resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 22 | "_shasum": "30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a", 23 | "_spec": "ms@2.1.1", 24 | "_where": "/Users/timthetic/Desktop/ACM/hackschool-f19/session-2-intro-to-backend/demo/node_modules/send", 25 | "bugs": { 26 | "url": "https://github.com/zeit/ms/issues" 27 | }, 28 | "bundleDependencies": false, 29 | "deprecated": false, 30 | "description": "Tiny millisecond conversion utility", 31 | "devDependencies": { 32 | "eslint": "4.12.1", 33 | "expect.js": "0.3.1", 34 | "husky": "0.14.3", 35 | "lint-staged": "5.0.0", 36 | "mocha": "4.0.1" 37 | }, 38 | "eslintConfig": { 39 | "extends": "eslint:recommended", 40 | "env": { 41 | "node": true, 42 | "es6": true 43 | } 44 | }, 45 | "files": [ 46 | "index.js" 47 | ], 48 | "homepage": "https://github.com/zeit/ms#readme", 49 | "license": "MIT", 50 | "lint-staged": { 51 | "*.js": [ 52 | "npm run lint", 53 | "prettier --single-quote --write", 54 | "git add" 55 | ] 56 | }, 57 | "main": "./index", 58 | "name": "ms", 59 | "repository": { 60 | "type": "git", 61 | "url": "git+https://github.com/zeit/ms.git" 62 | }, 63 | "scripts": { 64 | "lint": "eslint lib/* bin/*", 65 | "precommit": "lint-staged", 66 | "test": "mocha tests.js" 67 | }, 68 | "version": "2.1.1" 69 | } 70 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/serve-static/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2010 Sencha Inc. 4 | Copyright (c) 2011 LearnBoost 5 | Copyright (c) 2011 TJ Holowaychuk 6 | Copyright (c) 2014-2016 Douglas Christopher Wilson 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining 9 | a copy of this software and associated documentation files (the 10 | 'Software'), to deal in the Software without restriction, including 11 | without limitation the rights to use, copy, modify, merge, publish, 12 | distribute, sublicense, and/or sell copies of the Software, and to 13 | permit persons to whom the Software is furnished to do so, subject to 14 | the following conditions: 15 | 16 | The above copyright notice and this permission notice shall be 17 | included in all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 20 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 21 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 22 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 23 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 24 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 25 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 26 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/setprototypeof/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015, Wes Todd 2 | 3 | Permission to use, copy, modify, and/or distribute this software for any 4 | purpose with or without fee is hereby granted, provided that the above 5 | copyright notice and this permission notice appear in all copies. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 8 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 9 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 10 | SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 11 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION 12 | OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 13 | CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 14 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/setprototypeof/README.md: -------------------------------------------------------------------------------- 1 | # Polyfill for `Object.setPrototypeOf` 2 | 3 | [![NPM Version](https://img.shields.io/npm/v/setprototypeof.svg)](https://npmjs.org/package/setprototypeof) 4 | [![NPM Downloads](https://img.shields.io/npm/dm/setprototypeof.svg)](https://npmjs.org/package/setprototypeof) 5 | [![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](https://github.com/standard/standard) 6 | 7 | A simple cross platform implementation to set the prototype of an instianted object. Supports all modern browsers and at least back to IE8. 8 | 9 | ## Usage: 10 | 11 | ``` 12 | $ npm install --save setprototypeof 13 | ``` 14 | 15 | ```javascript 16 | var setPrototypeOf = require('setprototypeof') 17 | 18 | var obj = {} 19 | setPrototypeOf(obj, { 20 | foo: function () { 21 | return 'bar' 22 | } 23 | }) 24 | obj.foo() // bar 25 | ``` 26 | 27 | TypeScript is also supported: 28 | 29 | ```typescript 30 | import setPrototypeOf = require('setprototypeof') 31 | ``` 32 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/setprototypeof/index.d.ts: -------------------------------------------------------------------------------- 1 | declare function setPrototypeOf(o: any, proto: object | null): any; 2 | export = setPrototypeOf; 3 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/setprototypeof/index.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | /* eslint no-proto: 0 */ 3 | module.exports = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties) 4 | 5 | function setProtoOf (obj, proto) { 6 | obj.__proto__ = proto 7 | return obj 8 | } 9 | 10 | function mixinProperties (obj, proto) { 11 | for (var prop in proto) { 12 | if (!obj.hasOwnProperty(prop)) { 13 | obj[prop] = proto[prop] 14 | } 15 | } 16 | return obj 17 | } 18 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/setprototypeof/test/index.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | /* eslint-env mocha */ 3 | /* eslint no-proto: 0 */ 4 | var assert = require('assert') 5 | var setPrototypeOf = require('..') 6 | 7 | describe('setProtoOf(obj, proto)', function () { 8 | it('should merge objects', function () { 9 | var obj = { a: 1, b: 2 } 10 | var proto = { b: 3, c: 4 } 11 | var mergeObj = setPrototypeOf(obj, proto) 12 | 13 | if (Object.getPrototypeOf) { 14 | assert.strictEqual(Object.getPrototypeOf(obj), proto) 15 | } else if ({ __proto__: [] } instanceof Array) { 16 | assert.strictEqual(obj.__proto__, proto) 17 | } else { 18 | assert.strictEqual(obj.a, 1) 19 | assert.strictEqual(obj.b, 2) 20 | assert.strictEqual(obj.c, 4) 21 | } 22 | assert.strictEqual(mergeObj, obj) 23 | }) 24 | }) 25 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/statuses/HISTORY.md: -------------------------------------------------------------------------------- 1 | 1.5.0 / 2018-03-27 2 | ================== 3 | 4 | * Add `103 Early Hints` 5 | 6 | 1.4.0 / 2017-10-20 7 | ================== 8 | 9 | * Add `STATUS_CODES` export 10 | 11 | 1.3.1 / 2016-11-11 12 | ================== 13 | 14 | * Fix return type in JSDoc 15 | 16 | 1.3.0 / 2016-05-17 17 | ================== 18 | 19 | * Add `421 Misdirected Request` 20 | * perf: enable strict mode 21 | 22 | 1.2.1 / 2015-02-01 23 | ================== 24 | 25 | * Fix message for status 451 26 | - `451 Unavailable For Legal Reasons` 27 | 28 | 1.2.0 / 2014-09-28 29 | ================== 30 | 31 | * Add `208 Already Repored` 32 | * Add `226 IM Used` 33 | * Add `306 (Unused)` 34 | * Add `415 Unable For Legal Reasons` 35 | * Add `508 Loop Detected` 36 | 37 | 1.1.1 / 2014-09-24 38 | ================== 39 | 40 | * Add missing 308 to `codes.json` 41 | 42 | 1.1.0 / 2014-09-21 43 | ================== 44 | 45 | * Add `codes.json` for universal support 46 | 47 | 1.0.4 / 2014-08-20 48 | ================== 49 | 50 | * Package cleanup 51 | 52 | 1.0.3 / 2014-06-08 53 | ================== 54 | 55 | * Add 308 to `.redirect` category 56 | 57 | 1.0.2 / 2014-03-13 58 | ================== 59 | 60 | * Add `.retry` category 61 | 62 | 1.0.1 / 2014-03-12 63 | ================== 64 | 65 | * Initial release 66 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/statuses/LICENSE: -------------------------------------------------------------------------------- 1 | 2 | The MIT License (MIT) 3 | 4 | Copyright (c) 2014 Jonathan Ong 5 | Copyright (c) 2016 Douglas Christopher Wilson 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/toidentifier/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2016 Douglas Christopher Wilson 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/toidentifier/README.md: -------------------------------------------------------------------------------- 1 | # toidentifier 2 | 3 | [![NPM Version][npm-image]][npm-url] 4 | [![NPM Downloads][downloads-image]][downloads-url] 5 | [![Build Status][travis-image]][travis-url] 6 | [![Test Coverage][codecov-image]][codecov-url] 7 | 8 | > Convert a string of words to a JavaScript identifier 9 | 10 | ## Install 11 | 12 | This is a [Node.js](https://nodejs.org/en/) module available through the 13 | [npm registry](https://www.npmjs.com/). Installation is done using the 14 | [`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): 15 | 16 | ```bash 17 | $ npm install toidentifier 18 | ``` 19 | 20 | ## Example 21 | 22 | ```js 23 | var toIdentifier = require('toidentifier') 24 | 25 | console.log(toIdentifier('Bad Request')) 26 | // => "BadRequest" 27 | ``` 28 | 29 | ## API 30 | 31 | This CommonJS module exports a single default function: `toIdentifier`. 32 | 33 | ### toIdentifier(string) 34 | 35 | Given a string as the argument, it will be transformed according to 36 | the following rules and the new string will be returned: 37 | 38 | 1. Split into words separated by space characters (`0x20`). 39 | 2. Upper case the first character of each word. 40 | 3. Join the words together with no separator. 41 | 4. Remove all non-word (`[0-9a-z_]`) characters. 42 | 43 | ## License 44 | 45 | [MIT](LICENSE) 46 | 47 | [codecov-image]: https://img.shields.io/codecov/c/github/component/toidentifier.svg 48 | [codecov-url]: https://codecov.io/gh/component/toidentifier 49 | [downloads-image]: https://img.shields.io/npm/dm/toidentifier.svg 50 | [downloads-url]: https://npmjs.org/package/toidentifier 51 | [npm-image]: https://img.shields.io/npm/v/toidentifier.svg 52 | [npm-url]: https://npmjs.org/package/toidentifier 53 | [travis-image]: https://img.shields.io/travis/component/toidentifier/master.svg 54 | [travis-url]: https://travis-ci.org/component/toidentifier 55 | 56 | 57 | ## 58 | 59 | [npm]: https://www.npmjs.com/ 60 | 61 | [yarn]: https://yarnpkg.com/ 62 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/toidentifier/index.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * toidentifier 3 | * Copyright(c) 2016 Douglas Christopher Wilson 4 | * MIT Licensed 5 | */ 6 | 7 | /** 8 | * Module exports. 9 | * @public 10 | */ 11 | 12 | module.exports = toIdentifier 13 | 14 | /** 15 | * Trasform the given string into a JavaScript identifier 16 | * 17 | * @param {string} str 18 | * @returns {string} 19 | * @public 20 | */ 21 | 22 | function toIdentifier (str) { 23 | return str 24 | .split(' ') 25 | .map(function (token) { 26 | return token.slice(0, 1).toUpperCase() + token.slice(1) 27 | }) 28 | .join('') 29 | .replace(/[^ _0-9a-z]/gi, '') 30 | } 31 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/type-is/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2014 Jonathan Ong 4 | Copyright (c) 2014-2015 Douglas Christopher Wilson 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining 7 | a copy of this software and associated documentation files (the 8 | 'Software'), to deal in the Software without restriction, including 9 | without limitation the rights to use, copy, modify, merge, publish, 10 | distribute, sublicense, and/or sell copies of the Software, and to 11 | permit persons to whom the Software is furnished to do so, subject to 12 | the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be 15 | included in all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 18 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 20 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 21 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 22 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 23 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/unpipe/HISTORY.md: -------------------------------------------------------------------------------- 1 | 1.0.0 / 2015-06-14 2 | ================== 3 | 4 | * Initial release 5 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/unpipe/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2015 Douglas Christopher Wilson 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | 'Software'), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/unpipe/README.md: -------------------------------------------------------------------------------- 1 | # unpipe 2 | 3 | [![NPM Version][npm-image]][npm-url] 4 | [![NPM Downloads][downloads-image]][downloads-url] 5 | [![Node.js Version][node-image]][node-url] 6 | [![Build Status][travis-image]][travis-url] 7 | [![Test Coverage][coveralls-image]][coveralls-url] 8 | 9 | Unpipe a stream from all destinations. 10 | 11 | ## Installation 12 | 13 | ```sh 14 | $ npm install unpipe 15 | ``` 16 | 17 | ## API 18 | 19 | ```js 20 | var unpipe = require('unpipe') 21 | ``` 22 | 23 | ### unpipe(stream) 24 | 25 | Unpipes all destinations from a given stream. With stream 2+, this is 26 | equivalent to `stream.unpipe()`. When used with streams 1 style streams 27 | (typically Node.js 0.8 and below), this module attempts to undo the 28 | actions done in `stream.pipe(dest)`. 29 | 30 | ## License 31 | 32 | [MIT](LICENSE) 33 | 34 | [npm-image]: https://img.shields.io/npm/v/unpipe.svg 35 | [npm-url]: https://npmjs.org/package/unpipe 36 | [node-image]: https://img.shields.io/node/v/unpipe.svg 37 | [node-url]: http://nodejs.org/download/ 38 | [travis-image]: https://img.shields.io/travis/stream-utils/unpipe.svg 39 | [travis-url]: https://travis-ci.org/stream-utils/unpipe 40 | [coveralls-image]: https://img.shields.io/coveralls/stream-utils/unpipe.svg 41 | [coveralls-url]: https://coveralls.io/r/stream-utils/unpipe?branch=master 42 | [downloads-image]: https://img.shields.io/npm/dm/unpipe.svg 43 | [downloads-url]: https://npmjs.org/package/unpipe 44 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/unpipe/index.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * unpipe 3 | * Copyright(c) 2015 Douglas Christopher Wilson 4 | * MIT Licensed 5 | */ 6 | 7 | 'use strict' 8 | 9 | /** 10 | * Module exports. 11 | * @public 12 | */ 13 | 14 | module.exports = unpipe 15 | 16 | /** 17 | * Determine if there are Node.js pipe-like data listeners. 18 | * @private 19 | */ 20 | 21 | function hasPipeDataListeners(stream) { 22 | var listeners = stream.listeners('data') 23 | 24 | for (var i = 0; i < listeners.length; i++) { 25 | if (listeners[i].name === 'ondata') { 26 | return true 27 | } 28 | } 29 | 30 | return false 31 | } 32 | 33 | /** 34 | * Unpipe a stream from all destinations. 35 | * 36 | * @param {object} stream 37 | * @public 38 | */ 39 | 40 | function unpipe(stream) { 41 | if (!stream) { 42 | throw new TypeError('argument stream is required') 43 | } 44 | 45 | if (typeof stream.unpipe === 'function') { 46 | // new-style 47 | stream.unpipe() 48 | return 49 | } 50 | 51 | // Node.js 0.8 hack 52 | if (!hasPipeDataListeners(stream)) { 53 | return 54 | } 55 | 56 | var listener 57 | var listeners = stream.listeners('close') 58 | 59 | for (var i = 0; i < listeners.length; i++) { 60 | listener = listeners[i] 61 | 62 | if (listener.name !== 'cleanup' && listener.name !== 'onclose') { 63 | continue 64 | } 65 | 66 | // invoke the listener 67 | listener.call(stream) 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/utils-merge/.npmignore: -------------------------------------------------------------------------------- 1 | CONTRIBUTING.md 2 | Makefile 3 | docs/ 4 | examples/ 5 | reports/ 6 | test/ 7 | 8 | .jshintrc 9 | .travis.yml 10 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/utils-merge/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2013-2017 Jared Hanson 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/utils-merge/README.md: -------------------------------------------------------------------------------- 1 | # utils-merge 2 | 3 | [![Version](https://img.shields.io/npm/v/utils-merge.svg?label=version)](https://www.npmjs.com/package/utils-merge) 4 | [![Build](https://img.shields.io/travis/jaredhanson/utils-merge.svg)](https://travis-ci.org/jaredhanson/utils-merge) 5 | [![Quality](https://img.shields.io/codeclimate/github/jaredhanson/utils-merge.svg?label=quality)](https://codeclimate.com/github/jaredhanson/utils-merge) 6 | [![Coverage](https://img.shields.io/coveralls/jaredhanson/utils-merge.svg)](https://coveralls.io/r/jaredhanson/utils-merge) 7 | [![Dependencies](https://img.shields.io/david/jaredhanson/utils-merge.svg)](https://david-dm.org/jaredhanson/utils-merge) 8 | 9 | 10 | Merges the properties from a source object into a destination object. 11 | 12 | ## Install 13 | 14 | ```bash 15 | $ npm install utils-merge 16 | ``` 17 | 18 | ## Usage 19 | 20 | ```javascript 21 | var a = { foo: 'bar' } 22 | , b = { bar: 'baz' }; 23 | 24 | merge(a, b); 25 | // => { foo: 'bar', bar: 'baz' } 26 | ``` 27 | 28 | ## License 29 | 30 | [The MIT License](http://opensource.org/licenses/MIT) 31 | 32 | Copyright (c) 2013-2017 Jared Hanson <[http://jaredhanson.net/](http://jaredhanson.net/)> 33 | 34 | Sponsor 35 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/utils-merge/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Merge object b with object a. 3 | * 4 | * var a = { foo: 'bar' } 5 | * , b = { bar: 'baz' }; 6 | * 7 | * merge(a, b); 8 | * // => { foo: 'bar', bar: 'baz' } 9 | * 10 | * @param {Object} a 11 | * @param {Object} b 12 | * @return {Object} 13 | * @api public 14 | */ 15 | 16 | exports = module.exports = function(a, b){ 17 | if (a && b) { 18 | for (var key in b) { 19 | a[key] = b[key]; 20 | } 21 | } 22 | return a; 23 | }; 24 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/utils-merge/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "_from": "utils-merge@1.0.1", 3 | "_id": "utils-merge@1.0.1", 4 | "_inBundle": false, 5 | "_integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", 6 | "_location": "/utils-merge", 7 | "_phantomChildren": {}, 8 | "_requested": { 9 | "type": "version", 10 | "registry": true, 11 | "raw": "utils-merge@1.0.1", 12 | "name": "utils-merge", 13 | "escapedName": "utils-merge", 14 | "rawSpec": "1.0.1", 15 | "saveSpec": null, 16 | "fetchSpec": "1.0.1" 17 | }, 18 | "_requiredBy": [ 19 | "/express" 20 | ], 21 | "_resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 22 | "_shasum": "9f95710f50a267947b2ccc124741c1028427e713", 23 | "_spec": "utils-merge@1.0.1", 24 | "_where": "/Users/timthetic/Desktop/ACM/hackschool-f19/session-2-intro-to-backend/demo/node_modules/express", 25 | "author": { 26 | "name": "Jared Hanson", 27 | "email": "jaredhanson@gmail.com", 28 | "url": "http://www.jaredhanson.net/" 29 | }, 30 | "bugs": { 31 | "url": "http://github.com/jaredhanson/utils-merge/issues" 32 | }, 33 | "bundleDependencies": false, 34 | "dependencies": {}, 35 | "deprecated": false, 36 | "description": "merge() utility function", 37 | "devDependencies": { 38 | "chai": "1.x.x", 39 | "make-node": "0.3.x", 40 | "mocha": "1.x.x" 41 | }, 42 | "engines": { 43 | "node": ">= 0.4.0" 44 | }, 45 | "homepage": "https://github.com/jaredhanson/utils-merge#readme", 46 | "keywords": [ 47 | "util" 48 | ], 49 | "license": "MIT", 50 | "licenses": [ 51 | { 52 | "type": "MIT", 53 | "url": "http://opensource.org/licenses/MIT" 54 | } 55 | ], 56 | "main": "./index", 57 | "name": "utils-merge", 58 | "repository": { 59 | "type": "git", 60 | "url": "git://github.com/jaredhanson/utils-merge.git" 61 | }, 62 | "scripts": { 63 | "test": "mocha --reporter spec --require test/bootstrap/node test/*.test.js" 64 | }, 65 | "version": "1.0.1" 66 | } 67 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/vary/HISTORY.md: -------------------------------------------------------------------------------- 1 | 1.1.2 / 2017-09-23 2 | ================== 3 | 4 | * perf: improve header token parsing speed 5 | 6 | 1.1.1 / 2017-03-20 7 | ================== 8 | 9 | * perf: hoist regular expression 10 | 11 | 1.1.0 / 2015-09-29 12 | ================== 13 | 14 | * Only accept valid field names in the `field` argument 15 | - Ensures the resulting string is a valid HTTP header value 16 | 17 | 1.0.1 / 2015-07-08 18 | ================== 19 | 20 | * Fix setting empty header from empty `field` 21 | * perf: enable strict mode 22 | * perf: remove argument reassignments 23 | 24 | 1.0.0 / 2014-08-10 25 | ================== 26 | 27 | * Accept valid `Vary` header string as `field` 28 | * Add `vary.append` for low-level string manipulation 29 | * Move to `jshttp` orgainzation 30 | 31 | 0.1.0 / 2014-06-05 32 | ================== 33 | 34 | * Support array of fields to set 35 | 36 | 0.0.0 / 2014-06-04 37 | ================== 38 | 39 | * Initial release 40 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/node_modules/vary/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2014-2017 Douglas Christopher Wilson 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | 'Software'), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "demo", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "express": "^4.17.1" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /session-2-intro-to-backend/demo/sum.js: -------------------------------------------------------------------------------- 1 | const sum = (x, y) => { 2 | return x + y; 3 | } 4 | 5 | console.log(sum(1, 2)); -------------------------------------------------------------------------------- /session-2-intro-to-backend/images/const-assignment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-2-intro-to-backend/images/const-assignment.png -------------------------------------------------------------------------------- /session-2-intro-to-backend/images/folder-navigation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-2-intro-to-backend/images/folder-navigation.png -------------------------------------------------------------------------------- /session-2-intro-to-backend/images/values.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-2-intro-to-backend/images/values.png -------------------------------------------------------------------------------- /session-3-backend-api/demo/index.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const app = express(); 3 | 4 | app.get('/random', (request, response) => { 5 | const myJSON = { 6 | number: Math.random() 7 | }; 8 | response.json(myJSON); 9 | }); 10 | 11 | app.use(express.json()); 12 | app.post('/name', (request, response) => { 13 | const body = request.body; 14 | if (body.name === undefined ) { 15 | response.status(400); 16 | const wrong = { 17 | message: "Input JSON does not contain key 'name'" 18 | }; 19 | response.json(wrong); 20 | return; 21 | } 22 | else { 23 | const sayHi = "Hello " + body.name; 24 | console.log(sayHi); 25 | const resJSON = { 26 | message: sayHi 27 | }; 28 | response.json(resJSON); 29 | } 30 | }); 31 | 32 | 33 | app.listen(3000); 34 | console.log("Yay our server is running! Access it through localhost:3000"); 35 | -------------------------------------------------------------------------------- /session-3-backend-api/images/400postman.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-3-backend-api/images/400postman.png -------------------------------------------------------------------------------- /session-3-backend-api/images/error404.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-3-backend-api/images/error404.png -------------------------------------------------------------------------------- /session-3-backend-api/images/memepage.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-3-backend-api/images/memepage.jpg -------------------------------------------------------------------------------- /session-3-backend-api/images/post.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-3-backend-api/images/post.png -------------------------------------------------------------------------------- /session-3-backend-api/images/postmanResTab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-3-backend-api/images/postmanResTab.png -------------------------------------------------------------------------------- /session-3-backend-api/images/postmeme.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-3-backend-api/images/postmeme.jpg -------------------------------------------------------------------------------- /session-3-frontend-javascript-and-the-dom/demo/inConsole.js: -------------------------------------------------------------------------------- 1 | // Assign the element with the id "website" to the variable w 2 | const w = document.getElementById("website"); 3 | 4 | // Add some HTML to the element 5 | w.innerHTML = "bread "; 6 | 7 | // Change the style of the element 8 | w.style.color = "red"; 9 | 10 | // Change all table rows to a new string 11 | const trCollection = document.querySelectorAll("tr"); 12 | for (let tr of trCollection) { 13 | tr.innerHTML = "

let's get this bread

"; 14 | } 15 | 16 | // Add a new div to the element with id 'website' 17 | const divElement = document.createElement("div"); 18 | divElement.innerHTML = "

let's obtain this grain

"; 19 | w.appendChild(divElement); 20 | 21 | // Add an event listener that logs 'Clicked!' 22 | w.addEventListener("click", () => { 23 | console.log("Clicked!"); 24 | }); 25 | 26 | // Add event listener that changes what was clicked to blue 27 | w.addEventListener("click", e => { 28 | console.log(e.target); 29 | e.target.style.color = "blue"; 30 | }); 31 | -------------------------------------------------------------------------------- /session-3-frontend-javascript-and-the-dom/demo/script.js: -------------------------------------------------------------------------------- 1 | const images = document.getElementsByTagName("img"); 2 | 3 | for (let image of images) { 4 | image.addEventListener("click", e => { 5 | if (e.target.classList.contains("selected")) { 6 | for (let i of images) { 7 | i.style.opacity = 1.0; 8 | } 9 | e.target.classList.remove("selected"); 10 | } else { 11 | for (let i of images) { 12 | i.style.opacity = 0.5; 13 | } 14 | e.target.style.opacity = 1.0; 15 | e.target.classList.add("selected"); 16 | } 17 | }); 18 | } 19 | -------------------------------------------------------------------------------- /session-3-frontend-javascript-and-the-dom/demo/style.css: -------------------------------------------------------------------------------- 1 | img { 2 | height: 120px; 3 | } 4 | -------------------------------------------------------------------------------- /session-3-frontend-javascript-and-the-dom/images/breadgallery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-3-frontend-javascript-and-the-dom/images/breadgallery.png -------------------------------------------------------------------------------- /session-3-frontend-javascript-and-the-dom/images/documentget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-3-frontend-javascript-and-the-dom/images/documentget.png -------------------------------------------------------------------------------- /session-3-frontend-javascript-and-the-dom/images/dom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-3-frontend-javascript-and-the-dom/images/dom.png -------------------------------------------------------------------------------- /session-3-frontend-javascript-and-the-dom/images/helpfulfunctions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-3-frontend-javascript-and-the-dom/images/helpfulfunctions.png -------------------------------------------------------------------------------- /session-3-frontend-javascript-and-the-dom/images/html.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-3-frontend-javascript-and-the-dom/images/html.png -------------------------------------------------------------------------------- /session-4-css-layout/images/absolute.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-4-css-layout/images/absolute.png -------------------------------------------------------------------------------- /session-4-css-layout/images/displayblock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-4-css-layout/images/displayblock.png -------------------------------------------------------------------------------- /session-4-css-layout/images/done.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-4-css-layout/images/done.png -------------------------------------------------------------------------------- /session-4-css-layout/images/hi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-4-css-layout/images/hi.png -------------------------------------------------------------------------------- /session-4-css-layout/images/inlineblock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-4-css-layout/images/inlineblock.png -------------------------------------------------------------------------------- /session-4-css-layout/images/relative.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-4-css-layout/images/relative.png -------------------------------------------------------------------------------- /session-4-css-layout/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Bunnies 5 | 6 | 7 | 8 |
9 |
10 |

bunny hop party

11 | 12 | 13 | 14 | 15 | 16 |
17 |
18 |

hop hop hop

19 | 20 | 21 | 22 | 23 | 24 |
25 |
26 | 27 | 28 | -------------------------------------------------------------------------------- /session-4-css-layout/project/style.css: -------------------------------------------------------------------------------- 1 | html { 2 | height: 100%; 3 | } 4 | 5 | body { 6 | background-color: black; 7 | height: 100%; 8 | display: flex; 9 | justify-content: space-around; 10 | } 11 | 12 | .h-container { 13 | display: flex; 14 | justify-content: space-between; 15 | height: 300px; 16 | } 17 | 18 | .i-container { 19 | display: flex; 20 | flex-direction: column; 21 | align-items: center; 22 | height: 300px; 23 | } 24 | 25 | .vertical-container { 26 | display: flex; 27 | flex-direction: column; 28 | } 29 | 30 | .middle-container { 31 | display: flex; 32 | align-items: center; 33 | } 34 | 35 | .middle-long-container { 36 | display: flex; 37 | flex-direction: column; 38 | align-items: center; 39 | } 40 | 41 | img { 42 | height:100px; 43 | } -------------------------------------------------------------------------------- /session-4-css-layout/style.css: -------------------------------------------------------------------------------- 1 | html { 2 | height: 100%; 3 | } 4 | body { 5 | background-color: black; 6 | height: 100%; 7 | } 8 | 9 | h1 { 10 | position: absolute; 11 | color: white; 12 | font-family: 'Comic Sans MS'; 13 | } 14 | 15 | img { 16 | height: 100px; 17 | width: 100px; 18 | animation: jump 1s linear infinite; 19 | } 20 | 21 | .bunny-container { 22 | height: 300px; 23 | display: flex; 24 | justify-content: space-around; 25 | align-items: center; 26 | flex: 0 1 50%; 27 | } 28 | 29 | .bunny-garden { 30 | height: 100%; 31 | display: flex; 32 | flex-wrap: wrap; 33 | } 34 | 35 | img:nth-child(odd) { 36 | align-self: flex-end; 37 | } 38 | 39 | img:nth-child(even) { 40 | align-self: flex-start; 41 | } 42 | 43 | @media (max-width: 1000px) { 44 | .bunny-container { 45 | flex: 0 1 100%; 46 | } 47 | } 48 | 49 | @keyframes jump { 50 | 0% {transform: translate3d(0,0,0) scale3d(1,1,1);} 51 | 20% {transform: translate3d(0,30%,0) scale3d(.7,1.5,1);} 52 | 100% {transform: translate3d(0,100%,0) scale3d(1.5,.7,1);} 53 | } -------------------------------------------------------------------------------- /session-5-backend-async/assets/async.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-5-backend-async/assets/async.png -------------------------------------------------------------------------------- /session-5-backend-async/assets/linkCooking.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-5-backend-async/assets/linkCooking.gif -------------------------------------------------------------------------------- /session-5-backend-async/assets/sidebyside.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-5-backend-async/assets/sidebyside.png -------------------------------------------------------------------------------- /session-5-backend-async/assets/sync.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-5-backend-async/assets/sync.png -------------------------------------------------------------------------------- /session-5-backend-async/example-files/1-slowPasta.js: -------------------------------------------------------------------------------- 1 | // To explain async functions, we're gonna start off a cooking lesson. We'll be cooking pasta with veggies, which you will hopefully do many times in your college career. 2 | 3 | // So first you have to boil the water. Let's say we live on some other planet where this only takes 3 seconds: 4 | 5 | function boilWater() { 6 | console.log('Start boiling!'); 7 | const start = Date.now(); 8 | while (Date.now() < start + 3000) {} 9 | console.log('Water boiled!'); 10 | } 11 | 12 | // And then let's say you can wash your veggies in 1 second: 13 | 14 | function washVeggies() { 15 | console.log('Start washing!'); 16 | const start = Date.now(); 17 | while (Date.now() < start + 2000) {} 18 | console.log('Veggies washed!'); 19 | } 20 | 21 | // And let's write functions to add our pasta and veggies: 22 | 23 | function addPasta() { 24 | console.log('Pasta in da wata~'); 25 | } 26 | 27 | function addVeggies() { 28 | console.log('Veggies in da pan~'); 29 | } 30 | 31 | // So if we call these functions: 32 | boilWater(); 33 | addPasta(); 34 | washVeggies(); 35 | addVeggies(); 36 | 37 | // This should happen: 38 | // Start boiling! (wait 3 seconds) 39 | // Water boiled! 40 | // Pasta in da wata~ 41 | // Start washing! (wait 2 seconds) 42 | // Veggies washed! 43 | // Veggies in da pan~ 44 | 45 | -------------------------------------------------------------------------------- /session-5-backend-async/example-files/2-setTimeoutPasta.js: -------------------------------------------------------------------------------- 1 | // This is going to take a total of 4 seconds, but really, it did not have to take that long. 2 | 3 | // Are you going to wait for your water to boil before you start washing your veggies? 4 | 5 | // No! Because that's stupid, and as engineers and cooks, we're all about efficiency here. 6 | 7 | // What we want to do is start boiling the water, and while the water is boiling, we start washing the veggies. 8 | 9 | // This is what asynchronous code is for. Using a function called setTimeout, let's try to wash the veggies while the water is boiling. 10 | 11 | function boilWater() { 12 | console.log('Start boiling!'); 13 | setTimeout(() => { 14 | console.log('Water boiled!'); 15 | }, 3000); 16 | } 17 | 18 | function washVeggies() { 19 | console.log('Start washing!'); 20 | const start = Date.now(); 21 | while (Date.now() < start + 2000) {} 22 | console.log('Veggies washed!'); 23 | } 24 | 25 | function addPasta() { 26 | console.log('Pasta in da wata~'); 27 | } 28 | 29 | function addVeggies() { 30 | console.log('Veggies in da pan~'); 31 | } 32 | 33 | // setTimeout takes two arguments, a function and a number of milliseconds. 34 | // Unlike the implementation we had before, your computer will not hang while we're waiting for the water to boil. 35 | // It is free to do other things. 36 | // After 3000 milliseconds, the function that we passed into setTimeout will be called. Note that when we pass in a function like this, the function is called a "callback". 37 | 38 | // Okay great! Now we can wash our veggies as we boil our water: 39 | // boilWater(); 40 | // washVeggies(); 41 | 42 | // But what do you think will happen if we do this? 43 | boilWater(); 44 | washVeggies(); 45 | addPasta(); 46 | 47 | // Oh no, we put our pasta in the water before if boiled. A cooking catastrophe! -------------------------------------------------------------------------------- /session-5-backend-async/example-files/3-promisePasta.js: -------------------------------------------------------------------------------- 1 | // Let's have boilWater return a Promise object. We'll see how to use this when we call the function. 2 | 3 | function boilWater() { 4 | console.log('Start boiling!'); 5 | return new Promise((resolve, reject) => { 6 | setTimeout(() => { 7 | console.log('Water boiled!'); 8 | resolve(); 9 | }, 3000); 10 | }); 11 | } 12 | 13 | function washVeggies() { 14 | console.log('Start washing!'); 15 | return new Promise((resolve, reject) => { 16 | setTimeout(() => { 17 | console.log('Veggies washed!'); 18 | resolve(); 19 | }, 2000); 20 | }); 21 | } 22 | 23 | function addPasta() { 24 | console.log('Pasta in da wata~'); 25 | } 26 | 27 | function addVeggies() { 28 | console.log('Veggies in da pan~'); 29 | } 30 | 31 | // To fix this, we use .then() to guarantee that our water is boiled before we add the pasta. 32 | // addPasta will not be called unless the Promise we returned in boilWater is resolved. 33 | boilWater().then(() => { 34 | addPasta(); 35 | }); 36 | washVeggies().then(() => { 37 | addVeggies(); 38 | }); 39 | 40 | // We can also use async/await syntax to do the same thing: 41 | async function main() { 42 | await boilWater(); 43 | addPasta(); 44 | await washVeggies(); 45 | addVeggies(); 46 | } 47 | main(); -------------------------------------------------------------------------------- /session-5-backend-async/example-files/4-parallelPasta.js: -------------------------------------------------------------------------------- 1 | function boilWater() { 2 | console.log('Start boiling!'); 3 | return new Promise((resolve, reject) => { 4 | setTimeout(() => { 5 | console.log('Water boiled!'); 6 | resolve(); 7 | }, 3000); 8 | }); 9 | } 10 | 11 | function washVeggies() { 12 | console.log('Start washing!'); 13 | return new Promise((resolve, reject) => { 14 | setTimeout(() => { 15 | console.log('Veggies washed!'); 16 | resolve('Success!'); 17 | }, 2000); 18 | }); 19 | } 20 | 21 | function addPasta() { 22 | console.log('Pasta in da wata~'); 23 | } 24 | 25 | function addVeggies() { 26 | console.log('Veggies in da pan~'); 27 | } 28 | 29 | async function main() { 30 | const allPromises = []; 31 | allPromises.push(boilWater()); 32 | allPromises.push(washVeggies()); 33 | await Promise.all(allPromises); 34 | addPasta(); 35 | addVeggies(); 36 | } 37 | 38 | main(); -------------------------------------------------------------------------------- /session-5-backend-async/example-files/5-lotsOfPots.js: -------------------------------------------------------------------------------- 1 | function boilWater() { 2 | console.log('Start boiling!'); 3 | return new Promise((resolve, reject) => { 4 | setTimeout(() => { 5 | console.log('Water boiled!'); 6 | resolve(); 7 | }, 3000); 8 | }); 9 | } 10 | 11 | async function main() { 12 | const allPromises = []; 13 | for (let i = 0; i < 5; i++) { 14 | allPromises.push(boilWater()); 15 | } 16 | await Promise.all(allPromises); 17 | console.log('Done!') 18 | } 19 | 20 | main(); -------------------------------------------------------------------------------- /session-5-backend-async/example-files/6-resolveValue.js: -------------------------------------------------------------------------------- 1 | function boilWater() { 2 | console.log('Start boiling!'); 3 | return new Promise((resolve, reject) => { 4 | setTimeout(() => { 5 | console.log('Water boiled!'); 6 | resolve('Success!'); 7 | }, 3000); 8 | }); 9 | } 10 | 11 | async function main() { 12 | const message = await boilWater(); 13 | console.log(message); 14 | } 15 | 16 | main(); -------------------------------------------------------------------------------- /session-5-backend-async/example-files/7-jokes.js: -------------------------------------------------------------------------------- 1 | const fetch = require('node-fetch'); 2 | 3 | // fetch returns a promise that is resolved when the first piece of data comes back from the server. 4 | // res.json() returns a promise that is resolved to the json data from the server 5 | async function getJokeFromServer() { 6 | const res = await fetch('http://api.icndb.com/jokes/random'); 7 | return res.json(); 8 | } 9 | 10 | async function main() { 11 | const jsonFromServer = await getJokeFromServer(); 12 | // Uncomment the following lines if you want to see the json data you got from the server 13 | // console.log('This is from the server:'); 14 | // console.log(fromServer); 15 | console.log(jsonFromServer.value.joke); 16 | } 17 | 18 | main(); -------------------------------------------------------------------------------- /session-5-backend-async/example-files/8-lotsOfJokes.js: -------------------------------------------------------------------------------- 1 | const fetch = require('node-fetch'); 2 | 3 | // fetch returns a promise that is resolved when the first piece of data comes back from the server. 4 | // res.json() returns a promise that is resolved to the json data from the server 5 | async function getJokeFromServer() { 6 | const res = await fetch('http://api.icndb.com/jokes/random'); 7 | return res.json(); 8 | } 9 | 10 | async function main() { 11 | const allPromises = []; 12 | for (let i = 0; i < 5; i++) { 13 | allPromises.push(getJokeFromServer()); 14 | } 15 | const allJokes = await Promise.all(allPromises); 16 | for (const jsonFromServer of allJokes) { 17 | console.log(jsonFromServer.value.joke); 18 | } 19 | } 20 | 21 | main(); -------------------------------------------------------------------------------- /session-5-backend-async/example-files/index.js: -------------------------------------------------------------------------------- 1 | const fetch = require('node-fetch'); 2 | const express = require('express'); 3 | const app = express(); 4 | 5 | async function getJokeFromServer() { 6 | const res = await fetch('http://api.icndb.com/jokes/random'); 7 | return res.json(); 8 | } 9 | 10 | app.get('/', async (req, res) => { 11 | const jsonFromServer = await getJokeFromServer(); 12 | const joke = jsonFromServer.value.joke; 13 | res.end(joke); 14 | }); 15 | 16 | app.listen(3000); 17 | -------------------------------------------------------------------------------- /session-5-frontend-intro-to-react/images/fbpost.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-5-frontend-intro-to-react/images/fbpost.png -------------------------------------------------------------------------------- /session-5-frontend-intro-to-react/images/reactdom-render.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-5-frontend-intro-to-react/images/reactdom-render.png -------------------------------------------------------------------------------- /session-6-backend-database/images/demo-db-organization.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-6-backend-database/images/demo-db-organization.png -------------------------------------------------------------------------------- /session-6-backend-database/images/firebase-console.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-6-backend-database/images/firebase-console.png -------------------------------------------------------------------------------- /session-6-backend-database/images/firebase-create-db.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-6-backend-database/images/firebase-create-db.gif -------------------------------------------------------------------------------- /session-6-backend-database/images/firebase-init.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-6-backend-database/images/firebase-init.png -------------------------------------------------------------------------------- /session-6-backend-database/images/firebase-organization.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-6-backend-database/images/firebase-organization.png -------------------------------------------------------------------------------- /session-6-backend-database/images/firebase-service-account.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-6-backend-database/images/firebase-service-account.gif -------------------------------------------------------------------------------- /session-6-backend-database/images/goldfish-server.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-6-backend-database/images/goldfish-server.png -------------------------------------------------------------------------------- /session-6-backend-database/images/server-2-database.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-6-backend-database/images/server-2-database.png -------------------------------------------------------------------------------- /session-6-frontend-more-on-react/style.css: -------------------------------------------------------------------------------- 1 | .play-container { 2 | display: flex; 3 | flex-direction: column; 4 | justify-content: space-around; 5 | align-items: center; 6 | height: 100vh; 7 | } 8 | 9 | .dialogue-container { 10 | display: flex; 11 | justify-content: center; 12 | align-items: center; 13 | height: 100px; 14 | width: 100vw; 15 | margin-top: 10px; 16 | } 17 | 18 | .dialogue-image { 19 | height: 100px; 20 | width: 100px; 21 | } 22 | 23 | .dialogue-words { 24 | height: 100%; 25 | width: 80%; 26 | background-color: lightgray; 27 | display: flex; 28 | flex-direction: column; 29 | align-items: center; 30 | } 31 | 32 | .selected { 33 | color: black; 34 | background-color: lightgreen; 35 | } 36 | 37 | .unselected { 38 | color: black; 39 | } -------------------------------------------------------------------------------- /session-7-fullstack-bringing-it-together/assets/basic_html_page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-7-fullstack-bringing-it-together/assets/basic_html_page.png -------------------------------------------------------------------------------- /session-7-fullstack-bringing-it-together/assets/front_vs_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-7-fullstack-bringing-it-together/assets/front_vs_back.png -------------------------------------------------------------------------------- /session-7-fullstack-bringing-it-together/assets/html_page_styled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-7-fullstack-bringing-it-together/assets/html_page_styled.png -------------------------------------------------------------------------------- /session-7-fullstack-bringing-it-together/assets/react_page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uclaacm/hackschool-f19/89324b4daed6fd7cb7a3f82ac1ab21788789cba4/session-7-fullstack-bringing-it-together/assets/react_page.png -------------------------------------------------------------------------------- /session-7-fullstack-bringing-it-together/example/1_static_page/static_page.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Tim MTG 4 | 5 | 6 |

Tim's Favorite Magic Cards

7 |
8 |

Kykar, Wind's Fury

9 | 10 |
11 |
12 |

Niv-Mizzet, Parun

13 | 14 |
15 |
16 |

Ral, Storm Conduit

17 | 18 |
19 |
20 |

Thousand-Year Storm

21 | 22 |
23 |
24 |

Expansion // Explosion

25 | 26 |
27 |
28 |

Narset's Reversal

29 | 30 |
31 |
32 |

Frantic Search

33 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /session-7-fullstack-bringing-it-together/example/2_static_page_with_styling/static_page.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Tim MTG 4 | 5 | 6 | 7 |

Tim's Favorite Magic Cards

8 |
9 |
10 |

Kykar, Wind's Fury

11 | 12 |
13 |
14 |

Niv-Mizzet, Parun

15 | 16 |
17 |
18 |

Ral, Storm Conduit

19 | 20 |
21 |
22 |

Thousand-Year Storm

23 | 24 |
25 |
26 |

Expansion // Explosion

27 | 28 |
29 |
30 |

Narset's Reversal

31 | 32 |
33 |
34 |

Frantic Search

35 | 36 |
37 |
38 |

Fiery Confluence

39 | 40 |
41 |
42 | 43 | -------------------------------------------------------------------------------- /session-7-fullstack-bringing-it-together/example/2_static_page_with_styling/style.css: -------------------------------------------------------------------------------- 1 | .card-container{ 2 | width: 100%; 3 | display: flex; 4 | flex-direction: row; 5 | flex-wrap: wrap; 6 | justify-content: space-around; 7 | 8 | } 9 | .card-img{ 10 | width: 200pt; 11 | } 12 | h1{ 13 | display: inline-block; 14 | } -------------------------------------------------------------------------------- /session-7-fullstack-bringing-it-together/example/3_static_page_with_backend/index.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const app = express(); 3 | 4 | app.get('/', (req, res) => { 5 | res.sendFile(__dirname + '/static_page.html'); 6 | }) 7 | 8 | app.get('/style.css', (req, res) => { 9 | res.sendFile(__dirname + '/style.css'); 10 | }) 11 | 12 | app.listen(3000); 13 | console.log("Server running! Press 'ctrl' + 'c' to quit!") -------------------------------------------------------------------------------- /session-7-fullstack-bringing-it-together/example/3_static_page_with_backend/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hackschoolreviewappexamples", 3 | "version": "1.0.0", 4 | "description": "**Location**: Boelter 5249", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "express": "^4.17.1" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /session-7-fullstack-bringing-it-together/example/3_static_page_with_backend/style.css: -------------------------------------------------------------------------------- 1 | .card-container{ 2 | width: 100%; 3 | display: flex; 4 | flex-direction: row; 5 | flex-wrap: wrap; 6 | justify-content: space-around; 7 | 8 | } 9 | .card-img{ 10 | width: 200pt; 11 | } -------------------------------------------------------------------------------- /session-7-fullstack-bringing-it-together/example/4_react_component/index.js: -------------------------------------------------------------------------------- 1 | //Took me 4-5 minutes. Allow 8-10? 2 | const express = require('express'); 3 | const app = express(); 4 | 5 | app.get('/', (req, res) => { 6 | res.sendFile(__dirname + '/static_page.html'); 7 | }) 8 | 9 | app.get('/style.css', (req, res) => { 10 | res.sendFile(__dirname + '/style.css'); 11 | }) 12 | 13 | app.listen(3000); 14 | console.log("Server running! Press 'ctrl' + 'c' to quit!") -------------------------------------------------------------------------------- /session-7-fullstack-bringing-it-together/example/4_react_component/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hackschoolreviewappexamples", 3 | "version": "1.0.0", 4 | "description": "**Location**: Boelter 5249", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "express": "^4.17.1" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /session-7-fullstack-bringing-it-together/example/4_react_component/style.css: -------------------------------------------------------------------------------- 1 | .card-container{ 2 | width: 100%; 3 | display: flex; 4 | flex-direction: row; 5 | flex-wrap: wrap; 6 | justify-content: space-around; 7 | 8 | } 9 | .card-img{ 10 | width: 200pt; 11 | } -------------------------------------------------------------------------------- /session-7-fullstack-bringing-it-together/example/5_serve_data/index.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const app = express(); 3 | app.use(express.json()); 4 | 5 | const cards = [ 6 | { 7 | name:"Kykar, Wind's Fury", 8 | url: "https://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=466966&type=card" 9 | }, 10 | { 11 | name:"Niv-Mizzet, Parun", 12 | url: "https://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=452942&type=card" 13 | }, 14 | { 15 | name: "Ral, Storm Conduit", 16 | url: "https://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=461138&type=card" 17 | }, 18 | { 19 | name: "Thousand-Year Storm", 20 | url: "https://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=452957&type=card" 21 | }, 22 | { 23 | name: "Expansion // Explosion", 24 | url: "https://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=452974&type=card" 25 | }, 26 | { 27 | name: "Narset's Reversal", 28 | url: "https://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=460989&type=card" 29 | }, 30 | { 31 | name: "Frantic Search", 32 | url: "https://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=456653&type=card" 33 | }, 34 | { 35 | name: "Fiery Confluence", 36 | url: "https://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=446834&type=card" 37 | }, 38 | ] 39 | 40 | app.get('/', (req, res) => { 41 | res.sendFile(__dirname + '/static_page.html'); 42 | }) 43 | 44 | app.get('/style.css', (req, res) => { 45 | res.sendFile(__dirname + '/style.css'); 46 | }) 47 | 48 | app.get('/cards', (req, res) => { 49 | res.contentType = 'application.json' 50 | res.json(cards); 51 | }) 52 | 53 | app.listen(3000); 54 | console.log("Server running! Press 'ctrl' + 'c' to quit!") -------------------------------------------------------------------------------- /session-7-fullstack-bringing-it-together/example/5_serve_data/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hackschoolreviewappexamples", 3 | "version": "1.0.0", 4 | "description": "**Location**: Boelter 5249", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "express": "^4.17.1" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /session-7-fullstack-bringing-it-together/example/5_serve_data/style.css: -------------------------------------------------------------------------------- 1 | .card-container{ 2 | width: 100%; 3 | display: flex; 4 | flex-direction: row; 5 | flex-wrap: wrap; 6 | justify-content: space-around; 7 | 8 | } 9 | .card-img{ 10 | width: 200pt; 11 | } -------------------------------------------------------------------------------- /session-7-fullstack-bringing-it-together/example/6_fetch_data/index.js: -------------------------------------------------------------------------------- 1 | const express = require("express"); 2 | const app = express(); 3 | app.use(express.json()); 4 | 5 | const cards = [ 6 | { 7 | name: "Kykar, Wind's Fury", 8 | url: 9 | "https://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=466966&type=card" 10 | }, 11 | { 12 | name: "Niv-Mizzet, Parun", 13 | url: 14 | "https://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=452942&type=card" 15 | }, 16 | { 17 | name: "Ral, Storm Conduit", 18 | url: 19 | "https://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=461138&type=card" 20 | }, 21 | { 22 | name: "Thousand-Year Storm", 23 | url: 24 | "https://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=452957&type=card" 25 | }, 26 | { 27 | name: "Expansion // Explosion", 28 | url: 29 | "https://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=452974&type=card" 30 | }, 31 | { 32 | name: "Narset's Reversal", 33 | url: 34 | "https://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=460989&type=card" 35 | }, 36 | { 37 | name: "Frantic Search", 38 | url: 39 | "https://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=456653&type=card" 40 | }, 41 | { 42 | name: "Fiery Confluence", 43 | url: 44 | "https://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=446834&type=card" 45 | } 46 | ]; 47 | 48 | app.get("/", (req, res) => { 49 | res.sendFile(__dirname + "/static_page.html"); 50 | }); 51 | 52 | app.get("/style.css", (req, res) => { 53 | res.sendFile(__dirname + "/style.css"); 54 | }); 55 | 56 | app.get("/cards", (req, res) => { 57 | res.contentType = "application.json"; 58 | res.json(cards); 59 | }); 60 | 61 | app.post("/card", (req, res) => { 62 | cards.push(req.body); 63 | }); 64 | 65 | app.listen(3000); 66 | console.log("Server running! Press 'ctrl' + 'c' to quit!"); 67 | -------------------------------------------------------------------------------- /session-7-fullstack-bringing-it-together/example/6_fetch_data/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hackschoolreviewappexamples", 3 | "version": "1.0.0", 4 | "description": "**Location**: Boelter 5249", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "express": "^4.17.1" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /session-7-fullstack-bringing-it-together/example/6_fetch_data/style.css: -------------------------------------------------------------------------------- 1 | .card-container{ 2 | width: 100%; 3 | display: flex; 4 | flex-direction: row; 5 | flex-wrap: wrap; 6 | justify-content: space-around; 7 | 8 | } 9 | .card-img{ 10 | width: 200pt; 11 | } --------------------------------------------------------------------------------