From 2824588e4f0c48e6c9e48ca055bfb2c18d7d5bd5 Mon Sep 17 00:00:00 2001 From: Morten Olsen Date: Sat, 22 Aug 2020 11:12:56 +0200 Subject: [PATCH] update --- data.json | 5 +++ html.html | 10 +++++ package.json | 5 ++- src/App.tsx | 2 +- src/components/Profile.tsx | 71 -------------------------------- src/contexts/Github.tsx | 83 +++----------------------------------- src/index.html | 12 ------ src/index.tsx | 23 +++++++++++ src/screens/Welcome.tsx | 4 +- webpack.config.ts | 15 +++++++ yarn.lock | 69 ++++++++++++++++++++++++++++++- 11 files changed, 132 insertions(+), 167 deletions(-) create mode 100644 data.json create mode 100644 html.html delete mode 100644 src/components/Profile.tsx delete mode 100644 src/index.html diff --git a/data.json b/data.json new file mode 100644 index 0000000..96e6f72 --- /dev/null +++ b/data.json @@ -0,0 +1,5 @@ +{ + "keys": [ + "-----BEGIN PGP PUBLIC KEY BLOCK-----\r\n\r\n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\r\n=w0H1\r\n-----END PGP PUBLIC KEY BLOCK-----" + ] +} diff --git a/html.html b/html.html new file mode 100644 index 0000000..73568ca --- /dev/null +++ b/html.html @@ -0,0 +1,10 @@ + + + + + + <%= htmlWebpackPlugin.options.title %> + + + + diff --git a/package.json b/package.json index e61aca6..ead4df2 100644 --- a/package.json +++ b/package.json @@ -20,11 +20,13 @@ "@types/react-router": "^5.1.8", "@types/react-router-dom": "^5.1.5", "@types/styled-components": "^5.1.2", + "@types/webpack-subresource-integrity": "^1.2.0", "antd": "^4.5.4", "babel-loader": "^8.1.0", "babel-plugin-transform-inline-environment-variables": "^0.4.3", "css-loader": "^4.2.1", "html-webpack-plugin": "^4.3.0", + "offline-plugin": "^5.0.7", "parcel-bundler": "^1.12.4", "react-hot-loader": "^4.12.21", "style-loader": "^1.2.1", @@ -32,7 +34,8 @@ "typescript": "^3.9.7", "webpack": "^4.44.1", "webpack-cli": "^3.3.12", - "webpack-dev-server": "^3.11.0" + "webpack-dev-server": "^3.11.0", + "webpack-subresource-integrity": "^1.4.1" }, "dependencies": { "nanoid": "^3.1.12", diff --git a/src/App.tsx b/src/App.tsx index 22249a5..b317b58 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -6,7 +6,7 @@ import { EncryptionProvider } from './contexts/Encryption'; import AppRouter from './Router'; const App: React.FC = () => ( - + diff --git a/src/components/Profile.tsx b/src/components/Profile.tsx deleted file mode 100644 index 23a7e1a..0000000 --- a/src/components/Profile.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import React, { useContext, useState } from 'react'; -import { - Card, - Avatar, - Button, - Modal, -} from 'antd'; -import { KeyOutlined, GithubOutlined } from '@ant-design/icons' -import GithubContext from '../contexts/Github'; - -const IconText = ({ icon, text, ...props }) => ( - -); - -const Profile: React.FC = () => { - const { user, keys } = useContext(GithubContext); - const [showKeys, setShowKeys] = useState(false); - if (!user) { - return null; - } - - return ( - <> - setShowKeys(false)} - onCancel={() => setShowKeys(false)} - title="Keys" - > -
-          {keys!.join('\n\n')}
-        
-
- setShowKeys(true)} - /> - ), ( - - - - )]} - > - - )} - description={user.location} - /> - - - - ); -}; - -export default Profile; diff --git a/src/contexts/Github.tsx b/src/contexts/Github.tsx index 7f6cb83..b03be1d 100644 --- a/src/contexts/Github.tsx +++ b/src/contexts/Github.tsx @@ -1,87 +1,14 @@ -import React, { useState, useEffect, createContext } from 'react'; -import { Layout, Spin } from 'antd'; +import React, { createContext } from 'react'; + +const data = require('../../data.json'); interface GithubContextType { username: string; - user?: any; keys?: string[]; - error?: any; - state: 'loading' | 'ready' | 'failed' } -interface Props { - username: string; - children: React.ReactNode; -} - -const Loader = () => ( - - - -); - -const GithubContext = createContext({ - username: 'unknown', - state: 'failed', -}); - -const headers = { -}; - -const GithubProvider: React.FC = ({ - username, - children, -}) => { - const [keys, setKeys] = useState(); - const [state, setState] = useState('loading'); - const [error, setError] = useState(); - const [user, setUser] = useState(); - - useEffect(() => { - const run = async () => { - try { - const keysRes = await fetch(`https://api.github.com/users/${username}/gpg_keys`, { headers }); - const userRes = await fetch(`https://api.github.com/users/${username}`, { headers }); - const keys = await keysRes.json(); - const user = await userRes.json(); - setState('ready'); - setKeys(keys.map((key: any) => key.raw_key)); - setUser(user); - } catch (err) { - setState('failed'); - setError(err); - } - }; - - run(); - }, [username]); - - if (state === 'loading') { - return ; - } - - return ( - - {children} - - ); -}; +const GithubContext = createContext(data); +const GithubProvider = GithubContext.Provider; export { GithubProvider, diff --git a/src/index.html b/src/index.html deleted file mode 100644 index e6e7e49..0000000 --- a/src/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - Document - - -
- - - diff --git a/src/index.tsx b/src/index.tsx index 332532c..ab4d2bb 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -1,8 +1,31 @@ +import OfflinePluginRuntime from 'offline-plugin/runtime'; +import { notification } from 'antd'; import React from 'react'; import 'antd/dist/antd.css'; import { render } from 'react-dom'; import App from './App'; +OfflinePluginRuntime.install({ + onUpdating: () => { + console.log('SW Event:', 'onUpdating'); + }, + onUpdateReady: () => { + console.log('SW Event:', 'onUpdateReady'); + OfflinePluginRuntime.applyUpdate(); + }, + onUpdated: () => { + notification.success({ + message: 'Your app has been updated', + }); + }, + onUpdateFailed: () => { + notification.warn({ + message: 'Could not update to the latest version', + }); + console.log('SW Event:', 'onUpdateFailed'); + } +}); + const root = document.createElement('div'); root.style.height = '100%'; document.body.appendChild(root); diff --git a/src/screens/Welcome.tsx b/src/screens/Welcome.tsx index 449ca44..6804259 100644 --- a/src/screens/Welcome.tsx +++ b/src/screens/Welcome.tsx @@ -22,10 +22,10 @@ const Welcome: React.FC = () => { Protect before sending

- The internet can seem like a scary place, especially if you want to send sensitiv information across it. + The internet can seem like a scary place, especially if you want to send sensitiv information across it.

- The truth is that a lot of systems, including e-mails, was not build for the internet that we have today. + The truth is that a lot of systems, including e-mails, was not build for the internet that we have today.

This is why it is so important to make sure your documents are well protected before sharing. diff --git a/webpack.config.ts b/webpack.config.ts index 91e0aa4..b2b6155 100644 --- a/webpack.config.ts +++ b/webpack.config.ts @@ -1,7 +1,10 @@ import { Configuration } from 'webpack'; import HtmlWebpackPlugin from 'html-webpack-plugin'; +import SriPlugin from 'webpack-subresource-integrity'; import path from 'path'; +const OfflinePlugin = require('offline-plugin'); + const __DEV__ = process.env.NODE_ENV !== 'production'; const config: Configuration = { @@ -14,6 +17,7 @@ const config: Configuration = { }, output: { path: path.join(__dirname, 'dist'), + crossOriginLoading: 'anonymous', }, resolve: { extensions: ['.tsx', '.ts', '.js'], @@ -21,10 +25,21 @@ const config: Configuration = { 'react-dom': '@hot-loader/react-dom', }, }, + optimization: { + usedExports: true, + }, plugins: [ + new SriPlugin({ + hashFuncNames: ['sha256', 'sha384'], + enabled: !__DEV__, + }), new HtmlWebpackPlugin({ title: 'Parcel', minify: true, + template: path.join(__dirname, 'html.html'), + }), + new OfflinePlugin({ + events: true, }), ], module: { diff --git a/yarn.lock b/yarn.lock index fcb2c6f..cdd0144 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1262,6 +1262,13 @@ "@types/source-list-map" "*" source-map "^0.7.3" +"@types/webpack-subresource-integrity@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@types/webpack-subresource-integrity/-/webpack-subresource-integrity-1.2.0.tgz#0051c6b0abec61929889e66964668303528c3525" + integrity sha512-J3JTXySjghrFIWs3/iNnSXAQ9aK+jDyy+F2/jfBiWPXhz4ZBm80Vi1t1p2Ef6h0g0c4TCg7M36R/J81GEDQ6zg== + dependencies: + "@types/webpack" "*" + "@types/webpack@*", "@types/webpack@^4.41.8": version "4.41.21" resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.21.tgz#cc685b332c33f153bb2f5fc1fa3ac8adeb592dee" @@ -1851,6 +1858,11 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +big.js@^3.1.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" + integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== + big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -2895,6 +2907,11 @@ deep-equal@^1.0.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" +deep-extend@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.5.1.tgz#b894a9dd90d3023fbf1c55a394fb858eb2066f1f" + integrity sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w== + deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -3149,6 +3166,11 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= +ejs@^2.3.4: + version "2.7.4" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" + integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== + electron-to-chromium@^1.3.523: version "1.3.537" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.537.tgz#dfe595f5283d3113df897158810e40f6c2355283" @@ -3172,6 +3194,11 @@ emoji-regex@^7.0.1: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= + emojis-list@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" @@ -4660,6 +4687,11 @@ json3@^3.3.2: resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== +json5@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= + json5@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" @@ -4738,6 +4770,16 @@ loader-runner@^2.4.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== +loader-utils@0.2.x: + version "0.2.17" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" + integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + object-assign "^4.0.1" + loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" @@ -5003,7 +5045,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@^3.0.4: +minimatch@^3.0.3, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -5332,6 +5374,17 @@ obuf@^1.0.0, obuf@^1.1.2: resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== +offline-plugin@^5.0.7: + version "5.0.7" + resolved "https://registry.yarnpkg.com/offline-plugin/-/offline-plugin-5.0.7.tgz#26936ad1a7699f4d67e0a095a258972a4ccf1788" + integrity sha512-ArMFt4QFjK0wg8B5+R/6tt65u6Dk+Pkx4PAcW5O7mgIF3ywMepaQqFOQgfZD4ybanuGwuJihxUwMRgkzd+YGYw== + dependencies: + deep-extend "^0.5.1" + ejs "^2.3.4" + loader-utils "0.2.x" + minimatch "^3.0.3" + slash "^1.0.0" + omit.js@^2.0.0, omit.js@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/omit.js/-/omit.js-2.0.2.tgz#dd9b8436fab947a5f3ff214cb2538631e313ec2f" @@ -7252,6 +7305,11 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + slide@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" @@ -8219,7 +8277,7 @@ webpack-log@^2.0.0: ansi-colors "^3.0.0" uuid "^3.3.2" -webpack-sources@^1.4.0, webpack-sources@^1.4.1: +webpack-sources@^1.3.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== @@ -8227,6 +8285,13 @@ webpack-sources@^1.4.0, webpack-sources@^1.4.1: source-list-map "^2.0.0" source-map "~0.6.1" +webpack-subresource-integrity@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-1.4.1.tgz#e8bf918b444277df46a66cd84542cbcdc5a6272d" + integrity sha512-XMLFInbGbB1HV7K4vHWANzc1CN0t/c4bBvnlvGxGwV45yE/S/feAXIm8dJsCkzqWtSKnmaEgTp/meyeThxG4Iw== + dependencies: + webpack-sources "^1.3.0" + webpack@^4.44.1: version "4.44.1" resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.1.tgz#17e69fff9f321b8f117d1fda714edfc0b939cc21"