From cacb808117dde7d8f8de21f2ca0bed798c00981b Mon Sep 17 00:00:00 2001 From: Nicco Date: Fri, 7 Oct 2022 21:28:25 +0200 Subject: [PATCH] restructuring (#56) * restructuring * pin svelte kit version & parallel execution * update svelte kit * correct test result assets * add timeout * correct locale path * simplify crypto * fix for #58 * add verbosity flag * disable flaky test --- .github/workflows/test.yaml | 8 +- .vscode/settings.json | 2 +- CHANGELOG.md | 10 + Dockerfile | 6 +- README.md | 5 +- README_zh-CN.md | 24 +- docker-compose.yml | 5 +- frontend/pnpm-lock.yaml | 1615 ---------------- package.json | 15 +- {backend => packages/backend}/Cargo.lock | 2 +- {backend => packages/backend}/Cargo.toml | 2 +- packages/backend/package.json | 10 + {backend => packages/backend}/src/api.rs | 0 {backend => packages/backend}/src/client.rs | 0 {backend => packages/backend}/src/config.rs | 1 + {backend => packages/backend}/src/main.rs | 5 +- {backend => packages/backend}/src/note/mod.rs | 0 .../backend}/src/note/model.rs | 0 .../backend}/src/note/routes.rs | 0 {backend => packages/backend}/src/size.rs | 1 + .../backend}/src/status/mod.rs | 0 .../backend}/src/status/model.rs | 0 .../backend}/src/status/routes.rs | 0 {backend => packages/backend}/src/store.rs | 0 {frontend => packages/frontend}/.dockerignore | 0 {frontend => packages/frontend}/.gitignore | 0 {frontend => packages/frontend}/.npmrc | 0 .../frontend}/.prettierignore | 0 {frontend => packages/frontend}/.prettierrc | 0 {frontend => packages/frontend}/README.md | 0 {frontend => packages/frontend}/licenses.csv | 4 +- .../frontend}/locales/de.json | 0 .../frontend}/locales/en.json | 0 .../frontend}/locales/es.json | 0 .../frontend}/locales/fr.json | 0 .../frontend}/locales/it.json | 0 .../frontend}/locales/zh_CN.json | 0 {frontend => packages/frontend}/package.json | 7 +- .../frontend}/scripts/locale.js | 0 {frontend => packages/frontend}/src/app.css | 0 {frontend => packages/frontend}/src/app.html | 0 .../frontend}/src/global.d.ts | 0 .../frontend}/src/lib/adapters.ts | 0 .../frontend}/src/lib/api.ts | 0 .../frontend}/src/lib/crypto.ts | 70 +- .../src/lib/icons/IconContrast.svelte | 0 .../frontend}/src/lib/icons/IconCopy.svelte | 0 .../frontend}/src/lib/icons/IconDice.svelte | 0 .../frontend}/src/lib/icons/IconEye.svelte | 0 .../frontend}/src/lib/icons/IconEyeOff.svelte | 0 .../frontend}/src/lib/stores/status.ts | 0 .../frontend}/src/lib/toast.ts | 0 .../src/lib/ui/AboutParagraph.svelte | 0 .../src/lib/ui/AdvancedParameters.svelte | 2 +- .../frontend}/src/lib/ui/Button.svelte | 0 .../frontend}/src/lib/ui/FileUpload.svelte | 0 .../frontend}/src/lib/ui/Icon.svelte | 0 .../frontend}/src/lib/ui/Loader.svelte | 0 .../frontend}/src/lib/ui/MaxSize.svelte | 0 .../frontend}/src/lib/ui/NoteResult.svelte | 0 .../frontend}/src/lib/ui/ShowNote.svelte | 0 .../frontend}/src/lib/ui/Switch.svelte | 0 .../frontend}/src/lib/ui/TextArea.svelte | 0 .../frontend}/src/lib/ui/TextInput.svelte | 2 +- .../frontend}/src/lib/ui/ThemeToggle.svelte | 0 .../frontend}/src/lib/utils.ts | 0 .../frontend}/src/lib/views/Create.svelte | 6 +- .../frontend}/src/lib/views/Footer.svelte | 0 .../frontend}/src/lib/views/Header.svelte | 0 .../frontend/src/routes/+layout.svelte | 9 +- packages/frontend/src/routes/+layout.ts | 5 + .../frontend/src/routes/+page.svelte | 0 .../frontend/src/routes/about/+page.svelte | 6 +- .../src/routes/note/[id]/+page.svelte | 18 +- .../frontend/src/routes/note/[id]/+page.ts | 5 + .../frontend}/static/favicon.png | Bin .../frontend}/static/robots.txt | 0 .../frontend}/svelte.config.js | 0 {frontend => packages/frontend}/tsconfig.json | 0 .../frontend}/vite.config.js | 1 + playwright.config.ts | 5 +- pnpm-lock.yaml | 1642 ++++++++++++++++- pnpm-workspace.yaml | 2 + test/file/too-big.spec.ts | 8 + 84 files changed, 1757 insertions(+), 1746 deletions(-) delete mode 100644 frontend/pnpm-lock.yaml rename {backend => packages/backend}/Cargo.lock (99%) rename {backend => packages/backend}/Cargo.toml (96%) create mode 100644 packages/backend/package.json rename {backend => packages/backend}/src/api.rs (100%) rename {backend => packages/backend}/src/client.rs (100%) rename {backend => packages/backend}/src/config.rs (93%) rename {backend => packages/backend}/src/main.rs (89%) rename {backend => packages/backend}/src/note/mod.rs (100%) rename {backend => packages/backend}/src/note/model.rs (100%) rename {backend => packages/backend}/src/note/routes.rs (100%) rename {backend => packages/backend}/src/size.rs (91%) rename {backend => packages/backend}/src/status/mod.rs (100%) rename {backend => packages/backend}/src/status/model.rs (100%) rename {backend => packages/backend}/src/status/routes.rs (100%) rename {backend => packages/backend}/src/store.rs (100%) rename {frontend => packages/frontend}/.dockerignore (100%) rename {frontend => packages/frontend}/.gitignore (100%) rename {frontend => packages/frontend}/.npmrc (100%) rename {frontend => packages/frontend}/.prettierignore (100%) rename {frontend => packages/frontend}/.prettierrc (100%) rename {frontend => packages/frontend}/README.md (100%) rename {frontend => packages/frontend}/licenses.csv (80%) rename {frontend => packages/frontend}/locales/de.json (100%) rename {frontend => packages/frontend}/locales/en.json (100%) rename {frontend => packages/frontend}/locales/es.json (100%) rename {frontend => packages/frontend}/locales/fr.json (100%) rename {frontend => packages/frontend}/locales/it.json (100%) rename {frontend => packages/frontend}/locales/zh_CN.json (100%) rename {frontend => packages/frontend}/package.json (83%) rename {frontend => packages/frontend}/scripts/locale.js (100%) rename {frontend => packages/frontend}/src/app.css (100%) rename {frontend => packages/frontend}/src/app.html (100%) rename {frontend => packages/frontend}/src/global.d.ts (100%) rename {frontend => packages/frontend}/src/lib/adapters.ts (100%) rename {frontend => packages/frontend}/src/lib/api.ts (100%) rename {frontend => packages/frontend}/src/lib/crypto.ts (62%) rename {frontend => packages/frontend}/src/lib/icons/IconContrast.svelte (100%) rename {frontend => packages/frontend}/src/lib/icons/IconCopy.svelte (100%) rename {frontend => packages/frontend}/src/lib/icons/IconDice.svelte (100%) rename {frontend => packages/frontend}/src/lib/icons/IconEye.svelte (100%) rename {frontend => packages/frontend}/src/lib/icons/IconEyeOff.svelte (100%) rename {frontend => packages/frontend}/src/lib/stores/status.ts (100%) rename {frontend => packages/frontend}/src/lib/toast.ts (100%) rename {frontend => packages/frontend}/src/lib/ui/AboutParagraph.svelte (100%) rename {frontend => packages/frontend}/src/lib/ui/AdvancedParameters.svelte (96%) rename {frontend => packages/frontend}/src/lib/ui/Button.svelte (100%) rename {frontend => packages/frontend}/src/lib/ui/FileUpload.svelte (100%) rename {frontend => packages/frontend}/src/lib/ui/Icon.svelte (100%) rename {frontend => packages/frontend}/src/lib/ui/Loader.svelte (100%) rename {frontend => packages/frontend}/src/lib/ui/MaxSize.svelte (100%) rename {frontend => packages/frontend}/src/lib/ui/NoteResult.svelte (100%) rename {frontend => packages/frontend}/src/lib/ui/ShowNote.svelte (100%) rename {frontend => packages/frontend}/src/lib/ui/Switch.svelte (100%) rename {frontend => packages/frontend}/src/lib/ui/TextArea.svelte (100%) rename {frontend => packages/frontend}/src/lib/ui/TextInput.svelte (97%) rename {frontend => packages/frontend}/src/lib/ui/ThemeToggle.svelte (100%) rename {frontend => packages/frontend}/src/lib/utils.ts (100%) rename {frontend => packages/frontend}/src/lib/views/Create.svelte (96%) rename {frontend => packages/frontend}/src/lib/views/Footer.svelte (100%) rename {frontend => packages/frontend}/src/lib/views/Header.svelte (100%) rename frontend/src/routes/__layout.svelte => packages/frontend/src/routes/+layout.svelte (68%) create mode 100644 packages/frontend/src/routes/+layout.ts rename frontend/src/routes/index.svelte => packages/frontend/src/routes/+page.svelte (100%) rename frontend/src/routes/about.svelte => packages/frontend/src/routes/about/+page.svelte (94%) rename frontend/src/routes/note/[id].svelte => packages/frontend/src/routes/note/[id]/+page.svelte (87%) create mode 100644 packages/frontend/src/routes/note/[id]/+page.ts rename {frontend => packages/frontend}/static/favicon.png (100%) rename {frontend => packages/frontend}/static/robots.txt (100%) rename {frontend => packages/frontend}/svelte.config.js (100%) rename {frontend => packages/frontend}/tsconfig.json (100%) rename {frontend => packages/frontend}/vite.config.js (93%) create mode 100644 pnpm-workspace.yaml create mode 100644 test/file/too-big.spec.ts diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 6e44ad1..674b885 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -23,14 +23,14 @@ jobs: - name: Prepare run: | pnpm install - pnpm run ci:prepare + pnpm run test:prepare - name: Install Playwright run: npx playwright install --with-deps - name: Run your tests - run: pnpm run test + run: pnpm run test:run - name: Upload test results if: always() uses: actions/upload-artifact@v2 with: - name: playwright-report - path: playwright-report + name: test-results + path: test-results diff --git a/.vscode/settings.json b/.vscode/settings.json index 7203fc0..02fcdcf 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,6 +1,6 @@ { "cSpell.words": ["ciphertext", "cryptgeon"], - "i18n-ally.localesPaths": ["frontend/locales"], + "i18n-ally.localesPaths": ["packages/frontend/locales"], "i18n-ally.enabledFrameworks": ["svelte"], "i18n-ally.keystyle": "nested" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 9720b13..66f94d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,16 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [2.0.3] - 2022-10-07 + +### Added + +- Flag for verbosity. + +### Fixed + +- #58 Fixed bug in the max views frontend form. + ## [2.0.2] - 2022-07-20 ### Added diff --git a/Dockerfile b/Dockerfile index 2ef3f80..31b1758 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ FROM node:16-alpine as client WORKDIR /tmp RUN npm install -g pnpm@7 -COPY ./frontend ./ +COPY ./packages/frontend ./ RUN pnpm install RUN pnpm exec svelte-kit sync RUN pnpm run build @@ -12,9 +12,9 @@ RUN pnpm run build FROM rust:1.61-alpine as backend WORKDIR /tmp RUN apk add libc-dev openssl-dev alpine-sdk -COPY ./backend/Cargo.* ./ +COPY ./packages/backend/Cargo.* ./ RUN cargo fetch -COPY ./backend ./ +COPY ./packages/backend ./ RUN cargo build --release diff --git a/README.md b/README.md index dea4a73..58790f7 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,7 @@ of the notes even if it tried to. | `ALLOW_ADVANCED` | `true` | Allow custom configuration. If set to `false` all notes will be one view only. | | `THEME_IMAGE` | `""` | Custom image for replacing the logo. Must be publicly reachable | | `THEME_TEXT` | `""` | Custom text for replacing the description below the logo | +| `VERBOSITY` | `warn` | Verbosity level for the backend. [Possible values](https://docs.rs/env_logger/latest/env_logger/#enabling-logging) are: `error`, `warn`, `info`, `debug`, `trace` | ## Deployment @@ -146,9 +147,9 @@ You can see the app under [localhost:1234](http://localhost:1234). Tests are end to end tests written with Playwright. ```sh -pnpm run ci:prepare +pnpm run test:prepare docker compose up redis -d -pnpm run ci:server +pnpm run test:server # In another terminal. # Use the test or test:local script. The local version only runs in one browser for quicker development. diff --git a/README_zh-CN.md b/README_zh-CN.md index 2f5ae0d..df0b13d 100644 --- a/README_zh-CN.md +++ b/README_zh-CN.md @@ -47,15 +47,15 @@ _加密鸽_ 是一个受 [_PrivNote_](https://privnote.com)项目启发的安全 ## 环境变量 -| 变量名称 | 默认值 | 描述 | +| 变量名称 | 默认值 | 描述 | | ----------------- | ---------------- | --------------------------------------------------------------------------------- | -| `REDIS` | `redis://redis/` | Redis 连接 URL。 | -| `SIZE_LIMIT` | `1 KiB` | 最大请求体(body)限制。有关支持的数值请查看 [字节单位](https://docs.rs/byte-unit/) | -| `MAX_VIEWS` | `100` | 密信最多查看次数限制 | -| ` MAX_EXPIRATION` | `360` | 密信最长过期时间限制(分钟) | -| `ALLOW_ADVANCED` | `true` | 是否允许自定义设置,该项如果设为`false`,则不会显示自定义设置模块 | -| `THEME_IMAGE` | `""` | 自定义Logo图片,你在这里填写的的图片链接必须是可以公开访问的。 | -| `THEME_TEXT` | `""` | 自定义在Logo下方的文本。 | +| `REDIS` | `redis://redis/` | Redis 连接 URL。 | +| `SIZE_LIMIT` | `1 KiB` | 最大请求体(body)限制。有关支持的数值请查看 [字节单位](https://docs.rs/byte-unit/) | +| `MAX_VIEWS` | `100` | 密信最多查看次数限制 | +| ` MAX_EXPIRATION` | `360` | 密信最长过期时间限制(分钟) | +| `ALLOW_ADVANCED` | `true` | 是否允许自定义设置,该项如果设为`false`,则不会显示自定义设置模块 | +| `THEME_IMAGE` | `""` | 自定义 Logo 图片,你在这里填写的的图片链接必须是可以公开访问的。 | +| `THEME_TEXT` | `""` | 自定义在 Logo 下方的文本。 | ## 部署 @@ -148,7 +148,7 @@ cargo install cargo-watch 确保你的 Docker 正在运行 -> 如果你用的是 `macOS` 的话你可能需要关闭AirPlay接收功能因为该功能需要占用5000端口...) +> 如果你用的是 `macOS` 的话你可能需要关闭 AirPlay 接收功能因为该功能需要占用 5000 端口...) > https://developer.apple.com/forums/thread/682332 ```bash @@ -165,12 +165,12 @@ pnpm run dev ## 测试 -这些测试是用Playwright实现的一些端到端测试用例。 +这些测试是用 Playwright 实现的一些端到端测试用例。 ```sh -pnpm run ci:prepare +pnpm run test:prepare docker compose up redis -d -pnpm run ci:server +pnpm run test:server # 在另一个终端中: # 使用test或者test:local script。为了更快的开发,本地版本只会在一个浏览器中运行。 diff --git a/docker-compose.yml b/docker-compose.yml index 5eb2b2b..4fd6bf9 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,10 +10,11 @@ services: - 6379:6379 app: - build: . + # build: . + image: cupcakearmy/cryptgeon depends_on: - redis environment: - SIZE_LIMIT: 128 MiB + SIZE_LIMIT: 10 MiB ports: - 1234:5000 diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml deleted file mode 100644 index 397828f..0000000 --- a/frontend/pnpm-lock.yaml +++ /dev/null @@ -1,1615 +0,0 @@ -lockfileVersion: 5.4 - -specifiers: - '@fontsource/fira-mono': ^4.5.8 - '@lokalise/node-api': ^7.3.1 - '@sveltejs/adapter-static': ^1.0.0-next.38 - '@sveltejs/kit': ^1.0.0-next.384 - '@types/dompurify': ^2.3.3 - '@types/file-saver': ^2.0.5 - '@zerodevx/svelte-toast': ^0.7.2 - adm-zip: ^0.5.9 - copy-to-clipboard: ^3.3.1 - dompurify: ^2.3.10 - dotenv: ^16.0.1 - file-saver: ^2.0.5 - pretty-bytes: ^5.6.0 - svelte: ^3.49.0 - svelte-check: ^2.8.0 - svelte-intl-precompile: ^0.10.1 - svelte-preprocess: ^4.10.7 - tslib: ^2.4.0 - typescript: ^4.7.4 - vite: ^3.0.2 - -dependencies: - '@fontsource/fira-mono': 4.5.8 - copy-to-clipboard: 3.3.1 - dompurify: 2.3.10 - file-saver: 2.0.5 - pretty-bytes: 5.6.0 - -devDependencies: - '@lokalise/node-api': 7.3.1 - '@sveltejs/adapter-static': 1.0.0-next.38 - '@sveltejs/kit': 1.0.0-next.384_svelte@3.49.0+vite@3.0.2 - '@types/dompurify': 2.3.3 - '@types/file-saver': 2.0.5 - '@zerodevx/svelte-toast': 0.7.2 - adm-zip: 0.5.9 - dotenv: 16.0.1 - svelte: 3.49.0 - svelte-check: 2.8.0_svelte@3.49.0 - svelte-intl-precompile: 0.10.1_svelte@3.49.0 - svelte-preprocess: 4.10.7_uslzfc62di2n2otc2tvfklnwji - tslib: 2.4.0 - typescript: 4.7.4 - vite: 3.0.2 - -packages: - - /@ampproject/remapping/2.2.0: - resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/gen-mapping': 0.1.1 - '@jridgewell/trace-mapping': 0.3.14 - dev: true - - /@babel/code-frame/7.18.6: - resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.18.6 - dev: true - - /@babel/compat-data/7.18.8: - resolution: {integrity: sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/core/7.18.9: - resolution: {integrity: sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.0 - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.18.9 - '@babel/helper-compilation-targets': 7.18.9_@babel+core@7.18.9 - '@babel/helper-module-transforms': 7.18.9 - '@babel/helpers': 7.18.9 - '@babel/parser': 7.18.9 - '@babel/template': 7.18.6 - '@babel/traverse': 7.18.9 - '@babel/types': 7.18.9 - convert-source-map: 1.8.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.1 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/generator/7.18.9: - resolution: {integrity: sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.9 - '@jridgewell/gen-mapping': 0.3.2 - jsesc: 2.5.2 - dev: true - - /@babel/helper-compilation-targets/7.18.9_@babel+core@7.18.9: - resolution: {integrity: sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.18.8 - '@babel/core': 7.18.9 - '@babel/helper-validator-option': 7.18.6 - browserslist: 4.21.2 - semver: 6.3.0 - dev: true - - /@babel/helper-environment-visitor/7.18.9: - resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-function-name/7.18.9: - resolution: {integrity: sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.18.6 - '@babel/types': 7.18.9 - dev: true - - /@babel/helper-hoist-variables/7.18.6: - resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.9 - dev: true - - /@babel/helper-module-imports/7.18.6: - resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.9 - dev: true - - /@babel/helper-module-transforms/7.18.9: - resolution: {integrity: sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-simple-access': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/helper-validator-identifier': 7.18.6 - '@babel/template': 7.18.6 - '@babel/traverse': 7.18.9 - '@babel/types': 7.18.9 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-plugin-utils/7.18.9: - resolution: {integrity: sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-simple-access/7.18.6: - resolution: {integrity: sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.9 - dev: true - - /@babel/helper-split-export-declaration/7.18.6: - resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.9 - dev: true - - /@babel/helper-validator-identifier/7.18.6: - resolution: {integrity: sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-validator-option/7.18.6: - resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helpers/7.18.9: - resolution: {integrity: sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.18.6 - '@babel/traverse': 7.18.9 - '@babel/types': 7.18.9 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/highlight/7.18.6: - resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.18.6 - chalk: 2.4.2 - js-tokens: 4.0.0 - dev: true - - /@babel/parser/7.18.9: - resolution: {integrity: sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.18.9 - dev: true - - /@babel/template/7.18.6: - resolution: {integrity: sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/parser': 7.18.9 - '@babel/types': 7.18.9 - dev: true - - /@babel/traverse/7.18.9: - resolution: {integrity: sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.18.9 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.18.9 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.18.9 - '@babel/types': 7.18.9 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/types/7.18.9: - resolution: {integrity: sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.18.6 - to-fast-properties: 2.0.0 - dev: true - - /@fontsource/fira-mono/4.5.8: - resolution: {integrity: sha512-sFuSPB/Km8B1fy3CH0NqO5Nb4GmVMzp3XFaw6MwK293xhm3OnB68QJawwTTjLewcrS78wOTAhTUB058qxurJoQ==} - dev: false - - /@formatjs/ecma402-abstract/1.11.8: - resolution: {integrity: sha512-fgLqyWlwmTEuqV/TSLEL/t9JOmHNLFvCdgzXB0jc2w+WOItPCOJ1T0eyN6fQBQKRPfSqqNlu+kWj7ijcOVTVVQ==} - dependencies: - '@formatjs/intl-localematcher': 0.2.28 - tslib: 2.4.0 - dev: true - - /@formatjs/icu-messageformat-parser/2.1.4: - resolution: {integrity: sha512-3PqMvKWV1oyok0BuiXUAHIaotdhdTJw6OICqCZbfUgKT+ZRwRWO4IlCgvXJeCITaKS5p+PY0XXKjf/vUyIpWjQ==} - dependencies: - '@formatjs/ecma402-abstract': 1.11.8 - '@formatjs/icu-skeleton-parser': 1.3.10 - tslib: 2.4.0 - dev: true - - /@formatjs/icu-skeleton-parser/1.3.10: - resolution: {integrity: sha512-kXJmtLDqFF5aLTf8IxdJXnhrIX1Qb4Qp3a9jqRecGDYfzOa9hMhi9U0nKyhrJJ4cXxBzptcgb+LWkyeHL6nlBQ==} - dependencies: - '@formatjs/ecma402-abstract': 1.11.8 - tslib: 2.4.0 - dev: true - - /@formatjs/intl-localematcher/0.2.28: - resolution: {integrity: sha512-FLsc6Gifs1np/8HnCn/7Q+lHMmenrD5fuDhRT82yj0gi9O19kfaFwjQUw1gZsyILuRyT93GuzdifHj7TKRhBcw==} - dependencies: - tslib: 2.4.0 - dev: true - - /@jridgewell/gen-mapping/0.1.1: - resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - dev: true - - /@jridgewell/gen-mapping/0.3.2: - resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - '@jridgewell/trace-mapping': 0.3.14 - dev: true - - /@jridgewell/resolve-uri/3.1.0: - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} - engines: {node: '>=6.0.0'} - dev: true - - /@jridgewell/set-array/1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - dev: true - - /@jridgewell/sourcemap-codec/1.4.14: - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - dev: true - - /@jridgewell/trace-mapping/0.3.14: - resolution: {integrity: sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 - dev: true - - /@lokalise/node-api/7.3.1: - resolution: {integrity: sha512-sqtz5IU0wSDcHCslhQ0O6dPdNWgQkAEZUtlNuQ8tHsypzCy9ENW5mX6x5i0swaqiaM5KL/7442PueJvokwoADw==} - engines: {node: '>=10'} - dependencies: - got: 11.8.5 - dev: true - - /@nodelib/fs.scandir/2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - dev: true - - /@nodelib/fs.stat/2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - dev: true - - /@nodelib/fs.walk/1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.13.0 - dev: true - - /@rollup/pluginutils/4.2.1: - resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} - engines: {node: '>= 8.0.0'} - dependencies: - estree-walker: 2.0.2 - picomatch: 2.3.1 - dev: true - - /@sindresorhus/is/4.6.0: - resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} - engines: {node: '>=10'} - dev: true - - /@sveltejs/adapter-static/1.0.0-next.38: - resolution: {integrity: sha512-O1b264K62E3OrUnsFxMjKn3CUJF50fxGcW0rWk8fa5kjzskPsSyTxS3jnWNryFaVJ3oSUtx57m4qFW43S1910Q==} - dependencies: - tiny-glob: 0.2.9 - dev: true - - /@sveltejs/kit/1.0.0-next.384_svelte@3.49.0+vite@3.0.2: - resolution: {integrity: sha512-m1i9dhma1JAuDYp8nrPyqsN6VWv/ye90h6mWQvAC3lCNmKlb4F8cxhMYIhGYgzaZYSqToNiTaK2QRVPuB4i2/g==} - engines: {node: '>=16.9'} - hasBin: true - peerDependencies: - svelte: ^3.44.0 - vite: ^3.0.0 - dependencies: - '@sveltejs/vite-plugin-svelte': 1.0.1_svelte@3.49.0+vite@3.0.2 - chokidar: 3.5.3 - sade: 1.8.1 - svelte: 3.49.0 - vite: 3.0.2 - transitivePeerDependencies: - - diff-match-patch - - supports-color - dev: true - - /@sveltejs/vite-plugin-svelte/1.0.1_svelte@3.49.0+vite@3.0.2: - resolution: {integrity: sha512-PorCgUounn0VXcpeJu+hOweZODKmGuLHsLomwqSj+p26IwjjGffmYQfVHtiTWq+NqaUuuHWWG7vPge6UFw4Aeg==} - engines: {node: ^14.18.0 || >= 16} - peerDependencies: - diff-match-patch: ^1.0.5 - svelte: ^3.44.0 - vite: ^3.0.0 - peerDependenciesMeta: - diff-match-patch: - optional: true - dependencies: - '@rollup/pluginutils': 4.2.1 - debug: 4.3.4 - deepmerge: 4.2.2 - kleur: 4.1.5 - magic-string: 0.26.2 - svelte: 3.49.0 - svelte-hmr: 0.14.12_svelte@3.49.0 - vite: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@szmarczak/http-timer/4.0.6: - resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} - engines: {node: '>=10'} - dependencies: - defer-to-connect: 2.0.1 - dev: true - - /@types/cacheable-request/6.0.2: - resolution: {integrity: sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==} - dependencies: - '@types/http-cache-semantics': 4.0.1 - '@types/keyv': 3.1.4 - '@types/node': 18.0.6 - '@types/responselike': 1.0.0 - dev: true - - /@types/dompurify/2.3.3: - resolution: {integrity: sha512-nnVQSgRVuZ/843oAfhA25eRSNzUFcBPk/LOiw5gm8mD9/X7CNcbRkQu/OsjCewO8+VIYfPxUnXvPEVGenw14+w==} - dependencies: - '@types/trusted-types': 2.0.2 - dev: true - - /@types/file-saver/2.0.5: - resolution: {integrity: sha512-zv9kNf3keYegP5oThGLaPk8E081DFDuwfqjtiTzm6PoxChdJ1raSuADf2YGCVIyrSynLrgc8JWv296s7Q7pQSQ==} - dev: true - - /@types/http-cache-semantics/4.0.1: - resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} - dev: true - - /@types/json-buffer/3.0.0: - resolution: {integrity: sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ==} - dev: true - - /@types/keyv/3.1.4: - resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} - dependencies: - '@types/node': 18.0.6 - dev: true - - /@types/node/18.0.6: - resolution: {integrity: sha512-/xUq6H2aQm261exT6iZTMifUySEt4GR5KX8eYyY+C4MSNPqSh9oNIP7tz2GLKTlFaiBbgZNxffoR3CVRG+cljw==} - dev: true - - /@types/pug/2.0.6: - resolution: {integrity: sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==} - dev: true - - /@types/responselike/1.0.0: - resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} - dependencies: - '@types/node': 18.0.6 - dev: true - - /@types/sass/1.43.1: - resolution: {integrity: sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==} - dependencies: - '@types/node': 18.0.6 - dev: true - - /@types/trusted-types/2.0.2: - resolution: {integrity: sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==} - dev: true - - /@zerodevx/svelte-toast/0.7.2: - resolution: {integrity: sha512-vWiY6IqsstcOoQ8PFBuFuxgPkj1JFAGhUF9gC7wLx7c5A9SSfdtxWs/39ekGSIeyJK0yqWhTcmzGrCEWSELzDw==} - dev: true - - /adm-zip/0.5.9: - resolution: {integrity: sha512-s+3fXLkeeLjZ2kLjCBwQufpI5fuN+kIGBxu6530nVQZGVol0d7Y/M88/xw9HGGUcJjKf8LutN3VPRUBq6N7Ajg==} - engines: {node: '>=6.0'} - 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 - - /anymatch/3.1.2: - resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: true - - /argparse/2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true - - /babel-plugin-precompile-intl/0.4.0: - resolution: {integrity: sha512-kfZPPgjutWg7nPxvwHscgxdhiOUEgWI+MZwh7NZ8lIAqf/tVKzuaoVNC4Bnl4pgzCMpuRktQz2bwFypF2ehJWg==} - dependencies: - '@babel/core': 7.18.9 - '@babel/helper-plugin-utils': 7.18.9 - '@formatjs/icu-messageformat-parser': 2.1.4 - transitivePeerDependencies: - - supports-color - dev: true - - /balanced-match/1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: true - - /binary-extensions/2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - dev: true - - /brace-expansion/1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - dev: true - - /braces/3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - dependencies: - fill-range: 7.0.1 - dev: true - - /browserslist/4.21.2: - resolution: {integrity: sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001367 - electron-to-chromium: 1.4.195 - node-releases: 2.0.6 - update-browserslist-db: 1.0.5_browserslist@4.21.2 - dev: true - - /buffer-crc32/0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - dev: true - - /cacheable-lookup/5.0.4: - resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} - engines: {node: '>=10.6.0'} - dev: true - - /cacheable-request/7.0.2: - resolution: {integrity: sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==} - engines: {node: '>=8'} - dependencies: - clone-response: 1.0.3 - get-stream: 5.2.0 - http-cache-semantics: 4.1.0 - keyv: 4.3.3 - lowercase-keys: 2.0.0 - normalize-url: 6.1.0 - responselike: 2.0.1 - dev: true - - /callsites/3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - dev: true - - /caniuse-lite/1.0.30001367: - resolution: {integrity: sha512-XDgbeOHfifWV3GEES2B8rtsrADx4Jf+juKX2SICJcaUhjYBO3bR96kvEIHa15VU6ohtOhBZuPGGYGbXMRn0NCw==} - 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 - - /chokidar/3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.2 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /clone-response/1.0.3: - resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} - dependencies: - mimic-response: 1.0.1 - 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: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - dev: true - - /compress-brotli/1.3.8: - resolution: {integrity: sha512-lVcQsjhxhIXsuupfy9fmZUFtAIdBmXA7EGY6GBdgZ++qkM9zG4YFT8iU7FoBxzryNDMOpD1HIFHUSX4D87oqhQ==} - engines: {node: '>= 12'} - dependencies: - '@types/json-buffer': 3.0.0 - json-buffer: 3.0.1 - 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: - toggle-selection: 1.0.6 - dev: false - - /debug/4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - dev: true - - /decompress-response/6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} - dependencies: - mimic-response: 3.1.0 - dev: true - - /deepmerge/4.2.2: - resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} - engines: {node: '>=0.10.0'} - dev: true - - /defer-to-connect/2.0.1: - resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} - engines: {node: '>=10'} - dev: true - - /detect-indent/6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - dev: true - - /dompurify/2.3.10: - resolution: {integrity: sha512-o7Fg/AgC7p/XpKjf/+RC3Ok6k4St5F7Q6q6+Nnm3p2zGWioAY6dh0CbbuwOhH2UcSzKsdniE/YnE2/92JcsA+g==} - dev: false - - /dotenv/16.0.1: - resolution: {integrity: sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==} - engines: {node: '>=12'} - dev: true - - /electron-to-chromium/1.4.195: - resolution: {integrity: sha512-vefjEh0sk871xNmR5whJf9TEngX+KTKS3hOHpjoMpauKkwlGwtMz1H8IaIjAT/GNnX0TbGwAdmVoXCAzXf+PPg==} - dev: true - - /end-of-stream/1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - dependencies: - once: 1.4.0 - dev: true - - /es6-promise/3.3.1: - resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} - dev: true - - /esbuild-android-64/0.14.49: - resolution: {integrity: sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /esbuild-android-arm64/0.14.49: - resolution: {integrity: sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /esbuild-darwin-64/0.14.49: - resolution: {integrity: sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /esbuild-darwin-arm64/0.14.49: - resolution: {integrity: sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /esbuild-freebsd-64/0.14.49: - resolution: {integrity: sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-freebsd-arm64/0.14.49: - resolution: {integrity: sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-32/0.14.49: - resolution: {integrity: sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-64/0.14.49: - resolution: {integrity: sha512-hYmzRIDzFfLrB5c1SknkxzM8LdEUOusp6M2TnuQZJLRtxTgyPnZZVtyMeCLki0wKgYPXkFsAVhi8vzo2mBNeTg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-arm/0.14.49: - resolution: {integrity: sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-arm64/0.14.49: - resolution: {integrity: sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-mips64le/0.14.49: - resolution: {integrity: sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-ppc64le/0.14.49: - resolution: {integrity: sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-riscv64/0.14.49: - resolution: {integrity: sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-s390x/0.14.49: - resolution: {integrity: sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-netbsd-64/0.14.49: - resolution: {integrity: sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-openbsd-64/0.14.49: - resolution: {integrity: sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-sunos-64/0.14.49: - resolution: {integrity: sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - - /esbuild-windows-32/0.14.49: - resolution: {integrity: sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /esbuild-windows-64/0.14.49: - resolution: {integrity: sha512-+Cme7Ongv0UIUTniPqfTX6mJ8Deo7VXw9xN0yJEN1lQMHDppTNmKwAM3oGbD/Vqff+07K2gN0WfNkMohmG+dVw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /esbuild-windows-arm64/0.14.49: - resolution: {integrity: sha512-v+HYNAXzuANrCbbLFJ5nmO3m5y2PGZWLe3uloAkLt87aXiO2mZr3BTmacZdjwNkNEHuH3bNtN8cak+mzVjVPfA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /esbuild/0.14.49: - resolution: {integrity: sha512-/TlVHhOaq7Yz8N1OJrjqM3Auzo5wjvHFLk+T8pIue+fhnhIMpfAzsG6PLVMbFveVxqD2WOp3QHei+52IMUNmCw==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - esbuild-android-64: 0.14.49 - esbuild-android-arm64: 0.14.49 - esbuild-darwin-64: 0.14.49 - esbuild-darwin-arm64: 0.14.49 - esbuild-freebsd-64: 0.14.49 - esbuild-freebsd-arm64: 0.14.49 - esbuild-linux-32: 0.14.49 - esbuild-linux-64: 0.14.49 - esbuild-linux-arm: 0.14.49 - esbuild-linux-arm64: 0.14.49 - esbuild-linux-mips64le: 0.14.49 - esbuild-linux-ppc64le: 0.14.49 - esbuild-linux-riscv64: 0.14.49 - esbuild-linux-s390x: 0.14.49 - esbuild-netbsd-64: 0.14.49 - esbuild-openbsd-64: 0.14.49 - esbuild-sunos-64: 0.14.49 - esbuild-windows-32: 0.14.49 - esbuild-windows-64: 0.14.49 - esbuild-windows-arm64: 0.14.49 - dev: true - - /escalade/3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} - dev: true - - /escape-string-regexp/1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - dev: true - - /estree-walker/2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - dev: true - - /fast-glob/3.2.11: - resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==} - engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - dev: true - - /fastq/1.13.0: - resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} - dependencies: - reusify: 1.0.4 - dev: true - - /file-saver/2.0.5: - resolution: {integrity: sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==} - dev: false - - /fill-range/7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - dev: true - - /fs.realpath/1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: true - - /fsevents/2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /function-bind/1.1.1: - 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 - - /get-stream/5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} - dependencies: - pump: 3.0.0 - dev: true - - /glob-parent/5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - dependencies: - is-glob: 4.0.3 - dev: true - - /glob/7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - 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 - - /globrex/0.1.2: - resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - dev: true - - /got/11.8.5: - resolution: {integrity: sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==} - engines: {node: '>=10.19.0'} - dependencies: - '@sindresorhus/is': 4.6.0 - '@szmarczak/http-timer': 4.0.6 - '@types/cacheable-request': 6.0.2 - '@types/responselike': 1.0.0 - cacheable-lookup: 5.0.4 - cacheable-request: 7.0.2 - decompress-response: 6.0.0 - http2-wrapper: 1.0.3 - lowercase-keys: 2.0.0 - p-cancelable: 2.1.1 - responselike: 2.0.1 - dev: true - - /graceful-fs/4.2.10: - resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} - dev: true - - /has-flag/3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - dev: true - - /has/1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} - dependencies: - function-bind: 1.1.1 - dev: true - - /http-cache-semantics/4.1.0: - resolution: {integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==} - dev: true - - /http2-wrapper/1.0.3: - resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} - engines: {node: '>=10.19.0'} - dependencies: - quick-lru: 5.1.1 - resolve-alpn: 1.2.1 - dev: true - - /import-fresh/3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - dev: true - - /inflight/1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - dev: true - - /inherits/2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: true - - /is-binary-path/2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - dependencies: - binary-extensions: 2.2.0 - dev: true - - /is-core-module/2.9.0: - resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==} - dependencies: - has: 1.0.3 - dev: true - - /is-extglob/2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - dev: true - - /is-glob/4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - dev: true - - /is-number/7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - 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 - - /json-buffer/3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - dev: true - - /json5/2.2.1: - resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} - engines: {node: '>=6'} - hasBin: true - dev: true - - /keyv/4.3.3: - resolution: {integrity: sha512-AcysI17RvakTh8ir03+a3zJr5r0ovnAH/XTXei/4HIv3bL2K/jzvgivLK9UuI/JbU1aJjM3NSAnVvVVd3n+4DQ==} - dependencies: - compress-brotli: 1.3.8 - json-buffer: 3.0.1 - dev: true - - /kleur/4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - dev: true - - /lowercase-keys/2.0.0: - resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} - engines: {node: '>=8'} - dev: true - - /magic-string/0.25.9: - resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} - dependencies: - sourcemap-codec: 1.4.8 - dev: true - - /magic-string/0.26.2: - resolution: {integrity: sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==} - engines: {node: '>=12'} - dependencies: - sourcemap-codec: 1.4.8 - dev: true - - /merge2/1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - dev: true - - /micromatch/4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - dev: true - - /mimic-response/1.0.1: - resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} - engines: {node: '>=4'} - dev: true - - /mimic-response/3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - dev: true - - /min-indent/1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - dev: true - - /minimatch/3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - dependencies: - brace-expansion: 1.1.11 - dev: true - - /minimist/1.2.6: - resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} - dev: true - - /mkdirp/0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - dependencies: - minimist: 1.2.6 - dev: true - - /mri/1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - dev: true - - /ms/2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: true - - /nanoid/3.3.4: - resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: true - - /node-releases/2.0.6: - resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} - dev: true - - /normalize-path/3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: true - - /normalize-url/6.1.0: - resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} - engines: {node: '>=10'} - dev: true - - /once/1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - dependencies: - wrappy: 1.0.2 - dev: true - - /p-cancelable/2.1.1: - resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} - engines: {node: '>=8'} - dev: true - - /parent-module/1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - dependencies: - callsites: 3.1.0 - dev: true - - /path-is-absolute/1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - dev: true - - /path-parse/1.0.7: - 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 - - /picomatch/2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - dev: true - - /postcss/8.4.14: - resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.4 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: true - - /precompile-intl-runtime/0.6.0_svelte@3.49.0: - resolution: {integrity: sha512-C2LhoWMPQLJNuaiTYxGcxRLt/oBk6XvTunYY72GlpIpIDkORuUki9jsasKNoiFzMBVfay5UjMJ2PUYkSEcJfew==} - peerDependencies: - svelte: ^3.37.0 - dependencies: - svelte: 3.49.0 - dev: true - - /pretty-bytes/5.6.0: - resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} - engines: {node: '>=6'} - dev: false - - /pump/3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - dev: true - - /queue-microtask/1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true - - /quick-lru/5.1.1: - resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} - engines: {node: '>=10'} - dev: true - - /readdirp/3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - dependencies: - picomatch: 2.3.1 - dev: true - - /resolve-alpn/1.2.1: - resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} - dev: true - - /resolve-from/4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - dev: true - - /resolve/1.22.1: - resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} - hasBin: true - dependencies: - is-core-module: 2.9.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - - /responselike/2.0.1: - resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} - dependencies: - lowercase-keys: 2.0.0 - dev: true - - /reusify/1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true - - /rimraf/2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - hasBin: true - dependencies: - glob: 7.2.3 - dev: true - - /rollup/2.77.0: - resolution: {integrity: sha512-vL8xjY4yOQEw79DvyXLijhnhh+R/O9zpF/LEgkCebZFtb6ELeN9H3/2T0r8+mp+fFTBHZ5qGpOpW2ela2zRt3g==} - engines: {node: '>=10.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /run-parallel/1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - dependencies: - queue-microtask: 1.2.3 - dev: true - - /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: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} - dependencies: - es6-promise: 3.3.1 - graceful-fs: 4.2.10 - mkdirp: 0.5.6 - 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: sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==} - hasBin: true - dependencies: - buffer-crc32: 0.2.13 - minimist: 1.2.6 - sander: 0.5.1 - sourcemap-codec: 1.4.8 - dev: true - - /source-map-js/1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - 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'} - dependencies: - min-indent: 1.0.1 - dev: true - - /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-check/2.8.0_svelte@3.49.0: - resolution: {integrity: sha512-HRL66BxffMAZusqe5I5k26mRWQ+BobGd9Rxm3onh7ZVu0nTk8YTKJ9vu3LVPjUGLU9IX7zS+jmwPVhJYdXJ8vg==} - hasBin: true - peerDependencies: - svelte: ^3.24.0 - dependencies: - '@jridgewell/trace-mapping': 0.3.14 - chokidar: 3.5.3 - fast-glob: 3.2.11 - import-fresh: 3.3.0 - picocolors: 1.0.0 - sade: 1.8.1 - svelte: 3.49.0 - svelte-preprocess: 4.10.7_uslzfc62di2n2otc2tvfklnwji - typescript: 4.7.4 - transitivePeerDependencies: - - '@babel/core' - - coffeescript - - less - - node-sass - - postcss - - postcss-load-config - - pug - - sass - - stylus - - sugarss - dev: true - - /svelte-hmr/0.14.12_svelte@3.49.0: - resolution: {integrity: sha512-4QSW/VvXuqVcFZ+RhxiR8/newmwOCTlbYIezvkeN6302YFRE8cXy0naamHcjz8Y9Ce3ITTZtrHrIL0AGfyo61w==} - engines: {node: ^12.20 || ^14.13.1 || >= 16} - peerDependencies: - svelte: '>=3.19.0' - dependencies: - svelte: 3.49.0 - dev: true - - /svelte-intl-precompile/0.10.1_svelte@3.49.0: - resolution: {integrity: sha512-SDvdp4dmCtCMpvTUP+aWqwd/e96si/ywFQrGGV4UCfqGoyoDtaCSkEFd/MPdybYG65E1Y5mFAsAYIHgLZ3e9Pw==} - dependencies: - babel-plugin-precompile-intl: 0.4.0 - js-yaml: 4.1.0 - json5: 2.2.1 - path-starts-with: 2.0.0 - precompile-intl-runtime: 0.6.0_svelte@3.49.0 - strip-bom: 5.0.0 - transitivePeerDependencies: - - supports-color - - svelte - dev: true - - /svelte-preprocess/4.10.7_uslzfc62di2n2otc2tvfklnwji: - resolution: {integrity: sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==} - engines: {node: '>= 9.11.2'} - requiresBuild: true - peerDependencies: - '@babel/core': ^7.10.2 - coffeescript: ^2.5.1 - less: ^3.11.3 || ^4.0.0 - node-sass: '*' - postcss: ^7 || ^8 - postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 - pug: ^3.0.0 - sass: ^1.26.8 - stylus: ^0.55.0 - sugarss: ^2.0.0 - svelte: ^3.23.0 - typescript: ^3.9.5 || ^4.0.0 - peerDependenciesMeta: - '@babel/core': - optional: true - coffeescript: - optional: true - less: - optional: true - node-sass: - optional: true - postcss: - optional: true - postcss-load-config: - optional: true - pug: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - typescript: - optional: true - dependencies: - '@types/pug': 2.0.6 - '@types/sass': 1.43.1 - detect-indent: 6.1.0 - magic-string: 0.25.9 - sorcery: 0.10.0 - strip-indent: 3.0.0 - svelte: 3.49.0 - typescript: 4.7.4 - dev: true - - /svelte/3.49.0: - resolution: {integrity: sha512-+lmjic1pApJWDfPCpUUTc1m8azDqYCG1JN9YEngrx/hUyIcFJo6VZhj0A1Ai0wqoHcEIuQy+e9tk+4uDgdtsFA==} - engines: {node: '>= 8'} - dev: true - - /tiny-glob/0.2.9: - resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} - dependencies: - globalyzer: 0.1.0 - globrex: 0.1.2 - dev: true - - /to-fast-properties/2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - dev: true - - /to-regex-range/5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - dependencies: - is-number: 7.0.0 - dev: true - - /toggle-selection/1.0.6: - resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} - dev: false - - /tslib/2.4.0: - resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} - dev: true - - /typescript/4.7.4: - resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==} - engines: {node: '>=4.2.0'} - hasBin: true - dev: true - - /update-browserslist-db/1.0.5_browserslist@4.21.2: - resolution: {integrity: sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.21.2 - escalade: 3.1.1 - picocolors: 1.0.0 - dev: true - - /vite/3.0.2: - resolution: {integrity: sha512-TAqydxW/w0U5AoL5AsD9DApTvGb2iNbGs3sN4u2VdT1GFkQVUfgUldt+t08TZgi23uIauh1TUOQJALduo9GXqw==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - less: '*' - sass: '*' - stylus: '*' - terser: ^5.4.0 - peerDependenciesMeta: - less: - optional: true - sass: - optional: true - stylus: - optional: true - terser: - optional: true - dependencies: - esbuild: 0.14.49 - postcss: 8.4.14 - resolve: 1.22.1 - rollup: 2.77.0 - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /wrappy/1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: true diff --git a/package.json b/package.json index 8d0d460..617df09 100644 --- a/package.json +++ b/package.json @@ -1,20 +1,17 @@ { "scripts": { "dev:docker": "docker-compose up redis", - "dev:backend": "cd backend && cargo watch -x 'run --bin cryptgeon'", - "dev:front": "pnpm --prefix frontend run dev", + "dev:packages": "pnpm --parallel run dev", "dev:proxy": "node proxy.mjs", "dev": "run-p dev:*", - "test": "playwright test --project chrome firefox safari", + "test:run": "playwright test --project chrome firefox safari", "test:local": "playwright test --project local", - "ci:server": "cd backend && SIZE_LIMIT=10MiB LISTEN_ADDR=0.0.0.0:1234 cargo run", - "ci:prepare": "run-p ci:prepare:*", - "ci:prepare:backend": "cd backend && cargo build", - "ci:prepare:front": "pnpm --prefix frontend install && pnpm --prefix frontend run build" + "test:server": "pnpm --parallel run test:server", + "test:prepare": "pnpm --parallel run test:prepare" }, "devDependencies": { - "@playwright/test": "^1.23.4", - "@types/node": "16", + "@playwright/test": "^1.25.1", + "@types/node": "^16.11.57", "http-proxy": "^1.18.1", "npm-run-all": "^4.1.5" } diff --git a/backend/Cargo.lock b/packages/backend/Cargo.lock similarity index 99% rename from backend/Cargo.lock rename to packages/backend/Cargo.lock index 5d90ec3..b20b2f2 100644 --- a/backend/Cargo.lock +++ b/packages/backend/Cargo.lock @@ -424,7 +424,7 @@ dependencies = [ [[package]] name = "cryptgeon" -version = "2.0.2" +version = "2.0.3" dependencies = [ "actix-files", "actix-web", diff --git a/backend/Cargo.toml b/packages/backend/Cargo.toml similarity index 96% rename from backend/Cargo.toml rename to packages/backend/Cargo.toml index 60399af..6367710 100644 --- a/backend/Cargo.toml +++ b/packages/backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cryptgeon" -version = "2.0.2" +version = "2.0.3" authors = ["cupcakearmy "] edition = "2021" diff --git a/packages/backend/package.json b/packages/backend/package.json new file mode 100644 index 0000000..d5efad1 --- /dev/null +++ b/packages/backend/package.json @@ -0,0 +1,10 @@ +{ + "name": "backend", + "private": true, + "scripts": { + "dev": "cargo watch -x 'run --bin cryptgeon'", + "build": "cargo build --release", + "test:server": "SIZE_LIMIT=10MiB LISTEN_ADDR=0.0.0.0:1234 cargo run", + "test:prepare": "cargo build" + } +} diff --git a/backend/src/api.rs b/packages/backend/src/api.rs similarity index 100% rename from backend/src/api.rs rename to packages/backend/src/api.rs diff --git a/backend/src/client.rs b/packages/backend/src/client.rs similarity index 100% rename from backend/src/client.rs rename to packages/backend/src/client.rs diff --git a/backend/src/config.rs b/packages/backend/src/config.rs similarity index 93% rename from backend/src/config.rs rename to packages/backend/src/config.rs index 431ae04..8fff7f9 100644 --- a/backend/src/config.rs +++ b/packages/backend/src/config.rs @@ -9,6 +9,7 @@ lazy_static! { std::env::var("FRONTEND_PATH").unwrap_or("../frontend/build".to_string()); pub static ref LISTEN_ADDR: String = std::env::var("LISTEN_ADDR").unwrap_or("0.0.0.0:5000".to_string()); + pub static ref VERBOSITY: String = std::env::var("VERBOSITY").unwrap_or("warn".to_string()); } // CONFIG diff --git a/backend/src/main.rs b/packages/backend/src/main.rs similarity index 89% rename from backend/src/main.rs rename to packages/backend/src/main.rs index 122e67c..28262ce 100644 --- a/backend/src/main.rs +++ b/packages/backend/src/main.rs @@ -18,10 +18,11 @@ mod store; #[actix_web::main] async fn main() -> std::io::Result<()> { dotenv().ok(); - env_logger::init_from_env(env_logger::Env::new().default_filter_or("warning")); + env_logger::init_from_env(env_logger::Env::new().default_filter_or(config::VERBOSITY.as_str())); + return HttpServer::new(|| { App::new() - .wrap(Logger::new("%a \"%r\" %s %b %T")) + .wrap(Logger::new("\"%r\" %s %b %T")) .wrap(middleware::Compress::default()) .wrap(middleware::DefaultHeaders::default()) .configure(size::init) diff --git a/backend/src/note/mod.rs b/packages/backend/src/note/mod.rs similarity index 100% rename from backend/src/note/mod.rs rename to packages/backend/src/note/mod.rs diff --git a/backend/src/note/model.rs b/packages/backend/src/note/model.rs similarity index 100% rename from backend/src/note/model.rs rename to packages/backend/src/note/model.rs diff --git a/backend/src/note/routes.rs b/packages/backend/src/note/routes.rs similarity index 100% rename from backend/src/note/routes.rs rename to packages/backend/src/note/routes.rs diff --git a/backend/src/size.rs b/packages/backend/src/size.rs similarity index 91% rename from backend/src/size.rs rename to packages/backend/src/size.rs index 90f20d9..023da85 100644 --- a/backend/src/size.rs +++ b/packages/backend/src/size.rs @@ -7,5 +7,6 @@ pub fn init(cfg: &mut web::ServiceConfig) { let plain = web::PayloadConfig::default() .limit(*config::LIMIT) .mimetype(mime::STAR_STAR); + // cfg.app_data(plain); cfg.app_data(json).app_data(plain); } diff --git a/backend/src/status/mod.rs b/packages/backend/src/status/mod.rs similarity index 100% rename from backend/src/status/mod.rs rename to packages/backend/src/status/mod.rs diff --git a/backend/src/status/model.rs b/packages/backend/src/status/model.rs similarity index 100% rename from backend/src/status/model.rs rename to packages/backend/src/status/model.rs diff --git a/backend/src/status/routes.rs b/packages/backend/src/status/routes.rs similarity index 100% rename from backend/src/status/routes.rs rename to packages/backend/src/status/routes.rs diff --git a/backend/src/store.rs b/packages/backend/src/store.rs similarity index 100% rename from backend/src/store.rs rename to packages/backend/src/store.rs diff --git a/frontend/.dockerignore b/packages/frontend/.dockerignore similarity index 100% rename from frontend/.dockerignore rename to packages/frontend/.dockerignore diff --git a/frontend/.gitignore b/packages/frontend/.gitignore similarity index 100% rename from frontend/.gitignore rename to packages/frontend/.gitignore diff --git a/frontend/.npmrc b/packages/frontend/.npmrc similarity index 100% rename from frontend/.npmrc rename to packages/frontend/.npmrc diff --git a/frontend/.prettierignore b/packages/frontend/.prettierignore similarity index 100% rename from frontend/.prettierignore rename to packages/frontend/.prettierignore diff --git a/frontend/.prettierrc b/packages/frontend/.prettierrc similarity index 100% rename from frontend/.prettierrc rename to packages/frontend/.prettierrc diff --git a/frontend/README.md b/packages/frontend/README.md similarity index 100% rename from frontend/README.md rename to packages/frontend/README.md diff --git a/frontend/licenses.csv b/packages/frontend/licenses.csv similarity index 80% rename from frontend/licenses.csv rename to packages/frontend/licenses.csv index c48bf35..a762e5c 100644 --- a/frontend/licenses.csv +++ b/packages/frontend/licenses.csv @@ -1,8 +1,8 @@ -├─ MIT: 12 +├─ MIT: 13 +├─ ISC: 2 ├─ BSD-3-Clause: 1 ├─ (MPL-2.0 OR Apache-2.0): 1 ├─ BSD-2-Clause: 1 -├─ ISC: 1 ├─ 0BSD: 1 └─ Apache-2.0: 1 diff --git a/frontend/locales/de.json b/packages/frontend/locales/de.json similarity index 100% rename from frontend/locales/de.json rename to packages/frontend/locales/de.json diff --git a/frontend/locales/en.json b/packages/frontend/locales/en.json similarity index 100% rename from frontend/locales/en.json rename to packages/frontend/locales/en.json diff --git a/frontend/locales/es.json b/packages/frontend/locales/es.json similarity index 100% rename from frontend/locales/es.json rename to packages/frontend/locales/es.json diff --git a/frontend/locales/fr.json b/packages/frontend/locales/fr.json similarity index 100% rename from frontend/locales/fr.json rename to packages/frontend/locales/fr.json diff --git a/frontend/locales/it.json b/packages/frontend/locales/it.json similarity index 100% rename from frontend/locales/it.json rename to packages/frontend/locales/it.json diff --git a/frontend/locales/zh_CN.json b/packages/frontend/locales/zh_CN.json similarity index 100% rename from frontend/locales/zh_CN.json rename to packages/frontend/locales/zh_CN.json diff --git a/frontend/package.json b/packages/frontend/package.json similarity index 83% rename from frontend/package.json rename to packages/frontend/package.json index f0b7e7b..fe91b28 100644 --- a/frontend/package.json +++ b/packages/frontend/package.json @@ -6,13 +6,14 @@ "preview": "vite preview --port 3000", "check": "svelte-check --tsconfig tsconfig.json", "licenses": "license-checker --summary > licenses.csv", - "locale:download": "node scripts/locale.js" + "locale:download": "node scripts/locale.js", + "test:prepare": "pnpm run build" }, "type": "module", "devDependencies": { "@lokalise/node-api": "^7.3.1", - "@sveltejs/adapter-static": "^1.0.0-next.38", - "@sveltejs/kit": "^1.0.0-next.384", + "@sveltejs/adapter-static": "1.0.0-next.42", + "@sveltejs/kit": "1.0.0-next.480", "@types/dompurify": "^2.3.3", "@types/file-saver": "^2.0.5", "@zerodevx/svelte-toast": "^0.7.2", diff --git a/frontend/scripts/locale.js b/packages/frontend/scripts/locale.js similarity index 100% rename from frontend/scripts/locale.js rename to packages/frontend/scripts/locale.js diff --git a/frontend/src/app.css b/packages/frontend/src/app.css similarity index 100% rename from frontend/src/app.css rename to packages/frontend/src/app.css diff --git a/frontend/src/app.html b/packages/frontend/src/app.html similarity index 100% rename from frontend/src/app.html rename to packages/frontend/src/app.html diff --git a/frontend/src/global.d.ts b/packages/frontend/src/global.d.ts similarity index 100% rename from frontend/src/global.d.ts rename to packages/frontend/src/global.d.ts diff --git a/frontend/src/lib/adapters.ts b/packages/frontend/src/lib/adapters.ts similarity index 100% rename from frontend/src/lib/adapters.ts rename to packages/frontend/src/lib/adapters.ts diff --git a/frontend/src/lib/api.ts b/packages/frontend/src/lib/api.ts similarity index 100% rename from frontend/src/lib/api.ts rename to packages/frontend/src/lib/api.ts diff --git a/frontend/src/lib/crypto.ts b/packages/frontend/src/lib/crypto.ts similarity index 62% rename from frontend/src/lib/crypto.ts rename to packages/frontend/src/lib/crypto.ts index 4a4bab5..44c8513 100644 --- a/frontend/src/lib/crypto.ts +++ b/packages/frontend/src/lib/crypto.ts @@ -35,6 +35,31 @@ export class ArrayBufferUtils { } } +export class Keys { + public static async generateKey(size: 128 | 192 | 256 = 256): Promise { + const key = await window.crypto.subtle.generateKey( + { + name: 'AES-GCM', + length: size, + }, + true, + ['encrypt', 'decrypt'] + ) + return key + } + + public static async export(key: CryptoKey): Promise { + return Hex.encode(await window.crypto.subtle.exportKey('raw', key)) + } + + public static async import(key: string): Promise { + return window.crypto.subtle.importKey('raw', Hex.decode(key), { name: 'AES-GCM' }, true, [ + 'encrypt', + 'decrypt', + ]) + } +} + export class Crypto { private static ALG = 'AES-GCM' private static DELIMITER = ':::' @@ -43,55 +68,22 @@ export class Crypto { return window.crypto.getRandomValues(new Uint8Array(size)) } - public static getKeyFromString(password: string) { - return window.crypto.subtle.importKey( - 'raw', - new TextEncoder().encode(password), - 'PBKDF2', - false, - ['deriveBits', 'deriveKey'] - ) - } - public static async getDerivedForKey(key: CryptoKey, salt: ArrayBuffer) { - const iterations = 100_000 - return window.crypto.subtle.deriveKey( - { - name: 'PBKDF2', - salt, - iterations, - hash: 'SHA-512', - }, - key, - { name: this.ALG, length: 256 }, - true, - ['encrypt', 'decrypt'] - ) - } - public static async encrypt(plaintext: ArrayBuffer, key: CryptoKey): Promise { - const salt = this.getRandomBytes(16) - const derived = await this.getDerivedForKey(key, salt) - const iv = this.getRandomBytes(16) + const iv = this.getRandomBytes(12) // AES-GCM needs a 96bit IV const encrypted: ArrayBuffer = await window.crypto.subtle.encrypt( { name: this.ALG, iv }, - derived, + key, plaintext ) - const data = [ - Hex.encode(salt), - Hex.encode(iv), - await ArrayBufferUtils.toString(encrypted), - ].join(this.DELIMITER) + const data = [Hex.encode(iv), await ArrayBufferUtils.toString(encrypted)].join(this.DELIMITER) return data } public static async decrypt(ciphertext: string, key: CryptoKey): Promise { const splitted = ciphertext.split(this.DELIMITER) - const salt = Hex.decode(splitted[0]) - const iv = Hex.decode(splitted[1]) - const encrypted = await ArrayBufferUtils.fromString(splitted[2]) - const derived = await this.getDerivedForKey(key, salt) - const plaintext = await window.crypto.subtle.decrypt({ name: this.ALG, iv }, derived, encrypted) + const iv = Hex.decode(splitted[0]) + const encrypted = await ArrayBufferUtils.fromString(splitted[1]) + const plaintext = await window.crypto.subtle.decrypt({ name: this.ALG, iv }, key, encrypted) return plaintext } } diff --git a/frontend/src/lib/icons/IconContrast.svelte b/packages/frontend/src/lib/icons/IconContrast.svelte similarity index 100% rename from frontend/src/lib/icons/IconContrast.svelte rename to packages/frontend/src/lib/icons/IconContrast.svelte diff --git a/frontend/src/lib/icons/IconCopy.svelte b/packages/frontend/src/lib/icons/IconCopy.svelte similarity index 100% rename from frontend/src/lib/icons/IconCopy.svelte rename to packages/frontend/src/lib/icons/IconCopy.svelte diff --git a/frontend/src/lib/icons/IconDice.svelte b/packages/frontend/src/lib/icons/IconDice.svelte similarity index 100% rename from frontend/src/lib/icons/IconDice.svelte rename to packages/frontend/src/lib/icons/IconDice.svelte diff --git a/frontend/src/lib/icons/IconEye.svelte b/packages/frontend/src/lib/icons/IconEye.svelte similarity index 100% rename from frontend/src/lib/icons/IconEye.svelte rename to packages/frontend/src/lib/icons/IconEye.svelte diff --git a/frontend/src/lib/icons/IconEyeOff.svelte b/packages/frontend/src/lib/icons/IconEyeOff.svelte similarity index 100% rename from frontend/src/lib/icons/IconEyeOff.svelte rename to packages/frontend/src/lib/icons/IconEyeOff.svelte diff --git a/frontend/src/lib/stores/status.ts b/packages/frontend/src/lib/stores/status.ts similarity index 100% rename from frontend/src/lib/stores/status.ts rename to packages/frontend/src/lib/stores/status.ts diff --git a/frontend/src/lib/toast.ts b/packages/frontend/src/lib/toast.ts similarity index 100% rename from frontend/src/lib/toast.ts rename to packages/frontend/src/lib/toast.ts diff --git a/frontend/src/lib/ui/AboutParagraph.svelte b/packages/frontend/src/lib/ui/AboutParagraph.svelte similarity index 100% rename from frontend/src/lib/ui/AboutParagraph.svelte rename to packages/frontend/src/lib/ui/AboutParagraph.svelte diff --git a/frontend/src/lib/ui/AdvancedParameters.svelte b/packages/frontend/src/lib/ui/AdvancedParameters.svelte similarity index 96% rename from frontend/src/lib/ui/AdvancedParameters.svelte rename to packages/frontend/src/lib/ui/AdvancedParameters.svelte index 7b5d40c..dff8a84 100644 --- a/frontend/src/lib/ui/AdvancedParameters.svelte +++ b/packages/frontend/src/lib/ui/AdvancedParameters.svelte @@ -19,7 +19,7 @@ disabled={timeExpiration} max={$status?.max_views} validate={(v) => - ($status && v < $status?.max_views) || + ($status && v <= $status?.max_views) || $t('home.errors.max', { values: { n: $status?.max_views ?? 0 } })} />
diff --git a/frontend/src/lib/ui/Button.svelte b/packages/frontend/src/lib/ui/Button.svelte similarity index 100% rename from frontend/src/lib/ui/Button.svelte rename to packages/frontend/src/lib/ui/Button.svelte diff --git a/frontend/src/lib/ui/FileUpload.svelte b/packages/frontend/src/lib/ui/FileUpload.svelte similarity index 100% rename from frontend/src/lib/ui/FileUpload.svelte rename to packages/frontend/src/lib/ui/FileUpload.svelte diff --git a/frontend/src/lib/ui/Icon.svelte b/packages/frontend/src/lib/ui/Icon.svelte similarity index 100% rename from frontend/src/lib/ui/Icon.svelte rename to packages/frontend/src/lib/ui/Icon.svelte diff --git a/frontend/src/lib/ui/Loader.svelte b/packages/frontend/src/lib/ui/Loader.svelte similarity index 100% rename from frontend/src/lib/ui/Loader.svelte rename to packages/frontend/src/lib/ui/Loader.svelte diff --git a/frontend/src/lib/ui/MaxSize.svelte b/packages/frontend/src/lib/ui/MaxSize.svelte similarity index 100% rename from frontend/src/lib/ui/MaxSize.svelte rename to packages/frontend/src/lib/ui/MaxSize.svelte diff --git a/frontend/src/lib/ui/NoteResult.svelte b/packages/frontend/src/lib/ui/NoteResult.svelte similarity index 100% rename from frontend/src/lib/ui/NoteResult.svelte rename to packages/frontend/src/lib/ui/NoteResult.svelte diff --git a/frontend/src/lib/ui/ShowNote.svelte b/packages/frontend/src/lib/ui/ShowNote.svelte similarity index 100% rename from frontend/src/lib/ui/ShowNote.svelte rename to packages/frontend/src/lib/ui/ShowNote.svelte diff --git a/frontend/src/lib/ui/Switch.svelte b/packages/frontend/src/lib/ui/Switch.svelte similarity index 100% rename from frontend/src/lib/ui/Switch.svelte rename to packages/frontend/src/lib/ui/Switch.svelte diff --git a/frontend/src/lib/ui/TextArea.svelte b/packages/frontend/src/lib/ui/TextArea.svelte similarity index 100% rename from frontend/src/lib/ui/TextArea.svelte rename to packages/frontend/src/lib/ui/TextArea.svelte diff --git a/frontend/src/lib/ui/TextInput.svelte b/packages/frontend/src/lib/ui/TextInput.svelte similarity index 97% rename from frontend/src/lib/ui/TextInput.svelte rename to packages/frontend/src/lib/ui/TextInput.svelte index e9584e4..808e78f 100644 --- a/frontend/src/lib/ui/TextInput.svelte +++ b/packages/frontend/src/lib/ui/TextInput.svelte @@ -24,7 +24,7 @@ hidden = !hidden } function randomFN() { - value = Hex.encode(Crypto.getRandomBytes(20)) + value = Hex.encode(Crypto.getRandomBytes(32)) } diff --git a/frontend/src/lib/ui/ThemeToggle.svelte b/packages/frontend/src/lib/ui/ThemeToggle.svelte similarity index 100% rename from frontend/src/lib/ui/ThemeToggle.svelte rename to packages/frontend/src/lib/ui/ThemeToggle.svelte diff --git a/frontend/src/lib/utils.ts b/packages/frontend/src/lib/utils.ts similarity index 100% rename from frontend/src/lib/utils.ts rename to packages/frontend/src/lib/utils.ts diff --git a/frontend/src/lib/views/Create.svelte b/packages/frontend/src/lib/views/Create.svelte similarity index 96% rename from frontend/src/lib/views/Create.svelte rename to packages/frontend/src/lib/views/Create.svelte index 6f45ad4..a780c3b 100644 --- a/frontend/src/lib/views/Create.svelte +++ b/packages/frontend/src/lib/views/Create.svelte @@ -5,7 +5,7 @@ import { Adapters } from '$lib/adapters' import type { FileDTO, Note } from '$lib/api' import { create, PayloadToLargeError } from '$lib/api' - import { Crypto, Hex } from '$lib/crypto' + import { Keys } from '$lib/crypto' import { status } from '$lib/stores/status' import { notify } from '$lib/toast' import AdvancedParameters from '$lib/ui/AdvancedParameters.svelte' @@ -58,8 +58,8 @@ try { loading = $t('common.encrypting') - const password = Hex.encode(Crypto.getRandomBytes(32)) - const key = await Crypto.getKeyFromString(password) + const key = await Keys.generateKey() + const password = await Keys.export(key) const data: Note = { contents: '', diff --git a/frontend/src/lib/views/Footer.svelte b/packages/frontend/src/lib/views/Footer.svelte similarity index 100% rename from frontend/src/lib/views/Footer.svelte rename to packages/frontend/src/lib/views/Footer.svelte diff --git a/frontend/src/lib/views/Header.svelte b/packages/frontend/src/lib/views/Header.svelte similarity index 100% rename from frontend/src/lib/views/Header.svelte rename to packages/frontend/src/lib/views/Header.svelte diff --git a/frontend/src/routes/__layout.svelte b/packages/frontend/src/routes/+layout.svelte similarity index 68% rename from frontend/src/routes/__layout.svelte rename to packages/frontend/src/routes/+layout.svelte index 6501581..89c8cb0 100644 --- a/frontend/src/routes/__layout.svelte +++ b/packages/frontend/src/routes/+layout.svelte @@ -1,14 +1,7 @@ - - diff --git a/frontend/src/routes/note/[id].svelte b/packages/frontend/src/routes/note/[id]/+page.svelte similarity index 87% rename from frontend/src/routes/note/[id].svelte rename to packages/frontend/src/routes/note/[id]/+page.svelte index 9d81331..084b627 100644 --- a/frontend/src/routes/note/[id].svelte +++ b/packages/frontend/src/routes/note/[id]/+page.svelte @@ -1,26 +1,18 @@ - -