Merge pull request #1 from RealOrangeOne/rewrite
Rewrite as hacky static site
This commit is contained in:
commit
53085be4f4
26 changed files with 7186 additions and 128 deletions
17
.circleci/config.yml
Normal file
17
.circleci/config.yml
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
version: 2.0
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
docker:
|
||||||
|
- image: circleci/node:10
|
||||||
|
steps:
|
||||||
|
- checkout
|
||||||
|
- run:
|
||||||
|
name: Install dependencies
|
||||||
|
command: npm install
|
||||||
|
- run:
|
||||||
|
name: Build Project
|
||||||
|
command: npm run build
|
||||||
|
- run:
|
||||||
|
name: Run tests
|
||||||
|
command: npm test
|
30
.gitignore
vendored
30
.gitignore
vendored
|
@ -1,20 +1,6 @@
|
||||||
|
|
||||||
# Created by https://www.gitignore.io/api/node,hugo
|
# Created by https://www.gitignore.io/api/node
|
||||||
# Edit at https://www.gitignore.io/?templates=node,hugo
|
# Edit at https://www.gitignore.io/?templates=node
|
||||||
|
|
||||||
### Hugo ###
|
|
||||||
### Hugo ###
|
|
||||||
# gitginore template for Hugo projects
|
|
||||||
# website: https://gohugo.io
|
|
||||||
|
|
||||||
# generated files by hugo
|
|
||||||
/public/
|
|
||||||
/resources/_gen/
|
|
||||||
|
|
||||||
# executable may be added to repository
|
|
||||||
hugo.exe
|
|
||||||
hugo.darwin
|
|
||||||
hugo.linux
|
|
||||||
|
|
||||||
### Node ###
|
### Node ###
|
||||||
# Logs
|
# Logs
|
||||||
|
@ -23,6 +9,10 @@ logs
|
||||||
npm-debug.log*
|
npm-debug.log*
|
||||||
yarn-debug.log*
|
yarn-debug.log*
|
||||||
yarn-error.log*
|
yarn-error.log*
|
||||||
|
lerna-debug.log*
|
||||||
|
|
||||||
|
# Diagnostic reports (https://nodejs.org/api/report.html)
|
||||||
|
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
||||||
|
|
||||||
# Runtime data
|
# Runtime data
|
||||||
pids
|
pids
|
||||||
|
@ -35,6 +25,7 @@ lib-cov
|
||||||
|
|
||||||
# Coverage directory used by tools like istanbul
|
# Coverage directory used by tools like istanbul
|
||||||
coverage
|
coverage
|
||||||
|
*.lcov
|
||||||
|
|
||||||
# nyc test coverage
|
# nyc test coverage
|
||||||
.nyc_output
|
.nyc_output
|
||||||
|
@ -58,6 +49,9 @@ jspm_packages/
|
||||||
# TypeScript v1 declaration files
|
# TypeScript v1 declaration files
|
||||||
typings/
|
typings/
|
||||||
|
|
||||||
|
# TypeScript cache
|
||||||
|
*.tsbuildinfo
|
||||||
|
|
||||||
# Optional npm cache directory
|
# Optional npm cache directory
|
||||||
.npm
|
.npm
|
||||||
|
|
||||||
|
@ -98,6 +92,6 @@ typings/
|
||||||
# DynamoDB Local files
|
# DynamoDB Local files
|
||||||
.dynamodb/
|
.dynamodb/
|
||||||
|
|
||||||
# End of https://www.gitignore.io/api/node,hugo
|
# End of https://www.gitignore.io/api/node
|
||||||
|
|
||||||
static/build
|
build/
|
||||||
|
|
4
.prettierrc
Normal file
4
.prettierrc
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"singleQuote": true,
|
||||||
|
"trailingComma": "es5"
|
||||||
|
}
|
|
@ -1,3 +1,4 @@
|
||||||
# Give money to me
|
# Give money to me
|
||||||
|
|
||||||
[![Netlify Status](https://api.netlify.com/api/v1/badges/1945adf5-cda6-4ac8-86b2-c19ede389ae8/deploy-status)](https://app.netlify.com/sites/give-money-to-me/deploys)
|
[![Netlify Status](https://api.netlify.com/api/v1/badges/1945adf5-cda6-4ac8-86b2-c19ede389ae8/deploy-status)](https://app.netlify.com/sites/give-money-to-me/deploys)
|
||||||
|
[![CircleCI](https://circleci.com/gh/RealOrangeOne/givemoneyto.me.svg?style=svg)](https://circleci.com/gh/RealOrangeOne/givemoneyto.me)
|
||||||
|
|
7
accounts.yml
Normal file
7
accounts.yml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
PayPal:
|
||||||
|
image: https://upload.wikimedia.org/wikipedia/commons/thumb/b/b7/PayPal_Logo_Icon_2014.svg/887px-PayPal_Logo_Icon_2014.svg.png
|
||||||
|
link: https://www.paypal.me/TheOrangeOne
|
||||||
|
|
||||||
|
Monzo:
|
||||||
|
image: https://upload.wikimedia.org/wikipedia/en/thumb/a/a3/Monzo_logo.svg/1920px-Monzo_logo.svg.png
|
||||||
|
link: https://monzo.me/jakehoward
|
16
config.yml
16
config.yml
|
@ -1,16 +0,0 @@
|
||||||
baseURL: "https://givemoneyto.me/"
|
|
||||||
title: "Give money to me"
|
|
||||||
|
|
||||||
staticDir: static/build
|
|
||||||
assetDir: static/build
|
|
||||||
|
|
||||||
disableKinds:
|
|
||||||
- sitemap
|
|
||||||
- taxonomyTerm
|
|
||||||
- 404
|
|
||||||
|
|
||||||
outputs:
|
|
||||||
home:
|
|
||||||
- html
|
|
||||||
page:
|
|
||||||
- html
|
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
title: Give Money To Me
|
|
||||||
---
|
|
|
@ -1,5 +0,0 @@
|
||||||
---
|
|
||||||
title: Monzo
|
|
||||||
image: https://upload.wikimedia.org/wikipedia/en/thumb/a/a3/Monzo_logo.svg/1920px-Monzo_logo.svg.png
|
|
||||||
link: https://monzo.me/jakehoward
|
|
||||||
---
|
|
|
@ -1,5 +0,0 @@
|
||||||
---
|
|
||||||
title: PayPal
|
|
||||||
image: https://upload.wikimedia.org/wikipedia/commons/thumb/b/b7/PayPal_Logo_Icon_2014.svg/887px-PayPal_Logo_Icon_2014.svg.png
|
|
||||||
link: https://www.paypal.me/TheOrangeOne
|
|
||||||
---
|
|
147
index.ts
Normal file
147
index.ts
Normal file
|
@ -0,0 +1,147 @@
|
||||||
|
import { readFileSync, writeFileSync } from 'fs';
|
||||||
|
import glob from 'glob';
|
||||||
|
import Handlebars from 'handlebars';
|
||||||
|
import jsyaml from 'js-yaml';
|
||||||
|
import mkdirp from 'mkdirp';
|
||||||
|
import Bundler from 'parcel-bundler';
|
||||||
|
import { dirname, join } from 'path';
|
||||||
|
import ProgressBar from 'progress';
|
||||||
|
import rimraf from 'rimraf';
|
||||||
|
import { mapObject, range } from 'underscore';
|
||||||
|
|
||||||
|
interface Account {
|
||||||
|
image: string;
|
||||||
|
link: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Redirect {
|
||||||
|
src: string;
|
||||||
|
dest: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const BUILD_DIR = join(__dirname, 'build');
|
||||||
|
const SRC_DIR = join(__dirname, 'src');
|
||||||
|
const PROGRESS_BAR_FORMAT = '[:bar] :rate/ps :percent :current/:total';
|
||||||
|
const MAX_VALUE = process.env.MAX_VALUE
|
||||||
|
? parseInt(process.env.MAX_VALUE, 10)
|
||||||
|
: 2;
|
||||||
|
const BUNDLER_OPTIONS = {
|
||||||
|
outDir: BUILD_DIR,
|
||||||
|
watch: false,
|
||||||
|
minify: true,
|
||||||
|
};
|
||||||
|
const NEW_LINES_RE = /(\r\n|\n|\r)/gm;
|
||||||
|
|
||||||
|
function readAccounts(): ReadonlyArray<Account> {
|
||||||
|
const rawAccounts: object = jsyaml.safeLoad(
|
||||||
|
readFileSync(join(__dirname, 'accounts.yml')).toString()
|
||||||
|
);
|
||||||
|
return Object.values(
|
||||||
|
mapObject(rawAccounts, (val, key) => {
|
||||||
|
return {
|
||||||
|
...val,
|
||||||
|
name: key,
|
||||||
|
};
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function statusOutput(message: string) {
|
||||||
|
console.log('> ' + message + '...');
|
||||||
|
}
|
||||||
|
|
||||||
|
function isPrecision(value: number, precision: number) {
|
||||||
|
return value.toFixed(precision) === value.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
function writeTemplate(
|
||||||
|
template: HandlebarsTemplateDelegate,
|
||||||
|
value: string,
|
||||||
|
context: any
|
||||||
|
) {
|
||||||
|
const outputFile = join(BUILD_DIR, value, 'index.html');
|
||||||
|
mkdirp.sync(dirname(outputFile));
|
||||||
|
writeFileSync(outputFile, template(context).replace(NEW_LINES_RE, ''));
|
||||||
|
}
|
||||||
|
|
||||||
|
function writeRedirects(redirects: ReadonlyArray<Redirect>) {
|
||||||
|
const template = Handlebars.compile(
|
||||||
|
readFileSync(join(SRC_DIR, 'redirects.txt')).toString()
|
||||||
|
);
|
||||||
|
writeFileSync(join(BUILD_DIR, '_redirects'), template({ redirects }));
|
||||||
|
}
|
||||||
|
|
||||||
|
function humanize(value: number) {
|
||||||
|
if (isPrecision(value, 0)) {
|
||||||
|
return value.toString();
|
||||||
|
}
|
||||||
|
return value.toFixed(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
(async function() {
|
||||||
|
rimraf.sync(BUILD_DIR);
|
||||||
|
|
||||||
|
statusOutput('Reading accounts');
|
||||||
|
const accounts = readAccounts();
|
||||||
|
|
||||||
|
statusOutput('Creating template');
|
||||||
|
const bundler = new Bundler(join(SRC_DIR, 'template.html'), BUNDLER_OPTIONS);
|
||||||
|
await bundler.bundle();
|
||||||
|
|
||||||
|
statusOutput('Compiling HTML template');
|
||||||
|
Handlebars.registerPartial(
|
||||||
|
'accounts',
|
||||||
|
readFileSync(join(SRC_DIR, 'accounts.html')).toString()
|
||||||
|
);
|
||||||
|
const template = Handlebars.compile(
|
||||||
|
readFileSync(join(BUILD_DIR, 'template.html')).toString()
|
||||||
|
);
|
||||||
|
|
||||||
|
const possibleValues = range(0, MAX_VALUE, 0.01);
|
||||||
|
const bar = new ProgressBar(PROGRESS_BAR_FORMAT, {
|
||||||
|
total: possibleValues.length,
|
||||||
|
width: 40,
|
||||||
|
});
|
||||||
|
|
||||||
|
const baseContext = {
|
||||||
|
accounts,
|
||||||
|
};
|
||||||
|
|
||||||
|
const redirects: Redirect[] = [];
|
||||||
|
|
||||||
|
statusOutput('Generating pages');
|
||||||
|
possibleValues.forEach(i => {
|
||||||
|
if (i) {
|
||||||
|
const value = parseFloat(i.toFixed(2));
|
||||||
|
const context = {
|
||||||
|
...baseContext,
|
||||||
|
displayValue: '£' + humanize(value),
|
||||||
|
value: humanize(value),
|
||||||
|
};
|
||||||
|
writeTemplate(template, value.toString(), context);
|
||||||
|
if (isPrecision(value, 1)) {
|
||||||
|
redirects.push({
|
||||||
|
src: value.toString() + '0',
|
||||||
|
dest: value.toString(),
|
||||||
|
});
|
||||||
|
// writeTemplate(template, value.toString() + '0', context);
|
||||||
|
}
|
||||||
|
if (isPrecision(value, 0)) {
|
||||||
|
redirects.push({
|
||||||
|
src: value.toString() + '.00',
|
||||||
|
dest: value.toString(),
|
||||||
|
});
|
||||||
|
redirects.push({
|
||||||
|
src: value.toString() + '.0',
|
||||||
|
dest: value.toString(),
|
||||||
|
});
|
||||||
|
// writeTemplate(template, value.toString() + '.00', context);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
bar.tick();
|
||||||
|
});
|
||||||
|
writeTemplate(template, '', { ...baseContext, displayValue: 'money' });
|
||||||
|
const filesOutput = glob.sync(join(BUILD_DIR, '**/index.html')).length;
|
||||||
|
console.log(`Generated ${filesOutput} files.`);
|
||||||
|
writeRedirects(redirects);
|
||||||
|
})();
|
|
@ -1,10 +0,0 @@
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Redirecting to {{ .Params.link }}</title>
|
|
||||||
<link rel="canonical" href="{{ .Params.link }}">
|
|
||||||
<meta http-equiv="refresh" content="0; url={{ .Params.link }}">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<p>Redirecting to {{ .Params.link }}...</p>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,36 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>{{ .Title }}</title>
|
|
||||||
{{ partial "style.html" "css/font-awesome.css" }}
|
|
||||||
{{ partial "style.html" "css/animate.css" }}
|
|
||||||
{{ partial "style.html" "scss/index.scss" }}
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="jumbotron mb-0 jumbotron-fluid text-center vertical-center">
|
|
||||||
<div class="container">
|
|
||||||
<h1 class="display-1">{{ .Site.Title }}</h1>
|
|
||||||
<p class="lead">You should give me money. Here's how:</p>
|
|
||||||
<h1>
|
|
||||||
<i class="fas fa-chevron-down mt-5 animated infinite slideInDown"></i>
|
|
||||||
</h1>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="jumbotron mb-0 jumbotron-fluid">
|
|
||||||
<div class="container">
|
|
||||||
<div class="card-deck">
|
|
||||||
{{ range .Pages.ByTitle }}
|
|
||||||
<div class="card text-center mx-5">
|
|
||||||
<a href="{{ .Permalink }}" class="colour-invert">
|
|
||||||
<img src="{{ .Params.image }}" class="card-img-top my-3 mx-3" alt="{{ .Title }} logo" style="max-width:40%" />
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{{ partial "script.html" "js/bootstrap.js" }}
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,2 +0,0 @@
|
||||||
{{ $script := resources.Get . | minify | fingerprint }}
|
|
||||||
<script type="text/javascript" src="{{ $script.RelPermalink }}" integrity="{{ $script.Data.Integrity }}"></script>
|
|
|
@ -1,2 +0,0 @@
|
||||||
{{ $style := resources.Get . | toCSS | minify | fingerprint }}
|
|
||||||
<link rel="stylesheet" href="{{ $style.RelPermalink }}" integrity="{{ $style.Data.Integrity }}" />
|
|
|
@ -1,9 +1,8 @@
|
||||||
[build]
|
[build]
|
||||||
publish = "public"
|
publish = "build"
|
||||||
command = "./scripts/build.sh"
|
command = "npm run build"
|
||||||
|
|
||||||
[build.environment]
|
[build.environment]
|
||||||
HUGO_VERSION = "0.52"
|
|
||||||
NODE_ENV = "production"
|
NODE_ENV = "production"
|
||||||
NPM_CONFIG_PRODUCTION = "false"
|
NPM_CONFIG_PRODUCTION = "false"
|
||||||
|
|
||||||
|
|
6878
package-lock.json
generated
6878
package-lock.json
generated
File diff suppressed because it is too large
Load diff
41
package.json
41
package.json
|
@ -2,7 +2,13 @@
|
||||||
"name": "givemoneyto.me",
|
"name": "givemoneyto.me",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {},
|
"scripts": {
|
||||||
|
"build": "ts-node index.ts",
|
||||||
|
"lint": "tsc --noEmit --project tsconfig.json && tslint --project tsconfig.json index.ts",
|
||||||
|
"prettier": "prettier --write index.ts",
|
||||||
|
"start": "http-server build/ -c-1",
|
||||||
|
"test": "npm run lint && npm run prettier -- --check"
|
||||||
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/RealOrangeOne/givemoneyto.me.git"
|
"url": "git+https://github.com/RealOrangeOne/givemoneyto.me.git"
|
||||||
|
@ -13,9 +19,34 @@
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/RealOrangeOne/givemoneyto.me#readme",
|
"homepage": "https://github.com/RealOrangeOne/givemoneyto.me#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@fortawesome/fontawesome-free": "^5.7.1",
|
"@fortawesome/fontawesome-free": "5.7.1",
|
||||||
"animate.css": "^3.7.0",
|
"@types/js-yaml": "^3.12.1",
|
||||||
"bootstrap": "4.2.1"
|
"@types/mkdirp": "^0.5.2",
|
||||||
|
"@types/node": "^12.0.10",
|
||||||
|
"@types/parcel-bundler": "^1.12.0",
|
||||||
|
"@types/progress": "^2.0.3",
|
||||||
|
"@types/rimraf": "^2.0.2",
|
||||||
|
"@types/underscore": "^1.9.1",
|
||||||
|
"animate.css": "3.7.0",
|
||||||
|
"bootstrap": "^4.2.1",
|
||||||
|
"glob": "^7.1.4",
|
||||||
|
"handlebars": "^4.1.2",
|
||||||
|
"http-server": "^0.11.1",
|
||||||
|
"jquery": "^3.4.1",
|
||||||
|
"js-yaml": "^3.13.1",
|
||||||
|
"mkdirp": "^0.5.1",
|
||||||
|
"parcel-bundler": "1.12.3",
|
||||||
|
"popper.js": "^1.15.0",
|
||||||
|
"prettier": "^1.18.2",
|
||||||
|
"progress": "^2.0.3",
|
||||||
|
"rimraf": "^2.6.3",
|
||||||
|
"sass": "^1.22.1",
|
||||||
|
"ts-node": "8.3.0",
|
||||||
|
"typescript": "3.5.2",
|
||||||
|
"underscore": "^1.9.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {}
|
"devDependencies": {
|
||||||
|
"tslint-config-dabapps": "github:dabapps/tslint-config-dabapps#v0.5.1",
|
||||||
|
"tslint": "5.18.0"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
rm -rf public/
|
|
||||||
|
|
||||||
mkdir -p static/build/js static/build/css
|
|
||||||
|
|
||||||
cp -r static/src/* static/build
|
|
||||||
|
|
||||||
cp node_modules/bootstrap/dist/js/bootstrap.bundle.min.js static/build/js/bootstrap.js
|
|
||||||
cp node_modules/animate.css/animate.min.css static/build/css/animate.css
|
|
||||||
cp -r node_modules/@fortawesome/fontawesome-free/css/all.min.css static/build/css/font-awesome.css
|
|
||||||
cp -r node_modules/@fortawesome/fontawesome-free/webfonts static/build
|
|
||||||
|
|
||||||
hugo -v --stepAnalysis --gc
|
|
|
@ -1,7 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
bash ./scripts/build.sh
|
|
||||||
|
|
||||||
hugo server --noHTTPCache --disableFastRender --gc
|
|
13
src/accounts.html
Normal file
13
src/accounts.html
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
<div class="jumbotron mb-0 jumbotron-fluid">
|
||||||
|
<div class="container">
|
||||||
|
<div class="card-deck">
|
||||||
|
{{#each accounts }}
|
||||||
|
<div class="card text-center mx-5">
|
||||||
|
<a href="{{ link }}/{{ ../value }}" class="colour-invert">
|
||||||
|
<img src="{{ image }}" class="card-img-top my-3 mx-3" alt="{{ name }} logo" style="max-width:40%" />
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
12
src/fathom.js
Normal file
12
src/fathom.js
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
(function(f, a, t, h, o, m){
|
||||||
|
a[h]=a[h]||function(){
|
||||||
|
(a[h].q=a[h].q||[]).push(arguments)
|
||||||
|
};
|
||||||
|
o=f.createElement('script'),
|
||||||
|
m=f.getElementsByTagName('script')[0];
|
||||||
|
o.async=1; o.src=t; o.id='fathom-script';
|
||||||
|
m.parentNode.insertBefore(o,m)
|
||||||
|
})(document, window, '//fathom.theorangeone.net/tracker.js', 'fathom');
|
||||||
|
|
||||||
|
fathom('set', 'siteId', 'GOWOM');
|
||||||
|
fathom('trackPageview');
|
3
src/redirects.txt
Normal file
3
src/redirects.txt
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{{#each redirects }}
|
||||||
|
/{{src}} /{{dest}} 200
|
||||||
|
{{/each}}
|
25
src/template.html
Normal file
25
src/template.html
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" href="../node_modules/@fortawesome/fontawesome-free/css/all.min.css" />
|
||||||
|
<link rel="stylesheet" href="../node_modules/animate.css/animate.min.css" />
|
||||||
|
<link rel="stylesheet" href="./index.scss" />
|
||||||
|
<title>Give {{ displayValue }} to me</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="jumbotron mb-0 jumbotron-fluid text-center vertical-center">
|
||||||
|
<div class="container">
|
||||||
|
<h1 class="display-1">Give {{ displayValue }} to me</h1>
|
||||||
|
<p class="lead">You should give me {{ displayValue }}. Here's how:</p>
|
||||||
|
<h1>
|
||||||
|
<i class="fas fa-chevron-down mt-5 animated infinite slideInDown"></i>
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{> accounts }}
|
||||||
|
|
||||||
|
<script type="text/javascript" src="../node_modules/bootstrap/js/src/index.js"></script>
|
||||||
|
|
||||||
|
<script type="text/javascript" src="./fathom.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
20
tsconfig.json
Normal file
20
tsconfig.json
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"noImplicitAny": true,
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"pretty": true,
|
||||||
|
"strict": true,
|
||||||
|
"allowSyntheticDefaultImports": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"allowJs": false,
|
||||||
|
"checkJs": false,
|
||||||
|
"noUnusedLocals": true,
|
||||||
|
"noUnusedParameters": true,
|
||||||
|
"moduleResolution": "node",
|
||||||
|
"target": "es6",
|
||||||
|
"baseUrl": "./",
|
||||||
|
"typeRoots" : [
|
||||||
|
"node_modules/@types/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
}
|
9
tslint.json
Normal file
9
tslint.json
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"extends": [
|
||||||
|
"tslint-config-dabapps"
|
||||||
|
],
|
||||||
|
"rules": {
|
||||||
|
"no-console": false,
|
||||||
|
"only-arrow-functions": false
|
||||||
|
}
|
||||||
|
}
|
Reference in a new issue