{"version":3,"sources":["shared/Header.tsx","utils/utils.tsx","displaySecret/Result.tsx","shared/Expiration.tsx","createSecret/CreateSecret.tsx","displaySecret/Secret.tsx","displaySecret/Error.tsx","displaySecret/DisplaySecret.tsx","createSecret/Upload.tsx","Routes.tsx","shared/Attribution.tsx","theme.ts","App.tsx","i18n.tsx","index.tsx"],"names":["useStyles","makeStyles","theme","appBar","marginBottom","spacing","logo","verticalAlign","paddingLeft","padding","Header","t","useTranslation","isOnUploadPage","useLocation","pathname","includes","classes","_jsx","AppBar","position","color","className","elevation","sx","borderBottom","borderColor","children","_jsxs","Toolbar","Link","href","underline","Typography","variant","component","width","height","alt","src","Box","marginLeft","Button","RouterLink","to","randomString","text","possible","i","charAt","randomInt","length","min","max","byteArray","Uint8Array","window","crypto","getRandomValues","range","Math","floor","backendDomain","process","REACT_APP_BACKEND_URL","concat","postSecret","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","body","wrap","_context","prev","next","abrupt","post","stop","_x","apply","arguments","uploadFile","_ref2","_callee2","_context2","_x2","_ref3","_callee3","url","request","_context3","fetch","JSON","stringify","method","sent","json","t0","t1","status","data","_x3","_x4","decryptMessage","_ref4","_callee4","passwords","format","r","_context4","decrypt","message","readArmored","t2","t3","t4","_x5","_x6","_x7","encryptMessage","_ref5","_callee5","_context5","encrypt","fromText","_x8","_x9","Row","label","value","_useCopyToClipboard","useCopyToClipboard","_useCopyToClipboard2","_slicedToArray","copy","copyToClipboard","TableRow","TableCell","error","onClick","FontAwesomeIcon","icon","faCopy","Result","uuid","password","prefix","customPassword","base","location","protocol","host","short","full","TableContainer","Table","TableBody","radioGroup","justifyContent","Expiration","props","FormControl","margin","FormLabel","Controller","rules","required","control","defaultValue","name","as","RadioGroup","row","root","FormControlLabel","labelPlacement","Radio","Error","Alert","_objectSpread","severity","OneTime","Grid","item","Checkbox","id","inputRef","register","defaultChecked","SpecifyPasswordInput","InputLabel","TextField","fullWidth","type","inputProps","_defineProperty","autoComplete","spellCheck","SpecifyPasswordToggle","FormGroup","CreateSecret","_errors$secret","_useForm","useForm","defaultValues","generateDecryptionKey","secret","errors","handleSubmit","watch","setError","clearErrors","_useState","useState","_useState2","loading","setLoading","_useState3","_useState4","result","setResult","onSubmit","form","pw","_yield$postSecret","parseInt","expiration","onetime","one_time","t5","_Fragment","align","container","paddingTop","multiline","rows","autoFocus","onKeyDown","event","ctrlKey","key","placeholder","marginTop","alignItems","direction","p","pb","disabled","pre","backgroundColor","border","display","fontSize","borderRadius","wordWrap","wordBreak","Secret","fileName","useEffect","saveAs","Blob","header","paddingBottom","ErrorPage","fetcher","ok","DisplaySecret","_useParams","useParams","paramsPassword","isFile","match","setPassword","setSecret","_useState5","_useState6","setFileName","_useState7","_useState8","invalidPassword","setInvalidPassword","_useSWR","useSWR","shouldRetryOnError","revalidateOnFocus","useAsync","filename","Container","maxWidth","xs","helperText","onChange","e","target","Upload","onDrop","useCallback","acceptedFiles","reader","FileReader","onabort","console","log","onerror","onload","file","_yield$uploadFile","armor","fromBinary","forEach","readAsArrayBuffer","_useDropzone","useDropzone","maxSize","minSize","getRootProps","getInputProps","fileRejections","isDragActive","isFileTooLarge","code","size","faFileUpload","mt","Routes","Route","path","exact","attribution","bottom","Attribution","createMuiTheme","typography","fontFamily","join","palette","primary","main","contrastText","App","navigator","serviceWorker","getRegistrations","then","registrations","_step","_iterator","_createForOfIteratorHelper","s","n","done","unregister","err","f","ThemeProvider","Router","i18n","use","initReactI18next","Backend","init","backend","loadPath","fallbackLng","lng","debug","ns","defaultNS","keySeparator","interpolation","escapeValue","formatSeparator","appendNamespaceToMissingKey","ReactDOM","render","Suspense","fallback","document","getElementById"],"mappings":"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","file":"static/js/main.fdfa3c37.chunk.js","sourcesContent":["import {\n AppBar,\n Toolbar,\n Typography,\n Button,\n Box,\n makeStyles,\n Link,\n} from '@material-ui/core';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation } from 'react-router-dom';\n\nconst useStyles = makeStyles((theme) => ({\n appBar: {\n marginBottom: theme.spacing(4),\n },\n logo: {\n verticalAlign: 'middle',\n paddingLeft: '5px',\n padding: \"10px\"\n },\n}));\n\nexport const Header = () => {\n const { t } = useTranslation();\n const location = useLocation();\n const isOnUploadPage = location.pathname.includes('upload');\n const base = process.env.PUBLIC_URL || '';\n const home = base + '/';\n const upload = base + '/upload';\n const classes = useStyles();\n return (\n \n \n \n \n \n \n \n \n \n {isOnUploadPage ? t('Home') : t('Upload')}\n \n \n \n \n );\n};\n","import { message, encrypt, decrypt, DecryptResult } from 'openpgp';\n\ntype Response = {\n // TODO: this shouldn't be any\n data: any;\n status: number;\n};\n\nexport const randomString = (): string => {\n let text = '';\n const possible =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n for (let i = 0; i < 22; i++) {\n text += possible.charAt(randomInt(0, possible.length));\n }\n return text;\n};\n\nconst randomInt = (min: number, max: number): number => {\n const byteArray = new Uint8Array(1);\n window.crypto.getRandomValues(byteArray);\n\n const range = max - min;\n const maxRange = 256;\n if (byteArray[0] >= Math.floor(maxRange / range) * range) {\n return randomInt(min, max);\n }\n return min + (byteArray[0] % range);\n};\n\nexport const backendDomain = process.env.REACT_APP_BACKEND_URL\n ? `${process.env.REACT_APP_BACKEND_URL}`\n : '';\n\nexport const postSecret = async (body: any): Promise => {\n return post(backendDomain + '/secret', body);\n};\n\nexport const uploadFile = async (body: any): Promise => {\n return post(backendDomain + '/file', body);\n};\n\nconst post = async (url: string, body: any): Promise => {\n const request = await fetch(url, {\n body: JSON.stringify(body),\n method: 'POST',\n });\n return { data: await request.json(), status: request.status };\n};\n\nexport const decryptMessage = async (\n data: string,\n passwords: string,\n format: 'utf8' | 'binary',\n): Promise => {\n const r = await decrypt({\n message: await message.readArmored(data),\n passwords,\n format,\n });\n return r;\n};\n\nexport const encryptMessage = async (\n data: string,\n passwords: string,\n): Promise => {\n const r = await encrypt({\n message: message.fromText(data),\n passwords,\n });\n return r.data as string;\n};\n\nexport default randomString;\n","import { faCopy } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { useCopyToClipboard } from 'react-use';\nimport {\n Button,\n Typography,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableRow,\n Box,\n} from '@material-ui/core';\nimport { useTranslation } from 'react-i18next';\n\ntype ResultProps = {\n readonly uuid: string;\n readonly password: string;\n readonly prefix: 's' | 'f';\n readonly customPassword?: boolean;\n};\n\nconst Result = ({ uuid, password, prefix, customPassword }: ResultProps) => {\n const base =\n (process.env.PUBLIC_URL ||\n `${window.location.protocol}//${window.location.host}`) + `/#/${prefix}`;\n const short = `${base}/${uuid}`;\n const full = `${short}/${password}`;\n const { t } = useTranslation();\n\n return (\n \n {t('Secret stored in database')}\n \n {t(\n 'Remember that the secret can only be downloaded once so do not open the link yourself.',\n )}\n
\n {t(\n 'The cautious should send the decryption key in a separate communication channel.',\n )}\n
\n \n \n \n {!customPassword && (\n \n )}\n \n \n \n
\n
\n
\n );\n};\n\ntype RowProps = {\n readonly label: string;\n readonly value: string;\n};\n\nconst Row = ({ label, value }: RowProps) => {\n const [copy, copyToClipboard] = useCopyToClipboard();\n return (\n \n \n copyToClipboard(value)}\n >\n \n \n \n \n {label}\n \n {value}\n \n );\n};\n\nexport default Result;\n","import { Controller, UseFormMethods } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport {\n FormControl,\n FormControlLabel,\n FormLabel,\n makeStyles,\n Radio,\n RadioGroup,\n} from '@material-ui/core';\n\nconst useStyles = makeStyles({\n radioGroup: {\n justifyContent: 'center',\n },\n});\n\nexport const Expiration = (props: { control: UseFormMethods['control'] }) => {\n const { t } = useTranslation();\n const classes = useStyles();\n return (\n \n \n {t('The encrypted message will be deleted automatically after')}\n \n \n }\n label={t('One Hour')}\n />\n }\n label={t('One Day')}\n />\n }\n label={t('One Week')}\n />\n \n }\n />\n \n );\n};\nexport default Expiration;\n","import { useTranslation } from 'react-i18next';\nimport { useForm, UseFormMethods } from 'react-hook-form';\nimport randomString, { encryptMessage, postSecret } from '../utils/utils';\nimport { useState } from 'react';\nimport Result from '../displaySecret/Result';\nimport Expiration from './../shared/Expiration';\nimport {\n Alert,\n Checkbox,\n FormGroup,\n FormControlLabel,\n TextField,\n Typography,\n Button,\n Grid,\n Box,\n InputLabel,\n} from '@material-ui/core';\n\nconst CreateSecret = () => {\n const { t } = useTranslation();\n const {\n control,\n register,\n errors,\n handleSubmit,\n watch,\n setError,\n clearErrors,\n } = useForm({\n defaultValues: {\n generateDecryptionKey: true,\n secret: '',\n },\n });\n const [loading, setLoading] = useState(false);\n const [result, setResult] = useState({\n password: '',\n uuid: '',\n customPassword: false,\n });\n\n const onKeyDown = (event: React.KeyboardEvent): void => {\n if (event.ctrlKey && event.key === 'Enter') {\n handleSubmit(onSubmit)();\n }\n };\n\n const onSubmit = async (form: any): Promise => {\n // Use the manually entered password, or generate one\n const pw = form.password ? form.password : randomString();\n setLoading(true);\n try {\n const { data, status } = await postSecret({\n expiration: parseInt(form.expiration),\n message: await encryptMessage(form.secret, pw),\n one_time: form.onetime,\n });\n\n if (status !== 200) {\n setError('secret', { type: 'submit', message: data.message });\n } else {\n setResult({\n customPassword: form.password ? true : false,\n password: pw,\n uuid: data.message,\n });\n }\n } catch (e) {\n setError('secret', { type: 'submit', message: e.message });\n }\n setLoading(false);\n };\n\n const generateDecryptionKey = watch('generateDecryptionKey');\n\n if (result.uuid) {\n return (\n \n );\n }\n\n return (\n <>\n clearErrors('secret')}\n />\n \n {t('Encrypt message')}\n \n
\n \n \n \n \n \n \n \n \n {!generateDecryptionKey && (\n \n )}\n \n \n \n \n \n \n \n
\n \n );\n};\n\nexport const Error = (props: { message?: string; onClick?: () => void }) =>\n props.message ? (\n \n {props.message}\n \n ) : null;\n\nexport const OneTime = (props: { register: UseFormMethods['register'] }) => {\n const { t } = useTranslation();\n return (\n \n \n }\n label={t('One-time download')}\n />\n \n );\n};\n\nexport const SpecifyPasswordInput = (props: {\n register: UseFormMethods['register'];\n}) => {\n const { t } = useTranslation();\n return (\n \n {t('Custom decryption key')}\n \n \n );\n};\n\nexport const SpecifyPasswordToggle = (props: {\n register: UseFormMethods['register'];\n}) => {\n const { t } = useTranslation();\n return (\n \n \n }\n label={t('Generate decryption key')}\n />\n \n );\n};\n\nexport default CreateSecret;\n","import { useTranslation } from 'react-i18next';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faCopy } from '@fortawesome/free-solid-svg-icons';\nimport { Button, Typography, makeStyles } from '@material-ui/core';\nimport { useCopyToClipboard } from 'react-use';\nimport { saveAs } from 'file-saver';\nimport { useEffect } from 'react';\n\nconst useStyles = makeStyles(() => ({\n pre: {\n backgroundColor: '#ecf0f1',\n padding: '15px',\n border: '1px solid #cccccc',\n display: 'block',\n fontSize: '14px',\n borderRadius: '4px',\n wordWrap: 'break-word',\n wordBreak: 'break-all',\n },\n}));\n\nconst Secret = ({\n secret,\n fileName,\n}: {\n readonly secret: string;\n readonly fileName?: string;\n}) => {\n const { t } = useTranslation();\n const [copy, copyToClipboard] = useCopyToClipboard();\n const classes = useStyles();\n\n useEffect(() => {\n fileName &&\n saveAs(\n new Blob([secret], {\n type: 'application/octet-stream',\n }),\n fileName,\n );\n }, [fileName, secret]);\n\n if (fileName) {\n return (\n
\n {t('File downloaded')}\n
\n );\n }\n return (\n
\n {t('Decrypted Message')}\n \n {t(\n 'This secret might not be viewable again, make sure to save it now!',\n )}\n \n copyToClipboard(secret)}\n >\n {t('Copy')}\n \n
\n        {secret}\n      
\n
\n );\n};\n\nexport default Secret;\n","import { useTranslation } from 'react-i18next';\nimport { makeStyles, Typography } from '@material-ui/core';\n\nconst useStyles = makeStyles((theme) => ({\n header: {\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1),\n },\n}));\n\nconst ErrorPage = (props: { error?: Error }) => {\n const { t } = useTranslation();\n const classes = useStyles();\n if (!props.error) {\n return null;\n }\n\n return (\n
\n {t('Secret does not exist')}\n \n {t('It might be caused by any of these reasons.')}\n \n
\n \n {t('Opened before')}\n \n \n {t(\n 'A secret can be restricted to a single download. It might be lost because the sender clicked this link before you viewed it.',\n )}\n
\n {t(\n 'The secret might have been compromised and read by someone else. You should contact the sender and request a new secret.',\n )}\n\n \n {t('Broken link')}\n \n {t(\n 'The link must match perfectly in order for the decryption to work, it might be missing some magic digits.',\n )}\n \n {t('Expired')}\n \n {t(\n 'No secret last forever. All stored secrets will expires and self destruct automatically. Lifetime varies from one hour up to one week.',\n )}\n
\n
\n );\n};\nexport default ErrorPage;\n","import { useState } from 'react';\nimport { useLocation, useParams } from 'react-router-dom';\nimport useSWR from 'swr';\nimport { backendDomain, decryptMessage } from '../utils/utils';\nimport Secret from './Secret';\nimport ErrorPage from './Error';\nimport {\n Container,\n Grid,\n TextField,\n Button,\n Typography,\n} from '@material-ui/core';\nimport { useTranslation } from 'react-i18next';\nimport { useAsync } from 'react-use';\n\nconst fetcher = async (url: string) => {\n const request = await fetch(url);\n if (!request.ok) {\n throw new Error('Failed to fetch secret');\n }\n const data = await request.json();\n return data.message;\n};\n\nconst DisplaySecret = () => {\n const { key, password: paramsPassword } = useParams<{\n key: string;\n password: string;\n }>();\n const location = useLocation();\n const isFile = null !== location.pathname.match(/\\/d|f\\//);\n const [password, setPassword] = useState(\n paramsPassword ? paramsPassword : '',\n );\n const [secret, setSecret] = useState('');\n const [fileName, setFileName] = useState('');\n const [invalidPassword, setInvalidPassword] = useState(false);\n const { t } = useTranslation();\n\n const url = isFile\n ? `${backendDomain}/file/${key}`\n : `${backendDomain}/secret/${key}`;\n const { data, error } = useSWR(url, fetcher, {\n shouldRetryOnError: false,\n revalidateOnFocus: false,\n });\n\n useAsync(async () => {\n return decrypt();\n }, [paramsPassword, data]);\n\n const decrypt = async () => {\n if (!data || !password) {\n return;\n }\n try {\n const r = await decryptMessage(\n data,\n password,\n isFile ? 'binary' : 'utf8',\n );\n if (isFile) {\n setFileName(r.filename);\n }\n setSecret(r.data);\n } catch (e) {\n setInvalidPassword(true);\n return false;\n }\n return true;\n };\n\n if (error) return ;\n if (!data)\n return (\n \n {t('Fetching from database, please hold...')}\n \n );\n if (secret) {\n return ;\n }\n if (paramsPassword && !secret && !invalidPassword) {\n return (\n {t('Decrypting, please hold...')}\n );\n }\n\n return (\n \n \n \n Enter decryption key\n \n Do not refresh this window as secret might be restricted to one time\n download.\n \n \n \n setPassword(e.target.value)}\n inputProps={{ spellCheck: 'false', ['data-gramm']: 'false' }}\n />\n \n \n \n \n \n \n );\n};\n\nexport default DisplaySecret;\n","import { faFileUpload } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { encrypt, message } from 'openpgp';\nimport { useCallback, useState } from 'react';\nimport { useDropzone } from 'react-dropzone';\nimport {\n Error,\n OneTime,\n SpecifyPasswordToggle,\n SpecifyPasswordInput,\n} from './CreateSecret';\nimport Expiration from './../shared/Expiration';\nimport Result from '../displaySecret/Result';\nimport { randomString, uploadFile } from '../utils/utils';\nimport { useTranslation } from 'react-i18next';\nimport { useForm } from 'react-hook-form';\nimport { Grid, Typography } from '@material-ui/core';\n\nconst Upload = () => {\n const maxSize = 1024 * 500;\n const [error, setError] = useState('');\n const { t } = useTranslation();\n const [result, setResult] = useState({\n password: '',\n customPassword: false,\n uuid: '',\n });\n\n const { control, register, handleSubmit, watch } = useForm({\n defaultValues: {\n generateDecryptionKey: true,\n secret: '',\n password: '',\n expiration: '3600',\n onetime: true,\n },\n });\n\n const form = watch();\n const onDrop = useCallback(\n (acceptedFiles: File[]) => {\n const reader = new FileReader();\n reader.onabort = () => console.log('file reading was aborted');\n reader.onerror = () => console.log('file reading has failed');\n reader.onload = async () => {\n handleSubmit(onSubmit)();\n const pw = form.password ? form.password : randomString();\n const file = await encrypt({\n armor: true,\n message: message.fromBinary(\n new Uint8Array(reader.result as ArrayBuffer),\n acceptedFiles[0].name,\n ),\n passwords: pw,\n });\n const { data, status } = await uploadFile({\n expiration: parseInt(form.expiration),\n message: file.data,\n one_time: form.onetime,\n });\n\n if (status !== 200) {\n setError(data.message);\n } else {\n setResult({\n uuid: data.message,\n password: pw,\n customPassword: form.password ? true : false,\n });\n }\n };\n acceptedFiles.forEach((file) => reader.readAsArrayBuffer(file));\n },\n [form, handleSubmit],\n );\n\n const {\n getRootProps,\n getInputProps,\n fileRejections,\n isDragActive,\n } = useDropzone({\n maxSize,\n minSize: 0,\n onDrop,\n });\n\n const onSubmit = () => {};\n\n const isFileTooLarge =\n fileRejections.length > 0 &&\n fileRejections[0].errors[0].code === 'file-too-large';\n\n const generateDecryptionKey = watch('generateDecryptionKey');\n\n if (result.uuid) {\n return (\n \n );\n }\n return (\n \n {isFileTooLarge && }\n setError('')} />\n
\n
\n \n \n {t('Drop file to upload')}\n \n \n \n {t(\n 'File upload is designed for small files like ssh keys and certificates.',\n )}\n \n \n \n \n \n
\n\n \n \n \n \n \n \n \n {!generateDecryptionKey && (\n \n )}\n \n \n
\n
\n );\n};\n\nexport default Upload;\n","import { Route } from 'react-router-dom';\n\nimport CreateSecret from './createSecret/CreateSecret';\nimport DisplaySecret from './displaySecret/DisplaySecret';\nimport Upload from './createSecret/Upload';\n\nexport const Routes = () => {\n return (\n
\n \n \n \n \n \n \n
\n );\n};\n","import { Container, Link, makeStyles, Typography } from '@material-ui/core';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n attribution: {\n margin: theme.spacing(1),\n position: \"absolute\",\n bottom: 0\n },\n}));\n\nexport const Attribution = () => {\n const { t } = useTranslation();\n const classes = useStyles();\n return (\n \n \n {t('Created by')}{' '}\n Johan Haals\n \n \n );\n};\n","import { createMuiTheme } from '@material-ui/core/styles';\n\nexport const theme = createMuiTheme({\n typography: {\n fontFamily: [\n 'Open Sans',\n 'sans-serif',\n ].join(','),\n },\n palette: {\n primary: {\n main: '#02B9E5',\n contrastText: '#fff',\n },\n },\n});\n","import { HashRouter as Router } from 'react-router-dom';\nimport { Container } from '@material-ui/core';\nimport { ThemeProvider } from '@material-ui/core/styles';\n\nimport { Header } from './shared/Header';\nimport { Routes } from './Routes';\nimport { Attribution } from './shared/Attribution';\nimport { theme } from './theme';\n\nconst App = () => {\n // TODO: Removed in future version.\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.getRegistrations().then((registrations) => {\n for (const registration of registrations) {\n registration.unregister();\n }\n });\n }\n\n return (\n \n \n
\n \n \n {/* */}\n \n \n \n \n );\n};\n\nexport default App;\n","import i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\n\nimport Backend from 'i18next-http-backend';\n\ni18n\n .use(initReactI18next)\n .use(Backend)\n .init({\n backend: {\n loadPath: process.env.PUBLIC_URL + '/locales/{{lng}}.json',\n },\n\n fallbackLng: 'en',\n lng: 'en',\n debug: false,\n\n // have a common namespace used around the full app\n ns: ['translations'],\n defaultNS: 'translations',\n\n keySeparator: false, // we use content as keys\n\n interpolation: {\n escapeValue: false, // not needed for react!!\n formatSeparator: ',',\n },\n\n appendNamespaceToMissingKey: true,\n });\n\nexport default i18n;\n","import ReactDOM from 'react-dom';\nimport { Suspense } from 'react';\nimport App from './App';\nimport './i18n';\n\nReactDOM.render(\n Loading...}>\n \n ,\n document.getElementById('root'),\n);\n"],"sourceRoot":""}