From 96b6b066bc304f483d97d0b4c1a9308d670ff981 Mon Sep 17 00:00:00 2001 From: TonyTang2001 Date: Thu, 14 Jan 2021 21:51:30 -0800 Subject: [PATCH 1/6] Adding more content to README --- README.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index eeb803c..e4d83a6 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,18 @@ # sd-hacks -Prerequisite: Install Node.js [here](https://nodejs.org/en/download/package-manager/) if you haven't already. +## Before You Start +We will be using a framework called **Node.js**. Install Node.js [here](https://nodejs.org/en/download/package-manager/) if you haven't already. -To start your project, make sure you have git installed and clone this repository: +## Getting Started +To start your project, make sure you have git installed and **clone** this repository: `git clone https://github.com/lorraineeeee/sd-hack.git` -When you're done, go into the folder and install the packages: +When you're done, go into the folder: `cd sd-hack/node` +Then, install the dependency packages: + `npm install` You should see a new folder named "node_mudules" after it finishes. @@ -17,4 +21,4 @@ Run the app using `npm start` -and go to http://localhost:5000/ to start your work. +Use a browser to access the url http://localhost:5000/ to start and view your work. From d350472b7c99f31b275ca879ec5c5d017db8dda6 Mon Sep 17 00:00:00 2001 From: TonyTang2001 Date: Thu, 14 Jan 2021 22:40:55 -0800 Subject: [PATCH 2/6] Draft version of web dev hackpack --- .gitignore | 1 + README.md | 182 +++++++- node/package-lock.json | 996 ----------------------------------------- node/package.json | 16 - node/script.js | 1 - node/server.js | 8 - package.json | 18 + public/index.html | 19 + public/main.css | 30 ++ 9 files changed, 237 insertions(+), 1034 deletions(-) create mode 100644 .gitignore delete mode 100644 node/package-lock.json delete mode 100644 node/package.json delete mode 100644 node/script.js delete mode 100644 node/server.js create mode 100644 package.json create mode 100644 public/index.html create mode 100644 public/main.css diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e43b0f9 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.DS_Store diff --git a/README.md b/README.md index e4d83a6..3c65a2a 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,180 @@ -# sd-hacks -## Before You Start -We will be using a framework called **Node.js**. Install Node.js [here](https://nodejs.org/en/download/package-manager/) if you haven't already. +# SDHacks Web Dev Hackpack + +We'll be building an app that will take user input, save it to a database, and display it on the page. Building a full stack application like this means that you'll write front-end, back-end, and database code. Use this as a starting point and get familiar with all parts of the stack so you can hack a cool site at SDHacks! ## Getting Started -To start your project, make sure you have git installed and **clone** this repository: -`git clone https://github.com/lorraineeeee/sd-hack.git` +#### Installations +Make sure you have the following installed: + + - [Atom](https://atom.io/) or other text editor + - [Homebrew](http://brew.sh/): Homebrew is a package manager that makes it easy to install other packages. Install it by running the following command on your terminal: + ```sh + /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" + ``` + + - [Node](https://nodejs.org/en/): Install this using Homebrew by running the following command on your terminal: + ```sh + brew install node + ``` + + - [SQLite](https://www.sqlite.org/): SQLite is a file-based database. It is commonly used for development and testing and it's the easiest database to get started with. Install this using this command: + ```sh + brew install sqlite3 + ``` + +#### Cloning the repository + +To start, make sure you have git installed, and clone this repository +```sh +git clone +``` +Go to the directory you cloned your repository in and install the necessary packages: +```sh +cd hackpack-web +npm install +``` +The repository has a `package.json` folder which essentially lists out all the dependencies of your project. The second command will go through all the dependencies and install them. This might take a while. + +## Setting up the backend +The entry point for our project will be a file called `server.js`. To create this file, navigate to the cloned repo in your terminal and enter the following command: +```sh +atom server.js +``` +This file will live at the top of your repository and will be where you store server-side code. Copy the following code into `server.js`: +```sh +var express = require('express'); +var app = express(); +var bodyParser = require('body-parser'); +var knex = require('./db/knex'); + +app.use(bodyParser.urlencoded({ extended: false })); +app.use(express.static(__dirname + '/public')); + +app.get('/ideas', function(req, res) { + knex('ideas').select() + .then(function(data){ + res.send(data); + }); +}); + +app.post('/ideas', function(req, res) { + knex('ideas').insert(req.body) + .then(function(id){ + res.redirect('/'); + }); +}); + +app.listen(3000, function(){ + console.log('Listening on Port 3000'); +}); +``` + +Now let's walk through the code: + + - Lines 1 and 2: Importing Express and setting up an [Express](https://expressjs.com/) application. Express is a Node.js web application framework. + - Lines 3 and 4: Importing some of the dependencies you installed earlier in order to use them in this file. `body-parser` allows you to read data that the client sends over in a request. `knex` allows you to interact with your database in JavaScript. + - Line 6: Mounts the BodyParser as middleware, meaning that every request comes into the server has to pass through this module. + - Next block of code is a `get` route. This allows us to get data from the database. This function gets all the data from the database and sends it back to the client to do whatever it wishes with - it can display it or store it. Later on, you'll see where we display it! + - Next block of code is a `post` route. This allows us to post (add or update) data to the database. The second line in this block inserts the data in the request body into the `ideas` table. + - Next block of code binds the server to port 3000 on our computer. This means we can access our website at `localhost:3000` when we run it later on. + +## Setting up the Database +In the last section, we set up the server which read and wrote data to a database. Now, we're going to set up that database. Navigate to the clone repository in your directory. We are going to create a `db/` folder to store the files that make up our database: +```sh +mkdir db +cd db/ +``` +We'll be using [Knex](http://knexjs.org/) and [SQLite](https://www.sqlite.org/) for the database. To create a SQLite database, type this into the terminal: +```sh +sqlite3 ideas.db +``` +A `sqlite>` promt will display, and you can enter for following commands one at a time to create a table named 'Ideas', insert values into it, and display them: +```sh +create table ideas(idea varchar(255)); +insert into ideas values("Have fun at SDHacks!"); +insert into ideas values("Make something Coooooool!"); +select * from ideas; +``` +You've just created the database! To exit the `sqlite` prompt, hit `CTRL + D`. + +Create a new file called `knex.js` in the `db/` folder. Enter the following code and save the file: +```sh +var config = require('../knexfile')['development']; +var knex = require('knex')(config); + +module.exports = knex; +``` + +Navigate back up to the root of your project by typing `cd ..` and create a new file called `knexfile.js`: +```sh +atom knexfile.js +``` +Copy and paste the following code into the file: +```sh +module.exports = { + + development: { + client: 'sqlite3', + connection: { + filename: 'db/ideas.db' + }, + useNullAsDefault: true + } + +}; +``` + +`knexfile.js` and `db/knex.js` are setting up the Knex instance available to your application so it knows where to find and store the data. + +## Home Stretch: Building the client-side components +The current repository contains 2 files in the `public` folder: `index.html` and `main.css`. `index.html` contains basic html which provides the structure of the interface that the user sees. It has a input field, a button, and an area to display the list from the database. `main.css` has styling for the landing page. -When you're done, go into the folder: +Now we're going to add some functionality to the client-side so we can get the data from our database and display it, as well as be able to write data back to the database. -`cd sd-hack/node` +Navigate to your clone repo on your terminal, and create a `client.js` file inside of the `public/` folder: +```sh +cd public +atom client.js +``` +In your `client.js` file, write the following code and save: +```sh +$(document).ready(function(){ + getIdeas(); +}); -Then, install the dependency packages: +function getIdeas(){ + $.get('/ideas', function(data){ + console.log(data); + renderData(data); + }); +} -`npm install` +function renderData(data){ + for (var i = 0; i < data.length; i++) { + $('ul').append('
  • ' + data[i].idea + '
  • '); + } +} +``` -You should see a new folder named "node_mudules" after it finishes. +Walkthrough of the code: -Run the app using + - The first block of code is what gets called as soon as the website loads. In our case, when the website loads, it calls the `getIdeas()` function. + - The `getIdeas()` function makes a get request to the `/ideas` route (the same as we created on `server.js` in order to get all the data. It then calls the `renderData()` function with the data that is returned from the database. + - The `renderData()` function goes through all the data passed in as an arugment and appends it (or adds it) to the list on the home page. + +#### Final Step! +Open your `index.html` file, and include the `client.js` file you just created in order to add the functionality to your static website. Do this by entering the following line of code right before the ending `` tag: +```sh + +``` -`npm start` +## Building and running the app +We're done! To start the app, go back to your terminal on the root directory and type: +```sh +node server.js +``` +Now open your browser and navigate to `localhost:3000` and you should see the interface of **Next Todo**. -Use a browser to access the url http://localhost:5000/ to start and view your work. +#### Acknowledgement +Built by CSES, based on [this GitHub Repository](https://github.com/athenahacks/hackpack-web) diff --git a/node/package-lock.json b/node/package-lock.json deleted file mode 100644 index 5318aa8..0000000 --- a/node/package-lock.json +++ /dev/null @@ -1,996 +0,0 @@ -{ - "name": "node", - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "dev": true - }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, - "requires": { - "defer-to-connect": "^1.0.1" - } - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "ansi-align": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", - "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", - "dev": true, - "requires": { - "string-width": "^3.0.0" - }, - "dependencies": { - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } - } - }, - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "boxen": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", - "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", - "dev": true, - "requires": { - "ansi-align": "^3.0.0", - "camelcase": "^5.3.1", - "chalk": "^3.0.0", - "cli-boxes": "^2.2.0", - "string-width": "^4.1.0", - "term-size": "^2.1.0", - "type-fest": "^0.8.1", - "widest-line": "^3.1.0" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "dependencies": { - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true - } - } - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "chokidar": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.0.tgz", - "integrity": "sha512-JgQM9JS92ZbFR4P90EvmzNpSGhpPBGBSj10PILeDyYFwp4h2/D9OM03wsJ4zW1fEp4ka2DGrnUeD7FuvQ2aZ2Q==", - "dev": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.3.1", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" - } - }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", - "dev": true - }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" - } - }, - "crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true - }, - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true - }, - "defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true - }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "requires": { - "is-obj": "^2.0.0" - } - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", - "dev": true - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "fsevents": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.1.tgz", - "integrity": "sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw==", - "dev": true, - "optional": true - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "global-dirs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", - "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", - "dev": true, - "requires": { - "ini": "1.3.7" - } - }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - } - }, - "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", - "dev": true - }, - "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true - }, - "ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", - "dev": true - }, - "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "ini": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", - "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-installed-globally": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", - "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", - "dev": true, - "requires": { - "global-dirs": "^2.0.1", - "is-path-inside": "^3.0.1" - } - }, - "is-npm": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", - "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true - }, - "is-path-inside": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", - "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==", - "dev": true - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", - "dev": true - }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true - }, - "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, - "requires": { - "json-buffer": "3.0.0" - } - }, - "latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "dev": true, - "requires": { - "package-json": "^6.3.0" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "nodemon": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.7.tgz", - "integrity": "sha512-XHzK69Awgnec9UzHr1kc8EomQh4sjTQ8oRf8TsGrSmHDx9/UmiGG9E/mM3BuTfNeFwdNBvrqQq/RHL0xIeyFOA==", - "dev": true, - "requires": { - "chokidar": "^3.2.2", - "debug": "^3.2.6", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.0.4", - "pstree.remy": "^1.1.7", - "semver": "^5.7.1", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.3", - "update-notifier": "^4.1.0" - } - }, - "nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "normalize-url": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", - "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true - }, - "package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "dev": true, - "requires": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true - }, - "pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", - "dev": true - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", - "dev": true, - "requires": { - "escape-goat": "^2.0.0" - } - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "registry-auth-token": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", - "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", - "dev": true, - "requires": { - "rc": "^1.2.8" - } - }, - "registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "dev": true, - "requires": { - "rc": "^1.2.8" - } - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, - "requires": { - "lowercase-keys": "^1.0.0" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "dev": true, - "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "term-size": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", - "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", - "dev": true - }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "dev": true, - "requires": { - "nopt": "~1.0.10" - } - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "undefsafe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", - "integrity": "sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==", - "dev": true, - "requires": { - "debug": "^2.2.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, - "requires": { - "crypto-random-string": "^2.0.0" - } - }, - "update-notifier": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", - "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", - "dev": true, - "requires": { - "boxen": "^4.2.0", - "chalk": "^3.0.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.3.1", - "is-npm": "^4.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.0.0", - "pupa": "^2.0.1", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" - } - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "requires": { - "prepend-http": "^2.0.0" - } - }, - "widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dev": true, - "requires": { - "string-width": "^4.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "dev": true - } - } -} diff --git a/node/package.json b/node/package.json deleted file mode 100644 index 3d27ee8..0000000 --- a/node/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "node", - "version": "1.0.0", - "main": "script.js", - "scripts": { - "start": "nodemon server.js" - }, - "keywords": [], - "author": "", - "license": "ISC", - "devDependencies": { - "nodemon": "^2.0.7" - }, - "dependencies": {}, - "description": "" -} diff --git a/node/script.js b/node/script.js deleted file mode 100644 index ab0c014..0000000 --- a/node/script.js +++ /dev/null @@ -1 +0,0 @@ -// \ No newline at end of file diff --git a/node/server.js b/node/server.js deleted file mode 100644 index 5535cad..0000000 --- a/node/server.js +++ /dev/null @@ -1,8 +0,0 @@ -const http = require('http'); - -const server = http.createServer((request, response) => { - response.setHeader('Content-Type', 'text/html'); - response.end('

    sd-hack

    '); -}) - -server.listen(5000); diff --git a/package.json b/package.json new file mode 100644 index 0000000..7d20820 --- /dev/null +++ b/package.json @@ -0,0 +1,18 @@ +{ + "name": "nexttodo", + "version": "1.0.0", + "description": "", + "main": "server.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "start": "node server.js" + }, + "author": "", + "license": "ISC", + "dependencies": { + "body-parser": "^1.17.1", + "express": "^4.15.2", + "knex": "^0.12.9", + "sqlite": "^2.5.0" + } +} diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..b0f1609 --- /dev/null +++ b/public/index.html @@ -0,0 +1,19 @@ + + + + + SDHacks Web Hackpack - Next Todo + + + +

    Next Todo

    +
    + + +
    + +
      + + + + diff --git a/public/main.css b/public/main.css new file mode 100644 index 0000000..4db6067 --- /dev/null +++ b/public/main.css @@ -0,0 +1,30 @@ +body { + padding: 30px; + background-color: #84888a; + font-family: Arial, sans-serif; + color: #fff; +} + +form { + display: flex; + flex-direction: column; + width: 300px; + max-width: 90%; +} + +input { + font-size: 1.2em; + padding: 5px; + margin-bottom: 10px; +} + +button { + padding: 10px; + background-color: #0f5f74; + border: none; + color: #fff; +} + +button:hover { + box-shadow: 3px 2px 3px #6a7988; +} From 5114734b7e7a50c46847f4982c271a6363d421ed Mon Sep 17 00:00:00 2001 From: TonyTang2001 Date: Thu, 14 Jan 2021 22:55:23 -0800 Subject: [PATCH 3/6] Revised README for release. --- README.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 3c65a2a..fc1d7ce 100644 --- a/README.md +++ b/README.md @@ -31,10 +31,10 @@ git clone ``` Go to the directory you cloned your repository in and install the necessary packages: ```sh -cd hackpack-web +cd sd-hack npm install ``` -The repository has a `package.json` folder which essentially lists out all the dependencies of your project. The second command will go through all the dependencies and install them. This might take a while. +The repository has a `package.json` folder which essentially lists out all the dependencies of your project. The second command will go through all the dependencies and install them. This might take a while, possibly a few minutes. Please wait patiently. ## Setting up the backend The entry point for our project will be a file called `server.js`. To create this file, navigate to the cloned repo in your terminal and enter the following command: @@ -164,17 +164,21 @@ Walkthrough of the code: - The `renderData()` function goes through all the data passed in as an arugment and appends it (or adds it) to the list on the home page. #### Final Step! -Open your `index.html` file, and include the `client.js` file you just created in order to add the functionality to your static website. Do this by entering the following line of code right before the ending `` tag: +Open your `index.html` file in the `public` folder, and include the `client.js` file you just created in order to add the functionality to your static website. Do this by entering the following line of code right before the ending `` tag: ```sh ``` ## Building and running the app -We're done! To start the app, go back to your terminal on the root directory and type: +We're done! To start the app, **go back to your terminal on the root directory** and type: ```sh node server.js ``` -Now open your browser and navigate to `localhost:3000` and you should see the interface of **Next Todo**. +Now open your browser and navigate to http://localhost:3000/ and you should see the interface of **Next Todo**. + +In case you want to stop the server, simply hit `CTRL + C` on your keyboard. + +We wish you find this project helpful and have a great experience at SDHacks! #### Acknowledgement Built by CSES, based on [this GitHub Repository](https://github.com/athenahacks/hackpack-web) From 949f492744807c9615abe8e61196d28f2e88798b Mon Sep 17 00:00:00 2001 From: TonyTang2001 Date: Thu, 14 Jan 2021 23:04:23 -0800 Subject: [PATCH 4/6] Add CSES logo --- README.md | 4 +++- resource/cseslogo.png | Bin 0 -> 4606 bytes 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 resource/cseslogo.png diff --git a/README.md b/README.md index fc1d7ce..8f42fe7 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # SDHacks Web Dev Hackpack +![CSES_logo](./resource/cseslogo.png) + We'll be building an app that will take user input, save it to a database, and display it on the page. Building a full stack application like this means that you'll write front-end, back-end, and database code. Use this as a starting point and get familiar with all parts of the stack so you can hack a cool site at SDHacks! ## Getting Started @@ -181,4 +183,4 @@ In case you want to stop the server, simply hit `CTRL + C` on your keyboard. We wish you find this project helpful and have a great experience at SDHacks! #### Acknowledgement -Built by CSES, based on [this GitHub Repository](https://github.com/athenahacks/hackpack-web) +Built by CSES, based on [this GitHub Repository](https://github.com/athenahacks/hackpack-web). diff --git a/resource/cseslogo.png b/resource/cseslogo.png new file mode 100644 index 0000000000000000000000000000000000000000..1bea594ab7f1ba448e12889a091fd75308333562 GIT binary patch literal 4606 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 literal 0 HcmV?d00001 From a3bbbfa0ba5bce50fba5ea1e132ec4c6cfe0f7ba Mon Sep 17 00:00:00 2001 From: yuzilyu <57729578+yuzilyu@users.noreply.github.com> Date: Fri, 15 Jan 2021 15:39:12 -0800 Subject: [PATCH 5/6] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8f42fe7..dcff64a 100644 --- a/README.md +++ b/README.md @@ -183,4 +183,4 @@ In case you want to stop the server, simply hit `CTRL + C` on your keyboard. We wish you find this project helpful and have a great experience at SDHacks! #### Acknowledgement -Built by CSES, based on [this GitHub Repository](https://github.com/athenahacks/hackpack-web). +Built by CSES@UCSD, based on [this GitHub Repository](https://github.com/athenahacks/hackpack-web). From ae2dd8945337dc8c3bc210e1c1ac097cb2e2998d Mon Sep 17 00:00:00 2001 From: TonyTang Date: Fri, 15 Jan 2021 18:06:59 -0800 Subject: [PATCH 6/6] Replace placeholder with actual repo address --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dcff64a..df3c59b 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ Make sure you have the following installed: To start, make sure you have git installed, and clone this repository ```sh -git clone +git clone https://github.com/TonyTang2001/sd-hack.git ``` Go to the directory you cloned your repository in and install the necessary packages: ```sh