diff --git a/.vscode/settings.json b/.vscode/settings.json index 35bbefa..7203fc0 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,6 +1,6 @@ { - "cSpell.words": [ - "ciphertext", - "cryptgeon" - ] -} \ No newline at end of file + "cSpell.words": ["ciphertext", "cryptgeon"], + "i18n-ally.localesPaths": ["frontend/locales"], + "i18n-ally.enabledFrameworks": ["svelte"], + "i18n-ally.keystyle": "nested" +} diff --git a/frontend/README.md b/frontend/README.md index 82510ca..95347d0 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -1,38 +1,18 @@ -# create-svelte +# Cryptgeon Frontend -Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/master/packages/create-svelte); +## Locale -## Creating a project +Download with these settings: -If you're seeing this, you've probably already done this step. Congrats! - -```bash -# create a new project in the current directory -npm init svelte@next - -# create a new project in my-app -npm init svelte@next my-app +```json +{ + "format": "json", + "indentation": "tab", + "json_unescaped_slashes": true, + "export_sort": "first_added", + "original_filenames": false, + "export_empty_as": "skip", + "add_newline_eof": true, + "replace_breaks": false +} ``` - -> Note: the `@next` is temporary - -## Developing - -Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: - -```bash -npm run dev - -# or start the server and open the app in a new browser tab -npm run dev -- --open -``` - -## Building - -Before creating a production version of your app, install an [adapter](https://kit.svelte.dev/docs#adapters) for your target environment. Then: - -```bash -npm run build -``` - -> You can preview the built app with `npm run preview`, regardless of whether you installed an adapter. This should _not_ be used to serve your app in production. diff --git a/frontend/locales/en.json b/frontend/locales/en.json new file mode 100644 index 0000000..dd512db --- /dev/null +++ b/frontend/locales/en.json @@ -0,0 +1,49 @@ +{ + "common": { + "note": "note", + "file": "file", + "advanced": "advanced", + "create": "create", + "loading": "loading...", + "mode": "mode", + "views": "{n, plural, =0 {views} =1 {1 view} other {# views}}", + "minutes": "{n, plural, =0 {minutes} =1 {1 minute} other {# minutes}}", + "max": "max", + "share_link": "share link", + "copy_clipboard": "copy to clipboard" + }, + "home": { + "intro": "Easily send fully encrypted, secure notes or files with one click. Just create a note and share the link.", + "explanation": "the note will expire and be destroyed after {type}.", + "new_note": "new note", + "new_note_notice": "availability:
the note is not guaranteed to be stored as everything is kept in ram, if it fills up the oldest notes will be removed.
(you probably will be fine, just be warned.)", + "errors": { + "note_to_big": "could not create note. note is to big", + "note_error": "could not create note. please try again." + } + }, + "show": { + "errors": { + "not_found": "note was not found or was already deleted.", + "decryption_failed": "wrong password. could not decipher. probably a broken link. note was destroyed." + }, + "explanation": "click below to show and delete the note if the counter has reached it's limit", + "show_note": "show note", + "warning_will_not_see_again": "you will not get the chance to see the note again.", + "download_all": "download all" + }, + "file_upload": { + "selected_files": "Selected Files", + "no_files_selected": "No Files Selected" + }, + "theme": { + "auto": "auto", + "dark": "dark", + "light": "light" + }, + "nav": { + "home": "home", + "about": "about", + "code": "code" + } +} diff --git a/frontend/package.json b/frontend/package.json index 29c3713..09a8372 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -8,13 +8,14 @@ }, "type": "module", "devDependencies": { - "@sveltejs/adapter-static": "^1.0.0-next.24", - "@sveltejs/kit": "^1.0.0-next.212", - "svelte": "^3.44.3", + "@sveltejs/adapter-static": "^1.0.0-next.26", + "@sveltejs/kit": "^1.0.0-next.231", + "svelte": "^3.46.2", + "svelte-intl-precompile": "^0.8.0", "svelte-preprocess": "^4.10.1", "tslib": "^2.3.1", "typescript": "^4.5.4", - "vite": "^2.7.10" + "vite": "^2.7.12" }, "dependencies": { "@fontsource/fira-mono": "^4.5.0", diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 2306531..a824a76 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -2,16 +2,17 @@ lockfileVersion: 5.3 specifiers: '@fontsource/fira-mono': ^4.5.0 - '@sveltejs/adapter-static': ^1.0.0-next.24 - '@sveltejs/kit': ^1.0.0-next.212 + '@sveltejs/adapter-static': ^1.0.0-next.26 + '@sveltejs/kit': ^1.0.0-next.231 copy-to-clipboard: ^3.3.1 file-saver: ^2.0.5 pretty-bytes: ^5.6.0 - svelte: ^3.44.3 + svelte: ^3.46.2 + svelte-intl-precompile: ^0.8.0 svelte-preprocess: ^4.10.1 tslib: ^2.3.1 typescript: ^4.5.4 - vite: ^2.7.10 + vite: ^2.7.12 dependencies: '@fontsource/fira-mono': 4.5.0 @@ -20,20 +21,249 @@ dependencies: pretty-bytes: 5.6.0 devDependencies: - '@sveltejs/adapter-static': 1.0.0-next.24 - '@sveltejs/kit': 1.0.0-next.212_svelte@3.44.3 - svelte: 3.44.3 - svelte-preprocess: 4.10.1_svelte@3.44.3+typescript@4.5.4 + '@sveltejs/adapter-static': 1.0.0-next.26 + '@sveltejs/kit': 1.0.0-next.231_svelte@3.46.2 + svelte: 3.46.2 + svelte-intl-precompile: 0.8.0_svelte@3.46.2 + svelte-preprocess: 4.10.1_svelte@3.46.2+typescript@4.5.4 tslib: 2.3.1 typescript: 4.5.4 - vite: 2.7.10 + vite: 2.7.12 packages: + /@babel/code-frame/7.16.7: + resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.16.7 + dev: true + + /@babel/compat-data/7.16.8: + resolution: {integrity: sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/core/7.16.7: + resolution: {integrity: sha512-aeLaqcqThRNZYmbMqtulsetOQZ/5gbR/dWruUCJcpas4Qoyy+QeagfDsPdMrqwsPRDNxJvBlRiZxxX7THO7qtA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.16.7 + '@babel/generator': 7.16.8 + '@babel/helper-compilation-targets': 7.16.7_@babel+core@7.16.7 + '@babel/helper-module-transforms': 7.16.7 + '@babel/helpers': 7.16.7 + '@babel/parser': 7.16.8 + '@babel/template': 7.16.7 + '@babel/traverse': 7.16.8 + '@babel/types': 7.16.8 + convert-source-map: 1.8.0 + debug: 4.3.3 + gensync: 1.0.0-beta.2 + json5: 2.2.0 + semver: 6.3.0 + source-map: 0.5.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/generator/7.16.8: + resolution: {integrity: sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.16.8 + jsesc: 2.5.2 + source-map: 0.5.7 + dev: true + + /@babel/helper-compilation-targets/7.16.7_@babel+core@7.16.7: + resolution: {integrity: sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.16.8 + '@babel/core': 7.16.7 + '@babel/helper-validator-option': 7.16.7 + browserslist: 4.19.1 + semver: 6.3.0 + dev: true + + /@babel/helper-environment-visitor/7.16.7: + resolution: {integrity: sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.16.8 + dev: true + + /@babel/helper-function-name/7.16.7: + resolution: {integrity: sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-get-function-arity': 7.16.7 + '@babel/template': 7.16.7 + '@babel/types': 7.16.8 + dev: true + + /@babel/helper-get-function-arity/7.16.7: + resolution: {integrity: sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.16.8 + dev: true + + /@babel/helper-hoist-variables/7.16.7: + resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.16.8 + dev: true + + /@babel/helper-module-imports/7.16.7: + resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.16.8 + dev: true + + /@babel/helper-module-transforms/7.16.7: + resolution: {integrity: sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-environment-visitor': 7.16.7 + '@babel/helper-module-imports': 7.16.7 + '@babel/helper-simple-access': 7.16.7 + '@babel/helper-split-export-declaration': 7.16.7 + '@babel/helper-validator-identifier': 7.16.7 + '@babel/template': 7.16.7 + '@babel/traverse': 7.16.8 + '@babel/types': 7.16.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-plugin-utils/7.16.7: + resolution: {integrity: sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-simple-access/7.16.7: + resolution: {integrity: sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.16.8 + dev: true + + /@babel/helper-split-export-declaration/7.16.7: + resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.16.8 + dev: true + + /@babel/helper-validator-identifier/7.16.7: + resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-option/7.16.7: + resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helpers/7.16.7: + resolution: {integrity: sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.16.7 + '@babel/traverse': 7.16.8 + '@babel/types': 7.16.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/highlight/7.16.7: + resolution: {integrity: sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.16.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@babel/parser/7.16.8: + resolution: {integrity: sha512-i7jDUfrVBWc+7OKcBzEe5n7fbv3i2fWtxKzzCvOjnzSxMfWMigAhtfJ7qzZNGFNMsCCd67+uz553dYKWXPvCKw==} + engines: {node: '>=6.0.0'} + hasBin: true + dev: true + + /@babel/template/7.16.7: + resolution: {integrity: sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.16.7 + '@babel/parser': 7.16.8 + '@babel/types': 7.16.8 + dev: true + + /@babel/traverse/7.16.8: + resolution: {integrity: sha512-xe+H7JlvKsDQwXRsBhSnq1/+9c+LlQcCK3Tn/l5sbx02HYns/cn7ibp9+RV1sIUqu7hKg91NWsgHurO9dowITQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.16.7 + '@babel/generator': 7.16.8 + '@babel/helper-environment-visitor': 7.16.7 + '@babel/helper-function-name': 7.16.7 + '@babel/helper-hoist-variables': 7.16.7 + '@babel/helper-split-export-declaration': 7.16.7 + '@babel/parser': 7.16.8 + '@babel/types': 7.16.8 + debug: 4.3.3 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types/7.16.8: + resolution: {integrity: sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.16.7 + to-fast-properties: 2.0.0 + dev: true + /@fontsource/fira-mono/4.5.0: resolution: {integrity: sha512-KE+d3wmgq/YKM0BqgUF7p2yeBNi805Nfof1lC1wJ7E9i2EWoC363sGdKG+MQBVm+ei3GYZu+Bo8Xha1w1pkB7g==} dev: false + /@formatjs/ecma402-abstract/1.11.1: + resolution: {integrity: sha512-tgtNODZUGuUI6PAcnvaLZpGrZLVkXnnAvgzOiueYMzFdOdcOw4iH1WKhCe3+r6VR8rHKToJ2HksUGNCB+zt/bg==} + dependencies: + '@formatjs/intl-localematcher': 0.2.22 + tslib: 2.3.1 + dev: true + + /@formatjs/icu-messageformat-parser/2.0.16: + resolution: {integrity: sha512-sYg0ImXsAqBbjU/LotoCD9yKC5nUpWVy3s4DwWerHXD4sm62FcjMF8mekwudRk3eZLHqSO+M21MpFUUjDQ+Q5Q==} + dependencies: + '@formatjs/ecma402-abstract': 1.11.1 + '@formatjs/icu-skeleton-parser': 1.3.3 + tslib: 2.3.1 + dev: true + + /@formatjs/icu-skeleton-parser/1.3.3: + resolution: {integrity: sha512-ifWnzjmHPHUF89UpCvClTP66sXYFc8W/qg7Qt+qtTUB9BqRWlFeUsevAzaMYDJsRiOy4S2WJFrJoZgRKUFfPGQ==} + dependencies: + '@formatjs/ecma402-abstract': 1.11.1 + tslib: 2.3.1 + dev: true + + /@formatjs/intl-localematcher/0.2.22: + resolution: {integrity: sha512-z+TvbHW8Q/g2l7/PnfUl0mV9gWxV4d0HT6GQyzkO5QI6QjCvCZGiztnmLX7zoyS16uSMvZ2PoMDfSK9xvZkRRA==} + dependencies: + tslib: 2.3.1 + dev: true + /@rollup/pluginutils/4.1.2: resolution: {integrity: sha512-ROn4qvkxP9SyPeHaf7uQC/GPFY6L/OWy9+bd9AwcjOAWQwxRscoEyAUD8qCY5o5iL4jqQwoLk2kaTKJPb/HwzQ==} engines: {node: '>= 8.0.0'} @@ -42,23 +272,23 @@ packages: picomatch: 2.3.1 dev: true - /@sveltejs/adapter-static/1.0.0-next.24: - resolution: {integrity: sha512-lMiwZrZumWRrTQxaj9pFs5oW0h/97spyDl1QjmnkNaA006WeqornoETt31WpU0Lz2/2uYNXvUBBcL1LGc9Vylg==} + /@sveltejs/adapter-static/1.0.0-next.26: + resolution: {integrity: sha512-LXR0HkPygZ+m9wJhFqbYWbJ0jquhgUK6vL/8AwnqbAZGGtQFloMpf49WOANk7MiLBeY6L97W5jPLSxHiDW3T0Q==} dependencies: tiny-glob: 0.2.9 dev: true - /@sveltejs/kit/1.0.0-next.212_svelte@3.44.3: - resolution: {integrity: sha512-hjpk/Rqrl6hhNf1Qsx6EDvL3Cm9JvmvW/Z1FRYVhGg1xin/JQkPgFzTU27NBSYhtK1t4buLmlO1tqdMvurs9Fg==} + /@sveltejs/kit/1.0.0-next.231_svelte@3.46.2: + resolution: {integrity: sha512-utG2cfgweIIwFA1IcDDzDTa7cz+UiJX03ELG9cvpwkGIlHypzbGr0AnUzRAX60HUsBQLNhtjNCU2BUUy8IQLPw==} engines: {node: '>=14.13'} hasBin: true peerDependencies: svelte: ^3.44.0 dependencies: - '@sveltejs/vite-plugin-svelte': 1.0.0-next.33_svelte@3.44.3+vite@2.7.10 - sade: 1.8.0 - svelte: 3.44.3 - vite: 2.7.10 + '@sveltejs/vite-plugin-svelte': 1.0.0-next.34_svelte@3.46.2+vite@2.7.12 + sade: 1.8.1 + svelte: 3.46.2 + vite: 2.7.12 transitivePeerDependencies: - diff-match-patch - less @@ -67,8 +297,8 @@ packages: - supports-color dev: true - /@sveltejs/vite-plugin-svelte/1.0.0-next.33_svelte@3.44.3+vite@2.7.10: - resolution: {integrity: sha512-aj0h2+ZixgT+yoJFIs8dRRw/Cj9tgNu3+hY4CJikpa04mfhR61wXqJFfi2ZEFMUvFda5nCxKYIChFkc6wq5fJA==} + /@sveltejs/vite-plugin-svelte/1.0.0-next.34_svelte@3.46.2+vite@2.7.12: + resolution: {integrity: sha512-qZH2jndijrdkvevgbO7OH3iQsviM5Kz7h5APiNP4yEMZTrwq9bifzYvco6BprwtPvLb5wYlRVFZUOdusY6AovQ==} engines: {node: ^14.13.1 || >= 16} peerDependencies: diff-match-patch: ^1.0.5 @@ -83,15 +313,15 @@ packages: kleur: 4.1.4 magic-string: 0.25.7 require-relative: 0.8.7 - svelte: 3.44.3 - svelte-hmr: 0.14.9_svelte@3.44.3 - vite: 2.7.10 + svelte: 3.46.2 + svelte-hmr: 0.14.9_svelte@3.46.2 + vite: 2.7.12 transitivePeerDependencies: - supports-color dev: true - /@types/node/17.0.6: - resolution: {integrity: sha512-+XBAjfZmmivILUzO0HwBJoYkAyyySSLg5KCGBDFLomJo0sV6szvVLAf4ANZZ0pfWzgEds5KmGLG9D5hfEqOhaA==} + /@types/node/17.0.8: + resolution: {integrity: sha512-YofkM6fGv4gDJq78g4j0mMuGMkZVxZDgtU0JRdx6FgiJDG+0fY0GKVolOV8WqVmEhLCXkQRjwDdKyPxJp/uucg==} dev: true /@types/pug/2.0.6: @@ -101,7 +331,28 @@ packages: /@types/sass/1.43.1: resolution: {integrity: sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==} dependencies: - '@types/node': 17.0.6 + '@types/node': 17.0.8 + dev: true + + /ansi-styles/3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: true + + /argparse/2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /babel-plugin-precompile-intl/0.2.2: + resolution: {integrity: sha512-XYBgWKFXfBqnOBNS4ajQEpBYxx18hz5uV8HA/jNu/enpOHxE6D5zZdbRnPMExMOkTkG7snmf6LRKo0uYTHeEtg==} + dependencies: + '@babel/core': 7.16.7 + '@babel/helper-plugin-utils': 7.16.7 + '@formatjs/icu-messageformat-parser': 2.0.16 + transitivePeerDependencies: + - supports-color dev: true /balanced-match/1.0.2: @@ -115,14 +366,55 @@ packages: concat-map: 0.0.1 dev: true + /browserslist/4.19.1: + resolution: {integrity: sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001299 + electron-to-chromium: 1.4.46 + escalade: 3.1.1 + node-releases: 2.0.1 + picocolors: 1.0.0 + dev: true + /buffer-crc32/0.2.13: resolution: {integrity: sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=} dev: true + /caniuse-lite/1.0.30001299: + resolution: {integrity: sha512-iujN4+x7QzqA2NCSrS5VUy+4gLmRd4xv6vbBBsmfVqTx8bLAD8097euLqQgKxSVLvxjSDcvF1T/i9ocgnUFexw==} + dev: true + + /chalk/2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /color-convert/1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: true + + /color-name/1.1.3: + resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} + dev: true + /concat-map/0.0.1: resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} dev: true + /convert-source-map/1.8.0: + resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} + dependencies: + safe-buffer: 5.1.2 + dev: true + /copy-to-clipboard/3.3.1: resolution: {integrity: sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==} dependencies: @@ -146,6 +438,10 @@ packages: engines: {node: '>=8'} dev: true + /electron-to-chromium/1.4.46: + resolution: {integrity: sha512-UtV0xUA/dibCKKP2JMxOpDtXR74zABevuUEH4K0tvduFSIoxRVcYmQsbB51kXsFTX8MmOyWMt8tuZAlmDOqkrQ==} + dev: true + /es6-promise/3.3.1: resolution: {integrity: sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=} dev: true @@ -310,6 +606,16 @@ packages: esbuild-windows-arm64: 0.13.15 dev: true + /escalade/3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: true + + /escape-string-regexp/1.0.5: + resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} + engines: {node: '>=0.8.0'} + dev: true + /estree-walker/2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} dev: true @@ -334,6 +640,11 @@ packages: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} dev: true + /gensync/1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: true + /glob/7.2.0: resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} dependencies: @@ -345,6 +656,11 @@ packages: path-is-absolute: 1.0.1 dev: true + /globals/11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true + /globalyzer/0.1.0: resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} dev: true @@ -353,8 +669,13 @@ packages: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} dev: true - /graceful-fs/4.2.8: - resolution: {integrity: sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==} + /graceful-fs/4.2.9: + resolution: {integrity: sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==} + dev: true + + /has-flag/3.0.0: + resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} + engines: {node: '>=4'} dev: true /has/1.0.3: @@ -375,12 +696,37 @@ packages: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: true - /is-core-module/2.8.0: - resolution: {integrity: sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==} + /is-core-module/2.8.1: + resolution: {integrity: sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==} dependencies: has: 1.0.3 dev: true + /js-tokens/4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true + + /js-yaml/4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /jsesc/2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /json5/2.2.0: + resolution: {integrity: sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==} + engines: {node: '>=6'} + hasBin: true + dependencies: + minimist: 1.2.5 + dev: true + /kleur/4.1.4: resolution: {integrity: sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==} engines: {node: '>=6'} @@ -423,12 +769,16 @@ packages: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true - /nanoid/3.1.30: - resolution: {integrity: sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==} + /nanoid/3.1.32: + resolution: {integrity: sha512-F8mf7R3iT9bvThBoW4tGXhXFHCctyCiUUPrWF8WaTqa3h96d9QybkSeba43XVOOE3oiLfkVDe4bT8MeGmkrTxw==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true dev: true + /node-releases/2.0.1: + resolution: {integrity: sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==} + dev: true + /once/1.4.0: resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} dependencies: @@ -444,6 +794,11 @@ packages: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true + /path-starts-with/2.0.0: + resolution: {integrity: sha512-3UHTHbJz5+NLkPafFR+2ycJOjoc4WV2e9qCZCnm71zHiWaFrm1XniLVTkZXvaRgxr1xFh9JsTdicpH2yM03nLA==} + engines: {node: '>=8'} + dev: true + /picocolors/1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: true @@ -457,11 +812,19 @@ packages: resolution: {integrity: sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.1.30 + nanoid: 3.1.32 picocolors: 1.0.0 source-map-js: 1.0.1 dev: true + /precompile-intl-runtime/0.4.15_svelte@3.46.2: + resolution: {integrity: sha512-B05lHn02+68hOHZkUo35vNo0K/IRiVCT7dkWmjI9tpzAn/2zbGjllU6EwqsQXxXrf2CKj1fAD5wgUbapNO+RXQ==} + peerDependencies: + svelte: ^3.37.0 + dependencies: + svelte: 3.46.2 + dev: true + /pretty-bytes/5.6.0: resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} engines: {node: '>=6'} @@ -471,11 +834,13 @@ packages: resolution: {integrity: sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=} dev: true - /resolve/1.20.0: - resolution: {integrity: sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==} + /resolve/1.21.0: + resolution: {integrity: sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA==} + hasBin: true dependencies: - is-core-module: 2.8.0 + is-core-module: 2.8.1 path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 dev: true /rimraf/2.7.1: @@ -485,30 +850,39 @@ packages: glob: 7.2.0 dev: true - /rollup/2.62.0: - resolution: {integrity: sha512-cJEQq2gwB0GWMD3rYImefQTSjrPYaC6s4J9pYqnstVLJ1CHa/aZNVkD4Epuvg4iLeMA4KRiq7UM7awKK6j7jcw==} + /rollup/2.64.0: + resolution: {integrity: sha512-+c+lbw1lexBKSMb1yxGDVfJ+vchJH3qLbmavR+awDinTDA2C5Ug9u7lkOzj62SCu0PKUExsW36tpgW7Fmpn3yQ==} engines: {node: '>=10.0.0'} hasBin: true optionalDependencies: fsevents: 2.3.2 dev: true - /sade/1.8.0: - resolution: {integrity: sha512-NRfCA8AVYuAA7Hu8bs18od6J4BdcXXwOv6OJuNgwbw8LcLK8JKwaM3WckLZ+MGyPJUS/ivVgK3twltrOIJJnug==} + /sade/1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} engines: {node: '>=6'} dependencies: mri: 1.2.0 dev: true + /safe-buffer/5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: true + /sander/0.5.1: resolution: {integrity: sha1-dB4kXiMfB8r7b98PEzrfohalAq0=} dependencies: es6-promise: 3.3.1 - graceful-fs: 4.2.8 + graceful-fs: 4.2.9 mkdirp: 0.5.5 rimraf: 2.7.1 dev: true + /semver/6.3.0: + resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} + hasBin: true + dev: true + /sorcery/0.10.0: resolution: {integrity: sha1-iukK19fLBfxZ8asMY3hF1cFaUrc=} hasBin: true @@ -524,10 +898,20 @@ packages: engines: {node: '>=0.10.0'} dev: true + /source-map/0.5.7: + resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=} + engines: {node: '>=0.10.0'} + dev: true + /sourcemap-codec/1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} dev: true + /strip-bom/5.0.0: + resolution: {integrity: sha512-p+byADHF7SzEcVnLvc/r3uognM1hUhObuHXxJcgLCfD194XAkaLbjq3Wzb0N5G2tgIjH0dgT708Z51QxMeu60A==} + engines: {node: '>=12'} + dev: true + /strip-indent/3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} @@ -535,15 +919,41 @@ packages: min-indent: 1.0.1 dev: true - /svelte-hmr/0.14.9_svelte@3.44.3: + /supports-color/5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-preserve-symlinks-flag/1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /svelte-hmr/0.14.9_svelte@3.46.2: resolution: {integrity: sha512-bKE9+4qb4sAnA+TKHiYurUl970rjA0XmlP9TEP7K/ncyWz3m81kA4HOgmlZK/7irGK7gzZlaPDI3cmf8fp/+tg==} peerDependencies: svelte: '>=3.19.0' dependencies: - svelte: 3.44.3 + svelte: 3.46.2 dev: true - /svelte-preprocess/4.10.1_svelte@3.44.3+typescript@4.5.4: + /svelte-intl-precompile/0.8.0_svelte@3.46.2: + resolution: {integrity: sha512-Syis88ygG6MNamES/WrDLAd6Fe1VU4w+t9ieN3zw2Q5zsSoTbKwcQhkmOX10hsxa+9Q8Wtyi1GbXYs1Ia+PncA==} + dependencies: + babel-plugin-precompile-intl: 0.2.2 + js-yaml: 4.1.0 + json5: 2.2.0 + path-starts-with: 2.0.0 + precompile-intl-runtime: 0.4.15_svelte@3.46.2 + strip-bom: 5.0.0 + transitivePeerDependencies: + - supports-color + - svelte + dev: true + + /svelte-preprocess/4.10.1_svelte@3.46.2+typescript@4.5.4: resolution: {integrity: sha512-NSNloaylf+o9UeyUR2KvpdxrAyMdHl3U7rMnoP06/sG0iwJvlUM4TpMno13RaNqovh4AAoGsx1jeYcIyuGUXMw==} engines: {node: '>= 9.11.2'} requiresBuild: true @@ -590,12 +1000,12 @@ packages: magic-string: 0.25.7 sorcery: 0.10.0 strip-indent: 3.0.0 - svelte: 3.44.3 + svelte: 3.46.2 typescript: 4.5.4 dev: true - /svelte/3.44.3: - resolution: {integrity: sha512-aGgrNCip5PQFNfq9e9tmm7EYxWLVHoFsEsmKrtOeRD8dmoGDdyTQ+21xd7qgFd8MNdKGSYvg7F9dr+Tc0yDymg==} + /svelte/3.46.2: + resolution: {integrity: sha512-RXSAtYNefe01Sb1lXtZ2I+gzn3t/h/59hoaRNeRrm8IkMIu6BSiAkbpi41xb+C44x54YKnbk9+dtfs3pM4hECA==} engines: {node: '>= 8'} dev: true @@ -606,6 +1016,11 @@ packages: globrex: 0.1.2 dev: true + /to-fast-properties/2.0.0: + resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=} + engines: {node: '>=4'} + dev: true + /toggle-selection/1.0.6: resolution: {integrity: sha1-bkWxJj8gF/oKzH2J14sVuL932jI=} dev: false @@ -620,8 +1035,8 @@ packages: hasBin: true dev: true - /vite/2.7.10: - resolution: {integrity: sha512-KEY96ntXUid1/xJihJbgmLZx7QSC2D4Tui0FdS0Old5OokYzFclcofhtxtjDdGOk/fFpPbHv9yw88+rB93Tb8w==} + /vite/2.7.12: + resolution: {integrity: sha512-KvPYToRQWhRfBeVkyhkZ5hASuHQkqZUUdUcE3xyYtq5oYEPIJ0h9LWiWTO6v990glmSac2cEPeYeXzpX5Z6qKQ==} engines: {node: '>=12.2.0'} hasBin: true peerDependencies: @@ -638,8 +1053,8 @@ packages: dependencies: esbuild: 0.13.15 postcss: 8.4.5 - resolve: 1.20.0 - rollup: 2.62.0 + resolve: 1.21.0 + rollup: 2.64.0 optionalDependencies: fsevents: 2.3.2 dev: true diff --git a/frontend/src/lib/ui/FileUpload.svelte b/frontend/src/lib/ui/FileUpload.svelte index fb8a9b2..ee5b752 100644 --- a/frontend/src/lib/ui/FileUpload.svelte +++ b/frontend/src/lib/ui/FileUpload.svelte @@ -2,6 +2,7 @@ import type { FileDTO } from '$lib/api' import { Files } from '$lib/files' import { createEventDispatcher } from 'svelte' + import { t } from 'svelte-intl-precompile' import MaxSize from './MaxSize.svelte' export let label: string = '' @@ -40,7 +41,7 @@
{#if files.length}
- Selected Files + {$t('file_upload.selected_files')} {#each files as file}
{file.name} @@ -49,9 +50,9 @@
{:else}
- No Files Selected + {$t('file_upload.no_files_selected')}
- max: + {$t('common.max')}:
{/if}
diff --git a/frontend/src/lib/ui/MaxSize.svelte b/frontend/src/lib/ui/MaxSize.svelte index 4a88ed6..8264b67 100644 --- a/frontend/src/lib/ui/MaxSize.svelte +++ b/frontend/src/lib/ui/MaxSize.svelte @@ -1,12 +1,13 @@ {#if $status !== null} {prettyBytes($status.max_size, { binary: true })} {:else} - loading... + {$_('common.loading')} {/if} diff --git a/frontend/src/lib/ui/ShowNote.svelte b/frontend/src/lib/ui/ShowNote.svelte index a166c9d..421ae23 100644 --- a/frontend/src/lib/ui/ShowNote.svelte +++ b/frontend/src/lib/ui/ShowNote.svelte @@ -4,6 +4,7 @@ import copy from 'copy-to-clipboard' import { saveAs } from 'file-saver' import prettyBytes from 'pretty-bytes' + import { t } from 'svelte-intl-precompile' import Button from './Button.svelte' export let note: NotePublic @@ -28,20 +29,20 @@ } -

you will not get the chance to see the note again.

+

{@html $t('show.warning_will_not_see_again')}

{#if note.meta.type === 'text'} -
+
{note.contents}
- + {:else} {#each files as file} -
+
downloadFile(file)}>↓ {file.name} {file.type} - {prettyBytes(file.size)}
{/each} - + {/if}