├── CHANGELOG.md ├── public ├── favicon.ico ├── images │ ├── screenshots │ │ └── passing-tests.png │ └── logo.svg ├── manifest.json └── index.html ├── src ├── fonts │ └── feather │ │ ├── feather-webfont.eot │ │ ├── feather-webfont.ttf │ │ └── feather-webfont.woff ├── context-api-redux │ ├── actions │ │ └── index.js │ ├── store.js │ ├── reducers │ │ └── index.js │ └── index.js ├── data │ ├── pull.js │ ├── tree.js │ ├── index.js │ ├── tree.json │ └── branch.json ├── images │ ├── flags │ │ ├── bd.svg │ │ ├── de.svg │ │ ├── pl.svg │ │ ├── am.svg │ │ ├── bq.svg │ │ ├── lu.svg │ │ ├── mc.svg │ │ ├── ua.svg │ │ ├── gb-sct.svg │ │ ├── at.svg │ │ ├── gb-eng.svg │ │ ├── id.svg │ │ ├── lv.svg │ │ ├── dk.svg │ │ ├── ae.svg │ │ ├── fi.svg │ │ ├── pe.svg │ │ ├── bw.svg │ │ ├── ga.svg │ │ ├── gf.svg │ │ ├── ma.svg │ │ ├── ml.svg │ │ ├── ne.svg │ │ ├── sl.svg │ │ ├── td.svg │ │ ├── ye.svg │ │ ├── ci.svg │ │ ├── co.svg │ │ ├── ng.svg │ │ ├── mq.svg │ │ ├── ru.svg │ │ ├── cr.svg │ │ ├── fr.svg │ │ ├── gp.svg │ │ ├── mf.svg │ │ ├── mv.svg │ │ ├── th.svg │ │ ├── bg.svg │ │ ├── mu.svg │ │ ├── ch.svg │ │ ├── dz.svg │ │ ├── gh.svg │ │ ├── gn.svg │ │ ├── mg.svg │ │ ├── wf.svg │ │ ├── be.svg │ │ ├── bl.svg │ │ ├── hu.svg │ │ ├── it.svg │ │ ├── nc.svg │ │ ├── pm.svg │ │ ├── re.svg │ │ ├── yt.svg │ │ ├── ie.svg │ │ ├── ro.svg │ │ ├── ee.svg │ │ ├── no.svg │ │ ├── sj.svg │ │ ├── sr.svg │ │ ├── cd.svg │ │ ├── to.svg │ │ ├── nl.svg │ │ ├── tt.svg │ │ ├── lc.svg │ │ ├── ss.svg │ │ ├── mk.svg │ │ ├── jm.svg │ │ ├── qa.svg │ │ ├── bf.svg │ │ ├── la.svg │ │ ├── bj.svg │ │ ├── cz.svg │ │ ├── cg.svg │ │ ├── pw.svg │ │ ├── sd.svg │ │ ├── lt.svg │ │ ├── jp.svg │ │ ├── sn.svg │ │ ├── kw.svg │ │ ├── ax.svg │ │ ├── ly.svg │ │ ├── vc.svg │ │ ├── gm.svg │ │ ├── is.svg │ │ ├── so.svg │ │ ├── vn.svg │ │ ├── tz.svg │ │ ├── sc.svg │ │ ├── ps.svg │ │ ├── az.svg │ │ ├── gy.svg │ │ ├── bs.svg │ │ ├── bh.svg │ │ ├── cl.svg │ │ ├── dj.svg │ │ ├── bv.svg │ │ ├── fo.svg │ │ ├── gg.svg │ │ ├── gl.svg │ │ ├── tl.svg │ │ ├── cu.svg │ │ ├── sy.svg │ │ ├── cw.svg │ │ ├── pr.svg │ │ ├── tr.svg │ │ ├── se.svg │ │ ├── cf.svg │ │ ├── gr.svg │ │ ├── rw.svg │ │ ├── jo.svg │ │ ├── bb.svg │ │ ├── st.svg │ │ ├── nr.svg │ │ ├── lr.svg │ │ ├── tg.svg │ │ ├── gw.svg │ │ ├── tk.svg │ │ ├── cm.svg │ │ ├── mm.svg │ │ ├── cn.svg │ │ ├── pa.svg │ │ ├── ag.svg │ │ ├── pk.svg │ │ ├── ws.svg │ │ ├── mr.svg │ │ ├── gb.svg │ │ ├── fm.svg │ │ ├── kn.svg │ │ ├── in.svg │ │ ├── tn.svg │ │ ├── kp.svg │ │ ├── ca.svg │ │ ├── il.svg │ │ ├── mh.svg │ │ ├── za.svg │ │ ├── eh.svg │ │ ├── ve.svg │ │ ├── hn.svg │ │ ├── tf.svg │ │ ├── eu.svg │ │ ├── sb.svg │ │ ├── ph.svg │ │ ├── tw.svg │ │ ├── sg.svg │ │ ├── na.svg │ │ ├── km.svg │ │ ├── bi.svg │ │ ├── uz.svg │ │ ├── np.svg │ │ ├── ke.svg │ │ ├── ba.svg │ │ ├── my.svg │ │ ├── et.svg │ │ ├── mn.svg │ │ ├── uy.svg │ │ ├── sk.svg │ │ ├── cv.svg │ │ ├── ls.svg │ │ ├── au.svg │ │ ├── hm.svg │ │ ├── gd.svg │ │ ├── tj.svg │ │ ├── mo.svg │ │ ├── nu.svg │ │ ├── pg.svg │ │ ├── ao.svg │ │ ├── iq.svg │ │ ├── kr.svg │ │ ├── ge.svg │ │ ├── ck.svg │ │ ├── tv.svg │ │ ├── si.svg │ │ ├── zw.svg │ │ └── nz.svg │ ├── crypto-currencies │ │ ├── eos.svg │ │ ├── dash.svg │ │ ├── ethereum.svg │ │ ├── litecoin.svg │ │ ├── bitcoin.svg │ │ ├── ripple.svg │ │ └── nem.svg │ ├── browsers │ │ ├── blackberry.svg │ │ ├── aol-explorer.svg │ │ ├── edge.svg │ │ ├── maxthon.svg │ │ ├── vivaldi.svg │ │ ├── opera.svg │ │ ├── uc-browser.svg │ │ ├── ie.svg │ │ └── netscape.svg │ └── payments │ │ ├── neteller-dark.svg │ │ ├── neteller.svg │ │ ├── 2checkout-dark.svg │ │ ├── 2checkout.svg │ │ ├── visa.svg │ │ └── visa-dark.svg ├── App.test.js ├── index.css ├── index.js ├── App.css ├── components │ ├── pages │ │ ├── Directory.js │ │ ├── Privacy.js │ │ └── Support.js │ └── TreeView.js ├── App.js └── utils.js ├── .github ├── PULL_REQUEST_TEMPLATE.md ├── ISSUE_TEMPLATE.md └── RELEASE_TEMPLATE.md ├── server.js ├── .gitignore ├── package.json ├── LICENSE └── CONTRIBUTING.md /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Chieze-Franklin/githint/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /src/fonts/feather/feather-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Chieze-Franklin/githint/HEAD/src/fonts/feather/feather-webfont.eot -------------------------------------------------------------------------------- /src/fonts/feather/feather-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Chieze-Franklin/githint/HEAD/src/fonts/feather/feather-webfont.ttf -------------------------------------------------------------------------------- /src/fonts/feather/feather-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Chieze-Franklin/githint/HEAD/src/fonts/feather/feather-webfont.woff -------------------------------------------------------------------------------- /public/images/screenshots/passing-tests.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Chieze-Franklin/githint/HEAD/public/images/screenshots/passing-tests.png -------------------------------------------------------------------------------- /src/context-api-redux/actions/index.js: -------------------------------------------------------------------------------- 1 | export const changeBranchSearch = (value) => ({ 2 | type: 'CHANGE_BRANCH_SEARCH', 3 | payload: value 4 | }); 5 | -------------------------------------------------------------------------------- /src/data/pull.js: -------------------------------------------------------------------------------- 1 | import { createTreeNodesFromObject } from '../utils'; 2 | 3 | import data from './pull.json'; 4 | const nodes = createTreeNodesFromObject(data, 'pull'); 5 | export default nodes; 6 | -------------------------------------------------------------------------------- /src/data/tree.js: -------------------------------------------------------------------------------- 1 | import { createTreeNodesFromObject } from '../utils'; 2 | 3 | import data from './tree.json'; 4 | const nodes = createTreeNodesFromObject(data, 'tree'); 5 | export default nodes; 6 | -------------------------------------------------------------------------------- /src/images/flags/bd.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/de.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/pl.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/am.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/bq.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/lu.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/data/index.js: -------------------------------------------------------------------------------- 1 | import branch from './branch'; 2 | import commit from './commit'; 3 | import pull from './pull'; 4 | import tree from './tree'; 5 | 6 | export default { 7 | branch, 8 | commit, 9 | pull, 10 | tree 11 | } 12 | -------------------------------------------------------------------------------- /src/images/flags/mc.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/ua.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/gb-sct.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/at.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/gb-eng.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/id.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/lv.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/dk.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/ae.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/fi.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/pe.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/bw.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/ga.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/gf.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/ma.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/ml.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/ne.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/sl.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/td.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/ye.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/ci.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/co.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/ng.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/mq.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/ru.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/cr.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/fr.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/gp.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/mf.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/mv.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/th.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/bg.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/mu.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/App.test.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './App'; 4 | 5 | it('renders without crashing', () => { 6 | const div = document.createElement('div'); 7 | ReactDOM.render(, div); 8 | ReactDOM.unmountComponentAtNode(div); 9 | }); 10 | -------------------------------------------------------------------------------- /src/images/flags/ch.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/dz.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/gh.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/gn.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/mg.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/wf.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/be.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/bl.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/hu.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/it.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/nc.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/pm.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/re.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/yt.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | #### What does this PR do? 2 | #### Description of task to be completed? 3 | #### How should this be manually tested? 4 | #### Any background context you want to provide? 5 | #### What are the relevant pivotal tracker stories? 6 | #### Screenshots (if appropriate) 7 | #### Questions: 8 | -------------------------------------------------------------------------------- /src/images/flags/ie.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/ro.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/ee.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/no.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/sj.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/sr.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /server.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const path = require('path'); 3 | const app = express(); 4 | 5 | app.use(express.static(path.join(__dirname, 'build'))); 6 | 7 | app.get('*', function(req, res) { 8 | res.sendFile(path.join(__dirname, 'build', 'index.html')); 9 | }); 10 | 11 | app.listen(process.env.PORT || 3001); 12 | -------------------------------------------------------------------------------- /src/context-api-redux/store.js: -------------------------------------------------------------------------------- 1 | import { createStore } from './index'; 2 | 3 | import reducer from './reducers'; 4 | 5 | const initialState = { 6 | app: { 7 | config: '.githint.json', 8 | name: 'GitHint', 9 | }, 10 | searchTerms: { 11 | branch: '' 12 | } 13 | } 14 | 15 | export default createStore(reducer, initialState); 16 | -------------------------------------------------------------------------------- /src/images/flags/cd.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/to.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/nl.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/tt.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/lc.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | } 10 | ], 11 | "start_url": ".", 12 | "display": "standalone", 13 | "theme_color": "#000000", 14 | "background_color": "#ffffff" 15 | } 16 | -------------------------------------------------------------------------------- /src/images/flags/ss.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/mk.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/jm.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/qa.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/bf.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/crypto-currencies/eos.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | todo.txt 21 | 22 | npm-debug.log* 23 | yarn-debug.log* 24 | yarn-error.log* 25 | -------------------------------------------------------------------------------- /src/images/flags/la.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/bj.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/cz.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | padding: 0; 4 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", 5 | "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", 6 | sans-serif; 7 | -webkit-font-smoothing: antialiased; 8 | -moz-osx-font-smoothing: grayscale; 9 | } 10 | 11 | code { 12 | font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", 13 | monospace; 14 | } 15 | -------------------------------------------------------------------------------- /src/images/flags/cg.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/pw.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/sd.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/lt.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/jp.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/sn.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/kw.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/ax.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/ly.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/vc.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Identified Gap 4 | 5 | 6 | ## Possible Solution 7 | 8 | 9 | ## Examples 10 | 11 | 12 | ## Additional Context 13 | -------------------------------------------------------------------------------- /src/images/flags/gm.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/is.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/so.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/vn.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/context-api-redux/reducers/index.js: -------------------------------------------------------------------------------- 1 | const initialState = { 2 | app: { 3 | name: 'GitHint' 4 | }, 5 | searchTerms: { 6 | branch: '' 7 | } 8 | }; 9 | 10 | export default function(state = initialState, action) { 11 | switch (action.type) { 12 | case 'CHANGE_BRANCH_SEARCH': 13 | return { 14 | ...state, 15 | searchTerms: { 16 | ...state.searchTerms, 17 | ...action.payload 18 | } 19 | } 20 | default: 21 | return state; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/images/flags/tz.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/sc.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/ps.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/az.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/gy.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/bs.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/crypto-currencies/dash.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import './index.css'; 4 | import "./c3jscustom.css"; 5 | import './tabler.css'; 6 | import App from './App'; 7 | import * as serviceWorker from './serviceWorker'; 8 | 9 | ReactDOM.render(, document.getElementById('root')); 10 | 11 | // If you want your app to work offline and load faster, you can change 12 | // unregister() to register() below. Note this comes with some pitfalls. 13 | // Learn more about service workers: https://bit.ly/CRA-PWA 14 | serviceWorker.unregister(); 15 | -------------------------------------------------------------------------------- /src/images/flags/bh.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/crypto-currencies/ethereum.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/cl.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/dj.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/bv.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/fo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/gg.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/gl.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/tl.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/cu.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/sy.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/App.css: -------------------------------------------------------------------------------- 1 | .App { 2 | text-align: center; 3 | } 4 | 5 | .App-logo { 6 | animation: App-logo-spin infinite 20s linear; 7 | height: 40vmin; 8 | pointer-events: none; 9 | } 10 | 11 | .App-header { 12 | background-color: #282c34; 13 | min-height: 100vh; 14 | display: flex; 15 | flex-direction: column; 16 | align-items: center; 17 | justify-content: center; 18 | font-size: calc(10px + 2vmin); 19 | color: white; 20 | } 21 | 22 | .App-link { 23 | color: #61dafb; 24 | } 25 | 26 | @keyframes App-logo-spin { 27 | from { 28 | transform: rotate(0deg); 29 | } 30 | to { 31 | transform: rotate(360deg); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/images/flags/cw.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/pr.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/tr.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.github/RELEASE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | `title: , Version ` 2 | 3 | ## New Guidelines 4 | 5 | >You can exclude this section if there are no new guidelines 6 | 7 | - **Section Title (eg. Developing)**: Guideline name (and short description), `#` 8 | - etc 9 | 10 | ## Updates 11 | 12 | - **Section Title (eg. Developing)**: Update made, `#` 13 | - etc. 14 | 15 | ## Fixes 16 | 17 | - **Section Title (eg. Developing)**: Update made, `#` 18 | - etc. 19 | 20 | ## Credits 21 | 22 | >List contributors who were involved in the changes for the release, including reviewers. 23 | 24 | - Name (@gh-handle) 25 | - etc 26 | -------------------------------------------------------------------------------- /src/images/flags/se.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/cf.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/gr.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/rw.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/jo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/bb.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/st.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/nr.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/crypto-currencies/litecoin.svg: -------------------------------------------------------------------------------- 1 | Litecoin -------------------------------------------------------------------------------- /src/images/flags/lr.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/tg.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/gw.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/tk.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/cm.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/mm.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/cn.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/pa.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/ag.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/pk.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/ws.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/mr.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/gb.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/fm.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/kn.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/in.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/tn.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/kp.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/pages/Directory.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | import SiteWrapper from '../layouts/SiteWrapper'; 4 | import treeData from '../../data'; 5 | import TreeView from '../TreeView'; 6 | 7 | import { 8 | Page, 9 | Grid, 10 | } from 'tabler-react'; 11 | 12 | function Directory(props) { 13 | const hint = `You can browse through the '${props.object}' object by searching ` + 14 | `for ${props.object}.{field}.{innerField}...\n` + 15 | `For instance: ${props.object}${props.object === "branch" ? ".name" : ".url"}`; 16 | const placeholder = `Browse the '${props.object}' object`; 17 | return ( 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | ); 26 | } 27 | 28 | export default Directory; 29 | -------------------------------------------------------------------------------- /src/images/flags/ca.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/images/flags/il.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/mh.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/za.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/eh.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/ve.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/hn.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/tf.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/eu.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "githint", 3 | "version": "0.1.0", 4 | "private": true, 5 | "dependencies": { 6 | "babel-loader": "8.0.5", 7 | "devextreme": "^19.1.4", 8 | "devextreme-react": "^19.1.4", 9 | "express": "^4.17.1", 10 | "react": "^16.8.6", 11 | "react-dom": "^16.8.6", 12 | "react-router-dom": "^5.0.1", 13 | "react-scripts": "3.0.1", 14 | "request": "^2.88.0", 15 | "request-promise-native": "^1.0.7", 16 | "tabler-react": "^1.30.1" 17 | }, 18 | "scripts": { 19 | "build": "react-scripts build", 20 | "eject": "react-scripts eject", 21 | "heroku-postbuild": "npm run build", 22 | "start": "node server", 23 | "start:dev": "react-scripts start", 24 | "test": "react-scripts test" 25 | }, 26 | "eslintConfig": { 27 | "extends": "react-app" 28 | }, 29 | "browserslist": { 30 | "production": [ 31 | ">0.2%", 32 | "not dead", 33 | "not op_mini all" 34 | ], 35 | "development": [ 36 | "last 1 chrome version", 37 | "last 1 firefox version", 38 | "last 1 safari version" 39 | ] 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2019 Franklin Chieze 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. -------------------------------------------------------------------------------- /src/images/browsers/blackberry.svg: -------------------------------------------------------------------------------- 1 | blackberryCreated with Sketch.Layer 1 -------------------------------------------------------------------------------- /src/images/flags/sb.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/browsers/aol-explorer.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/crypto-currencies/bitcoin.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/crypto-currencies/ripple.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/ph.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/tw.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/sg.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/na.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/km.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/bi.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/uz.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/np.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/ke.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/browsers/edge.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/browsers/maxthon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/browsers/vivaldi.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/ba.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/my.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/et.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/data/tree.json: -------------------------------------------------------------------------------- 1 | { 2 | "sha": "9fb037999f264ba9a7fc6274d15fa3ae2ab98312", 3 | "url": "https://api.github.com/repos/octocat/Hello-World/trees/9fb037999f264ba9a7fc6274d15fa3ae2ab98312", 4 | "tree": [ 5 | { 6 | "path": "file.rb", 7 | "mode": "100644", 8 | "type": "blob", 9 | "size": 30, 10 | "sha": "44b4fc6d56897b048c772eb4087f854f46256132", 11 | "url": "https://api.github.com/repos/octocat/Hello-World/git/blobs/44b4fc6d56897b048c772eb4087f854f46256132" 12 | }, 13 | { 14 | "path": "subdir", 15 | "mode": "040000", 16 | "type": "tree", 17 | "sha": "f484d249c660418515fb01c2b9662073663c242e", 18 | "url": "https://api.github.com/repos/octocat/Hello-World/git/blobs/f484d249c660418515fb01c2b9662073663c242e" 19 | }, 20 | { 21 | "path": "exec_file", 22 | "mode": "100755", 23 | "type": "blob", 24 | "size": 75, 25 | "sha": "45b983be36b73c0788dc9cbcb76cbb80fc7bb057", 26 | "url": "https://api.github.com/repos/octocat/Hello-World/git/blobs/45b983be36b73c0788dc9cbcb76cbb80fc7bb057" 27 | }, 28 | { 29 | "path": "subdir/file.txt", 30 | "mode": "100644", 31 | "type": "blob", 32 | "size": 132, 33 | "sha": "7c258a9869f33c1e1e1f74fbb32f07c86cb5a75b", 34 | "url": "https://api.github.com/repos/octocat/Hello-World/git/7c258a9869f33c1e1e1f74fbb32f07c86cb5a75b" 35 | } 36 | ], 37 | "truncated": false 38 | } -------------------------------------------------------------------------------- /src/images/flags/mn.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/uy.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/pages/Privacy.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | import { connect } from '../../context-api-redux'; 4 | 5 | import SiteWrapper from '../layouts/SiteWrapper'; 6 | 7 | import { 8 | Page, 9 | Grid, 10 | Card, 11 | } from "tabler-react"; 12 | 13 | function Privacy(props) { 14 | return ( 15 | 16 | 17 | 18 | 19 | 20 | {props.appName} does not collect, store or share your data 21 | 22 | 23 |

24 | {props.appName} does not collect, store or share any piece of information about you 25 | or your source code. {props.appName} works with the metadata of branches, 26 | commits, pull requests and trees of your repository by retrieving them via the 27 | GitHub API and making them available to you (and only you) in your {props.appConfig} file checks. 28 |

29 |

30 | The only file ever read from your repository is the {props.appConfig} file. 31 |

32 |
33 |
34 |
35 |
36 |
37 |
); 38 | } 39 | 40 | const mapStateToProps = state => ({ 41 | appConfig: state.app.config, 42 | appName: state.app.name 43 | }); 44 | 45 | export default connect(mapStateToProps, null)(Privacy); 46 | -------------------------------------------------------------------------------- /src/images/flags/sk.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/browsers/opera.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/cv.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/App.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { BrowserRouter as Router, Route, Switch } from "react-router-dom"; 3 | 4 | import ConfigPage from "./components/pages/Config"; 5 | import DirectoryPage from "./components/pages/Directory"; 6 | import HomePage from "./components/pages/Home"; 7 | import PrivacyPage from "./components/pages/Privacy"; 8 | import SupportPage from "./components/pages/Support"; 9 | 10 | import { Provider } from './context-api-redux'; 11 | import store from './context-api-redux/store'; 12 | 13 | function App() { 14 | return ( 15 | 16 | 17 | 18 | 19 | 20 | 21 | { 22 | return () 23 | }} /> 24 | { 25 | return () 26 | }} /> 27 | { 28 | return () 29 | }} /> 30 | { 31 | return () 32 | }} /> 33 | 34 | 35 | 36 | 37 | 38 | 39 | ); 40 | } 41 | 42 | export default App; 43 | -------------------------------------------------------------------------------- /src/images/flags/ls.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/au.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/hm.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/utils.js: -------------------------------------------------------------------------------- 1 | export const createTreeNodesFromObject = (object, parentKey) => { 2 | const nodes = []; 3 | const fieldNames = Object.keys(object); 4 | for (let i = 0; i < fieldNames.length; i++) { 5 | const fieldName = fieldNames[i]; 6 | const fieldValue = object[fieldName]; 7 | const node = { 8 | key: `${parentKey}.${fieldName}`, 9 | label: fieldName 10 | }; 11 | if (fieldValue === null) { 12 | node.example = `null`; 13 | } else if (typeof fieldValue === 'object') { 14 | if (Array.isArray(fieldValue)) { 15 | if (fieldValue.length === 0) { 16 | node.example = '[]'; 17 | } else if (typeof fieldValue[0] === 'object') { 18 | node.nodes = []; 19 | for (let j = 0; j < fieldValue.length; j++) { 20 | const innerNode = { 21 | key: `${node.key}[${j}]`, 22 | label: `${j}` 23 | }; 24 | const fieldValueElement = fieldValue[j]; 25 | innerNode.nodes = createTreeNodesFromObject(fieldValueElement, innerNode.key); 26 | node.nodes.push(innerNode); 27 | } 28 | } else { 29 | if (typeof fieldValue[0] === 'string') { 30 | node.example = `[${fieldValue.map(value => `"${value}"`).join(', ')}]`; 31 | } else { 32 | node.example = `[${fieldValue.join(', ')}]`; 33 | } 34 | } 35 | } else { 36 | node.nodes = createTreeNodesFromObject(fieldValue, node.key); 37 | } 38 | } else { 39 | if (typeof fieldValue === 'string') { 40 | node.example = `"${fieldValue}"`; 41 | } else { 42 | node.example = `${fieldValue}`; 43 | } 44 | } 45 | nodes.push(node); 46 | } 47 | return nodes; 48 | } 49 | -------------------------------------------------------------------------------- /src/images/flags/gd.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/tj.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/mo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 13 | 22 | 23 | 26 | 28 | 29 | 30 | 31 | GitHint 32 | 33 | 34 | 35 |
36 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /src/components/TreeView.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | import 'devextreme/dist/css/dx.common.css'; 4 | import 'devextreme/dist/css/dx.light.css'; 5 | 6 | // https://js.devexpress.com/Documentation/ApiReference/UI_Widgets/dxTreeView/ 7 | import Tree from 'devextreme-react/tree-view'; 8 | 9 | const keyStyle = 'color:blue' 10 | const getValueStyle = (value) => { 11 | value = value.toString(); 12 | if (value.startsWith('"')) { 13 | return 'color:brown'; 14 | } else if (new RegExp('[0-9]+').test(value)) { 15 | return 'color:teal'; 16 | } else if (new RegExp('((true)|(false))').test(value)) { 17 | return 'color:magenta'; 18 | } else { 19 | return 'color:black'; 20 | } 21 | } 22 | 23 | function TreeView(props) { 24 | const display = ({label, example}) => { 25 | return typeof example !== 'undefined' ? `${label}: ${example}` : `${label}`; 26 | }; 27 | const template = (itemData, itemIndex, element) => { 28 | // element.append( 29 | // itemData.label 30 | // ) 31 | var d = document.createElement("div"); 32 | const {label, example} = itemData; 33 | if (typeof example !== 'undefined') { 34 | d.innerHTML = `${label}: ` + 35 | `${example}`; 36 | } else { 37 | d.innerHTML = `${label}`; 38 | } 39 | return d; 40 | }; 41 | 42 | return ( 43 | 44 | 62 | 63 | ); 64 | } 65 | 66 | export default TreeView; 67 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ## Contributing 2 | 3 | [fork]: /fork 4 | [pr]: /compare 5 | [style]: https://standardjs.com/ 6 | [code-of-conduct]: CODE_OF_CONDUCT.md 7 | 8 | Hi there! We're thrilled that you'd like to contribute to this project. Your help is essential for keeping it great. 9 | 10 | Please note that this project is released with a [Contributor Code of Conduct][code-of-conduct]. By participating in this project you agree to abide by its terms. 11 | 12 | ## Issues and PRs 13 | 14 | If you have suggestions for how this project could be improved, or want to report a bug, open an issue! We'd love all and any contributions. If you have questions, too, we'd love to hear them. 15 | 16 | We'd also love PRs. If you're thinking of a large PR, we advise opening up an issue first to talk about it, though! Look at the links below if you're not sure how to open a PR. 17 | 18 | ## Submitting a pull request 19 | 20 | 1. [Fork][fork] and clone the repository. 21 | 1. Create a new branch: `git checkout -b my-branch-name`. 22 | 1. Push to your fork and [submit a pull request][pr]. 23 | 1. Make sure the GitHint checks still pass. 24 | 1. Pat your self on the back and wait for your pull request to be reviewed and merged. 25 | 26 | Here are a few things you can do that will increase the likelihood of your pull request being accepted: 27 | 28 | - Follow the [style guide][style] which is using standard. Any linting errors should be shown when running `npm test`. 29 | - Write and update tests. 30 | - Keep your changes as focused as possible. If there are multiple changes you would like to make that are not dependent upon each other, consider submitting them as separate pull requests. 31 | - Write a [good commit message](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html). 32 | 33 | Work in Progress pull requests are also welcome to get feedback early on, or if there is something blocked you. 34 | 35 | ## Resources 36 | 37 | - [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/) 38 | - [Using Pull Requests](https://help.github.com/articles/about-pull-requests/) 39 | - [GitHub Help](https://help.github.com) 40 | -------------------------------------------------------------------------------- /src/images/flags/nu.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/pg.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/ao.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/iq.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/kr.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/ge.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/browsers/uc-browser.svg: -------------------------------------------------------------------------------- 1 | uc-browserCreated with Sketch. -------------------------------------------------------------------------------- /public/images/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ghint 5 | Created with Sketch. 6 | 7 | 8 | 9 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/images/payments/neteller-dark.svg: -------------------------------------------------------------------------------- 1 | Neteller-darkCreated with Sketch. -------------------------------------------------------------------------------- /src/images/payments/neteller.svg: -------------------------------------------------------------------------------- 1 | Neteller-lightCreated with Sketch. -------------------------------------------------------------------------------- /src/images/browsers/ie.svg: -------------------------------------------------------------------------------- 1 | image/svg+xml -------------------------------------------------------------------------------- /src/components/pages/Support.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | import { connect } from '../../context-api-redux'; 4 | 5 | import SiteWrapper from '../layouts/SiteWrapper'; 6 | 7 | import { 8 | Page, 9 | Grid, 10 | Card, 11 | Icon 12 | } from "tabler-react"; 13 | 14 | function Privacy(props) { 15 | return ( 16 | 17 | 18 | 19 | 20 | 21 | Issues 22 | 23 | 24 |

25 | The development of {props.appName} happens in the open 26 | on GitHub. To 27 | raise new issues or to see existing issues, 28 | go here. 29 |

30 |

31 | The development of this {props.appName} website also happens in the open 32 | on GitHub. To 33 | raise new issues or to see existing issues, 34 | go here. 35 |

36 |
37 |
38 |
39 |
40 | 41 | 42 | 43 | 44 | Contact 45 | 46 | 47 |

48 | 49 | chieze.franklin@gmail.com
50 | 51 | @franklin_chieze
52 | 53 | @Chieze-Franklin 54 |

55 |
56 |
57 |
58 |
59 |
60 |
); 61 | } 62 | 63 | const mapStateToProps = state => ({ 64 | appConfig: state.app.config, 65 | appName: state.app.name 66 | }); 67 | 68 | export default connect(mapStateToProps, null)(Privacy); 69 | -------------------------------------------------------------------------------- /src/images/flags/ck.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/payments/2checkout-dark.svg: -------------------------------------------------------------------------------- 1 | 2checkout-darkCreated with Sketch. -------------------------------------------------------------------------------- /src/images/payments/2checkout.svg: -------------------------------------------------------------------------------- 1 | 2checkout-lightCreated with Sketch. -------------------------------------------------------------------------------- /src/images/browsers/netscape.svg: -------------------------------------------------------------------------------- 1 | netscapeCreated with Sketch. -------------------------------------------------------------------------------- /src/images/flags/tv.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/si.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/crypto-currencies/nem.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/payments/visa.svg: -------------------------------------------------------------------------------- 1 | Visa-lightCreated with Sketch. -------------------------------------------------------------------------------- /src/images/payments/visa-dark.svg: -------------------------------------------------------------------------------- 1 | Visa-darkCreated with Sketch. -------------------------------------------------------------------------------- /src/context-api-redux/index.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | 3 | const Context = React.createContext(); 4 | const Consumer = Context.Consumer; 5 | 6 | export function connect(mapStateToProps, mapDispatchToProps) { 7 | const obj = { 8 | mapStateToProps, 9 | mapDispatchToProps 10 | } 11 | return withConsumer.bind(obj); 12 | } 13 | 14 | export function createStore(reducer, state) { 15 | return { 16 | reducer, 17 | state 18 | } 19 | } 20 | 21 | export class Provider extends Component { 22 | constructor(props) { 23 | super(props); 24 | const { reducer, state } = props.store; 25 | this.state = { 26 | ...state, 27 | dispatch: action => this.setState(state => reducer(state, action)) 28 | } 29 | } 30 | render() { 31 | return ( 32 | 33 | {this.props.children} 34 | 35 | ) 36 | } 37 | } 38 | 39 | function withConsumer(InnerComponent) { 40 | const mapStateToProps = this.mapStateToProps; 41 | let mapDispatchToProps = this.mapDispatchToProps; 42 | return class extends Component { 43 | render () { 44 | return ( 45 | {value => { 46 | const dispatch = value.dispatch; 47 | const state = {...value}; 48 | let getPropsFromState = {}; 49 | if (mapStateToProps) { 50 | getPropsFromState = mapStateToProps(state); 51 | } 52 | let getPropsFromDispatch = {}; 53 | if (mapDispatchToProps) { 54 | // mapDispatchToProps could be a function 55 | // which takes the dispatch function and returns an object 56 | if (typeof mapDispatchToProps === 'function') { 57 | mapDispatchToProps = mapDispatchToProps(dispatch); 58 | } 59 | // at this point mapDispatchToProps is expected to be an object 60 | const keys = Object.keys(mapDispatchToProps); 61 | for (let i = 0; i < keys.length; i++) { 62 | // eslint-disable-next-line 63 | getPropsFromDispatch[keys[i]] = (args) => { 64 | const func = mapDispatchToProps[keys[i]]; 65 | const inner = func(args); 66 | if (typeof inner === 'function') { 67 | inner(dispatch, state); 68 | } else if (typeof inner === 'object') { 69 | dispatch(inner); 70 | } 71 | // the above if block is similar to what obtains in redux-thunk 72 | // https://github.com/reduxjs/redux-thunk/blob/master/src/index.js 73 | } 74 | } 75 | } 76 | return 77 | }} 78 | ) 79 | } 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /src/images/flags/zw.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flags/nz.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/data/branch.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "master", 3 | "commit": { 4 | "sha": "7fd1a60b01f91b314f59955a4e4d4e80d8edf11d", 5 | "node_id": "MDY6Q29tbWl0N2ZkMWE2MGIwMWY5MWIzMTRmNTk5NTVhNGU0ZDRlODBkOGVkZjExZA==", 6 | "commit": { 7 | "author": { 8 | "name": "The Octocat", 9 | "date": "2012-03-06T15:06:50-08:00", 10 | "email": "octocat@nowhere.com" 11 | }, 12 | "url": "https://api.github.com/repos/octocat/Hello-World/git/commits/7fd1a60b01f91b314f59955a4e4d4e80d8edf11d", 13 | "message": "Merge pull request #6 from Spaceghost/patch-1\n\nNew line at end of file.", 14 | "tree": { 15 | "sha": "b4eecafa9be2f2006ce1b709d6857b07069b4608", 16 | "url": "https://api.github.com/repos/octocat/Hello-World/git/trees/b4eecafa9be2f2006ce1b709d6857b07069b4608" 17 | }, 18 | "committer": { 19 | "name": "The Octocat", 20 | "date": "2012-03-06T15:06:50-08:00", 21 | "email": "octocat@nowhere.com" 22 | }, 23 | "verification": { 24 | "verified": false, 25 | "reason": "unsigned", 26 | "signature": null, 27 | "payload": null 28 | } 29 | }, 30 | "author": { 31 | "gravatar_id": "", 32 | "avatar_url": "https://secure.gravatar.com/avatar/7ad39074b0584bc555d0417ae3e7d974?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png", 33 | "url": "https://api.github.com/users/octocat", 34 | "id": 583231, 35 | "login": "octocat" 36 | }, 37 | "parents": [ 38 | { 39 | "sha": "553c2077f0edc3d5dc5d17262f6aa498e69d6f8e", 40 | "url": "https://api.github.com/repos/octocat/Hello-World/commits/553c2077f0edc3d5dc5d17262f6aa498e69d6f8e" 41 | }, 42 | { 43 | "sha": "762941318ee16e59dabbacb1b4049eec22f0d303", 44 | "url": "https://api.github.com/repos/octocat/Hello-World/commits/762941318ee16e59dabbacb1b4049eec22f0d303" 45 | } 46 | ], 47 | "url": "https://api.github.com/repos/octocat/Hello-World/commits/7fd1a60b01f91b314f59955a4e4d4e80d8edf11d", 48 | "committer": { 49 | "gravatar_id": "", 50 | "avatar_url": "https://secure.gravatar.com/avatar/7ad39074b0584bc555d0417ae3e7d974?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png", 51 | "url": "https://api.github.com/users/octocat", 52 | "id": 583231, 53 | "login": "octocat" 54 | } 55 | }, 56 | "_links": { 57 | "html": "https://github.com/octocat/Hello-World/tree/master", 58 | "self": "https://api.github.com/repos/octocat/Hello-World/branches/master" 59 | }, 60 | "protected": true, 61 | "protection": { 62 | "enabled": true, 63 | "required_status_checks": { 64 | "enforcement_level": "non_admins", 65 | "contexts": [ 66 | "ci-test", 67 | "linter" 68 | ] 69 | } 70 | }, 71 | "protection_url": "https://api.github.com/repos/octocat/hello-world/branches/master/protection" 72 | } --------------------------------------------------------------------------------