From 86c091f366f9bff2a5a7d26d2f3af755681ed14b Mon Sep 17 00:00:00 2001 From: Stepan Vladovskiy Date: Thu, 13 Jun 2024 08:38:43 -0300 Subject: [PATCH 001/132] feat: With auth e2e test scenarios, not fully done. With debug mode playwright in main yml for gitea --- .gitea/workflows/main.yml | 1 + tests/auth-user-test.spec.ts | 185 +++++++++++++++++++++++++++++++++++ 2 files changed, 186 insertions(+) create mode 100644 tests/auth-user-test.spec.ts diff --git a/.gitea/workflows/main.yml b/.gitea/workflows/main.yml index 20838496..0784a7ce 100644 --- a/.gitea/workflows/main.yml +++ b/.gitea/workflows/main.yml @@ -36,6 +36,7 @@ jobs: run: npm run e2e env: BASE_URL: ${{ github.event.deployment_status.target_url }} + DEBUG: pw:api email-templates: runs-on: ubuntu-latest diff --git a/tests/auth-user-test.spec.ts b/tests/auth-user-test.spec.ts new file mode 100644 index 00000000..ceaa3dd1 --- /dev/null +++ b/tests/auth-user-test.spec.ts @@ -0,0 +1,185 @@ +import { test, expect } from '@playwright/test'; + +const baseHost = process.env.BASE_HOST || 'https://localhost:3000' + +function generateRandomString(length = 10) { + let result = ''; + const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + const charactersLength = characters.length; + for (let i = 0; i < length; i++) { + result += characters.charAt(Math.floor(Math.random() * charactersLength)); + } + return result; +} + +async function login(page) { + await page.getByRole('link', { name: 'Войти' }).click(); + await page.getByPlaceholder('Почта').click(); + await page.getByPlaceholder('Почта').fill('guests@discours.io'); + await page.getByPlaceholder('Пароль').click(); + await page.getByPlaceholder('Пароль').fill('Gue$tP@ss'); + await page.getByRole('button', { name: 'Войти' }).click(); +} + +/* Done */ +test('Open Page', async ({ page }) => { + await page.goto(`${baseHost}/`); + await expect(page.getByRole('link', { name: 'Дискурс', exact: true })).toBeVisible(); +}); + +/* Done */ +test('Login', async ({ page }) => { + await page.goto(`${baseHost}/`); + await login(page); + await expect(page.locator('div:nth-child(4) > a').first()).toBeVisible(); +}); + +test('Drafts - create article', async ({ page }) => { + await page.goto(`${baseHost}/`); + await login(page); + await expect(page.locator('div:nth-child(4) > a').first()).toBeVisible(); + await page.getByRole('button', { name: 'Т.Р' }).click(); + await page.getByRole('link', { name: 'Черновики' }).click(); + await page.getByRole('link', { name: 'Создать публикацию' }).click(); + await page.locator('li').filter({ hasText: 'статья' }).locator('img').click(); + /* Fill the form */ + /* Save */ + /* Check is it created */ +}); + +test('Drafts - create literature', async ({ page }) => { + await page.goto(`${baseHost}/`); + await login(page); + await expect(page.locator('div:nth-child(4) > a').first()).toBeVisible(); + await page.getByRole('button', { name: 'Т.Р' }).click(); + await page.getByRole('link', { name: 'Черновики' }).click(); + await page.getByRole('link', { name: 'Создать публикацию' }).click(); + await page.locator('li').filter({ hasText: /^литература$/ }).locator('img').click(); + /* Fill the form */ + /* Save */ + /* Check is it created */ +}); + +test('Drafts - create images', async ({ page }) => { + await page.goto(`${baseHost}/`); + await login(page);; + await expect(page.locator('div:nth-child(4) > a').first()).toBeVisible(); + await page.getByRole('button', { name: 'Т.Р' }).click(); + await page.getByRole('link', { name: 'Черновики' }).click(); + await page.getByRole('link', { name: 'Создать публикацию' }).click(); + await page.locator('li').filter({ hasText: 'изображения' }).locator('img').click(); + /* Fill the form */ + /* Save */ + /* Check is it created */ +}); + +test('Drafts - create music', async ({ page }) => { + await page.goto(`${baseHost}/`); + await login(page); + await expect(page.locator('div:nth-child(4) > a').first()).toBeVisible(); + await page.getByRole('button', { name: 'Т.Р' }).click(); + await page.getByRole('link', { name: 'Черновики' }).click(); + await page.getByRole('link', { name: 'Создать публикацию' }).click(); + await page.locator('li').filter({ hasText: 'музыка' }).locator('img').click(); + /* Fill the form */ + /* Save */ + /* Check is it created */ +}); + +test('Drafts - create video', async ({ page }) => { + await page.goto(`${baseHost}/`); + await login(page); + await expect(page.locator('div:nth-child(4) > a').first()).toBeVisible(); + await page.getByRole('button', { name: 'Т.Р' }).click(); + await page.getByRole('link', { name: 'Черновики' }).click(); + await page.getByRole('link', { name: 'Создать публикацию' }).click(); + await page.locator('li').filter({ hasText: 'видео' }).locator('img').click(); + /* Fill the form */ + /* Save */ + /* Check is it created */ +}); + + +test('Post topic', async ({ page }) => { + await page.goto(`${baseHost}/`); + await login(page); + await expect(page.locator('div:nth-child(4) > a').first()).toBeVisible(); + /* Open Draft */ + /* Post */ +}); + +test('Subscribe to user', async ({ page }) => { + await page.goto(`${baseHost}/`); + await login(page); + await expect(page.locator('div:nth-child(4) > a').first()).toBeVisible(); + await page.goto(`${baseHost}/author/discours`); + await page.getByRole('main').getByRole('button', { name: 'Подписаться' }).click(); + /* Check is it subscribed */ +}); + +/* Done */ +test('Subscribe to topic', async ({ page }) => { + await page.goto(`${baseHost}/topic/society`); + await page.getByRole('button', { name: 'Подписаться на тему' }).click(); + await page.getByPlaceholder('Почта').click(); + await page.getByPlaceholder('Почта').fill('guests@discours.io'); + await page.getByPlaceholder('Пароль').click(); + await page.getByPlaceholder('Пароль').fill('Gue$tP@ss'); + await page.getByRole('button', { name: 'Войти' }).click(); + await expect(page.getByRole('button', { name: 'Подписаться на тему' })).toBeVisible(); + await page.getByRole('button', { name: 'Подписаться на тему' }).click(); +}); + +/* Done */ +test('Un - Subscribe to topic', async ({ page }) => { + await page.goto(`${baseHost}/topic/society`); + await login(page); + await expect(page.getByRole('button', { name: 'Отписаться от темы' })).toBeVisible(); + await page.getByRole('button', { name: 'Отписаться от темы' }).click(); +}); + +/* Done */ +test('Change user data', async ({ page }) => { + await page.goto(`${baseHost}/`); + await login(page); + await expect(page.locator('div:nth-child(4) > a').first()).toBeVisible(); + await page.getByRole('button', { name: 'Т.Р' }).click(); + await page.getByRole('link', { name: 'Профиль' }).click(); + await page.getByRole('button', { name: 'Редактировать профиль' }).click(); + await page.locator('.tiptap').click(); + const randomString = generateRandomString(); + const currentDate = new Date(); + await page.locator('.tiptap').fill('test: ' + randomString + ' ' + currentDate); + try { + const button = await page.getByRole('button', { name: 'Сохранить настройки' }); + await button.click(); + } catch (error) { + console.log('Button has disappeared'); + } + await expect(page.getByText('test: ' + randomString + ' ' + currentDate)).toBeVisible(); +}); + +/* Done */ +test('Add comment to topic', async ({ page }) => { + await page.goto(`${baseHost}/v-peschere-u-tsiklopa/`); + await login(page); + const randomString = generateRandomString(); + const currentDate = new Date(); + await page.locator('.tiptap').click(); + await page.locator('.tiptap').fill('Проверка Комментариев: ' + randomString + ' ' + currentDate); + await page.getByRole('button', { name: 'Отправить' }).click(); + await expect(page.getByText('Проверка Комментариев: ' + randomString + ' ' + currentDate)).toBeVisible(); +}); + +/* Done */ +test('Edit comment to topic', async ({ page }) => { + await page.goto(`${baseHost}/author/testdev/comments`); + await login(page); + const firstCommentEditButton = await page.locator('._32U0J.WXcGK').first(); + await firstCommentEditButton.click(); + const randomString = generateRandomString(); + const currentDate = new Date(); + await page.locator('.tiptap').fill('Редактируемый Комментарий: ' + randomString + ' ' + currentDate); + await page.getByRole('button', { name: 'Сохранить' }).click(); + await expect(page.getByText('Редактируемый Комментарий: ' + randomString + ' ' + currentDate)).toBeVisible(); +}); \ No newline at end of file From 9c530c41802d956d631fe5b84f0812520361db8b Mon Sep 17 00:00:00 2001 From: Untone Date: Mon, 17 Jun 2024 14:45:58 +0300 Subject: [PATCH 002/132] .. --- src/graphql/client/core.ts | 2 +- tests/basic-routes.spec.ts | 21 --------------------- tests/basic-routes.test.js | 37 ------------------------------------- 3 files changed, 1 insertion(+), 59 deletions(-) delete mode 100644 tests/basic-routes.spec.ts delete mode 100644 tests/basic-routes.test.js diff --git a/src/graphql/client/core.ts b/src/graphql/client/core.ts index 2512b771..dbe9588d 100644 --- a/src/graphql/client/core.ts +++ b/src/graphql/client/core.ts @@ -197,7 +197,7 @@ export const apiClient = { }, loadAuthorsBy: async (args: QueryLoad_Authors_ByArgs) => { const resp = await publicGraphQLClient.query(authorsLoadBy, args).toPromise() - console.debug('[graphql.client.core] authorsLoadBy:', resp) + // console.debug('[graphql.client.core] authorsLoadBy:', resp) return resp.data.load_authors_by }, diff --git a/tests/basic-routes.spec.ts b/tests/basic-routes.spec.ts deleted file mode 100644 index b904fbef..00000000 --- a/tests/basic-routes.spec.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { expect, test } from '@playwright/test' - -const baseHost = process.env.BASE_HOST || 'https://localhost:3000' - -const pagesTitles = { - '/': /Дискурс/, - '/feed': /Лента/, - '/create': /Выберите тип публикации/, - '/about/help': /Поддержите Дискурс/, - '/authors': /Авторы/, - '/topics': /Темы и сюжеты/, - '/inbox': /Входящие/, -} - -Object.keys(pagesTitles).forEach((res: string) => { - test(`страница ${res}`, async ({ page }) => { - await page.goto(`${baseHost}${res}`) - const title = pagesTitles[res] - await expect(page).toHaveTitle(title) - }) -}) diff --git a/tests/basic-routes.test.js b/tests/basic-routes.test.js deleted file mode 100644 index a3ffcf78..00000000 --- a/tests/basic-routes.test.js +++ /dev/null @@ -1,37 +0,0 @@ -import { chromium } from 'playwright' -;(async () => { - const browser = await chromium.launch() - const context = await browser.newContext() - - // Define the URLs to visit - const pagesToVisit = [ - 'https://localhost:3000/', - 'https://localhost:3000/feed', - 'https://localhost:3000/create', - 'https://localhost:3000/about/donate', - 'https://localhost:3000/authors', - 'https://localhost:3000/topics', - 'https://localhost:3000/inbox', - ] - - // Loop through the pages and visit each one - for (const pageUrl of pagesToVisit) { - const page = await context.newPage() - - // Log a message before visiting the page - console.log(`Visiting page: ${pageUrl}`) - - await page.goto(pageUrl) - - // Add your test assertions here if needed - - // Log a message after visiting the page - console.log(`Finished visiting page: ${pageUrl}`) - - // Close the page before moving to the next one - await page.close() - } - - // Close the browser - await browser.close() -})() From 250947a8d14a44e98b414f9cf27cb3e62353de4e Mon Sep 17 00:00:00 2001 From: Stepan Vladovskiy Date: Wed, 19 Jun 2024 01:02:05 +0000 Subject: [PATCH 003/132] style: with info in README --- README.md | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index d11dd24b..adfadc64 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,12 @@ -## How to start + +## How to start ``` npm install npm start ``` -## Useful commands -run checks +## Useful commands +run checks ``` npm run check ``` @@ -18,3 +19,31 @@ fix styles, imports, formatting and autofixable linting errors: npm run fix npm run format ``` + +## Config of variables + +- All vars are already in place and wroted in + ``` + /src/utils/config.ts + ``` + +# End-to-End (E2E) Tests + +This directory contains end-to-end tests. These tests are written using [Playwright](https://playwright.dev/) + +## Structure + +- `/tests/*`: This directory contains the test files. +- `/playwright.config.ts`: This is the configuration file for Playwright. + +## Getting Started + +Follow these steps: + +1. **Install dependencies**: Run `pnpm e2e:install` to install the necessary dependencies for running the tests. + +2. **Run the tests**: After using `pnpm e2e:tests`. + +## Additional Information + +For more information on how to write tests using Playwright - [Playwright documentation](https://playwright.dev/docs/intro). From 6fcd0105de71327c180c2a790bb58fc3dca82bf2 Mon Sep 17 00:00:00 2001 From: Stepan Vladovskiy Date: Wed, 19 Jun 2024 01:03:31 +0000 Subject: [PATCH 004/132] feat: with two script now, instead of one. e2e --- package-lock.json | 1584 ++++++++++++++++++++++++++++++++++++--------- package.json | 7 +- 2 files changed, 1283 insertions(+), 308 deletions(-) diff --git a/package-lock.json b/package-lock.json index 39f41cea..aacfa7c6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -121,6 +121,7 @@ "resolved": "https://registry.npmjs.org/@0no-co/graphql.web/-/graphql.web-1.0.7.tgz", "integrity": "sha512-E3Qku4mTzdrlwVWGPxklDnME5ANrEGetvYw4i2GCRlppWXXE4QD66j7pwb8HelZwS6LnqEChhrSOGCXpbiu6MQ==", "dev": true, + "license": "MIT", "peerDependencies": { "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" }, @@ -135,6 +136,7 @@ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" @@ -148,6 +150,7 @@ "resolved": "https://registry.npmjs.org/@ardatan/relay-compiler/-/relay-compiler-12.0.0.tgz", "integrity": "sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.14.0", "@babel/generator": "^7.14.0", @@ -179,6 +182,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -194,6 +198,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -210,6 +215,7 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -221,6 +227,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -232,13 +239,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@ardatan/relay-compiler/node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -252,6 +261,7 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -261,6 +271,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -273,6 +284,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -288,6 +300,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -300,6 +313,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -311,13 +325,15 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/@ardatan/relay-compiler/node_modules/yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^6.0.0", "decamelize": "^1.2.0", @@ -340,6 +356,7 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, + "license": "ISC", "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -353,6 +370,7 @@ "resolved": "https://registry.npmjs.org/@ardatan/sync-fetch/-/sync-fetch-0.0.1.tgz", "integrity": "sha512-xhlTqH0m31mnsG0tIP4ETgfSB6gXDaYYsUWTrlUV93fFQPI9dd8hE0Ot6MHLCtqgB32hwJAC3YZMWlXZw7AleA==", "dev": true, + "license": "MIT", "dependencies": { "node-fetch": "^2.6.1" }, @@ -365,6 +383,7 @@ "resolved": "https://registry.npmjs.org/@authorizerdev/authorizer-js/-/authorizer-js-2.0.3.tgz", "integrity": "sha512-uencwr3Ea8mwfxVKDFf2ITRCRSmzvua+O2voRuiWQORtRQTgZQjkN3M+IEkEj+WP9M1iFIl+NDgzECsp8ptC/A==", "dev": true, + "license": "MIT", "dependencies": { "cross-fetch": "^3.1.5" }, @@ -380,6 +399,7 @@ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/highlight": "^7.24.7", "picocolors": "^1.0.0" @@ -393,6 +413,7 @@ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -402,6 +423,7 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.24.7", @@ -432,6 +454,7 @@ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.24.7", "@jridgewell/gen-mapping": "^0.3.5", @@ -447,6 +470,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.24.7" }, @@ -459,6 +483,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/compat-data": "^7.24.7", "@babel/helper-validator-option": "^7.24.7", @@ -475,6 +500,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.7.tgz", "integrity": "sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", "@babel/helper-environment-visitor": "^7.24.7", @@ -498,6 +524,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.24.7" }, @@ -510,6 +537,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/template": "^7.24.7", "@babel/types": "^7.24.7" @@ -523,6 +551,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.24.7" }, @@ -535,6 +564,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.7.tgz", "integrity": "sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==", "dev": true, + "license": "MIT", "dependencies": { "@babel/traverse": "^7.24.7", "@babel/types": "^7.24.7" @@ -548,6 +578,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/traverse": "^7.24.7", "@babel/types": "^7.24.7" @@ -561,6 +592,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-module-imports": "^7.24.7", @@ -580,6 +612,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.24.7" }, @@ -592,6 +625,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -601,6 +635,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz", "integrity": "sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-member-expression-to-functions": "^7.24.7", @@ -618,6 +653,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/traverse": "^7.24.7", "@babel/types": "^7.24.7" @@ -631,6 +667,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/traverse": "^7.24.7", "@babel/types": "^7.24.7" @@ -644,6 +681,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.24.7" }, @@ -656,6 +694,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -665,6 +704,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -674,6 +714,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -683,6 +724,7 @@ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/template": "^7.24.7", "@babel/types": "^7.24.7" @@ -696,6 +738,7 @@ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", @@ -711,6 +754,7 @@ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", "dev": true, + "license": "MIT", "bin": { "parser": "bin/babel-parser.js" }, @@ -724,6 +768,7 @@ "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -741,6 +786,7 @@ "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.", "dev": true, + "license": "MIT", "dependencies": { "@babel/compat-data": "^7.20.5", "@babel/helper-compilation-targets": "^7.20.7", @@ -760,6 +806,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -772,6 +819,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.7.tgz", "integrity": "sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -787,6 +835,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -802,6 +851,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -817,6 +867,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -829,6 +880,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -844,6 +896,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -859,6 +912,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz", "integrity": "sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -874,6 +928,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.7.tgz", "integrity": "sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", "@babel/helper-compilation-targets": "^7.24.7", @@ -896,6 +951,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/template": "^7.24.7" @@ -912,6 +968,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.7.tgz", "integrity": "sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -927,6 +984,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.7.tgz", "integrity": "sha512-cjRKJ7FobOH2eakx7Ja+KpJRj8+y+/SiB3ooYm/n2UJfxu0oEaOoxOinitkJcPqv9KxS0kxTGPUaR7L2XcXDXA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-flow": "^7.24.7" @@ -943,6 +1001,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" @@ -959,6 +1018,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz", "integrity": "sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.24.7", "@babel/helper-function-name": "^7.24.7", @@ -976,6 +1036,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz", "integrity": "sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -991,6 +1052,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1006,6 +1068,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.7.tgz", "integrity": "sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7", @@ -1023,6 +1086,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/helper-replace-supers": "^7.24.7" @@ -1039,6 +1103,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1054,6 +1119,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1069,6 +1135,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz", "integrity": "sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1084,6 +1151,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.24.7.tgz", "integrity": "sha512-+Dj06GDZEFRYvclU6k4bme55GKBEWUmByM/eoKuqg4zTNQHiApWRhQph5fxQB2wAEFvRzL1tOEj1RJ19wJrhoA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", "@babel/helper-module-imports": "^7.24.7", @@ -1103,6 +1171,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1118,6 +1187,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" @@ -1134,6 +1204,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1149,6 +1220,7 @@ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", "dev": true, + "license": "MIT", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -1161,6 +1233,7 @@ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.24.7", "@babel/parser": "^7.24.7", @@ -1175,6 +1248,7 @@ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.24.7", "@babel/generator": "^7.24.7", @@ -1196,6 +1270,7 @@ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.24.7", "@babel/helper-validator-identifier": "^7.24.7", @@ -1206,11 +1281,12 @@ } }, "node_modules/@biomejs/biome": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-1.8.0.tgz", - "integrity": "sha512-34xcE2z8GWrIz1sCFEmlHT/+4d+SN7YOqqvzlAKXKvaWPRJ2/NUwxPbRsP01P9QODkQ5bvGvc9rpBihmP+7RJQ==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-1.8.1.tgz", + "integrity": "sha512-fQXGfvq6DIXem12dGQCM2tNF+vsNHH1qs3C7WeOu75Pd0trduoTmoO7G4ntLJ2qDs5wuw981H+cxQhi1uHnAtA==", "dev": true, "hasInstallScript": true, + "license": "MIT OR Apache-2.0", "bin": { "biome": "bin/biome" }, @@ -1222,24 +1298,25 @@ "url": "https://opencollective.com/biome" }, "optionalDependencies": { - "@biomejs/cli-darwin-arm64": "1.8.0", - "@biomejs/cli-darwin-x64": "1.8.0", - "@biomejs/cli-linux-arm64": "1.8.0", - "@biomejs/cli-linux-arm64-musl": "1.8.0", - "@biomejs/cli-linux-x64": "1.8.0", - "@biomejs/cli-linux-x64-musl": "1.8.0", - "@biomejs/cli-win32-arm64": "1.8.0", - "@biomejs/cli-win32-x64": "1.8.0" + "@biomejs/cli-darwin-arm64": "1.8.1", + "@biomejs/cli-darwin-x64": "1.8.1", + "@biomejs/cli-linux-arm64": "1.8.1", + "@biomejs/cli-linux-arm64-musl": "1.8.1", + "@biomejs/cli-linux-x64": "1.8.1", + "@biomejs/cli-linux-x64-musl": "1.8.1", + "@biomejs/cli-win32-arm64": "1.8.1", + "@biomejs/cli-win32-x64": "1.8.1" } }, "node_modules/@biomejs/cli-darwin-arm64": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-1.8.0.tgz", - "integrity": "sha512-dBAYzfIJ1JmWigKlWourT3sJ3I60LZPjqNwwlsyFjiv5AV7vPeWlHVVIImV2BpINwNjZQhpXnwDfVnGS4vr7AA==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-1.8.1.tgz", + "integrity": "sha512-XLiB7Uu6GALIOBWzQ2aMD0ru4Ly5/qSeQF7kk3AabzJ/kwsEWSe33iVySBP/SS2qv25cgqNiLksjGcw2bHT3mw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT OR Apache-2.0", "optional": true, "os": [ "darwin" @@ -1249,13 +1326,14 @@ } }, "node_modules/@biomejs/cli-darwin-x64": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-1.8.0.tgz", - "integrity": "sha512-ZTTSD0bP0nn9UpRDGQrQNTILcYSj+IkxTYr3CAV64DWBDtQBomlk2oVKWzDaA1LOhpAsTh0giLCbPJaVk2jfMQ==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-1.8.1.tgz", + "integrity": "sha512-uMTSxVLMfqkBVqyc25hSn83jBbp+wtWjzM/pHFlKXt3htJuw7FErVGW0nmQ9Sxa9vJ7GcqoltLMl28VQRIMYzg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT OR Apache-2.0", "optional": true, "os": [ "darwin" @@ -1265,13 +1343,14 @@ } }, "node_modules/@biomejs/cli-linux-arm64": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-1.8.0.tgz", - "integrity": "sha512-cx725jTlJS6dskvJJwwCQaaMRBKE2Qss7ukzmx27Rn/DXRxz6tnnBix4FUGPf1uZfwrERkiJlbWM05JWzpvvXg==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-1.8.1.tgz", + "integrity": "sha512-3SzZRuC/9Oi2P2IBNPsEj0KXxSXUEYRR2kfRF/Ve8QAfGgrt4qnwuWd6QQKKN5R+oYH691qjm+cXBKEcrP1v/Q==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT OR Apache-2.0", "optional": true, "os": [ "linux" @@ -1281,13 +1360,14 @@ } }, "node_modules/@biomejs/cli-linux-arm64-musl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.8.0.tgz", - "integrity": "sha512-+ee/pZWsvhDv6eRI00krRNSgAg8DKSxzOv3LUsCjto6N1VzqatTASeQv2HRfG1nitf79rRKM75LkMJbqEfiKww==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.8.1.tgz", + "integrity": "sha512-UQ8Wc01J0wQL+5AYOc7qkJn20B4PZmQL1KrmDZh7ot0DvD6aX4+8mmfd/dG5b6Zjo/44QvCKcvkFGCMRYuhWZA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT OR Apache-2.0", "optional": true, "os": [ "linux" @@ -1297,13 +1377,14 @@ } }, "node_modules/@biomejs/cli-linux-x64": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-1.8.0.tgz", - "integrity": "sha512-cmgmhlD4QUxMhL1VdaNqnB81xBHb3R7huVNyYnPYzP+AykZ7XqJbPd1KcWAszNjUk2AHdx0aLKEBwCOWemxb2g==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-1.8.1.tgz", + "integrity": "sha512-AeBycVdNrTzsyYKEOtR2R0Ph0hCD0sCshcp2aOnfGP0hCZbtFg09D0SdKLbyzKntisY41HxKVrydYiaApp+2uw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT OR Apache-2.0", "optional": true, "os": [ "linux" @@ -1313,13 +1394,14 @@ } }, "node_modules/@biomejs/cli-linux-x64-musl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-1.8.0.tgz", - "integrity": "sha512-VPA4ocrAOak50VYl8gOAVnjuFFDpIUolShntc/aWM0pZfSIMbRucxnrfUfp44EVwayxjK6ruJTR5xEWj93WvDA==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-1.8.1.tgz", + "integrity": "sha512-fYbP/kNu/rtZ4kKzWVocIdqZOtBSUEg9qUhZaao3dy3CRzafR6u6KDtBeSCnt47O+iLnks1eOR1TUxzr5+QuqA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT OR Apache-2.0", "optional": true, "os": [ "linux" @@ -1329,13 +1411,14 @@ } }, "node_modules/@biomejs/cli-win32-arm64": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-1.8.0.tgz", - "integrity": "sha512-J31spvlh39FfRHQacYXxJX9PvTCH/a8+2Jx9D1lxw+LSF0JybqZcw/4JrlFUWUl4kF3yv8AuYUK0sENScc3g9w==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-1.8.1.tgz", + "integrity": "sha512-6tEd1H/iFKpgpE3OIB7oNgW5XkjiVMzMRPL8zYoZ036YfuJ5nMYm9eB9H/y81+8Z76vL48fiYzMPotJwukGPqQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT OR Apache-2.0", "optional": true, "os": [ "win32" @@ -1345,13 +1428,14 @@ } }, "node_modules/@biomejs/cli-win32-x64": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-1.8.0.tgz", - "integrity": "sha512-uPHHvu76JC1zYe9zZDcOU9PAg+1MZmPuNgWkb5jljaDeATvzLFPB+0nuJTilf603LXL+E8IdPQAO61Wy2VuEJA==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-1.8.1.tgz", + "integrity": "sha512-g2H31jJzYmS4jkvl6TiyEjEX+Nv79a5km/xn+5DARTp5MBFzC9gwceusSSB2AkJKqZzY131AiACAWjKrVt5Ijw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT OR Apache-2.0", "optional": true, "os": [ "win32" @@ -1364,31 +1448,36 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/@brillout/import/-/import-0.2.3.tgz", "integrity": "sha512-1T8WlD75eeFSMrptGy8jiLHmfHgMmSjWvLOIUvHmSVZt+6k0eQqYUoK4KbmE4T9pVLIfxvZSOm2D68VEqKRHRw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@brillout/json-serializer": { "version": "0.5.10", "resolved": "https://registry.npmjs.org/@brillout/json-serializer/-/json-serializer-0.5.10.tgz", "integrity": "sha512-3bh/MS5pudu3H9l3a0KAE1RBfy/L95JWAEo8b2mPBN3H98wzCHYzgjQb9xRl58y+Kc7FgkjApgCFJV+zR06P5Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@brillout/picocolors": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/@brillout/picocolors/-/picocolors-1.0.13.tgz", "integrity": "sha512-LblvMKItHbvkaIMI+Awsk1EEjmReE8E8Mgjtj3Pdn/qBvwQ6e+ts5uEqG6iTrK6JWndcxrQgSe664KfoteN6fA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/@brillout/require-shim": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/@brillout/require-shim/-/require-shim-0.1.2.tgz", "integrity": "sha512-3I4LRHnVZXoSAsEoni5mosq9l6eiJED58d9V954W4CIZ88AUfYBanWGBGbJG3NztaRTpFHEA6wB3Hn93BmmJdg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@brillout/vite-plugin-import-build": { "version": "0.2.22", "resolved": "https://registry.npmjs.org/@brillout/vite-plugin-import-build/-/vite-plugin-import-build-0.2.22.tgz", "integrity": "sha512-n5sv0HdCB5WC2QJSnTN6iS/F+sJsF0AmtsCCaQ+5+dRjgsoGGsa3auinJV8tuEog5WsX+3MF8RIwn3A/u0e04w==", "dev": true, + "license": "MIT", "dependencies": { "@brillout/import": "^0.2.3" } @@ -1408,6 +1497,7 @@ "url": "https://opencollective.com/csstools" } ], + "license": "MIT", "engines": { "node": "^14 || ^16 || >=18" }, @@ -1430,6 +1520,7 @@ "url": "https://opencollective.com/csstools" } ], + "license": "MIT", "engines": { "node": "^14 || ^16 || >=18" } @@ -1449,6 +1540,7 @@ "url": "https://opencollective.com/csstools" } ], + "license": "MIT", "engines": { "node": "^14 || ^16 || >=18" }, @@ -1472,6 +1564,7 @@ "url": "https://opencollective.com/csstools" } ], + "license": "MIT-0", "engines": { "node": "^14 || ^16 || >=18" }, @@ -1484,6 +1577,7 @@ "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", "integrity": "sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -1497,6 +1591,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "aix" @@ -1513,6 +1608,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -1529,6 +1625,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -1545,6 +1642,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -1561,6 +1659,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -1577,6 +1676,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -1593,6 +1693,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -1609,6 +1710,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -1625,6 +1727,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1641,6 +1744,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1657,6 +1761,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1673,6 +1778,7 @@ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1689,6 +1795,7 @@ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1705,6 +1812,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1721,6 +1829,7 @@ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1737,6 +1846,7 @@ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1753,6 +1863,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -1769,6 +1880,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -1785,6 +1897,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -1801,6 +1914,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" @@ -1817,6 +1931,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -1833,6 +1948,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -1849,6 +1965,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -1862,6 +1979,7 @@ "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.0.0.tgz", "integrity": "sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==", "dev": true, + "license": "MIT", "dependencies": { "@formatjs/intl-localematcher": "0.5.4", "tslib": "^2.4.0" @@ -1872,6 +1990,7 @@ "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz", "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.4.0" } @@ -1881,6 +2000,7 @@ "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.8.tgz", "integrity": "sha512-nBZJYmhpcSX0WeJ5SDYUkZ42AgR3xiyhNCsQweFx3cz/ULJjym8bHAzWKvG5e2+1XO98dBYC0fWeeAECAVSwLA==", "dev": true, + "license": "MIT", "dependencies": { "@formatjs/ecma402-abstract": "2.0.0", "@formatjs/icu-skeleton-parser": "1.8.2", @@ -1892,6 +2012,7 @@ "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.2.tgz", "integrity": "sha512-k4ERKgw7aKGWJZgTarIcNEmvyTVD9FYh0mTrrBMHZ1b8hUu6iOJ4SzsZlo3UNAvHYa+PnvntIwRPt1/vy4nA9Q==", "dev": true, + "license": "MIT", "dependencies": { "@formatjs/ecma402-abstract": "2.0.0", "tslib": "^2.4.0" @@ -1902,15 +2023,17 @@ "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz", "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.4.0" } }, "node_modules/@graphql-codegen/add": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@graphql-codegen/add/-/add-5.0.2.tgz", - "integrity": "sha512-ouBkSvMFUhda5VoKumo/ZvsZM9P5ZTyDsI8LW18VxSNWOjrTeLXBWHG8Gfaai0HwhflPtCYVABbriEcOmrRShQ==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@graphql-codegen/add/-/add-5.0.3.tgz", + "integrity": "sha512-SxXPmramkth8XtBlAHu4H4jYcYXM/o3p01+psU+0NADQowA8jtYkK6MW5rV6T+CxkEaNZItfSmZRPgIuypcqnA==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-codegen/plugin-helpers": "^5.0.3", "tslib": "~2.6.0" @@ -1924,6 +2047,7 @@ "resolved": "https://registry.npmjs.org/@graphql-codegen/cli/-/cli-5.0.2.tgz", "integrity": "sha512-MBIaFqDiLKuO4ojN6xxG9/xL9wmfD3ZjZ7RsPjwQnSHBCUXnEkdKvX+JVpx87Pq29Ycn8wTJUguXnTZ7Di0Mlw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/generator": "^7.18.13", "@babel/template": "^7.18.10", @@ -1982,6 +2106,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -1997,6 +2122,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2013,6 +2139,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -2024,13 +2151,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@graphql-codegen/cli/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2040,6 +2169,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -2048,14 +2178,15 @@ } }, "node_modules/@graphql-codegen/client-preset": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@graphql-codegen/client-preset/-/client-preset-4.2.6.tgz", - "integrity": "sha512-e7SzPb+nxNJfsD0uG+NSyzIeTtCXTouX5VThmcCoqGMDLgF5Lo7932B3HtZCvzmzqcXxRjJ81CmkA2LhlqIbCw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@graphql-codegen/client-preset/-/client-preset-4.3.0.tgz", + "integrity": "sha512-p2szj5YiyLUYnQn1h7S4dsSY2Jc1LNrm32ptkb6CGtqPo3w9vgqki2WRJwgeJN8s3bhifqWRPzhoid/smrFVgA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.20.2", "@babel/template": "^7.20.7", - "@graphql-codegen/add": "^5.0.2", + "@graphql-codegen/add": "^5.0.3", "@graphql-codegen/gql-tag-operations": "4.0.7", "@graphql-codegen/plugin-helpers": "^5.0.4", "@graphql-codegen/typed-document-node": "^5.0.7", @@ -2076,6 +2207,7 @@ "resolved": "https://registry.npmjs.org/@graphql-codegen/core/-/core-4.0.2.tgz", "integrity": "sha512-IZbpkhwVqgizcjNiaVzNAzm/xbWT6YnGgeOLwVjm4KbJn3V2jchVtuzHH09G5/WkkLSk2wgbXNdwjM41JxO6Eg==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-codegen/plugin-helpers": "^5.0.3", "@graphql-tools/schema": "^10.0.0", @@ -2091,6 +2223,7 @@ "resolved": "https://registry.npmjs.org/@graphql-codegen/gql-tag-operations/-/gql-tag-operations-4.0.7.tgz", "integrity": "sha512-2I69+IDC8pqAohH6cgKse/vPfJ/4TRTJX96PkAKz8S4RD54PUHtBmzCdBInIFEP/vQuH5mFUAaIKXXjznmGOsg==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-codegen/plugin-helpers": "^5.0.4", "@graphql-codegen/visitor-plugin-common": "5.2.0", @@ -2107,6 +2240,7 @@ "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-5.0.4.tgz", "integrity": "sha512-MOIuHFNWUnFnqVmiXtrI+4UziMTYrcquljaI5f/T/Bc7oO7sXcfkAvgkNWEEi9xWreYwvuer3VHCuPI/lAFWbw==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-tools/utils": "^10.0.0", "change-case-all": "1.0.15", @@ -2124,6 +2258,7 @@ "resolved": "https://registry.npmjs.org/@graphql-codegen/schema-ast/-/schema-ast-4.0.2.tgz", "integrity": "sha512-5mVAOQQK3Oz7EtMl/l3vOQdc2aYClUzVDHHkMvZlunc+KlGgl81j8TLa+X7ANIllqU4fUEsQU3lJmk4hXP6K7Q==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-codegen/plugin-helpers": "^5.0.3", "@graphql-tools/utils": "^10.0.0", @@ -2138,6 +2273,7 @@ "resolved": "https://registry.npmjs.org/@graphql-codegen/typed-document-node/-/typed-document-node-5.0.7.tgz", "integrity": "sha512-rgFh96hAbNwPUxLVlRcNhGaw2+y7ZGx7giuETtdO8XzPasTQGWGRkZ3wXQ5UUiTX4X3eLmjnuoXYKT7HoxSznQ==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-codegen/plugin-helpers": "^5.0.4", "@graphql-codegen/visitor-plugin-common": "5.2.0", @@ -2154,6 +2290,7 @@ "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-4.0.7.tgz", "integrity": "sha512-Gn+JNvQBJhBqH7s83piAJ6UeU/MTj9GXWFO9bdbl8PMLCAM1uFAtg04iHfkGCtDKXcUg5a3Dt/SZG85uk5KuhA==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-codegen/plugin-helpers": "^5.0.4", "@graphql-codegen/schema-ast": "^4.0.2", @@ -2170,6 +2307,7 @@ "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript-operations/-/typescript-operations-4.2.1.tgz", "integrity": "sha512-LhEPsaP+AI65zfK2j6CBAL4RT0bJL/rR9oRWlvwtHLX0t7YQr4CP4BXgvvej9brYdedAxHGPWeV1tPHy5/z9KQ==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-codegen/plugin-helpers": "^5.0.4", "@graphql-codegen/typescript": "^4.0.7", @@ -2186,6 +2324,7 @@ "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript-urql/-/typescript-urql-4.0.0.tgz", "integrity": "sha512-l15f44zxU5r1yiIpzLzgDQf2JLmTT+ZrFv7D4kQVAAXquPRN+Bdei1V9VAcatISb5bcHNxmdrXIRMtWKPwVwTg==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-codegen/plugin-helpers": "^3.0.0", "@graphql-codegen/visitor-plugin-common": "2.13.1", @@ -2205,6 +2344,7 @@ "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-3.1.2.tgz", "integrity": "sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-tools/utils": "^9.0.0", "change-case-all": "1.0.15", @@ -2221,13 +2361,15 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true + "dev": true, + "license": "0BSD" }, "node_modules/@graphql-codegen/typescript-urql/node_modules/@graphql-codegen/visitor-plugin-common": { "version": "2.13.1", "resolved": "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.13.1.tgz", "integrity": "sha512-mD9ufZhDGhyrSaWQGrU1Q1c5f01TeWtSWy/cDwXYjJcHIj1Y/DG2x0tOflEfCvh5WcnmHNIw4lzDsg1W7iFJEg==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-codegen/plugin-helpers": "^2.7.2", "@graphql-tools/optimize": "^1.3.0", @@ -2249,6 +2391,7 @@ "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.7.2.tgz", "integrity": "sha512-kln2AZ12uii6U59OQXdjLk5nOlh1pHis1R98cDZGFnfaiAbX9V3fxcZ1MMJkB7qFUymTALzyjZoXXdyVmPMfRg==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-tools/utils": "^8.8.0", "change-case-all": "1.0.14", @@ -2266,6 +2409,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.13.1.tgz", "integrity": "sha512-qIh9yYpdUFmctVqovwMdheVNJqFh+DQNWIhX87FJStfXYnmweBUDATok9fWPleKeFwxnW8IapKmY8m8toJEkAw==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.4.0" }, @@ -2278,6 +2422,7 @@ "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.14.tgz", "integrity": "sha512-CWVm2uT7dmSHdO/z1CXT/n47mWonyypzBbuCy5tN7uMg22BsfkhwT6oHmFCAk+gL1LOOxhdbB9SZz3J1KTY3gA==", "dev": true, + "license": "MIT", "dependencies": { "change-case": "^4.1.2", "is-lower-case": "^2.0.2", @@ -2295,13 +2440,15 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true + "dev": true, + "license": "0BSD" }, "node_modules/@graphql-codegen/typescript-urql/node_modules/@graphql-tools/optimize": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@graphql-tools/optimize/-/optimize-1.4.0.tgz", "integrity": "sha512-dJs/2XvZp+wgHH8T5J2TqptT9/6uVzIYvA6uFACha+ufvdMBedkfR4b4GbT8jAKLRARiqRTxy3dctnwkTM2tdw==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.4.0" }, @@ -2314,6 +2461,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-6.5.18.tgz", "integrity": "sha512-mc5VPyTeV+LwiM+DNvoDQfPqwQYhPV/cl5jOBjTgSniyaq8/86aODfMkrE2OduhQ5E00hqrkuL2Fdrgk0w1QJg==", "dev": true, + "license": "MIT", "dependencies": { "@ardatan/relay-compiler": "12.0.0", "@graphql-tools/utils": "^9.2.1", @@ -2328,6 +2476,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.2.1.tgz", "integrity": "sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-typed-document-node/core": "^3.1.1", "tslib": "^2.4.0" @@ -2341,6 +2490,7 @@ "resolved": "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-5.2.0.tgz", "integrity": "sha512-0p8AwmARaZCAlDFfQu6Sz+JV6SjbPDx3y2nNM7WAAf0au7Im/GpJ7Ke3xaIYBc1b2rTZ+DqSTJI/zomENGD9NA==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-codegen/plugin-helpers": "^5.0.4", "@graphql-tools/optimize": "^2.0.0", @@ -2362,6 +2512,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/apollo-engine-loader/-/apollo-engine-loader-8.0.1.tgz", "integrity": "sha512-NaPeVjtrfbPXcl+MLQCJLWtqe2/E4bbAqcauEOQ+3sizw1Fc2CNmhHRF8a6W4D0ekvTRRXAMptXYgA2uConbrA==", "dev": true, + "license": "MIT", "dependencies": { "@ardatan/sync-fetch": "^0.0.1", "@graphql-tools/utils": "^10.0.13", @@ -2380,6 +2531,7 @@ "resolved": "https://registry.npmjs.org/@whatwg-node/events/-/events-0.1.1.tgz", "integrity": "sha512-AyQEn5hIPV7Ze+xFoXVU3QTHXVbWPrzaOkxtENMPMuNL6VVHrp4hHfDt9nrQpjO7BgvuM95dMtkycX5M/DZR3w==", "dev": true, + "license": "MIT", "engines": { "node": ">=16.0.0" } @@ -2389,6 +2541,7 @@ "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.9.18.tgz", "integrity": "sha512-hqoz6StCW+AjV/3N+vg0s1ah82ptdVUb9nH2ttj3UbySOXUvytWw2yqy8c1cKzyRk6mDD00G47qS3fZI9/gMjg==", "dev": true, + "license": "MIT", "dependencies": { "@whatwg-node/node-fetch": "^0.5.7", "urlpattern-polyfill": "^10.0.0" @@ -2402,6 +2555,7 @@ "resolved": "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.5.11.tgz", "integrity": "sha512-LS8tSomZa3YHnntpWt3PP43iFEEl6YeIsvDakczHBKlay5LdkXFr8w7v8H6akpG5nRrzydyB0k1iE2eoL6aKIQ==", "dev": true, + "license": "MIT", "dependencies": { "@kamilkisiela/fast-url-parser": "^1.1.4", "@whatwg-node/events": "^0.1.0", @@ -2417,13 +2571,15 @@ "version": "10.0.0", "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@graphql-tools/batch-execute": { "version": "9.0.4", "resolved": "https://registry.npmjs.org/@graphql-tools/batch-execute/-/batch-execute-9.0.4.tgz", "integrity": "sha512-kkebDLXgDrep5Y0gK1RN3DMUlLqNhg60OAz0lTCqrYeja6DshxLtLkj+zV4mVbBA4mQOEoBmw6g1LZs3dA84/w==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-tools/utils": "^10.0.13", "dataloader": "^2.2.2", @@ -2442,6 +2598,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/code-file-loader/-/code-file-loader-8.1.2.tgz", "integrity": "sha512-GrLzwl1QV2PT4X4TEEfuTmZYzIZHLqoTGBjczdUzSqgCCcqwWzLB3qrJxFQfI8e5s1qZ1bhpsO9NoMn7tvpmyA==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-tools/graphql-tag-pluck": "8.3.1", "@graphql-tools/utils": "^10.0.13", @@ -2461,6 +2618,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-10.0.11.tgz", "integrity": "sha512-+sKeecdIVXhFB/66e5yjeKYZ3Lpn52yNG637ElVhciuLGgFc153rC6l6zcuNd9yx5wMrNx35U/h3HsMIEI3xNw==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-tools/batch-execute": "^9.0.4", "@graphql-tools/executor": "^1.2.1", @@ -2481,6 +2639,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/documents/-/documents-1.0.1.tgz", "integrity": "sha512-aweoMH15wNJ8g7b2r4C4WRuJxZ0ca8HtNO54rkye/3duxTkW4fGBEutCx03jCIr5+a1l+4vFJNP859QnAVBVCA==", "dev": true, + "license": "MIT", "dependencies": { "lodash.sortby": "^4.7.0", "tslib": "^2.4.0" @@ -2497,6 +2656,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/executor/-/executor-1.2.6.tgz", "integrity": "sha512-+1kjfqzM5T2R+dCw7F4vdJ3CqG+fY/LYJyhNiWEFtq0ToLwYzR/KKyD8YuzTirEjSxWTVlcBh7endkx5n5F6ew==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-tools/utils": "^10.1.1", "@graphql-typed-document-node/core": "3.2.0", @@ -2516,6 +2676,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/executor-graphql-ws/-/executor-graphql-ws-1.1.2.tgz", "integrity": "sha512-+9ZK0rychTH1LUv4iZqJ4ESbmULJMTsv3XlFooPUngpxZkk00q6LqHKJRrsLErmQrVaC7cwQCaRBJa0teK17Lg==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-tools/utils": "^10.0.13", "@types/ws": "^8.0.0", @@ -2536,6 +2697,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/executor-http/-/executor-http-1.0.9.tgz", "integrity": "sha512-+NXaZd2MWbbrWHqU4EhXcrDbogeiCDmEbrAN+rMn4Nu2okDjn2MTFDbTIab87oEubQCH4Te1wDkWPKrzXup7+Q==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-tools/utils": "^10.0.13", "@repeaterjs/repeater": "^3.0.4", @@ -2557,6 +2719,7 @@ "resolved": "https://registry.npmjs.org/@whatwg-node/events/-/events-0.1.1.tgz", "integrity": "sha512-AyQEn5hIPV7Ze+xFoXVU3QTHXVbWPrzaOkxtENMPMuNL6VVHrp4hHfDt9nrQpjO7BgvuM95dMtkycX5M/DZR3w==", "dev": true, + "license": "MIT", "engines": { "node": ">=16.0.0" } @@ -2566,6 +2729,7 @@ "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.9.18.tgz", "integrity": "sha512-hqoz6StCW+AjV/3N+vg0s1ah82ptdVUb9nH2ttj3UbySOXUvytWw2yqy8c1cKzyRk6mDD00G47qS3fZI9/gMjg==", "dev": true, + "license": "MIT", "dependencies": { "@whatwg-node/node-fetch": "^0.5.7", "urlpattern-polyfill": "^10.0.0" @@ -2579,6 +2743,7 @@ "resolved": "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.5.11.tgz", "integrity": "sha512-LS8tSomZa3YHnntpWt3PP43iFEEl6YeIsvDakczHBKlay5LdkXFr8w7v8H6akpG5nRrzydyB0k1iE2eoL6aKIQ==", "dev": true, + "license": "MIT", "dependencies": { "@kamilkisiela/fast-url-parser": "^1.1.4", "@whatwg-node/events": "^0.1.0", @@ -2594,13 +2759,15 @@ "version": "10.0.0", "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@graphql-tools/executor-legacy-ws": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@graphql-tools/executor-legacy-ws/-/executor-legacy-ws-1.0.6.tgz", "integrity": "sha512-lDSxz9VyyquOrvSuCCnld3256Hmd+QI2lkmkEv7d4mdzkxkK4ddAWW1geQiWrQvWmdsmcnGGlZ7gDGbhEExwqg==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-tools/utils": "^10.0.13", "@types/ws": "^8.0.0", @@ -2620,6 +2787,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/git-loader/-/git-loader-8.0.6.tgz", "integrity": "sha512-FQFO4H5wHAmHVyuUQrjvPE8re3qJXt50TWHuzrK3dEaief7JosmlnkLMDMbMBwtwITz9u1Wpl6doPhT2GwKtlw==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-tools/graphql-tag-pluck": "8.3.1", "@graphql-tools/utils": "^10.0.13", @@ -2640,6 +2808,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/github-loader/-/github-loader-8.0.1.tgz", "integrity": "sha512-W4dFLQJ5GtKGltvh/u1apWRFKBQOsDzFxO9cJkOYZj1VzHCpRF43uLST4VbCfWve+AwBqOuKr7YgkHoxpRMkcg==", "dev": true, + "license": "MIT", "dependencies": { "@ardatan/sync-fetch": "^0.0.1", "@graphql-tools/executor-http": "^1.0.9", @@ -2661,6 +2830,7 @@ "resolved": "https://registry.npmjs.org/@whatwg-node/events/-/events-0.1.1.tgz", "integrity": "sha512-AyQEn5hIPV7Ze+xFoXVU3QTHXVbWPrzaOkxtENMPMuNL6VVHrp4hHfDt9nrQpjO7BgvuM95dMtkycX5M/DZR3w==", "dev": true, + "license": "MIT", "engines": { "node": ">=16.0.0" } @@ -2670,6 +2840,7 @@ "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.9.18.tgz", "integrity": "sha512-hqoz6StCW+AjV/3N+vg0s1ah82ptdVUb9nH2ttj3UbySOXUvytWw2yqy8c1cKzyRk6mDD00G47qS3fZI9/gMjg==", "dev": true, + "license": "MIT", "dependencies": { "@whatwg-node/node-fetch": "^0.5.7", "urlpattern-polyfill": "^10.0.0" @@ -2683,6 +2854,7 @@ "resolved": "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.5.11.tgz", "integrity": "sha512-LS8tSomZa3YHnntpWt3PP43iFEEl6YeIsvDakczHBKlay5LdkXFr8w7v8H6akpG5nRrzydyB0k1iE2eoL6aKIQ==", "dev": true, + "license": "MIT", "dependencies": { "@kamilkisiela/fast-url-parser": "^1.1.4", "@whatwg-node/events": "^0.1.0", @@ -2698,13 +2870,15 @@ "version": "10.0.0", "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@graphql-tools/graphql-file-loader": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-file-loader/-/graphql-file-loader-8.0.1.tgz", "integrity": "sha512-7gswMqWBabTSmqbaNyWSmRRpStWlcCkBc73E6NZNlh4YNuiyKOwbvSkOUYFOqFMfEL+cFsXgAvr87Vz4XrYSbA==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-tools/import": "7.0.1", "@graphql-tools/utils": "^10.0.13", @@ -2724,6 +2898,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-8.3.1.tgz", "integrity": "sha512-ujits9tMqtWQQq4FI4+qnVPpJvSEn7ogKtyN/gfNT+ErIn6z1e4gyVGQpTK5sgAUXq1lW4gU/5fkFFC5/sL2rQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.22.9", "@babel/parser": "^7.16.8", @@ -2745,6 +2920,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/import/-/import-7.0.1.tgz", "integrity": "sha512-935uAjAS8UAeXThqHfYVr4HEAp6nHJ2sximZKO1RzUTq5WoALMAhhGARl0+ecm6X+cqNUwIChJbjtaa6P/ML0w==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-tools/utils": "^10.0.13", "resolve-from": "5.0.0", @@ -2762,6 +2938,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/json-file-loader/-/json-file-loader-8.0.1.tgz", "integrity": "sha512-lAy2VqxDAHjVyqeJonCP6TUemrpYdDuKt25a10X6zY2Yn3iFYGnuIDQ64cv3ytyGY6KPyPB+Kp+ZfOkNDG3FQA==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-tools/utils": "^10.0.13", "globby": "^11.0.3", @@ -2780,6 +2957,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/load/-/load-8.0.2.tgz", "integrity": "sha512-S+E/cmyVmJ3CuCNfDuNF2EyovTwdWfQScXv/2gmvJOti2rGD8jTt9GYVzXaxhblLivQR9sBUCNZu/w7j7aXUCA==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-tools/schema": "^10.0.3", "@graphql-tools/utils": "^10.0.13", @@ -2798,6 +2976,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-9.0.4.tgz", "integrity": "sha512-MivbDLUQ+4Q8G/Hp/9V72hbn810IJDEZQ57F01sHnlrrijyadibfVhaQfW/pNH+9T/l8ySZpaR/DpL5i+ruZ+g==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-tools/utils": "^10.0.13", "tslib": "^2.4.0" @@ -2814,6 +2993,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/optimize/-/optimize-2.0.0.tgz", "integrity": "sha512-nhdT+CRGDZ+bk68ic+Jw1OZ99YCDIKYA5AlVAnBHJvMawSx9YQqQAIj4refNc1/LRieGiuWvhbG3jvPVYho0Dg==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.4.0" }, @@ -2829,6 +3009,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/prisma-loader/-/prisma-loader-8.0.4.tgz", "integrity": "sha512-hqKPlw8bOu/GRqtYr0+dINAI13HinTVYBDqhwGAPIFmLr5s+qKskzgCiwbsckdrb5LWVFmVZc+UXn80OGiyBzg==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-tools/url-loader": "^8.0.2", "@graphql-tools/utils": "^10.0.13", @@ -2859,6 +3040,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-8.0.2.tgz", "integrity": "sha512-1dKp2K8UuFn7DFo1qX5c1cyazQv2h2ICwA9esHblEqCYrgf69Nk8N7SODmsfWg94OEaI74IqMoM12t7eIGwFzQ==", "dev": true, + "license": "MIT", "dependencies": { "@ardatan/sync-fetch": "^0.0.1", "@graphql-tools/delegate": "^10.0.4", @@ -2886,6 +3068,7 @@ "resolved": "https://registry.npmjs.org/@whatwg-node/events/-/events-0.1.1.tgz", "integrity": "sha512-AyQEn5hIPV7Ze+xFoXVU3QTHXVbWPrzaOkxtENMPMuNL6VVHrp4hHfDt9nrQpjO7BgvuM95dMtkycX5M/DZR3w==", "dev": true, + "license": "MIT", "engines": { "node": ">=16.0.0" } @@ -2895,6 +3078,7 @@ "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.9.18.tgz", "integrity": "sha512-hqoz6StCW+AjV/3N+vg0s1ah82ptdVUb9nH2ttj3UbySOXUvytWw2yqy8c1cKzyRk6mDD00G47qS3fZI9/gMjg==", "dev": true, + "license": "MIT", "dependencies": { "@whatwg-node/node-fetch": "^0.5.7", "urlpattern-polyfill": "^10.0.0" @@ -2908,6 +3092,7 @@ "resolved": "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.5.11.tgz", "integrity": "sha512-LS8tSomZa3YHnntpWt3PP43iFEEl6YeIsvDakczHBKlay5LdkXFr8w7v8H6akpG5nRrzydyB0k1iE2eoL6aKIQ==", "dev": true, + "license": "MIT", "dependencies": { "@kamilkisiela/fast-url-parser": "^1.1.4", "@whatwg-node/events": "^0.1.0", @@ -2924,6 +3109,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -2939,6 +3125,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2955,6 +3142,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -2966,13 +3154,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@graphql-tools/prisma-loader/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2982,6 +3172,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -2993,13 +3184,15 @@ "version": "10.0.0", "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@graphql-tools/relay-operation-optimizer": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-7.0.1.tgz", "integrity": "sha512-y0ZrQ/iyqWZlsS/xrJfSir3TbVYJTYmMOu4TaSz6F4FRDTQ3ie43BlKkhf04rC28pnUOS4BO9pDcAo1D30l5+A==", "dev": true, + "license": "MIT", "dependencies": { "@ardatan/relay-compiler": "12.0.0", "@graphql-tools/utils": "^10.0.13", @@ -3017,6 +3210,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-10.0.4.tgz", "integrity": "sha512-HuIwqbKxPaJujox25Ra4qwz0uQzlpsaBOzO6CVfzB/MemZdd+Gib8AIvfhQArK0YIN40aDran/yi+E5Xf0mQww==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-tools/merge": "^9.0.3", "@graphql-tools/utils": "^10.2.1", @@ -3035,6 +3229,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-8.0.1.tgz", "integrity": "sha512-B2k8KQEkEQmfV1zhurT5GLoXo8jbXP+YQHUayhCSxKYlRV7j/1Fhp1b21PDM8LXIDGlDRXaZ0FbWKOs7eYXDuQ==", "dev": true, + "license": "MIT", "dependencies": { "@ardatan/sync-fetch": "^0.0.1", "@graphql-tools/delegate": "^10.0.0", @@ -3062,6 +3257,7 @@ "resolved": "https://registry.npmjs.org/@whatwg-node/events/-/events-0.1.1.tgz", "integrity": "sha512-AyQEn5hIPV7Ze+xFoXVU3QTHXVbWPrzaOkxtENMPMuNL6VVHrp4hHfDt9nrQpjO7BgvuM95dMtkycX5M/DZR3w==", "dev": true, + "license": "MIT", "engines": { "node": ">=16.0.0" } @@ -3071,6 +3267,7 @@ "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.9.18.tgz", "integrity": "sha512-hqoz6StCW+AjV/3N+vg0s1ah82ptdVUb9nH2ttj3UbySOXUvytWw2yqy8c1cKzyRk6mDD00G47qS3fZI9/gMjg==", "dev": true, + "license": "MIT", "dependencies": { "@whatwg-node/node-fetch": "^0.5.7", "urlpattern-polyfill": "^10.0.0" @@ -3084,6 +3281,7 @@ "resolved": "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.5.11.tgz", "integrity": "sha512-LS8tSomZa3YHnntpWt3PP43iFEEl6YeIsvDakczHBKlay5LdkXFr8w7v8H6akpG5nRrzydyB0k1iE2eoL6aKIQ==", "dev": true, + "license": "MIT", "dependencies": { "@kamilkisiela/fast-url-parser": "^1.1.4", "@whatwg-node/events": "^0.1.0", @@ -3099,13 +3297,15 @@ "version": "10.0.0", "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@graphql-tools/utils": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-10.2.1.tgz", - "integrity": "sha512-U8OMdkkEt3Vp3uYHU2pMc6mwId7axVAcSSmcqJcUmWNPqY2pfee5O655ybTI2kNPWAe58Zu6gLu4Oi4QT4BgWA==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-10.2.2.tgz", + "integrity": "sha512-ueoplzHIgFfxhFrF4Mf/niU/tYHuO6Uekm2nCYU72qpI+7Hn9dA2/o5XOBvFXDk27Lp5VSvQY5WfmRbqwVxaYQ==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-typed-document-node/core": "^3.1.1", "cross-inspect": "1.0.0", @@ -3124,6 +3324,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-10.0.5.tgz", "integrity": "sha512-Cbr5aYjr3HkwdPvetZp1cpDWTGdD1Owgsb3z/ClzhmrboiK86EnQDxDvOJiQkDCPWE9lNBwj8Y4HfxroY0D9DQ==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-tools/delegate": "^10.0.4", "@graphql-tools/schema": "^10.0.3", @@ -3143,15 +3344,17 @@ "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", "dev": true, + "license": "MIT", "peerDependencies": { "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, "node_modules/@hocuspocus/common": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/@hocuspocus/common/-/common-2.13.0.tgz", - "integrity": "sha512-gyuUZ/7Jlht/cokGSTYWmG2+ZR1amBkV7gZgY6Bw8ko0OkUbEFsRdzWaB6RVcYNv+ZvYcsbkM8JU6rPsNykMrg==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/@hocuspocus/common/-/common-2.13.1.tgz", + "integrity": "sha512-LN5h8+zaU+JlohCYHfKQmi500FyS76A7VtytacQ7iK6J+BKuTX2UhoKUCiWNkiIxv+fEsETQfdOjOmALSYFJPw==", "dev": true, + "license": "MIT", "dependencies": { "lib0": "^0.2.87" } @@ -3161,6 +3364,7 @@ "resolved": "https://registry.npmjs.org/@hocuspocus/provider/-/provider-2.11.0.tgz", "integrity": "sha512-QsPUVyPlfa9gxsJfIUVOxtTFEhDzBsyZBRqpJifZucqwwFAKodOORk9SVi6yUJ6GE+KPeoKUdoctTIwEKeLMgQ==", "dev": true, + "license": "MIT", "dependencies": { "@hocuspocus/common": "^2.11.0", "@lifeomic/attempt": "^3.0.2", @@ -3177,6 +3381,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -3191,6 +3396,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -3200,6 +3406,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -3208,13 +3415,15 @@ "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -3224,19 +3433,22 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/@kamilkisiela/fast-url-parser/-/fast-url-parser-1.1.4.tgz", "integrity": "sha512-gbkePEBupNydxCelHCESvFSFM8XPh1Zs/OAVRW/rKpEqPAl5PbOM90Si8mv9bvnR53uPD2s/FiRxdvSejpRJew==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@lifeomic/attempt": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@lifeomic/attempt/-/attempt-3.1.0.tgz", "integrity": "sha512-QZqem4QuAnAyzfz+Gj5/+SLxqwCAw2qmt7732ZXodr6VDWGeYLG6w1i/vYLa55JQM9wRuBKLmXmiZ2P0LtE5rw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@microsoft/fetch-event-source": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@microsoft/fetch-event-source/-/fetch-event-source-2.0.1.tgz", "integrity": "sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@nanostores/router": { "version": "0.13.0", @@ -3249,6 +3461,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "engines": { "node": "^18.0.0 || >=20.0.0" }, @@ -3261,6 +3474,7 @@ "resolved": "https://registry.npmjs.org/@nanostores/solid/-/solid-0.4.2.tgz", "integrity": "sha512-8v32+C9KdRbnvP4x4Oiw/CtL1tZwbRxYfmFsPIY9PXevCgxSFnicG6VnLLtNAR7F0kl8Ec7OROHO34Ffv0KDzg==", "dev": true, + "license": "MIT", "peerDependencies": { "nanostores": ">=0.8.0", "solid-js": "^1.6.0" @@ -3271,6 +3485,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -3284,6 +3499,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -3293,6 +3509,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -3306,6 +3523,7 @@ "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 18" } @@ -3315,6 +3533,7 @@ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.0.tgz", "integrity": "sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/auth-token": "^4.0.0", "@octokit/graphql": "^7.1.0", @@ -3333,6 +3552,7 @@ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.5.tgz", "integrity": "sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^13.1.0", "universal-user-agent": "^6.0.0" @@ -3346,6 +3566,7 @@ "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.0.tgz", "integrity": "sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/request": "^8.3.0", "@octokit/types": "^13.0.0", @@ -3359,13 +3580,15 @@ "version": "22.2.0", "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz", "integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@octokit/plugin-paginate-rest": { "version": "11.3.1", "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.1.tgz", "integrity": "sha512-ryqobs26cLtM1kQxqeZui4v8FeznirUsksiA+RYemMPJ7Micju0WSkv50dBksTuZks9O5cg4wp+t8fZ/cLY56g==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^13.5.0" }, @@ -3381,6 +3604,7 @@ "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-4.0.1.tgz", "integrity": "sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 18" }, @@ -3393,6 +3617,7 @@ "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.2.2.tgz", "integrity": "sha512-EI7kXWidkt3Xlok5uN43suK99VWqc8OaIMktY9d9+RNKl69juoTyxmLoWPIZgJYzi41qj/9zU7G/ljnNOJ5AFA==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^13.5.0" }, @@ -3408,6 +3633,7 @@ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.0.tgz", "integrity": "sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/endpoint": "^9.0.1", "@octokit/request-error": "^5.1.0", @@ -3423,6 +3649,7 @@ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.0.tgz", "integrity": "sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^13.1.0", "deprecation": "^2.0.0", @@ -3437,6 +3664,7 @@ "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-20.1.1.tgz", "integrity": "sha512-MB4AYDsM5jhIHro/dq4ix1iWTLGToIGk6cWF5L6vanFaMble5jTX/UBQyiv05HsWnwUtY8JrfHy2LWfKwihqMw==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/core": "^5.0.2", "@octokit/plugin-paginate-rest": "11.3.1", @@ -3452,6 +3680,7 @@ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.5.0.tgz", "integrity": "sha512-HdqWTf5Z3qwDVlzCrP8UJquMwunpDiMPt5er+QjGzL4hqr/vBVY/MauQgS1xWxCDT1oMx1EULyqxncdCY/NVSQ==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/openapi-types": "^22.2.0" } @@ -3461,6 +3690,7 @@ "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.8.tgz", "integrity": "sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA==", "dev": true, + "license": "MIT", "dependencies": { "asn1js": "^3.0.5", "pvtsutils": "^1.3.5", @@ -3472,6 +3702,7 @@ "resolved": "https://registry.npmjs.org/@peculiar/json-schema/-/json-schema-1.1.12.tgz", "integrity": "sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.0" }, @@ -3484,6 +3715,7 @@ "resolved": "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.5.0.tgz", "integrity": "sha512-BRs5XUAwiyCDQMsVA9IDvDa7UBR9gAvPHgugOeGng3YN6vJ9JYonyDc0lNczErgtCWtucjR5N7VtaonboD/ezg==", "dev": true, + "license": "MIT", "dependencies": { "@peculiar/asn1-schema": "^2.3.8", "@peculiar/json-schema": "^1.1.12", @@ -3500,6 +3732,7 @@ "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.44.1.tgz", "integrity": "sha512-1hZ4TNvD5z9VuhNJ/walIjvMVvYkZKf71axoF/uiAqpntQJXpG64dlXhoDXE3OczPuTuvjf/M5KWFg5VAVUS3Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "playwright": "1.44.1" }, @@ -3514,13 +3747,15 @@ "version": "1.0.0-next.25", "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz", "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@popperjs/core": { "version": "2.11.8", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", "dev": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" @@ -3530,13 +3765,15 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/@remirror/core-constants/-/core-constants-2.0.2.tgz", "integrity": "sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@remirror/core-helpers": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@remirror/core-helpers/-/core-helpers-3.0.0.tgz", "integrity": "sha512-tusEgQJIqg4qKj6HSBUFcyRnWnziw3neh4T9wOmsPGHFC3w9kl5KSrDb9UAgE8uX6y32FnS7vJ955mWOl3n50A==", "dev": true, + "license": "MIT", "dependencies": { "@remirror/core-constants": "^2.0.2", "@remirror/types": "^1.0.1", @@ -3558,6 +3795,7 @@ "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz", "integrity": "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } @@ -3567,6 +3805,7 @@ "resolved": "https://registry.npmjs.org/@remirror/types/-/types-1.0.1.tgz", "integrity": "sha512-VlZQxwGnt1jtQ18D6JqdIF+uFZo525WEqrfp9BOc3COPpK4+AWCgdnAWL+ho6imWcoINlGjR/+3b6y5C1vBVEA==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^2.19.0" } @@ -3576,6 +3815,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=12.20" }, @@ -3587,13 +3827,15 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/@repeaterjs/repeater/-/repeater-3.0.6.tgz", "integrity": "sha512-Javneu5lsuhwNCryN+pXH93VPQ8g0dBX7wItHFgYiwQmzE1sVdg5tWHiOgHywzL2W21XQopa7IwIEnNbmeUJYA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@rollup/plugin-inject": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz", "integrity": "sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^5.0.1", "estree-walker": "^2.0.2", @@ -3616,6 +3858,7 @@ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", @@ -3641,6 +3884,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -3654,6 +3898,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -3667,6 +3912,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -3680,6 +3926,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -3693,6 +3940,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -3706,6 +3954,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -3719,6 +3968,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -3732,6 +3982,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -3745,6 +3996,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -3758,6 +4010,7 @@ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -3771,6 +4024,7 @@ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -3784,6 +4038,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -3797,6 +4052,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -3810,6 +4066,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -3823,6 +4080,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -3836,95 +4094,102 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@sentry-internal/feedback": { - "version": "7.116.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.116.0.tgz", - "integrity": "sha512-tmfO+RTCrhIWMs3yg8X0axhbjWRZLsldSfoXBgfjNCk/XwkYiVGp7WnYVbb+IO+01mHCsis9uaYOBggLgFRB5Q==", + "version": "7.117.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.117.0.tgz", + "integrity": "sha512-4X+NnnY17W74TymgLFH7/KPTVYpEtoMMJh8HzVdCmHTOE6j32XKBeBMRaXBhmNYmEgovgyRKKf2KvtSfgw+V1Q==", "dev": true, + "license": "MIT", "dependencies": { - "@sentry/core": "7.116.0", - "@sentry/types": "7.116.0", - "@sentry/utils": "7.116.0" + "@sentry/core": "7.117.0", + "@sentry/types": "7.117.0", + "@sentry/utils": "7.117.0" }, "engines": { "node": ">=12" } }, "node_modules/@sentry-internal/replay-canvas": { - "version": "7.116.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.116.0.tgz", - "integrity": "sha512-Sy0ydY7A97JY/IFTIj8U25kHqR5rL9oBk3HFE5EK9Phw56irVhHzEwLWae0jlFeCQEWoBYqpPgO5vXsaYzrWvw==", + "version": "7.117.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.117.0.tgz", + "integrity": "sha512-7hjIhwEcoosr+BIa0AyEssB5xwvvlzUpvD5fXu4scd3I3qfX8gdnofO96a8r+LrQm3bSj+eN+4TfKEtWb7bU5A==", "dev": true, + "license": "MIT", "dependencies": { - "@sentry/core": "7.116.0", - "@sentry/replay": "7.116.0", - "@sentry/types": "7.116.0", - "@sentry/utils": "7.116.0" + "@sentry/core": "7.117.0", + "@sentry/replay": "7.117.0", + "@sentry/types": "7.117.0", + "@sentry/utils": "7.117.0" }, "engines": { "node": ">=12" } }, "node_modules/@sentry-internal/tracing": { - "version": "7.116.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.116.0.tgz", - "integrity": "sha512-y5ppEmoOlfr77c/HqsEXR72092qmGYS4QE5gSz5UZFn9CiinEwGfEorcg2xIrrCuU7Ry/ZU2VLz9q3xd04drRA==", + "version": "7.117.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.117.0.tgz", + "integrity": "sha512-fAIyijNvKBZNA12IcKo+dOYDRTNrzNsdzbm3DP37vJRKVQu19ucqP4Y6InvKokffDP2HZPzFPDoGXYuXkDhUZg==", "dev": true, + "license": "MIT", "dependencies": { - "@sentry/core": "7.116.0", - "@sentry/types": "7.116.0", - "@sentry/utils": "7.116.0" + "@sentry/core": "7.117.0", + "@sentry/types": "7.117.0", + "@sentry/utils": "7.117.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/browser": { - "version": "7.116.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.116.0.tgz", - "integrity": "sha512-2aosATT5qE+QLKgTmyF9t5Emsluy1MBczYNuPmLhDxGNfB+MA86S8u7Hb0CpxdwjS0nt14gmbiOtJHoeAF3uTw==", + "version": "7.117.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.117.0.tgz", + "integrity": "sha512-29X9HlvDEKIaWp6XKlNPPSNND0U6P/ede5WA2nVHfs1zJLWdZ7/ijuMc0sH/CueEkqHe/7gt94hBcI7HOU/wSw==", "dev": true, + "license": "MIT", "dependencies": { - "@sentry-internal/feedback": "7.116.0", - "@sentry-internal/replay-canvas": "7.116.0", - "@sentry-internal/tracing": "7.116.0", - "@sentry/core": "7.116.0", - "@sentry/integrations": "7.116.0", - "@sentry/replay": "7.116.0", - "@sentry/types": "7.116.0", - "@sentry/utils": "7.116.0" + "@sentry-internal/feedback": "7.117.0", + "@sentry-internal/replay-canvas": "7.117.0", + "@sentry-internal/tracing": "7.117.0", + "@sentry/core": "7.117.0", + "@sentry/integrations": "7.117.0", + "@sentry/replay": "7.117.0", + "@sentry/types": "7.117.0", + "@sentry/utils": "7.117.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/core": { - "version": "7.116.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.116.0.tgz", - "integrity": "sha512-J6Wmjjx+o7RwST0weTU1KaKUAlzbc8MGkJV1rcHM9xjNTWTva+nrcCM3vFBagnk2Gm/zhwv3h0PvWEqVyp3U1Q==", + "version": "7.117.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.117.0.tgz", + "integrity": "sha512-1XZ4/d/DEwnfM2zBMloXDwX+W7s76lGKQMgd8bwgPJZjjEztMJ7X0uopKAGwlQcjn242q+hsCBR6C+fSuI5kvg==", "dev": true, + "license": "MIT", "dependencies": { - "@sentry/types": "7.116.0", - "@sentry/utils": "7.116.0" + "@sentry/types": "7.117.0", + "@sentry/utils": "7.117.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/integrations": { - "version": "7.116.0", - "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.116.0.tgz", - "integrity": "sha512-UZb60gaF+7veh1Yv79RiGvgGYOnU6xA97H+hI6tKgc1uT20YpItO4X56Vhp0lvyEyUGFZzBRRH1jpMDPNGPkqw==", + "version": "7.117.0", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.117.0.tgz", + "integrity": "sha512-U3suSZysmU9EiQqg0ga5CxveAyNbi9IVdsapMDq5EQGNcVDvheXtULs+BOc11WYP3Kw2yWB38VDqLepfc/Fg2g==", "dev": true, + "license": "MIT", "dependencies": { - "@sentry/core": "7.116.0", - "@sentry/types": "7.116.0", - "@sentry/utils": "7.116.0", + "@sentry/core": "7.117.0", + "@sentry/types": "7.117.0", + "@sentry/utils": "7.117.0", "localforage": "^1.8.1" }, "engines": { @@ -3932,36 +4197,39 @@ } }, "node_modules/@sentry/replay": { - "version": "7.116.0", - "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.116.0.tgz", - "integrity": "sha512-OrpDtV54pmwZuKp3g7PDiJg6ruRMJKOCzK08TF7IPsKrr4x4UQn56rzMOiABVuTjuS8lNfAWDar6c6vxXFz5KA==", + "version": "7.117.0", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.117.0.tgz", + "integrity": "sha512-V4DfU+x4UsA4BsufbQ8jHYa5H0q5PYUgso2X1PR31g1fpx7yiYguSmCfz1UryM6KkH92dfTnqXapDB44kXOqzQ==", "dev": true, + "license": "MIT", "dependencies": { - "@sentry-internal/tracing": "7.116.0", - "@sentry/core": "7.116.0", - "@sentry/types": "7.116.0", - "@sentry/utils": "7.116.0" + "@sentry-internal/tracing": "7.117.0", + "@sentry/core": "7.117.0", + "@sentry/types": "7.117.0", + "@sentry/utils": "7.117.0" }, "engines": { "node": ">=12" } }, "node_modules/@sentry/types": { - "version": "7.116.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.116.0.tgz", - "integrity": "sha512-QCCvG5QuQrwgKzV11lolNQPP2k67Q6HHD9vllZ/C4dkxkjoIym8Gy+1OgAN3wjsR0f/kG9o5iZyglgNpUVRapQ==", + "version": "7.117.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.117.0.tgz", + "integrity": "sha512-5dtdulcUttc3F0Te7ekZmpSp/ebt/CA71ELx0uyqVGjWsSAINwskFD77sdcjqvZWek//WjiYX1+GRKlpJ1QqsA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@sentry/utils": { - "version": "7.116.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.116.0.tgz", - "integrity": "sha512-Vn9fcvwTq91wJvCd7WTMWozimqMi+dEZ3ie3EICELC2diONcN16ADFdzn65CQQbYwmUzRjN9EjDN2k41pKZWhQ==", + "version": "7.117.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.117.0.tgz", + "integrity": "sha512-KkcLY8643SGBiDyPvMQOubBkwVX5IPknMHInc7jYC8pDVncGp7C65Wi506bCNPpKCWspUd/0VDNWOOen51/qKA==", "dev": true, + "license": "MIT", "dependencies": { - "@sentry/types": "7.116.0" + "@sentry/types": "7.117.0" }, "engines": { "node": ">=8" @@ -3972,6 +4240,7 @@ "resolved": "https://registry.npmjs.org/@solid-primitives/event-listener/-/event-listener-2.3.3.tgz", "integrity": "sha512-DAJbl+F0wrFW2xmcV8dKMBhk9QLVLuBSW+TR4JmIfTaObxd13PuL7nqaXnaYKDWOYa6otB00qcCUIGbuIhSUgQ==", "dev": true, + "license": "MIT", "dependencies": { "@solid-primitives/utils": "^6.2.3" }, @@ -3984,6 +4253,7 @@ "resolved": "https://registry.npmjs.org/@solid-primitives/media/-/media-2.2.3.tgz", "integrity": "sha512-xhKaTJjH6e65OL706/hA38WWitafbJCm/Zpv7qAn4cy/cgxZ39Cl0bPdYzZhUlkJvTt8YVT0IBcOBLKlJVaPRg==", "dev": true, + "license": "MIT", "dependencies": { "@solid-primitives/event-listener": "^2.2.13", "@solid-primitives/rootless": "^1.4.1", @@ -3999,6 +4269,7 @@ "resolved": "https://registry.npmjs.org/@solid-primitives/memo/-/memo-1.2.4.tgz", "integrity": "sha512-kPV2hWoR01ylX1JCh6V+AoO4i2twAqMBA00c1IiUVxNCPnWXfo9pYGn2xSeW4xTleqfY/nJGWjxsyX9HFSMXrw==", "dev": true, + "license": "MIT", "dependencies": { "@solid-primitives/scheduled": "^1.3.2", "@solid-primitives/utils": "^6.0.0" @@ -4012,6 +4283,7 @@ "resolved": "https://registry.npmjs.org/@solid-primitives/pagination/-/pagination-0.2.10.tgz", "integrity": "sha512-HVRW8NgNkjB2PPg4f4E4ava+PI6AO8INQpsARylzQcxeBW+RMY5bYJoSIQ2QSp+hHiJhNlYozdBdLUY39Vxtxg==", "dev": true, + "license": "MIT", "dependencies": { "@solid-primitives/utils": "^6.2.2" }, @@ -4024,6 +4296,7 @@ "resolved": "https://registry.npmjs.org/@solid-primitives/refs/-/refs-1.0.8.tgz", "integrity": "sha512-+jIsWG8/nYvhaCoG2Vg6CJOLgTmPKFbaCrNQKWfChalgUf9WrVxWw0CdJb3yX15n5lUcQ0jBo6qYtuVVmBLpBw==", "dev": true, + "license": "MIT", "dependencies": { "@solid-primitives/utils": "^6.2.3" }, @@ -4036,6 +4309,7 @@ "resolved": "https://registry.npmjs.org/@solid-primitives/rootless/-/rootless-1.4.5.tgz", "integrity": "sha512-GFJE9GC3ojx0aUKqAUZmQPyU8fOVMtnVNrkdk2yS4kd17WqVSpXpoTmo9CnOwA+PG7FTzdIkogvfLQSLs4lrww==", "dev": true, + "license": "MIT", "dependencies": { "@solid-primitives/utils": "^6.2.3" }, @@ -4048,6 +4322,7 @@ "resolved": "https://registry.npmjs.org/@solid-primitives/scheduled/-/scheduled-1.4.3.tgz", "integrity": "sha512-HfWN5w7b7FEc6VPLBKnnE302h90jsLMuR28Fcf7neRGGf8jBj6wm6/UFQ00VlKexHFMR6KQ2u4VBh5a1ZcqM8g==", "dev": true, + "license": "MIT", "peerDependencies": { "solid-js": "^1.6.12" } @@ -4057,6 +4332,7 @@ "resolved": "https://registry.npmjs.org/@solid-primitives/share/-/share-2.0.4.tgz", "integrity": "sha512-eoKrIV3Kc1cGNgV5DxTD1ATPsdsGJM9PgtEO+lc/mM3WsL5ljdMkxsYfBJm/EVwPYTckob5ZdRJCJ/r1cy9ZxA==", "dev": true, + "license": "MIT", "peerDependencies": { "solid-js": "^1.6.12" } @@ -4066,6 +4342,7 @@ "resolved": "https://registry.npmjs.org/@solid-primitives/static-store/-/static-store-0.0.4.tgz", "integrity": "sha512-NcLtDNA6H+Z9LmqaUe4SKfMx0YbszIMXEqfV15cB34t5XyEeOM5TihYwsVJ/dpkmpHYzflm0SwAL+P9uwyzvWQ==", "dev": true, + "license": "MIT", "dependencies": { "@solid-primitives/utils": "^6.2.0" }, @@ -4074,10 +4351,11 @@ } }, "node_modules/@solid-primitives/storage": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@solid-primitives/storage/-/storage-3.5.0.tgz", - "integrity": "sha512-AqU3vrXz8XlxOgJIiP+oQxE/vFchGf4Qe7E5Xfa02DJdF9rD8CtiTmVZDBU08ViS7g0Nwc4IpStHvVO0jBMalQ==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@solid-primitives/storage/-/storage-3.7.1.tgz", + "integrity": "sha512-tAmZKQg44RjDjrtWO/5hCOrktQspn/yVV0ySb7yKr7B3CVQlTQtldw3W8UetytJSD9podb9cplvvkq75fgpB1Q==", "dev": true, + "license": "MIT", "dependencies": { "@solid-primitives/utils": "^6.2.3" }, @@ -4099,6 +4377,7 @@ "resolved": "https://registry.npmjs.org/@solid-primitives/transition-group/-/transition-group-1.0.5.tgz", "integrity": "sha512-G3FuqvL13kQ55WzWPX2ewiXdZ/1iboiX53195sq7bbkDbXqP6TYKiadwEdsaDogW5rPnPYAym3+xnsNplQJRKQ==", "dev": true, + "license": "MIT", "peerDependencies": { "solid-js": "^1.6.12" } @@ -4108,6 +4387,7 @@ "resolved": "https://registry.npmjs.org/@solid-primitives/upload/-/upload-0.0.115.tgz", "integrity": "sha512-CWTXz28mmRGvZV90IzViNtBAKC6cnO2WSNb3UjvbkPRrtxlHrj/ewZwLRhuLSu6JzdY/c+rHi1j24v7H0SrdXg==", "dev": true, + "license": "MIT", "dependencies": { "@solid-primitives/utils": "^6.2.2" }, @@ -4120,6 +4400,7 @@ "resolved": "https://registry.npmjs.org/@solid-primitives/utils/-/utils-6.2.3.tgz", "integrity": "sha512-CqAwKb2T5Vi72+rhebSsqNZ9o67buYRdEJrIFzRXz3U59QqezuuxPsyzTSVCacwS5Pf109VRsgCJQoxKRoECZQ==", "dev": true, + "license": "MIT", "peerDependencies": { "solid-js": "^1.6.12" } @@ -4129,6 +4410,7 @@ "resolved": "https://registry.npmjs.org/@thisbeyond/solid-select/-/solid-select-0.14.0.tgz", "integrity": "sha512-ecq4U3Vnc/nJbU84ARuPg2scNuYt994ljF5AmBlzuZW87x43mWiGJ5hEWufIJJMpDT6CcnCIx/xbrdDkaDEHQw==", "dev": true, + "license": "MIT", "peerDependencies": { "solid-js": "^1.5" } @@ -4138,6 +4420,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.4.0.tgz", "integrity": "sha512-YJSahk8pkxpCs8SflCZfTnJpE7IPyUWIylfgXM2DefjRQa5DZ+c6sNY0s/zbxKYFQ6AuHVX40r9pCfcqHChGxQ==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4151,6 +4434,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.4.0.tgz", "integrity": "sha512-nJJy4KsPgQqWTTDOWzFRdjCfG5+QExfZj44dulgDFNh+E66xhamnbM70PklllXJgEcge7xmT5oKM0gKls5XgFw==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4164,6 +4448,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.4.0.tgz", "integrity": "sha512-csnW6hMDEHoRfxcPRLSqeJn+j35Lgtt1YRiOwn7DlS66sAECGRuoGfCvQSPij0TCDp4VCR9if5Sf8EymhnQumQ==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4177,6 +4462,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.4.0.tgz", "integrity": "sha512-s99HmttUtpW3rScWq8rqk4+CGCwergNZbHLTkF6Rp6TSboMwfp+rwL5Q/JkcAG9KGLso1vGyXKbt1xHOvm8zMw==", "dev": true, + "license": "MIT", "dependencies": { "tippy.js": "^6.3.7" }, @@ -4194,6 +4480,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.4.0.tgz", "integrity": "sha512-9S5DLIvFRBoExvmZ+/ErpTvs4Wf1yOEs8WXlKYUCcZssK7brTFj99XDwpHFA29HKDwma5q9UHhr2OB2o0JYAdw==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4207,6 +4494,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/extension-character-count/-/extension-character-count-2.4.0.tgz", "integrity": "sha512-IA3Fubvag5N/7m2xS/T8D1nH26UyebBL9CtZ3/4de4faKgvDQLlILsSI2Hefi7j7rUCYCYzgF2S0Gny+Z76ulw==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4221,6 +4509,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/extension-collaboration/-/extension-collaboration-2.4.0.tgz", "integrity": "sha512-achU+GU9tqxn3zsU61CbwWrCausf0U23MJIpo8vnywOIx6E955by6okHEHoUazLIGVFXVc5DBzBP7bf+Snzk0Q==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4236,6 +4525,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/extension-collaboration-cursor/-/extension-collaboration-cursor-2.4.0.tgz", "integrity": "sha512-BTVy9FCTGdHxYieJ4lteVLrRY5qAPQyfunhMwakVf1NT3iU9quE6CaeaIwt6wEDJPMPPKzOHg1/ltSz9nIDe4A==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4250,6 +4540,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.4.0.tgz", "integrity": "sha512-3jRodQJZDGbXlRPERaloS+IERg/VwzpC1IO6YSJR9jVIsBO6xC29P3cKTQlg1XO7p6ZH/0ksK73VC5BzzTwoHg==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4263,6 +4554,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.4.0.tgz", "integrity": "sha512-c46HoG2PEEpSZv5rmS5UX/lJ6/kP1iVO0Ax+6JrNfLEIiDULUoi20NqdjolEa38La2VhWvs+o20OviiTOKEE9g==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4277,6 +4569,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-2.4.0.tgz", "integrity": "sha512-vLb9v+htbHhXyty0oaXjT3VC8St4xuGSHWUB9GuAJAQ+NajIO6rBPbLUmm9qM0Eh2zico5mpSD1Qtn5FM6xYzg==", "dev": true, + "license": "MIT", "dependencies": { "tippy.js": "^6.3.7" }, @@ -4294,6 +4587,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/extension-focus/-/extension-focus-2.4.0.tgz", "integrity": "sha512-41P51OImJzvp0zPUudsDPOGIIQkFUK9Yew8MVdtA3EIWkHOl8BZN/X3E/fX9sxzY6WPGgZD0UBRk7f9EA9X5JQ==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4308,6 +4602,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.4.0.tgz", "integrity": "sha512-F4y/0J2lseohkFUw9P2OpKhrJ6dHz69ZScABUvcHxjznJLd6+0Zt7014Lw5PA8/m2d/w0fX8LZQ88pZr4quZPQ==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4322,6 +4617,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.4.0.tgz", "integrity": "sha512-3+Z6zxevtHza5IsDBZ4lZqvNR3Kvdqwxq/QKCKu9UhJN1DUjsg/l1Jn2NilSQ3NYkBYh2yJjT8CMo9pQIu776g==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4335,6 +4631,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.4.0.tgz", "integrity": "sha512-fYkyP/VMo7YHO76YVrUjd95Qeo0cubWn/Spavmwm1gLTHH/q7xMtbod2Z/F0wd6QHnc7+HGhO7XAjjKWDjldaw==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4348,6 +4645,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/extension-highlight/-/extension-highlight-2.4.0.tgz", "integrity": "sha512-p2I/CaMrs6hzpj/dSw6UNobOWTV38yTjPK+B4ShJQ7IN2u/C82KOTOeFfJoFd9KykmpVOVW3w3nKG3ad0HXPuQ==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4361,6 +4659,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.4.0.tgz", "integrity": "sha512-gr5qsKAXEVGr1Lyk1598F7drTaEtAxqZiuuSwTCzZzkiwgEQsWMWTWc9F8FlneCEaqe1aIYg6WKWlmYPaFwr0w==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4375,6 +4674,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.4.0.tgz", "integrity": "sha512-yDgxy+YxagcEsBbdWvbQiXYxsv3noS1VTuGwc9G7ZK9xPmBHJ5y0agOkB7HskwsZvJHoaSqNRsh7oZTkf0VR3g==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4389,6 +4689,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/extension-image/-/extension-image-2.4.0.tgz", "integrity": "sha512-NIVhRPMO/ONo8OywEd+8zh0Q6Q7EbFHtBxVsvfOKj9KtZkaXQfUO4MzONTyptkvAchTpj9pIzeaEY5fyU87gFA==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4402,6 +4703,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.4.0.tgz", "integrity": "sha512-aaW/L9q+KNHHK+X73MPloHeIsT191n3VLd3xm6uUcFDnUNvzYJ/q65/1ZicdtCaOLvTutxdrEvhbkrVREX6a8g==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4415,6 +4717,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-2.4.0.tgz", "integrity": "sha512-r3PjT0bjSKAorHAEBPA0icSMOlqALbxVlWU9vAc+Q3ndzt7ht0CTPNewzFF9kjzARABVt1cblXP/2+c0qGzcsg==", "dev": true, + "license": "MIT", "dependencies": { "linkifyjs": "^4.1.0" }, @@ -4432,6 +4735,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.4.0.tgz", "integrity": "sha512-reUVUx+2cI2NIAqMZhlJ9uK/+zvRzm1GTmlU2Wvzwc7AwLN4yemj6mBDsmBLEXAKPvitfLh6EkeHaruOGymQtg==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4445,6 +4749,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.4.0.tgz", "integrity": "sha512-Zo0c9M0aowv+2+jExZiAvhCB83GZMjZsxywmuOrdUbq5EGYKb7q8hDyN3hkrktVHr9UPXdPAYTmLAHztTOHYRA==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4458,6 +4763,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.4.0.tgz", "integrity": "sha512-+yse0Ow67IRwcACd9K/CzBcxlpr9OFnmf0x9uqpaWt1eHck1sJnti6jrw5DVVkyEBHDh/cnkkV49gvctT/NyCw==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4471,6 +4777,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/extension-placeholder/-/extension-placeholder-2.4.0.tgz", "integrity": "sha512-SmWOjgWpmhFt0BPOnL65abCUH0wS5yksUJgtANn5bQoHF4HFSsyl7ETRmgf0ykxdjc7tzOg31FfpWVH4wzKSYg==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4485,6 +4792,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.4.0.tgz", "integrity": "sha512-pE1uN/fQPOMS3i+zxPYMmPmI3keubnR6ivwM+KdXWOMnBiHl9N4cNpJgq1n2eUUGKLurC2qrQHpnVyGAwBS6Vg==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4498,6 +4806,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.4.0.tgz", "integrity": "sha512-LV0bvE+VowE8IgLca7pM8ll7quNH+AgEHRbSrsI3SHKDCYB9gTHMjWaAkgkUVaO1u0IfCrjnCLym/PqFKa+vvg==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4511,6 +4820,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-2.4.0.tgz", "integrity": "sha512-guWojb7JxUwLz4OKzwNExJwOkhZjgw/ttkXCMBT0PVe55k998MMYe1nvN0m2SeTW9IxurEPtScH4kYJ0XuSm8Q==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4524,6 +4834,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/extension-youtube/-/extension-youtube-2.4.0.tgz", "integrity": "sha512-Ew6Oik9DaqP0xgQSUIWwozqeToJVOY4nqjRoKExGRuLdzgZeS+SmEA22ITBMcnZSJj8XBMgGBLcCWi+A7x1KAg==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4537,6 +4848,7 @@ "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.4.0.tgz", "integrity": "sha512-B1HMEqGS4MzIVXnpgRZDLm30mxDWj51LkBT/if1XD+hj5gm8B9Q0c84bhvODX6KIs+c6z+zsY9VkVu8w9Yfgxg==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "prosemirror-changeset": "^2.2.1", @@ -4568,6 +4880,7 @@ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", @@ -4581,6 +4894,7 @@ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.0.0" } @@ -4590,6 +4904,7 @@ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, + "license": "MIT", "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" @@ -4600,6 +4915,7 @@ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.20.7" } @@ -4608,25 +4924,29 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/js-cookie": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-3.0.6.tgz", "integrity": "sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/js-yaml": { "version": "4.0.9", "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz", "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { "version": "20.14.2", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", "dev": true, + "license": "MIT", "dependencies": { "undici-types": "~5.26.4" } @@ -4635,25 +4955,29 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/object.omit/-/object.omit-3.0.3.tgz", "integrity": "sha512-xrq4bQTBGYY2cw+gV4PzoG2Lv3L0pjZ1uXStRRDQoATOYW1lCsFQHhQ+OkPhIcQoqLjAq7gYif7D14Qaa6Zbew==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/object.pick": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/@types/object.pick/-/object.pick-1.3.4.tgz", "integrity": "sha512-5PjwB0uP2XDp3nt5u5NJAG2DORHIRClPzWT/TTZhJ2Ekwe8M5bA9tvPdi9NO/n2uvu2/ictat8kgqvLfcIE1SA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/throttle-debounce": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@types/throttle-debounce/-/throttle-debounce-2.1.0.tgz", "integrity": "sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/ws": { "version": "8.5.10", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -4663,6 +4987,7 @@ "resolved": "https://registry.npmjs.org/@urql/core/-/core-4.2.3.tgz", "integrity": "sha512-DJ9q9+lcs5JL8DcU2J3NqsgeXYJva+1+Qt8HU94kzTPqVOIRRA7ouvy4ksUfPY+B5G2PQ+vLh+JJGyZCNXv0cg==", "dev": true, + "license": "MIT", "dependencies": { "@0no-co/graphql.web": "^1.0.1", "wonka": "^6.3.2" @@ -4673,6 +4998,7 @@ "resolved": "https://registry.npmjs.org/@urql/devtools/-/devtools-2.0.3.tgz", "integrity": "sha512-TktPLiBS9LcBPHD6qcnb8wqOVcg3Bx0iCtvQ80uPpfofwwBGJmqnQTjUdEFU6kwaLOFZULQ9+Uo4831G823mQw==", "dev": true, + "license": "MIT", "dependencies": { "wonka": ">= 4.0.9" }, @@ -4685,13 +5011,15 @@ "version": "0.0.3", "resolved": "https://registry.npmjs.org/@whatwg-node/events/-/events-0.0.3.tgz", "integrity": "sha512-IqnKIDWfXBJkvy/k6tzskWTc2NK3LcqHlb+KHGCrjOCH4jfQckRX0NAiIcC/vIqQkzLYw2r2CTSwAxcrtcD6lA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@whatwg-node/fetch": { "version": "0.8.8", "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.8.8.tgz", "integrity": "sha512-CdcjGC2vdKhc13KKxgsc6/616BQ7ooDIgPeTuAiE8qfCnS0mGzcfCOoZXypQSz73nxI+GWc7ZReIAVhxoE1KCg==", "dev": true, + "license": "MIT", "dependencies": { "@peculiar/webcrypto": "^1.4.0", "@whatwg-node/node-fetch": "^0.3.6", @@ -4705,6 +5033,7 @@ "resolved": "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.3.6.tgz", "integrity": "sha512-w9wKgDO4C95qnXZRwZTfCmLWqyRnooGjcIwG0wADWjw9/HN0p7dtvtgSvItZtUyNteEvgTrd8QojNEqV6DAGTA==", "dev": true, + "license": "MIT", "dependencies": { "@whatwg-node/events": "^0.0.3", "busboy": "^1.6.0", @@ -4717,13 +5046,15 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", + "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -4736,6 +5067,7 @@ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.3.4" }, @@ -4748,6 +5080,7 @@ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, + "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -4761,6 +5094,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", @@ -4777,6 +5111,7 @@ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, @@ -4792,6 +5127,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -4801,6 +5137,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -4813,6 +5150,7 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -4825,13 +5163,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "license": "Python-2.0" }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -4840,13 +5180,15 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/asn1.js": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", "dev": true, + "license": "MIT", "dependencies": { "bn.js": "^4.0.0", "inherits": "^2.0.1", @@ -4857,13 +5199,15 @@ "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/asn1js": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz", "integrity": "sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "pvtsutils": "^1.3.2", "pvutils": "^1.1.3", @@ -4878,6 +5222,7 @@ "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "is-nan": "^1.3.2", @@ -4891,6 +5236,7 @@ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -4898,13 +5244,15 @@ "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" }, "node_modules/at-least-node": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true, + "license": "ISC", "engines": { "node": ">= 4.0.0" } @@ -4914,6 +5262,7 @@ "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-4.0.0.tgz", "integrity": "sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -4926,6 +5275,7 @@ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, + "license": "MIT", "dependencies": { "possible-typed-array-names": "^1.0.0" }, @@ -4940,6 +5290,7 @@ "version": "1.7.2", "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -4951,6 +5302,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-jsx-dom-expressions/-/babel-plugin-jsx-dom-expressions-0.37.21.tgz", "integrity": "sha512-WbQo1NQ241oki8bYasVzkMXOTSIri5GO/K47rYJb2ZBh8GaPUEWiWbMV3KwXz+96eU2i54N6ThzjQG/f5n8Azw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-module-imports": "7.18.6", "@babel/plugin-syntax-jsx": "^7.18.6", @@ -4967,6 +5319,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.18.6" }, @@ -4978,13 +5331,15 @@ "version": "7.0.0-beta.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/babel-preset-fbjs": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==", "dev": true, + "license": "MIT", "dependencies": { "@babel/plugin-proposal-class-properties": "^7.0.0", "@babel/plugin-proposal-object-rest-spread": "^7.0.0", @@ -5023,6 +5378,7 @@ "resolved": "https://registry.npmjs.org/babel-preset-solid/-/babel-preset-solid-1.8.17.tgz", "integrity": "sha512-s/FfTZOeds0hYxYqce90Jb+0ycN2lrzC7VP1k1JIn3wBqcaexDKdYi6xjB+hMNkL+Q6HobKbwsriqPloasR9LA==", "dev": true, + "license": "MIT", "dependencies": { "babel-plugin-jsx-dom-expressions": "^0.37.20" }, @@ -5034,12 +5390,14 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/base-64": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz", - "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==" + "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==", + "license": "MIT" }, "node_modules/base64-js": { "version": "1.5.1", @@ -5059,19 +5417,22 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/before-after-hook": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -5084,6 +5445,7 @@ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, + "license": "MIT", "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -5094,7 +5456,8 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/bootstrap": { "version": "5.3.2", @@ -5111,6 +5474,7 @@ "url": "https://opencollective.com/bootstrap" } ], + "license": "MIT", "peerDependencies": { "@popperjs/core": "^2.11.8" } @@ -5120,6 +5484,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -5130,6 +5495,7 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -5141,13 +5507,15 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/browser-resolve": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", "dev": true, + "license": "MIT", "dependencies": { "resolve": "^1.17.0" } @@ -5157,6 +5525,7 @@ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, + "license": "MIT", "dependencies": { "buffer-xor": "^1.0.3", "cipher-base": "^1.0.0", @@ -5171,6 +5540,7 @@ "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", "dev": true, + "license": "MIT", "dependencies": { "browserify-aes": "^1.0.4", "browserify-des": "^1.0.0", @@ -5182,6 +5552,7 @@ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", "dev": true, + "license": "MIT", "dependencies": { "cipher-base": "^1.0.1", "des.js": "^1.0.0", @@ -5194,6 +5565,7 @@ "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", "dev": true, + "license": "MIT", "dependencies": { "bn.js": "^5.0.0", "randombytes": "^2.0.1" @@ -5204,6 +5576,7 @@ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.3.tgz", "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==", "dev": true, + "license": "ISC", "dependencies": { "bn.js": "^5.2.1", "browserify-rsa": "^4.1.0", @@ -5224,13 +5597,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/browserify-sign/node_modules/readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -5245,13 +5620,15 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/browserify-sign/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } @@ -5260,21 +5637,23 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/browserify-zlib": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", "dev": true, + "license": "MIT", "dependencies": { "pako": "~1.0.5" } }, "node_modules/browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "version": "4.23.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", + "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", "dev": true, "funding": [ { @@ -5290,11 +5669,12 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", + "caniuse-lite": "^1.0.30001629", + "electron-to-chromium": "^1.4.796", "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" + "update-browserslist-db": "^1.0.16" }, "bin": { "browserslist": "cli.js" @@ -5308,6 +5688,7 @@ "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "node-int64": "^0.4.0" } @@ -5331,6 +5712,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -5340,19 +5722,22 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/busboy": { "version": "1.6.0", @@ -5371,6 +5756,7 @@ "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -5380,6 +5766,7 @@ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -5399,6 +5786,7 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -5408,6 +5796,7 @@ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", "dev": true, + "license": "MIT", "dependencies": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" @@ -5418,6 +5807,7 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -5427,14 +5817,15 @@ "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001628", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001628.tgz", - "integrity": "sha512-S3BnR4Kh26TBxbi5t5kpbcUlLJb9lhtDXISDPwOfI+JoC+ik0QksvkZtUVyikw3hjnkgkMPSJ8oIM9yMm9vflA==", + "version": "1.0.30001634", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001634.tgz", + "integrity": "sha512-fbBYXQ9q3+yp1q1gBk86tOFs4pyn/yxFm5ZNP18OXJDfA3txImOY9PhfxVggZ4vRHDqoU8NrKU81eN0OtzOgRA==", "dev": true, "funding": [ { @@ -5449,13 +5840,15 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/capital-case": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", "dev": true, + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3", @@ -5467,6 +5860,7 @@ "resolved": "https://registry.npmjs.org/case-anything/-/case-anything-2.1.13.tgz", "integrity": "sha512-zlOQ80VrQ2Ue+ymH5OuM/DlDq64mEm+B9UTdHULv5osUMD6HalNTblf2b1u/m6QecjsnOkBpqVZ+XPwIVsy7Ng==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.13" }, @@ -5479,6 +5873,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -5493,6 +5888,7 @@ "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", "dev": true, + "license": "MIT", "dependencies": { "camel-case": "^4.1.2", "capital-case": "^1.0.4", @@ -5513,6 +5909,7 @@ "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.15.tgz", "integrity": "sha512-3+GIFhk3sNuvFAJKU46o26OdzudQlPNBCu1ZQi3cMeMHhty1bhDxu2WrEilVNYaGvqUtR1VSigFcJOiS13dRhQ==", "dev": true, + "license": "MIT", "dependencies": { "change-case": "^4.1.2", "is-lower-case": "^2.0.2", @@ -5530,13 +5927,15 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -5567,6 +5966,7 @@ "url": "https://github.com/sponsors/sibiraj-s" } ], + "license": "MIT", "engines": { "node": ">=8" } @@ -5576,6 +5976,7 @@ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -5586,6 +5987,7 @@ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -5595,6 +5997,7 @@ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, + "license": "MIT", "dependencies": { "restore-cursor": "^3.1.0" }, @@ -5607,6 +6010,7 @@ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" }, @@ -5619,6 +6023,7 @@ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", "dev": true, + "license": "MIT", "dependencies": { "slice-ansi": "^3.0.0", "string-width": "^4.2.0" @@ -5635,6 +6040,7 @@ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", "dev": true, + "license": "ISC", "engines": { "node": ">= 10" } @@ -5644,6 +6050,7 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -5658,6 +6065,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -5673,6 +6081,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -5684,13 +6093,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -5708,6 +6119,7 @@ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8" } @@ -5717,6 +6129,7 @@ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -5726,6 +6139,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "1.1.3" } @@ -5734,24 +6148,28 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/colord": { "version": "2.9.3", "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/colorette": { "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -5764,6 +6182,7 @@ "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4.0.0" } @@ -5772,7 +6191,8 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/console-browserify": { "version": "1.2.0", @@ -5785,6 +6205,7 @@ "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", "dev": true, + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3", @@ -5795,25 +6216,29 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cosmiconfig": { "version": "8.3.6", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", "dev": true, + "license": "MIT", "dependencies": { "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", @@ -5840,6 +6265,7 @@ "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", "dev": true, + "license": "MIT", "dependencies": { "bn.js": "^4.1.0", "elliptic": "^6.5.3" @@ -5849,13 +6275,15 @@ "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/create-hash": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dev": true, + "license": "MIT", "dependencies": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", @@ -5869,6 +6297,7 @@ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, + "license": "MIT", "dependencies": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -5882,26 +6311,30 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/crelt": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/cropperjs": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/cropperjs/-/cropperjs-1.6.1.tgz", "integrity": "sha512-F4wsi+XkDHCOMrHMYjrTEE4QBOrsHHN5/2VsVAaRq8P7E5z7xQpT75S+f/9WikmBEailas3+yo+6zPIomW+NOA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cross-fetch": { "version": "3.1.8", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", "dev": true, + "license": "MIT", "dependencies": { "node-fetch": "^2.6.12" } @@ -5911,6 +6344,7 @@ "resolved": "https://registry.npmjs.org/cross-inspect/-/cross-inspect-1.0.0.tgz", "integrity": "sha512-4PFfn4b5ZN6FMNGSZlyb7wUhuN8wvj8t/VQHZdM4JsDcruGJ8L2kf9zao98QIrBPFCpdk27qst/AGTl7pL3ypQ==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.4.0" }, @@ -5923,6 +6357,7 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -5937,6 +6372,7 @@ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "dev": true, + "license": "MIT", "dependencies": { "browserify-cipher": "^1.0.0", "browserify-sign": "^4.0.0", @@ -5959,6 +6395,7 @@ "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.2.tgz", "integrity": "sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12 || >=16" } @@ -5968,6 +6405,7 @@ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", "dev": true, + "license": "MIT", "dependencies": { "mdn-data": "2.0.30", "source-map-js": "^1.0.1" @@ -5981,6 +6419,7 @@ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, + "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, @@ -5992,31 +6431,36 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/dash-get": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/dash-get/-/dash-get-1.0.2.tgz", "integrity": "sha512-4FbVrHDwfOASx7uQVxeiCTo7ggSdYZbqs8lH+WU6ViypPlDbe9y6IP5VVUDQBv9DcnyaiPT5XT0UWHgJ64zLeQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/dataloader": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.2.2.tgz", "integrity": "sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/debounce": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/debug": { "version": "4.3.5", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -6034,6 +6478,7 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6043,6 +6488,7 @@ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6052,6 +6498,7 @@ "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, + "license": "MIT", "dependencies": { "clone": "^1.0.2" }, @@ -6064,6 +6511,7 @@ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -6081,6 +6529,7 @@ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -6097,6 +6546,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -6106,6 +6556,7 @@ "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6.0" } @@ -6114,13 +6565,15 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/des.js": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" @@ -6131,6 +6584,7 @@ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -6140,6 +6594,7 @@ "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dev": true, + "license": "MIT", "dependencies": { "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", @@ -6150,13 +6605,15 @@ "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, + "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -6169,6 +6626,7 @@ "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.23.0.tgz", "integrity": "sha512-ArzcM/II1wCCujdCNyQjXrAFwS4mrLh4C7DZWlaI8mdh7h3BfKdNd3bKXITfl2PT9FtfQqaGvhi1vPRQPimjGA==", "dev": true, + "license": "Artistic-2.0", "engines": { "node": ">=10" }, @@ -6181,6 +6639,7 @@ "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "dev": true, + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -6191,6 +6650,7 @@ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=12" }, @@ -6203,21 +6663,24 @@ "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.3.tgz", "integrity": "sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/electron-to-chromium": { - "version": "1.4.790", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.790.tgz", - "integrity": "sha512-eVGeQxpaBYbomDBa/Mehrs28MdvCXfJmEFzaMFsv8jH/MJDLIylJN81eTJ5kvx7B7p18OiPK0BkC06lydEy63A==", - "dev": true + "version": "1.4.802", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.802.tgz", + "integrity": "sha512-TnTMUATbgNdPXVSHsxvNVSG0uEd6cSZsANjm8c9HbvflZVVn1yTRcmVXYT1Ma95/ssB/Dcd30AHweH2TE+dNpA==", + "dev": true, + "license": "ISC" }, "node_modules/elliptic": { "version": "6.5.5", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.5.tgz", "integrity": "sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==", "dev": true, + "license": "MIT", "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -6232,19 +6695,22 @@ "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, + "license": "BSD-2-Clause", "peer": true, "engines": { "node": ">=0.12" @@ -6258,6 +6724,7 @@ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -6267,6 +6734,7 @@ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, + "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } @@ -6276,6 +6744,7 @@ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.4" }, @@ -6288,6 +6757,7 @@ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -6296,7 +6766,8 @@ "version": "1.5.3", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.3.tgz", "integrity": "sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/esbuild": { "version": "0.17.19", @@ -6304,6 +6775,7 @@ "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -6340,6 +6812,7 @@ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -6349,6 +6822,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } @@ -6357,13 +6831,15 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.x" } @@ -6373,6 +6849,7 @@ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "dev": true, + "license": "MIT", "dependencies": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" @@ -6383,6 +6860,7 @@ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, + "license": "MIT", "dependencies": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", @@ -6397,6 +6875,7 @@ "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-11.0.0.tgz", "integrity": "sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20 || >= 14.13" }, @@ -6408,19 +6887,22 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz", "integrity": "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -6437,6 +6919,7 @@ "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.1.2.tgz", "integrity": "sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==", "dev": true, + "license": "MIT", "dependencies": { "fast-decode-uri-component": "^1.0.1" } @@ -6446,6 +6929,7 @@ "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==", "dev": true, + "license": "MIT", "dependencies": { "punycode": "^1.3.2" } @@ -6455,6 +6939,7 @@ "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4.9.1" } @@ -6464,6 +6949,7 @@ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } @@ -6473,6 +6959,7 @@ "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "bser": "2.1.1" } @@ -6482,6 +6969,7 @@ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", "dev": true, + "license": "MIT", "dependencies": { "cross-fetch": "^3.1.5", "fbjs-css-vars": "^1.0.0", @@ -6496,13 +6984,15 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/figures": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -6518,6 +7008,7 @@ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.0.0.tgz", "integrity": "sha512-6MgEugi8p2tiUhqO7GnPsmbCCzj0YRCwwaTbpGRyKZesjRSzkqkAE9fPp7V2yMs5hwfgbQLgdvSSkGNg1s5Uvw==", "dev": true, + "license": "MIT", "dependencies": { "flat-cache": "^5.0.0" }, @@ -6530,6 +7021,7 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -6542,6 +7034,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -6558,6 +7051,7 @@ "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "micromatch": "^4.0.2" } @@ -6567,6 +7061,7 @@ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-5.0.0.tgz", "integrity": "sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==", "dev": true, + "license": "MIT", "dependencies": { "flatted": "^3.3.1", "keyv": "^4.5.4" @@ -6579,7 +7074,8 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/follow-redirects": { "version": "1.15.6", @@ -6591,6 +7087,7 @@ "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -6605,6 +7102,7 @@ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, + "license": "MIT", "dependencies": { "is-callable": "^1.1.3" } @@ -6613,6 +7111,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -6627,6 +7126,7 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, + "license": "MIT", "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -6641,7 +7141,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.2", @@ -6649,6 +7150,7 @@ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -6662,6 +7164,7 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -6670,13 +7173,15 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/ga-gtag/-/ga-gtag-1.2.0.tgz", "integrity": "sha512-j9gxutMdpGMdwaX1SzOG31Ddm+IGFjeNf+N3Z5g+BBpS8FSXOALlrM+ORIGc/QKszGJEDlw+6PfIsJZICsqsGQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -6686,6 +7191,7 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -6695,6 +7201,7 @@ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", @@ -6715,6 +7222,7 @@ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -6735,6 +7243,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -6747,6 +7256,7 @@ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", "dev": true, + "license": "MIT", "dependencies": { "global-prefix": "^3.0.0" }, @@ -6759,6 +7269,7 @@ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "dev": true, + "license": "MIT", "dependencies": { "ini": "^1.3.5", "kind-of": "^6.0.2", @@ -6773,6 +7284,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -6785,6 +7297,7 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -6794,6 +7307,7 @@ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, + "license": "MIT", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -6813,13 +7327,15 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -6831,13 +7347,15 @@ "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/graphql": { "version": "16.8.1", "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.1.tgz", "integrity": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" } @@ -6847,6 +7365,7 @@ "resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-5.0.3.tgz", "integrity": "sha512-BNGZaoxIBkv9yy6Y7omvsaBUHOzfFcII3UN++tpH8MGOKFPFkCPZuwx09ggANMt8FgyWP1Od8SWPmrUEZca4NQ==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-tools/graphql-file-loader": "^8.0.0", "@graphql-tools/json-file-loader": "^8.0.0", @@ -6878,6 +7397,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.3.tgz", "integrity": "sha512-lIUdtK5hdofgCTu3aT0sOaHsYR37viUuIc0rwnnDXImbwFRcumyLMeZaM0t0I/fgxS6s6JMfu0rLD1Wz9pv1ng==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -6890,6 +7410,7 @@ "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-6.1.0.tgz", "integrity": "sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-typed-document-node/core": "^3.2.0", "cross-fetch": "^3.1.5" @@ -6903,6 +7424,7 @@ "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.1.0" }, @@ -6918,6 +7440,10 @@ "resolved": "https://registry.npmjs.org/graphql-ws/-/graphql-ws-5.16.0.tgz", "integrity": "sha512-Ju2RCU2dQMgSKtArPbEtsK5gNLnsQyTNIo/T7cZNp96niC1x0KdJNZV0TIoilceBPQwfb5itrGl8pkFeOUMl4A==", "dev": true, + "license": "MIT", + "workspaces": [ + "website" + ], "engines": { "node": ">=10" }, @@ -6930,6 +7456,7 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -6939,6 +7466,7 @@ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" }, @@ -6951,6 +7479,7 @@ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -6963,6 +7492,7 @@ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -6975,6 +7505,7 @@ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, + "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" }, @@ -6990,6 +7521,7 @@ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -7003,6 +7535,7 @@ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" @@ -7013,6 +7546,7 @@ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -7025,6 +7559,7 @@ "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", "dev": true, + "license": "MIT", "dependencies": { "capital-case": "^1.0.4", "tslib": "^2.0.3" @@ -7035,6 +7570,7 @@ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", "dev": true, + "license": "MIT", "dependencies": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", @@ -7045,13 +7581,15 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/html-tags": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -7064,6 +7602,7 @@ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" @@ -7076,13 +7615,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/https-proxy-agent": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.0.2", "debug": "4" @@ -7110,6 +7651,7 @@ "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" } ], + "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.6" } @@ -7119,6 +7661,7 @@ "resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-2.2.0.tgz", "integrity": "sha512-Z4sM7R6tzdLknSPER9GisEBxKPg5FkI07UrQniuroZmS15PHQrcCPLyuGKj8SS68tf+O2aEDYSUnmy1TZqZSbw==", "dev": true, + "license": "MIT", "dependencies": { "cross-fetch": "3.1.5" } @@ -7128,6 +7671,7 @@ "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", "dev": true, + "license": "MIT", "dependencies": { "node-fetch": "2.6.7" } @@ -7137,6 +7681,7 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dev": true, + "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -7157,6 +7702,7 @@ "resolved": "https://registry.npmjs.org/i18next-icu/-/i18next-icu-2.3.0.tgz", "integrity": "sha512-x+j7kd5nDJCfbU53uwsMfXD7ALPu5uv0bqjAMQ5nVvXRoj1L7gkmswKtM3XDWYo4YUHf1jznlhSdPyy0xEwU+Q==", "dev": true, + "license": "MIT", "peerDependencies": { "intl-messageformat": "^10.3.3" } @@ -7166,6 +7712,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -7176,7 +7723,8 @@ "node_modules/idb": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/idb/-/idb-8.0.0.tgz", - "integrity": "sha512-l//qvlAKGmQO31Qn7xdzagVPPaHTxXx199MhrAFuVBTPqydcPYBWjkrbv4Y0ktB+GmWOiwHl237UUOrLmQxLvw==" + "integrity": "sha512-l//qvlAKGmQO31Qn7xdzagVPPaHTxXx199MhrAFuVBTPqydcPYBWjkrbv4Y0ktB+GmWOiwHl237UUOrLmQxLvw==", + "license": "ISC" }, "node_modules/ieee754": { "version": "1.2.1", @@ -7196,13 +7744,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "BSD-3-Clause" }, "node_modules/ignore": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -7211,13 +7761,15 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/immutable": { "version": "3.7.6", "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz", "integrity": "sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.8.0" } @@ -7227,6 +7779,7 @@ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -7243,6 +7796,7 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -7252,6 +7806,7 @@ "resolved": "https://registry.npmjs.org/import-from/-/import-from-4.0.0.tgz", "integrity": "sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.2" }, @@ -7264,6 +7819,7 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } @@ -7273,6 +7829,7 @@ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -7283,6 +7840,7 @@ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -7292,19 +7850,22 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/inquirer": { "version": "8.2.6", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-escapes": "^4.2.1", "chalk": "^4.1.1", @@ -7331,6 +7892,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -7346,6 +7908,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -7362,6 +7925,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -7373,13 +7937,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/inquirer/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -7389,6 +7955,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -7401,6 +7968,7 @@ "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.14.tgz", "integrity": "sha512-IjC6sI0X7YRjjyVH9aUgdftcmZK7WXdHeil4KwbjDnRWjnVitKpAx3rr6t6di1joFp5188VqKcobOPA6mCLG/w==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@formatjs/ecma402-abstract": "2.0.0", "@formatjs/fast-memoize": "2.2.0", @@ -7413,6 +7981,7 @@ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "dev": true, + "license": "MIT", "dependencies": { "loose-envify": "^1.0.0" } @@ -7422,6 +7991,7 @@ "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", "dev": true, + "license": "MIT", "dependencies": { "is-relative": "^1.0.0", "is-windows": "^1.0.1" @@ -7435,6 +8005,7 @@ "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -7450,13 +8021,15 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, + "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -7469,6 +8042,7 @@ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -7481,6 +8055,7 @@ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, + "license": "MIT", "dependencies": { "hasown": "^2.0.0" }, @@ -7493,6 +8068,7 @@ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, + "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -7508,6 +8084,7 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, + "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4" }, @@ -7520,6 +8097,7 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -7529,6 +8107,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -7538,6 +8117,7 @@ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -7553,6 +8133,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -7565,6 +8146,7 @@ "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -7574,6 +8156,7 @@ "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-2.0.2.tgz", "integrity": "sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -7583,6 +8166,7 @@ "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.0", "define-properties": "^1.1.3" @@ -7599,6 +8183,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -7608,6 +8193,7 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, + "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, @@ -7620,6 +8206,7 @@ "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", "dev": true, + "license": "MIT", "dependencies": { "is-unc-path": "^1.0.0" }, @@ -7632,6 +8219,7 @@ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, + "license": "MIT", "dependencies": { "which-typed-array": "^1.1.14" }, @@ -7647,6 +8235,7 @@ "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", "dev": true, + "license": "MIT", "dependencies": { "unc-path-regex": "^0.1.2" }, @@ -7659,6 +8248,7 @@ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -7671,6 +8261,7 @@ "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-2.0.2.tgz", "integrity": "sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -7680,6 +8271,7 @@ "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.13" }, @@ -7692,6 +8284,7 @@ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -7701,6 +8294,7 @@ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, + "license": "MIT", "dependencies": { "is-docker": "^2.0.0" }, @@ -7712,19 +8306,22 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -7734,6 +8331,7 @@ "resolved": "https://registry.npmjs.org/isomorphic-timers-promises/-/isomorphic-timers-promises-1.0.1.tgz", "integrity": "sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } @@ -7743,6 +8341,7 @@ "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", "dev": true, + "license": "MIT", "peerDependencies": { "ws": "*" } @@ -7752,6 +8351,7 @@ "resolved": "https://registry.npmjs.org/isomorphic.js/-/isomorphic.js-0.2.5.tgz", "integrity": "sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==", "dev": true, + "license": "MIT", "funding": { "type": "GitHub Sponsors ❤", "url": "https://github.com/sponsors/dmonad" @@ -7762,15 +8362,17 @@ "resolved": "https://registry.npmjs.org/javascript-time-ago/-/javascript-time-ago-2.5.10.tgz", "integrity": "sha512-EUxp4BP74QH8xiYHyeSHopx1XhMMJ9qEX4rcBdFtpVWmKRdzpxbNzz2GSbuekZr5wt0rmLehuyp0PE34EAJT9g==", "dev": true, + "license": "MIT", "dependencies": { "relative-time-format": "^1.1.6" } }, "node_modules/jiti": { - "version": "1.21.3", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.3.tgz", - "integrity": "sha512-uy2bNX5zQ+tESe+TiC7ilGRz8AtRGmnJH55NC5S0nSUjvvvM2hJHmefHErugGXN4pNv4Qx7vLsnNw9qJ9mtIsw==", + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", "dev": true, + "license": "MIT", "bin": { "jiti": "bin/jiti.js" } @@ -7780,6 +8382,7 @@ "resolved": "https://registry.npmjs.org/jose/-/jose-5.4.0.tgz", "integrity": "sha512-6rpxTHPAQyWMb9A35BroFl1Sp0ST3DpPcm5EVIxZxdH+e0Hv9fwhyB3XLKFUcHNpdSDnETmBfuPPTTlYz5+USw==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/panva" } @@ -7789,6 +8392,7 @@ "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", "dev": true, + "license": "MIT", "engines": { "node": ">=14" } @@ -7797,13 +8401,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -7816,6 +8422,7 @@ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -7827,25 +8434,29 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-stable-stringify": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz", "integrity": "sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "isarray": "^2.0.5", @@ -7864,6 +8475,7 @@ "resolved": "https://registry.npmjs.org/json-to-pretty-yaml/-/json-to-pretty-yaml-1.2.2.tgz", "integrity": "sha512-rvm6hunfCcqegwYaG5T4yKJWxc9FXFgBVrcTZ4XfSVRwa5HA/Xs+vB/Eo9treYYHCeNM0nrSUr82V/M31Urc7A==", "dev": true, + "license": "Apache-2.0", "dependencies": { "remedial": "^1.0.7", "remove-trailing-spaces": "^1.0.6" @@ -7877,6 +8489,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -7889,6 +8502,7 @@ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, + "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -7901,6 +8515,7 @@ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", "dev": true, + "license": "Public Domain", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -7910,6 +8525,7 @@ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, + "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } @@ -7919,6 +8535,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -7928,6 +8545,7 @@ "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.1.11" } @@ -7936,13 +8554,15 @@ "version": "0.31.0", "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.31.0.tgz", "integrity": "sha512-sBPIUGTNF0czz0mwGGUoKKJC8Q7On1GPbCSFPfyEsfHb2DyBG0Y4QtV+EVWpINSaiGKZblDNuF5AezxSgOhesQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lib0": { "version": "0.2.94", "resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.94.tgz", "integrity": "sha512-hZ3p54jL4Wpu7IOg26uC7dnEWiMyNlUrb9KoG7+xYs45WkQwpVvKFndVq2+pqLYKe1u8Fp3+zAfZHVvTK34PvQ==", "dev": true, + "license": "MIT", "dependencies": { "isomorphic.js": "^0.2.4" }, @@ -7964,6 +8584,7 @@ "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", "dev": true, + "license": "MIT", "dependencies": { "immediate": "~3.0.5" } @@ -7972,13 +8593,15 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/linkify-it": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "uc.micro": "^2.0.0" @@ -7988,13 +8611,15 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-4.1.3.tgz", "integrity": "sha512-auMesunaJ8yfkHvK4gfg1K0SaKX/6Wn9g2Aac/NwX+l5VdmFZzo/hdPGxEOETj+ryRa4/fiOPjeeKURSAJx1sg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/listr2": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz", "integrity": "sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==", "dev": true, + "license": "MIT", "dependencies": { "cli-truncate": "^2.1.0", "colorette": "^2.0.16", @@ -8022,6 +8647,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -8037,6 +8663,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -8048,13 +8675,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/listr2/node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -8072,6 +8701,7 @@ "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "lie": "3.1.1" } @@ -8081,6 +8711,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -8095,25 +8726,29 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -8130,6 +8765,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -8145,6 +8781,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -8161,6 +8798,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -8172,13 +8810,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/log-symbols/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -8188,6 +8828,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -8200,6 +8841,7 @@ "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-escapes": "^4.3.0", "cli-cursor": "^3.1.0", @@ -8218,6 +8860,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -8233,6 +8876,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -8244,13 +8888,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/log-update/node_modules/slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -8268,6 +8914,7 @@ "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.1.tgz", "integrity": "sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6.0" }, @@ -8280,13 +8927,15 @@ "version": "0.8.4", "resolved": "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz", "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dev": true, + "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -8299,6 +8948,7 @@ "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -8308,6 +8958,7 @@ "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-2.0.2.tgz", "integrity": "sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -8317,6 +8968,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^3.0.2" } @@ -8326,6 +8978,7 @@ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" } @@ -8334,6 +8987,7 @@ "version": "10.1.0", "resolved": "https://registry.npmjs.org/mailgun.js/-/mailgun.js-10.1.0.tgz", "integrity": "sha512-j2yP5HGT14xwobySPA+y5IZtKW+XxavNySmFt8A/ztXTCmmgd2OEJMX293femA579iXyphjfymXyTQ/DCP9aAg==", + "license": "MIT", "dependencies": { "axios": "^1.6.0", "base-64": "^1.0.0", @@ -8347,13 +9001,15 @@ "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -8363,6 +9019,7 @@ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "argparse": "^2.0.1", @@ -8381,6 +9038,7 @@ "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -8391,6 +9049,7 @@ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "dev": true, + "license": "MIT", "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1", @@ -8401,13 +9060,15 @@ "version": "2.0.30", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", - "dev": true + "dev": true, + "license": "CC0-1.0" }, "node_modules/mdurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/meow": { @@ -8415,6 +9076,7 @@ "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -8427,6 +9089,7 @@ "resolved": "https://registry.npmjs.org/merge-anything/-/merge-anything-5.1.7.tgz", "integrity": "sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==", "dev": true, + "license": "MIT", "dependencies": { "is-what": "^4.1.8" }, @@ -8442,6 +9105,7 @@ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -8451,6 +9115,7 @@ "resolved": "https://registry.npmjs.org/meros/-/meros-1.3.0.tgz", "integrity": "sha512-2BNGOimxEz5hmjUG2FwoxCt5HN7BXdaWyFqEwxPTrJzVdABtrL4TiHTcsWSFAxPQ/tOnEaQEJh3qWq71QRMY+w==", "dev": true, + "license": "MIT", "engines": { "node": ">=13" }, @@ -8468,6 +9133,7 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dev": true, + "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -8481,6 +9147,7 @@ "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "dev": true, + "license": "MIT", "dependencies": { "bn.js": "^4.0.0", "brorand": "^1.0.1" @@ -8493,12 +9160,14 @@ "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -8507,6 +9176,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -8519,6 +9189,7 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -8527,19 +9198,22 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/minimalistic-crypto-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -8552,6 +9226,7 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -8561,6 +9236,7 @@ "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } @@ -8569,13 +9245,15 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/nanoid": { "version": "3.3.7", @@ -8588,6 +9266,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -8606,6 +9285,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "engines": { "node": "^16.0.0 || ^18.0.0 || >=20.0.0" } @@ -8615,6 +9295,7 @@ "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "dev": true, + "license": "MIT", "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" @@ -8625,6 +9306,7 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, + "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -8644,19 +9326,22 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/node-releases": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/node-stdlib-browser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/node-stdlib-browser/-/node-stdlib-browser-1.2.0.tgz", "integrity": "sha512-VSjFxUhRhkyed8AtLwSCkMrJRfQ3e2lGtG3sP6FEgaLKBBbxM/dLfjRe1+iLhjvyLFW3tBQ8+c0pcOtXGbAZJg==", "dev": true, + "license": "MIT", "dependencies": { "assert": "^2.0.0", "browser-resolve": "^2.0.0", @@ -8695,6 +9380,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -8703,13 +9389,15 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -8719,6 +9407,7 @@ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -8728,6 +9417,7 @@ "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1" @@ -8744,6 +9434,7 @@ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -8753,6 +9444,7 @@ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "define-properties": "^1.2.1", @@ -8771,6 +9463,7 @@ "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-3.0.0.tgz", "integrity": "sha512-EO+BCv6LJfu+gBIF3ggLicFebFLN5zqzz/WWJlMFfkMyGth+oBkhxzDl0wx2W4GkLzuQs/FsSkXZb2IMWQqmBQ==", "dev": true, + "license": "MIT", "dependencies": { "is-extendable": "^1.0.0" }, @@ -8783,6 +9476,7 @@ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", "dev": true, + "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, @@ -8795,6 +9489,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, + "license": "ISC", "dependencies": { "wrappy": "1" } @@ -8804,6 +9499,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, + "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -8819,6 +9515,7 @@ "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", "dev": true, + "license": "MIT", "dependencies": { "is-docker": "^2.0.0", "is-wsl": "^2.1.1" @@ -8835,6 +9532,7 @@ "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "dev": true, + "license": "MIT", "dependencies": { "bl": "^4.1.0", "chalk": "^4.1.0", @@ -8858,6 +9556,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -8873,6 +9572,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -8889,6 +9589,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -8900,13 +9601,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ora/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -8916,6 +9619,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -8927,19 +9631,22 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.1.tgz", "integrity": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -8949,6 +9656,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -8964,6 +9672,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -8979,6 +9688,7 @@ "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, + "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -8994,6 +9704,7 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -9002,13 +9713,15 @@ "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true + "dev": true, + "license": "(MIT AND Zlib)" }, "node_modules/param-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", "dev": true, + "license": "MIT", "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -9019,6 +9732,7 @@ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -9031,6 +9745,7 @@ "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.7.tgz", "integrity": "sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==", "dev": true, + "license": "ISC", "dependencies": { "asn1.js": "^4.10.1", "browserify-aes": "^1.2.0", @@ -9048,6 +9763,7 @@ "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", "dev": true, + "license": "MIT", "dependencies": { "is-absolute": "^1.0.0", "map-cache": "^0.2.0", @@ -9062,6 +9778,7 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -9080,6 +9797,7 @@ "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", "dev": true, + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -9090,6 +9808,7 @@ "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-8.0.0.tgz", "integrity": "sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA==", "dev": true, + "license": "MIT", "dependencies": { "@yarnpkg/lockfile": "^1.1.0", "chalk": "^4.1.2", @@ -9120,6 +9839,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -9135,6 +9855,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -9151,6 +9872,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -9162,13 +9884,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/patch-package/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -9178,6 +9902,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -9190,6 +9915,7 @@ "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -9199,6 +9925,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -9210,13 +9937,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", "dev": true, + "license": "MIT", "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -9227,6 +9956,7 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -9236,6 +9966,7 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9245,6 +9976,7 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -9253,13 +9985,15 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-root": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", "dev": true, + "license": "MIT", "dependencies": { "path-root-regex": "^0.1.0" }, @@ -9272,6 +10006,7 @@ "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9281,6 +10016,7 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -9290,6 +10026,7 @@ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dev": true, + "license": "MIT", "dependencies": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", @@ -9305,13 +10042,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -9324,6 +10063,7 @@ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^5.0.0" }, @@ -9336,6 +10076,7 @@ "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.44.1.tgz", "integrity": "sha512-qr/0UJ5CFAtloI3avF95Y0L1xQo6r3LQArLIg/z/PoGJ6xa+EwzrwO5lpNr/09STxdHuUoP2mvuELJS+hLdtgg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "playwright-core": "1.44.1" }, @@ -9354,6 +10095,7 @@ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.44.1.tgz", "integrity": "sha512-wh0JWtYTrhv1+OSsLPgFzGzt67Y7BE/ZS3jEqgGBlp2ppp1ZDj8c+9IARNW4dwf1poq5MgHreEM2KV/GuR4cFA==", "dev": true, + "license": "Apache-2.0", "bin": { "playwright-core": "cli.js" }, @@ -9366,6 +10108,7 @@ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -9389,6 +10132,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", @@ -9403,6 +10147,7 @@ "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", "dev": true, + "license": "MIT", "dependencies": { "camelcase-css": "^2.0.1" }, @@ -9421,13 +10166,15 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/postcss-resolve-nested-selector": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/postcss-safe-parser": { "version": "7.0.0", @@ -9448,6 +10195,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "engines": { "node": ">=18.0" }, @@ -9474,6 +10222,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "engines": { "node": ">=12.0" }, @@ -9486,6 +10235,7 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -9499,6 +10249,7 @@ "resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-8.0.2.tgz", "integrity": "sha512-M9dkSrmU00t/jK7rF6BZSZauA5MAaBW4i5EnJXspMwt4iqTh/L9j6fgMnbElEOfyRyfLfVbIHj/R52zHzAPe1Q==", "dev": true, + "license": "MIT", "peerDependencies": { "postcss": "^8.4.20" } @@ -9507,13 +10258,15 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/prettier": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.1.tgz", - "integrity": "sha512-7CAwy5dRsxs8PHXT3twixW9/OEll8MLE0VRPCJyl7CkS6VHGPSlsVaWTiASPTyGyYRyApxlaWTzwUxVNrhcwDg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", + "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", "dev": true, + "license": "MIT", "peer": true, "bin": { "prettier": "bin/prettier.cjs" @@ -9530,6 +10283,7 @@ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6.0" } @@ -9538,13 +10292,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", "dev": true, + "license": "MIT", "dependencies": { "asap": "~2.0.3" } @@ -9554,6 +10310,7 @@ "resolved": "https://registry.npmjs.org/prosemirror-changeset/-/prosemirror-changeset-2.2.1.tgz", "integrity": "sha512-J7msc6wbxB4ekDFj+n9gTW/jav/p53kdlivvuppHsrZXCaQdVgRghoZbSS3kwrRyAstRVQ4/+u5k7YfLgkkQvQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "prosemirror-transform": "^1.0.0" @@ -9564,6 +10321,7 @@ "resolved": "https://registry.npmjs.org/prosemirror-collab/-/prosemirror-collab-1.3.1.tgz", "integrity": "sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "prosemirror-state": "^1.0.0" @@ -9574,6 +10332,7 @@ "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.5.2.tgz", "integrity": "sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "prosemirror-model": "^1.0.0", @@ -9586,6 +10345,7 @@ "resolved": "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.1.tgz", "integrity": "sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "prosemirror-state": "^1.0.0", @@ -9598,6 +10358,7 @@ "resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.3.2.tgz", "integrity": "sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "prosemirror-keymap": "^1.0.0", @@ -9611,6 +10372,7 @@ "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.3.2.tgz", "integrity": "sha512-/zm0XoU/N/+u7i5zepjmZAEnpvjDtzoPWW6VmKptcAnPadN/SStsBjMImdCEbb3seiNTpveziPTIrXQbHLtU1g==", "dev": true, + "license": "MIT", "dependencies": { "prosemirror-state": "^1.2.2", "prosemirror-transform": "^1.0.0", @@ -9623,6 +10385,7 @@ "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.4.0.tgz", "integrity": "sha512-6ygpPRuTJ2lcOXs9JkefieMst63wVJBgHZGl5QOytN7oSZs3Co/BYbc3Yx9zm9H37Bxw8kVzCnDsihsVsL4yEg==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "prosemirror-state": "^1.0.0", @@ -9634,6 +10397,7 @@ "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.2.tgz", "integrity": "sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "prosemirror-state": "^1.0.0", @@ -9645,6 +10409,7 @@ "resolved": "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.13.0.tgz", "integrity": "sha512-UziddX3ZYSYibgx8042hfGKmukq5Aljp2qoBiJRejD/8MH70siQNz5RB1TrdTPheqLMy4aCe4GYNF10/3lQS5g==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "markdown-it": "^14.0.0", @@ -9656,6 +10421,7 @@ "resolved": "https://registry.npmjs.org/prosemirror-menu/-/prosemirror-menu-1.2.4.tgz", "integrity": "sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "crelt": "^1.0.0", @@ -9669,6 +10435,7 @@ "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.21.1.tgz", "integrity": "sha512-IVBAuMqOfltTr7yPypwpfdGT+6rGAteVOw2FO6GEvCGGa1ZwxLseqC1Eax/EChDvG/xGquB2d/hLdgh3THpsYg==", "dev": true, + "license": "MIT", "dependencies": { "orderedmap": "^2.0.0" } @@ -9678,16 +10445,18 @@ "resolved": "https://registry.npmjs.org/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.2.tgz", "integrity": "sha512-/dT4JFEGyO7QnNTe9UaKUhjDXbTNkiWTq/N4VpKaF79bBjSExVV2NXmJpcM7z/gD7mbqNjxbmWW5nf1iNSSGnw==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "prosemirror-model": "^1.19.0" } }, "node_modules/prosemirror-schema-list": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.3.0.tgz", - "integrity": "sha512-Hz/7gM4skaaYfRPNgr421CU4GSwotmEwBVvJh5ltGiffUJwm7C8GfN/Bc6DR1EKEp5pDKhODmdXXyi9uIsZl5A==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.4.0.tgz", + "integrity": "sha512-nZOIq/AkBSzCENxUyLm5ltWE53e2PLk65ghMN8qLQptOmDVixZlPqtMeQdiNw0odL9vNpalEjl3upgRkuJ/Jyw==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "prosemirror-model": "^1.0.0", @@ -9700,6 +10469,7 @@ "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.3.tgz", "integrity": "sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==", "dev": true, + "license": "MIT", "dependencies": { "prosemirror-model": "^1.0.0", "prosemirror-transform": "^1.0.0", @@ -9711,6 +10481,7 @@ "resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.3.7.tgz", "integrity": "sha512-oEwX1wrziuxMtwFvdDWSFHVUWrFJWt929kVVfHvtTi8yvw+5ppxjXZkMG/fuTdFo+3DXyIPSKfid+Be1npKXDA==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "prosemirror-keymap": "^1.1.2", @@ -9725,6 +10496,7 @@ "resolved": "https://registry.npmjs.org/prosemirror-trailing-node/-/prosemirror-trailing-node-2.0.7.tgz", "integrity": "sha512-8zcZORYj/8WEwsGo6yVCRXFMOfBo0Ub3hCUvmoWIZYfMP26WqENU0mpEP27w7mt8buZWuGrydBewr0tOArPb1Q==", "dev": true, + "license": "MIT", "dependencies": { "@remirror/core-constants": "^2.0.2", "@remirror/core-helpers": "^3.0.0", @@ -9741,6 +10513,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -9753,6 +10526,7 @@ "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.9.0.tgz", "integrity": "sha512-5UXkr1LIRx3jmpXXNKDhv8OyAOeLTGuXNwdVfg8x27uASna/wQkr9p6fD3eupGOi4PLJfbezxTyi/7fSJypXHg==", "dev": true, + "license": "MIT", "dependencies": { "prosemirror-model": "^1.21.0" } @@ -9762,6 +10536,7 @@ "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.32.7.tgz", "integrity": "sha512-pvxiOoD4shW41X5bYDjRQk3DSG4fMqxh36yPMt7VYgU3dWRmqFzWJM/R6zeo1KtC8nyk717ZbQND3CC9VNeptw==", "dev": true, + "license": "MIT", "dependencies": { "prosemirror-model": "^1.16.0", "prosemirror-state": "^1.0.0", @@ -9771,13 +10546,15 @@ "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" }, "node_modules/public-encrypt": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", "dev": true, + "license": "MIT", "dependencies": { "bn.js": "^4.1.0", "browserify-rsa": "^4.0.0", @@ -9791,19 +10568,22 @@ "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/punycode.js": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=6" @@ -9814,6 +10594,7 @@ "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.5.tgz", "integrity": "sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.6.1" } @@ -9823,6 +10604,7 @@ "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -9832,6 +10614,7 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz", "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.6" }, @@ -9869,13 +10652,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } @@ -9885,6 +10670,7 @@ "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "dev": true, + "license": "MIT", "dependencies": { "randombytes": "^2.0.5", "safe-buffer": "^5.1.0" @@ -9895,6 +10681,7 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -9909,6 +10696,7 @@ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -9920,19 +10708,22 @@ "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/relative-time-format": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/relative-time-format/-/relative-time-format-1.1.6.tgz", "integrity": "sha512-aCv3juQw4hT1/P/OrVltKWLlp15eW1GRcwP1XdxHrPdZE9MtgqFpegjnTjLhi2m2WI9MT/hQQtE+tjEWG1hgkQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/relay-runtime": { "version": "12.0.0", "resolved": "https://registry.npmjs.org/relay-runtime/-/relay-runtime-12.0.0.tgz", "integrity": "sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==", "dev": true, + "license": "MIT", "dependencies": { "@babel/runtime": "^7.0.0", "fbjs": "^3.0.0", @@ -9944,6 +10735,7 @@ "resolved": "https://registry.npmjs.org/remedial/-/remedial-1.0.8.tgz", "integrity": "sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg==", "dev": true, + "license": "(MIT OR Apache-2.0)", "engines": { "node": "*" } @@ -9952,19 +10744,22 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/remove-trailing-spaces": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/remove-trailing-spaces/-/remove-trailing-spaces-1.0.8.tgz", "integrity": "sha512-O3vsMYfWighyFbTd8hk8VaSj9UAGENxAtX+//ugIst2RMk5e03h6RoIS+0ylsFxY1gvmPuAY/PO4It+gPEeySA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9974,6 +10769,7 @@ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9982,13 +10778,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -10006,6 +10804,7 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -10015,6 +10814,7 @@ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, + "license": "MIT", "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -10028,16 +10828,18 @@ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" } }, "node_modules/rfdc": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", - "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==", - "dev": true + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" }, "node_modules/rimraf": { "version": "2.7.1", @@ -10045,6 +10847,7 @@ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -10057,6 +10860,7 @@ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "dev": true, + "license": "MIT", "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1" @@ -10067,6 +10871,7 @@ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.17.2.tgz", "integrity": "sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "1.0.5" }, @@ -10101,13 +10906,15 @@ "version": "1.3.4", "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz", "integrity": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -10131,6 +10938,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } @@ -10140,6 +10948,7 @@ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } @@ -10162,19 +10971,22 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/sass": { "version": "1.77.2", "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.2.tgz", "integrity": "sha512-eb4GZt1C3avsX3heBNlrc7I09nyT00IUuo4eFhAbeXWU2fvA7oXI53SxODVAA+zgZCk9aunAZgO+losjR3fAwA==", "dev": true, + "license": "MIT", "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -10191,19 +11003,22 @@ "version": "4.3.6", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz", "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/scuid": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/scuid/-/scuid-1.1.0.tgz", "integrity": "sha512-MuCAyrGZcTLfQoH2XoBlQ8C6bzwN88XT/0slOGz0pn8+gIP85BOAfYa44ZXQUTOwRwPU0QvgU+V+OSajl/59Xg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -10213,6 +11028,7 @@ "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", "dev": true, + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3", @@ -10224,6 +11040,7 @@ "resolved": "https://registry.npmjs.org/seroval/-/seroval-1.0.7.tgz", "integrity": "sha512-n6ZMQX5q0Vn19Zq7CIKNIo7E75gPkGCFUEqDpa8jgwpYr/vScjqnQ6H09t1uIiZ0ZSK0ypEGvrYK2bhBGWsGdw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } @@ -10233,6 +11050,7 @@ "resolved": "https://registry.npmjs.org/seroval-plugins/-/seroval-plugins-1.0.7.tgz", "integrity": "sha512-GO7TkWvodGp6buMEX9p7tNyIkbwlyuAWbI6G9Ec5bhcm7mQdu3JOK1IXbEUwb3FVzSc363GraG/wLW23NSavIw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -10244,13 +11062,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -10267,13 +11087,15 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/sha.js": { "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dev": true, + "license": "(MIT AND BSD-3-Clause)", "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -10287,6 +11109,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -10299,6 +11122,7 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -10308,6 +11132,7 @@ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10317,6 +11142,7 @@ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -10334,19 +11160,22 @@ "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/signedsource": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/signedsource/-/signedsource-1.0.0.tgz", "integrity": "sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/sirv": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", "dev": true, + "license": "MIT", "dependencies": { "@polka/url": "^1.0.0-next.24", "mrmime": "^2.0.0", @@ -10361,6 +11190,7 @@ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -10370,6 +11200,7 @@ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -10384,6 +11215,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -10399,6 +11231,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -10410,13 +11243,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/snake-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", "dev": true, + "license": "MIT", "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -10427,6 +11262,7 @@ "resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.8.17.tgz", "integrity": "sha512-E0FkUgv9sG/gEBWkHr/2XkBluHb1fkrHywUgA6o6XolPDCJ4g1HaLmQufcBBhiF36ee40q+HpG/vCZu7fLpI3Q==", "dev": true, + "license": "MIT", "dependencies": { "csstype": "^3.1.0", "seroval": "^1.0.4", @@ -10438,6 +11274,7 @@ "resolved": "https://registry.npmjs.org/solid-popper/-/solid-popper-0.3.0.tgz", "integrity": "sha512-XlfEWAyxGGqFgg/uRpF+BemSfCqjbLA8p6fToDa+6v3paw3eBQj0TU08aBOIj2VeigaEiz8ZTlDx1eBLVRivBg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -10451,6 +11288,7 @@ "resolved": "https://registry.npmjs.org/solid-refresh/-/solid-refresh-0.6.3.tgz", "integrity": "sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/generator": "^7.23.6", "@babel/helper-module-imports": "^7.22.15", @@ -10465,6 +11303,7 @@ "resolved": "https://registry.npmjs.org/solid-tiptap/-/solid-tiptap-0.7.0.tgz", "integrity": "sha512-EIOopM1gcV6Pjp6R5l5iQy5RqFodDpHzQDRdDJAqffi3XqMSu6lzd7dcDtb1DPbZtvl1uNTXRxmpUGGvB8KD0A==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -10479,6 +11318,7 @@ "resolved": "https://registry.npmjs.org/solid-transition-group/-/solid-transition-group-0.2.3.tgz", "integrity": "sha512-iB72c9N5Kz9ykRqIXl0lQohOau4t0dhel9kjwFvx81UZJbVwaChMuBuyhiZmK24b8aKEK0w3uFM96ZxzcyZGdg==", "dev": true, + "license": "MIT", "dependencies": { "@solid-primitives/refs": "^1.0.5", "@solid-primitives/transition-group": "^1.0.2" @@ -10496,6 +11336,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -10505,6 +11346,7 @@ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -10514,6 +11356,7 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -10524,6 +11367,7 @@ "resolved": "https://registry.npmjs.org/sponge-case/-/sponge-case-1.0.1.tgz", "integrity": "sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -10533,6 +11377,7 @@ "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "~2.0.4", "readable-stream": "^3.5.0" @@ -10543,6 +11388,7 @@ "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", "dev": true, + "license": "MIT", "dependencies": { "builtin-status-codes": "^3.0.0", "inherits": "^2.0.4", @@ -10564,6 +11410,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" } @@ -10572,13 +11419,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/string-env-interpolation/-/string-env-interpolation-1.0.1.tgz", "integrity": "sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -10593,6 +11442,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -10615,6 +11465,7 @@ "url": "https://github.com/sponsors/stylelint" } ], + "license": "MIT", "dependencies": { "@csstools/css-parser-algorithms": "^2.6.3", "@csstools/css-tokenizer": "^2.3.1", @@ -10668,6 +11519,7 @@ "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-14.0.0.tgz", "integrity": "sha512-jSkx290CglS8StmrLp2TxAppIajzIBZKYm3IxT89Kg6fGlxbPiTiyH9PS5YUuVAFwaJLl1ikiXX0QWjI0jmgZQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18.12.0" }, @@ -10680,6 +11532,7 @@ "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-14.0.0.tgz", "integrity": "sha512-HDvpoOAQ1RpF+sPbDOT2Q2/YrBDEJDnUymmVmZ7mMCeNiFSdhRdyGEimBkz06wsN+HaFwUh249gDR+I9JR7Onw==", "dev": true, + "license": "MIT", "dependencies": { "postcss-scss": "^4.0.9", "stylelint-config-recommended": "^14.0.0", @@ -10703,6 +11556,7 @@ "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-36.0.0.tgz", "integrity": "sha512-3Kjyq4d62bYFp/Aq8PMKDwlgUyPU4nacXsjDLWJdNPRUgpuxALu1KnlAHIj36cdtxViVhXexZij65yM0uNIHug==", "dev": true, + "license": "MIT", "dependencies": { "stylelint-config-recommended": "^14.0.0" }, @@ -10718,6 +11572,7 @@ "resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-13.1.0.tgz", "integrity": "sha512-Eo5w7/XvwGHWkeGLtdm2FZLOMYoZl1omP2/jgFCXyl2x5yNz7/8vv4Tj6slHvMSSUNTaGoam/GAZ0ZhukvalfA==", "dev": true, + "license": "MIT", "dependencies": { "stylelint-config-recommended-scss": "^14.0.0", "stylelint-config-standard": "^36.0.0" @@ -10740,6 +11595,7 @@ "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-6.0.4.tgz", "integrity": "sha512-0UuKo4+s1hgQ/uAxlYU4h0o0HS4NiQDud0NAUNI0aa8FJdmYHA5ZZTFHiV5FpmE3071e9pZx5j0QpVJW5zOCUA==", "dev": true, + "license": "MIT", "dependencies": { "postcss": "^8.4.32", "postcss-sorting": "^8.0.2" @@ -10753,6 +11609,7 @@ "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.3.1.tgz", "integrity": "sha512-w/czBoWUZxJNk5fBRPODcXSN4qcPv3WHjTSSpFovVY+TE3MZTMR0yRlbmaDYrm8tTWHvpwQAuEBZ0lk2wwkboQ==", "dev": true, + "license": "MIT", "dependencies": { "known-css-properties": "^0.31.0", "postcss-media-query-parser": "^0.2.3", @@ -10772,6 +11629,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -10783,13 +11641,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/stylelint/node_modules/cosmiconfig": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, + "license": "MIT", "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", @@ -10816,6 +11676,7 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -10825,6 +11686,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -10840,6 +11702,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -10852,6 +11715,7 @@ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz", "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" @@ -10865,6 +11729,7 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -10874,6 +11739,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -10886,6 +11752,7 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -10904,6 +11771,7 @@ "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-2.0.2.tgz", "integrity": "sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -10923,6 +11791,7 @@ "url": "http://opencollective.com/swiper" } ], + "license": "MIT", "engines": { "node": ">= 4.7.0" } @@ -10932,6 +11801,7 @@ "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", @@ -10948,6 +11818,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -10963,6 +11834,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -10974,13 +11846,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/table/node_modules/slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -10998,6 +11872,7 @@ "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-5.0.0.tgz", "integrity": "sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.22" } @@ -11006,13 +11881,15 @@ "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/timers-browserify": { "version": "2.0.12", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", "dev": true, + "license": "MIT", "dependencies": { "setimmediate": "^1.0.4" }, @@ -11025,6 +11902,7 @@ "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.3.7.tgz", "integrity": "sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==", "dev": true, + "license": "MIT", "dependencies": { "@popperjs/core": "^2.9.0" } @@ -11034,6 +11912,7 @@ "resolved": "https://registry.npmjs.org/title-case/-/title-case-3.0.3.tgz", "integrity": "sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -11043,6 +11922,7 @@ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, + "license": "MIT", "dependencies": { "os-tmpdir": "~1.0.2" }, @@ -11055,6 +11935,7 @@ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -11064,6 +11945,7 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -11076,6 +11958,7 @@ "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -11084,31 +11967,36 @@ "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ts-log": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/ts-log/-/ts-log-2.2.5.tgz", "integrity": "sha512-PGcnJoTBnVGy6yYNFxWVNkdcAuAMstvutN9MgDJIV6L0oG8fB+ZNNy1T+wJzah8RPGor1mZuPQkVfXNDpy9eHA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tslib": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", - "dev": true + "dev": true, + "license": "0BSD" }, "node_modules/tty-browserify": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/type-fest": { "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -11121,6 +12009,7 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -11134,6 +12023,7 @@ "resolved": "https://registry.npmjs.org/typograf/-/typograf-7.3.0.tgz", "integrity": "sha512-fR96fOEyVUrjPDWNuy3oq0s3AnY58XPd9i1jKDtzHcHySNfzvw6c47/GDyPDI1+x99ngzuwxyAZjVF1i8zNwCg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -11157,6 +12047,7 @@ "url": "https://github.com/sponsors/faisalman" } ], + "license": "MIT", "engines": { "node": "*" } @@ -11166,6 +12057,7 @@ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/unc-path-regex": { @@ -11173,6 +12065,7 @@ "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -11181,25 +12074,29 @@ "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/uniqolor": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/uniqolor/-/uniqolor-1.1.0.tgz", "integrity": "sha512-j2XyokF24fsj+L5u6fbu4rM3RQc6VWJuAngYM2k0ZdG3yiVxt0smLkps2GmQIYqK8VkELGdM9vFU/HfOkK/zoQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/universal-user-agent": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10.0.0" } @@ -11209,6 +12106,7 @@ "resolved": "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz", "integrity": "sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==", "dev": true, + "license": "MIT", "dependencies": { "normalize-path": "^2.1.1" }, @@ -11221,6 +12119,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", "dev": true, + "license": "MIT", "dependencies": { "remove-trailing-separator": "^1.0.1" }, @@ -11247,6 +12146,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "escalade": "^3.1.2", "picocolors": "^1.0.1" @@ -11263,6 +12163,7 @@ "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -11272,6 +12173,7 @@ "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -11281,6 +12183,7 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } @@ -11290,6 +12193,7 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -11299,6 +12203,7 @@ "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", "dev": true, + "license": "MIT", "dependencies": { "punycode": "^1.4.1", "qs": "^6.11.2" @@ -11307,19 +12212,22 @@ "node_modules/url-join": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "license": "MIT" }, "node_modules/urlpattern-polyfill": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz", "integrity": "sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/util": { "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -11332,19 +12240,22 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/validate-html-nesting": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/validate-html-nesting/-/validate-html-nesting-1.2.2.tgz", "integrity": "sha512-hGdgQozCsQJMyfK5urgFcWEqsSSrK63Awe0t/IMR0bZ0QMtnuaiHzThW81guu3qx9abLi99NEuiaN6P9gVYsNg==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/value-or-promise": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.12.tgz", "integrity": "sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" } @@ -11354,6 +12265,7 @@ "resolved": "https://registry.npmjs.org/vike/-/vike-0.4.148.tgz", "integrity": "sha512-2KkrY6zB+fTVwQzzcr5zAxpIT2buezDcUP5u4oFzDdxhqcV7r5CGq2PWQ3/ALA8jP/Agz0ZdiMbXUNGJFI+uVw==", "dev": true, + "license": "MIT", "dependencies": { "@brillout/import": "0.2.3", "@brillout/json-serializer": "^0.5.8", @@ -11389,6 +12301,7 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.11.tgz", "integrity": "sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==", "dev": true, + "license": "MIT", "dependencies": { "esbuild": "^0.20.1", "postcss": "^8.4.38", @@ -11444,6 +12357,7 @@ "resolved": "https://registry.npmjs.org/vite-plugin-mkcert/-/vite-plugin-mkcert-1.17.5.tgz", "integrity": "sha512-KKGY3iHx/9zb7ow8JJ+nLN2HiNIBuPBwj34fJ+jAJT89/8qfk7msO7G7qipR8VDEm9xMCys0xT11QOJbZcg3/Q==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/rest": "^20.0.2", "axios": "^1.6.8", @@ -11462,6 +12376,7 @@ "resolved": "https://registry.npmjs.org/vite-plugin-node-polyfills/-/vite-plugin-node-polyfills-0.22.0.tgz", "integrity": "sha512-F+G3LjiGbG8QpbH9bZ//GSBr9i1InSTkaulfUHFa9jkLqVGORFBoqc2A/Yu5Mmh1kNAbiAeKeK+6aaQUf3x0JA==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/plugin-inject": "^5.0.5", "node-stdlib-browser": "^1.2.0" @@ -11478,6 +12393,7 @@ "resolved": "https://registry.npmjs.org/vite-plugin-sass-dts/-/vite-plugin-sass-dts-1.3.22.tgz", "integrity": "sha512-N09ApMznYMh8o2ab1HgGxrGnLGk1GPAtS+iZdiZWeq6ftRrKVxYSY99yyaDC6mSHczreb/JAC5HbPhrTSHaPEg==", "dev": true, + "license": "MIT", "dependencies": { "postcss-js": "^4.0.1" }, @@ -11496,6 +12412,7 @@ "resolved": "https://registry.npmjs.org/vite-plugin-solid/-/vite-plugin-solid-2.10.2.tgz", "integrity": "sha512-AOEtwMe2baBSXMXdo+BUwECC8IFHcKS6WQV/1NEd+Q7vHPap5fmIhLcAzr+DUJ04/KHx/1UBU0l1/GWP+rMAPQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.23.3", "@types/babel__core": "^7.20.4", @@ -11523,6 +12440,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -11539,6 +12457,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -11555,6 +12474,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -11571,6 +12491,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -11587,6 +12508,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -11603,6 +12525,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -11619,6 +12542,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -11635,6 +12559,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -11651,6 +12576,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -11667,6 +12593,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -11683,6 +12610,7 @@ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -11699,6 +12627,7 @@ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -11715,6 +12644,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -11731,6 +12661,7 @@ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -11747,6 +12678,7 @@ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -11763,6 +12695,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -11779,6 +12712,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -11795,6 +12729,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -11811,6 +12746,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" @@ -11827,6 +12763,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -11843,6 +12780,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -11859,6 +12797,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -11873,6 +12812,7 @@ "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -11911,6 +12851,7 @@ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -11924,6 +12865,7 @@ "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==", "dev": true, + "license": "MIT", "peerDependencies": { "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" }, @@ -11937,13 +12879,15 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/w3c-keyname": { "version": "2.2.8", "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/wcwidth": { @@ -11951,6 +12895,7 @@ "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, + "license": "MIT", "dependencies": { "defaults": "^1.0.3" } @@ -11960,6 +12905,7 @@ "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -11969,6 +12915,7 @@ "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.8.0.tgz", "integrity": "sha512-kR1UQNH8MD42CYuLzvibfakG5Ew5seG85dMMoAM/1LqvckxaF6pUiidLuraIu4V+YCIFabYecUZAW0TuxAoaqw==", "dev": true, + "license": "MIT", "dependencies": { "@peculiar/asn1-schema": "^2.3.8", "@peculiar/json-schema": "^1.1.12", @@ -11981,13 +12928,15 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, + "license": "MIT", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -11998,6 +12947,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -12012,13 +12962,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/which-typed-array": { "version": "1.1.15", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", @@ -12037,13 +12989,15 @@ "version": "6.3.4", "resolved": "https://registry.npmjs.org/wonka/-/wonka-6.3.4.tgz", "integrity": "sha512-CjpbqNtBGNAeyNS/9W6q3kSkKE52+FjIj7AkFlLr11s/VWGUu6a2CdYSdGxocIhIVjaW/zchesBQUKPVU69Cqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -12058,6 +13012,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -12073,6 +13028,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -12084,19 +13040,22 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/write-file-atomic": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", "dev": true, + "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^4.0.1" @@ -12110,6 +13069,7 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -12122,6 +13082,7 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -12143,6 +13104,7 @@ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4" } @@ -12152,6 +13114,7 @@ "resolved": "https://registry.npmjs.org/y-prosemirror/-/y-prosemirror-1.2.5.tgz", "integrity": "sha512-T/JATxC8P2Dbvq/dAiaiztD1a8KEwRP8oLRlT8YlaZdNlLGE1Ea0IJ8If25UlDYmk+4+uqLbqT/S+dzUmwwgbA==", "dev": true, + "license": "MIT", "dependencies": { "lib0": "^0.2.42" }, @@ -12176,6 +13139,7 @@ "resolved": "https://registry.npmjs.org/y-protocols/-/y-protocols-1.0.6.tgz", "integrity": "sha512-vHRF2L6iT3rwj1jub/K5tYcTT/mEYDUppgNPXwp8fmLpui9f7Yeq3OEtTLVF012j39QnV+KEQpNqoN7CWU7Y9Q==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "lib0": "^0.2.85" @@ -12197,6 +13161,7 @@ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } @@ -12205,13 +13170,15 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/yaml": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.3.tgz", - "integrity": "sha512-sntgmxj8o7DE7g/Qi60cqpLBA3HG3STcDA0kO+WfB05jEKhZMbY7umNm2rBpQvsmZ16/lPXCJGW2672dgOUkrg==", + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", + "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", "dev": true, + "license": "ISC", "bin": { "yaml": "bin.mjs" }, @@ -12223,13 +13190,15 @@ "version": "0.0.43", "resolved": "https://registry.npmjs.org/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz", "integrity": "sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -12248,6 +13217,7 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -12257,6 +13227,7 @@ "resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.15.tgz", "integrity": "sha512-moFv4uNYhp8BFxIk3AkpoAnnjts7gwdpiG8RtyFiKbMtxKCS0zVZ5wPaaGpwC3V2N/K8TK8MwtSI3+WO9CHWjQ==", "dev": true, + "license": "MIT", "dependencies": { "lib0": "^0.2.86" }, @@ -12274,6 +13245,7 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, diff --git a/package.json b/package.json index 8a919b87..65b35610 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,8 @@ "codegen": "graphql-codegen", "deploy": "graphql-codegen && npm run typecheck && vite build && vercel", "dev": "vite", - "e2e": "npx playwright test --project=webkit", + "e2e:tests": "npx playwright test --project=webkit", + "e2e:install": "npx playwright install webkit && npx playwright install-deps ", "fix": "npm run check:code:fix && stylelint **/*.{scss,css} --fix", "format": "npx @biomejs/biome format src/. --write", "postinstall": "npm run codegen && npx patch-package", @@ -136,5 +137,7 @@ "y-prosemirror": "1.2.5", "yjs": "13.6.15" }, - "trustedDependencies": ["@biomejs/biome"] + "trustedDependencies": [ + "@biomejs/biome" + ] } From 94520bc57b2676d62f84cb858acdfaef2c0b72cc Mon Sep 17 00:00:00 2001 From: Stepan Vladovskiy Date: Wed, 19 Jun 2024 01:06:34 +0000 Subject: [PATCH 005/132] feat: Playwright now can start all from comand line, tests are placed in separate files for use workers, webServer is starts before all workers --- playwright.config.ts | 35 +++--- tests/auth-drafts-actions.spec.ts | 128 +++++++++++++++++++++ tests/auth-topics-actions.spec.ts | 115 +++++++++++++++++++ tests/auth-user-actions.spec.ts | 111 ++++++++++++++++++ tests/auth-user-test.spec.ts | 185 ------------------------------ tests/basic-routes.spec.ts | 21 ---- tests/basic-routes.test.js | 37 ------ tests/page-sections.spec.ts | 71 ++++++++++++ 8 files changed, 442 insertions(+), 261 deletions(-) create mode 100644 tests/auth-drafts-actions.spec.ts create mode 100644 tests/auth-topics-actions.spec.ts create mode 100644 tests/auth-user-actions.spec.ts delete mode 100644 tests/auth-user-test.spec.ts delete mode 100644 tests/basic-routes.spec.ts delete mode 100644 tests/basic-routes.test.js create mode 100644 tests/page-sections.spec.ts diff --git a/playwright.config.ts b/playwright.config.ts index 300d6fec..dacddda9 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -10,9 +10,10 @@ import { defineConfig, devices } from '@playwright/test' * See https://playwright.dev/docs/test-configuration. */ export default defineConfig({ + /* Directory to search for tests */ testDir: './tests', /* Run tests in files in parallel */ - fullyParallel: true, + fullyParallel: false, /* Fail the build on CI if you accidentally left test.only in the source code. */ forbidOnly: !!process.env.CI, /* Retry on CI only */ @@ -20,27 +21,23 @@ export default defineConfig({ /* Opt out of parallel tests on CI. */ workers: process.env.CI ? 1 : undefined, /* Reporter to use. See https://playwright.dev/docs/test-reporters */ - reporter: 'html', + reporter: 'list', + /* Timeout for each test */ + timeout: 40000, /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ use: { /* Base URL to use in actions like `await page.goto('/')`. */ - // baseURL: 'http://127.0.0.1:3000', - + baseURL: 'https://localhost:3000', + /* Headless */ + headless: true, + /* Ignode SSL certificates */ + ignoreHTTPSErrors: true, /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ trace: 'on-first-retry', }, /* Configure projects for major browsers */ projects: [ - { - name: 'chromium', - use: { ...devices['Desktop Chrome'] }, - }, - - { - name: 'firefox', - use: { ...devices['Desktop Firefox'] }, - }, { name: 'webkit', @@ -69,9 +66,11 @@ export default defineConfig({ ], /* Run local dev server before starting the tests */ - //webServer: { - // command: 'npm run dev', - // url: 'https://localhost:3000', - // reuseExistingServer: !process.env.CI, - //}, + webServer: { + command: 'npm run dev', + url: 'https://localhost:3000', + ignoreHTTPSErrors: true, + reuseExistingServer: !process.env.CI, + timeout: 5 * 60 * 1000, + }, }) diff --git a/tests/auth-drafts-actions.spec.ts b/tests/auth-drafts-actions.spec.ts new file mode 100644 index 00000000..f060d748 --- /dev/null +++ b/tests/auth-drafts-actions.spec.ts @@ -0,0 +1,128 @@ +import { test, expect, type Page } from '@playwright/test'; +import https from 'https'; + + +/* Global starting test config */ + +let page: Page; + +function httpsGet(url: string): Promise { + return new Promise((resolve, reject) => { + https.get(url, { + rejectUnauthorized: false // Ignore SSL certificate errors + }, (res) => { + if (res.statusCode === 200) { + resolve(); + } else { + reject(new Error(`Request failed with status code ${res.statusCode}`)); + } + }).on('error', (error) => { + reject(error); + }); + }); +} +async function waitForServer(url: string, timeout: number = 150000) { + const start = Date.now(); + while (Date.now() - start < timeout) { + try { + await httpsGet(url); + return true; + } catch (error) { + // Ignore errors and try again + console.log (`Error fetching ${url}: ${error.message}`); + } + await new Promise((resolve) => setTimeout(resolve, 1000)); + } + throw new Error(`Server at ${url} did not start within ${timeout} ms`); +} +test.beforeAll(async ({ browser }) => { + console.log('Waiting for the server to start...'); + await new Promise((resolve) => setTimeout(resolve, 5000)); + const baseURL = 'https://localhost:3000'; + await waitForServer(baseURL); + page = await browser.newPage(); + test.setTimeout(150000); + await page.goto(baseURL); + await expect(page).toHaveTitle(/Дискурс/); + console.log('Localhost server started successfully!'); + await page.close(); + }); +test.afterAll(async () => { + await page.close(); + }); + + +/* TESTS section */ + +test.beforeEach(async ({ page }) => { + await page.goto(`/`); + test.setTimeout(80000); + await page.getByRole('link', { name: 'Войти' }).click(); + await page.getByPlaceholder('Почта').click(); + await page.getByPlaceholder('Почта').fill('guests@discours.io'); + await page.getByPlaceholder('Пароль').click(); + await page.getByPlaceholder('Пароль').fill('Gue$tP@ss'); + await page.getByRole('button', { name: 'Войти' }).click(); +}); + +test.describe('*****Undone***** Drafts - article', () => { + test('Open /create', async ({ page }) => { + await page.goto(`/create`); + await expect(page).toHaveTitle('Выберите тип публикации'); + }); +}); + +/* test('Create article', async ({ page }) => { + await page.goto(`/create`); + await page.locator('li').filter({ hasText: 'статья' }).locator('img').click(); +}); + +test('Check Draft', async ({ page }) => { + +}); */ + +/* test('Drafts - create literature', async ({ page }) => { + await page.getByRole('button', { name: 'Т.Р' }).click(); + await page.getByRole('link', { name: 'Черновики' }).click(); + await page.getByRole('link', { name: 'Создать публикацию' }).click(); + await page.locator('li').filter({ hasText: /^литература$/ }).locator('img').click(); + Fill the form + Save + Check is it created +}); */ + +/* test('Drafts - create images', async ({ page }) => { + await page.getByRole('button', { name: 'Т.Р' }).click(); + await page.getByRole('link', { name: 'Черновики' }).click(); + await page.getByRole('link', { name: 'Создать публикацию' }).click(); + await page.locator('li').filter({ hasText: 'изображения' }).locator('img').click(); + Fill the form + Save + Check is it created +}); */ + +/* test('Drafts - create music', async ({ page }) => { + await page.getByRole('button', { name: 'Т.Р' }).click(); + await page.getByRole('link', { name: 'Черновики' }).click(); + await page.getByRole('link', { name: 'Создать публикацию' }).click(); + await page.locator('li').filter({ hasText: 'музыка' }).locator('img').click(); + Fill the form + Save + Check is it created +}); */ + +/* test('Drafts - create video', async ({ page }) => { + await page.getByRole('button', { name: 'Т.Р' }).click(); + await page.getByRole('link', { name: 'Черновики' }).click(); + await page.getByRole('link', { name: 'Создать публикацию' }).click(); + await page.locator('li').filter({ hasText: 'видео' }).locator('img').click(); + Fill the form + Save + Check is it created +}); */ + + +/* test('Post topic', async ({ page }) => { + Open Draft + Post +});*/ \ No newline at end of file diff --git a/tests/auth-topics-actions.spec.ts b/tests/auth-topics-actions.spec.ts new file mode 100644 index 00000000..4e4ad070 --- /dev/null +++ b/tests/auth-topics-actions.spec.ts @@ -0,0 +1,115 @@ +import { test, expect, type Page } from '@playwright/test'; +import https from 'https'; + + +/* Global starting test config */ + +let page: Page; + +function httpsGet(url: string): Promise { + return new Promise((resolve, reject) => { + https.get(url, { + rejectUnauthorized: false // Ignore SSL certificate errors + }, (res) => { + if (res.statusCode === 200) { + resolve(); + } else { + reject(new Error(`Request failed with status code ${res.statusCode}`)); + } + }).on('error', (error) => { + reject(error); + }); + }); +} +async function waitForServer(url: string, timeout: number = 150000) { + const start = Date.now(); + while (Date.now() - start < timeout) { + try { + await httpsGet(url); + return true; + } catch (error) { + // Ignore errors and try again + console.log (`Error fetching ${url}: ${error.message}`); + } + await new Promise((resolve) => setTimeout(resolve, 1000)); + } + throw new Error(`Server at ${url} did not start within ${timeout} ms`); +} +test.beforeAll(async ({ browser }) => { + console.log('Waiting for the server to start...'); + await new Promise((resolve) => setTimeout(resolve, 5000)); + const baseURL = 'https://localhost:3000'; + await waitForServer(baseURL); + page = await browser.newPage(); + test.setTimeout(150000); + await page.goto(baseURL); + await expect(page).toHaveTitle(/Дискурс/); + await page.getByRole('link', { name: 'Войти' }).click(); + console.log('Localhost server started successfully!'); + await page.close(); + }); +test.afterAll(async () => { + await page.close(); + }); + + +/* TESTS section */ + +/* Random Generator */ +function generateRandomString(length = 10) { + let result = ''; + const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + const charactersLength = characters.length; + for (let i = 0; i < length; i++) { + result += characters.charAt(Math.floor(Math.random() * charactersLength)); + } + return result; +} + +test.beforeEach(async ({ page }) => { + await page.goto(`/`); + /* test.setTimeout(80000); */ + await page.getByRole('link', { name: 'Войти' }).click(); + await page.getByPlaceholder('Почта').click(); + await page.getByPlaceholder('Почта').fill('guests@discours.io'); + await page.getByPlaceholder('Пароль').click(); + await page.getByPlaceholder('Пароль').fill('Gue$tP@ss'); + await page.getByRole('button', { name: 'Войти' }).click(); +}); + +test.describe('Topic Actions', () => { + test('Follow topic', async ({ page }) => { + await page.getByRole('link', { name: 'темы', exact: true }).click(); + await page.getByRole('link', { name: 'Общество Статьи о политике, экономике и обществе, об актуальных событиях, людях, мнениях. Тексты про историю и современность, про то, что происходит в России и мире' }).click(); + await page.getByRole('button', { name: 'Подписаться на тему' }).click(); + await expect(page.getByRole('button', { name: 'Отписаться от темы' })).toBeVisible(); + }); + test('Unfollow topic', async ({ page }) => { + await page.getByRole('link', { name: 'темы', exact: true }).click(); + await page.getByRole('link', { name: 'Общество Статьи о политике, экономике и обществе, об актуальных событиях, людях, мнениях. Тексты про историю и современность, про то, что происходит в России и мире' }).click(); + await page.getByRole('button', { name: 'Отписаться от темы' }).click(); + await expect(page.getByRole('button', { name: 'Подписаться на тему' })).toBeVisible(); + }); + test('Add comment to topic', async ({ page }) => { + const randomString = generateRandomString(); + const currentDate = new Date(); + await page.getByRole('button', { name: 'Т.Р' }).click(); + await page.getByRole('link', { name: 'Профиль' }).click(); + await page.getByRole('link', { name: 'Тестируем функционал' }).first().click(); + await page.locator('.tiptap').click(); + await page.locator('.tiptap').fill('Проверка Комментариев: ' + randomString + ' ' + currentDate); + await page.getByRole('button', { name: 'Отправить' }).click(); + await expect(page.getByText('Проверка Комментариев: ' + randomString + ' ' + currentDate)).toBeVisible(); + }); + test('Edit comment to topic', async ({ page }) => { + await page.getByRole('button', { name: 'Т.Р' }).click(); + await page.getByRole('link', { name: 'Комментарии' }).click(); + await page.locator('[id^="comment_"]').filter({ hasText: 'Проверка Комментариев' }).first().hover(); + await page.getByRole('button', { name: 'Редактировать', exact: true }).first().click(); + const randomString = generateRandomString(); + const currentDate = new Date(); + await page.locator('.tiptap').fill('Редактируемый Комментарий: ' + randomString + ' ' + currentDate); + await page.getByRole('button', { name: 'Сохранить' }).click(); + await expect(page.getByText('Редактируемый Комментарий: ' + randomString + ' ' + currentDate)).toBeVisible(); + }); +}); \ No newline at end of file diff --git a/tests/auth-user-actions.spec.ts b/tests/auth-user-actions.spec.ts new file mode 100644 index 00000000..cf2b157b --- /dev/null +++ b/tests/auth-user-actions.spec.ts @@ -0,0 +1,111 @@ +import { test, expect, type Page } from '@playwright/test'; +import https from 'https'; + +let context: any; +let page: Page; + +/* Global starting test config */ + +function httpsGet(url: string): Promise { + return new Promise((resolve, reject) => { + https.get(url, { + rejectUnauthorized: false // Ignore SSL certificate errors + }, (res) => { + if (res.statusCode === 200) { + resolve(); + } else { + reject(new Error(`Request failed with status code ${res.statusCode}`)); + } + }).on('error', (error) => { + reject(error); + }); + }); +} +async function waitForServer(url: string, timeout: number = 150000) { + const start = Date.now(); + while (Date.now() - start < timeout) { + try { + await httpsGet(url); + return true; + } catch (error) { + // Ignore errors and try again + console.log (`Error fetching ${url}: ${error.message}`); + } + await new Promise((resolve) => setTimeout(resolve, 1000)); + } + throw new Error(`Server at ${url} did not start within ${timeout} ms`); +} +test.beforeAll(async ({ browser }) => { + console.log('Waiting for the server to start...'); + await new Promise((resolve) => setTimeout(resolve, 5000)); + const baseURL = 'https://localhost:3000'; + await waitForServer(baseURL); + context = await browser.newContext(); + page = await context.newPage(); + test.setTimeout(150000); + await page.goto(baseURL); + await expect(page).toHaveTitle(/Дискурс/); + await page.getByRole('link', { name: 'Войти' }).click(); + console.log('Localhost server started successfully!'); + await page.close(); + }); + +/* TESTS section */ + +/* Random Generator */ +function generateRandomString(length = 10) { + let result = ''; + const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + const charactersLength = characters.length; + for (let i = 0; i < length; i++) { + result += characters.charAt(Math.floor(Math.random() * charactersLength)); + } + return result; +} + +test.beforeEach(async ({page}) => { + await page.goto(`/`); + /* test.setTimeout(80000); */ + await page.getByRole('link', { name: 'Войти' }).click(); + await page.getByPlaceholder('Почта').click(); + await page.getByPlaceholder('Почта').fill('guests@discours.io'); + await page.getByPlaceholder('Пароль').click(); + await page.getByPlaceholder('Пароль').fill('Gue$tP@ss'); + await page.getByRole('button', { name: 'Войти' }).click(); +}); + +test.describe('User Actions', () => { + test('User sandwitch menu', async ({page}) => { + await page.getByRole('button', { name: 'Т.Р' }).click(); + await expect(page.getByRole('link', { name: 'Профиль' })).toBeVisible(); + await page.getByRole('button', { name: 'Т.Р' }).click(); + }); + test('Follow user', async ({page}) => { + await page.getByRole('link', { name: 'авторы', exact: true }).click(); + await page.getByRole('link', { name: 'Дискурс На сайте c 16 июня' }).click(); + await page.getByRole('button', { name: 'Подписаться' }).click(); + await expect(page.getByRole('main').getByRole('button', { name: 'Вы подписаны' })).toBeVisible(); + }); + test('Unfollow user', async ({page}) => { + await page.getByRole('link', { name: 'авторы', exact: true }).click(); + await page.getByRole('link', { name: 'Дискурс На сайте c 16 июня' }).click(); + await page.getByRole('button', { name: 'Вы подписаны' }).click(); + await expect(page.getByRole('main').getByRole('button', { name: 'Подписаться' })).toBeVisible(); + }); + test('Change user data', async ({page}) => { + await page.getByRole('button', { name: 'Т.Р' }).click(); + await page.getByRole('link', { name: 'Профиль' }).click(); + await page.getByRole('button', { name: 'Редактировать профиль' }).click(); + await page.locator('.tiptap').click(); + const randomString = generateRandomString(); + const currentDate = new Date(); + await page.locator('.tiptap').fill('test: ' + randomString + ' ' + currentDate); + try { + const button = await page.getByRole('button', { name: 'Сохранить настройки' }); + await button.click(); + } catch (error) { + console.log('Button has disappeared'); + } + await expect(page.getByText('test: ' + randomString + ' ' + currentDate)).toBeVisible(); + }); +}); \ No newline at end of file diff --git a/tests/auth-user-test.spec.ts b/tests/auth-user-test.spec.ts deleted file mode 100644 index ceaa3dd1..00000000 --- a/tests/auth-user-test.spec.ts +++ /dev/null @@ -1,185 +0,0 @@ -import { test, expect } from '@playwright/test'; - -const baseHost = process.env.BASE_HOST || 'https://localhost:3000' - -function generateRandomString(length = 10) { - let result = ''; - const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; - const charactersLength = characters.length; - for (let i = 0; i < length; i++) { - result += characters.charAt(Math.floor(Math.random() * charactersLength)); - } - return result; -} - -async function login(page) { - await page.getByRole('link', { name: 'Войти' }).click(); - await page.getByPlaceholder('Почта').click(); - await page.getByPlaceholder('Почта').fill('guests@discours.io'); - await page.getByPlaceholder('Пароль').click(); - await page.getByPlaceholder('Пароль').fill('Gue$tP@ss'); - await page.getByRole('button', { name: 'Войти' }).click(); -} - -/* Done */ -test('Open Page', async ({ page }) => { - await page.goto(`${baseHost}/`); - await expect(page.getByRole('link', { name: 'Дискурс', exact: true })).toBeVisible(); -}); - -/* Done */ -test('Login', async ({ page }) => { - await page.goto(`${baseHost}/`); - await login(page); - await expect(page.locator('div:nth-child(4) > a').first()).toBeVisible(); -}); - -test('Drafts - create article', async ({ page }) => { - await page.goto(`${baseHost}/`); - await login(page); - await expect(page.locator('div:nth-child(4) > a').first()).toBeVisible(); - await page.getByRole('button', { name: 'Т.Р' }).click(); - await page.getByRole('link', { name: 'Черновики' }).click(); - await page.getByRole('link', { name: 'Создать публикацию' }).click(); - await page.locator('li').filter({ hasText: 'статья' }).locator('img').click(); - /* Fill the form */ - /* Save */ - /* Check is it created */ -}); - -test('Drafts - create literature', async ({ page }) => { - await page.goto(`${baseHost}/`); - await login(page); - await expect(page.locator('div:nth-child(4) > a').first()).toBeVisible(); - await page.getByRole('button', { name: 'Т.Р' }).click(); - await page.getByRole('link', { name: 'Черновики' }).click(); - await page.getByRole('link', { name: 'Создать публикацию' }).click(); - await page.locator('li').filter({ hasText: /^литература$/ }).locator('img').click(); - /* Fill the form */ - /* Save */ - /* Check is it created */ -}); - -test('Drafts - create images', async ({ page }) => { - await page.goto(`${baseHost}/`); - await login(page);; - await expect(page.locator('div:nth-child(4) > a').first()).toBeVisible(); - await page.getByRole('button', { name: 'Т.Р' }).click(); - await page.getByRole('link', { name: 'Черновики' }).click(); - await page.getByRole('link', { name: 'Создать публикацию' }).click(); - await page.locator('li').filter({ hasText: 'изображения' }).locator('img').click(); - /* Fill the form */ - /* Save */ - /* Check is it created */ -}); - -test('Drafts - create music', async ({ page }) => { - await page.goto(`${baseHost}/`); - await login(page); - await expect(page.locator('div:nth-child(4) > a').first()).toBeVisible(); - await page.getByRole('button', { name: 'Т.Р' }).click(); - await page.getByRole('link', { name: 'Черновики' }).click(); - await page.getByRole('link', { name: 'Создать публикацию' }).click(); - await page.locator('li').filter({ hasText: 'музыка' }).locator('img').click(); - /* Fill the form */ - /* Save */ - /* Check is it created */ -}); - -test('Drafts - create video', async ({ page }) => { - await page.goto(`${baseHost}/`); - await login(page); - await expect(page.locator('div:nth-child(4) > a').first()).toBeVisible(); - await page.getByRole('button', { name: 'Т.Р' }).click(); - await page.getByRole('link', { name: 'Черновики' }).click(); - await page.getByRole('link', { name: 'Создать публикацию' }).click(); - await page.locator('li').filter({ hasText: 'видео' }).locator('img').click(); - /* Fill the form */ - /* Save */ - /* Check is it created */ -}); - - -test('Post topic', async ({ page }) => { - await page.goto(`${baseHost}/`); - await login(page); - await expect(page.locator('div:nth-child(4) > a').first()).toBeVisible(); - /* Open Draft */ - /* Post */ -}); - -test('Subscribe to user', async ({ page }) => { - await page.goto(`${baseHost}/`); - await login(page); - await expect(page.locator('div:nth-child(4) > a').first()).toBeVisible(); - await page.goto(`${baseHost}/author/discours`); - await page.getByRole('main').getByRole('button', { name: 'Подписаться' }).click(); - /* Check is it subscribed */ -}); - -/* Done */ -test('Subscribe to topic', async ({ page }) => { - await page.goto(`${baseHost}/topic/society`); - await page.getByRole('button', { name: 'Подписаться на тему' }).click(); - await page.getByPlaceholder('Почта').click(); - await page.getByPlaceholder('Почта').fill('guests@discours.io'); - await page.getByPlaceholder('Пароль').click(); - await page.getByPlaceholder('Пароль').fill('Gue$tP@ss'); - await page.getByRole('button', { name: 'Войти' }).click(); - await expect(page.getByRole('button', { name: 'Подписаться на тему' })).toBeVisible(); - await page.getByRole('button', { name: 'Подписаться на тему' }).click(); -}); - -/* Done */ -test('Un - Subscribe to topic', async ({ page }) => { - await page.goto(`${baseHost}/topic/society`); - await login(page); - await expect(page.getByRole('button', { name: 'Отписаться от темы' })).toBeVisible(); - await page.getByRole('button', { name: 'Отписаться от темы' }).click(); -}); - -/* Done */ -test('Change user data', async ({ page }) => { - await page.goto(`${baseHost}/`); - await login(page); - await expect(page.locator('div:nth-child(4) > a').first()).toBeVisible(); - await page.getByRole('button', { name: 'Т.Р' }).click(); - await page.getByRole('link', { name: 'Профиль' }).click(); - await page.getByRole('button', { name: 'Редактировать профиль' }).click(); - await page.locator('.tiptap').click(); - const randomString = generateRandomString(); - const currentDate = new Date(); - await page.locator('.tiptap').fill('test: ' + randomString + ' ' + currentDate); - try { - const button = await page.getByRole('button', { name: 'Сохранить настройки' }); - await button.click(); - } catch (error) { - console.log('Button has disappeared'); - } - await expect(page.getByText('test: ' + randomString + ' ' + currentDate)).toBeVisible(); -}); - -/* Done */ -test('Add comment to topic', async ({ page }) => { - await page.goto(`${baseHost}/v-peschere-u-tsiklopa/`); - await login(page); - const randomString = generateRandomString(); - const currentDate = new Date(); - await page.locator('.tiptap').click(); - await page.locator('.tiptap').fill('Проверка Комментариев: ' + randomString + ' ' + currentDate); - await page.getByRole('button', { name: 'Отправить' }).click(); - await expect(page.getByText('Проверка Комментариев: ' + randomString + ' ' + currentDate)).toBeVisible(); -}); - -/* Done */ -test('Edit comment to topic', async ({ page }) => { - await page.goto(`${baseHost}/author/testdev/comments`); - await login(page); - const firstCommentEditButton = await page.locator('._32U0J.WXcGK').first(); - await firstCommentEditButton.click(); - const randomString = generateRandomString(); - const currentDate = new Date(); - await page.locator('.tiptap').fill('Редактируемый Комментарий: ' + randomString + ' ' + currentDate); - await page.getByRole('button', { name: 'Сохранить' }).click(); - await expect(page.getByText('Редактируемый Комментарий: ' + randomString + ' ' + currentDate)).toBeVisible(); -}); \ No newline at end of file diff --git a/tests/basic-routes.spec.ts b/tests/basic-routes.spec.ts deleted file mode 100644 index b904fbef..00000000 --- a/tests/basic-routes.spec.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { expect, test } from '@playwright/test' - -const baseHost = process.env.BASE_HOST || 'https://localhost:3000' - -const pagesTitles = { - '/': /Дискурс/, - '/feed': /Лента/, - '/create': /Выберите тип публикации/, - '/about/help': /Поддержите Дискурс/, - '/authors': /Авторы/, - '/topics': /Темы и сюжеты/, - '/inbox': /Входящие/, -} - -Object.keys(pagesTitles).forEach((res: string) => { - test(`страница ${res}`, async ({ page }) => { - await page.goto(`${baseHost}${res}`) - const title = pagesTitles[res] - await expect(page).toHaveTitle(title) - }) -}) diff --git a/tests/basic-routes.test.js b/tests/basic-routes.test.js deleted file mode 100644 index a3ffcf78..00000000 --- a/tests/basic-routes.test.js +++ /dev/null @@ -1,37 +0,0 @@ -import { chromium } from 'playwright' -;(async () => { - const browser = await chromium.launch() - const context = await browser.newContext() - - // Define the URLs to visit - const pagesToVisit = [ - 'https://localhost:3000/', - 'https://localhost:3000/feed', - 'https://localhost:3000/create', - 'https://localhost:3000/about/donate', - 'https://localhost:3000/authors', - 'https://localhost:3000/topics', - 'https://localhost:3000/inbox', - ] - - // Loop through the pages and visit each one - for (const pageUrl of pagesToVisit) { - const page = await context.newPage() - - // Log a message before visiting the page - console.log(`Visiting page: ${pageUrl}`) - - await page.goto(pageUrl) - - // Add your test assertions here if needed - - // Log a message after visiting the page - console.log(`Finished visiting page: ${pageUrl}`) - - // Close the page before moving to the next one - await page.close() - } - - // Close the browser - await browser.close() -})() diff --git a/tests/page-sections.spec.ts b/tests/page-sections.spec.ts new file mode 100644 index 00000000..7ee6aeb6 --- /dev/null +++ b/tests/page-sections.spec.ts @@ -0,0 +1,71 @@ +import { test, expect, type Page } from '@playwright/test'; +import https from 'https'; + +/* Global starting test config */ + +let page: Page; + +function httpsGet(url: string): Promise { + return new Promise((resolve, reject) => { + https.get(url, { + rejectUnauthorized: false // Ignore SSL certificate errors + }, (res) => { + if (res.statusCode === 200) { + resolve(); + } else { + reject(new Error(`Request failed with status code ${res.statusCode}`)); + } + }).on('error', (error) => { + reject(error); + }); + }); +} +async function waitForServer(url: string, timeout: number = 150000) { + const start = Date.now(); + while (Date.now() - start < timeout) { + try { + await httpsGet(url); + return true; + } catch (error) { + // Ignore errors and try again + console.log (`Error fetching ${url}: ${error.message}`); + } + await new Promise((resolve) => setTimeout(resolve, 1000)); + } + throw new Error(`Server at ${url} did not start within ${timeout} ms`); +} +test.beforeAll(async ({ browser }) => { + console.log('Waiting for the server to start...'); + await new Promise((resolve) => setTimeout(resolve, 5000)); + const baseURL = 'https://localhost:3000'; + await waitForServer(baseURL); + page = await browser.newPage(); + test.setTimeout(150000); + await page.goto(baseURL); + await expect(page).toHaveTitle(/Дискурс/); + console.log('Localhost server started successfully!'); + }); +test.afterAll(async () => { + await page.close(); + }); + + +/* TESTS section */ + +const pagesTitles = { + '/': /Дискурс/, + '/feed': /Лента/, + '/about/help': /Поддержите Дискурс/, + '/authors': /Авторы/, + '/topics': /Темы и сюжеты/, + '/inbox': /Входящие/, +} +test.describe('Pages open', () => { + Object.keys(pagesTitles).forEach((res: string) => { + test(`Open Page ${res}`, async ({ page }) => { + await page.goto(`${res}`) + const title = pagesTitles[res] + await expect(page).toHaveTitle(title) + }) + }) +}); \ No newline at end of file From d5e95eb7bdab1157559af5106dfe3a55b6308cf5 Mon Sep 17 00:00:00 2001 From: Stepan Vladovskiy Date: Wed, 19 Jun 2024 01:06:59 +0000 Subject: [PATCH 006/132] feat: added in gitignore devcontainers --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 6dca0a65..e99780fe 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.devcontainer dist/ node_modules/ npm-debug.log* @@ -22,4 +23,5 @@ bun.lockb /blob-report/ /playwright/.cache/ /plawright-report/ -target \ No newline at end of file +target +.github/dependabot.yml From c1bd6148459f8674f1f089864a8f5855d45c5200 Mon Sep 17 00:00:00 2001 From: Stepan Vladovskiy Date: Wed, 19 Jun 2024 01:10:27 +0000 Subject: [PATCH 007/132] style: Readme with worker 1 info --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index adfadc64..0d587229 100644 --- a/README.md +++ b/README.md @@ -46,4 +46,7 @@ Follow these steps: ## Additional Information +If workers is no needed use: +- `npx playwright test --project=webkit --workers 4` + For more information on how to write tests using Playwright - [Playwright documentation](https://playwright.dev/docs/intro). From d2771ac2a4716eb3511a5754ed64266fc0b013d9 Mon Sep 17 00:00:00 2001 From: Untone Date: Mon, 1 Jul 2024 16:57:30 +0300 Subject: [PATCH 008/132] vercel-adapt --- deploy.sh | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/deploy.sh b/deploy.sh index 9261d0d8..dbcafce1 100644 --- a/deploy.sh +++ b/deploy.sh @@ -1,8 +1,7 @@ -if [ - "$(git rev-parse --abbrev-ref HEAD)" = "router-upgrade" - ] || [ - "$(git rev-parse --abbrev-ref HEAD)" = "feature/rating" - ]; -then exit 1; -else exit 0; +if [ "$VERCEL_GIT_COMMIT_REF" = "router-upgrade" ] || [ "$VERCEL_GIT_COMMIT_REF" = "feature/rating" ]; then + echo "Building on solid start" + exit 1 +else + echo "Not on solid start" + exit 0 fi From e4390d83e6241c2852290440914af308571ef56a Mon Sep 17 00:00:00 2001 From: Untone Date: Mon, 1 Jul 2024 18:30:45 +0300 Subject: [PATCH 009/132] header-links-fix --- src/components/Nav/Header/Header.tsx | 103 +++++++++--------- .../Views/AllAuthors/AllAuthors.tsx | 22 ++-- src/routes/topics.tsx | 2 +- 3 files changed, 66 insertions(+), 61 deletions(-) diff --git a/src/components/Nav/Header/Header.tsx b/src/components/Nav/Header/Header.tsx index 9c88d968..7a686bdb 100644 --- a/src/components/Nav/Header/Header.tsx +++ b/src/components/Nav/Header/Header.tsx @@ -17,7 +17,6 @@ import { HeaderAuth } from '../HeaderAuth' import { Modal } from '../Modal' import { SearchModal } from '../SearchModal/SearchModal' import { Snackbar } from '../Snackbar' -import { Link } from './Link' import { A, useLocation, useNavigate, useSearchParams } from '@solidjs/router' import styles from './Header.module.scss' @@ -209,58 +208,64 @@ export const Header = (props: Props) => {
@@ -415,40 +420,40 @@ export const Header = (props: Props) => { >
@@ -464,17 +469,17 @@ export const Header = (props: Props) => { {(topic: Topic) => (
  • - + #{tag(topic)} - +
  • )}
  • - + {t('All topics')} - +
  • diff --git a/src/components/Views/AllAuthors/AllAuthors.tsx b/src/components/Views/AllAuthors/AllAuthors.tsx index d064572b..b8fa3e0a 100644 --- a/src/components/Views/AllAuthors/AllAuthors.tsx +++ b/src/components/Views/AllAuthors/AllAuthors.tsx @@ -41,7 +41,7 @@ export const AllAuthors = (props: Props) => { }) const filteredAuthors = createMemo(() => { const query = searchQuery().toLowerCase() - return authorsSorted().filter((author: Author) => { + return authorsSorted?.().filter((author: Author) => { // Предполагаем, что у автора есть свойство name return author?.name?.toLowerCase().includes(query) }) @@ -62,22 +62,22 @@ export const AllAuthors = (props: Props) => { return keys }) - const ogImage = getImageUrl('production/image/logo_image.png') - const ogTitle = t('Authors') - const description = t('List of authors of the open editorial community') + const ogImage = createMemo(() => getImageUrl('production/image/logo_image.png')) + const ogTitle = createMemo(() => t('Authors')) + const description = createMemo(() => t('List of authors of the open editorial community')) return (
    - + - - - - + + + + - - + + }>
    diff --git a/src/routes/topics.tsx b/src/routes/topics.tsx index 2796d911..0a2a588f 100644 --- a/src/routes/topics.tsx +++ b/src/routes/topics.tsx @@ -25,7 +25,7 @@ export default function AllTopicsPage(props: RouteSectionProps<{ topics: Topic[] }> - + From e1275b76eab48c39d2eb3f791f00675cfcff1a91 Mon Sep 17 00:00:00 2001 From: Untone Date: Wed, 3 Jul 2024 10:02:46 +0300 Subject: [PATCH 010/132] navheader-fix --- public/locales/en/translation.json | 52 +++++++------- public/locales/ru/translation.json | 48 ++++++------- src/components/Nav/Header/Header.tsx | 70 +++++-------------- src/components/Nav/Header/Link.tsx | 38 ---------- .../Views/AllAuthors/AllAuthors.tsx | 19 ++--- src/components/Views/AllTopics/AllTopics.tsx | 16 ++--- src/graphql/client/core.ts | 1 + src/routes/authors.tsx | 2 +- 8 files changed, 87 insertions(+), 159 deletions(-) delete mode 100644 src/components/Nav/Header/Link.tsx create mode 100644 src/graphql/client/core.ts diff --git a/public/locales/en/translation.json b/public/locales/en/translation.json index 489ce382..5f8ccc12 100644 --- a/public/locales/en/translation.json +++ b/public/locales/en/translation.json @@ -15,8 +15,8 @@ "Add image": "Add image", "Add images": "Add images", "Add intro": "Add intro", - "add link": "add link", "Add link": "Add link", + "add link": "add link", "Add rule": "Add rule", "Add signature": "Add signature", "Add subtitle": "Add subtitle", @@ -30,8 +30,8 @@ "All articles": "All articles", "All authors": "All authors", "All posts": "All posts", - "all topics": "all topics", "All topics": "All topics", + "all topics": "all topics", "Almost done! Check your email.": "Almost done! Just checking your email.", "and some more authors": "{restUsersCount, plural, =0 {} one { and one more user} other { and more {restUsersCount} users}}", "Anything else": "Anything else", @@ -43,10 +43,10 @@ "Artist": "Artist", "Artworks": "Artworks", "Audio": "Audio", - "author": "author", "Author": "Author", - "authors": "authors", + "author": "author", "Authors": "Authors", + "authors": "authors", "Autotypograph": "Autotypograph", "Back": "Back", "Back to editor": "Back to editor", @@ -54,11 +54,11 @@ "back to menu": "back to menu", "Be the first to rate": "Be the first to rate", "Become an author": "Become an author", - "bold": "bold", "Bold": "Bold", + "bold": "bold", "Bookmarked": "Saved", - "bookmarks": "bookmarks", "Bookmarks": "Bookmarks", + "bookmarks": "bookmarks", "Bullet list": "Bullet list", "By alphabet": "By alphabet", "By authors": "By authors", @@ -75,8 +75,8 @@ "Can make any changes, accept or reject suggestions, and share access with others": "Can make any changes, accept or reject suggestions, and share access with others", "Can offer edits and comments, but cannot edit the post or share access with others": "Can offer edits and comments, but cannot edit the post or share access with others", "Can write and edit text directly, and accept or reject suggestions from others": "Can write and edit text directly, and accept or reject suggestions from others", - "cancel": "cancel", "Cancel": "Cancel", + "cancel": "cancel", "Cancel changes": "Cancel changes", "Change password": "Change password", "Characters": "Знаков", @@ -88,8 +88,8 @@ "Co-author": "Co-author", "Collaborate": "Help Edit", "Collaborators": "Collaborators", - "collections": "collections", "Collections": "Collections", + "collections": "collections", "Come up with a subtitle for your story": "Come up with a subtitle for your story", "Come up with a title for your story": "Come up with a title for your story", "Coming soon": "Coming soon", @@ -148,8 +148,8 @@ "Dogma": "Dogma", "dogma keywords": "Discours.io, dogma, editorial principles, code of ethics, journalism, community", "Draft successfully deleted": "Draft successfully deleted", - "drafts": "drafts", "Drafts": "Drafts", + "drafts": "drafts", "Drag the image to this area": "Drag the image to this area", "Each image must be no larger than 5 MB.": "Each image must be no larger than 5 MB.", "earlier": "earlier", @@ -159,8 +159,8 @@ "Editor": "Editor", "Email": "Mail", "email not confirmed": "email not confirmed", - "enter": "enter", "Enter": "Enter", + "enter": "enter", "Enter a new password": "Enter a new password", "Enter footnote text": "Enter footnote text", "Enter image description": "Enter image description", @@ -175,8 +175,8 @@ "FAQ": "Tips and suggestions", "Favorite": "Favorites", "Favorite topics": "Favorite topics", - "feed": "feed", "Feed": "Feed", + "feed": "feed", "Feed settings": "Feed settings", "Feedback": "Feedback", "Fill email": "Fill email", @@ -196,12 +196,13 @@ "Go to main page": "Go to main page", "Group Chat": "Group Chat", "Groups": "Groups", - "header 1": "header 1", + "guide": "Knowledge base", "Header 1": "Header 1", - "header 2": "header 2", + "header 1": "header 1", "Header 2": "Header 2", - "header 3": "header 3", + "header 2": "header 2", "Header 3": "Header 3", + "header 3": "header 3", "Headers": "Headers", "Help": "Помощь", "Help to edit": "Help to edit", @@ -247,8 +248,8 @@ "Invite to collab": "Invite to Collab", "It does not look like url": "It doesn't look like a link", "It's OK. Just enter your email to receive a link to change your password": "It's OK. Just enter your email to receive a link to change your password", - "italic": "italic", "Italic": "Italic", + "italic": "italic", "Join": "Join", "Join our maillist": "To receive the best postings, just enter your email", "Join the community": "Join the community", @@ -257,7 +258,6 @@ "jpg, .png, max. 10 mb.": "jpg, .png, макс. 10 мб.", "Just start typing...": "Just start typing...", "keywords": "Discours.io, Discours magazine, Discours, culture, science, art, society, independent journalism, literature, music, cinema, video, photography", - "Knowledge base": "Knowledge base", "Language": "Language", "Last rev.": "Посл. изм.", "Let's log in": "Let's log in", @@ -266,8 +266,8 @@ "Link sent, check your email": "Link sent, check your email", "List of authors of the open editorial community": "List of authors of the open editorial community", "Lists": "Lists", - "literature": "literature", "Literature": "Literature", + "literature": "literature", "Load more": "Show more", "Loading": "Loading", "Login and security": "Login and security", @@ -287,10 +287,10 @@ "Most read": "Readable", "Move down": "Move down", "Move up": "Move up", - "music": "music", "Music": "Music", - "my feed": "my ribbon", + "music": "music", "My feed": "My feed", + "my feed": "my ribbon", "My subscriptions": "Subscriptions", "Name": "Name", "New literary work": "New literary work", @@ -414,8 +414,8 @@ "Song title": "Song title", "Soon": "Скоро", "Sorry, this address is already taken, please choose another one.": "Sorry, this address is already taken, please choose another one", - "Special projects": "Special projects", "Special Projects": "Special Projects", + "Special projects": "Special projects", "Specify the source and the name of the author": "Specify the source and the name of the author", "Specify your e-mail and we will reply.": "Specify your e-mail and we will reply.", "Start conversation": "Start a conversation", @@ -429,13 +429,13 @@ "subscriber": "subscriber", "subscriber_rp": "subscriber", "subscribers": "subscribers", - "Subscribing...": "Subscribing...", "subscribing...": "subscribing...", - "subscription": "subscription", + "Subscribing...": "Subscribing...", "Subscription": "Subscription", + "subscription": "subscription", "subscription_rp": "subscription", - "subscriptions": "subscriptions", "Subscriptions": "Subscriptions", + "subscriptions": "subscriptions", "Substrate": "Substrate", "Success": "Success", "Successfully authorized": "Authorization successful", @@ -443,8 +443,8 @@ "Support Discours": "Support Discours", "Support the project": "Support the project", "Support us": "Support us", - "terms of use": "terms of use", "Terms of use": "Site rules", + "terms of use": "terms of use", "terms of use keywords": "Discours.io, site rules, terms of use", "Text checking": "Text checking", "Thank you": "Thank you", @@ -485,8 +485,8 @@ "Top viewed": "Most viewed", "Topic is supported by": "Topic is supported by", "topicKeywords": "{topic}, Discours.io, articles, journalism, research", - "topics": "topics", "Topics": "Topics", + "topics": "topics", "Topics which supported by author": "Topics which supported by author", "try": "попробуйте", "Try to find another way": "Try to find another way", @@ -505,8 +505,8 @@ "Userpic": "Userpic", "Users": "Users", "verified": "verified", - "video": "video", "Video": "Video", + "video": "video", "Video format not supported": "Video format not supported", "view": "view", "Views": "Views", diff --git a/public/locales/ru/translation.json b/public/locales/ru/translation.json index bf097e77..81b53f71 100644 --- a/public/locales/ru/translation.json +++ b/public/locales/ru/translation.json @@ -16,8 +16,8 @@ "Add image": "Добавить изображение", "Add images": "Добавить изображения", "Add intro": "Добавить вступление", - "Add link": "Добавить ссылку", "add link": "добавить ссылку", + "Add link": "Добавить ссылку", "Add rule": "Добавить разделитель", "Add signature": "Добавить подпись", "Add subtitle": "Добавить подзаголовок", @@ -33,8 +33,8 @@ "All authors": "Все авторы", "All posts": "Все публикации", "All posts rating": "Рейтинг всех постов", - "All topics": "Все темы", "all topics": "все темы", + "All topics": "Все темы", "Almost done! Check your email.": "Почти готово! Осталось подтвердить вашу почту.", "and some more authors": "{restUsersCount, plural, =0 {} one { и ещё 1 пользователя} few { и ещё {restUsersCount} пользователей} other { и ещё {restUsersCount} пользователей}}", "Anything else": "Что-либо ещё", @@ -47,10 +47,10 @@ "Artist...": "Исполнитель...", "Artworks": "Артворки", "Audio": "Аудио", - "Author": "Автор", "author": "автор", - "Authors": "Авторы", + "Author": "Автор", "authors": "авторы", + "Authors": "Авторы", "Autotypograph": "Автотипограф", "Back": "Назад", "Back to editor": "Вернуться в редактор", @@ -58,11 +58,11 @@ "back to menu": "назад в меню", "Be the first to rate": "Оцените первым", "Become an author": "Стать автором", - "Bold": "Жирный", "bold": "жирный", + "Bold": "Жирный", "Bookmarked": "Сохранено", - "Bookmarks": "Закладки", "bookmarks": "закладки", + "Bookmarks": "Закладки", "Bullet list": "Маркированный список", "By alphabet": "По алфавиту", "By authors": "По авторам", @@ -79,8 +79,8 @@ "Can make any changes, accept or reject suggestions, and share access with others": "Может вносить любые изменения, принимать и отклонять предложения, а также делиться доступом с другими", "Can offer edits and comments, but cannot edit the post or share access with others": "Может предлагать правки и комментарии, но не может изменять пост и делиться доступом с другими", "Can write and edit text directly, and accept or reject suggestions from others": "Может писать и редактировать текст напрямую, а также принимать или отклонять предложения других", - "Cancel": "Отмена", "cancel": "отменить", + "Cancel": "Отмена", "Cancel changes": "Отменить изменения", "Change password": "Сменить пароль", "Characters": "Знаков", @@ -92,8 +92,8 @@ "Co-author": "Соавтор", "Collaborate": "Помочь редактировать", "Collaborators": "Соавторы", - "Collections": "Коллекции", "collections": "коллекции", + "Collections": "Коллекции", "Come up with a subtitle for your story": "Придумайте подзаголовок вашей истории", "Come up with a title for your story": "Придумайте заголовок вашей истории", "Coming soon": "Уже скоро", @@ -156,8 +156,8 @@ "Dogma": "Догма", "dogma keywords": "Discours.io, догма, редакционные принципы, этический кодекс, журналистика, сообщество", "Draft successfully deleted": "Черновик успешно удален", - "Drafts": "Черновики", "drafts": "черновики", + "Drafts": "Черновики", "Drag the image to this area": "Перетащите изображение в эту область", "Each image must be no larger than 5 MB.": "Каждое изображение должно быть размером не больше 5 мб.", "earlier": "ранее", @@ -167,8 +167,8 @@ "Editor": "Редактор", "Email": "Почта", "email not confirmed": "email не подтвержден", - "Enter": "Войти", "enter": "войти", + "Enter": "Войти", "Enter a new password": "Введите новый пароль", "Enter footnote text": "Введите текст сноски", "Enter image description": "Введите описание изображения", @@ -183,8 +183,8 @@ "FAQ": "Советы и предложения", "Favorite": "Избранное", "Favorite topics": "Избранные темы", - "Feed": "Лента", "feed": "лента", + "Feed": "Лента", "Feed settings": "Настроить ленту", "Feedback": "Обратная связь", "Fill email": "Введите почту", @@ -206,13 +206,14 @@ "Go to main page": "Перейти на главную", "Group Chat": "Общий чат", "Groups": "Группы", + "guide": "База знаний", "Header": "Заголовок", - "Header 1": "Заголовок 1", "header 1": "заголовок 1", - "Header 2": "Заголовок 2", + "Header 1": "Заголовок 1", "header 2": "заголовок 2", - "Header 3": "Заголовок 3", + "Header 2": "Заголовок 2", "header 3": "заголовок 3", + "Header 3": "Заголовок 3", "Headers": "Заголовки", "Help": "Помощь", "Help to edit": "Помочь редактировать", @@ -259,8 +260,8 @@ "Invite to collab": "Пригласить к участию", "It does not look like url": "Это не похоже на ссылку", "It's OK. Just enter your email to receive a link to change your password": "Ничего страшного. Просто укажите свою почту, чтобы получить ссылку для смены пароля", - "Italic": "Курсив", "italic": "курсив", + "Italic": "Курсив", "Join": "Присоединиться", "Join our maillist": "Чтобы получать рассылку лучших публикаций, просто укажите свою почту", "Join the community": "Присоединиться к сообществу", @@ -270,7 +271,6 @@ "Just start typing...": "Просто начните печатать...", "Karma": "Карма", "keywords": "Discours.io, журнал Дискурс, Дискурс, культура, наука, искусство, общество, независимая журналистика, литература, музыка, кино, видео, фотографии", - "Knowledge base": "База знаний", "Language": "Язык", "Last rev.": "Посл. изм.", "Let's log in": "Давайте авторизуемся", @@ -279,8 +279,8 @@ "Link sent, check your email": "Ссылка отправлена, проверьте почту", "List of authors of the open editorial community": "Список авторов сообщества открытой редакции", "Lists": "Списки", - "Literature": "Литература", "literature": "литература", + "Literature": "Литература", "Load more": "Показать ещё", "Loading": "Загрузка", "Login and security": "Вход и безопасность", @@ -300,10 +300,10 @@ "Most read": "Читаемое", "Move down": "Переместить вниз", "Move up": "Переместить вверх", - "Music": "Музыка", "music": "музыка", - "My feed": "Моя лента", + "Music": "Музыка", "my feed": "моя лента", + "My feed": "Моя лента", "My subscriptions": "Подписки", "Name": "Имя", "New literary work": "Новое произведение", @@ -440,8 +440,8 @@ "Song title": "Название песни", "Soon": "Скоро", "Sorry, this address is already taken, please choose another one.": "Увы, этот адрес уже занят, выберите другой", - "Special Projects": "Спецпроекты", "Special projects": "Спецпроекты", + "Special Projects": "Спецпроекты", "Specify the source and the name of the author": "Укажите источник и имя автора", "Specify your e-mail and we will reply.": "Укажите ваш e-mail и мы обязательно ответим.", "squib": "Подверстка", @@ -457,8 +457,8 @@ "subscriber": "подписчик", "subscriber_rp": "подписчика", "subscribers": "подписчиков", - "subscribing...": "Подписка...", "Subscribing...": "Подписываем...", + "subscribing...": "Подписка...", "Subscription": "Подписка", "Subscriptions": "Подписки", "Substrate": "Подложка", @@ -468,8 +468,8 @@ "Support Discours": "Поддержите Дискурс", "Support the project": "Поддержать проект", "Support us": "Помочь журналу", - "Terms of use": "Правила сайта", "terms of use": "правилами пользования сайтом", + "Terms of use": "Правила сайта", "terms of use keywords": "Discours.io, правила сайта, terms of use", "Text checking": "Проверка текста", "Thank you": "Благодарности", @@ -510,8 +510,8 @@ "Top viewed": "Самое читаемое", "Topic is supported by": "Тему поддерживают", "topicKeywords": "{topic}, Discours.io, статьи, журналистика, исследования", - "Topics": "Темы", "topics": "темы", + "Topics": "Темы", "Topics which supported by author": "Автор поддерживает темы", "try": "попробуйте", "Try to find another way": "Попробуйте найти по-другому", @@ -530,8 +530,8 @@ "Userpic": "Аватар", "Users": "Пользователи", "verified": "уже подтверждён", - "Video": "Видео", "video": "видео", + "Video": "Видео", "Video format not supported": "Тип видео не поддерживается", "view": "просмотр", "Views": "Просмотры", diff --git a/src/components/Nav/Header/Header.tsx b/src/components/Nav/Header/Header.tsx index 7a686bdb..ef975e5e 100644 --- a/src/components/Nav/Header/Header.tsx +++ b/src/components/Nav/Header/Header.tsx @@ -1,6 +1,6 @@ +import { A, useLocation, useNavigate, useSearchParams } from '@solidjs/router' import { clsx } from 'clsx' import { For, Show, createEffect, createMemo, createSignal, onCleanup, onMount } from 'solid-js' - import { useUI } from '~/context/ui' import { useLocalize } from '../../../context/localize' import { useSession } from '../../../context/session' @@ -17,8 +17,6 @@ import { HeaderAuth } from '../HeaderAuth' import { Modal } from '../Modal' import { SearchModal } from '../SearchModal/SearchModal' import { Snackbar } from '../Snackbar' - -import { A, useLocation, useNavigate, useSearchParams } from '@solidjs/router' import styles from './Header.module.scss' type Props = { @@ -154,14 +152,9 @@ export const Header = (props: Props) => { const loc = useLocation() const handleToggleMenuByLink = (event: MouseEvent, route: string) => { event.preventDefault() - // console.debug('[Header] toggle menu link from', loc.pathname) - // console.debug('to', route) - if (!fixed()) return - if (loc.pathname.startsWith(route) || loc.pathname.startsWith(`/${route}`)) { - toggleFixed() - } navigate(route) } + return (
    {
    diff --git a/src/components/Nav/Header/Link.tsx b/src/components/Nav/Header/Link.tsx deleted file mode 100644 index 1dd2a12e..00000000 --- a/src/components/Nav/Header/Link.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { clsx } from 'clsx' - -import { ROUTES } from '../../../config/routes' -import { ConditionalWrapper } from '../../_shared/ConditionalWrapper' - -import { A, useMatch } from '@solidjs/router' -import { createMemo } from 'solid-js' -import styles from './Header.module.scss' - -type Props = { - onMouseOver: (event?: MouseEvent, time?: number) => void - onMouseOut: (event?: MouseEvent, time?: number) => void - routeName?: keyof typeof ROUTES - body: string - active?: boolean - onClick?: (event: MouseEvent) => void -} - -export const Link = (props: Props) => { - const matchRoute = useMatch(() => props.routeName || '') - const isSelected = createMemo(() => Boolean(matchRoute())) - return ( -
  • - {children}} - > - - {props.body} - - -
  • - ) -} diff --git a/src/components/Views/AllAuthors/AllAuthors.tsx b/src/components/Views/AllAuthors/AllAuthors.tsx index b8fa3e0a..60c5d404 100644 --- a/src/components/Views/AllAuthors/AllAuthors.tsx +++ b/src/components/Views/AllAuthors/AllAuthors.tsx @@ -22,12 +22,16 @@ type Props = { topWritingAuthors?: Author[] isLoaded: boolean } +export const AUTHORS_PER_PAGE = 20 +export const ABC = { + ru: 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ#', + en: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ#' +} export const AllAuthors = (props: Props) => { const { t, lang } = useLocalize() const [searchQuery, setSearchQuery] = createSignal('') - const ALPHABET = - lang() === 'ru' ? [...'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ@'] : [...'ABCDEFGHIJKLMNOPQRSTUVWXYZ@'] + const alphabet = createMemo(() => ABC[lang()] || ABC['ru']) const [searchParams] = useSearchParams<{ by?: string }>() const { authorsSorted, addAuthors, setSortBy } = useAuthors() @@ -41,15 +45,12 @@ export const AllAuthors = (props: Props) => { }) const filteredAuthors = createMemo(() => { const query = searchQuery().toLowerCase() - return authorsSorted?.().filter((author: Author) => { - // Предполагаем, что у автора есть свойство name - return author?.name?.toLowerCase().includes(query) - }) + return authorsSorted?.().filter((a: Author) => a?.name?.toLowerCase().includes(query)) }) const byLetterFiltered = createMemo<{ [letter: string]: Author[] }>(() => { return filteredAuthors().reduce( - (acc, author) => authorLetterReduce(acc, author, lang()), + (acc, author: Author) => authorLetterReduce(acc, author, lang()), {} as { [letter: string]: Author[] } ) }) @@ -119,7 +120,7 @@ export const AllAuthors = (props: Props) => {
      - + {(letter, index) => (
    • @@ -142,7 +143,7 @@ export const AllAuthors = (props: Props) => { {(letter) => (
      -

      {letter}

      +

      {letter}

      diff --git a/src/components/Views/AllTopics/AllTopics.tsx b/src/components/Views/AllTopics/AllTopics.tsx index df91d57d..5b5de039 100644 --- a/src/components/Views/AllTopics/AllTopics.tsx +++ b/src/components/Views/AllTopics/AllTopics.tsx @@ -1,5 +1,5 @@ import { Meta } from '@solidjs/meta' -import { useSearchParams } from '@solidjs/router' +import { A, useSearchParams } from '@solidjs/router' import { clsx } from 'clsx' import { For, Show, createEffect, createMemo, createSignal, on, onMount } from 'solid-js' @@ -79,13 +79,13 @@ export const AllTopics = (props: Props) => {
      • - {t('By shouts')} + {t('By shouts')}
      • - {t('By authors')} + {t('By authors')}
      • - {t('By title')} + {t('By title')}
      • - { event.preventDefault() @@ -137,7 +137,7 @@ export const AllTopics = (props: Props) => { }} > {letter} - +
      • )} @@ -155,11 +155,11 @@ export const AllTopics = (props: Props) => { {(topic) => ( )} diff --git a/src/graphql/client/core.ts b/src/graphql/client/core.ts new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/src/graphql/client/core.ts @@ -0,0 +1 @@ + diff --git a/src/routes/authors.tsx b/src/routes/authors.tsx index 04762833..060bd0bf 100644 --- a/src/routes/authors.tsx +++ b/src/routes/authors.tsx @@ -55,7 +55,7 @@ export default function AllTopicsPage(props: RouteSectionProps<{ authors: Author }> - + From 5711b266449f4c94104e64c38f7afe7b3de93558 Mon Sep 17 00:00:00 2001 From: Untone Date: Wed, 3 Jul 2024 10:03:48 +0300 Subject: [PATCH 011/132] navheader-fix --- src/components/Nav/Header/Header.tsx | 5 ++--- src/graphql/client/core.ts | 1 - 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/components/Nav/Header/Header.tsx b/src/components/Nav/Header/Header.tsx index ef975e5e..d33743e4 100644 --- a/src/components/Nav/Header/Header.tsx +++ b/src/components/Nav/Header/Header.tsx @@ -201,10 +201,9 @@ export const Header = (props: Props) => {
        diff --git a/src/graphql/client/core.ts b/src/graphql/client/core.ts index 8b137891..e69de29b 100644 --- a/src/graphql/client/core.ts +++ b/src/graphql/client/core.ts @@ -1 +0,0 @@ - From 020768f5b1b15b26286fec069604a1bdad940d01 Mon Sep 17 00:00:00 2001 From: Untone Date: Wed, 3 Jul 2024 10:23:36 +0300 Subject: [PATCH 012/132] guide-static --- src/components/Nav/Header/Header.tsx | 33 +-- src/routes/guide/index.tsx | 244 ++++++++++++++++++ .../topic/{[slug].tsx => [...slug].tsx} | 0 3 files changed, 256 insertions(+), 21 deletions(-) create mode 100644 src/routes/guide/index.tsx rename src/routes/topic/{[slug].tsx => [...slug].tsx} (100%) diff --git a/src/components/Nav/Header/Header.tsx b/src/components/Nav/Header/Header.tsx index d33743e4..bde33d89 100644 --- a/src/components/Nav/Header/Header.tsx +++ b/src/components/Nav/Header/Header.tsx @@ -50,10 +50,7 @@ export const Header = (props: Props) => { const [fixed, setFixed] = createSignal(false) const [isSharePopupVisible, setIsSharePopupVisible] = createSignal(false) const [isProfilePopupVisible, setIsProfilePopupVisible] = createSignal(false) - const [isKnowledgeBaseVisible, setIsKnowledgeBaseVisible] = createSignal(false) - const [isTopicsVisible, setIsTopicsVisible] = createSignal(false) - const [isZineVisible, setIsZineVisible] = createSignal(false) - const [isFeedVisible, setIsFeedVisible] = createSignal(false) + const [isTopMenuVisible, setIsTopMenuVisible] = createSignal(false) const { session } = useSession() const toggleFixed = () => setFixed(!fixed()) @@ -128,10 +125,7 @@ export const Header = (props: Props) => { const toggleSubnavigation = (isShow: boolean, signal?: (v: boolean) => void) => { clearTimer() - setIsKnowledgeBaseVisible(false) - setIsTopicsVisible(false) - setIsZineVisible(false) - setIsFeedVisible(false) + setIsTopMenuVisible(false) if (signal) { signal(isShow) @@ -203,12 +197,12 @@ export const Header = (props: Props) => {
          {(route: string) => ( -
        • +
        • handleToggleMenuByLink(event, `/${route}`)} - onMouseOver={() => toggleSubnavigation(true, setIsZineVisible)} + onMouseOver={() => toggleSubnavigation(true, setIsTopMenuVisible)} onMouseOut={() => hideSubnavigation()} > {t(route || 'journal')} @@ -343,28 +337,27 @@ export const Header = (props: Props) => {
          hideSubnavigation()} >
          • - {t('Manifesto')} + {t('Manifesto')}
          • - {t('Dogma')} + {t('Dogma')}
          • - {t('Community Principles')} + {t('Community Principles')}
          • - {t('Platform Guide')} + {t('Platform Guide')}
          • - {t('Support us')} + {t('Support us')}
          • - {t('How to help')} + {t('How to help')}
          • @@ -377,7 +370,7 @@ export const Header = (props: Props) => {
            hideSubnavigation()} > @@ -423,7 +416,6 @@ export const Header = (props: Props) => {
            hideSubnavigation()} > @@ -450,7 +442,6 @@ export const Header = (props: Props) => {
            hideSubnavigation()} > diff --git a/src/routes/guide/index.tsx b/src/routes/guide/index.tsx new file mode 100644 index 00000000..abc16b0c --- /dev/null +++ b/src/routes/guide/index.tsx @@ -0,0 +1,244 @@ +import { Meta } from '@solidjs/meta' +import { createMemo } from 'solid-js' +import { StaticPage } from '../../components/Views/StaticPage' +import { useLocalize } from '../../context/localize' +import { getImageUrl } from '../../utils/getImageUrl' + +export default () => { + const { t } = useLocalize() + const ogImage = createMemo(() => getImageUrl('production/image/logo_image.png')) + const ogTitle = createMemo(() => t('How Discours works')) + const description = createMemo(() => t('A guide to horizontal editorial: how an open journal works')) + + return ( + + <> + + + + + + + + + + + +

            + {ogTitle()} +

            + +

            + Дискурс — независимый журнал о культуре, науке, искусстве и обществе с  + открытой редакцией. У нас нет главного редактора, инвестора + и вообще никого, кто бы принимал единоличные решения. Вместо традиционных иерархий + Дискурс основан на принципах прямой демократии: в нашем горизонтальном сообществе все + редакционные вопросы решаются открытым голосованием авторов журнала. Вот как это работает. +

            +

            Как устроен сайт Дискурса

            +

            Дискурс состоит из четырех основных разделов:

            +
              +
            • +

              + Темы +  — у нас публикуются исследования, обзоры, эссе, интервью, репортажи, + аналитика и другие материалы о культуре, науке, искусстве и обществе. +

              +
            • +
            • +

              + Искусство +  — здесь, например, представлены художественные произведения: литература, живопись, + музыка, фотографии, видео. Этот раздел помогает прозвучать новому искусству, которое создают + российские художники, писатели, режиссёры и музыканты. +

              +
            • + {/* +
            • +

              + События — в этом разделе + публикуются самые важные, по мнению редакции, культурные + события России — выставки, лекции, концерты, кинопоказы, фестивали, + художественные и политические акции. Напишите нам + на почту, если вы + хотите разместить объявление. Мы делаем это + на безвозмездной основе. +

              +
            • +
            • +

              + Редакция — + это внутренний раздел, где появляются новые материалы, которые присылают + в редакцию. Здесь авторы обсуждают, редактируют и оценивают + публикации, определяя таким образом содержание журнала. +

              +
            • +*/} +
            +

            + Материалы в Дискурсе объединяются по темам + — ключевым словам, которые располагаются в конце материалов и связывают + материалы по жанрам (например, интервью,{' '} + репортажи, эссе,{' '} + ликбезы + ), по тематике (кино, философия,{' '} + история, абсурдизм,{' '} + секс и т.д.) или в серии (как « + Законы мира» или « + За линией Маннергейма + »). Темы объединяют сотни публикаций, помогают ориентироваться в журнале и следить + за интересными материалами. +

            + +
            +

            Как стать автором журнала

            +

            + Дискурс объединяет журналистов, активистов, музыкантов, художников, фотографов, режиссеров, + философов, ученых и других замечательных людей. Каждый может прислать{' '} + свой материал в журнал. Формат и тематика не имеют значения, единственное, что + важно — хороший ли материал. Если + сообщество поддержит вашу публикацию, она выйдет в журнале и станет доступна тысячам + наших читателей. +

            +
            + +

            Как проходит голосование

            +

            + Все присылаемые в Дискурс материалы попадают в  + «Редакцию». Это внутренний раздел сайта, где участники сообщества + решают, что будет опубликовано в Дискурсе. Как только работа получает одобрение как минимум + пятерых авторов открытой редакции, она немедленно публикуется в журнале. Если же + материал набирает более 20% голосов «против», он не выходит + и может быть отправлен на доработку. Жестких сроков рассмотрения материалов у нас + нет, иногда это занимает час, иногда месяц, обычно — несколько дней. +

            +
            +

            + Как только сообщество поддержит публикацию, вы получите приглашение + в интернет-редакцию и сможете голосовать за новые материалы. +

            +
            + +

            Как мы делаем тексты друг друга лучше

            +

            + Дискурс — журнал с совместным редактированием. Совершенствовать тексты нам + помогает система ремарок. Вы можете выделить часть текста в любой статье + и оставить к ней замечание, вопрос или предложение — автор текста получит + совет на почту и сможет его учесть. Так мы устраняем опечатки, неточности + и советуем друг другу, как сделать тексты качественнее и интереснее. +

            +

            + Среди участников сообщества есть профессиональные редакторы, которые помогают авторам делать + тексты лучше. Если вашему материалу потребуется доработка, они помогут отредактировать текст, + подобрать иллюстрации, придумать заголовок и красиво сверстать публикацию. Если + вы хотите обсудить текст, прежде чем загрузить материал в интернет-редакцию — + разместите его в google-документе, откройте доступ к редактированию по ссылке + и напишите нам на  + + welcome@discours.io + + . +

            +

            + Если у вас возникают трудности с тем, чтобы подобрать к своему материалу + иллюстрации, тоже пишите на  + + почту + + — наши коллеги-художники могут вам помочь{' '} + + в режиме совместного редактирования + + . +

            + +

            Что сообщество дает авторам

            +
              +
            • +

              + Право определять, каким будет журнал. Дискурс — это общественная + институция, созданная людьми и ради людей, функционирующая на условиях прямой + демократии. Авторы публикуют статьи и художественные проекты, участвуют + в обсуждениях, голосуют за работы коллег и таким образом вносят свой вклад + в развитие проекта, определяя содержание и направление журнала. +

              +
            • +
            • +

              + Возможность обратиться к широкой аудитории. Дискурс читают десятки тысяч + людей, и с каждым днем их становится больше. +

              +
            • +
            • +

              + Поддержка редакции. Дискурс предоставляет авторам аккредитацию + на мероприятия, базу контактов, юридическую поддержку, ознакомление с книжными, + кино- и музыкальными новинками до их выхода в свет. Если что-то + из этого вам понадобится, пишите на почту{' '} + + welcome@discours.io + +  — поможем. +

              +
            • +
            • +

              + Пресс-карты для корреспондентов. Три опубликованные статьи позволяют авторам + Дискурса получить официальные удостоверения журналистов (пресс-карты) на следующий год. + Пресс-карты удостоверяют, что вы журналист и можете пользоваться всеми теми правами, + которые гарантирует Закон о СМИ. Кроме того, многие культурные институции (музеи, галереи + и др.) предоставляют журналистам право свободного входа. +

              +
            • +
            • +

              + Помощь сотен специалистов в разных областях. В основе Дискурса + лежит идея совместного редактирования. Участники редакционного сообщества — + несколько сотен журналистов, исследователей, художников, литераторов из разных стран + — изучают материалы друг друга до публикации и помогают сделать + их качественнее и интереснее. Так, в редакции нередко складываются творческие + союзы: например, авторов текстов и художников, создающих для них иллюстрации. +

              +
            • +
            • +

              + Пространство общения полное выдающихся людей. Дискурс — большое + живое сообщество интеллектуалов, разбросанных по всему земному шару. Вступив + в редакцию, вы сможете познакомиться со множеством интересных людей, которые + определяют повестку завтрашнего дня, вдохновляют окружающих, создают новое и изучают + старое, ищут знания и готовы ими делиться, чтобы менять мир в соответствии + со своими идеалами. +

              +
            • +
            + +

            Как быть в курсе

            +

            + За свежими публикациями Дискурса можно следить не только на сайте, + но и на страницах в  + + Фейсбуке + + ,{' '} + + ВКонтакте + {' '} + и  + + Телеграме + + . А ещё раз в месяц мы отправляем почтовую рассылку{' '} + с дайджестом лучших материалов. +

            +

            + Если вы хотите сотрудничать, что-то обсудить или предложить — пожалуйста, пишите + на  + + welcome@discours.io + + . Мы обязательно ответим. +

            + + + ) +} diff --git a/src/routes/topic/[slug].tsx b/src/routes/topic/[...slug].tsx similarity index 100% rename from src/routes/topic/[slug].tsx rename to src/routes/topic/[...slug].tsx From 3fa235cd164c8dda0db4044a8d6fa15f9b0a6cd4 Mon Sep 17 00:00:00 2001 From: Untone Date: Wed, 3 Jul 2024 20:38:43 +0300 Subject: [PATCH 013/132] feed-wip --- public/locales/en/translation.json | 552 ----------------- public/locales/ru/translation.json | 579 ------------------ src/components/Article/Comment/Comment.tsx | 2 +- src/components/Discours/Banner.tsx | 2 +- src/components/Discours/Footer.tsx | 2 +- .../FeedArticlePopup/FeedArticlePopup.tsx | 4 +- src/components/Feed/Sidebar/Sidebar.tsx | 14 +- src/components/Inbox/CreateModalContent.tsx | 2 +- .../AuthModalHeader/AuthModalHeader.tsx | 2 +- src/components/Nav/AuthModal/index.tsx | 4 +- src/components/Nav/Header/Header.tsx | 20 +- .../ProfileSettings/ProfileSettings.tsx | 6 +- .../Views/AllAuthors/AllAuthors.tsx | 10 +- src/components/Views/AllTopics/AllTopics.tsx | 5 +- src/components/Views/Author/Author.tsx | 2 +- src/components/Views/Feed/Feed.tsx | 260 ++------ src/components/Views/Home.tsx | 165 ++--- src/components/Views/Inbox/Inbox.tsx | 2 +- src/components/Views/Topic.tsx | 8 +- src/config/routes.ts | 8 +- src/context/graphql.tsx | 2 +- src/context/reactions.tsx | 8 +- src/context/topics.tsx | 2 +- src/graphql/client/core.ts | 0 .../query/core/articles-load-bookmarked.ts | 44 ++ .../query/core/articles-load-coauthored.ts | 45 ++ .../query/core/articles-load-discussed.ts | 44 ++ .../query/core/articles-load-followed-by.ts | 37 ++ .../query/core/articles-load-followed.ts | 7 +- src/lib/api/private.ts | 72 +++ src/lib/{api.ts => api/public.ts} | 0 src/lib/locales/en/keywords.json | 8 + src/lib/locales/en/translation.json | 517 +--------------- src/lib/locales/ru/keywords.json | 8 + src/lib/locales/ru/translation.json | 27 +- src/routes/(home).tsx | 2 +- src/routes/[...slug].tsx | 7 +- src/routes/authors.tsx | 2 +- src/routes/connect.tsx | 3 +- src/routes/feed/[...feed].tsx | 143 +++++ src/routes/guide/{index.tsx => (guide).tsx} | 6 +- src/routes/guide/principles.tsx | 195 ++++++ src/routes/search.tsx | 15 +- src/routes/topic/[...slug].tsx | 19 +- src/routes/topics.tsx | 2 +- 45 files changed, 841 insertions(+), 2023 deletions(-) delete mode 100644 public/locales/en/translation.json delete mode 100644 public/locales/ru/translation.json delete mode 100644 src/graphql/client/core.ts create mode 100644 src/graphql/query/core/articles-load-bookmarked.ts create mode 100644 src/graphql/query/core/articles-load-coauthored.ts create mode 100644 src/graphql/query/core/articles-load-discussed.ts create mode 100644 src/graphql/query/core/articles-load-followed-by.ts create mode 100644 src/lib/api/private.ts rename src/lib/{api.ts => api/public.ts} (100%) create mode 100644 src/lib/locales/en/keywords.json create mode 100644 src/lib/locales/ru/keywords.json create mode 100644 src/routes/feed/[...feed].tsx rename src/routes/guide/{index.tsx => (guide).tsx} (98%) create mode 100644 src/routes/guide/principles.tsx diff --git a/public/locales/en/translation.json b/public/locales/en/translation.json deleted file mode 100644 index 5f8ccc12..00000000 --- a/public/locales/en/translation.json +++ /dev/null @@ -1,552 +0,0 @@ -{ - "A guide to horizontal editorial: how an open journal works": "A guide to horizontal editorial: how an open journal works", - "About": "About", - "About the project": "About the project", - "actions": "actions", - "Add": "Add", - "Add a few topics so that the reader knows what your content is about and can find it on pages of topics that interest them. Topics can be swapped, the first topic becomes the title": "Add a few topics so that the reader knows what your content is about and can find it on pages of topics that interest them. Topics can be swapped, the first topic becomes the title", - "Add a link or click plus to embed media": "Add a link or click plus to embed media", - "Add an embed widget": "Add an embed widget", - "Add another image": "Add another image", - "Add audio": "Add audio", - "Add blockquote": "Add blockquote", - "Add comment": "Comment", - "Add cover": "Add cover", - "Add image": "Add image", - "Add images": "Add images", - "Add intro": "Add intro", - "Add link": "Add link", - "add link": "add link", - "Add rule": "Add rule", - "Add signature": "Add signature", - "Add subtitle": "Add subtitle", - "Add url": "Add url", - "Address on Discours": "Address on Discours", - "Album name": "Название aльбома", - "Alignment center": "Alignment center", - "Alignment left": "Alignment left", - "Alignment right": "Alignment right", - "All": "All", - "All articles": "All articles", - "All authors": "All authors", - "All posts": "All posts", - "All topics": "All topics", - "all topics": "all topics", - "Almost done! Check your email.": "Almost done! Just checking your email.", - "and some more authors": "{restUsersCount, plural, =0 {} one { and one more user} other { and more {restUsersCount} users}}", - "Anything else": "Anything else", - "Are you sure you want to delete this comment?": "Are you sure you want to delete this comment?", - "Are you sure you want to delete this draft?": "Are you sure you want to delete this draft?", - "Are you sure you want to to proceed the action?": "Are you sure you want to to proceed the action?", - "Art": "Art", - "article": "article", - "Artist": "Artist", - "Artworks": "Artworks", - "Audio": "Audio", - "Author": "Author", - "author": "author", - "Authors": "Authors", - "authors": "authors", - "Autotypograph": "Autotypograph", - "Back": "Back", - "Back to editor": "Back to editor", - "Back to main page": "Back to main page", - "back to menu": "back to menu", - "Be the first to rate": "Be the first to rate", - "Become an author": "Become an author", - "Bold": "Bold", - "bold": "bold", - "Bookmarked": "Saved", - "Bookmarks": "Bookmarks", - "bookmarks": "bookmarks", - "Bullet list": "Bullet list", - "By alphabet": "By alphabet", - "By authors": "By authors", - "By name": "By name", - "By popularity": "By popularity", - "By rating": "By popularity", - "By relevance": "By relevance", - "By shouts": "By publications", - "By signing up you agree with our": "By signing up you agree with our", - "By time": "By time", - "By title": "By title", - "By updates": "By updates", - "By views": "By views", - "Can make any changes, accept or reject suggestions, and share access with others": "Can make any changes, accept or reject suggestions, and share access with others", - "Can offer edits and comments, but cannot edit the post or share access with others": "Can offer edits and comments, but cannot edit the post or share access with others", - "Can write and edit text directly, and accept or reject suggestions from others": "Can write and edit text directly, and accept or reject suggestions from others", - "Cancel": "Cancel", - "cancel": "cancel", - "Cancel changes": "Cancel changes", - "Change password": "Change password", - "Characters": "Знаков", - "Chat Title": "Chat Title", - "Choose a post type": "Choose a post type", - "Choose a title image for the article. You can immediately see how the publication card will look like.": "Choose a title image for the article. You can immediately see how the publication card will look like.", - "Choose who you want to write to": "Choose who you want to write to", - "Close": "Close", - "Co-author": "Co-author", - "Collaborate": "Help Edit", - "Collaborators": "Collaborators", - "Collections": "Collections", - "collections": "collections", - "Come up with a subtitle for your story": "Come up with a subtitle for your story", - "Come up with a title for your story": "Come up with a title for your story", - "Coming soon": "Coming soon", - "Comment successfully deleted": "Comment successfully deleted", - "Commentator": "Commentator", - "Commenting": "Commenting", - "Comments": "Comments", - "Common feed": "All", - "Communities": "Communities", - "community": "community", - "Community Discussion Rules": "Community Discussion Rules", - "Community Principles": "Community Principles", - "Community values and rules of engagement for the open editorial team": "Community values and rules of engagement for the open editorial team", - "Confirm": "Confirm", - "Confirm your new password": "Confirm your new password", - "Connect": "Connect", - "Contents": "Contents", - "Contribute to free samizdat. Support Discours - an independent non-profit publication that works only for you. Become a pillar of the open newsroom": "Contribute to free samizdat. Support Discours - an independent non-profit publication that works only for you. Become a pillar of the open newsroom", - "Cooperate": "Cooperate", - "Copy": "Copy", - "Copy link": "Copy link", - "Corrections history": "Corrections history", - "Create account": "Create an account", - "Create an account to add to your bookmarks": "Create an account to add to your bookmarks", - "Create an account to participate in discussions": "Create an account to participate in discussions", - "Create an account to publish articles": "Create an account to publish articles", - "Create an account to subscribe": "Create an account to subscribe", - "Create an account to subscribe to new publications": "Create an account to subscribe to new publications", - "Create an account to vote": "Create an account to vote", - "Create Chat": "Create Chat", - "Create gallery": "Create gallery", - "Create Group": "Create a group", - "Create post": "Create post", - "Create video": "Create video", - "Crop image": "Crop image", - "Culture": "Culture", - "Current password": "Current password", - "Date of Birth": "Date of Birth", - "Decline": "Decline", - "Delete": "Delete", - "Delete cover": "Delete cover", - "Delete userpic": "Delete userpic", - "delimiter": "delimiter", - "Description": "Description", - "Discours": "Discours", - "Discours is an intellectual environment, a web space and tools that allows authors to collaborate with readers and come together to co-create publications and media projects": "Discours is an intellectual environment, a web space and tools that allows authors to collaborate with readers and come together to co-create publications and media projects.
            We are convinced that one voice is good, but many is better. We create the most amazing stories together", - "Discours is created with our common effort": "Discours exists because of our common effort", - "Discours Manifest": "Discours Manifest", - "Discours Partners": "Discours Partners", - "Discours – an open magazine about culture, science and society": "Discours – an open magazine about culture, science and society", - "Discussing": "Discussing", - "discussion": "Discours", - "Discussion rules": "Discussion rules", - "Discussions": "Discussions", - "Do you really want to reset all changes?": "Do you really want to reset all changes?", - "Dogma": "Dogma", - "dogma keywords": "Discours.io, dogma, editorial principles, code of ethics, journalism, community", - "Draft successfully deleted": "Draft successfully deleted", - "Drafts": "Drafts", - "drafts": "drafts", - "Drag the image to this area": "Drag the image to this area", - "Each image must be no larger than 5 MB.": "Each image must be no larger than 5 MB.", - "earlier": "earlier", - "Edit": "Edit", - "Edit profile": "Edit profile", - "Editing": "Editing", - "Editor": "Editor", - "Email": "Mail", - "email not confirmed": "email not confirmed", - "Enter": "Enter", - "enter": "enter", - "Enter a new password": "Enter a new password", - "Enter footnote text": "Enter footnote text", - "Enter image description": "Enter image description", - "Enter image title": "Enter image title", - "Enter text": "Enter text", - "Enter the code or click the link from email to confirm": "Enter the code from the email or follow the link in the email to confirm registration", - "Enter URL address": "Enter URL address", - "Enter your new password": "Enter your new password", - "Error": "Error", - "Experience": "Experience", - "Failed to delete comment": "Failed to delete comment", - "FAQ": "Tips and suggestions", - "Favorite": "Favorites", - "Favorite topics": "Favorite topics", - "Feed": "Feed", - "feed": "feed", - "Feed settings": "Feed settings", - "Feedback": "Feedback", - "Fill email": "Fill email", - "Fixed": "Fixed", - "Follow": "Follow", - "Follow the topic": "Follow the topic", - "follower": "follower", - "Followers": "Followers", - "Following": "Following", - "Forgot password?": "Forgot password?", - "Forward": "Forward", - "from": "from", - "Full name": "First and last name", - "Gallery": "Gallery", - "Gallery name": "Gallery name", - "Get to know the most intelligent people of our time, edit and discuss the articles, share your expertise, rate and decide what to publish in the magazine": "Get to know the most intelligent people of our time, edit and discuss the articles, share your expertise, rate and decide what to publish in the magazine", - "Go to main page": "Go to main page", - "Group Chat": "Group Chat", - "Groups": "Groups", - "guide": "Knowledge base", - "Header 1": "Header 1", - "header 1": "header 1", - "Header 2": "Header 2", - "header 2": "header 2", - "Header 3": "Header 3", - "header 3": "header 3", - "Headers": "Headers", - "Help": "Помощь", - "Help to edit": "Help to edit", - "Here you can customize your profile the way you want.": "Here you can customize your profile the way you want.", - "Here you can manage all your Discours subscriptions": "Here you can manage all your Discours subscriptions", - "Here you can upload your photo": "Here you can upload your photo", - "Hide table of contents": "Hide table of contents", - "Highlight": "Highlight", - "Hooray! Welcome!": "Hooray! Welcome!", - "Horizontal collaborative journalistic platform": "Horizontal collaborative journalism platform", - "Hot topics": "Hot topics", - "Hotkeys": "Горячие клавиши", - "How can I help/skills": "How can I help/skills", - "How Discours works": "How Discours works", - "How it works": "How it works", - "How to help": "How to help?", - "How to write a good article": "Как написать хорошую статью", - "How to write an article": "How to write an article", - "Hundreds of people from different countries and cities share their knowledge and art on the Discours. Join us!": "Hundreds of people from different countries and cities share their knowledge and art on the Discours. Join us!", - "I have an account": "I have an account!", - "I have no account yet": "I don't have an account yet", - "I know the password": "I know the password", - "Image format not supported": "Image format not supported", - "images": "images", - "In bookmarks, you can save favorite discussions and materials that you want to return to": "In bookmarks, you can save favorite discussions and materials that you want to return to", - "Inbox": "Inbox", - "Incorrect new password confirm": "Incorrect new password confirm", - "Incorrect old password": "Incorrect old password", - "Incut": "Incut", - "Independant magazine with an open horizontal cooperation about culture, science and society": "Independant magazine with an open horizontal cooperation about culture, science and society", - "Independent media project about culture, science, art and society with horizontal editing": "Independent media project about culture, science, art and society with horizontal editing", - "Insert footnote": "Insert footnote", - "Insert video link": "Insert video link", - "Interview": "Interview", - "Introduce": "Introduction", - "Invalid email": "Check if your email is correct", - "Invalid image URL": "Invalid image URL", - "invalid password": "invalid password", - "Invalid url format": "Invalid url format", - "Invite": "Invite", - "Invite co-authors": "Invite co-authors", - "Invite collaborators": "Invite collaborators", - "Invite to collab": "Invite to Collab", - "It does not look like url": "It doesn't look like a link", - "It's OK. Just enter your email to receive a link to change your password": "It's OK. Just enter your email to receive a link to change your password", - "Italic": "Italic", - "italic": "italic", - "Join": "Join", - "Join our maillist": "To receive the best postings, just enter your email", - "Join the community": "Join the community", - "Join the global community of authors!": "Join the global community of authors from all over the world!", - "journal": "journal", - "jpg, .png, max. 10 mb.": "jpg, .png, макс. 10 мб.", - "Just start typing...": "Just start typing...", - "keywords": "Discours.io, Discours magazine, Discours, culture, science, art, society, independent journalism, literature, music, cinema, video, photography", - "Language": "Language", - "Last rev.": "Посл. изм.", - "Let's log in": "Let's log in", - "Link copied": "Link copied", - "Link copied to clipboard": "Link copied to clipboard", - "Link sent, check your email": "Link sent, check your email", - "List of authors of the open editorial community": "List of authors of the open editorial community", - "Lists": "Lists", - "Literature": "Literature", - "literature": "literature", - "Load more": "Show more", - "Loading": "Loading", - "Login and security": "Login and security", - "Logout": "Logout", - "Looks like you forgot to upload the video": "Looks like you forgot to upload the video", - "Manifest of samizdat: principles and mission of an open magazine with a horizontal editorial board": "Manifest of samizdat: principles and mission of an open magazine with a horizontal editorial board", - "Manifesto": "Manifesto", - "Many files, choose only one": "Many files, choose only one", - "Mark as read": "Mark as read", - "marker list": "marker list", - "Material card": "Material card", - "Message": "Message", - "Message text": "Message text", - "min. 1400×1400 pix": "мин. 1400×1400 пикс.", - "More": "More", - "Most commented": "Commented", - "Most read": "Readable", - "Move down": "Move down", - "Move up": "Move up", - "Music": "Music", - "music": "music", - "My feed": "My feed", - "my feed": "my ribbon", - "My subscriptions": "Subscriptions", - "Name": "Name", - "New literary work": "New literary work", - "New only": "New only", - "New password": "New password", - "New stories every day and even more!": "New stories and more are waiting for you every day!", - "Newsletter": "Newsletter", - "Night mode": "Night mode", - "No notifications yet": "No notifications yet", - "not verified": "not verified", - "Nothing here yet": "There's nothing here yet", - "Nothing is here": "There is nothing here", - "Notifications": "Notifications", - "number list": "number list", - "Or paste a link to an image": "Or paste a link to an image", - "or sign in with social networks": "or sign in with social networks", - "Ordered list": "Ordered list", - "Our regular contributor": "Our regular contributor", - "Paragraphs": "Абзацев", - "Participate in the Discours: share information, join the editorial team": "Участвуйте в Дискурсе: делитесь информацией, присоединяйтесь к редакции", - "Participating": "Participating", - "Participation": "Participation", - "Partners": "Partners", - "Password": "Password", - "Password again": "Password again", - "Password should be at least 8 characters": "Password should be at least 8 characters", - "Password should contain at least one number": "Password should contain at least one number", - "Password should contain at least one special character: !@#$%^&*": "Password should contain at least one special character: !@#$%^&*", - "Password updated!": "Password updated!", - "Passwords are not equal": "Passwords are not equal", - "Paste Embed code": "Paste Embed code", - "Personal": "Personal", - "personal data usage and email notifications": "to process personal data and receive email notifications", - "Pin": "Pin", - "Platform Guide": "Platform Guide", - "Please check your email address": "Please check your email address", - "Please confirm your email to finish": "Confirm your email and the action will complete", - "Please enter a name to sign your comments and publication": "Please enter a name to sign your comments and publication", - "Please enter email": "Please enter your email", - "Please enter password": "Please enter a password", - "Please enter password again": "Please enter password again", - "Please, confirm email": "Please confirm email", - "Please, set the article title": "Please, set the article title", - "Please, set the main topic first": "Please, set the main topic first", - "Podcasts": "Podcasts", - "Poetry": "Poetry", - "Popular": "Popular", - "Popular authors": "Popular authors", - "post": "post", - "Principles": "Community principles", - "principles keywords": "Discours.io, communities, values, editorial rules, polyphony, creation", - "Professional principles that the open editorial team follows in its work": "Professional principles that the open editorial team follows in its work", - "Profile": "Profile", - "Profile settings": "Profile settings", - "Publications": "Publications", - "Publish Album": "Publish Album", - "Publish Settings": "Publish Settings", - "Published": "Published", - "Punchline": "Punchline", - "Quit": "Quit", - "Quote": "Quote", - "Quotes": "Quotes", - "Reason uknown": "Reason unknown", - "Recent": "Fresh", - "Recommend some new topic": "Recommend some new topic", - "register": "register", - "registered": "registered", - "Registered since {date}": "Registered since {date}", - "Remove link": "Remove link", - "repeat": "repeat", - "Repeat new password": "Repeat new password", - "Reply": "Reply", - "Report": "Complain", - "Report an error": "Report an error", - "Reports": "Reports", - "Required": "Required", - "Resend code": "Send confirmation", - "resend confirmation link": "resend confirmation link", - "Restore password": "Restore password", - "Rules of the journal Discours": "Rules of the journal Discours", - "Save draft": "Save draft", - "Save settings": "Save settings", - "Saving...": "Saving...", - "Scroll up": "Scroll up", - "Search": "Search", - "Search author": "Search author", - "Search topic": "Search topic", - "Sections": "Sections", - "Security": "Security", - "Select": "Select", - "Self-publishing exists thanks to the help of wonderful people from all over the world. Thank you!": "Samizdat exists thanks to the help of wonderful people from all over the world. Thank you!", - "Send": "Send", - "Send link again": "Send link again", - "Settings": "Settings", - "Settings for account, email, password and login methods.": "Settings for account, email, password and login methods.", - "Share": "Share", - "Share publication": "Share publication", - "shout": "post", - "Show": "Show", - "Show lyrics": "Show lyrics", - "Show more": "Show more", - "Show table of contents": "Show table of contents", - "sign up or sign in": "sign up or sign in", - "Site search": "Site search", - "Slug": "Slug", - "slug is used by another user": "Slug is already taken by another user", - "Social networks": "Social networks", - "Society": "Society", - "some authors": "{count} {count, plural, one {author} other {authors}}", - "some comments": "{count, plural, =0 {{count} comments} one {{count} comment} few {{count} comments} other {{count} comments}}", - "some followers": "{count} {count, plural, one {follower} other {followers}}", - "some followings": "{count, plural, =0 {no subscriptions} one {{count} subscription} other {{count} subscriptions}}", - "Some new comments to your publication": "{commentsCount, plural, one {New comment} other {{commentsCount} comments}} to your publication", - "Some new replies to your comment": "{commentsCount, plural, one {New reply} other {{commentsCount} replays}} to your publication", - "some posts": "{count, plural, =0 {no publications} one {{count} publication} other {{count} publications}}", - "some shouts": "{count} {count, plural, one {post} other {posts}}", - "some views": "{count} {count, plural, one {view} other {views}}", - "Something went wrong, check email and password": "Something went wrong. Check your email and password", - "Something went wrong, please try again": "Something went wrong, please try again", - "Song lyrics": "Song lyrics...", - "Song title": "Song title", - "Soon": "Скоро", - "Sorry, this address is already taken, please choose another one.": "Sorry, this address is already taken, please choose another one", - "Special Projects": "Special Projects", - "Special projects": "Special projects", - "Specify the source and the name of the author": "Specify the source and the name of the author", - "Specify your e-mail and we will reply.": "Specify your e-mail and we will reply.", - "Start conversation": "Start a conversation", - "Start dialog": "Start dialog", - "Subsccriptions": "Subscriptions", - "Subscribe": "Subscribe", - "Subscribe to the best publications newsletter": "Subscribe to the best publications newsletter", - "Subscribe us": "Subscribe us", - "Subscribe what you like to tune your personal feed": "Subscribe to topics that interest you to customize your personal feed and get instant updates on new posts and discussions", - "Subscribe who you like to tune your personal feed": "Subscribe to authors you're interested in to customize your personal feed and get instant updates on new posts and discussions", - "subscriber": "subscriber", - "subscriber_rp": "subscriber", - "subscribers": "subscribers", - "subscribing...": "subscribing...", - "Subscribing...": "Subscribing...", - "Subscription": "Subscription", - "subscription": "subscription", - "subscription_rp": "subscription", - "Subscriptions": "Subscriptions", - "subscriptions": "subscriptions", - "Substrate": "Substrate", - "Success": "Success", - "Successfully authorized": "Authorization successful", - "Suggest an idea": "Suggest an idea", - "Support Discours": "Support Discours", - "Support the project": "Support the project", - "Support us": "Support us", - "Terms of use": "Site rules", - "terms of use": "terms of use", - "terms of use keywords": "Discours.io, site rules, terms of use", - "Text checking": "Text checking", - "Thank you": "Thank you", - "Thank you for reaching us": "Thank you for reaching us", - "Thank you!": "Thank you!", - "The address is already taken": "The address is already taken", - "The most interesting publications on the topic": "The most interesting publications on the topic {topicName}", - "Thematic table of contents of the magazine. Here you can find all the topics that community authors have written about.": "Thematic table of contents of the magazine. Here you can find all the topics that community authors have written about.", - "Thematic table of contents of the magazine. Here you can find all the topics that the community authors wrote about": "Thematic table of contents of the magazine. Here you can find all the topics that the community authors wrote about", - "Themes and plots": "Themes and plots", - "Theory": "Theory", - "There are unsaved changes in your profile settings. Are you sure you want to leave the page without saving?": "There are unsaved changes in your profile settings. Are you sure you want to leave the page without saving?", - "There are unsaved changes in your publishing settings. Are you sure you want to leave the page without saving?": "There are unsaved changes in your publishing settings. Are you sure you want to leave the page without saving?", - "This comment has not yet been rated": "This comment has not yet been rated", - "This content is not published yet": "This content is not published yet", - "This email is": "This email is", - "This email is not verified": "This email is not verified", - "This email is registered": "This email is registered", - "This email is verified": "This email is verified", - "This functionality is currently not available, we would like to work on this issue. Use the download link.": "This functionality is currently not available, we would like to work on this issue. Use the download link.", - "This month": "This month", - "This post has not been rated yet": "This post has not been rated yet", - "This way we ll realize that you re a real person and ll take your vote into account. And you ll see how others voted": "This way we ll realize that you re a real person and ll take your vote into account. And you ll see how others voted", - "This way you ll be able to subscribe to authors, interesting topics and customize your feed": "This way you ll be able to subscribe to authors, interesting topics and customize your feed", - "This week": "This week", - "This year": "This year", - "To find publications, art, comments, authors and topics of interest to you, just start typing your query": "To find publications, art, comments, authors and topics of interest to you, just start typing your query", - "To leave a comment please": "To leave a comment please", - "To write a comment, you must": "To write a comment, you must", - "today": "today", - "Top authors": "Authors rating", - "Top commented": "Most commented", - "Top discussed": "Top discussed", - "Top month": "Top of the month", - "Top rated": "Popular", - "Top recent": "Most recent", - "Top topics": "Interesting topics", - "Top viewed": "Most viewed", - "Topic is supported by": "Topic is supported by", - "topicKeywords": "{topic}, Discours.io, articles, journalism, research", - "Topics": "Topics", - "topics": "topics", - "Topics which supported by author": "Topics which supported by author", - "try": "попробуйте", - "Try to find another way": "Try to find another way", - "Unfollow": "Unfollow", - "Unfollow the topic": "Unfollow the topic", - "Unnamed draft": "Unnamed draft", - "Unsubscribing...": "Unsubscribing...", - "Upload": "Upload", - "Upload error": "Upload error", - "Upload userpic": "Upload userpic", - "Upload video": "Upload video", - "Uploading image": "Uploading image", - "user already exist": "user already exists", - "User was not found": "User was not found", - "Username": "Username", - "Userpic": "Userpic", - "Users": "Users", - "verified": "verified", - "Video": "Video", - "video": "video", - "Video format not supported": "Video format not supported", - "view": "view", - "Views": "Views", - "Volounteering": "Volounteering", - "Want to suggest, discuss or advise something? Share a topic or an idea? Please send us a message!": "Want to suggest, discuss or advise something? Share a topic or an idea? Please send us a message!", - "We are working on collaborative editing of articles and in the near future you will have an amazing opportunity - to create together with your colleagues": "We are working on collaborative editing of articles and in the near future you will have an amazing opportunity - to create together with your colleagues", - "We can't find you, check email or": "We can't find you, check email or", - "We couldn't find anything for your request": "We couldn’t find anything for your request", - "We know you, please try to login": "This email address is already registered, please try to login", - "We've sent you a message with a link to enter our website.": "We've sent you an email with a link to your email. Follow the link in the email to enter our website.", - "Welcome to Discours": "Welcome to Discours", - "Welcome to Discours to add to your bookmarks": "Welcome to Discours to add to your bookmarks", - "Welcome to Discours to participate in discussions": "Welcome to Discours to participate in discussions", - "Welcome to Discours to publish articles": "Welcome to Discours to publish articles", - "Welcome to Discours to subscribe": "Welcome to Discours to subscribe", - "Welcome to Discours to subscribe to new publications": "Welcome to Discours to subscribe to new publications", - "Welcome to Discours to vote": "Welcome to Discours to vote", - "Where": "From", - "Why you can earn a hole in your karma and how to receive rays of gratitude for your contribution to discussions in samizdat communities": "Why you can earn a hole in your karma and how to receive rays of gratitude for your contribution to discussions in samizdat communities", - "Words": "Слов", - "Work with us": "Cooperate with Discours", - "Write a comment...": "Write a comment...", - "Write a short introduction": "Write a short introduction", - "Write about the topic": "Write about the topic", - "Write an article": "Write an article", - "Write comment": "Write comment", - "Write good articles, comment\nand it won't be so empty here": "Write good articles, comment\nand it won't be so empty here", - "Write message": "Write a message", - "Write to us": "Write to us", - "Write your colleagues name or email": "Write your colleague's name or email", - "yesterday": "yesterday", - "You can": "You can", - "You can download multiple tracks at once in .mp3, .wav or .flac formats": "You can download multiple tracks at once in .mp3, .wav or .flac formats", - "You can now login using your new password": "Теперь вы можете входить с помощью нового пароля", - "You can't edit this post": "You can't edit this post", - "You were successfully authorized": "You were successfully authorized", - "You ll be able to participate in discussions, rate others' comments and learn about new responses": "You ll be able to participate in discussions, rate others' comments and learn about new responses", - "You've confirmed email": "You've confirmed email", - "You've reached a non-existed page": "You've reached a non-existed page", - "Your contact for answer": "Your contact for answer", - "Your email": "Your email", - "Your name will appear on your profile page and as your signature in publications, comments and responses.": "Your name will appear on your profile page and as your signature in publications, comments and responses" -} diff --git a/public/locales/ru/translation.json b/public/locales/ru/translation.json deleted file mode 100644 index 81b53f71..00000000 --- a/public/locales/ru/translation.json +++ /dev/null @@ -1,579 +0,0 @@ -{ - "A guide to horizontal editorial: how an open journal works": "Гид по горизонтальной редакции: как работает открытый журнал", - "A short introduction to keep the reader interested": "Добавьте вступление, чтобы заинтересовать читателя", - "About": "О себе", - "About the project": "О проекте", - "actions": "действия", - "Add": "Добавить", - "Add a few topics so that the reader knows what your content is about and can find it on pages of topics that interest them. Topics can be swapped, the first topic becomes the title": "Добавьте несколько тем, чтобы читатель знал, о чем ваш материал, и мог найти его на страницах интересных ему тем. Темы можно менять местами, первая тема становится заглавной", - "Add a link or click plus to embed media": "Добавьте ссылку или нажмите плюс для вставки медиа", - "Add an embed widget": "Добавить embed-виджет", - "Add another image": "Добавить другое изображение", - "Add audio": "Добавить аудио", - "Add blockquote": "Добавить цитату", - "Add comment": "Комментировать", - "Add cover": "Добавить обложку", - "Add image": "Добавить изображение", - "Add images": "Добавить изображения", - "Add intro": "Добавить вступление", - "add link": "добавить ссылку", - "Add link": "Добавить ссылку", - "Add rule": "Добавить разделитель", - "Add signature": "Добавить подпись", - "Add subtitle": "Добавить подзаголовок", - "Add to bookmarks": "Добавить в закладки", - "Add url": "Добавить ссылку", - "Address on Discours": "Адрес на Дискурсе", - "Album name": "Название альбома", - "Alignment center": "По центру", - "Alignment left": "По левому краю", - "Alignment right": "По правому краю", - "All": "Все", - "All articles": "Все материалы", - "All authors": "Все авторы", - "All posts": "Все публикации", - "All posts rating": "Рейтинг всех постов", - "all topics": "все темы", - "All topics": "Все темы", - "Almost done! Check your email.": "Почти готово! Осталось подтвердить вашу почту.", - "and some more authors": "{restUsersCount, plural, =0 {} one { и ещё 1 пользователя} few { и ещё {restUsersCount} пользователей} other { и ещё {restUsersCount} пользователей}}", - "Anything else": "Что-либо ещё", - "Are you sure you want to delete this comment?": "Уверены, что хотите удалить этот комментарий?", - "Are you sure you want to delete this draft?": "Уверены, что хотите удалить этот черновик?", - "Are you sure you want to to proceed the action?": "Вы уверены, что хотите продолжить?", - "Art": "Искусство", - "article": "статья", - "Artist": "Исполнитель", - "Artist...": "Исполнитель...", - "Artworks": "Артворки", - "Audio": "Аудио", - "author": "автор", - "Author": "Автор", - "authors": "авторы", - "Authors": "Авторы", - "Autotypograph": "Автотипограф", - "Back": "Назад", - "Back to editor": "Вернуться в редактор", - "Back to main page": "Вернуться на главную", - "back to menu": "назад в меню", - "Be the first to rate": "Оцените первым", - "Become an author": "Стать автором", - "bold": "жирный", - "Bold": "Жирный", - "Bookmarked": "Сохранено", - "bookmarks": "закладки", - "Bookmarks": "Закладки", - "Bullet list": "Маркированный список", - "By alphabet": "По алфавиту", - "By authors": "По авторам", - "By name": "По имени", - "By popularity": "По популярности", - "By rating": "По рейтингу", - "By relevance": "По релевантности", - "By shouts": "По публикациям", - "By signing up you agree with our": "Регистрируясь, вы соглашаетесь с", - "By time": "По порядку", - "By title": "По названию", - "By updates": "По обновлениям", - "By views": "По просмотрам", - "Can make any changes, accept or reject suggestions, and share access with others": "Может вносить любые изменения, принимать и отклонять предложения, а также делиться доступом с другими", - "Can offer edits and comments, but cannot edit the post or share access with others": "Может предлагать правки и комментарии, но не может изменять пост и делиться доступом с другими", - "Can write and edit text directly, and accept or reject suggestions from others": "Может писать и редактировать текст напрямую, а также принимать или отклонять предложения других", - "cancel": "отменить", - "Cancel": "Отмена", - "Cancel changes": "Отменить изменения", - "Change password": "Сменить пароль", - "Characters": "Знаков", - "Chat Title": "Тема дискурса", - "Choose a post type": "Выберите тип публикации", - "Choose a title image for the article. You can immediately see how the publication card will look like.": "Выберите заглавное изображение для статьи. Тут же сразу можно увидеть как будет выглядеть карточка публикации.", - "Choose who you want to write to": "Выберите кому хотите написать", - "Close": "Закрыть", - "Co-author": "Соавтор", - "Collaborate": "Помочь редактировать", - "Collaborators": "Соавторы", - "collections": "коллекции", - "Collections": "Коллекции", - "Come up with a subtitle for your story": "Придумайте подзаголовок вашей истории", - "Come up with a title for your story": "Придумайте заголовок вашей истории", - "Coming soon": "Уже скоро", - "Comment": "Комментировать", - "Comment successfully deleted": "Комментарий успешно удален", - "Commentator": "Комментатор", - "Commenting": "Комментирование", - "Comments": "Комментарии", - "Common feed": "Общая лента", - "Communities": "Сообщества", - "community": "сообщество", - "Community Discussion Rules": "Правила дискуссий в сообществе", - "Community Principles": "Принципы сообщества", - "Community values and rules of engagement for the open editorial team": "Ценности сообщества и правила взаимодействия открытой редакции", - "Confirm": "Подтвердить", - "Confirm your new password": "Подтвердите новый пароль", - "Connect": "Привязать", - "Contents": "Оглавление", - "Contribute to free samizdat. Support Discours - an independent non-profit publication that works only for you. Become a pillar of the open newsroom": "Внесите вклад в свободный самиздат. Поддержите Дискурс — независимое некоммерческое издание, которое работает только для вас. Станьте опорой открытой редакции", - "Cooperate": "Соучаствовать", - "Copy": "Скопировать", - "Copy link": "Скопировать ссылку", - "Corrections history": "История правок", - "Create account": "Создать аккаунт", - "Create an account to add to your bookmarks": "Создайте аккаунт, чтобы добавить в закладки", - "Create an account to participate in discussions": "Создайте аккаунт для участия в дискуссиях", - "Create an account to publish articles": "Создайте аккаунт, чтобы публиковать статьи", - "Create an account to subscribe": "Создайте аккаунт, чтобы подписаться", - "Create an account to subscribe to new publications": "Создайте аккаунт для подписки на новые публикации", - "Create an account to vote": "Создайте аккаунт, чтобы голосовать", - "Create Chat": "Создать чат", - "Create gallery": "Создать галерею", - "Create Group": "Создать группу", - "Create post": "Создать публикацию", - "Create video": "Создать видео", - "create_chat": "Создать чат", - "create_group": "Создать группу", - "Crop image": "Кадрировать изображение", - "Culture": "Культура", - "Current password": "Текущий пароль", - "Date of Birth": "Дата рождения", - "Decline": "Отмена", - "Delete": "Удалить", - "Delete cover": "Удалить обложку", - "Delete userpic": "Удалить аватар", - "delimiter": "разделитель", - "Description": "Описание", - "Discours": "Дискурс", - "Discours is an intellectual environment, a web space and tools that allows authors to collaborate with readers and come together to co-create publications and media projects": "Дискурс — это интеллектуальная среда, веб-пространство и инструменты, которые позволяют авторам сотрудничать с читателями и объединяться для совместного создания публикаций и медиапроектов.
            Мы убеждены, один голос хорошо, а много — лучше. Самые потрясающиe истории мы создаём вместе.", - "Discours is created with our common effort": "Дискурс существует благодаря нашему общему вкладу", - "Discours Manifest": "Манифест Дискурса", - "Discours Partners": "Партнеры Дискурса", - "Discours – an open magazine about culture, science and society": "Дискурс – открытый журнал о культуре, науке и обществе", - "Discours_theme": "Тема дискурса", - "Discussing": "Обсуждаемое", - "discussion": "дискурс", - "Discussion rules": "Правила дискуссий", - "Discussions": "Дискуссии", - "Do you really want to reset all changes?": "Вы действительно хотите сбросить все изменения?", - "Dogma": "Догма", - "dogma keywords": "Discours.io, догма, редакционные принципы, этический кодекс, журналистика, сообщество", - "Draft successfully deleted": "Черновик успешно удален", - "drafts": "черновики", - "Drafts": "Черновики", - "Drag the image to this area": "Перетащите изображение в эту область", - "Each image must be no larger than 5 MB.": "Каждое изображение должно быть размером не больше 5 мб.", - "earlier": "ранее", - "Edit": "Редактировать", - "Edit profile": "Редактировать профиль", - "Editing": "Редактирование", - "Editor": "Редактор", - "Email": "Почта", - "email not confirmed": "email не подтвержден", - "enter": "войти", - "Enter": "Войти", - "Enter a new password": "Введите новый пароль", - "Enter footnote text": "Введите текст сноски", - "Enter image description": "Введите описание изображения", - "Enter image title": "Введите название изображения", - "Enter text": "Введите текст", - "Enter the code or click the link from email to confirm": "Введите код из письма или пройдите по ссылке в письме для подтверждения регистрации", - "Enter URL address": "Введите адрес ссылки", - "Enter your new password": "Введите новый пароль", - "Error": "Ошибка", - "Experience": "Личный опыт", - "Failed to delete comment": "Не удалось удалить комментарий", - "FAQ": "Советы и предложения", - "Favorite": "Избранное", - "Favorite topics": "Избранные темы", - "feed": "лента", - "Feed": "Лента", - "Feed settings": "Настроить ленту", - "Feedback": "Обратная связь", - "Fill email": "Введите почту", - "Fixed": "Все поправлено", - "Follow": "Подписаться", - "Follow the topic": "Подписаться на тему", - "follower": "подписчик", - "Followers": "Подписчики", - "Following": "Вы подписаны", - "Forgot password?": "Забыли пароль?", - "Forward": "Переслать", - "from": "от", - "Full name": "Имя и фамилия", - "Gallery": "Галерея", - "Gallery name": "Название галереи", - "Genre...": "Жанр...", - "Get notifications": "Получать уведомления", - "Get to know the most intelligent people of our time, edit and discuss the articles, share your expertise, rate and decide what to publish in the magazine": "Познакомитесь с выдающимися людьми нашего времени, участвуйте в редактировании и обсуждении статей, выступайте экспертом, оценивайте материалы других авторов со всего мира и определяйте, какие статьи будут опубликованы в журнале", - "Go to main page": "Перейти на главную", - "Group Chat": "Общий чат", - "Groups": "Группы", - "guide": "База знаний", - "Header": "Заголовок", - "header 1": "заголовок 1", - "Header 1": "Заголовок 1", - "header 2": "заголовок 2", - "Header 2": "Заголовок 2", - "header 3": "заголовок 3", - "Header 3": "Заголовок 3", - "Headers": "Заголовки", - "Help": "Помощь", - "Help to edit": "Помочь редактировать", - "Here you can customize your profile the way you want.": "Здесь можно настроить свой профиль так, как вы хотите.", - "Here you can manage all your Discours subscriptions": "Здесь можно управлять всеми своими подписками на Дискурсе", - "Here you can upload your photo": "Здесь вы можете загрузить свою фотографию", - "Hide table of contents": "Скрыть главление", - "Highlight": "Подсветка", - "Hooray! Welcome!": "Ура! Добро пожаловать!", - "Horizontal collaborative journalistic platform": "Открытая платформа
            для независимой журналистики", - "Hot topics": "Горячие темы", - "Hotkeys": "Горячие клавиши", - "How can I help/skills": "Чем могу помочь/навыки", - "How Discours works": "Как устроен Дискурс", - "How it works": "Как это работает", - "How to help": "Как помочь?", - "How to write a good article": "Как написать хорошую статью", - "How to write an article": "Как написать статью", - "Hundreds of people from different countries and cities share their knowledge and art on the Discours. Join us!": "Сотни людей из разных стран и городов делятся своими знаниями и искусством на Дискурсе. Присоединяйтесь!", - "I have an account": "У меня есть аккаунт!", - "I have no account yet": "У меня еще нет аккаунта", - "I know the password": "Я знаю пароль!", - "Image format not supported": "Тип изображения не поддерживается", - "images": "изображения", - "In bookmarks, you can save favorite discussions and materials that you want to return to": "В закладках можно сохранять избранные дискуссии и материалы, к которым хочется вернуться", - "Inbox": "Входящие", - "Incorrect new password confirm": "Неверное подтверждение нового пароля", - "Incorrect old password": "Старый пароль не верен", - "Incut": "Подверстка", - "Independant magazine with an open horizontal cooperation about culture, science and society": "Независимый журнал с открытой горизонтальной редакцией о культуре, науке и обществе", - "Independent media project about culture, science, art and society with horizontal editing": "Независимый медиапроект о культуре, науке, искусстве и обществе с горизонтальной редакцией", - "Insert footnote": "Вставить сноску", - "Insert video link": "Вставить ссылку на видео", - "Interview": "Интервью", - "Introduce": "Представление", - "Invalid email": "Проверьте правильность ввода почты", - "Invalid image URL": "Некорректная ссылка на изображение", - "invalid password": "некорректный пароль", - "Invalid url format": "Неверный формат ссылки", - "Invite": "Пригласить", - "Invite co-authors": "Пригласить соавторов", - "Invite collaborators": "Пригласить соавторов", - "Invite experts": "Пригласить экспертов", - "Invite to collab": "Пригласить к участию", - "It does not look like url": "Это не похоже на ссылку", - "It's OK. Just enter your email to receive a link to change your password": "Ничего страшного. Просто укажите свою почту, чтобы получить ссылку для смены пароля", - "italic": "курсив", - "Italic": "Курсив", - "Join": "Присоединиться", - "Join our maillist": "Чтобы получать рассылку лучших публикаций, просто укажите свою почту", - "Join the community": "Присоединиться к сообществу", - "Join the global community of authors!": "Присоединятесь к глобальному сообществу авторов со всего мира!", - "journal": "журнал", - "jpg, .png, max. 10 mb.": "jpg, .png, макс. 10 мб.", - "Just start typing...": "Просто начните печатать...", - "Karma": "Карма", - "keywords": "Discours.io, журнал Дискурс, Дискурс, культура, наука, искусство, общество, независимая журналистика, литература, музыка, кино, видео, фотографии", - "Language": "Язык", - "Last rev.": "Посл. изм.", - "Let's log in": "Давайте авторизуемся", - "Link copied": "Ссылка скопирована", - "Link copied to clipboard": "Ссылка скопирована в буфер обмена", - "Link sent, check your email": "Ссылка отправлена, проверьте почту", - "List of authors of the open editorial community": "Список авторов сообщества открытой редакции", - "Lists": "Списки", - "literature": "литература", - "Literature": "Литература", - "Load more": "Показать ещё", - "Loading": "Загрузка", - "Login and security": "Вход и безопасность", - "Logout": "Выход", - "Looks like you forgot to upload the video": "Похоже, что вы забыли загрузить видео", - "Manifest of samizdat: principles and mission of an open magazine with a horizontal editorial board": "Манифест самиздата: принципы и миссия открытого журнала с горизонтальной редакцией", - "Manifesto": "Манифест", - "Many files, choose only one": "Много файлов, выберете один", - "Mark as read": "Отметить прочитанным", - "marker list": "маркир. список", - "Material card": "Карточка материала", - "Message": "Написать", - "Message text": "Текст сообщения", - "min. 1400×1400 pix": "мин. 1400×1400 пикс.", - "More": "Ещё", - "Most commented": "Комментируемое", - "Most read": "Читаемое", - "Move down": "Переместить вниз", - "Move up": "Переместить вверх", - "music": "музыка", - "Music": "Музыка", - "my feed": "моя лента", - "My feed": "Моя лента", - "My subscriptions": "Подписки", - "Name": "Имя", - "New literary work": "Новое произведение", - "New only": "Только новые", - "New password": "Новый пароль", - "New stories every day and even more!": "Каждый день вас ждут новые истории и ещё много всего интересного!", - "Newsletter": "Рассылка", - "Night mode": "Ночная тема", - "No notifications yet": "Уведомлений пока нет", - "No such account, please try to register": "Такой адрес не найден, попробуйте зарегистрироваться", - "not verified": "ещё не подтверждён", - "Nothing here yet": "Здесь пока ничего нет", - "Nothing is here": "Здесь ничего нет", - "Notifications": "Уведомления", - "number list": "нумер. список", - "or": "или", - "Or paste a link to an image": "Или вставьте ссылку на изображение", - "or sign in with social networks": "или войдите через соцсеть", - "Ordered list": "Нумерованный список", - "Our regular contributor": "Наш постоянный автор", - "Paragraphs": "Абзацев", - "Participate in the Discours: share information, join the editorial team": "Participate in the Discours: share information, join the editorial team", - "Participating": "Участвовать", - "Participation": "Соучастие", - "Partners": "Партнёры", - "Password": "Пароль", - "Password again": "Пароль ещё раз", - "Password should be at least 8 characters": "Пароль должен быть не менее 8 символов", - "Password should contain at least one number": "Пароль должен содержать хотя бы одну цифру", - "Password should contain at least one special character: !@#$%^&*": "Пароль должен содержать хотя бы один спецсимвол: !@#$%^&*", - "Password updated!": "Пароль обновлен!", - "Passwords are not equal": "Пароли не совпадают", - "Paste Embed code": "Вставьте embed код", - "Personal": "Личные", - "personal data usage and email notifications": "на обработку персональных данных и на получение почтовых уведомлений", - "Pin": "Закрепить", - "Platform Guide": "Гид по дискурсу", - "Please check your email address": "Пожалуйста, проверьте введенный адрес почты", - "Please check your inbox! We have sent a password reset link.": "Пожалуйста, проверьте свою почту, мы отправили вам письмо со ссылкой для сброса пароля", - "Please confirm your email to finish": "Подтвердите почту и действие совершится", - "Please enter a name to sign your comments and publication": "Пожалуйста, введите имя, которое будет отображаться на сайте", - "Please enter email": "Пожалуйста, введите почту", - "Please enter password": "Пожалуйста, введите пароль", - "Please enter password again": "Пожалуйста, введите пароль ещё рез", - "Please, confirm email": "Пожалуйста, подтвердите электронную почту", - "Please, set the article title": "Пожалуйста, задайте заголовок статьи", - "Please, set the main topic first": "Пожалуйста, сначала выберите главную тему", - "Podcasts": "Подкасты", - "Poetry": "Поэзия", - "Popular": "Популярное", - "Popular authors": "Популярные авторы", - "post": "пост", - "Preview": "Предпросмотр", - "Principles": "Принципы сообщества", - "principles keywords": "Discours.io, сообщества, ценности, правила редакции, многоголосие, созидание", - "Professional principles that the open editorial team follows in its work": "Профессиональные принципы, которым открытая редакция следует в работе", - "Profile": "Профиль", - "Profile settings": "Настройки профиля", - "Profile successfully saved": "Профиль успешно сохранён", - "Publication settings": "Настройки публикации", - "Publications": "Публикации", - "Publish": "Опубликовать", - "Publish Album": "Опубликовать альбом", - "Publish Settings": "Настройки публикации", - "Published": "Опубликованные", - "Punchline": "Панчлайн", - "Quit": "Выйти", - "Quote": "Цитата", - "Quotes": "Цитаты", - "Reason uknown": "Причина неизвестна", - "Recent": "Свежее", - "Recommend some new topic": "Предложить тему", - "register": "зарегистрируйтесь", - "registered": "уже зарегистрирован", - "Registered since {date}": "На сайте c {date}", - "Release date...": "Дата выхода...", - "Remove link": "Убрать ссылку", - "repeat": "повторить", - "Repeat new password": "Повторите новый пароль", - "Reply": "Ответить", - "Report": "Пожаловаться", - "Report an error": "Сообщить об ошибке", - "Reports": "Репортажи", - "Required": "Поле обязательно для заполнения", - "Resend code": "Выслать подтверждение", - "resend confirmation link": "отправить ссылку ещё раз", - "Restore password": "Восстановить пароль", - "Rules of the journal Discours": "Правила журнала Дискурс", - "Save": "Сохранить", - "Save draft": "Сохранить черновик", - "Save settings": "Сохранить настройки", - "Saving...": "Сохраняем...", - "Scroll up": "Наверх", - "Search": "Поиск", - "Search author": "Поиск автора", - "Search topic": "Поиск темы", - "Sections": "Разделы", - "Security": "Безопасность", - "Select": "Выбрать", - "Self-publishing exists thanks to the help of wonderful people from all over the world. Thank you!": "Самиздат существуют благодаря помощи замечательных людей со всего мира. Спасибо Вам!", - "Send": "Отправить", - "Send link again": "Прислать ссылку ещё раз", - "Settings": "Настройки", - "Settings for account, email, password and login methods.": "Настройки аккаунта, почты, пароля и способов входа.", - "Share": "Поделиться", - "Share publication": "Поделиться публикацией", - "Short opening": "Расскажите вашу историю...", - "shout": "пост", - "shout not found": "публикация не найдена", - "Show": "Показать", - "Show lyrics": "Текст песни", - "Show more": "Читать дальше", - "Show table of contents": "Показать главление", - "sign in": "войти", - "sign up": "зарегистрироваться", - "sign up or sign in": "зарегистрироваться или войти", - "Site search": "Поиск по сайту", - "Slug": "Постоянная ссылка", - "slug is used by another user": "Имя уже занято другим пользователем", - "Social networks": "Социальные сети", - "Society": "Общество", - "some authors": "{count} {count, plural, one {автор} few {автора} other {авторов}}", - "some comments": "{count, plural, =0 {{count} комментариев} one {{count} комментарий} few {{count} комментария} other {{count} комментариев}}", - "some followers": "{count} {count, plural, one {подписчик} few {подписчика} other {подписчиков}}", - "some followings": "{count, plural, =0 {нет подписок} one {{count} подписка} few {{count} подписки} other {{count} подписок}}", - "Some new comments to your publication": "{commentsCount, plural, one {Новый комментарий} few {{commentsCount} новых комментария} other {{commentsCount} новых комментариев}} к вашей публикации", - "Some new replies to your comment": "{commentsCount, plural, one {Новый ответ} few {{commentsCount} новых ответа} other {{commentsCount} новых ответов}} на ваш комментарий к публикации", - "some posts": "{count, plural, =0 {нет публикаций} one {{count} публикация} few {{count} публикации} other {{count} публикаций}}", - "some shouts": "{count} {count, plural, one {публикация} few {публикации} other {публикаций}}", - "some views": "{count} {count, plural, one {просмотр} few {просмотрa} other {просмотров}}", - "Something went wrong, check email and password": "Что-то пошло не так. Проверьте адрес электронной почты и пароль", - "Something went wrong, please try again": "Что-то пошло не так, попробуйте еще раз", - "Song lyrics": "Текст песни...", - "Song title": "Название песни", - "Soon": "Скоро", - "Sorry, this address is already taken, please choose another one.": "Увы, этот адрес уже занят, выберите другой", - "Special projects": "Спецпроекты", - "Special Projects": "Спецпроекты", - "Specify the source and the name of the author": "Укажите источник и имя автора", - "Specify your e-mail and we will reply.": "Укажите ваш e-mail и мы обязательно ответим.", - "squib": "Подверстка", - "Start conversation": "Начать беседу", - "Start dialog": "Начать диалог", - "Subheader": "Подзаголовок", - "Subscribe": "Подписаться", - "Subscribe to comments": "Подписаться на комментарии", - "Subscribe to the best publications newsletter": "Подпишитесь на рассылку лучших публикаций", - "Subscribe us": "Подпишитесь на нас", - "Subscribe what you like to tune your personal feed": "Подпишитесь на интересующие вас темы, чтобы настроить вашу персональную ленту и моментально узнавать о новых публикациях и обсуждениях", - "Subscribe who you like to tune your personal feed": "Подпишитесь на интересующих вас авторов, чтобы настроить вашу персональную ленту и моментально узнавать о новых публикациях и обсуждениях", - "subscriber": "подписчик", - "subscriber_rp": "подписчика", - "subscribers": "подписчиков", - "Subscribing...": "Подписываем...", - "subscribing...": "Подписка...", - "Subscription": "Подписка", - "Subscriptions": "Подписки", - "Substrate": "Подложка", - "Success": "Успешно", - "Successfully authorized": "Авторизация успешна", - "Suggest an idea": "Предложить идею", - "Support Discours": "Поддержите Дискурс", - "Support the project": "Поддержать проект", - "Support us": "Помочь журналу", - "terms of use": "правилами пользования сайтом", - "Terms of use": "Правила сайта", - "terms of use keywords": "Discours.io, правила сайта, terms of use", - "Text checking": "Проверка текста", - "Thank you": "Благодарности", - "Thank you for reaching us": "Спасибо, что связались с нами", - "Thank you!": "Спасибо Вам!", - "The address is already taken": "Адрес уже занят", - "The most interesting publications on the topic": "Самые интересные публикации по теме {topicName}", - "Thematic table of contents of the magazine. Here you can find all the topics that community authors have written about.": "Тематическое оглавление журнала. Здесь можно найти все темы, о которых писали авторы сообщества.", - "Thematic table of contents of the magazine. Here you can find all the topics that the community authors wrote about": "Тематическое оглавление журнала. Здесь можно найти все темы, о которых писали авторы сообщества", - "Themes and plots": "Темы и сюжеты", - "Theory": "Теории", - "There are unsaved changes in your profile settings. Are you sure you want to leave the page without saving?": "В настройках вашего профиля есть несохраненные изменения. Уверены, что хотите покинуть страницу без сохранения?", - "There are unsaved changes in your publishing settings. Are you sure you want to leave the page without saving?": "В настройках публикации есть несохраненные изменения. Уверены, что хотите покинуть страницу без сохранения?", - "This comment has not yet been rated": "Этот комментарий еще пока никто не оценил", - "This content is not published yet": "Содержимое ещё не опубликовано", - "This email is": "Этот email", - "This email is not verified": "Этот email не подтвержден", - "This email is registered": "Этот email уже зарегистрирован", - "This email is verified": "Этот email подтвержден", - "This functionality is currently not available, we would like to work on this issue. Use the download link.": "В данный момент этот функционал не доступен, бы работаем над этой проблемой. Воспользуйтесь загрузкой по ссылке.", - "This month": "За месяц", - "This post has not been rated yet": "Эту публикацию еще пока никто не оценил", - "This way we ll realize that you re a real person and ll take your vote into account. And you ll see how others voted": "Так мы поймем, что вы реальный человек, и учтем ваш голос. А вы увидите, как проголосовали другие", - "This way you ll be able to subscribe to authors, interesting topics and customize your feed": "Так вы сможете подписаться на авторов, интересные темы и настроить свою ленту", - "This week": "За неделю", - "This year": "За год", - "To find publications, art, comments, authors and topics of interest to you, just start typing your query": "Для поиска публикаций, искусства, комментариев, интересных вам авторов и тем, просто начните вводить ваш запрос", - "To leave a comment please": "Чтобы оставить комментарий, необходимо", - "To write a comment, you must": "Чтобы написать комментарий, необходимо", - "today": "сегодня", - "Top authors": "Рейтинг авторов", - "Top commented": "Самое комментируемое", - "Top discussed": "Обсуждаемое", - "Top month": "Лучшее за месяц", - "Top rated": "Популярное", - "Top recent": "Самое новое", - "Top topics": "Интересные темы", - "Top viewed": "Самое читаемое", - "Topic is supported by": "Тему поддерживают", - "topicKeywords": "{topic}, Discours.io, статьи, журналистика, исследования", - "topics": "темы", - "Topics": "Темы", - "Topics which supported by author": "Автор поддерживает темы", - "try": "попробуйте", - "Try to find another way": "Попробуйте найти по-другому", - "Unfollow": "Отписаться", - "Unfollow the topic": "Отписаться от темы", - "Unnamed draft": "Черновик без названия", - "Unsubscribing...": "Отписываем...", - "Upload": "Загрузить", - "Upload error": "Ошибка загрузки", - "Upload userpic": "Загрузить аватар", - "Upload video": "Загрузить видео", - "Uploading image": "Загружаем изображение", - "user already exist": "пользователь уже существует", - "User was not found": "Пользователь не найден", - "Username": "Имя пользователя", - "Userpic": "Аватар", - "Users": "Пользователи", - "verified": "уже подтверждён", - "video": "видео", - "Video": "Видео", - "Video format not supported": "Тип видео не поддерживается", - "view": "просмотр", - "Views": "Просмотры", - "Volounteering": "Волонтёрство", - "Want to suggest, discuss or advise something? Share a topic or an idea? Please send us a message!": "Хотите что-то предложить, обсудить или посоветовать? Поделиться темой или идеей? Напишите нам скорее!", - "We are working on collaborative editing of articles and in the near future you will have an amazing opportunity - to create together with your colleagues": "Мы работаем над коллаборативным редактированием статей и в ближайшем времени у вас появиться удивительная возможность - творить вместе с коллегами", - "We can't find you, check email or": "Не можем вас найти, проверьте адрес электронной почты или", - "We couldn't find anything for your request": "Мы не смогли ничего найти по вашему запросу", - "We know you, please try to login": "Такой адрес почты уже зарегистрирован, попробуйте залогиниться", - "We've sent you a message with a link to enter our website.": "Мы выслали вам письмо с ссылкой на почту. Перейдите по ссылке в письме, чтобы войти на сайт.", - "Welcome to Discours": "Добро пожаловать в Дискурс", - "Welcome to Discours to add to your bookmarks": "Войдите в Дискурс, чтобы добавить в закладки", - "Welcome to Discours to participate in discussions": "Войдите в Дискурс для участия в дискуссиях", - "Welcome to Discours to publish articles": "Войдите в Дискурс, чтобы публиковать статьи", - "Welcome to Discours to subscribe": "Войдите в Дискурс для подписки на новые публикации", - "Welcome to Discours to subscribe to new publications": "Войдите в Дискурс, чтобы подписаться", - "Welcome to Discours to vote": "Войдите в Дискурс, чтобы голосовать", - "Welcome!": "Добро пожаловать!", - "Where": "Откуда", - "Why you can earn a hole in your karma and how to receive rays of gratitude for your contribution to discussions in samizdat communities": "За что можно заслужить дырку в карме и как получить лучи благодарности за вклад в дискуссии в сообществах самиздата", - "Words": "Слов", - "Work with us": "Сотрудничать с Дискурсом", - "Write a comment...": "Написать комментарий...", - "Write a short introduction": "Напишите краткое вступление", - "Write about the topic": "Написать в тему", - "Write an article": "Написать статью", - "Write comment": "Написать комментарий", - "Write good articles, comment\nand it won't be so empty here": "Пишите хорошие статьи, комментируйте,\nи здесь станет не так пусто", - "Write message": "Написать сообщение", - "Write to us": "Напишите нам", - "Write your colleagues name or email": "Напишите имя или e-mail коллеги", - "yesterday": "вчера", - "You can": "Вы можете", - "You can download multiple tracks at once in .mp3, .wav or .flac formats": "Можно загрузить сразу несколько треков в форматах .mp3, .wav или .flac", - "You can now login using your new password": "Теперь вы можете входить с помощью нового пароля", - "You can't edit this post": "Вы не можете редактировать этот материал", - "You was successfully authorized": "Вы были успешно авторизованы", - "You ll be able to participate in discussions, rate others' comments and learn about new responses": "Вы сможете участвовать в обсуждениях, оценивать комментарии других и узнавать о новых ответах", - "You've confirmed email": "Вы подтвердили почту", - "You've reached a non-existed page": "Вы попали на несуществующую страницу", - "You've successfully logged out": "Вы успешно вышли из аккаунта", - "Your contact for answer": "Ваш контакт для обратной связи", - "Your email": "Ваш email", - "Your name will appear on your profile page and as your signature in publications, comments and responses.": "Ваше имя появится на странице вашего профиля и как ваша подпись в публикациях, комментариях и откликах" -} diff --git a/src/components/Article/Comment/Comment.tsx b/src/components/Article/Comment/Comment.tsx index 9f2ef490..552ca361 100644 --- a/src/components/Article/Comment/Comment.tsx +++ b/src/components/Article/Comment/Comment.tsx @@ -253,7 +253,7 @@ export const Comment = (props: Props) => { {/* class={clsx(styles.commentControl, styles.commentControlComplain)}*/} {/* onClick={() => showModal('reportComment')}*/} {/*>*/} - {/* {t('Report')}*/} + {/* {t('Complain')}*/} {/**/}
            diff --git a/src/components/Discours/Banner.tsx b/src/components/Discours/Banner.tsx index d50d6471..a2d819a8 100644 --- a/src/components/Discours/Banner.tsx +++ b/src/components/Discours/Banner.tsx @@ -14,7 +14,7 @@ export default () => {
            -

            {t('Discours is created with our common effort')}

            +

            {t('Discours exists because of our common effort')}

            {t('Support us')} {t('Become an author')} diff --git a/src/components/Discours/Footer.tsx b/src/components/Discours/Footer.tsx index e499cea9..ca20cb74 100644 --- a/src/components/Discours/Footer.tsx +++ b/src/components/Discours/Footer.tsx @@ -28,7 +28,7 @@ export const FooterView = () => { { title: t('Discours Manifest'), slug: '/about/manifest' }, { title: t('How it works'), slug: '/about/guide' }, { title: t('Dogma'), slug: '/about/dogma' }, - { title: t('Principles'), slug: '/about/principles' }, + { title: t('Our principles'), slug: '/guide/principles' }, { title: t('How to write an article'), slug: '/how-to-write-a-good-article' } ] }, diff --git a/src/components/Feed/FeedArticlePopup/FeedArticlePopup.tsx b/src/components/Feed/FeedArticlePopup/FeedArticlePopup.tsx index 0943b814..f5f1c06f 100644 --- a/src/components/Feed/FeedArticlePopup/FeedArticlePopup.tsx +++ b/src/components/Feed/FeedArticlePopup/FeedArticlePopup.tsx @@ -93,10 +93,10 @@ export const FeedArticlePopup = (props: Props) => { {/* class={styles.action}*/} {/* role="button"*/} {/* onClick={() => {*/} - {/* alert('Report')*/} + {/* alert('Complain')*/} {/* }}*/} {/* >*/} - {/* {t('Report')}*/} + {/* {t('Complain')}*/} {/* */} {/*

          • */} {/**/} diff --git a/src/components/Feed/Sidebar/Sidebar.tsx b/src/components/Feed/Sidebar/Sidebar.tsx index 8cec85c2..dd3b15c5 100644 --- a/src/components/Feed/Sidebar/Sidebar.tsx +++ b/src/components/Feed/Sidebar/Sidebar.tsx @@ -16,9 +16,9 @@ export const Sidebar = () => { const { feedByTopic, feedByAuthor, seen } = useFeed() const [isSubscriptionsVisible, setSubscriptionsVisible] = createSignal(true) const matchFeed = useMatch(() => '/feed') - const matchFeedMy = useMatch(() => '/feed/my') - const matchFeedCollabs = useMatch(() => '/feed/collabs') - const matchFeedDiscussions = useMatch(() => '/feed/discussions') + const matchFeedMy = useMatch(() => '/feed/followed') + const matchFeedCollabs = useMatch(() => '/feed/coauthored') + const matchFeedDiscussions = useMatch(() => '/feed/discussed') const checkTopicIsSeen = (topicSlug: string) => { return feedByTopic()[topicSlug]?.every((article) => Boolean(seen()[article.slug])) } @@ -39,13 +39,13 @@ export const Sidebar = () => { > - {t('Common feed')} + {t('All')}
          • {
          • {
          • { onClick={handleCreate} disabled={usersId().length === 0} > - {usersId().length > 1 ? t('Create Group') : t('Create Chat')} + {usersId().length > 1 ? t('New group') : t('Create Chat')}
        diff --git a/src/components/Nav/AuthModal/AuthModalHeader/AuthModalHeader.tsx b/src/components/Nav/AuthModal/AuthModalHeader/AuthModalHeader.tsx index 2d800c0c..38b5ea58 100644 --- a/src/components/Nav/AuthModal/AuthModalHeader/AuthModalHeader.tsx +++ b/src/components/Nav/AuthModal/AuthModalHeader/AuthModalHeader.tsx @@ -14,7 +14,7 @@ export const AuthModalHeader = (props: Props) => { const generateModalTextsFromSource = ( modalType: 'login' | 'register' ): { title: string; description: string } => { - const title = modalType === 'login' ? 'Welcome to Discours' : 'Create account' + const title = modalType === 'login' ? 'Welcome to Discours' : 'Sign up' switch (searchParams?.source) { case 'create': { diff --git a/src/components/Nav/AuthModal/index.tsx b/src/components/Nav/AuthModal/index.tsx index c3ccaf61..21a33f4d 100644 --- a/src/components/Nav/AuthModal/index.tsx +++ b/src/components/Nav/AuthModal/index.tsx @@ -76,7 +76,7 @@ export const AuthModal = () => { 'Get to know the most intelligent people of our time, edit and discuss the articles, share your expertise, rate and decide what to publish in the magazine' )} .  - {t('New stories every day and even more!')} + {t('New stories and more are waiting for you every day!')}

      @@ -89,7 +89,7 @@ export const AuthModal = () => { > {t('terms of use')} - , {t('personal data usage and email notifications')}. + , {t('to process personal data and receive email notifications')}.

      {' '} diff --git a/src/components/Nav/Header/Header.tsx b/src/components/Nav/Header/Header.tsx index bde33d89..cd119219 100644 --- a/src/components/Nav/Header/Header.tsx +++ b/src/components/Nav/Header/Header.tsx @@ -282,7 +282,7 @@ export const Header = (props: Props) => {

      { {t('Dogma')}

    • - {t('Community Principles')} + {t('Community Our principles')}
    • {t('Platform Guide')} @@ -456,7 +456,7 @@ export const Header = (props: Props) => {
    • - + {t('My feed')} @@ -464,7 +464,7 @@ export const Header = (props: Props) => {
    • - + {t('Participation')} @@ -472,7 +472,7 @@ export const Header = (props: Props) => {
    • - + {t('Discussions')} @@ -480,21 +480,13 @@ export const Header = (props: Props) => {
    • - + {t('Bookmarks')}
    • -
    • - - - - {t('Notifications')} - - -
    diff --git a/src/components/ProfileSettings/ProfileSettings.tsx b/src/components/ProfileSettings/ProfileSettings.tsx index 7563b716..ff93fa83 100644 --- a/src/components/ProfileSettings/ProfileSettings.tsx +++ b/src/components/ProfileSettings/ProfileSettings.tsx @@ -324,15 +324,15 @@ export const ProfileSettings = () => { maxLength={120} /> -

    {t('About')}

    +

    {t('About the author')}

    updateFormField('about', value)} diff --git a/src/components/Views/AllAuthors/AllAuthors.tsx b/src/components/Views/AllAuthors/AllAuthors.tsx index 60c5d404..2f9d963d 100644 --- a/src/components/Views/AllAuthors/AllAuthors.tsx +++ b/src/components/Views/AllAuthors/AllAuthors.tsx @@ -1,7 +1,10 @@ import { Meta } from '@solidjs/meta' +import { useSearchParams } from '@solidjs/router' import { clsx } from 'clsx' import { For, Show, createMemo, createSignal, onMount } from 'solid-js' - +import ruKeywords from '~/lib/locales/ru/keywords.json' +import enKeywords from '~/lib/locales/ru/keywords.json' +import { byFirstChar, byStat } from '~/utils/sortby' import { type SortFunction, useAuthors } from '../../../context/authors' import { useLocalize } from '../../../context/localize' import type { Author } from '../../../graphql/schema/core.gen' @@ -11,9 +14,6 @@ import { authorLetterReduce, translateAuthor } from '../../../utils/translate' import { AuthorsList } from '../../AuthorsList' import { Loading } from '../../_shared/Loading' import { SearchField } from '../../_shared/SearchField' - -import { useSearchParams } from '@solidjs/router' -import { byFirstChar, byStat } from '~/utils/sortby' import styles from './AllAuthors.module.scss' type Props = { @@ -70,7 +70,7 @@ export const AllAuthors = (props: Props) => { return (
    - + diff --git a/src/components/Views/AllTopics/AllTopics.tsx b/src/components/Views/AllTopics/AllTopics.tsx index 5b5de039..77f18bc4 100644 --- a/src/components/Views/AllTopics/AllTopics.tsx +++ b/src/components/Views/AllTopics/AllTopics.tsx @@ -2,8 +2,9 @@ import { Meta } from '@solidjs/meta' import { A, useSearchParams } from '@solidjs/router' import { clsx } from 'clsx' import { For, Show, createEffect, createMemo, createSignal, on, onMount } from 'solid-js' - import { useTopics } from '~/context/topics' +import ruKeywords from '~/lib/locales/ru/keywords.json' +import enKeywords from '~/lib/locales/ru/keywords.json' import { useLocalize } from '../../../context/localize' import type { Topic } from '../../../graphql/schema/core.gen' import { capitalize } from '../../../utils/capitalize' @@ -107,7 +108,7 @@ export const AllTopics = (props: Props) => { return (
    - + diff --git a/src/components/Views/Author/Author.tsx b/src/components/Views/Author/Author.tsx index 724a1aef..cc61737c 100644 --- a/src/components/Views/Author/Author.tsx +++ b/src/components/Views/Author/Author.tsx @@ -203,7 +203,7 @@ export const AuthorView = (props: Props) => {
  • checkBioHeight()} href={`/author/${props.authorSlug}`}> - {t('About')} + {t('About the author')}
  • diff --git a/src/components/Views/Feed/Feed.tsx b/src/components/Views/Feed/Feed.tsx index 658796b8..a574b72a 100644 --- a/src/components/Views/Feed/Feed.tsx +++ b/src/components/Views/Feed/Feed.tsx @@ -1,18 +1,20 @@ -import { clsx } from 'clsx' -import { For, Show, createEffect, createMemo, createSignal, on, onMount } from 'solid-js' - import { Meta } from '@solidjs/meta' -import { A, useLocation, useSearchParams } from '@solidjs/router' +import { A, createAsync, useLocation, useNavigate, useSearchParams } from '@solidjs/router' +import { clsx } from 'clsx' +import { For, Show, createMemo, createSignal, onMount } from 'solid-js' +import { Option } from '~/components/_shared/DropDown/DropDown' import { useGraphQL } from '~/context/graphql' import { useUI } from '~/context/ui' -import getUnratedShoutsQuery from '~/graphql/query/core/articles-load-unrated' +import { loadUnratedShouts } from '~/lib/api/private' +import ruKeywords from '~/lib/locales/ru/keywords.json' +import enKeywords from '~/lib/locales/ru/keywords.json' +import { FeedSearchParams } from '~/routes/feed/[...feed]' import { useAuthors } from '../../../context/authors' -import { useFeed } from '../../../context/feed' import { useLocalize } from '../../../context/localize' import { useReactions } from '../../../context/reactions' import { useSession } from '../../../context/session' import { useTopics } from '../../../context/topics' -import type { Author, LoadShoutsOptions, Reaction, Shout } from '../../../graphql/schema/core.gen' +import type { Author, Reaction, Shout } from '../../../graphql/schema/core.gen' import { getImageUrl } from '../../../utils/getImageUrl' import { byCreated } from '../../../utils/sortby' import { CommentDate } from '../../Article/CommentDate' @@ -33,190 +35,55 @@ import { ShareModal } from '../../_shared/ShareModal' import styles from './Feed.module.scss' export const FEED_PAGE_SIZE = 20 -const UNRATED_ARTICLES_COUNT = 5 - -type FeedPeriod = 'week' | 'month' | 'year' -type VisibilityMode = 'all' | 'community' | 'featured' - -type PeriodItem = { - value: FeedPeriod - title: string +export type PeriodType = 'week' | 'month' | 'year' +export type FeedProps = { + shouts: Shout[] } -type VisibilityItem = { - value: VisibilityMode - title: string -} - -type FeedSearchParams = { - by: 'publish_date' | 'likes' | 'last_comment' - period: FeedPeriod - visibility: VisibilityMode -} - -type Props = { - loadShouts: (options: LoadShoutsOptions) => Promise<{ - hasMore: boolean - newShouts: Shout[] - }> -} - -const getFromDate = (period: FeedPeriod): number => { - const now = new Date() - let d: Date = now - switch (period) { - case 'week': { - d = new Date(now.setDate(now.getDate() - 7)) - break - } - case 'month': { - d = new Date(now.setMonth(now.getMonth() - 1)) - break - } - case 'year': { - d = new Date(now.setFullYear(now.getFullYear() - 1)) - break - } - } - return Math.floor(d.getTime() / 1000) -} - -export const FeedView = (props: Props) => { - const { t } = useLocalize() - - const monthPeriod: PeriodItem = { value: 'month', title: t('This month') } - - const periods: PeriodItem[] = [ - { value: 'week', title: t('This week') }, - monthPeriod, - { value: 'year', title: t('This year') } - ] - - const visibilities: VisibilityItem[] = [ - { value: 'community', title: t('All') }, - { value: 'featured', title: t('Published') } - ] - const { query } = useGraphQL() - const [searchParams, changeSearchParams] = useSearchParams() +export const FeedView = (props: FeedProps) => { + const { t, lang } = useLocalize() const loc = useLocation() + const client = useGraphQL() + const unrated = createAsync(async () => { + if (client) { + const shoutsLoader = loadUnratedShouts(client, { limit: 5 }) + return await shoutsLoader() + } + }) + const navigate = useNavigate() const { showModal } = useUI() const [isLoading, setIsLoading] = createSignal(false) const [isRightColumnLoaded, setIsRightColumnLoaded] = createSignal(false) const { session } = useSession() const { loadReactionsBy } = useReactions() - const { sortedFeed } = useFeed() const { topTopics } = useTopics() const { topAuthors } = useAuthors() - const [isLoadMoreButtonVisible, setIsLoadMoreButtonVisible] = createSignal(false) const [topComments, setTopComments] = createSignal([]) - const [unratedArticles, setUnratedArticles] = createSignal([]) - const [_searchResults, setSearchResults] = createSignal([]) - - const currentPeriod = createMemo(() => { - const period = periods.find((p) => p.value === searchParams?.period) - if (!period) { - return monthPeriod - } - return period - }) - - const currentVisibility = createMemo(() => { - const visibility = visibilities.find((v) => v.value === searchParams?.visibility) - if (!visibility) { - return visibilities[0] - } - return visibility - }) - - const loadUnratedArticles = async () => { - if (session()) { - const resp = await query(getUnratedShoutsQuery, { limit: UNRATED_ARTICLES_COUNT }).toPromise() - setUnratedArticles(resp?.data?.load_shouts_unrated || []) - } - } - + const [searchParams, changeSearchParams] = useSearchParams() + const asOption = (o: string) => ({ value: o, title: t(o) }) + const asOptions = (opts: string[]) => opts.map(asOption) + const currentPeriod = createMemo(() => asOption(searchParams?.period || '')) const loadTopComments = async () => { const comments = await loadReactionsBy({ by: { comment: true }, limit: 50 }) setTopComments(comments.sort(byCreated).reverse()) } onMount(() => { - loadMore() - // eslint-disable-next-line promise/catch-or-return - Promise.all([loadTopComments()]).finally(() => setIsRightColumnLoaded(true)) + setIsLoading(true) + Promise.all([ + loadTopComments(), + loadReactionsBy({ by: { shouts: props.shouts.map((s) => s.slug) } }) + ]).finally(() => { + setIsRightColumnLoaded(true) + setIsLoading(false) + }) }) - createEffect( - on( - [() => session(), unratedArticles], - ([s, seen]) => { - if (s?.access_token && !(seen?.length > 0)) loadUnratedArticles() - }, - { defer: true } - ) - ) - - // TODO: declare some details - createEffect( - on( - () => searchParams, - (_p) => { - setSearchResults([]) - loadMore() - }, - { defer: true } - ) - ) - - const loadFeedShouts = () => { - const options: LoadShoutsOptions = { - limit: FEED_PAGE_SIZE, - offset: sortedFeed()?.length || 0 - } - - if (searchParams?.by) { - options.order_by = searchParams?.by - } - - const visibilityMode = searchParams?.visibility - - if (visibilityMode === 'all') { - options.filters = { ...options.filters } - } else if (visibilityMode) { - options.filters = { - ...options.filters, - featured: visibilityMode === 'featured' - } - } - - if (searchParams?.by && searchParams?.by !== 'publish_date') { - const period = searchParams?.period || 'month' - options.filters = { after: getFromDate(period) } - } - - return props.loadShouts(options) - } - - const loadMore = async () => { - setIsLoading(true) - const { hasMore, newShouts } = await loadFeedShouts() - - setIsLoading(false) - - loadReactionsBy({ - by: { - shouts: newShouts.map((s) => s.slug) - } - }) - - setIsLoadMoreButtonVisible(hasMore) - } - const ogImage = getImageUrl('production/image/logo_image.png') - const description = t( - 'Independent media project about culture, science, art and society with horizontal editing' + const description = createMemo(() => + t('Independent media project about culture, science, art and society with horizontal editing') ) - const ogTitle = t('Feed') + const ogTitle = createMemo(() => t('Feed')) const [shareData, setShareData] = createSignal() const handleShare = (shared: Shout | undefined) => { @@ -226,16 +93,16 @@ export const FeedView = (props: Props) => { return (
    - - + + - + - + - - + +
    @@ -246,13 +113,12 @@ export const FeedView = (props: Props) => { - +
    • {t('Recent')} @@ -275,35 +141,33 @@ export const FeedView = (props: Props) => { })} > changeSearchParams({ by: 'last_comment' })}> - {t('Most commented')} + {t('Commented')}
    - + changeSearchParams({ period: period.value })} + onChange={(period: Option) => changeSearchParams({ period: period.value })} /> - changeSearchParams({ visibility: visibility.value }) - } + onChange={(mode: Option) => navigate(`/feed/${mode.value}`)} />
    }> - 0}> - + 0}> + {(article) => ( handleShare(shared)} @@ -335,20 +199,12 @@ export const FeedView = (props: Props) => {
    - + {(article) => ( )} - - -

    - -

    -
    @@ -408,14 +264,14 @@ export const FeedView = (props: Props) => { Правила конструктивных дискуссий
  • - Принципы сообщества + Принципы сообщества
  • - +

    {t('Be the first to rate')}

    - + {(article) => ( )} diff --git a/src/components/Views/Home.tsx b/src/components/Views/Home.tsx index a1f80367..7cf336df 100644 --- a/src/components/Views/Home.tsx +++ b/src/components/Views/Home.tsx @@ -1,6 +1,11 @@ import { For, Show, createEffect, createMemo, createSignal, on } from 'solid-js' +import { Meta } from '@solidjs/meta' import { useAuthors } from '~/context/authors' +import { loadShouts } from '~/lib/api/public' +import ruKeywords from '~/lib/locales/ru/keywords.json' +import enKeywords from '~/lib/locales/ru/keywords.json' +import { SHOUTS_PER_PAGE } from '~/routes/(home)' import { useLocalize } from '../../context/localize' import { useTopics } from '../../context/topics' import { Author, Shout, Topic } from '../../graphql/schema/core.gen' @@ -18,9 +23,6 @@ import RowShort from '../Feed/RowShort' import { Topics } from '../Nav/Topics' import { Icon } from '../_shared/Icon' import { ArticleCardSwiper } from '../_shared/SolidSwiper/ArticleCardSwiper' - -import { loadShouts } from '~/lib/api' -import { SHOUTS_PER_PAGE } from '~/routes/(home)' import styles from './Home.module.scss' export const RANDOM_TOPICS_COUNT = 12 @@ -37,7 +39,7 @@ export interface HomeViewProps { } export const HomeView = (props: HomeViewProps) => { - const { t } = useLocalize() + const { t, lang } = useLocalize() const { topAuthors, addAuthors } = useAuthors() const { topTopics, randomTopic } = useTopics() const [randomTopicArticles, setRandomTopicArticles] = createSignal([]) @@ -71,84 +73,87 @@ export const HomeView = (props: HomeViewProps) => { ) return ( - 0}> - - - - SHOUTS_PER_PAGE}> - - - - - - - - - - - {t('Top commented')}} - nodate={true} - /> - - -
    {capitalize(randomTopic()?.title || '', true)}
    - -
    - } + <> + + 0}> + + + + SHOUTS_PER_PAGE}> + + + + + + + + + + + {t('Top commented')}} + nodate={true} + /> + + +
    {capitalize(randomTopic()?.title || '', true)}
    + +
    + } + /> + + + + + + + + + + + - - - - - - - - - - + + {(page) => ( + <> + + + + + + + + + )} + - - {(page) => ( - <> - - - - - - - - - )} - - + ) } diff --git a/src/components/Views/Inbox/Inbox.tsx b/src/components/Views/Inbox/Inbox.tsx index 3c9e9655..f78d9ffe 100644 --- a/src/components/Views/Inbox/Inbox.tsx +++ b/src/components/Views/Inbox/Inbox.tsx @@ -307,7 +307,7 @@ export const InboxView = (props: Props) => { smallHeight={true} imageEnabled={true} isCancelButtonVisible={false} - placeholder={t('Write message')} + placeholder={t('New message')} setClear={isClear()} onSubmit={(message) => handleSubmit(message)} submitByCtrlEnter={true} diff --git a/src/components/Views/Topic.tsx b/src/components/Views/Topic.tsx index 0e514d54..5ce27a2a 100644 --- a/src/components/Views/Topic.tsx +++ b/src/components/Views/Topic.tsx @@ -28,6 +28,9 @@ import { Row3 } from '../Feed/Row3' import { FullTopic } from '../Topic/Full' import { ArticleCardSwiper } from '../_shared/SolidSwiper/ArticleCardSwiper' +import ruKeywords from '~/lib/locales/ru/keywords.json' +import enKeywords from '~/lib/locales/ru/keywords.json' + type TopicsPageSearchParams = { by: 'comments' | '' | 'recent' | 'viewed' | 'rating' | 'commented' } @@ -165,7 +168,10 @@ export const TopicView = (props: Props) => { return (
    - + diff --git a/src/config/routes.ts b/src/config/routes.ts index 9b40149f..af122c7d 100644 --- a/src/config/routes.ts +++ b/src/config/routes.ts @@ -14,10 +14,10 @@ export const ROUTES = { authorAbout: '/author/:slug/about', feed: '/feed', feedMy: '/feed/my', - feedNotifications: '/feed/notifications', - feedDiscussions: '/feed/discussions', - feedBookmarks: '/feed/bookmarks', - feedCollaborations: '/feed/collaborations', + feedNotifications: '/feed/noticed', + feedDiscussions: '/feed/discussed', + feedBookmarks: '/feed/bookmarked', + feedCollaborations: '/feed/coauthored', search: '/search/:q?', dogma: '/about/dogma', discussionRules: '/about/discussion-rules', diff --git a/src/context/graphql.tsx b/src/context/graphql.tsx index 0e32ced4..b5dc458b 100644 --- a/src/context/graphql.tsx +++ b/src/context/graphql.tsx @@ -69,5 +69,5 @@ export const useGraphQL = (url: string = coreApiUrl) => { } } if (!c) c = clients[coreApiUrl] - return { query: c.query, mutation: c.mutation } + return c } diff --git a/src/context/reactions.tsx b/src/context/reactions.tsx index d40ff8d9..eeede0c2 100644 --- a/src/context/reactions.tsx +++ b/src/context/reactions.tsx @@ -19,6 +19,7 @@ import { useSnackbar } from './ui' type ReactionsContextType = { reactionEntities: Record + reactionsByShout: Record loadReactionsBy: (args: QueryLoad_Reactions_ByArgs) => Promise createReaction: (reaction: MutationCreate_ReactionArgs) => Promise updateReaction: (reaction: MutationUpdate_ReactionArgs) => Promise @@ -33,6 +34,7 @@ export function useReactions() { export const ReactionsProvider = (props: { children: JSX.Element }) => { const [reactionEntities, setReactionEntities] = createStore>({}) + const [reactionsByShout, setReactionsByShout] = createStore>({}) const { t } = useLocalize() const { showSnackbar } = useSnackbar() const { query, mutation } = useGraphQL() @@ -40,13 +42,17 @@ export const ReactionsProvider = (props: { children: JSX.Element }) => { const loadReactionsBy = async (opts: QueryLoad_Reactions_ByArgs): Promise => { const resp = await query(getReactionsByQuery, opts) const result = resp?.data?.load_reactions_by || [] + const newReactionsByShout: Record = {} const newReactionEntities = result.reduce( (acc: { [reaction_id: number]: Reaction }, reaction: Reaction) => { acc[reaction.id] = reaction + if (!newReactionsByShout[reaction.shout.slug]) newReactionsByShout[reaction.shout.slug] = [] + newReactionsByShout[reaction.shout.slug].push(reaction) return acc }, {} ) + setReactionsByShout(newReactionsByShout) setReactionEntities(newReactionEntities) return result } @@ -115,7 +121,7 @@ export const ReactionsProvider = (props: { children: JSX.Element }) => { deleteReaction } - const value: ReactionsContextType = { reactionEntities, ...actions } + const value: ReactionsContextType = { reactionEntities, reactionsByShout, ...actions } return {props.children} } diff --git a/src/context/topics.tsx b/src/context/topics.tsx index e94c6fdf..7e9b69b4 100644 --- a/src/context/topics.tsx +++ b/src/context/topics.tsx @@ -10,7 +10,7 @@ import { on, useContext } from 'solid-js' -import { loadTopics } from '~/lib/api' +import { loadTopics } from '~/lib/api/public' import { getRandomTopicsFromArray } from '~/utils/getRandomTopicsFromArray' import { Topic } from '../graphql/schema/core.gen' import { byTopicStatDesc } from '../utils/sortby' diff --git a/src/graphql/client/core.ts b/src/graphql/client/core.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/src/graphql/query/core/articles-load-bookmarked.ts b/src/graphql/query/core/articles-load-bookmarked.ts new file mode 100644 index 00000000..e0b37082 --- /dev/null +++ b/src/graphql/query/core/articles-load-bookmarked.ts @@ -0,0 +1,44 @@ +import { gql } from '@urql/core' + +export default gql` + query LoadBookmarkedShoutsQuery($limit: Int, $offset: Int) { + load_shouts_bookmarked(limit: $limit, offset: $offset) { + id + title + description + subtitle + slug + layout + cover + cover_caption + main_topic + topics { + id + title + body + slug + stat { + shouts + authors + followers + } + } + authors { + id + name + slug + pic + created_at + bio + } + created_at + published_at + featured_at + stat { + viewed + rating + commented + } + } + } +` diff --git a/src/graphql/query/core/articles-load-coauthored.ts b/src/graphql/query/core/articles-load-coauthored.ts new file mode 100644 index 00000000..bb8dfb61 --- /dev/null +++ b/src/graphql/query/core/articles-load-coauthored.ts @@ -0,0 +1,45 @@ +import { gql } from '@urql/core' + +export default gql` + query LoadCoauthoredShoutsQuery($limit: Int, $offset: Int) { + load_shouts_coauthored(limit: $limit, offset: $offset) { + id + title + # lead + description + subtitle + slug + layout + cover + cover_caption + main_topic + topics { + id + title + body + slug + stat { + shouts + authors + followers + } + } + authors { + id + name + slug + pic + created_at + bio + } + created_at + published_at + featured_at + stat { + viewed + rating + commented + } + } + } +` diff --git a/src/graphql/query/core/articles-load-discussed.ts b/src/graphql/query/core/articles-load-discussed.ts new file mode 100644 index 00000000..c1fbc582 --- /dev/null +++ b/src/graphql/query/core/articles-load-discussed.ts @@ -0,0 +1,44 @@ +import { gql } from '@urql/core' + +export default gql` + query LoadDiscussedShoutsQuery($limit: Int, $offset: Int) { + load_shouts_discussed(limit: $limit, offset: $offset) { + id + title + description + subtitle + slug + layout + cover + cover_caption + main_topic + topics { + id + title + body + slug + stat { + shouts + authors + followers + } + } + authors { + id + name + slug + pic + created_at + bio + } + created_at + published_at + featured_at + stat { + viewed + rating + commented + } + } + } +` diff --git a/src/graphql/query/core/articles-load-followed-by.ts b/src/graphql/query/core/articles-load-followed-by.ts new file mode 100644 index 00000000..9d1b20f6 --- /dev/null +++ b/src/graphql/query/core/articles-load-followed-by.ts @@ -0,0 +1,37 @@ +import { gql } from '@urql/core' + +export default gql` + query ShoutsFollowedByUserQuery($slug: String!, $limit: Int!, $offset: Int!) { + load_shouts_followed_by(slug: String!, limit: Int, offset: Int) { + title + subtitle + layout + slug + cover + main_topic + topics { + title + body + slug + stat { + shouts + authors + followers + } + } + authors { + id + name + slug + pic + } + created_at + published_at + featured_at + stat { + viewed + rating + } + } + } +` diff --git a/src/graphql/query/core/articles-load-followed.ts b/src/graphql/query/core/articles-load-followed.ts index 07a18468..e2fdf8cc 100644 --- a/src/graphql/query/core/articles-load-followed.ts +++ b/src/graphql/query/core/articles-load-followed.ts @@ -1,17 +1,15 @@ import { gql } from '@urql/core' export default gql` - query ShoutsReactedByUserQuery($slug: String!, $limit: Int!, $offset: Int!) { - load_shouts_followed(slug: String!, limit: Int, offset: Int) { + query ShoutsFollowedQuery($limit: Int!, $offset: Int!) { + load_shouts_followed(limit: Int, offset: Int) { title subtitle layout slug cover - # cover_caption main_topic topics { - # id title body slug @@ -32,7 +30,6 @@ export default gql` featured_at stat { viewed - rating } } diff --git a/src/lib/api/private.ts b/src/lib/api/private.ts new file mode 100644 index 00000000..cdfd4c3d --- /dev/null +++ b/src/lib/api/private.ts @@ -0,0 +1,72 @@ +import { cache } from '@solidjs/router' +import { Client } from '@urql/core' +import loadShoutsBookmarkedQuery from '~/graphql/query/core/articles-load-bookmarked' +import loadShoutsCoauthoredQuery from '~/graphql/query/core/articles-load-coauthored' +import loadShoutsDiscussedQuery from '~/graphql/query/core/articles-load-discussed' +import loadShoutsFollowedQuery from '~/graphql/query/core/articles-load-followed' +import loadShoutsUnratedQuery from '~/graphql/query/core/articles-load-unrated' +import { + QueryLoad_Shouts_FollowedArgs, + QueryLoad_Shouts_UnratedArgs, + Shout +} from '~/graphql/schema/core.gen' + +export const loadUnratedShouts = ( + signedClient: Client | undefined, + options: QueryLoad_Shouts_UnratedArgs +) => { + const page = `${options.offset || 0}-${(options?.limit || 0) + (options.offset || 0)}` + return cache(async () => { + const resp = await signedClient?.query(loadShoutsUnratedQuery, { ...options }).toPromise() + const result = resp?.data?.load_shouts_unrated + if (result) return result as Shout[] + }, `shouts-unrated-${page}`) +} + +export const loadFollowedShouts = ( + signedClient: Client | undefined, + options: QueryLoad_Shouts_FollowedArgs +) => { + const page = `${options.offset || 0}-${(options?.limit || 0) + (options.offset || 0)}` + return cache(async () => { + const resp = await signedClient?.query(loadShoutsFollowedQuery, { ...options }).toPromise() + const result = resp?.data?.load_shouts_followed + if (result) return result as Shout[] + }, `shouts-followed-${page}`) +} + +export const loadBookmarkedShouts = ( + signedClient: Client | undefined, + options: QueryLoad_Shouts_FollowedArgs +) => { + const page = `${options.offset || 0}-${(options?.limit || 0) + (options.offset || 0)}` + return cache(async () => { + const resp = await signedClient?.query(loadShoutsBookmarkedQuery, { ...options }).toPromise() + const result = resp?.data?.load_shouts_bookmarked + if (result) return result as Shout[] + }, `shouts-bookmarked-${page}`) +} + +export const loadDiscussedShouts = ( + signedClient: Client | undefined, + options: QueryLoad_Shouts_FollowedArgs +) => { + const page = `${options.offset || 0}-${(options?.limit || 0) + (options.offset || 0)}` + return cache(async () => { + const resp = await signedClient?.query(loadShoutsDiscussedQuery, { ...options }).toPromise() + const result = resp?.data?.load_shouts_discussed + if (result) return result as Shout[] + }, `shouts-discussed-${page}`) +} + +export const loadCoauthoredShouts = ( + signedClient: Client | undefined, + options: QueryLoad_Shouts_FollowedArgs +) => { + const page = `${options.offset || 0}-${(options?.limit || 0) + (options.offset || 0)}` + return cache(async () => { + const resp = await signedClient?.query(loadShoutsCoauthoredQuery, { ...options }).toPromise() + const result = resp?.data?.load_shouts_coauthored + if (result) return result as Shout[] + }, `shouts-coauthored-${page}`) +} diff --git a/src/lib/api.ts b/src/lib/api/public.ts similarity index 100% rename from src/lib/api.ts rename to src/lib/api/public.ts diff --git a/src/lib/locales/en/keywords.json b/src/lib/locales/en/keywords.json new file mode 100644 index 00000000..366a311f --- /dev/null +++ b/src/lib/locales/en/keywords.json @@ -0,0 +1,8 @@ +{ + "dogma": "Discours.io, dogma, editorial principles, code of ethics, journalism, community", + "guide": "discours.io, guide, help, how to start, reference, tutorial", + "": "Discours.io, Discours magazine, Discours, culture, science, art, society, independent journalism, literature, music, cinema, video, photography", + "principles": "Discours.io, communities, values, editorial rules, polyphony, creation", + "terms-of-use": "Discours.io, site rules, terms of use", + "topic": "{topic}, Discours.io, articles, journalism, research" +} diff --git a/src/lib/locales/en/translation.json b/src/lib/locales/en/translation.json index 22eec2e4..9e87ba0c 100644 --- a/src/lib/locales/en/translation.json +++ b/src/lib/locales/en/translation.json @@ -1,400 +1,11 @@ { - "A guide to horizontal editorial: how an open journal works": "A guide to horizontal editorial: how an open journal works", - "About": "About", - "About the project": "About the project", - "actions": "actions", - "Add": "Add", - "Add a few topics so that the reader knows what your content is about and can find it on pages of topics that interest them. Topics can be swapped, the first topic becomes the title": "Add a few topics so that the reader knows what your content is about and can find it on pages of topics that interest them. Topics can be swapped, the first topic becomes the title", - "Add a link or click plus to embed media": "Add a link or click plus to embed media", - "Add an embed widget": "Add an embed widget", - "Add another image": "Add another image", - "Add audio": "Add audio", - "Add blockquote": "Add blockquote", - "Add comment": "Comment", - "Add cover": "Add cover", - "Add image": "Add image", - "Add images": "Add images", - "Add intro": "Add intro", - "Add link": "Add link", - "add link": "add link", - "Add rule": "Add rule", - "Add signature": "Add signature", - "Add subtitle": "Add subtitle", - "Add url": "Add url", - "Address on Discours": "Address on Discours", - "Album name": "Название aльбома", - "Alignment center": "Alignment center", - "Alignment left": "Alignment left", - "Alignment right": "Alignment right", - "All": "All", - "All articles": "All articles", - "All authors": "All authors", - "All posts": "All posts", - "All topics": "All topics", - "all topics": "all topics", - "Almost done! Check your email.": "Almost done! Just checking your email.", "and some more authors": "{restUsersCount, plural, =0 {} one { and one more user} other { and more {restUsersCount} users}}", - "Are you sure you want to delete this comment?": "Are you sure you want to delete this comment?", - "Are you sure you want to delete this draft?": "Are you sure you want to delete this draft?", - "Are you sure you want to to proceed the action?": "Are you sure you want to to proceed the action?", - "Art": "Art", - "article": "article", - "Artist": "Artist", - "Artworks": "Artworks", - "Audio": "Audio", - "Author": "Author", - "author": "author", - "Authors": "Authors", - "authors": "authors", - "Autotypograph": "Autotypograph", - "Back": "Back", - "Back to editor": "Back to editor", - "Back to main page": "Back to main page", - "back to menu": "back to menu", - "Be the first to rate": "Be the first to rate", - "Become an author": "Become an author", - "Bold": "Bold", - "bold": "bold", - "Bookmarked": "Saved", - "Bookmarks": "Bookmarks", - "bookmarks": "bookmarks", - "Bullet list": "Bullet list", - "By alphabet": "By alphabet", - "By authors": "By authors", - "By name": "By name", - "By popularity": "By popularity", - "By rating": "By popularity", - "By relevance": "By relevance", - "By shouts": "By publications", - "By signing up you agree with our": "By signing up you agree with our", - "By time": "By time", - "By title": "By title", - "By updates": "By updates", - "By views": "By views", - "Can make any changes, accept or reject suggestions, and share access with others": "Can make any changes, accept or reject suggestions, and share access with others", - "Can offer edits and comments, but cannot edit the post or share access with others": "Can offer edits and comments, but cannot edit the post or share access with others", - "Can write and edit text directly, and accept or reject suggestions from others": "Can write and edit text directly, and accept or reject suggestions from others", - "Cancel": "Cancel", - "cancel": "cancel", - "Cancel changes": "Cancel changes", - "Change password": "Change password", - "Characters": "Знаков", - "Chat Title": "Chat Title", - "Choose a post type": "Choose a post type", - "Choose a title image for the article. You can immediately see how the publication card will look like.": "Choose a title image for the article. You can immediately see how the publication card will look like.", - "Choose who you want to write to": "Choose who you want to write to", - "Close": "Close", - "Co-author": "Co-author", - "Collaborate": "Help Edit", - "Collaborators": "Collaborators", - "Collections": "Collections", - "collections": "collections", - "Come up with a subtitle for your story": "Come up with a subtitle for your story", - "Come up with a title for your story": "Come up with a title for your story", - "Coming soon": "Coming soon", - "Comment successfully deleted": "Comment successfully deleted", - "Commentator": "Commentator", - "Commenting": "Commenting", - "Comments": "Comments", - "Common feed": "All", - "Communities": "Communities", - "community": "community", - "Community Discussion Rules": "Community Discussion Rules", - "Community Principles": "Community Principles", - "Community values and rules of engagement for the open editorial team": "Community values and rules of engagement for the open editorial team", - "Confirm": "Confirm", - "Confirm your new password": "Confirm your new password", - "Connect": "Connect", - "Contents": "Contents", - "Contribute to free samizdat. Support Discours - an independent non-profit publication that works only for you. Become a pillar of the open newsroom": "Contribute to free samizdat. Support Discours - an independent non-profit publication that works only for you. Become a pillar of the open newsroom", - "Cooperate": "Cooperate", - "Copy": "Copy", - "Copy link": "Copy link", - "Corrections history": "Corrections history", - "Create account": "Create an account", - "Create an account to add to your bookmarks": "Create an account to add to your bookmarks", - "Create an account to participate in discussions": "Create an account to participate in discussions", - "Create an account to publish articles": "Create an account to publish articles", - "Create an account to subscribe": "Create an account to subscribe", - "Create an account to subscribe to new publications": "Create an account to subscribe to new publications", - "Create an account to vote": "Create an account to vote", - "Create Chat": "Create Chat", - "Create gallery": "Create gallery", - "Create Group": "Create a group", - "Create post": "Create post", - "Create video": "Create video", - "Crop image": "Crop image", - "Culture": "Culture", - "Current password": "Current password", - "Date of Birth": "Date of Birth", - "Decline": "Decline", - "Delete": "Delete", - "Delete cover": "Delete cover", - "Delete userpic": "Delete userpic", - "delimiter": "delimiter", - "Description": "Description", - "Discours": "Discours", "Discours is an intellectual environment, a web space and tools that allows authors to collaborate with readers and come together to co-create publications and media projects": "Discours is an intellectual environment, a web space and tools that allows authors to collaborate with readers and come together to co-create publications and media projects.
    We are convinced that one voice is good, but many is better. We create the most amazing stories together", - "Discours is created with our common effort": "Discours exists because of our common effort", - "Discours Manifest": "Discours Manifest", - "Discours Partners": "Discours Partners", - "Discours – an open magazine about culture, science and society": "Discours – an open magazine about culture, science and society", - "Discussing": "Discussing", - "discussion": "Discours", - "Discussion rules": "Discussion rules", - "Discussions": "Discussions", - "Do you really want to reset all changes?": "Do you really want to reset all changes?", - "Dogma": "Dogma", - "dogma keywords": "Discours.io, dogma, editorial principles, code of ethics, journalism, community", - "Draft successfully deleted": "Draft successfully deleted", - "Drafts": "Drafts", - "drafts": "drafts", - "Drag the image to this area": "Drag the image to this area", - "Each image must be no larger than 5 MB.": "Each image must be no larger than 5 MB.", - "earlier": "earlier", - "Edit": "Edit", - "Edit profile": "Edit profile", - "Editing": "Editing", - "Editor": "Editor", - "Email": "Mail", - "email not confirmed": "email not confirmed", - "Enter": "Enter", - "enter": "enter", - "Enter a new password": "Enter a new password", - "Enter footnote text": "Enter footnote text", - "Enter image description": "Enter image description", - "Enter image title": "Enter image title", - "Enter text": "Enter text", "Enter the code or click the link from email to confirm": "Enter the code from the email or follow the link in the email to confirm registration", - "Enter URL address": "Enter URL address", - "Enter your new password": "Enter your new password", - "Error": "Error", - "Experience": "Experience", - "Failed to delete comment": "Failed to delete comment", - "FAQ": "Tips and suggestions", - "Favorite": "Favorites", - "Favorite topics": "Favorite topics", - "Feed": "Feed", - "feed": "feed", - "Feed settings": "Feed settings", - "Feedback": "Feedback", - "Fill email": "Fill email", - "Fixed": "Fixed", - "Follow": "Follow", - "Follow the topic": "Follow the topic", - "follower": "follower", - "Followers": "Followers", - "Following": "Following", - "Forgot password?": "Forgot password?", - "Forward": "Forward", - "from": "from", - "Full name": "First and last name", - "Gallery": "Gallery", - "Gallery name": "Gallery name", - "Get to know the most intelligent people of our time, edit and discuss the articles, share your expertise, rate and decide what to publish in the magazine": "Get to know the most intelligent people of our time, edit and discuss the articles, share your expertise, rate and decide what to publish in the magazine", - "Go to main page": "Go to main page", - "Group Chat": "Group Chat", - "Groups": "Groups", - "Header 1": "Header 1", - "header 1": "header 1", - "Header 2": "Header 2", - "header 2": "header 2", - "Header 3": "Header 3", - "header 3": "header 3", - "Headers": "Headers", - "Help": "Помощь", - "Help to edit": "Help to edit", - "Here you can customize your profile the way you want.": "Here you can customize your profile the way you want.", - "Here you can manage all your Discours subscriptions": "Here you can manage all your Discours subscriptions", - "Here you can upload your photo": "Here you can upload your photo", - "Hide table of contents": "Hide table of contents", - "Highlight": "Highlight", - "Hooray! Welcome!": "Hooray! Welcome!", - "Horizontal collaborative journalistic platform": "Horizontal collaborative journalism platform", - "Hot topics": "Hot topics", - "Hotkeys": "Горячие клавиши", - "How can I help/skills": "How can I help/skills", - "How Discours works": "How Discours works", - "How it works": "How it works", - "How to help": "How to help?", - "How to write a good article": "Как написать хорошую статью", - "How to write an article": "How to write an article", - "Hundreds of people from different countries and cities share their knowledge and art on the Discours. Join us!": "Hundreds of people from different countries and cities share their knowledge and art on the Discours. Join us!", - "I have an account": "I have an account!", - "I have no account yet": "I don't have an account yet", - "I know the password": "I know the password", - "Image format not supported": "Image format not supported", - "images": "images", - "In bookmarks, you can save favorite discussions and materials that you want to return to": "In bookmarks, you can save favorite discussions and materials that you want to return to", - "Inbox": "Inbox", - "Incorrect new password confirm": "Incorrect new password confirm", - "Incorrect old password": "Incorrect old password", - "Incut": "Incut", - "Independant magazine with an open horizontal cooperation about culture, science and society": "Independant magazine with an open horizontal cooperation about culture, science and society", - "Independent media project about culture, science, art and society with horizontal editing": "Independent media project about culture, science, art and society with horizontal editing", - "Insert footnote": "Insert footnote", - "Insert video link": "Insert video link", - "Interview": "Interview", - "Introduce": "Introduction", "Invalid email": "Check if your email is correct", - "Invalid image URL": "Invalid image URL", - "invalid password": "invalid password", - "Invalid url format": "Invalid url format", - "Invite": "Invite", - "Invite co-authors": "Invite co-authors", - "Invite collaborators": "Invite collaborators", - "Invite to collab": "Invite to Collab", - "It does not look like url": "It doesn't look like a link", - "It's OK. Just enter your email to receive a link to change your password": "It's OK. Just enter your email to receive a link to change your password", - "Italic": "Italic", - "italic": "italic", - "Join": "Join", "Join our maillist": "To receive the best postings, just enter your email", - "Join the community": "Join the community", "Join the global community of authors!": "Join the global community of authors from all over the world!", - "journal": "journal", - "jpg, .png, max. 10 mb.": "jpg, .png, макс. 10 мб.", - "Just start typing...": "Just start typing...", - "keywords": "Discours.io, Discours magazine, Discours, culture, science, art, society, independent journalism, literature, music, cinema, video, photography", - "Knowledge base": "Knowledge base", - "Language": "Language", - "Last rev.": "Посл. изм.", - "Let's log in": "Let's log in", - "Link copied": "Link copied", - "Link copied to clipboard": "Link copied to clipboard", - "Link sent, check your email": "Link sent, check your email", - "List of authors of the open editorial community": "List of authors of the open editorial community", - "Lists": "Lists", - "Literature": "Literature", - "literature": "literature", - "Load more": "Show more", - "Loading": "Loading", - "Login and security": "Login and security", - "Logout": "Logout", - "Looks like you forgot to upload the video": "Looks like you forgot to upload the video", - "Manifest of samizdat: principles and mission of an open magazine with a horizontal editorial board": "Manifest of samizdat: principles and mission of an open magazine with a horizontal editorial board", - "Manifesto": "Manifesto", - "Many files, choose only one": "Many files, choose only one", - "Mark as read": "Mark as read", - "marker list": "marker list", - "Material card": "Material card", - "Message": "Message", - "min. 1400×1400 pix": "мин. 1400×1400 пикс.", - "More": "More", - "Most commented": "Commented", - "Most read": "Readable", - "Move down": "Move down", - "Move up": "Move up", - "Music": "Music", - "music": "music", - "My feed": "My feed", - "my feed": "my ribbon", - "My subscriptions": "Subscriptions", - "Name": "Name", - "New literary work": "New literary work", - "New only": "New only", - "New password": "New password", - "New stories every day and even more!": "New stories and more are waiting for you every day!", - "Newsletter": "Newsletter", - "Night mode": "Night mode", - "No notifications yet": "No notifications yet", - "not verified": "not verified", - "Nothing here yet": "There's nothing here yet", - "Nothing is here": "There is nothing here", - "Notifications": "Notifications", - "number list": "number list", - "Or paste a link to an image": "Or paste a link to an image", - "or sign in with social networks": "or sign in with social networks", - "Ordered list": "Ordered list", - "Our regular contributor": "Our regular contributor", - "Paragraphs": "Абзацев", - "Participate in the Discours: share information, join the editorial team": "Участвуйте в Дискурсе: делитесь информацией, присоединяйтесь к редакции", - "Participating": "Participating", - "Participation": "Participation", - "Partners": "Partners", - "Password": "Password", - "Password again": "Password again", - "Password should be at least 8 characters": "Password should be at least 8 characters", - "Password should contain at least one number": "Password should contain at least one number", - "Password should contain at least one special character: !@#$%^&*": "Password should contain at least one special character: !@#$%^&*", - "Password updated!": "Password updated!", - "Passwords are not equal": "Passwords are not equal", - "Paste Embed code": "Paste Embed code", - "Personal": "Personal", - "personal data usage and email notifications": "to process personal data and receive email notifications", - "Pin": "Pin", - "Platform Guide": "Platform Guide", - "Please check your email address": "Please check your email address", - "Please confirm your email to finish": "Confirm your email and the action will complete", - "Please enter a name to sign your comments and publication": "Please enter a name to sign your comments and publication", - "Please enter email": "Please enter your email", - "Please enter password": "Please enter a password", - "Please enter password again": "Please enter password again", - "Please, confirm email": "Please confirm email", - "Please, set the article title": "Please, set the article title", - "Please, set the main topic first": "Please, set the main topic first", - "Podcasts": "Podcasts", - "Poetry": "Poetry", - "Popular": "Popular", - "Popular authors": "Popular authors", - "post": "post", - "Principles": "Community principles", - "principles keywords": "Discours.io, communities, values, editorial rules, polyphony, creation", - "Professional principles that the open editorial team follows in its work": "Professional principles that the open editorial team follows in its work", - "Profile": "Profile", - "Profile settings": "Profile settings", - "Publications": "Publications", - "Publish Album": "Publish Album", - "Publish Settings": "Publish Settings", - "Published": "Published", - "Punchline": "Punchline", - "Quit": "Quit", - "Quote": "Quote", - "Quotes": "Quotes", - "Reason uknown": "Reason unknown", - "Recent": "Fresh", - "register": "register", - "registered": "registered", - "Registered since {date}": "Registered since {date}", - "Remove link": "Remove link", - "repeat": "repeat", - "Repeat new password": "Repeat new password", - "Reply": "Reply", - "Report": "Complain", - "Reports": "Reports", - "Required": "Required", - "Resend code": "Send confirmation", - "resend confirmation link": "resend confirmation link", - "Restore password": "Restore password", - "Rules of the journal Discours": "Rules of the journal Discours", - "Save draft": "Save draft", - "Save settings": "Save settings", - "Saving...": "Saving...", - "Scroll up": "Scroll up", - "Search": "Search", - "Search author": "Search author", - "Search topic": "Search topic", - "Sections": "Sections", - "Security": "Security", - "Select": "Select", - "Self-publishing exists thanks to the help of wonderful people from all over the world. Thank you!": "Samizdat exists thanks to the help of wonderful people from all over the world. Thank you!", - "Send": "Send", - "Send link again": "Send link again", - "Settings": "Settings", - "Settings for account, email, password and login methods.": "Settings for account, email, password and login methods.", - "Share": "Share", - "Share publication": "Share publication", "shout": "post", - "Show": "Show", - "Show lyrics": "Show lyrics", - "Show more": "Show more", - "Show table of contents": "Show table of contents", - "sign up or sign in": "sign up or sign in", - "Site search": "Site search", - "Slug": "Slug", - "slug is used by another user": "Slug is already taken by another user", - "Social networks": "Social networks", - "Society": "Society", "some authors": "{count} {count, plural, one {author} other {authors}}", "some comments": "{count, plural, =0 {{count} comments} one {{count} comment} few {{count} comments} other {{count} comments}}", "some followers": "{count} {count, plural, one {follower} other {followers}}", @@ -404,140 +15,14 @@ "some posts": "{count, plural, =0 {no publications} one {{count} publication} other {{count} publications}}", "some shouts": "{count} {count, plural, one {post} other {posts}}", "some views": "{count} {count, plural, one {view} other {views}}", - "Something went wrong, check email and password": "Something went wrong. Check your email and password", - "Something went wrong, please try again": "Something went wrong, please try again", - "Song lyrics": "Song lyrics...", - "Song title": "Song title", - "Soon": "Скоро", - "Sorry, this address is already taken, please choose another one.": "Sorry, this address is already taken, please choose another one", - "Special Projects": "Special Projects", - "Special projects": "Special projects", - "Specify the source and the name of the author": "Specify the source and the name of the author", - "Start conversation": "Start a conversation", - "Start dialog": "Start dialog", - "Subsccriptions": "Subscriptions", - "Subscribe": "Subscribe", - "Subscribe to the best publications newsletter": "Subscribe to the best publications newsletter", - "Subscribe us": "Subscribe us", "Subscribe what you like to tune your personal feed": "Subscribe to topics that interest you to customize your personal feed and get instant updates on new posts and discussions", "Subscribe who you like to tune your personal feed": "Subscribe to authors you're interested in to customize your personal feed and get instant updates on new posts and discussions", - "subscriber": "subscriber", - "subscriber_rp": "subscriber", - "subscribers": "subscribers", - "subscribing...": "subscribing...", - "Subscribing...": "Subscribing...", - "Subscription": "Subscription", - "subscription": "subscription", - "subscription_rp": "subscription", - "Subscriptions": "Subscriptions", - "subscriptions": "subscriptions", - "Substrate": "Substrate", - "Success": "Success", - "Successfully authorized": "Authorization successful", - "Suggest an idea": "Suggest an idea", - "Support Discours": "Support Discours", - "Support the project": "Support the project", - "Support us": "Support us", - "Terms of use": "Site rules", - "terms of use": "terms of use", - "terms of use keywords": "Discours.io, site rules, terms of use", - "Text checking": "Text checking", - "Thank you": "Thank you", - "Thank you!": "Thank you!", - "The address is already taken": "The address is already taken", "The most interesting publications on the topic": "The most interesting publications on the topic {topicName}", - "Thematic table of contents of the magazine. Here you can find all the topics that community authors have written about.": "Thematic table of contents of the magazine. Here you can find all the topics that community authors have written about.", - "Thematic table of contents of the magazine. Here you can find all the topics that the community authors wrote about": "Thematic table of contents of the magazine. Here you can find all the topics that the community authors wrote about", - "Themes and plots": "Themes and plots", - "Theory": "Theory", - "There are unsaved changes in your profile settings. Are you sure you want to leave the page without saving?": "There are unsaved changes in your profile settings. Are you sure you want to leave the page without saving?", - "There are unsaved changes in your publishing settings. Are you sure you want to leave the page without saving?": "There are unsaved changes in your publishing settings. Are you sure you want to leave the page without saving?", - "This comment has not yet been rated": "This comment has not yet been rated", - "This content is not published yet": "This content is not published yet", - "This email is": "This email is", - "This email is not verified": "This email is not verified", - "This email is registered": "This email is registered", - "This email is verified": "This email is verified", - "This functionality is currently not available, we would like to work on this issue. Use the download link.": "This functionality is currently not available, we would like to work on this issue. Use the download link.", - "This month": "This month", - "This post has not been rated yet": "This post has not been rated yet", - "This way we ll realize that you re a real person and ll take your vote into account. And you ll see how others voted": "This way we ll realize that you re a real person and ll take your vote into account. And you ll see how others voted", - "This way you ll be able to subscribe to authors, interesting topics and customize your feed": "This way you ll be able to subscribe to authors, interesting topics and customize your feed", - "This week": "This week", - "This year": "This year", "To find publications, art, comments, authors and topics of interest to you, just start typing your query": "To find publications, art, comments, authors and topics of interest to you, just start typing your query", - "To leave a comment please": "To leave a comment please", - "To write a comment, you must": "To write a comment, you must", - "today": "today", - "Top authors": "Authors rating", - "Top commented": "Most commented", - "Top discussed": "Top discussed", - "Top month": "Top of the month", - "Top rated": "Popular", - "Top recent": "Most recent", - "Top topics": "Interesting topics", - "Top viewed": "Most viewed", - "Topic is supported by": "Topic is supported by", - "topicKeywords": "{topic}, Discours.io, articles, journalism, research", - "Topics": "Topics", - "topics": "topics", - "Topics which supported by author": "Topics which supported by author", - "try": "попробуйте", - "Try to find another way": "Try to find another way", - "Unfollow": "Unfollow", - "Unfollow the topic": "Unfollow the topic", - "Unnamed draft": "Unnamed draft", - "Unsubscribing...": "Unsubscribing...", - "Upload": "Upload", - "Upload error": "Upload error", - "Upload userpic": "Upload userpic", - "Upload video": "Upload video", - "Uploading image": "Uploading image", - "user already exist": "user already exists", - "User was not found": "User was not found", - "Username": "Username", - "Userpic": "Userpic", - "Users": "Users", - "verified": "verified", - "Video": "Video", - "video": "video", - "Video format not supported": "Video format not supported", - "view": "view", - "Views": "Views", - "We are working on collaborative editing of articles and in the near future you will have an amazing opportunity - to create together with your colleagues": "We are working on collaborative editing of articles and in the near future you will have an amazing opportunity - to create together with your colleagues", - "We can't find you, check email or": "We can't find you, check email or", "We couldn't find anything for your request": "We couldn’t find anything for your request", "We know you, please try to login": "This email address is already registered, please try to login", "We've sent you a message with a link to enter our website.": "We've sent you an email with a link to your email. Follow the link in the email to enter our website.", - "Welcome to Discours": "Welcome to Discours", - "Welcome to Discours to add to your bookmarks": "Welcome to Discours to add to your bookmarks", - "Welcome to Discours to participate in discussions": "Welcome to Discours to participate in discussions", - "Welcome to Discours to publish articles": "Welcome to Discours to publish articles", - "Welcome to Discours to subscribe": "Welcome to Discours to subscribe", - "Welcome to Discours to subscribe to new publications": "Welcome to Discours to subscribe to new publications", - "Welcome to Discours to vote": "Welcome to Discours to vote", "Where": "From", - "Why you can earn a hole in your karma and how to receive rays of gratitude for your contribution to discussions in samizdat communities": "Why you can earn a hole in your karma and how to receive rays of gratitude for your contribution to discussions in samizdat communities", - "Words": "Слов", "Work with us": "Cooperate with Discours", - "Write a comment...": "Write a comment...", - "Write a short introduction": "Write a short introduction", - "Write about the topic": "Write about the topic", - "Write an article": "Write an article", - "Write comment": "Write comment", - "Write good articles, comment\nand it won't be so empty here": "Write good articles, comment\nand it won't be so empty here", - "Write message": "Write a message", - "Write to us": "Write to us", - "Write your colleagues name or email": "Write your colleague's name or email", - "yesterday": "yesterday", - "You can": "You can", - "You can download multiple tracks at once in .mp3, .wav or .flac formats": "You can download multiple tracks at once in .mp3, .wav or .flac formats", - "You can now login using your new password": "Теперь вы можете входить с помощью нового пароля", - "You can't edit this post": "You can't edit this post", - "You were successfully authorized": "You were successfully authorized", - "You ll be able to participate in discussions, rate others' comments and learn about new responses": "You ll be able to participate in discussions, rate others' comments and learn about new responses", - "You've confirmed email": "You've confirmed email", - "You've reached a non-existed page": "You've reached a non-existed page", - "Your email": "Your email", - "Your name will appear on your profile page and as your signature in publications, comments and responses.": "Your name will appear on your profile page and as your signature in publications, comments and responses" + "Write your colleagues name or email": "Write your colleague's name or email" } diff --git a/src/lib/locales/ru/keywords.json b/src/lib/locales/ru/keywords.json new file mode 100644 index 00000000..b542b3c1 --- /dev/null +++ b/src/lib/locales/ru/keywords.json @@ -0,0 +1,8 @@ +{ + "dogma": "discours.io, догма, принципы редактирования, этический кодекс, журналистика, сообщество", + "guide": "discours.io, гид, помощь, как начать, справочник, туториал", + "": "discours.io, Дискурс журнал, Дискурс, культура, наука, искусство, общество, независимая журналистика, литература, музыка, кино, видео, фотография", + "principles": "discours.io, сообщества, ценности, принципы редактировани, плюрализм мнений, сотворчество", + "terms-of-use": "discours.io, правила сайта, правила, пользовательское соглашение", + "topic": "discours.io, Дискурс, статьи, журналистика, исследование" +} diff --git a/src/lib/locales/ru/translation.json b/src/lib/locales/ru/translation.json index 36b98a2f..58b55c63 100644 --- a/src/lib/locales/ru/translation.json +++ b/src/lib/locales/ru/translation.json @@ -1,7 +1,7 @@ { "A guide to horizontal editorial: how an open journal works": "Гид по горизонтальной редакции: как работает открытый журнал", "A short introduction to keep the reader interested": "Добавьте вступление, чтобы заинтересовать читателя", - "About": "О себе", + "About the author": "Об авторе", "About the project": "О проекте", "actions": "действия", "Add": "Добавить", @@ -101,11 +101,9 @@ "Commentator": "Комментатор", "Commenting": "Комментирование", "Comments": "Комментарии", - "Common feed": "Общая лента", "Communities": "Сообщества", "community": "сообщество", "Community Discussion Rules": "Правила дискуссий в сообществе", - "Community Principles": "Принципы сообщества", "Community values and rules of engagement for the open editorial team": "Ценности сообщества и правила взаимодействия открытой редакции", "Confirm": "Подтвердить", "Confirm your new password": "Подтвердите новый пароль", @@ -116,7 +114,7 @@ "Copy": "Скопировать", "Copy link": "Скопировать ссылку", "Corrections history": "История правок", - "Create account": "Создать аккаунт", + "Sign up": "Создать аккаунт", "Create an account to add to your bookmarks": "Создайте аккаунт, чтобы добавить в закладки", "Create an account to participate in discussions": "Создайте аккаунт для участия в дискуссиях", "Create an account to publish articles": "Создайте аккаунт, чтобы публиковать статьи", @@ -125,7 +123,7 @@ "Create an account to vote": "Создайте аккаунт, чтобы голосовать", "Create Chat": "Создать чат", "Create gallery": "Создать галерею", - "Create Group": "Создать группу", + "New group": "Создать группу", "Create post": "Создать публикацию", "Create video": "Создать видео", "create_chat": "Создать чат", @@ -142,7 +140,7 @@ "Description": "Описание", "Discours": "Дискурс", "Discours is an intellectual environment, a web space and tools that allows authors to collaborate with readers and come together to co-create publications and media projects": "Дискурс — это интеллектуальная среда, веб-пространство и инструменты, которые позволяют авторам сотрудничать с читателями и объединяться для совместного создания публикаций и медиапроектов.
    Мы убеждены, один голос хорошо, а много — лучше. Самые потрясающиe истории мы создаём вместе.", - "Discours is created with our common effort": "Дискурс существует благодаря нашему общему вкладу", + "Discours exists because of our common effort": "Дискурс существует благодаря нашему общему вкладу", "Discours Manifest": "Манифест Дискурса", "Discours Partners": "Партнеры Дискурса", "Discours – an open magazine about culture, science and society": "Дискурс – открытый журнал о культуре, науке и обществе", @@ -294,7 +292,7 @@ "Message": "Написать", "min. 1400×1400 pix": "мин. 1400×1400 пикс.", "More": "Ещё", - "Most commented": "Комментируемое", + "Commented": "Комментируемое", "Most read": "Читаемое", "Move down": "Переместить вниз", "Move up": "Переместить вверх", @@ -307,7 +305,7 @@ "New literary work": "Новое произведение", "New only": "Только новые", "New password": "Новый пароль", - "New stories every day and even more!": "Каждый день вас ждут новые истории и ещё много всего интересного!", + "New stories and more are waiting for you every day!": "Каждый день вас ждут новые истории и ещё много всего интересного!", "Newsletter": "Рассылка", "Night mode": "Ночная тема", "No notifications yet": "Уведомлений пока нет", @@ -336,17 +334,17 @@ "Passwords are not equal": "Пароли не совпадают", "Paste Embed code": "Вставьте embed код", "Personal": "Личные", - "personal data usage and email notifications": "на обработку персональных данных и на получение почтовых уведомлений", + "to process personal data and receive email notifications": "на обработку персональных данных и на получение почтовых уведомлений", "Pin": "Закрепить", "Platform Guide": "Гид по дискурсу", "Please check your email address": "Пожалуйста, проверьте введенный адрес почты", "Please check your inbox! We have sent a password reset link.": "Пожалуйста, проверьте свою почту, мы отправили вам письмо со ссылкой для сброса пароля", - "Please confirm your email to finish": "Подтвердите почту и действие совершится", + "Confirm your email and the action will complete": "Подтвердите почту и действие совершится", "Please enter a name to sign your comments and publication": "Пожалуйста, введите имя, которое будет отображаться на сайте", "Please enter email": "Пожалуйста, введите почту", "Please enter password": "Пожалуйста, введите пароль", "Please enter password again": "Пожалуйста, введите пароль ещё рез", - "Please, confirm email": "Пожалуйста, подтвердите электронную почту", + "Please confirm email": "Пожалуйста, подтвердите электронную почту", "Please, set the article title": "Пожалуйста, задайте заголовок статьи", "Please, set the main topic first": "Пожалуйста, сначала выберите главную тему", "Podcasts": "Подкасты", @@ -355,7 +353,7 @@ "Popular authors": "Популярные авторы", "post": "пост", "Preview": "Предпросмотр", - "Principles": "Принципы сообщества", + "Our principles": "Принципы сообщества", "principles keywords": "Discours.io, сообщества, ценности, правила редакции, многоголосие, созидание", "Professional principles that the open editorial team follows in its work": "Профессиональные принципы, которым открытая редакция следует в работе", "Profile": "Профиль", @@ -371,7 +369,7 @@ "Quit": "Выйти", "Quote": "Цитата", "Quotes": "Цитаты", - "Reason uknown": "Причина неизвестна", + "Reason unknown": "Причина неизвестна", "Recent": "Свежее", "register": "зарегистрируйтесь", "registered": "уже зарегистрирован", @@ -450,7 +448,6 @@ "Subscribe what you like to tune your personal feed": "Подпишитесь на интересующие вас темы, чтобы настроить вашу персональную ленту и моментально узнавать о новых публикациях и обсуждениях", "Subscribe who you like to tune your personal feed": "Подпишитесь на интересующих вас авторов, чтобы настроить вашу персональную ленту и моментально узнавать о новых публикациях и обсуждениях", "subscriber": "подписчик", - "subscriber_rp": "подписчика", "subscribers": "подписчиков", "Subscribing...": "Подписываем...", "subscribing...": "Подписка...", @@ -552,7 +549,7 @@ "Write an article": "Написать статью", "Write comment": "Написать комментарий", "Write good articles, comment\nand it won't be so empty here": "Пишите хорошие статьи, комментируйте,\nи здесь станет не так пусто", - "Write message": "Написать сообщение", + "New message": "Написать сообщение", "Write to us": "Напишите нам", "Write your colleagues name or email": "Напишите имя или e-mail коллеги", "yesterday": "вчера", diff --git a/src/routes/(home).tsx b/src/routes/(home).tsx index 7e71ad44..9f61ef87 100644 --- a/src/routes/(home).tsx +++ b/src/routes/(home).tsx @@ -1,7 +1,7 @@ import { type RouteDefinition, type RouteSectionProps, createAsync } from '@solidjs/router' import { Show, Suspense, createSignal, onMount } from 'solid-js' import { LoadShoutsOptions } from '~/graphql/schema/core.gen' -import { loadShouts } from '~/lib/api' +import { loadShouts } from '~/lib/api/public' import { restoreScrollPosition, saveScrollPosition } from '~/utils/scroll' import { byStat } from '~/utils/sortby' import { HomeView, HomeViewProps } from '../components/Views/Home' diff --git a/src/routes/[...slug].tsx b/src/routes/[...slug].tsx index 7507de40..7d774005 100644 --- a/src/routes/[...slug].tsx +++ b/src/routes/[...slug].tsx @@ -1,10 +1,10 @@ -import { RouteSectionProps, createAsync } from '@solidjs/router' +import { RouteSectionProps, createAsync, useParams } from '@solidjs/router' import { ErrorBoundary, Suspense, createMemo, createReaction, createSignal, onMount } from 'solid-js' import { FourOuFourView } from '~/components/Views/FourOuFour' import { Loading } from '~/components/_shared/Loading' import { gaIdentity } from '~/config/config' import { useLocalize } from '~/context/localize' -import { getShout } from '~/lib/api' +import { getShout } from '~/lib/api/public' import { initGA, loadGAScript } from '~/utils/ga' import { FullArticle } from '../components/Article/FullArticle' import { PageLayout } from '../components/_shared/PageLayout' @@ -21,7 +21,8 @@ export const route = { } export const ArticlePage = (props: RouteSectionProps<{ article: Shout }>) => { - const article = createAsync(async () => props.data.article || (await fetchShout(props.params.slug))) + const params = useParams() + const article = createAsync(async () => props.data.article || (await fetchShout(params.slug))) const { t } = useLocalize() const [scrollToComments, setScrollToComments] = createSignal(false) const title = createMemo( diff --git a/src/routes/authors.tsx b/src/routes/authors.tsx index 060bd0bf..935398f6 100644 --- a/src/routes/authors.tsx +++ b/src/routes/authors.tsx @@ -3,7 +3,7 @@ import { Suspense, createEffect } from 'solid-js' import { AllAuthors } from '~/components/Views/AllAuthors' import { useAuthors } from '~/context/authors' import { Author, QueryLoad_Authors_ByArgs } from '~/graphql/schema/core.gen' -import { loadAuthors } from '~/lib/api' +import { loadAuthors } from '~/lib/api/public' import { Loading } from '../components/_shared/Loading' import { PageLayout } from '../components/_shared/PageLayout' import { useLocalize } from '../context/localize' diff --git a/src/routes/connect.tsx b/src/routes/connect.tsx index 6d49c461..92b6ab4d 100644 --- a/src/routes/connect.tsx +++ b/src/routes/connect.tsx @@ -1,9 +1,8 @@ -import { RouteSectionProps } from '@solidjs/router' import { ConnectView } from '~/components/Views/ConnectView' import { useLocalize } from '~/context/localize' import { PageLayout } from '../components/_shared/PageLayout' -export const ConnectPage = (_props: RouteSectionProps>) => { +export const ConnectPage = () => { const { t } = useLocalize() return ( diff --git a/src/routes/feed/[...feed].tsx b/src/routes/feed/[...feed].tsx new file mode 100644 index 00000000..651a1101 --- /dev/null +++ b/src/routes/feed/[...feed].tsx @@ -0,0 +1,143 @@ +import { RouteSectionProps, createAsync, useParams, useSearchParams } from '@solidjs/router' +import { Client } from '@urql/core' +import { Show, createEffect, createSignal } from 'solid-js' +import { Feed } from '~/components/Views/Feed' +import { PageLayout } from '~/components/_shared/PageLayout' +import { useGraphQL } from '~/context/graphql' +import { useLocalize } from '~/context/localize' +import { ReactionsProvider } from '~/context/reactions' +import { useSession } from '~/context/session' +import { LoadShoutsOptions, Shout } from '~/graphql/schema/core.gen' +import { + loadBookmarkedShouts, + loadCoauthoredShouts, + loadDiscussedShouts, + loadFollowedShouts, + loadUnratedShouts +} from '~/lib/api/private' +import { loadShouts } from '~/lib/api/public' +import { SHOUTS_PER_PAGE } from '../(home)' + +export type FeedPeriod = 'week' | 'month' | 'year' + +export type PeriodItem = { + value: FeedPeriod + title: string +} + +export type FeedSearchParams = { + by: 'after' | 'likes' | 'last_comment' + period: FeedPeriod +} + +const getFromDate = (period: FeedPeriod): number => { + const now = new Date() + let d: Date = now + switch (period) { + case 'week': { + d = new Date(now.setDate(now.getDate() - 7)) + break + } + case 'month': { + d = new Date(now.setMonth(now.getMonth() - 1)) + break + } + case 'year': { + d = new Date(now.setFullYear(now.getFullYear() - 1)) + break + } + } + return Math.floor(d.getTime() / 1000) +} + +const fetchPublishedShouts = async (offset?: number, _client?: Client) => { + const shoutsLoader = loadShouts({ filters: { featured: undefined }, limit: SHOUTS_PER_PAGE, offset }) + return await shoutsLoader() +} + +const fetchBookmarkedShouts = async (offset?: number, client?: Client) => { + const shoutsLoader = loadBookmarkedShouts(client, { limit: SHOUTS_PER_PAGE, offset }) + return await shoutsLoader() +} + +const fetchUnratedShouts = async (offset?: number, client?: Client) => { + const shoutsLoader = loadUnratedShouts(client, { limit: SHOUTS_PER_PAGE, offset }) + return await shoutsLoader() +} + +const fetchFollowedShouts = async (offset?: number, client?: Client) => { + const shoutsLoader = loadFollowedShouts(client, { limit: SHOUTS_PER_PAGE, offset }) + return await shoutsLoader() +} + +const fetchDiscussedShouts = async (offset?: number, client?: Client) => { + const shoutsLoader = loadDiscussedShouts(client, { limit: SHOUTS_PER_PAGE, offset }) + return await shoutsLoader() +} + +const fetchCoauthoredShouts = async (offset?: number, client?: Client) => { + const shoutsLoader = loadCoauthoredShouts(client, { limit: SHOUTS_PER_PAGE, offset }) + return await shoutsLoader() +} + +const fetchersByMode = { + followed: fetchFollowedShouts, + bookmarked: fetchBookmarkedShouts, + discussed: fetchDiscussedShouts, + coauthored: fetchCoauthoredShouts, + unrated: fetchUnratedShouts +} + +export const route = { + load: async ({ location: { query } }: RouteSectionProps<{ articles: Shout[] }>) => { + const offset: number = Number.parseInt(query.offset, 10) + const result = await fetchPublishedShouts(offset) + return result + } +} + +export const FeedPage = (props: RouteSectionProps) => { + const [searchParams] = useSearchParams() + const { t } = useLocalize() + const params = useParams() + const client = useGraphQL() + const { session } = useSession() + const [offset, setOffset] = createSignal(0) + const shouts = createAsync(async () => ({ ...props.data }) || (await loadMore())) + const [isLoadMoreButtonVisible, setIsLoadMoreButtonVisible] = createSignal(true) + const loadMore = async () => { + const newOffset = offset() + SHOUTS_PER_PAGE + setOffset(newOffset) + const options: LoadShoutsOptions = { + limit: SHOUTS_PER_PAGE, + offset: newOffset, + order_by: searchParams?.by + } + + if (searchParams?.by === 'after') { + const period = searchParams?.by || 'month' + options.filters = { after: getFromDate(period as FeedPeriod) } + } + if (!session()) return await fetchPublishedShouts(newOffset) + const fetcher = fetchersByMode[params.feed as keyof typeof fetchersByMode] + if (!fetcher) return await fetchPublishedShouts(newOffset) + return await fetcher(newOffset, client) + } + createEffect(() => setIsLoadMoreButtonVisible(offset() < (shouts()?.length || 0))) + return ( + + + + + +

    + +

    +
    +
    + ) +} + +export const Page = FeedPage diff --git a/src/routes/guide/index.tsx b/src/routes/guide/(guide).tsx similarity index 98% rename from src/routes/guide/index.tsx rename to src/routes/guide/(guide).tsx index abc16b0c..f87d20a1 100644 --- a/src/routes/guide/index.tsx +++ b/src/routes/guide/(guide).tsx @@ -1,11 +1,13 @@ import { Meta } from '@solidjs/meta' import { createMemo } from 'solid-js' +import ruKeywords from '~/lib/locales/ru/keywords.json' +import enKeywords from '~/lib/locales/ru/keywords.json' import { StaticPage } from '../../components/Views/StaticPage' import { useLocalize } from '../../context/localize' import { getImageUrl } from '../../utils/getImageUrl' export default () => { - const { t } = useLocalize() + const { t, lang } = useLocalize() const ogImage = createMemo(() => getImageUrl('production/image/logo_image.png')) const ogTitle = createMemo(() => t('How Discours works')) const description = createMemo(() => t('A guide to horizontal editorial: how an open journal works')) @@ -14,7 +16,7 @@ export default () => { <> - + diff --git a/src/routes/guide/principles.tsx b/src/routes/guide/principles.tsx new file mode 100644 index 00000000..565ad45d --- /dev/null +++ b/src/routes/guide/principles.tsx @@ -0,0 +1,195 @@ +import { Meta } from '@solidjs/meta' +import { createMemo } from 'solid-js' +import ruKeywords from '~/lib/locales/ru/keywords.json' +import enKeywords from '~/lib/locales/ru/keywords.json' +import { StaticPage } from '../../components/Views/StaticPage' +import { useLocalize } from '../../context/localize' +import { getImageUrl } from '../../utils/getImageUrl' + +export const PrinciplesPage = () => { + const { t, lang } = useLocalize() + + const ogImage = getImageUrl('production/image/logo_image.png') + const ogTitle = createMemo(() => t('Community Our principles')) + const description = createMemo(() => + t('Community values and rules of engagement for the open editorial team') + ) + + return ( + + + + + + + + + + + + +

    + {ogTitle()} +

    + +
      +
    1. +

      + Горизонтальность. Мы все разные, и это классно. Вертикалей + в мире достаточно, мы — горизонтальное сообщество и ценим наши различия, + потому что знаем — в них наша сила. Благодаря разнообразию сотен голосов, + усиливающих друг друга, в сообществе складывается неповторимая синергия, которая помогает + вместе достигать большего. +

      +
    2. +
    3. +

      + Многоголосие. Мы ценим свободу слова и аргументированные мнения. + Предоставляя трибуну каждому, кому есть что сказать, самиздат отражает полифонию позиций, знаний + и опыта, которые открывают более полную картину реальности. +

      +
    4. +
    5. +

      + Взаимопомощь. Мы помогаем друг другу, потому что хотим, чтобы в мире + было еще больше хорошего. Обсуждая что-то, мы всегда интересуемся, чем можем помочь. + В самиздате можно найти специалистов практически в любых сферах и получить + поддержку от сотен людей. Благодаря коллективной экспертизе глобального сообщества + в самиздате выходят крутейшие публикации, которыми можно вечно гордиться. +

      +
    6. +
    7. +

      + Взаимоуважение. Мы ценим, искренне уважаем друг друга и вместо + борщевиков враждебности культивируем цветы добра, мира, знания и юмора. Нам некогда + доказывать друг другу, кто круче. Гораздо приятнее сотрудничать, помогать и создавать + что-то важное, интересное и полезное. +

      +
    8. +
    9. +

      + Созидание. Мы создаем, потому что любим создавать. Мы открыто делимся + опытом, дарим идеи, обмениваемся мнениями и благодарим за критику, используя + ее для совершенствования мастерства и саморазвития. Мы знаем, что мир + не идеальное место, и делаем всё возможное, чтобы он стал лучше. +

      +
    10. +
    + +

    + Как у нас принято себя вести +

    + +

    + Открытая редакция объединяет сотни потрясающих людей со всего мира, которые делают крутейшие + вещи. Это пространство, где доверяют, вдохновляют, исследуют и создают новое вместе. Поскольку + все в сообществе очень разные, как-то мы собрались и решили зафиксировать базовые + ценности открытой редакции, а заодно придумали универсальные правила взаимодействия, чтобы + общение было не только плодотворным, но и приятным для всех участников сообщества. +

    +
      +
    1. +

      + Действуем, помогаем и делимся. В редакции мы создаем свои + проекты и помогаем другим создавать свои — советами, делом, участием, + вовлеченностью. Мы открыто делимся опытом, мнениями и идеями, потому что ценим силу + сотрудничества и знаем, что идеи реализуются скорее, лучше и веселее, если над ними + трудиться сообща. +

      +
    2. + +
    3. +

      + Общаемся дружелюбно. Помните, по ту сторону монитора находятся + реальные люди. Неуважение ранит других так же, как ранило бы вас самих. Поэтому + не стоит кричать (даже капслоком), заполнять эфир желчью и бросаться + грубостями — так вы рискуете не только растерять доверие окружающих, + но и остаться непонятым. +

      +
    4. + +
    5. +

      + Критикуем и реагируем конструктивно. Самиздат про то, чтобы + разбираться в сложных вещах всем сообществом, поэтому мы тактично и без агрессии + делимся мнениями, стараясь убедительно аргументировать позиции. И с благодарностью + принимаем критику, используя ее для улучшения наших проектов. Мы верим, что каждый + участник сообщества имеет добрые намерения, и придерживаемся принципов доброжелательной + критики, стараемся делиться советами — лучшим средством для самосовершенствования. + Обоснованная критика помогает и адресату, и всем участникам сообщества досконально + изучить тему и глубже разобраться в проблеме. +

      +
    6. + +
    7. +

      + Решаем трудности не агрессией, а диалогом. Обесценивать мнения + и оскорблять других людей только потому, что вы с ними + не согласны, — не лучший способ донести свою точку зрения. Конечно, важно + высказаться, если вас что-то не устраивает и откровенно бесит. Но прежде чем + сжигать оппонента гневом, попробуйте понять, почему этот «нехороший человек» так + поступает. Возможно, аргументы собеседника окажутся убедительными или вам удастся изменить его + мнение. В любом случае конфликты решаются в диалогах и проходят, + а налаженное взаимопонимание останется надолго. +

      +
    8. + +
    9. +

      + Не переходим на личности — это признак токсичности. Всегда + мудрее обсуждать точку зрения человека, а не его самого, даже если он вам + не импонирует. Предвзятое отношение ограничивает кругозор, добавляет преждевременные + морщины и не помогает окружающим стать лучше. Вежливость + и взаимоуважение — краеугольная основа вдумчивых и осмысленных дискуссий. +

      +
    10. + +
    11. +

      + Благодарим за помощь. Благодарите коллег даже за самые, + казалось бы, простые вещи. «Спасибо» не зря называют волшебным + словом — на искренней благодарности держится любое подлинное сотрудничество. + Поддержка воодушевляет на новые подвиги и напоминает, что мир делают прекрасным + не машины, а живые люди. +

      +
    12. + +
    13. +

      + Даем еще один шанс. Все совершают ошибки, и за один проступок + не стоит вычеркивать людей из жизни. Ошибки нужны, чтобы на них учиться + и делать выводы. Однако если многократно и систематически нарушать правила сообщества, + наверняка можно заслужить минусы в карму от других участников и потерять доступ + к сообществу. +

      +
    14. + +
    15. +

      + Вместе создаем идеальную среду общения. Открытая редакция — это + утопическое пространство обогащающей и осмысленной коммуникации. Атмосфера горизонтального + сообщества складывается из действий каждого, поэтому мы действуем так, чтобы + способствовать сотворчеству, коллективному познанию и развитию самиздата и нашей + альтернативной интеллектуальной медиасреды. +

      +
    16. + +
    17. +

      + Помним, что всё в сообществе зависит от нас. Если нам чего-то + не хватает, мы начинаем действовать — рассказываем об идее, находим + единомышленников, готовим и запускаем проект. Так в сообществе становится на одну + крутую активность больше. Так появилось наше сообщество. Так появился самиздат и все + проекты открытой редакции. Чтобы в сообществе случилось что-то прекрасное, достаточно + просто положить этому начало. +

      +
    18. +
    +
    + ) +} + +export const Page = PrinciplesPage diff --git a/src/routes/search.tsx b/src/routes/search.tsx index 5626851e..a9552888 100644 --- a/src/routes/search.tsx +++ b/src/routes/search.tsx @@ -1,8 +1,8 @@ -import { RouteSectionProps, action } from '@solidjs/router' +import { action, useSearchParams } from '@solidjs/router' import { Show, Suspense, createEffect, createSignal, onCleanup } from 'solid-js' import { QueryLoad_Shouts_SearchArgs, SearchResult } from '~/graphql/schema/core.gen' -import { loadShoutsSearch } from '~/lib/api' +import { loadShoutsSearch } from '~/lib/api/public' import { SearchView } from '../components/Views/Search' import { Loading } from '../components/_shared/Loading' import { PageLayout } from '../components/_shared/PageLayout' @@ -14,22 +14,23 @@ const fetchSearchResult = async ({ text, limit, offset }: QueryLoad_Shouts_Searc return await loadShoutsSearch({ text, limit, offset }) } -export const SearchPage = (props: RouteSectionProps<{ params: Record }>) => { +export const SearchPage = () => { const { t } = useLocalize() + const [searchParams] = useSearchParams<{ q: string }>() const [isLoaded, setIsLoaded] = createSignal(false) const [hasSearched, setHasSearched] = createSignal(false) const [searchResults, setSearchResults] = createSignal([]) createEffect(async () => { - if (props.params.q?.trim()) { + if (searchParams.q?.trim()) { try { - console.debug('[routes.search] query:', props.params.q) + console.debug('[routes.search] query:', searchParams.q) const searchAction = action(async (text) => { if (!text.trim()) return { search: () => [] as SearchResult[], query: text } const search = await fetchSearchResult({ text, limit: 50, offset: 0 }) return { search, query: text } }) - const { search: searchLoader } = await searchAction(props.params.q) + const { search: searchLoader } = await searchAction(searchParams.q) const results = await searchLoader() setSearchResults((results || []) as SearchResult[]) setHasSearched(true) @@ -59,7 +60,7 @@ export const SearchPage = (props: RouteSectionProps<{ params: Record } > - + diff --git a/src/routes/topic/[...slug].tsx b/src/routes/topic/[...slug].tsx index cc8448f0..08727db8 100644 --- a/src/routes/topic/[...slug].tsx +++ b/src/routes/topic/[...slug].tsx @@ -1,4 +1,4 @@ -import { RouteSectionProps, createAsync } from '@solidjs/router' +import { RouteSectionProps, createAsync, useParams } from '@solidjs/router' import { ErrorBoundary, Suspense, createMemo, createReaction } from 'solid-js' import { FourOuFourView } from '~/components/Views/FourOuFour' import { TopicView } from '~/components/Views/Topic' @@ -8,26 +8,31 @@ import { useLocalize } from '~/context/localize' import { ReactionsProvider } from '~/context/reactions' import { useTopics } from '~/context/topics' import { LoadShoutsOptions, Shout, Topic } from '~/graphql/schema/core.gen' -import { loadShouts } from '~/lib/api' +import { loadShouts } from '~/lib/api/public' import { SHOUTS_PER_PAGE } from '../(home)' -const fetchTopicShouts = async (slug: string) => { - const opts: LoadShoutsOptions = { filters: { topic: slug }, limit: SHOUTS_PER_PAGE } +const fetchTopicShouts = async (slug: string, offset?: number) => { + const opts: LoadShoutsOptions = { filters: { topic: slug }, limit: SHOUTS_PER_PAGE, offset } const shoutsLoader = loadShouts(opts) return await shoutsLoader() } export const route = { - load: async ({ params }: RouteSectionProps<{ articles: Shout[] }>) => await fetchTopicShouts(params.slug) + load: async ({ params, location: { query } }: RouteSectionProps<{ articles: Shout[] }>) => { + const offset: number = Number.parseInt(query.offset, 10) + const result = await fetchTopicShouts(params.slug, offset) + return result + } } export const TopicPage = (props: RouteSectionProps<{ articles: Shout[] }>) => { + const params = useParams() const articles = createAsync( - async () => props.data.articles || (await fetchTopicShouts(props.params.slug)) || [] + async () => props.data.articles || (await fetchTopicShouts(params.slug)) || [] ) const { topicEntities } = useTopics() const { t } = useLocalize() - const topic = createMemo(() => topicEntities?.()[props.params.slug]) + const topic = createMemo(() => topicEntities?.()[params.slug]) const title = createMemo(() => `${t('Discours')}: ${topic()?.title || ''}`) // docs: `a side effect that is run the first time the expression diff --git a/src/routes/topics.tsx b/src/routes/topics.tsx index 0a2a588f..2fae1561 100644 --- a/src/routes/topics.tsx +++ b/src/routes/topics.tsx @@ -2,7 +2,7 @@ import { type RouteDefinition, type RouteSectionProps, createAsync } from '@soli import { Suspense, createEffect } from 'solid-js' import { useTopics } from '~/context/topics' import { Topic } from '~/graphql/schema/core.gen' -import { loadTopics } from '~/lib/api' +import { loadTopics } from '~/lib/api/public' import { AllTopics } from '../components/Views/AllTopics' import { Loading } from '../components/_shared/Loading' import { PageLayout } from '../components/_shared/PageLayout' From c9a8c1aa8ec44a721feff9589eda0fd6dc9ade40 Mon Sep 17 00:00:00 2001 From: Untone Date: Thu, 4 Jul 2024 00:25:03 +0300 Subject: [PATCH 014/132] routing-structure-fin --- src/components/Discours/Banner.tsx | 4 +- src/components/Discours/Footer.tsx | 18 +- src/components/Discours/Hero.tsx | 4 +- src/components/Feed/Beside.tsx | 4 +- .../Feed/Placeholder/Placeholder.tsx | 10 +- src/components/Nav/AuthModal/index.tsx | 2 +- src/components/Nav/Header/Header.tsx | 26 +- src/components/Nav/HeaderAuth.tsx | 4 +- src/components/Nav/ProfilePopup.tsx | 2 +- src/components/Nav/Topics/Topics.tsx | 2 +- .../ProfileSettings/ProfileSettings.tsx | 3 +- .../ProfileSettings}/Settings.module.scss | 0 src/components/Topic/Full.tsx | 2 +- .../Views/AllAuthors/AllAuthors.tsx | 8 +- src/components/Views/AllTopics/AllTopics.tsx | 8 +- src/components/Views/Author/Author.tsx | 21 +- .../Views/DraftsView/DraftsView.tsx | 47 +--- .../Views/EditView/EditSettingsView.tsx | 204 +++++++++++++++ src/components/Views/EditView/EditView.tsx | 11 +- src/components/Views/Expo/Expo.tsx | 3 +- src/components/Views/Feed/Feed.tsx | 2 +- src/config/routes.ts | 22 +- src/context/editor.tsx | 2 +- src/lib/api/private.ts | 1 + src/pages/about/discussionRules.page.route.ts | 4 - src/pages/about/dogma.page.route.ts | 4 - src/pages/about/dogma.page.tsx | 73 ------ src/pages/about/guide.page.tsx | 247 ------------------ src/pages/about/guilde.page.route.ts | 4 - src/pages/about/help.page.route.ts | 4 - src/pages/about/manifest.page.route.ts | 4 - src/pages/about/partners.page.route.ts | 4 - src/pages/about/principles.page.route.ts | 4 - src/pages/about/principles.page.tsx | 188 ------------- src/pages/about/projects.page.route.ts | 4 - src/pages/about/termsOfUse.page.route.ts | 4 - src/pages/about/thanks.page.route.ts | 4 - src/pages/about/thanks.page.tsx | 95 ------- src/pages/allAuthors.page.route.ts | 4 - src/pages/allAuthors.page.server.ts | 26 -- src/pages/allAuthors.page.tsx | 41 --- src/pages/allTopics.page.route.ts | 4 - src/pages/allTopics.page.server.ts | 16 -- src/pages/allTopics.page.tsx | 17 -- src/pages/article.page.route.ts | 4 - src/pages/article.page.server.ts | 23 -- src/pages/article.page.tsx | 69 ----- src/pages/author.page.route.ts | 4 - src/pages/author.page.server.ts | 29 -- src/pages/author.page.tsx | 51 ---- src/pages/authorAbout.page.route.ts | 4 - src/pages/authorComment.page.route.ts | 4 - src/pages/connect.page.route.ts | 4 - src/pages/connect.page.tsx | 107 -------- src/pages/create.page.route.ts | 4 - src/pages/drafts.page.route.ts | 6 - src/pages/drafts.page.tsx | 15 -- src/pages/edit.page.route.ts | 4 - src/pages/edit.page.tsx | 102 -------- src/pages/editSettings.page.route.ts | 4 - src/pages/expo/expo.page.route.ts | 5 - src/pages/expo/expo.page.server.ts | 22 -- src/pages/expo/expo.page.tsx | 46 ---- src/pages/feed.page.route.ts | 4 - src/pages/feed.page.tsx | 40 --- src/pages/feedMy.page.route.ts | 4 - src/pages/fourOuFour.page.route.ts | 4 - src/pages/fourOuFour.page.tsx | 15 -- src/pages/inbox.page.route.ts | 4 - src/pages/inbox.page.tsx | 32 --- src/pages/index.page.route.ts | 4 - src/pages/index.page.server.ts | 20 -- src/pages/index.page.tsx | 39 --- .../profile/profileSecurity.page.route.ts | 4 - .../profile/profileSettings.page.route.ts | 4 - .../profileSubscriptions.page.route.ts | 4 - src/pages/search.page.route.ts | 4 - src/pages/search.page.server.ts | 17 -- src/pages/search.page.tsx | 42 --- src/pages/topic.page.route.ts | 4 - src/pages/topic.page.server.ts | 30 --- src/pages/topic.page.tsx | 69 ----- src/pages/types.ts | 56 ---- src/routes/[...slug].tsx | 2 +- src/routes/{authors.tsx => author/(all).tsx} | 8 +- src/routes/author/[slug]/[...tab].tsx | 74 ++++++ .../{connect.tsx => connect/(connect).tsx} | 4 +- src/routes/edit/(all).tsx | 31 +++ src/routes/edit/[id]/(draft).tsx | 75 ++++++ src/routes/edit/[id]/settings.tsx | 36 +++ .../create.page.tsx => routes/edit/new.tsx} | 72 ++--- src/routes/expo/[...layout].tsx | 70 +++++ src/routes/feed/[...feed].tsx | 2 +- src/routes/guide/(guide).tsx | 18 +- .../guide/debate.tsx} | 6 +- .../guide/manifest.tsx} | 14 +- .../guide/partners.tsx} | 3 +- src/routes/guide/principles.tsx | 2 +- .../guide/projects.tsx} | 0 .../guide/support.tsx} | 7 +- .../guide/terms.tsx} | 6 +- .../profile/(settings).tsx} | 8 +- .../profile/security.tsx} | 63 ++--- .../profile/subs.tsx} | 2 +- .../{search.tsx => search/(search).tsx} | 12 +- src/routes/{topics.tsx => topic/(all).tsx} | 10 +- src/routes/topic/[...slug].tsx | 2 +- tests/basic-routes.spec.ts | 8 +- tests/basic-routes.test.js | 8 +- 109 files changed, 695 insertions(+), 1916 deletions(-) rename src/{pages/profile => components/ProfileSettings}/Settings.module.scss (100%) create mode 100644 src/components/Views/EditView/EditSettingsView.tsx delete mode 100644 src/pages/about/discussionRules.page.route.ts delete mode 100644 src/pages/about/dogma.page.route.ts delete mode 100644 src/pages/about/dogma.page.tsx delete mode 100644 src/pages/about/guide.page.tsx delete mode 100644 src/pages/about/guilde.page.route.ts delete mode 100644 src/pages/about/help.page.route.ts delete mode 100644 src/pages/about/manifest.page.route.ts delete mode 100644 src/pages/about/partners.page.route.ts delete mode 100644 src/pages/about/principles.page.route.ts delete mode 100644 src/pages/about/principles.page.tsx delete mode 100644 src/pages/about/projects.page.route.ts delete mode 100644 src/pages/about/termsOfUse.page.route.ts delete mode 100644 src/pages/about/thanks.page.route.ts delete mode 100644 src/pages/about/thanks.page.tsx delete mode 100644 src/pages/allAuthors.page.route.ts delete mode 100644 src/pages/allAuthors.page.server.ts delete mode 100644 src/pages/allAuthors.page.tsx delete mode 100644 src/pages/allTopics.page.route.ts delete mode 100644 src/pages/allTopics.page.server.ts delete mode 100644 src/pages/allTopics.page.tsx delete mode 100644 src/pages/article.page.route.ts delete mode 100644 src/pages/article.page.server.ts delete mode 100644 src/pages/article.page.tsx delete mode 100644 src/pages/author.page.route.ts delete mode 100644 src/pages/author.page.server.ts delete mode 100644 src/pages/author.page.tsx delete mode 100644 src/pages/authorAbout.page.route.ts delete mode 100644 src/pages/authorComment.page.route.ts delete mode 100644 src/pages/connect.page.route.ts delete mode 100644 src/pages/connect.page.tsx delete mode 100644 src/pages/create.page.route.ts delete mode 100644 src/pages/drafts.page.route.ts delete mode 100644 src/pages/drafts.page.tsx delete mode 100644 src/pages/edit.page.route.ts delete mode 100644 src/pages/edit.page.tsx delete mode 100644 src/pages/editSettings.page.route.ts delete mode 100644 src/pages/expo/expo.page.route.ts delete mode 100644 src/pages/expo/expo.page.server.ts delete mode 100644 src/pages/expo/expo.page.tsx delete mode 100644 src/pages/feed.page.route.ts delete mode 100644 src/pages/feed.page.tsx delete mode 100644 src/pages/feedMy.page.route.ts delete mode 100644 src/pages/fourOuFour.page.route.ts delete mode 100644 src/pages/fourOuFour.page.tsx delete mode 100644 src/pages/inbox.page.route.ts delete mode 100644 src/pages/inbox.page.tsx delete mode 100644 src/pages/index.page.route.ts delete mode 100644 src/pages/index.page.server.ts delete mode 100644 src/pages/index.page.tsx delete mode 100644 src/pages/profile/profileSecurity.page.route.ts delete mode 100644 src/pages/profile/profileSettings.page.route.ts delete mode 100644 src/pages/profile/profileSubscriptions.page.route.ts delete mode 100644 src/pages/search.page.route.ts delete mode 100644 src/pages/search.page.server.ts delete mode 100644 src/pages/search.page.tsx delete mode 100644 src/pages/topic.page.route.ts delete mode 100644 src/pages/topic.page.server.ts delete mode 100644 src/pages/topic.page.tsx delete mode 100644 src/pages/types.ts rename src/routes/{authors.tsx => author/(all).tsx} (89%) create mode 100644 src/routes/author/[slug]/[...tab].tsx rename src/routes/{connect.tsx => connect/(connect).tsx} (74%) create mode 100644 src/routes/edit/(all).tsx create mode 100644 src/routes/edit/[id]/(draft).tsx create mode 100644 src/routes/edit/[id]/settings.tsx rename src/{pages/create.page.tsx => routes/edit/new.tsx} (53%) create mode 100644 src/routes/expo/[...layout].tsx rename src/{pages/about/discussionRules.page.tsx => routes/guide/debate.tsx} (99%) rename src/{pages/about/manifest.page.tsx => routes/guide/manifest.tsx} (93%) rename src/{pages/about/partners.page.tsx => routes/guide/partners.tsx} (96%) rename src/{pages/about/projects.page.tsx => routes/guide/projects.tsx} (100%) rename src/{pages/about/help.page.tsx => routes/guide/support.tsx} (98%) rename src/{pages/about/termsOfUse.page.tsx => routes/guide/terms.tsx} (99%) rename src/{pages/profile/profileSettings.page.tsx => routes/profile/(settings).tsx} (73%) rename src/{pages/profile/profileSecurity.page.tsx => routes/profile/security.tsx} (89%) rename src/{pages/profile/profileSubscriptions.page.tsx => routes/profile/subs.tsx} (91%) rename src/routes/{search.tsx => search/(search).tsx} (87%) rename src/routes/{topics.tsx => topic/(all).tsx} (77%) diff --git a/src/components/Discours/Banner.tsx b/src/components/Discours/Banner.tsx index a2d819a8..125cf5ca 100644 --- a/src/components/Discours/Banner.tsx +++ b/src/components/Discours/Banner.tsx @@ -16,8 +16,8 @@ export default () => {

    {t('Discours exists because of our common effort')}

    - {t('Support us')} - {t('Become an author')} + {t('Support us')} + {t('Become an author')} showModal('auth')}> {t('Join the community')} diff --git a/src/components/Discours/Footer.tsx b/src/components/Discours/Footer.tsx index ca20cb74..37c4a424 100644 --- a/src/components/Discours/Footer.tsx +++ b/src/components/Discours/Footer.tsx @@ -25,9 +25,9 @@ export const FooterView = () => { { header: t('About the project'), items: [ - { title: t('Discours Manifest'), slug: '/about/manifest' }, - { title: t('How it works'), slug: '/about/guide' }, - { title: t('Dogma'), slug: '/about/dogma' }, + { title: t('Discours Manifest'), slug: '/guide/manifest' }, + { title: t('How it works'), slug: '/guide' }, + { title: t('Dogma'), slug: '/guide/dogma' }, { title: t('Our principles'), slug: '/guide/principles' }, { title: t('How to write an article'), slug: '/how-to-write-a-good-article' } ] @@ -36,8 +36,8 @@ export const FooterView = () => { header: t('Participating'), items: [ { title: t('Suggest an idea'), slug: '/connect' }, - { title: t('Become an author'), slug: '/create' }, - { title: t('Support Discours'), slug: '/about/help' }, + { title: t('Become an author'), slug: '/edit/new' }, + { title: t('Support Discours'), slug: '/guide/support' }, { title: t('Work with us'), slug: 'https://docs.google.com/forms/d/e/1FAIpQLSeNNvIzKlXElJtkPkYiXl-jQjlvsL9u4-kpnoRjz1O8Wo40xQ/viewform' @@ -47,10 +47,10 @@ export const FooterView = () => { { header: t('Sections'), items: [ - { title: t('Authors'), slug: '/authors' }, + { title: t('Authors'), slug: '/author' }, { title: t('Communities'), slug: '/community' }, - { title: t('Partners'), slug: '/about/partners' }, - { title: t('Special projects'), slug: '/about/projects' }, + { title: t('Partners'), slug: '/guide/partners' }, + { title: t('Special projects'), slug: '/guide/projects' }, { title: lang() === 'ru' ? 'English' : 'Русский', slug: `?lng=${lang() === 'ru' ? 'en' : 'ru'}`, @@ -97,7 +97,7 @@ export const FooterView = () => { 'Independant magazine with an open horizontal cooperation about culture, science and society' )} . {t('Discours')} © 2015–{new Date().getFullYear()}{' '} - {t('Terms of use')} + {t('Terms of use')}

    diff --git a/src/components/Discours/Hero.tsx b/src/components/Discours/Hero.tsx index 0d605058..29f32c20 100644 --- a/src/components/Discours/Hero.tsx +++ b/src/components/Discours/Hero.tsx @@ -20,7 +20,7 @@ export default () => { )} /> diff --git a/src/components/Feed/Beside.tsx b/src/components/Feed/Beside.tsx index 8995eec0..7c1e01fe 100644 --- a/src/components/Feed/Beside.tsx +++ b/src/components/Feed/Beside.tsx @@ -48,14 +48,14 @@ export const Beside = (props: Props) => {

    {props.title}

    - + {t('All authors')} - + {t('All topics')} diff --git a/src/components/Feed/Placeholder/Placeholder.tsx b/src/components/Feed/Placeholder/Placeholder.tsx index 6f608dd3..5d0e6d1d 100644 --- a/src/components/Feed/Placeholder/Placeholder.tsx +++ b/src/components/Feed/Placeholder/Placeholder.tsx @@ -36,14 +36,14 @@ const data: PlaceholderData = { text: 'Placeholder feed', buttonLabelAuthor: 'Popular authors', buttonLabelFeed: 'Create own feed', - href: '/authors?by=followers' + href: '/author?by=followers' }, feedCollaborations: { image: 'placeholder-experts.webp', header: 'Find collaborators', text: 'Placeholder feedCollaborations', buttonLabel: 'Find co-authors', - href: '/authors?by=name' + href: '/author?by=name' }, feedDiscussions: { image: 'placeholder-discussions.webp', @@ -58,7 +58,7 @@ const data: PlaceholderData = { header: 'Join our team of authors', text: 'Join our team of authors text', buttonLabel: 'Create post', - href: '/create', + href: '/edit/new', profileLinks: [ { href: '/how-to-write-a-good-article', @@ -74,11 +74,11 @@ const data: PlaceholderData = { href: '/feed?by=last_comment', profileLinks: [ { - href: '/about/discussion-rules', + href: '/guide/debate', label: 'Discussion rules' }, { - href: '/about/discussion-rules#ban', + href: '/guide/debate#ban', label: 'Block rules' } ] diff --git a/src/components/Nav/AuthModal/index.tsx b/src/components/Nav/AuthModal/index.tsx index 21a33f4d..cc88dff9 100644 --- a/src/components/Nav/AuthModal/index.tsx +++ b/src/components/Nav/AuthModal/index.tsx @@ -82,7 +82,7 @@ export const AuthModal = () => {

    {t('By signing up you agree with our')}{' '} { hideModal() }} diff --git a/src/components/Nav/Header/Header.tsx b/src/components/Nav/Header/Header.tsx index cd119219..a95b78d3 100644 --- a/src/components/Nav/Header/Header.tsx +++ b/src/components/Nav/Header/Header.tsx @@ -119,7 +119,7 @@ export const Header = (props: Props) => { requireAuthentication(() => { ev?.preventDefault() - navigate('/create') + navigate('/edit/new') }, 'create') } @@ -216,13 +216,13 @@ export const Header = (props: Props) => {

    {t('Participating')}

    @@ -280,8 +280,8 @@ export const Header = (props: Props) => { @@ -342,22 +342,22 @@ export const Header = (props: Props) => { >
    diff --git a/src/components/Views/AllAuthors/AllAuthors.tsx b/src/components/Views/AllAuthors/AllAuthors.tsx index 2f9d963d..3a818e09 100644 --- a/src/components/Views/AllAuthors/AllAuthors.tsx +++ b/src/components/Views/AllAuthors/AllAuthors.tsx @@ -91,21 +91,21 @@ export const AllAuthors = (props: Props) => { ['view-switcher__item--selected']: !searchParams?.by || searchParams?.by === 'shouts' })} > - {t('By shouts')} + {t('By shouts')}
  • - {t('By popularity')} + {t('By popularity')}
  • - {t('By name')} + {t('By name')}
  • { event.preventDefault() scrollHandler(`letter-${index()}`) diff --git a/src/components/Views/AllTopics/AllTopics.tsx b/src/components/Views/AllTopics/AllTopics.tsx index 77f18bc4..b3ed309e 100644 --- a/src/components/Views/AllTopics/AllTopics.tsx +++ b/src/components/Views/AllTopics/AllTopics.tsx @@ -80,13 +80,13 @@ export const AllTopics = (props: Props) => {
    • - {t('By shouts')} + {t('By shouts')}
    • - {t('By authors')} + {t('By authors')}
    • - {t('By title')} + {t('By title')}
    • { event.preventDefault() scrollHandler(`letter-${index()}`) diff --git a/src/components/Views/Author/Author.tsx b/src/components/Views/Author/Author.tsx index cc61737c..16041cc1 100644 --- a/src/components/Views/Author/Author.tsx +++ b/src/components/Views/Author/Author.tsx @@ -1,5 +1,5 @@ import { Meta, Title } from '@solidjs/meta' -import { A, useLocation, useMatch } from '@solidjs/router' +import { A, useLocation, useParams } from '@solidjs/router' import { clsx } from 'clsx' import { For, Match, Show, Switch, createEffect, createMemo, createSignal, on, onMount } from 'solid-js' import { useAuthors } from '~/context/authors' @@ -34,6 +34,7 @@ type Props = { authorSlug: string shouts?: Shout[] author?: Author + selectedTab: string } export const PRERENDERED_ARTICLES_COUNT = 12 @@ -41,6 +42,7 @@ const LOAD_MORE_PAGE_SIZE = 9 export const AuthorView = (props: Props) => { const { t } = useLocalize() + const params = useParams() const { followers: myFollowers, follows: myFollows } = useFollowing() const { session } = useSession() const me = createMemo(() => session()?.user?.app_data?.profile as Author) @@ -48,9 +50,6 @@ export const AuthorView = (props: Props) => { const { sortedFeed } = useFeed() const { modal, hideModal } = useUI() const loc = useLocation() - const matchAuthor = useMatch(() => '/author') - const matchComments = useMatch(() => '/author/:authorId/comments') - const matchAbout = useMatch(() => '/author/:authorId/about') const [isLoadMoreButtonVisible, setIsLoadMoreButtonVisible] = createSignal(false) const [isBioExpanded, setIsBioExpanded] = createSignal(false) const { loadAuthor, authorsEntities } = useAuthors() @@ -189,20 +188,20 @@ export const AuthorView = (props: Props) => {
      - +
      @@ -246,7 +245,7 @@ export const AuthorView = (props: Props) => {
      - +
      @@ -272,7 +271,7 @@ export const AuthorView = (props: Props) => {
      - +
      diff --git a/src/components/Views/DraftsView/DraftsView.tsx b/src/components/Views/DraftsView/DraftsView.tsx index dc569bc2..cdaae1e1 100644 --- a/src/components/Views/DraftsView/DraftsView.tsx +++ b/src/components/Views/DraftsView/DraftsView.tsx @@ -1,46 +1,19 @@ -import { clsx } from 'clsx' -import { For, Show, createEffect, createMemo, createSignal, on } from 'solid-js' - import { useNavigate } from '@solidjs/router' -import { useGraphQL } from '~/context/graphql' -import getDraftsQuery from '~/graphql/query/core/articles-load-drafts' -import { useEditorContext } from '../../../context/editor' -import { useSession } from '../../../context/session' -import { Shout } from '../../../graphql/schema/core.gen' -import { Draft } from '../../Draft' -import { Loading } from '../../_shared/Loading' +import { clsx } from 'clsx' +import { For, Show, createMemo, createSignal } from 'solid-js' +import { Draft } from '~/components/Draft' +import { Loading } from '~/components/_shared/Loading' +import { useEditorContext } from '~/context/editor' +import { useSession } from '~/context/session' +import { Shout } from '~/graphql/schema/core.gen' import styles from './DraftsView.module.scss' -export const DraftsView = () => { +export const DraftsView = (props: { drafts: Shout[] }) => { + const [drafts, setDrafts] = createSignal(props.drafts || []) const { session } = useSession() const authorized = createMemo(() => Boolean(session()?.access_token)) const navigate = useNavigate() - const [drafts, setDrafts] = createSignal([]) - const [loading, setLoading] = createSignal(false) - const { query } = useGraphQL() - - createEffect( - on( - () => Boolean(session()?.access_token), - async (s) => { - if (s) { - setLoading(true) - const resp = await query(getDraftsQuery, {}).toPromise() - const result = resp?.data?.get_shouts_drafts - if (result) { - const { error, drafts: loadedDrafts } = result - if (error) console.warn(error) - if (loadedDrafts) setDrafts(loadedDrafts) - } - setLoading(false) - } - }, - { defer: true } - ) - ) - const { publishShoutById, deleteShout } = useEditorContext() - const handleDraftDelete = async (shout: Shout) => { const success = await deleteShout(shout.id) if (success) { @@ -55,7 +28,7 @@ export const DraftsView = () => { return (
      - }> + }>
      diff --git a/src/components/Views/EditView/EditSettingsView.tsx b/src/components/Views/EditView/EditSettingsView.tsx new file mode 100644 index 00000000..a9427af7 --- /dev/null +++ b/src/components/Views/EditView/EditSettingsView.tsx @@ -0,0 +1,204 @@ +import { clsx } from 'clsx' +import deepEqual from 'fast-deep-equal' +import { Show, createEffect, createSignal, on, onCleanup, onMount } from 'solid-js' +import { createStore } from 'solid-js/store' +import { debounce } from 'throttle-debounce' +import { useGraphQL } from '~/context/graphql' +import getMyShoutQuery from '~/graphql/query/core/article-my' +import { ShoutForm, useEditorContext } from '../../../context/editor' +import { useLocalize } from '../../../context/localize' +import type { Shout, Topic } from '../../../graphql/schema/core.gen' +import { clone } from '../../../utils/clone' +import { isDesktop } from '../../../utils/media-query' +import { Panel } from '../../Editor' +import { AutoSaveNotice } from '../../Editor/AutoSaveNotice' +import { Modal } from '../../Nav/Modal' +import { TableOfContents } from '../../TableOfContents' +import { Icon } from '../../_shared/Icon' +import { InviteMembers } from '../../_shared/InviteMembers' +import { PublishSettings } from '../PublishSettings' +import styles from './EditView.module.scss' + +type Props = { + shout: Shout +} + +export const MAX_HEADER_LIMIT = 100 +export const EMPTY_TOPIC: Topic = { + id: -1, + slug: '' +} + +const AUTO_SAVE_DELAY = 3000 + +const handleScrollTopButtonClick = (ev: MouseEvent | TouchEvent) => { + ev.preventDefault() + window.scrollTo({ + top: 0, + behavior: 'smooth' + }) +} + +export const EditSettingsView = (props: Props) => { + const { t } = useLocalize() + const [isScrolled, setIsScrolled] = createSignal(false) + const { query } = useGraphQL() + const { form, setForm, saveDraft, saveDraftToLocalStorage, getDraftFromLocalStorage } = useEditorContext() + const [shoutTopics, setShoutTopics] = createSignal([]) + const [draft, setDraft] = createSignal() + const [prevForm, setPrevForm] = createStore(clone(form)) + const [saving, setSaving] = createSignal(false) + + createEffect( + on( + () => props.shout, + (shout) => { + if (shout) { + console.debug(`[EditView] shout is loaded: ${shout}`) + setShoutTopics((shout.topics as Topic[]) || []) + const stored = getDraftFromLocalStorage(shout.id) + if (stored) { + console.info(`[EditView] got stored shout: ${stored}`) + setDraft(stored) + } else { + if (!shout.slug) { + console.warn(`[EditView] shout has no slug! ${shout}`) + } + const draftForm = { + slug: shout.slug || '', + shoutId: shout.id || 0, + title: shout.title || '', + lead: shout.lead || '', + description: shout.description || '', + subtitle: shout.subtitle || '', + selectedTopics: (shoutTopics() || []) as Topic[], + mainTopic: shoutTopics()[0] || '', + body: shout.body || '', + coverImageUrl: shout.cover || '', + media: shout.media || '', + layout: shout.layout + } + setForm((_) => draftForm) + console.debug('draft from props data: ', draftForm) + } + } + }, + { defer: true } + ) + ) + + createEffect( + on( + draft, + (d) => { + if (d) { + const draftForm = Object.keys(d).length !== 0 ? d : { shoutId: props.shout.id } + setForm(draftForm) + console.debug('draft from localstorage: ', draftForm) + } + }, + { defer: true } + ) + ) + + createEffect( + on( + () => props.shout?.id, + async (shoutId) => { + if (shoutId) { + const resp = await query(getMyShoutQuery, { shout_id: shoutId }) + const result = resp?.data?.get_my_shout + if (result) { + console.debug('[EditView] getMyShout result: ', result) + const { shout: loadedShout, error } = result + setDraft(loadedShout) + console.debug('[EditView] loadedShout:', loadedShout) + console.log(error) + } + } + }, + { defer: true } + ) + ) + + onMount(() => { + const handleScroll = () => { + setIsScrolled(window.scrollY > 0) + } + + window.addEventListener('scroll', handleScroll, { passive: true }) + onCleanup(() => { + window.removeEventListener('scroll', handleScroll) + }) + + const handleBeforeUnload = (event: BeforeUnloadEvent) => { + if (!deepEqual(prevForm, form)) { + event.returnValue = t( + 'There are unsaved changes in your publishing settings. Are you sure you want to leave the page without saving?' + ) + } + } + + window.addEventListener('beforeunload', handleBeforeUnload) + onCleanup(() => window.removeEventListener('beforeunload', handleBeforeUnload)) + }) + const [hasChanges, setHasChanges] = createSignal(false) + const autoSave = async () => { + console.log('autoSave called') + if (hasChanges()) { + console.debug('saving draft', form) + setSaving(true) + saveDraftToLocalStorage(form) + await saveDraft(form) + setPrevForm(clone(form)) + setSaving(false) + setHasChanges(false) + } + } + + const debouncedAutoSave = debounce(AUTO_SAVE_DELAY, autoSave) + + onMount(() => { + onCleanup(() => { + debouncedAutoSave.cancel() + }) + }) + + return ( + <> +
      +
      +
      + + + + +
      + + + +
      +
      +
      +
      + + + + + + + + + + ) +} + +export default EditSettingsView diff --git a/src/components/Views/EditView/EditView.tsx b/src/components/Views/EditView/EditView.tsx index 1bc25c72..24310641 100644 --- a/src/components/Views/EditView/EditView.tsx +++ b/src/components/Views/EditView/EditView.tsx @@ -1,4 +1,3 @@ -import { useMatch } from '@solidjs/router' import { clsx } from 'clsx' import deepEqual from 'fast-deep-equal' import { @@ -37,7 +36,6 @@ import { InviteMembers } from '../../_shared/InviteMembers' import { Loading } from '../../_shared/Loading' import { Popover } from '../../_shared/Popover' import { EditorSwiper } from '../../_shared/SolidSwiper' -import { PublishSettings } from '../PublishSettings' import styles from './EditView.module.scss' const SimplifiedEditor = lazy(() => import('../../Editor/SimplifiedEditor')) @@ -272,8 +270,6 @@ export const EditView = (props: Props) => { setIsLeadVisible(true) } - const matchEdit = useMatch(() => 'edit') - const matchEditSettings = useMatch(() => 'edit/:shoutId/settings') return ( <>
      @@ -299,7 +295,7 @@ export const EditView = (props: Props) => {
      - +
      @@ -455,7 +451,7 @@ export const EditView = (props: Props) => {
      - }> + }> {
      - - - diff --git a/src/components/Views/Expo/Expo.tsx b/src/components/Views/Expo/Expo.tsx index ff6281ce..4ad9cd95 100644 --- a/src/components/Views/Expo/Expo.tsx +++ b/src/components/Views/Expo/Expo.tsx @@ -5,6 +5,7 @@ import { A } from '@solidjs/router' import { useGraphQL } from '~/context/graphql' import getShoutsQuery from '~/graphql/query/core/articles-load-by' import getRandomTopShoutsQuery from '~/graphql/query/core/articles-load-random-top' +import { LayoutType } from '~/types/common' import { useLocalize } from '../../../context/localize' import { LoadShoutsFilters, LoadShoutsOptions, Shout } from '../../../graphql/schema/core.gen' import { getUnixtime } from '../../../utils/getServerDate' @@ -16,8 +17,6 @@ import { Loading } from '../../_shared/Loading' import { ArticleCardSwiper } from '../../_shared/SolidSwiper/ArticleCardSwiper' import styles from './Expo.module.scss' -export type LayoutType = 'music' | 'literature' | 'video' | 'article' | 'image' - type Props = { shouts: Shout[] layout: LayoutType diff --git a/src/components/Views/Feed/Feed.tsx b/src/components/Views/Feed/Feed.tsx index a574b72a..6e571463 100644 --- a/src/components/Views/Feed/Feed.tsx +++ b/src/components/Views/Feed/Feed.tsx @@ -182,7 +182,7 @@ export const FeedView = (props: FeedProps) => {

      {t('Popular authors')}

      - + {t('All authors')} diff --git a/src/config/routes.ts b/src/config/routes.ts index af122c7d..bf80c3c9 100644 --- a/src/config/routes.ts +++ b/src/config/routes.ts @@ -2,13 +2,13 @@ export const ROUTES = { home: '/', inbox: '/inbox', connect: '/connect', - create: '/create', + create: '/edit/new', edit: '/edit/:shoutId', editSettings: '/edit/:shoutId/settings', - drafts: '/drafts', + drafts: '/edit', topics: '/topics', topic: '/topic/:slug', - authors: '/authors', + authors: '/author', author: '/author/:slug', authorComments: '/author/:slug/comments', authorAbout: '/author/:slug/about', @@ -19,16 +19,16 @@ export const ROUTES = { feedBookmarks: '/feed/bookmarked', feedCollaborations: '/feed/coauthored', search: '/search/:q?', - dogma: '/about/dogma', + dogma: '/guide/dogma', discussionRules: '/about/discussion-rules', - guide: '/about/guide', - help: '/about/help', - manifest: '/about/manifest', - partners: '/about/partners', - principles: '/about/principles', - projects: '/about/projects', + guide: '/guide', + help: '/guide/support', + manifest: '/guide/manifest', + partners: '/guide/partners', + principles: '/guide/principles', + projects: '/guide/projects', termsOfUse: '/about/terms-of-use', - thanks: '/about/thanks', + thanks: '/guide/thanks', expo: '/expo/:layout?', profileSettings: '/profile/settings', profileSecurity: '/profile/security', diff --git a/src/context/editor.tsx b/src/context/editor.tsx index 57cb1bcf..48b93fb2 100644 --- a/src/context/editor.tsx +++ b/src/context/editor.tsx @@ -179,7 +179,7 @@ export const EditorProvider = (props: { children: JSX.Element }) => { if (shout?.published_at) { navigate(`/article/${shout.slug}`) } else { - navigate('/drafts') + navigate('/edit') } } catch (error) { console.error('[saveShout]', error) diff --git a/src/lib/api/private.ts b/src/lib/api/private.ts index cdfd4c3d..390740f4 100644 --- a/src/lib/api/private.ts +++ b/src/lib/api/private.ts @@ -5,6 +5,7 @@ import loadShoutsCoauthoredQuery from '~/graphql/query/core/articles-load-coauth import loadShoutsDiscussedQuery from '~/graphql/query/core/articles-load-discussed' import loadShoutsFollowedQuery from '~/graphql/query/core/articles-load-followed' import loadShoutsUnratedQuery from '~/graphql/query/core/articles-load-unrated' + import { QueryLoad_Shouts_FollowedArgs, QueryLoad_Shouts_UnratedArgs, diff --git a/src/pages/about/discussionRules.page.route.ts b/src/pages/about/discussionRules.page.route.ts deleted file mode 100644 index f8907219..00000000 --- a/src/pages/about/discussionRules.page.route.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { ROUTES } from '../../stores/router' -import { getServerRoute } from '../../utils/getServerRoute' - -export default getServerRoute(ROUTES.discussionRules) diff --git a/src/pages/about/dogma.page.route.ts b/src/pages/about/dogma.page.route.ts deleted file mode 100644 index 2c63adf0..00000000 --- a/src/pages/about/dogma.page.route.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { ROUTES } from '../../stores/router' -import { getServerRoute } from '../../utils/getServerRoute' - -export default getServerRoute(ROUTES.dogma) diff --git a/src/pages/about/dogma.page.tsx b/src/pages/about/dogma.page.tsx deleted file mode 100644 index ada689a5..00000000 --- a/src/pages/about/dogma.page.tsx +++ /dev/null @@ -1,73 +0,0 @@ -import { Meta } from '../../context/meta' - -import { StaticPage } from '../../components/Views/StaticPage' -import { useLocalize } from '../../context/localize' -import { getImageUrl } from '../../utils/getImageUrl' - -export const DogmaPage = () => { - const { t } = useLocalize() - - const ogImage = getImageUrl('production/image/logo_image.png') - const ogTitle = t('Dogma') - const description = t('Professional principles that the open editorial team follows in its work') - - return ( - - - - - - - - - - - - -

      - Редакционные принципы -

      - -

      - Дискурс — журнал с открытой горизонтальной редакцией. Содержание журнала определяется прямым - голосованием его авторов. Мы нередко занимаем различные позиции по разным проблемам, но - придерживаемся общих профессиональных принципов: -

      -
        -
      1. - На первое место ставим факты. Наша задача — не судить, а наблюдать и непредвзято - фиксировать происходящее. Все утверждения и выводы, которые мы делаем, подтверждаются фактами, - цифрами, мнениями экспертов или ссылками на авторитетные источники. -
      2. -
      3. - Ответственно относимся к источникам. - Мы выбираем только надежные источники, проверяем информацию и рассказываем, как и откуда мы её - получили, кроме случаев, когда это может нанести вред источникам. Тогда мы не раскроем их, даже в - суде. -
      4. -
      5. - Выбираем компетентных и независимых экспертов, понимая всю степень ответственности перед - аудиторией. -
      6. -
      7. - - Даем возможность высказаться всем заинтересованным сторонам, но не присоединяемся ни к чьему - лагерю. - - Ко всем событиям, компаниям и людям мы относимся с одинаковым скептицизмом. -
      8. -
      9. - Всегда исправляем ошибки, если мы их допустили. - Никто не безгрешен, иногда и мы ошибаемся. Заметили ошибку — отправьте{' '} - ремарку автору или напишите нам на{' '} - - welcome@discours.io - - . -
      10. -
      -
      - ) -} - -export const Page = DogmaPage diff --git a/src/pages/about/guide.page.tsx b/src/pages/about/guide.page.tsx deleted file mode 100644 index c2cba232..00000000 --- a/src/pages/about/guide.page.tsx +++ /dev/null @@ -1,247 +0,0 @@ -import { Meta } from '../../context/meta' - -import { StaticPage } from '../../components/Views/StaticPage' -import { useLocalize } from '../../context/localize' -import { getImageUrl } from '../../utils/getImageUrl' - -export const GuidePage = () => { - const { t } = useLocalize() - - const ogImage = getImageUrl('production/image/logo_image.png') - const ogTitle = t('How Discours works') - const description = t('A guide to horizontal editorial: how an open journal works') - - return ( - - <> - - - - - - - - - - - -

      - {ogTitle} -

      - -

      - Дискурс — независимый журнал о культуре, науке, искусстве и обществе с  - открытой редакцией. У нас нет главного редактора, инвестора - и вообще никого, кто бы принимал единоличные решения. Вместо традиционных иерархий - Дискурс основан на принципах прямой демократии: в нашем горизонтальном сообществе все - редакционные вопросы решаются открытым голосованием авторов журнала. Вот как это работает. -

      -

      Как устроен сайт Дискурса

      -

      Дискурс состоит из четырех основных разделов:

      -
        -
      • -

        - Темы -  — у нас публикуются исследования, обзоры, эссе, интервью, репортажи, - аналитика и другие материалы о культуре, науке, искусстве и обществе. -

        -
      • -
      • -

        - Искусство -  — здесь, например, представлены художественные произведения: литература, живопись, - музыка, фотографии, видео. Этот раздел помогает прозвучать новому искусству, которое создают - российские художники, писатели, режиссёры и музыканты. -

        -
      • - {/* -
      • -

        - События — в этом разделе - публикуются самые важные, по мнению редакции, культурные - события России — выставки, лекции, концерты, кинопоказы, фестивали, - художественные и политические акции. Напишите нам - на почту, если вы - хотите разместить объявление. Мы делаем это - на безвозмездной основе. -

        -
      • -
      • -

        - Редакция — - это внутренний раздел, где появляются новые материалы, которые присылают - в редакцию. Здесь авторы обсуждают, редактируют и оценивают - публикации, определяя таким образом содержание журнала. -

        -
      • -*/} -
      -

      - Материалы в Дискурсе объединяются по темам - — ключевым словам, которые располагаются в конце материалов и связывают - материалы по жанрам (например, интервью,{' '} - репортажи, эссе,{' '} - ликбезы - ), по тематике (кино, философия,{' '} - история, абсурдизм,{' '} - секс и т.д.) или в серии (как « - Законы мира» или « - За линией Маннергейма - »). Темы объединяют сотни публикаций, помогают ориентироваться в журнале и следить - за интересными материалами. -

      - -
      -

      Как стать автором журнала

      -

      - Дискурс объединяет журналистов, активистов, музыкантов, художников, фотографов, режиссеров, - философов, ученых и других замечательных людей. Каждый может прислать{' '} - свой материал в журнал. Формат и тематика не имеют значения, единственное, что - важно — хороший ли материал. Если - сообщество поддержит вашу публикацию, она выйдет в журнале и станет доступна тысячам - наших читателей. -

      -
      - -

      Как проходит голосование

      -

      - Все присылаемые в Дискурс материалы попадают в  - «Редакцию». Это внутренний раздел сайта, где участники сообщества - решают, что будет опубликовано в Дискурсе. Как только работа получает одобрение как минимум - пятерых авторов открытой редакции, она немедленно публикуется в журнале. Если же - материал набирает более 20% голосов «против», он не выходит - и может быть отправлен на доработку. Жестких сроков рассмотрения материалов у нас - нет, иногда это занимает час, иногда месяц, обычно — несколько дней. -

      -
      -

      - Как только сообщество поддержит публикацию, вы получите приглашение - в интернет-редакцию и сможете голосовать за новые материалы. -

      -
      - -

      Как мы делаем тексты друг друга лучше

      -

      - Дискурс — журнал с совместным редактированием. Совершенствовать тексты нам - помогает система ремарок. Вы можете выделить часть текста в любой статье - и оставить к ней замечание, вопрос или предложение — автор текста получит - совет на почту и сможет его учесть. Так мы устраняем опечатки, неточности - и советуем друг другу, как сделать тексты качественнее и интереснее. -

      -

      - Среди участников сообщества есть профессиональные редакторы, которые помогают авторам делать - тексты лучше. Если вашему материалу потребуется доработка, они помогут отредактировать текст, - подобрать иллюстрации, придумать заголовок и красиво сверстать публикацию. Если - вы хотите обсудить текст, прежде чем загрузить материал в интернет-редакцию — - разместите его в google-документе, откройте доступ к редактированию по ссылке - и напишите нам на  - - welcome@discours.io - - . -

      -

      - Если у вас возникают трудности с тем, чтобы подобрать к своему материалу - иллюстрации, тоже пишите на  - - почту - - — наши коллеги-художники могут вам помочь{' '} - - в режиме совместного редактирования - - . -

      - -

      Что сообщество дает авторам

      -
        -
      • -

        - Право определять, каким будет журнал. Дискурс — это общественная - институция, созданная людьми и ради людей, функционирующая на условиях прямой - демократии. Авторы публикуют статьи и художественные проекты, участвуют - в обсуждениях, голосуют за работы коллег и таким образом вносят свой вклад - в развитие проекта, определяя содержание и направление журнала. -

        -
      • -
      • -

        - Возможность обратиться к широкой аудитории. Дискурс читают десятки тысяч - людей, и с каждым днем их становится больше. -

        -
      • -
      • -

        - Поддержка редакции. Дискурс предоставляет авторам аккредитацию - на мероприятия, базу контактов, юридическую поддержку, ознакомление с книжными, - кино- и музыкальными новинками до их выхода в свет. Если что-то - из этого вам понадобится, пишите на почту{' '} - - welcome@discours.io - -  — поможем. -

        -
      • -
      • -

        - Пресс-карты для корреспондентов. Три опубликованные статьи позволяют авторам - Дискурса получить официальные удостоверения журналистов (пресс-карты) на следующий год. - Пресс-карты удостоверяют, что вы журналист и можете пользоваться всеми теми правами, - которые гарантирует Закон о СМИ. Кроме того, многие культурные институции (музеи, галереи - и др.) предоставляют журналистам право свободного входа. -

        -
      • -
      • -

        - Помощь сотен специалистов в разных областях. В основе Дискурса - лежит идея совместного редактирования. Участники редакционного сообщества — - несколько сотен журналистов, исследователей, художников, литераторов из разных стран - — изучают материалы друг друга до публикации и помогают сделать - их качественнее и интереснее. Так, в редакции нередко складываются творческие - союзы: например, авторов текстов и художников, создающих для них иллюстрации. -

        -
      • -
      • -

        - Пространство общения полное выдающихся людей. Дискурс — большое - живое сообщество интеллектуалов, разбросанных по всему земному шару. Вступив - в редакцию, вы сможете познакомиться со множеством интересных людей, которые - определяют повестку завтрашнего дня, вдохновляют окружающих, создают новое и изучают - старое, ищут знания и готовы ими делиться, чтобы менять мир в соответствии - со своими идеалами. -

        -
      • -
      - -

      Как быть в курсе

      -

      - За свежими публикациями Дискурса можно следить не только на сайте, - но и на страницах в  - - Фейсбуке - - ,{' '} - - ВКонтакте - {' '} - и  - - Телеграме - - . А ещё раз в месяц мы отправляем почтовую рассылку{' '} - с дайджестом лучших материалов. -

      -

      - Если вы хотите сотрудничать, что-то обсудить или предложить — пожалуйста, пишите - на  - - welcome@discours.io - - . Мы обязательно ответим. -

      - -
      - ) -} - -export const Page = GuidePage diff --git a/src/pages/about/guilde.page.route.ts b/src/pages/about/guilde.page.route.ts deleted file mode 100644 index 2d86c1b5..00000000 --- a/src/pages/about/guilde.page.route.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { ROUTES } from '../../stores/router' -import { getServerRoute } from '../../utils/getServerRoute' - -export default getServerRoute(ROUTES.guide) diff --git a/src/pages/about/help.page.route.ts b/src/pages/about/help.page.route.ts deleted file mode 100644 index 48288617..00000000 --- a/src/pages/about/help.page.route.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { ROUTES } from '../../stores/router' -import { getServerRoute } from '../../utils/getServerRoute' - -export default getServerRoute(ROUTES.help) diff --git a/src/pages/about/manifest.page.route.ts b/src/pages/about/manifest.page.route.ts deleted file mode 100644 index 70a30fba..00000000 --- a/src/pages/about/manifest.page.route.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { ROUTES } from '../../stores/router' -import { getServerRoute } from '../../utils/getServerRoute' - -export default getServerRoute(ROUTES.manifest) diff --git a/src/pages/about/partners.page.route.ts b/src/pages/about/partners.page.route.ts deleted file mode 100644 index 5e588193..00000000 --- a/src/pages/about/partners.page.route.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { ROUTES } from '../../stores/router' -import { getServerRoute } from '../../utils/getServerRoute' - -export default getServerRoute(ROUTES.partners) diff --git a/src/pages/about/principles.page.route.ts b/src/pages/about/principles.page.route.ts deleted file mode 100644 index 4995eb09..00000000 --- a/src/pages/about/principles.page.route.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { ROUTES } from '../../stores/router' -import { getServerRoute } from '../../utils/getServerRoute' - -export default getServerRoute(ROUTES.principles) diff --git a/src/pages/about/principles.page.tsx b/src/pages/about/principles.page.tsx deleted file mode 100644 index d8b10b63..00000000 --- a/src/pages/about/principles.page.tsx +++ /dev/null @@ -1,188 +0,0 @@ -import { Meta } from '../../context/meta' - -import { StaticPage } from '../../components/Views/StaticPage' -import { useLocalize } from '../../context/localize' -import { getImageUrl } from '../../utils/getImageUrl' - -export const PrinciplesPage = () => { - const { t } = useLocalize() - - const ogImage = getImageUrl('production/image/logo_image.png') - const ogTitle = t('Community Principles') - const description = t('Community values and rules of engagement for the open editorial team') - - return ( - - - - - - - - - - - - -

      - {ogTitle} -

      - -
        -
      1. -

        - Горизонтальность. Мы все разные, и это классно. Вертикалей - в мире достаточно, мы — горизонтальное сообщество и ценим наши различия, - потому что знаем — в них наша сила. Благодаря разнообразию сотен голосов, - усиливающих друг друга, в сообществе складывается неповторимая синергия, которая помогает - вместе достигать большего. -

        -
      2. -
      3. -

        - Многоголосие. Мы ценим свободу слова и аргументированные мнения. - Предоставляя трибуну каждому, кому есть что сказать, самиздат отражает полифонию позиций, знаний - и опыта, которые открывают более полную картину реальности. -

        -
      4. -
      5. -

        - Взаимопомощь. Мы помогаем друг другу, потому что хотим, чтобы в мире - было еще больше хорошего. Обсуждая что-то, мы всегда интересуемся, чем можем помочь. - В самиздате можно найти специалистов практически в любых сферах и получить - поддержку от сотен людей. Благодаря коллективной экспертизе глобального сообщества - в самиздате выходят крутейшие публикации, которыми можно вечно гордиться. -

        -
      6. -
      7. -

        - Взаимоуважение. Мы ценим, искренне уважаем друг друга и вместо - борщевиков враждебности культивируем цветы добра, мира, знания и юмора. Нам некогда - доказывать друг другу, кто круче. Гораздо приятнее сотрудничать, помогать и создавать - что-то важное, интересное и полезное. -

        -
      8. -
      9. -

        - Созидание. Мы создаем, потому что любим создавать. Мы открыто делимся - опытом, дарим идеи, обмениваемся мнениями и благодарим за критику, используя - ее для совершенствования мастерства и саморазвития. Мы знаем, что мир - не идеальное место, и делаем всё возможное, чтобы он стал лучше. -

        -
      10. -
      - -

      - Как у нас принято себя вести -

      - -

      - Открытая редакция объединяет сотни потрясающих людей со всего мира, которые делают крутейшие - вещи. Это пространство, где доверяют, вдохновляют, исследуют и создают новое вместе. Поскольку - все в сообществе очень разные, как-то мы собрались и решили зафиксировать базовые - ценности открытой редакции, а заодно придумали универсальные правила взаимодействия, чтобы - общение было не только плодотворным, но и приятным для всех участников сообщества. -

      -
        -
      1. -

        - Действуем, помогаем и делимся. В редакции мы создаем свои - проекты и помогаем другим создавать свои — советами, делом, участием, - вовлеченностью. Мы открыто делимся опытом, мнениями и идеями, потому что ценим силу - сотрудничества и знаем, что идеи реализуются скорее, лучше и веселее, если над ними - трудиться сообща. -

        -
      2. - -
      3. -

        - Общаемся дружелюбно. Помните, по ту сторону монитора находятся - реальные люди. Неуважение ранит других так же, как ранило бы вас самих. Поэтому - не стоит кричать (даже капслоком), заполнять эфир желчью и бросаться - грубостями — так вы рискуете не только растерять доверие окружающих, - но и остаться непонятым. -

        -
      4. - -
      5. -

        - Критикуем и реагируем конструктивно. Самиздат про то, чтобы - разбираться в сложных вещах всем сообществом, поэтому мы тактично и без агрессии - делимся мнениями, стараясь убедительно аргументировать позиции. И с благодарностью - принимаем критику, используя ее для улучшения наших проектов. Мы верим, что каждый - участник сообщества имеет добрые намерения, и придерживаемся принципов доброжелательной - критики, стараемся делиться советами — лучшим средством для самосовершенствования. - Обоснованная критика помогает и адресату, и всем участникам сообщества досконально - изучить тему и глубже разобраться в проблеме. -

        -
      6. - -
      7. -

        - Решаем трудности не агрессией, а диалогом. Обесценивать мнения - и оскорблять других людей только потому, что вы с ними - не согласны, — не лучший способ донести свою точку зрения. Конечно, важно - высказаться, если вас что-то не устраивает и откровенно бесит. Но прежде чем - сжигать оппонента гневом, попробуйте понять, почему этот «нехороший человек» так - поступает. Возможно, аргументы собеседника окажутся убедительными или вам удастся изменить его - мнение. В любом случае конфликты решаются в диалогах и проходят, - а налаженное взаимопонимание останется надолго. -

        -
      8. - -
      9. -

        - Не переходим на личности — это признак токсичности. Всегда - мудрее обсуждать точку зрения человека, а не его самого, даже если он вам - не импонирует. Предвзятое отношение ограничивает кругозор, добавляет преждевременные - морщины и не помогает окружающим стать лучше. Вежливость - и взаимоуважение — краеугольная основа вдумчивых и осмысленных дискуссий. -

        -
      10. - -
      11. -

        - Благодарим за помощь. Благодарите коллег даже за самые, - казалось бы, простые вещи. «Спасибо» не зря называют волшебным - словом — на искренней благодарности держится любое подлинное сотрудничество. - Поддержка воодушевляет на новые подвиги и напоминает, что мир делают прекрасным - не машины, а живые люди. -

        -
      12. - -
      13. -

        - Даем еще один шанс. Все совершают ошибки, и за один проступок - не стоит вычеркивать людей из жизни. Ошибки нужны, чтобы на них учиться - и делать выводы. Однако если многократно и систематически нарушать правила сообщества, - наверняка можно заслужить минусы в карму от других участников и потерять доступ - к сообществу. -

        -
      14. - -
      15. -

        - Вместе создаем идеальную среду общения. Открытая редакция — это - утопическое пространство обогащающей и осмысленной коммуникации. Атмосфера горизонтального - сообщества складывается из действий каждого, поэтому мы действуем так, чтобы - способствовать сотворчеству, коллективному познанию и развитию самиздата и нашей - альтернативной интеллектуальной медиасреды. -

        -
      16. - -
      17. -

        - Помним, что всё в сообществе зависит от нас. Если нам чего-то - не хватает, мы начинаем действовать — рассказываем об идее, находим - единомышленников, готовим и запускаем проект. Так в сообществе становится на одну - крутую активность больше. Так появилось наше сообщество. Так появился самиздат и все - проекты открытой редакции. Чтобы в сообществе случилось что-то прекрасное, достаточно - просто положить этому начало. -

        -
      18. -
      -
      - ) -} - -export const Page = PrinciplesPage diff --git a/src/pages/about/projects.page.route.ts b/src/pages/about/projects.page.route.ts deleted file mode 100644 index b8ab171a..00000000 --- a/src/pages/about/projects.page.route.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { ROUTES } from '../../stores/router' -import { getServerRoute } from '../../utils/getServerRoute' - -export default getServerRoute(ROUTES.projects) diff --git a/src/pages/about/termsOfUse.page.route.ts b/src/pages/about/termsOfUse.page.route.ts deleted file mode 100644 index 301475fd..00000000 --- a/src/pages/about/termsOfUse.page.route.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { ROUTES } from '../../stores/router' -import { getServerRoute } from '../../utils/getServerRoute' - -export default getServerRoute(ROUTES.termsOfUse) diff --git a/src/pages/about/thanks.page.route.ts b/src/pages/about/thanks.page.route.ts deleted file mode 100644 index 2db639c8..00000000 --- a/src/pages/about/thanks.page.route.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { ROUTES } from '../../stores/router' -import { getServerRoute } from '../../utils/getServerRoute' - -export default getServerRoute(ROUTES.thanks) diff --git a/src/pages/about/thanks.page.tsx b/src/pages/about/thanks.page.tsx deleted file mode 100644 index 24b740d3..00000000 --- a/src/pages/about/thanks.page.tsx +++ /dev/null @@ -1,95 +0,0 @@ -import { Meta } from '../../context/meta' - -import { StaticPage } from '../../components/Views/StaticPage' -import { useLocalize } from '../../context/localize' -import { getImageUrl } from '../../utils/getImageUrl' - -export const ThanksPage = () => { - const { t } = useLocalize() - const ogImage = getImageUrl('production/image/logo_image.png') - const ogTitle = t('Thank you') - const description = t( - 'Self-publishing exists thanks to the help of wonderful people from all over the world. Thank you!' - ) - - return ( - - - - - - - - - - - - -

      - {ogTitle} -

      - {/* -

      Команда

      -

      - Константин Ворович — исполнительный директор, - welcome@discours.io
      - Александр Гусев — технический архитектор, - services@discours.io
      - Екатерина Ильина — шеф-редактор проекта, - letter@discours.io
      - Яна Климова — редактор сайта и соцсетей, - letter@discours.io
      - Николай Носачевский — голос и душа подкаста, - podcast@discours.io -

      - */} -

      Неоценимый вклад в Дискурс внесли и вносят

      -

      - Мария Бессмертная, Дамир Бикчурин, Константин Ворович, Ян Выговский, Эльдар Гариффулин, Павел - Гафаров, Виктория Гендлина, Александр Гусев, Данила Давыдов, Константин Дубовик, Вячеслав Еременко, - Кристина Ибрагим, Екатерина Ильина, Анна Капаева, Яна Климова, Александр Коренков, Ирэна Лесневская, - Игорь Лобанов, Анастасия Лозовая, Григорий Ломизе, Евгений Медведев, Павел Никулин, Николай - Носачевский, Андрей Орловский, Михаил Панин, Антон Панов, Павел Пепперштейн, Любовь Покровская, Илья - Розовский, Денис Светличный, Павел Соколов, Сергей Стрельников, Глеб Струнников, Николай Тарковский, - Кирилл Филимонов, Алексей Хапов, Екатерина Харитонова -

      -

      Авторы

      -

      - Мы безмерно благодарны{' '} - - каждому автору - {' '} - за участие и поддержку проекта. Сегодня, когда для большинства деньги стали целью - и основным источником мотивации, бескорыстная помощь и основанный на энтузиазме труд - бесценны. Именно вы своим трудом каждый день делаете Дискурс таким, какой он есть. -

      -

      Иллюстраторы

      -

      - Ольга Аверинова, Регина Акчурина, Айгуль Берхеева, Екатерина Вакуленко, Анастасия Викулова, Мария - Власенко, Ванесса Гаврилова, Ольга Горше, Ксения Горшкова, Ангелина Гребенюкова, Илья Diliago, Антон - Жаголкин, Саша Керова, Ольга Машинец, Злата Мечетина, Тала Никитина, Никита Поздняков, Матвей - Сапегин, Татьяна Сафонова, Виктория Шибаева -

      -

      Меценаты

      -

      - Дискурс существует исключительно на пожертвования читателей. Мы бесконечно признательны - всем, кто нас поддерживает. Ваши пожертвования — финансовый фундамент журнала. Благодаря - вам мы развиваем платформу качественной журналистики, которая помогает самым разным авторам - быть услышанными. Стать нашим меценатом и подписаться на ежемесячную поддержку проекта - можно здесь. -

      -
      - ) -} - -export const Page = ThanksPage diff --git a/src/pages/allAuthors.page.route.ts b/src/pages/allAuthors.page.route.ts deleted file mode 100644 index 7edd2f2f..00000000 --- a/src/pages/allAuthors.page.route.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { ROUTES } from '../stores/router' -import { getServerRoute } from '../utils/getServerRoute' - -export default getServerRoute(ROUTES.authors) diff --git a/src/pages/allAuthors.page.server.ts b/src/pages/allAuthors.page.server.ts deleted file mode 100644 index 1450723c..00000000 --- a/src/pages/allAuthors.page.server.ts +++ /dev/null @@ -1,26 +0,0 @@ -import type { PageContext } from '../renderer/types' -import type { PageProps } from './types' - -import { PAGE_SIZE } from '../components/Views/AllTopics/AllTopics' -import { apiClient } from '../graphql/client/core' - -export const onBeforeRender = async (_pageContext: PageContext) => { - const allAuthors = await apiClient.getAllAuthors() - const topWritingAuthors = await apiClient.loadAuthorsBy({ - by: { order: 'shouts' }, - limit: PAGE_SIZE, - offset: 0 - }) - const topFollowedAuthors = await apiClient.loadAuthorsBy({ - by: { order: 'followers' }, - limit: PAGE_SIZE, - offset: 0 - }) - const pageProps: PageProps = { allAuthors, seo: { title: '' }, topWritingAuthors, topFollowedAuthors } - - return { - pageContext: { - pageProps - } - } -} diff --git a/src/pages/allAuthors.page.tsx b/src/pages/allAuthors.page.tsx deleted file mode 100644 index 3086cef1..00000000 --- a/src/pages/allAuthors.page.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import type { PageProps } from './types' - -import { createSignal, onMount } from 'solid-js' - -import { AllAuthors } from '../components/Views/AllAuthors/' -import { PAGE_SIZE } from '../components/Views/AllTopics/AllTopics' -import { PageLayout } from '../components/_shared/PageLayout' -import { useLocalize } from '../context/localize' -import { loadAllAuthors, loadAuthors } from '../stores/zine/authors' - -export const AllAuthorsPage = (props: PageProps) => { - const [isLoaded, setIsLoaded] = createSignal( - Boolean(props.allAuthors && props.topFollowedAuthors && props.topWritingAuthors) - ) - - const { t } = useLocalize() - - onMount(async () => { - if (isLoaded()) { - return - } - - await loadAllAuthors() - await loadAuthors({ by: { order: 'shouts' }, limit: PAGE_SIZE, offset: 0 }) - await loadAuthors({ by: { order: 'followers' }, limit: PAGE_SIZE, offset: 0 }) - setIsLoaded(true) - }) - - return ( - - - - ) -} - -export const Page = AllAuthorsPage diff --git a/src/pages/allTopics.page.route.ts b/src/pages/allTopics.page.route.ts deleted file mode 100644 index e7019ef7..00000000 --- a/src/pages/allTopics.page.route.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { ROUTES } from '../stores/router' -import { getServerRoute } from '../utils/getServerRoute' - -export default getServerRoute(ROUTES.topics) diff --git a/src/pages/allTopics.page.server.ts b/src/pages/allTopics.page.server.ts deleted file mode 100644 index d9cfd2a5..00000000 --- a/src/pages/allTopics.page.server.ts +++ /dev/null @@ -1,16 +0,0 @@ -import type { PageContext } from '../renderer/types' -import type { PageProps } from './types' - -import { apiClient } from '../graphql/client/core' - -export const onBeforeRender = async (_pageContext: PageContext) => { - const allTopics = await apiClient.getAllTopics() - - const pageProps: PageProps = { allTopics, seo: { title: '' } } - - return { - pageContext: { - pageProps - } - } -} diff --git a/src/pages/allTopics.page.tsx b/src/pages/allTopics.page.tsx deleted file mode 100644 index 5b440afe..00000000 --- a/src/pages/allTopics.page.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import { AllTopics } from '../components/Views/AllTopics' -import { PageLayout } from '../components/_shared/PageLayout' -import { useLocalize } from '../context/localize' -import { useTopics } from '../context/topics' - -export const AllTopicsPage = () => { - const { t } = useLocalize() - const { sortedTopics } = useTopics() - - return ( - - - - ) -} - -export const Page = AllTopicsPage diff --git a/src/pages/article.page.route.ts b/src/pages/article.page.route.ts deleted file mode 100644 index 9b9f5ecb..00000000 --- a/src/pages/article.page.route.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { ROUTES } from '../stores/router' -import { getServerRoute } from '../utils/getServerRoute' - -export default getServerRoute(ROUTES.article) diff --git a/src/pages/article.page.server.ts b/src/pages/article.page.server.ts deleted file mode 100644 index 3c41e14a..00000000 --- a/src/pages/article.page.server.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type { PageContext } from '../renderer/types' -import type { PageProps } from './types' - -import { render } from 'vike/abort' - -import { apiClient } from '../graphql/client/core' - -export const onBeforeRender = async (pageContext: PageContext) => { - const { slug } = pageContext.routeParams - const article = await apiClient.getShoutBySlug(slug) - - if (!article) { - throw render(404) - } - - const pageProps: PageProps = { article, seo: { title: article.title } } - - return { - pageContext: { - pageProps - } - } -} diff --git a/src/pages/article.page.tsx b/src/pages/article.page.tsx deleted file mode 100644 index 439da28e..00000000 --- a/src/pages/article.page.tsx +++ /dev/null @@ -1,69 +0,0 @@ -import type { Shout } from '../graphql/schema/core.gen' -import type { PageProps } from './types' - -import { redirectPage } from '@nanostores/router' -import { Show, createMemo, createSignal, onMount } from 'solid-js' - -import { FullArticle } from '../components/Article/FullArticle' -import { Loading } from '../components/_shared/Loading' -import { PageLayout } from '../components/_shared/PageLayout' -import { ReactionsProvider } from '../context/reactions' -import { router, useRouter } from '../stores/router' -import { loadShout, useArticlesStore } from '../stores/zine/articles' -import { setPageLoadManagerPromise } from '../utils/pageLoadManager' - -export const ArticlePage = (props: PageProps) => { - const shouts = props.article ? [props.article] : [] - const { page } = useRouter() - - const slug = createMemo(() => page().params['slug'] as string) - - const { articleEntities } = useArticlesStore({ - shouts - }) - - const article = createMemo(() => articleEntities()[slug()]) - - onMount(async () => { - if (!article()?.body) { - const loadShoutPromise = loadShout(slug()) - setPageLoadManagerPromise(loadShoutPromise) - await loadShoutPromise - - if (!article()) { - redirectPage(router, 'fourOuFour') - } - } - }) - - onMount(() => { - try { - // document.body.appendChild(script) - console.debug('TODO: connect ga') - } catch (error) { - console.warn(error) - } - }) - const [scrollToComments, setScrollToComments] = createSignal(false) - - return ( - { - setScrollToComments(value) - }} - > - - }> - - - - - ) -} - -export const Page = ArticlePage diff --git a/src/pages/author.page.route.ts b/src/pages/author.page.route.ts deleted file mode 100644 index a6b7653a..00000000 --- a/src/pages/author.page.route.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { ROUTES } from '../stores/router' -import { getServerRoute } from '../utils/getServerRoute' - -export default getServerRoute(ROUTES.author) diff --git a/src/pages/author.page.server.ts b/src/pages/author.page.server.ts deleted file mode 100644 index dca92742..00000000 --- a/src/pages/author.page.server.ts +++ /dev/null @@ -1,29 +0,0 @@ -import type { PageContext } from '../renderer/types' -import type { PageProps } from './types' - -import { render } from 'vike/abort' - -import { PRERENDERED_ARTICLES_COUNT } from '../components/Views/Author' -import { apiClient } from '../graphql/client/core' - -export const onBeforeRender = async (pageContext: PageContext) => { - const { slug } = pageContext.routeParams - console.debug(`[author.page] detected author in route: @${slug}`) - const author = await apiClient.getAuthor({ slug }) - - if (!author) { - throw render(404) - } - - const authorShouts = await apiClient.getShouts({ - filters: { author: slug, featured: false }, - limit: PRERENDERED_ARTICLES_COUNT - }) - const pageProps: PageProps = { author, authorShouts, seo: { title: author.name } } - - return { - pageContext: { - pageProps - } - } -} diff --git a/src/pages/author.page.tsx b/src/pages/author.page.tsx deleted file mode 100644 index a2e9bd70..00000000 --- a/src/pages/author.page.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import type { PageProps } from './types' - -import { Show, createEffect, createMemo, createSignal, on, onCleanup } from 'solid-js' - -import { AuthorView, PRERENDERED_ARTICLES_COUNT } from '../components/Views/Author' -import { Loading } from '../components/_shared/Loading' -import { PageLayout } from '../components/_shared/PageLayout' -import { useLocalize } from '../context/localize' -import { ReactionsProvider } from '../context/reactions' -import { useRouter } from '../stores/router' -import { loadShouts, resetSortedArticles } from '../stores/zine/articles' -import { loadAuthor } from '../stores/zine/authors' - -export const AuthorPage = (props: PageProps) => { - const { t } = useLocalize() - const { page } = useRouter() - const slug = createMemo(() => page().params['slug'] as string) - - const [isLoaded, setIsLoaded] = createSignal( - Boolean(props.authorShouts) && Boolean(props.author) && props.author.slug === slug() - ) - - createEffect( - on(slug, async (s) => { - if (s) { - setIsLoaded(false) - resetSortedArticles() - await loadShouts({ - filters: { author: s, featured: false }, - limit: PRERENDERED_ARTICLES_COUNT - }) - await loadAuthor({ slug: s }) - setIsLoaded(true) - } - }) - ) - - onCleanup(() => resetSortedArticles()) - - return ( - - - }> - - - - - ) -} - -export const Page = AuthorPage diff --git a/src/pages/authorAbout.page.route.ts b/src/pages/authorAbout.page.route.ts deleted file mode 100644 index 4bcf9ef3..00000000 --- a/src/pages/authorAbout.page.route.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { ROUTES } from '../stores/router' -import { getServerRoute } from '../utils/getServerRoute' - -export default getServerRoute(ROUTES.authorAbout) diff --git a/src/pages/authorComment.page.route.ts b/src/pages/authorComment.page.route.ts deleted file mode 100644 index 10ff3029..00000000 --- a/src/pages/authorComment.page.route.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { ROUTES } from '../stores/router' -import { getServerRoute } from '../utils/getServerRoute' - -export default getServerRoute(ROUTES.authorComments) diff --git a/src/pages/connect.page.route.ts b/src/pages/connect.page.route.ts deleted file mode 100644 index 264948b8..00000000 --- a/src/pages/connect.page.route.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { ROUTES } from '../stores/router' -import { getServerRoute } from '../utils/getServerRoute' - -export default getServerRoute(ROUTES.connect) diff --git a/src/pages/connect.page.tsx b/src/pages/connect.page.tsx deleted file mode 100644 index 23ff0d75..00000000 --- a/src/pages/connect.page.tsx +++ /dev/null @@ -1,107 +0,0 @@ -import { Show, createSignal } from 'solid-js' - -import { PageLayout } from '../components/_shared/PageLayout' - -export const ConnectPage = () => { - const [state, setState] = createSignal<'initial' | 'loading' | 'success' | 'error'>('initial') - - const formRef: { current: HTMLFormElement } = { current: null } - const handleFormSubmit = async (e) => { - e.preventDefault() - setState('loading') - - // eslint-disable-next-line unicorn/prefer-spread - const postData = Array.from(formRef.current.elements).reduce( - (acc, element) => { - const formField = element as unknown as { name: string; value: string } - if (formField.name) { - acc[formField.name] = formField.value - } - - return acc - }, - {} as Record - ) - - const requestOptions = { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify(postData) - } - - const result = await fetch('/api/feedback', requestOptions) - - if (!result.ok) { - console.error('[handleFormSubmit]', result) - setState('error') - return - } - - setState('success') - window.scrollTo({ - top: 0 - }) - } - - // TODO: l10n - return ( - -
      -
      -
      - -

      - Предложить идею -

      - -

      - Хотите что-то предложить, обсудить или посоветовать? Поделиться темой или идеей? Напишите - нам скорее! Если укажете свою почту, мы обязательно ответим. -

      - -
      (formRef.current = el)}> -
      - -
      -
      - - -
      -
      -