├── .DS_Store ├── README.md ├── app ├── .eslintrc.js ├── .gitignore ├── README.md ├── package.json ├── public │ ├── index.html │ └── main.js └── src │ ├── App.css │ ├── App.jsx │ ├── Global │ ├── actionTypes.js │ └── context │ │ ├── AppContext.jsx │ │ └── MainContainerContext.jsx │ ├── __tests__ │ ├── body.test.js │ ├── button.test.js │ ├── method.test.js │ ├── navcontainer.test.js │ ├── tab.test.js │ └── url.test.js │ ├── components │ ├── MainContainer.jsx │ ├── Nav │ │ ├── Body.jsx │ │ ├── Login.jsx │ │ ├── Method.jsx │ │ ├── NavContainer.jsx │ │ ├── Signup.jsx │ │ └── Url.jsx │ ├── Performance │ │ └── Performance.jsx │ ├── Response │ │ ├── Middleware │ │ │ ├── FunctionContainer.jsx │ │ │ ├── MiddlewareChain.jsx │ │ │ ├── MiddlewareContainer.jsx │ │ │ └── ResponseObject.jsx │ │ └── ResponseContainer.jsx │ ├── Sidebar │ │ ├── Button.jsx │ │ ├── Buttons.jsx │ │ ├── Help.jsx │ │ ├── Settings.jsx │ │ └── SidebarContainer.jsx │ ├── Tab │ │ ├── Tab.jsx │ │ └── TabContainer.jsx │ ├── Testing │ │ ├── AddTestModal.jsx │ │ ├── IndividualTestView.jsx │ │ ├── RunTestsComponent.jsx │ │ ├── TestComponent.jsx │ │ ├── TestContainer.jsx │ │ ├── TestControls.jsx │ │ └── TestMenuBar.jsx │ ├── Tree │ │ ├── Graph │ │ │ ├── AppNode.jsx │ │ │ ├── Graph.jsx │ │ │ ├── MiddlewareNode.jsx │ │ │ ├── NodeText.jsx │ │ │ ├── RouteNode.jsx │ │ │ └── useForceUpdate.jsx │ │ ├── Tree.jsx │ │ └── TreeRect.jsx │ └── common │ │ └── CodeBlock.jsx │ ├── img │ ├── dashboard1.png │ ├── dashboard3.png │ ├── logo.png │ └── require.png │ ├── index.css │ └── index.jsx ├── npm ├── .editorconfig ├── .eslintignore ├── .eslintrc.yml ├── .gitignore ├── .travis.yml ├── LICENSE ├── appveyor.yml ├── benchmarks │ ├── Makefile │ ├── middleware.js │ └── run ├── examples │ ├── auth │ │ ├── index.js │ │ └── views │ │ │ ├── foot.ejs │ │ │ ├── head.ejs │ │ │ └── login.ejs │ ├── content-negotiation │ │ ├── db.js │ │ ├── index.js │ │ └── users.js │ ├── cookie-sessions │ │ └── index.js │ ├── cookies │ │ └── index.js │ ├── downloads │ │ ├── files │ │ │ ├── CCTV大赛上海分赛区.txt │ │ │ └── amazing.txt │ │ └── index.js │ ├── ejs │ │ ├── index.js │ │ ├── public │ │ │ └── stylesheets │ │ │ │ └── style.css │ │ └── views │ │ │ ├── footer.html │ │ │ ├── header.html │ │ │ └── users.html │ ├── error-pages │ │ ├── index.js │ │ └── views │ │ │ ├── 404.ejs │ │ │ ├── 500.ejs │ │ │ ├── error_header.ejs │ │ │ ├── footer.ejs │ │ │ └── index.ejs │ ├── error │ │ └── index.js │ ├── hello-world │ │ └── index.js │ ├── markdown │ │ └── index.js │ ├── multi-router │ │ ├── controllers │ │ │ ├── api_v1.js │ │ │ └── api_v2.js │ │ └── index.js │ ├── multipart │ │ └── index.js │ ├── mvc │ │ ├── controllers │ │ │ ├── main │ │ │ │ └── index.js │ │ │ ├── pet │ │ │ │ ├── index.js │ │ │ │ └── views │ │ │ │ │ ├── edit.ejs │ │ │ │ │ └── show.ejs │ │ │ ├── user-pet │ │ │ │ └── index.js │ │ │ └── user │ │ │ │ ├── index.js │ │ │ │ └── views │ │ │ │ ├── edit.hbs │ │ │ │ ├── list.hbs │ │ │ │ └── show.hbs │ │ ├── db.js │ │ ├── index.js │ │ ├── lib │ │ │ └── boot.js │ │ ├── public │ │ │ └── style.css │ │ └── views │ │ │ ├── 404.ejs │ │ │ └── 5xx.ejs │ ├── online │ │ └── index.js │ ├── params │ │ └── index.js │ ├── resource │ │ └── index.js │ ├── route-map │ │ └── index.js │ ├── route-middleware │ │ └── index.js │ ├── route-separation │ │ ├── index.js │ │ ├── post.js │ │ ├── public │ │ │ └── style.css │ │ ├── site.js │ │ ├── user.js │ │ └── views │ │ │ ├── footer.ejs │ │ │ ├── header.ejs │ │ │ ├── index.ejs │ │ │ ├── posts │ │ │ └── index.ejs │ │ │ └── users │ │ │ ├── edit.ejs │ │ │ ├── index.ejs │ │ │ └── view.ejs │ ├── search │ │ ├── index.js │ │ └── public │ │ │ ├── client.js │ │ │ └── index.html │ ├── session │ │ ├── index.js │ │ └── redis.js │ ├── static-files │ │ ├── index.js │ │ └── public │ │ │ ├── css │ │ │ └── style.css │ │ │ ├── hello.txt │ │ │ └── js │ │ │ └── app.js │ ├── vhost │ │ └── index.js │ ├── view-constructor │ │ ├── github-view.js │ │ └── index.js │ ├── view-locals │ │ ├── index.js │ │ ├── user.js │ │ └── views │ │ │ └── index.ejs │ └── web-service │ │ └── index.js ├── index.js ├── lib │ ├── application.js │ ├── express.js │ ├── middleware │ │ ├── init.js │ │ └── query.js │ ├── observer.js │ ├── request.js │ ├── response.js │ ├── router │ │ ├── index.js │ │ ├── layer.js │ │ └── route.js │ ├── utils.js │ └── view.js ├── package.json └── test │ ├── Route.js │ ├── Router.js │ ├── acceptance │ ├── auth.js │ ├── content-negotiation.js │ ├── cookie-sessions.js │ ├── cookies.js │ ├── downloads.js │ ├── ejs.js │ ├── error-pages.js │ ├── error.js │ ├── markdown.js │ ├── multi-router.js │ ├── mvc.js │ ├── params.js │ ├── resource.js │ ├── route-map.js │ ├── route-separation.js │ ├── vhost.js │ └── web-service.js │ ├── app.all.js │ ├── app.del.js │ ├── app.engine.js │ ├── app.head.js │ ├── app.js │ ├── app.listen.js │ ├── app.locals.js │ ├── app.options.js │ ├── app.param.js │ ├── app.render.js │ ├── app.request.js │ ├── app.response.js │ ├── app.route.js │ ├── app.router.js │ ├── app.routes.error.js │ ├── app.use.js │ ├── config.js │ ├── exports.js │ ├── express.json.js │ ├── express.raw.js │ ├── express.static.js │ ├── express.text.js │ ├── express.urlencoded.js │ ├── fixtures │ ├── % of dogs.txt │ ├── .name │ ├── blog │ │ ├── index.html │ │ └── post │ │ │ └── index.tmpl │ ├── broken.send │ ├── default_layout │ │ ├── name.tmpl │ │ └── user.tmpl │ ├── email.tmpl │ ├── empty.txt │ ├── local_layout │ │ └── user.tmpl │ ├── name.tmpl │ ├── name.txt │ ├── nums.txt │ ├── pets │ │ └── names.txt │ ├── snow ☃ │ │ └── .gitkeep │ ├── todo.html │ ├── todo.txt │ ├── user.html │ ├── user.tmpl │ └── users │ │ ├── index.html │ │ └── tobi.txt │ ├── middleware.basic.js │ ├── mocha.opts │ ├── regression.js │ ├── req.accepts.js │ ├── req.acceptsCharset.js │ ├── req.acceptsCharsets.js │ ├── req.acceptsEncoding.js │ ├── req.acceptsEncodings.js │ ├── req.acceptsLanguage.js │ ├── req.acceptsLanguages.js │ ├── req.baseUrl.js │ ├── req.fresh.js │ ├── req.get.js │ ├── req.host.js │ ├── req.hostname.js │ ├── req.ip.js │ ├── req.ips.js │ ├── req.is.js │ ├── req.param.js │ ├── req.path.js │ ├── req.protocol.js │ ├── req.query.js │ ├── req.range.js │ ├── req.route.js │ ├── req.secure.js │ ├── req.signedCookies.js │ ├── req.stale.js │ ├── req.subdomains.js │ ├── req.xhr.js │ ├── res.append.js │ ├── res.attachment.js │ ├── res.clearCookie.js │ ├── res.cookie.js │ ├── res.download.js │ ├── res.format.js │ ├── res.get.js │ ├── res.json.js │ ├── res.jsonp.js │ ├── res.links.js │ ├── res.locals.js │ ├── res.location.js │ ├── res.redirect.js │ ├── res.render.js │ ├── res.send.js │ ├── res.sendFile.js │ ├── res.sendStatus.js │ ├── res.set.js │ ├── res.status.js │ ├── res.type.js │ ├── res.vary.js │ ├── support │ ├── env.js │ ├── tmpl.js │ └── utils.js │ └── utils.js └── site ├── .eslintrc ├── .gitignore ├── README.md ├── components ├── Closing.js ├── Contact.js ├── Description.js ├── Feature.js ├── Header.js ├── Intro.js ├── Layout.js ├── LinkTo.js └── Team.js ├── next.config.js ├── package-lock.json ├── package.json ├── pages ├── _app.js ├── api │ └── hello.js ├── home │ ├── FeaturePage.js │ └── TeamPage.js └── index.js ├── public ├── app-tree.png ├── ashley.png ├── code-block.png ├── comp.png ├── dashboard1.png ├── eric.png ├── favicon.ico ├── grey-wave.png ├── josh.png ├── julia.png ├── landing.png ├── logo-eye.png ├── logo-text.png ├── logo.png ├── logoText.png ├── macbook-main.png ├── os-labs.png ├── tech-wave-BackGround.png └── vercel.svg ├── routes.js ├── styles ├── Home.module.css └── globals.css └── yarn.lock /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oslabs-beta/obServerJS/7a7c72d594746a35d1c5c27973fd444cf086b94c/.DS_Store -------------------------------------------------------------------------------- /app/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | browser: true, 4 | es2021: true, 5 | }, 6 | extends: ['eslint:recommended', 'plugin:react/recommended', 'airbnb'], 7 | parserOptions: { 8 | ecmaFeatures: { 9 | jsx: true, 10 | }, 11 | ecmaVersion: 12, 12 | sourceType: 'module', 13 | }, 14 | plugins: ['react'], 15 | rules: { 16 | 'react/prop-types': 'off', 17 | 'linebreak-style': 0, 18 | }, 19 | }; 20 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | package-lock.json 2 | yarn.lock 3 | .DS_Store 4 | .env 5 | node_modules 6 | -------------------------------------------------------------------------------- /app/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "observerjs-app", 3 | "version": "0.1.0", 4 | "private": true, 5 | "dependencies": { 6 | "@electron/remote": "^1.1.0", 7 | "@material-ui/core": "^4.11.4", 8 | "@material-ui/icons": "^4.11.2", 9 | "@testing-library/jest-dom": "^5.11.4", 10 | "@testing-library/user-event": "^12.1.10", 11 | "@visx/gradient": "^1.7.0", 12 | "@visx/group": "^1.7.0", 13 | "@visx/hierarchy": "^1.7.0", 14 | "@visx/responsive": "^1.10.1", 15 | "@visx/shape": "^1.8.0", 16 | "@visx/tooltip": "^1.7.2", 17 | "@visx/zoom": "^1.11.0", 18 | "concurrently": "^6.0.2", 19 | "cross-env": "^7.0.3", 20 | "d3-shape": "^2.1.0", 21 | "electron": "^12.0.6", 22 | "electron-is-dev": "^2.0.0", 23 | "lodash": "^4.17.21", 24 | "prettier": "^2.3.2", 25 | "prettier-eslint": "^12.0.0", 26 | "pretty-format": "^27.1.0", 27 | "prop-types": "^15.7.2", 28 | "react": "^17.0.2", 29 | "react-dom": "^17.0.2", 30 | "react-scripts": "4.0.3", 31 | "react-syntax-highlighter": "^15.4.3", 32 | "uuid": "^8.3.2", 33 | "wait-on": "^5.3.0", 34 | "web-vitals": "^1.0.1" 35 | }, 36 | "main": "public/main.js", 37 | "homepage": "./", 38 | "scripts": { 39 | "start": "react-scripts start", 40 | "build": "react-scripts build", 41 | "test": "react-scripts test", 42 | "eject": "react-scripts eject", 43 | "electron:serve": "concurrently -k \"cross-env BROWSER=none npm start\" \"npm run electron:start\"", 44 | "electron:build": "npm build && electron-builder -c.extraMetadata.main=build/main.js", 45 | "electron:start": "wait-on tcp:3000 && electron ." 46 | }, 47 | "eslintConfig": { 48 | "extends": [ 49 | "react-app", 50 | "react-app/jest" 51 | ] 52 | }, 53 | "browserslist": { 54 | "production": [ 55 | ">0.2%", 56 | "not dead", 57 | "not op_mini all" 58 | ], 59 | "development": [ 60 | "last 1 chrome version", 61 | "last 1 firefox version", 62 | "last 1 safari version" 63 | ] 64 | }, 65 | "devDependencies": { 66 | "@testing-library/react": "^11.2.7", 67 | "electron-devtools-installer": "^3.2.0", 68 | "eslint": "^7.30.0", 69 | "eslint-config-airbnb": "^18.2.1", 70 | "eslint-plugin-import": "^2.23.4", 71 | "eslint-plugin-jsx-a11y": "^6.4.1", 72 | "eslint-plugin-react": "^7.24.0" 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /app/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 |