ncounter.git

git clone https://git.crispbyte.dev/ncounter.git

commit
7b1d517
parent
cea4f35
author
CheddarCrisp
date
2020-03-07 16:46:39 +0100 CET
Add icons and make installable
Change up some colors
21 files changed,  +318, -4
M package-lock.json
+154, -0
  1@@ -506,6 +506,12 @@
  2       "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
  3       "dev": true
  4     },
  5+    "ast-types": {
  6+      "version": "0.9.6",
  7+      "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz",
  8+      "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=",
  9+      "dev": true
 10+    },
 11     "async": {
 12       "version": "1.5.2",
 13       "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
 14@@ -1201,6 +1207,57 @@
 15       "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
 16       "dev": true
 17     },
 18+    "copy-webpack-plugin": {
 19+      "version": "5.1.1",
 20+      "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz",
 21+      "integrity": "sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg==",
 22+      "dev": true,
 23+      "requires": {
 24+        "cacache": "^12.0.3",
 25+        "find-cache-dir": "^2.1.0",
 26+        "glob-parent": "^3.1.0",
 27+        "globby": "^7.1.1",
 28+        "is-glob": "^4.0.1",
 29+        "loader-utils": "^1.2.3",
 30+        "minimatch": "^3.0.4",
 31+        "normalize-path": "^3.0.0",
 32+        "p-limit": "^2.2.1",
 33+        "schema-utils": "^1.0.0",
 34+        "serialize-javascript": "^2.1.2",
 35+        "webpack-log": "^2.0.0"
 36+      },
 37+      "dependencies": {
 38+        "globby": {
 39+          "version": "7.1.1",
 40+          "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz",
 41+          "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=",
 42+          "dev": true,
 43+          "requires": {
 44+            "array-union": "^1.0.1",
 45+            "dir-glob": "^2.0.0",
 46+            "glob": "^7.1.2",
 47+            "ignore": "^3.3.5",
 48+            "pify": "^3.0.0",
 49+            "slash": "^1.0.0"
 50+          }
 51+        },
 52+        "p-limit": {
 53+          "version": "2.2.2",
 54+          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz",
 55+          "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==",
 56+          "dev": true,
 57+          "requires": {
 58+            "p-try": "^2.0.0"
 59+          }
 60+        },
 61+        "pify": {
 62+          "version": "3.0.0",
 63+          "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
 64+          "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
 65+          "dev": true
 66+        }
 67+      }
 68+    },
 69     "core-util-is": {
 70       "version": "1.0.2",
 71       "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
 72@@ -1515,6 +1572,15 @@
 73         "randombytes": "^2.0.0"
 74       }
 75     },
 76+    "dir-glob": {
 77+      "version": "2.2.2",
 78+      "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz",
 79+      "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==",
 80+      "dev": true,
 81+      "requires": {
 82+        "path-type": "^3.0.0"
 83+      }
 84+    },
 85     "dns-equal": {
 86       "version": "1.0.0",
 87       "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
 88@@ -1717,6 +1783,16 @@
 89         "is-symbol": "^1.0.2"
 90       }
 91     },
 92+    "es6-templates": {
 93+      "version": "0.2.3",
 94+      "resolved": "https://registry.npmjs.org/es6-templates/-/es6-templates-0.2.3.tgz",
 95+      "integrity": "sha1-XLmsn7He1usSOTQrgdeSu7QHjuQ=",
 96+      "dev": true,
 97+      "requires": {
 98+        "recast": "~0.11.12",
 99+        "through": "~2.3.6"
100+      }
101+    },
102     "escape-html": {
103       "version": "1.0.3",
104       "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
105@@ -1739,6 +1815,12 @@
106         "estraverse": "^4.1.1"
107       }
108     },
109+    "esprima": {
110+      "version": "3.1.3",
111+      "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
112+      "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=",
113+      "dev": true
114+    },
115     "esrecurse": {
116       "version": "4.2.1",
117       "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
118@@ -1994,6 +2076,12 @@
119       "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
120       "dev": true
121     },
122+    "fastparse": {
123+      "version": "1.1.2",
124+      "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz",
125+      "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==",
126+      "dev": true
127+    },
128     "faye-websocket": {
129       "version": "0.10.0",
130       "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
131@@ -3030,6 +3118,19 @@
132       "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=",
133       "dev": true
134     },
135+    "html-loader": {
136+      "version": "0.5.5",
137+      "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-0.5.5.tgz",
138+      "integrity": "sha512-7hIW7YinOYUpo//kSYcPB6dCKoceKLmOwjEMmhIobHuWGDVl0Nwe4l68mdG/Ru0wcUxQjVMEoZpkalZ/SE7zog==",
139+      "dev": true,
140+      "requires": {
141+        "es6-templates": "^0.2.3",
142+        "fastparse": "^1.1.1",
143+        "html-minifier": "^3.5.8",
144+        "loader-utils": "^1.1.0",
145+        "object-assign": "^4.1.1"
146+      }
147+    },
148     "html-minifier": {
149       "version": "3.5.21",
150       "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz",
151@@ -3217,6 +3318,12 @@
152       "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
153       "dev": true
154     },
155+    "ignore": {
156+      "version": "3.3.10",
157+      "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
158+      "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
159+      "dev": true
160+    },
161     "import-local": {
162       "version": "2.0.0",
163       "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
164@@ -4382,6 +4489,23 @@
165       "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
166       "dev": true
167     },
168+    "path-type": {
169+      "version": "3.0.0",
170+      "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
171+      "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
172+      "dev": true,
173+      "requires": {
174+        "pify": "^3.0.0"
175+      },
176+      "dependencies": {
177+        "pify": {
178+          "version": "3.0.0",
179+          "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
180+          "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
181+          "dev": true
182+        }
183+      }
184+    },
185     "pbkdf2": {
186       "version": "3.0.17",
187       "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz",
188@@ -4544,6 +4668,12 @@
189         "utila": "~0.4"
190       }
191     },
192+    "private": {
193+      "version": "0.1.8",
194+      "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
195+      "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
196+      "dev": true
197+    },
198     "process": {
199       "version": "0.11.10",
200       "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
201@@ -4726,6 +4856,18 @@
202         "readable-stream": "^2.0.2"
203       }
204     },
205+    "recast": {
206+      "version": "0.11.23",
207+      "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz",
208+      "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=",
209+      "dev": true,
210+      "requires": {
211+        "ast-types": "0.9.6",
212+        "esprima": "~3.1.0",
213+        "private": "~0.1.5",
214+        "source-map": "~0.5.0"
215+      }
216+    },
217     "regex-not": {
218       "version": "1.0.2",
219       "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
220@@ -5101,6 +5243,12 @@
221       "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
222       "dev": true
223     },
224+    "slash": {
225+      "version": "1.0.0",
226+      "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
227+      "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
228+      "dev": true
229+    },
230     "snapdragon": {
231       "version": "0.8.2",
232       "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
233@@ -5695,6 +5843,12 @@
234         }
235       }
236     },
237+    "through": {
238+      "version": "2.3.8",
239+      "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
240+      "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
241+      "dev": true
242+    },
243     "through2": {
244       "version": "2.0.5",
245       "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
M package.json
+2, -0
 1@@ -14,8 +14,10 @@
 2     "@beyonk/google-fonts-webpack-plugin": "^1.2.3",
 3     "chart.js": "^2.9.3",
 4     "clean-webpack-plugin": "^3.0.0",
 5+    "copy-webpack-plugin": "^5.1.1",
 6     "css-loader": "^3.4.2",
 7     "google-fonts-webpack-plugin": "^0.4.4",
 8+    "html-loader": "^0.5.5",
 9     "html-webpack-plugin": "^3.2.0",
10     "idb-keyval": "^3.2.0",
11     "reset-css": "^5.0.1",
A src/icon/android-chrome-192x192.png
+0, -0
A src/icon/android-chrome-512x512.png
+0, -0
A src/icon/apple-touch-icon.png
+0, -0
A src/icon/browserconfig.xml
+9, -0
 1@@ -0,0 +1,9 @@
 2+<?xml version="1.0" encoding="utf-8"?>
 3+<browserconfig>
 4+    <msapplication>
 5+        <tile>
 6+            <square150x150logo src="https://apps.jhollen.com/ncounter/mstile-150x150.png"/>
 7+            <TileColor>#dce6ef</TileColor>
 8+        </tile>
 9+    </msapplication>
10+</browserconfig>
A src/icon/favicon-16x16.png
+0, -0
A src/icon/favicon-32x32.png
+0, -0
A src/icon/favicon.ico
+0, -0
A src/icon/html_code.html
+9, -0
 1@@ -0,0 +1,9 @@
 2+<link rel="apple-touch-icon" sizes="180x180" href="icons/apple-touch-icon.png">
 3+<link rel="icon" type="image/png" sizes="32x32" href="icons/favicon-32x32.png">
 4+<link rel="icon" type="image/png" sizes="16x16" href="icons/favicon-16x16.png">
 5+<link rel="manifest" href="icons/site.webmanifest">
 6+<link rel="mask-icon" href="icons/safari-pinned-tab.svg" color="#3a86b7">
 7+<link rel="shortcut icon" href="icons/favicon.ico">
 8+<meta name="msapplication-TileColor" content="#dce6ef"> 
 9+<meta name="msapplication-config" content="icons/browserconfig.xml">
10+<meta name="theme-color" content="#dce6ef">
A src/icon/mstile-144x144.png
+0, -0
A src/icon/mstile-150x150.png
+0, -0
A src/icon/mstile-310x150.png
+0, -0
A src/icon/mstile-310x310.png
+0, -0
A src/icon/mstile-70x70.png
+0, -0
A src/icon/ncounter-nobg.svg
+87, -0
 1@@ -0,0 +1,87 @@
 2+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 3+<!-- Created with Inkscape (http://www.inkscape.org/) -->
 4+
 5+<svg
 6+   xmlns:dc="http://purl.org/dc/elements/1.1/"
 7+   xmlns:cc="http://creativecommons.org/ns#"
 8+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 9+   xmlns:svg="http://www.w3.org/2000/svg"
10+   xmlns="http://www.w3.org/2000/svg"
11+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
12+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13+   width="128"
14+   height="128"
15+   viewBox="0 0 33.866666 33.866666"
16+   version="1.1"
17+   id="svg8"
18+   inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
19+   sodipodi:docname="ncounter-nobg.svg">
20+  <defs
21+     id="defs2" />
22+  <sodipodi:namedview
23+     id="base"
24+     pagecolor="#dce6c0"
25+     bordercolor="#666666"
26+     borderopacity="1.0"
27+     inkscape:pageopacity="0"
28+     inkscape:pageshadow="2"
29+     inkscape:zoom="5.6"
30+     inkscape:cx="28.582867"
31+     inkscape:cy="57.799037"
32+     inkscape:document-units="mm"
33+     inkscape:current-layer="layer1"
34+     showgrid="false"
35+     units="px"
36+     inkscape:window-width="1920"
37+     inkscape:window-height="1137"
38+     inkscape:window-x="-8"
39+     inkscape:window-y="-8"
40+     inkscape:window-maximized="1"
41+     inkscape:pagecheckerboard="true" />
42+  <metadata
43+     id="metadata5">
44+    <rdf:RDF>
45+      <cc:Work
46+         rdf:about="">
47+        <dc:format>image/svg+xml</dc:format>
48+        <dc:type
49+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
50+        <dc:title />
51+      </cc:Work>
52+    </rdf:RDF>
53+  </metadata>
54+  <g
55+     inkscape:label="Layer 1"
56+     inkscape:groupmode="layer"
57+     id="layer1"
58+     transform="translate(0,-263.13335)">
59+    <rect
60+       style="fill:#163345;fill-opacity:1;stroke-width:0.26458332"
61+       id="rect1100"
62+       width="4.2333331"
63+       height="31.173208"
64+       x="-188.17999"
65+       y="194.42413"
66+       rx="2.1166666"
67+       ry="2.3812499"
68+       transform="rotate(-45)" />
69+    <rect
70+       style="fill:#3a86b7;fill-opacity:1;stroke-width:0.26458332"
71+       id="rect1088"
72+       width="4.2333331"
73+       height="23.283333"
74+       x="5.2916665"
75+       y="268.42502"
76+       rx="2.1166666"
77+       ry="2.1166666" />
78+    <rect
79+       ry="2.1166666"
80+       rx="2.1166666"
81+       y="268.42502"
82+       x="24.341667"
83+       height="23.283333"
84+       width="4.2333331"
85+       id="rect1090"
86+       style="fill:#3a86b7;fill-opacity:1;stroke-width:0.26458332" />
87+  </g>
88+</svg>
A src/icon/safari-pinned-tab.svg
+1, -0
1@@ -0,0 +1 @@
2+<svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="700pt" height="700pt" viewBox="0 0 700 700"><path d="M145.5 110.1c-16 3-28.1 13.3-33.8 28.7l-2.1 5.7-.1 203c-.1 114.8.3 205.1.8 207.9 1.8 10.1 9.3 21.5 18 27.5 17.9 12.1 43.1 9.2 57.1-6.7 5.9-6.6 10.3-16.1 11.1-23.6.2-1.7.4-68.5.4-148.4l.1-145.4 160.8 160.9c88.5 88.4 162.7 162 164.9 163.6 6.5 4.5 14.8 6.9 23.8 7 21 .1 38.3-13.5 43-33.8.9-3.7 1.1-57.7 1.1-208-.1-196.3-.2-203.2-2-208.5-10.5-30.6-46.9-40.4-71.1-19.2-7.1 6.3-13.1 17.5-14 26.4-.2 1.8-.4 68.7-.4 148.6L503 441 342.2 280.3C253.7 191.8 180 118.6 178.4 117.4c-9.3-6.5-22-9.3-32.9-7.3z"/></svg>
A src/icon/site.webmanifest
+21, -0
 1@@ -0,0 +1,21 @@
 2+{
 3+    "name": "NCounter",
 4+    "short_name": "NCounter",
 5+    "description": "Counter app",
 6+    "icons": [
 7+        {
 8+            "src": "icons/android-chrome-192x192.png",
 9+            "sizes": "192x192",
10+            "type": "image/png"
11+        },
12+        {
13+            "src": "icons/android-chrome-512x512.png",
14+            "sizes": "512x512",
15+            "type": "image/png"
16+        }
17+    ],
18+    "theme_color": "#dce6ef",
19+    "background_color": "#dce6ef",
20+    "start_url": "https://apps.jhollen.com/ncounter/",
21+    "display": "standalone"
22+}
A src/index.html
+11, -0
 1@@ -0,0 +1,11 @@
 2+<!DOCTYPE html>
 3+<html>
 4+  <head>
 5+    <meta charset="UTF-8">
 6+    <meta viewport="width=device-width, initial-scale=1.0">
 7+    <title>NCounter</title>
 8+    ${require('./icon/html_code.html')}
 9+  </head>
10+  <body>
11+  </body>
12+</html>
M src/ncounter/site.css
+2, -2
 1@@ -23,9 +23,9 @@ body {
 2 }
 3 
 4 :root {
 5-    --background-color: #8baec6;
 6+    --background-color: #DCE6EF;
 7     --button-color: #3A86B7;
 8-    --highlight-color: #303030;
 9+    --highlight-color: #163345;
10 
11     --background-primary: #FCFCFC;
12     --background-alternate: #CDCDCD;
M webpack.common.js
+22, -2
 1@@ -4,6 +4,7 @@ const GoogleFontsPlugin = require('@beyonk/google-fonts-webpack-plugin');
 2 const { CleanWebpackPlugin } = require('clean-webpack-plugin');
 3 const ServiceWorkerWebpackPlugin = require('serviceworker-webpack-plugin');
 4 const LicensePlugin = require('webpack-license-plugin');
 5+const CopyWebpackPlugin = require('copy-webpack-plugin');
 6 
 7 const now = new Date();
 8 const year = now.getFullYear().toString();
 9@@ -15,7 +16,7 @@ module.exports = {
10         new CleanWebpackPlugin(),
11         new HtmlWebpackPlugin({
12             title: 'NCounter',
13-            meta: {viewport: 'width=device-width, initial-scale=1.0'}
14+            template: 'src/index.html'
15         }),
16         new GoogleFontsPlugin({
17             fonts: [
18@@ -27,7 +28,19 @@ module.exports = {
19             entry: path.join(__dirname, 'src/sw.js'),
20             publicPath: './'
21         }),
22-        new LicensePlugin()
23+        new LicensePlugin(),
24+        new CopyWebpackPlugin(
25+            [
26+                'src/icon/*.png',
27+                'src/icon/safari-pinned-tab.svg',
28+                'src/icon/favicon.ico',
29+                'src/icon/site.webmanifest',
30+                'src/icon/browserconfig.xml'
31+            ],
32+            {
33+                to: 'icons'
34+            }
35+        )
36     ],
37     output: {
38         filename: 'index.js',
39@@ -35,6 +48,13 @@ module.exports = {
40     },
41     module: {
42         rules: [
43+            {
44+                test: /\.html$/,
45+                loader: 'html-loader',
46+                options: {
47+                    interpolate: true
48+                }
49+            },
50             {
51                 test: /\.svelte$/,
52                 exclude: /node_modules/,