diff --git a/.eslintrc b/.eslintrc index 9b115365..fe68289e 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,6 +1,6 @@ { "extends": ["airbnb", "airbnb-typescript", "prettier"], - "plugins": ["import", "jsx-a11y", "react"], + "plugins": ["import", "jsx-a11y", "react", "prettier"], "env": { "browser": true, "node": true, @@ -17,9 +17,14 @@ "project": "./tsconfig.json" }, "rules": { + "prettier/prettier": "error", "no-console": ["error", { "allow": ["warn", "error"] }], + "react/function-component-definition": [ + 2, + { "namedComponents": "arrow-function" } + ], "curly": "error", - "@typescript-eslint/indent":"off", + "@typescript-eslint/indent": "off", "@typescript-eslint/brace-style": "off", "no-underscore-dangle": [ "error", diff --git a/cypress/e2e/allCollections/allCollections.cy.js b/cypress/e2e/allCollections/allCollections.cy.js index e7bbfb45..29d8b7ad 100644 --- a/cypress/e2e/allCollections/allCollections.cy.js +++ b/cypress/e2e/allCollections/allCollections.cy.js @@ -19,8 +19,7 @@ import { getRootPublishedItems } from '../../support/utils'; buildPublicAndPrivateEnvironments(PUBLISHED_ITEMS).forEach((environment) => { describe(`All Collections Page for ${environment.currentMember.name}`, () => { // check if title and headings are displayed correctly - beforeEach(()=> - { + beforeEach(() => { cy.setUpApi(environment); if (environment.currentMember?.extra?.lang) { i18n.changeLanguage(environment.currentMember?.extra?.lang); @@ -29,7 +28,6 @@ buildPublicAndPrivateEnvironments(PUBLISHED_ITEMS).forEach((environment) => { }); it('Layout', () => { - cy.get(`#${TITLE_TEXT_ID}`).should( 'have.text', i18n.t(LIBRARY.ALL_COLLECTIONS_TITLE), @@ -56,7 +54,6 @@ buildPublicAndPrivateEnvironments(PUBLISHED_ITEMS).forEach((environment) => { }); it('display menu options', () => { - cy.get(buildEducationLevelOptionSelector(0)).should( 'have.text', SAMPLE_CATEGORIES[0].name, diff --git a/cypress/e2e/collection/categories.cy.js b/cypress/e2e/collection/categories.cy.js index aa192d4c..b829120a 100644 --- a/cypress/e2e/collection/categories.cy.js +++ b/cypress/e2e/collection/categories.cy.js @@ -1,58 +1,49 @@ -import { PUBLISHED_ITEMS } from '../../fixtures/items'; import { buildCollectionRoute } from '../../../src/config/routes'; -import { COLLECTION_LOADING_TIME } from '../../support/constants'; +import { SUMMARY_CATEGORIES_CONTAINER_ID } from '../../../src/config/selectors'; import { SAMPLE_CATEGORIES } from '../../fixtures/categories'; import { buildPublicAndPrivateEnvironments } from '../../fixtures/environment'; -import { - SUMMARY_CATEGORIES_CONTAINER_ID, - SUMMARY_LANGUAGES_CONTAINER_ID, -} from '../../../src/config/selectors'; +import { PUBLISHED_ITEMS } from '../../fixtures/items'; +import { COLLECTION_LOADING_TIME } from '../../support/constants'; describe('Categories in Summary', () => { buildPublicAndPrivateEnvironments().forEach((environment) => { - it(`Display item's categories for ${environment.currentMember.name}`, () => { + it( + `Display item's categories for ${environment.currentMember.name}`, + { defaultCommandTimeout: 10000 }, + () => { + cy.setUpApi(environment); + + const item = PUBLISHED_ITEMS[0]; + cy.visit(buildCollectionRoute(item.id)); + + item.categories.forEach(({ categoryId }) => { + const category = SAMPLE_CATEGORIES.find( + ({ id }) => id === categoryId, + ); + cy.get(`#${SUMMARY_CATEGORIES_CONTAINER_ID}`).should( + 'contain', + category?.name, + ); + }); + }, + ); + + it(`Child shows parent's categories ${environment.currentMember.name}`, () => { cy.setUpApi(environment); const item = PUBLISHED_ITEMS[0]; - cy.visit(buildCollectionRoute(item.id)); - cy.wait(COLLECTION_LOADING_TIME); - - cy.get(`#${SUMMARY_LANGUAGES_CONTAINER_ID}`).should('not.exist'); - item.categories.forEach(({ categoryId }) => { - const category = SAMPLE_CATEGORIES.find(({ id }) => id === categoryId); - cy.get(`#${SUMMARY_CATEGORIES_CONTAINER_ID}`).should( - 'contain', - category?.name, - ); - }); - }); - it(`Display item's language for ${environment.currentMember.name}`, () => { - cy.setUpApi(environment); + const child = PUBLISHED_ITEMS[1]; - const item = PUBLISHED_ITEMS[4]; - cy.visit(buildCollectionRoute(item.id)); + cy.visit(buildCollectionRoute(child.id)); cy.wait(COLLECTION_LOADING_TIME); - cy.get(`#${SUMMARY_CATEGORIES_CONTAINER_ID}`).should('not.exist'); + const categoryContainer = cy.get(`#${SUMMARY_CATEGORIES_CONTAINER_ID}`); + item.categories.forEach(({ categoryId }) => { const category = SAMPLE_CATEGORIES.find(({ id }) => id === categoryId); - cy.get(`#${SUMMARY_LANGUAGES_CONTAINER_ID}`).should( - 'contain', - category?.name, - ); + categoryContainer.should('contain', category?.name); }); }); - - it(`No category to display for ${environment.currentMember.name}`, () => { - cy.setUpApi(environment); - - const item = PUBLISHED_ITEMS[2]; - cy.visit(buildCollectionRoute(item.id)); - cy.wait(COLLECTION_LOADING_TIME); - - cy.get(`#${SUMMARY_LANGUAGES_CONTAINER_ID}`).should('not.exist'); - cy.get(`#${SUMMARY_CATEGORIES_CONTAINER_ID}`).should('not.exist'); - }); }); }); diff --git a/cypress/e2e/collection/ccLicense.cy.js b/cypress/e2e/collection/ccLicense.cy.js index f4353008..fae77778 100644 --- a/cypress/e2e/collection/ccLicense.cy.js +++ b/cypress/e2e/collection/ccLicense.cy.js @@ -1,29 +1,38 @@ -import { PUBLISHED_ITEMS } from '../../fixtures/items'; import { buildCollectionRoute } from '../../../src/config/routes'; -import { COLLECTION_LOADING_TIME } from '../../support/constants'; +import { + SUMMARY_CC_LICENSE_CONTAINER_ID, + SUMMARY_CC_LICENSE_NO_LICENSE_ID, +} from '../../../src/config/selectors'; import { buildPublicAndPrivateEnvironments } from '../../fixtures/environment'; -import { SUMMARY_CC_LICENSE_CONTAINER_ID } from '../../../src/config/selectors'; +import { PUBLISHED_ITEMS } from '../../fixtures/items'; describe('CC License in Summary', () => { buildPublicAndPrivateEnvironments().forEach((environment) => { - it(`Display item's cc license for ${environment.currentMember.name}`, () => { - cy.setUpApi(environment); + it( + `Display item's cc license for ${environment.currentMember.name}`, + { defaultCommandTimeout: 10000 }, + () => { + cy.setUpApi(environment); + + const item = PUBLISHED_ITEMS[0]; + cy.visit(buildCollectionRoute(item.id)); - const item = PUBLISHED_ITEMS[0]; - cy.visit(buildCollectionRoute(item.id)); - cy.wait(COLLECTION_LOADING_TIME); + cy.get(`#${SUMMARY_CC_LICENSE_CONTAINER_ID}`).should('be.exist'); + }, + ); - cy.get(`#${SUMMARY_CC_LICENSE_CONTAINER_ID}`).should('be.exist'); - }); + it( + `No cc license to display for ${environment.currentMember.name}`, + { defaultCommandTimeout: 10000 }, + () => { + cy.setUpApi(environment); - it(`No cc license to display for ${environment.currentMember.name}`, () => { - cy.setUpApi(environment); + const item = PUBLISHED_ITEMS[5]; - const item = PUBLISHED_ITEMS[2]; - cy.visit(buildCollectionRoute(item.id)); - cy.wait(COLLECTION_LOADING_TIME); + cy.visit(buildCollectionRoute(item.id)); - cy.get(`#${SUMMARY_CC_LICENSE_CONTAINER_ID}`).should('not.exist'); - }); + cy.get(`#${SUMMARY_CC_LICENSE_NO_LICENSE_ID}`).should('exist'); + }, + ); }); }); diff --git a/cypress/e2e/collection/summary.cy.js b/cypress/e2e/collection/summary.cy.js index 18d0bf64..224be18b 100644 --- a/cypress/e2e/collection/summary.cy.js +++ b/cypress/e2e/collection/summary.cy.js @@ -1,31 +1,29 @@ -import { isChildOf } from '@graasp/sdk'; import { DateTime } from 'luxon'; -import { PUBLISHED_ITEMS } from '../../fixtures/items'; -import { buildCollectionRoute } from '../../../src/config/routes'; -import { - COLLECTION_LOADING_TIME, - PERMISSION_LEVELS, -} from '../../support/constants'; -import { buildPublicAndPrivateEnvironments } from '../../fixtures/environment'; -import { MEMBERS } from '../../fixtures/members'; +import { isChildOf } from '@graasp/sdk'; + +import { buildCollectionRoute } from '../../../src/config/routes'; import { - buildContributorId, CHILDREN_ITEMS_GRID_ID, ITEM_SUMMARY_TITLE_ID, SUMMARY_AUTHOR_CONTAINER_ID, + SUMMARY_CC_LICENSE_CONTAINER_ID, SUMMARY_CREATED_AT_CONTAINER_ID, SUMMARY_LAST_UPDATE_CONTAINER_ID, + buildContributorId, } from '../../../src/config/selectors'; +import { buildPublicAndPrivateEnvironments } from '../../fixtures/environment'; +import { PUBLISHED_ITEMS } from '../../fixtures/items'; +import { MEMBERS } from '../../fixtures/members'; +import { PERMISSION_LEVELS } from '../../support/constants'; describe('Collection Summary', () => { buildPublicAndPrivateEnvironments().forEach((environment) => { - it('Layout', () => { + it('Layout', { defaultCommandTimeout: 10000 }, () => { cy.setUpApi(environment); const item = PUBLISHED_ITEMS[0]; cy.visit(buildCollectionRoute(item.id)); - cy.wait(COLLECTION_LOADING_TIME); // current member const member = Object.values(MEMBERS).find( @@ -51,14 +49,22 @@ describe('Collection Summary', () => { // created at if (item.createdAt) { - cy.get(`#${SUMMARY_CREATED_AT_CONTAINER_ID}`).should('contain', - DateTime.fromISO(item.createdAt).toLocaleString(DateTime.DATE_FULL, { locale: member?.extra?.lang })); + cy.get(`#${SUMMARY_CREATED_AT_CONTAINER_ID}`).should( + 'contain', + DateTime.fromISO(item.createdAt).toLocaleString(DateTime.DATE_FULL, { + locale: member?.extra?.lang, + }), + ); } // last update if (item.updatedAt) { - cy.get(`#${SUMMARY_LAST_UPDATE_CONTAINER_ID}`).should('contain', - DateTime.fromISO(item.updatedAt).toLocaleString(DateTime.DATE_FULL, { locale: member?.extra?.lang })); + cy.get(`#${SUMMARY_LAST_UPDATE_CONTAINER_ID}`).should( + 'contain', + DateTime.fromISO(item.updatedAt).toLocaleString(DateTime.DATE_FULL, { + locale: member?.extra?.lang, + }), + ); } // contributors @@ -71,12 +77,31 @@ describe('Collection Summary', () => { }); }); - it('Hide co-editor', () => { + it( + 'CC license matches top level element', + { defaultCommandTimeout: 20000 }, + () => { + cy.setUpApi(environment); + + const parentItem = PUBLISHED_ITEMS[0]; + const child = PUBLISHED_ITEMS[2]; + + if (parentItem.settings.ccLicenseAdaption && child !== undefined) { + cy.visit(buildCollectionRoute(child.id)); + + cy.get(`#${SUMMARY_CC_LICENSE_CONTAINER_ID}`).should( + 'have.class', + parentItem.settings.ccLicenseAdaption, + ); + } + }, + ); + + it('Hide co-editor', { defaultCommandTimeout: 10000 }, () => { cy.setUpApi(environment); const item = PUBLISHED_ITEMS[1]; cy.visit(buildCollectionRoute(item.id)); - cy.wait(COLLECTION_LOADING_TIME); // author const authorName = Object.values(MEMBERS).find( diff --git a/cypress/e2e/collection/tags.cy.js b/cypress/e2e/collection/tags.cy.js index 6c0cfa07..31d6cb31 100644 --- a/cypress/e2e/collection/tags.cy.js +++ b/cypress/e2e/collection/tags.cy.js @@ -1,17 +1,16 @@ -import { PUBLISHED_ITEMS } from '../../fixtures/items'; import { buildCollectionRoute } from '../../../src/config/routes'; -import { COLLECTION_LOADING_TIME } from '../../support/constants'; -import { buildPublicAndPrivateEnvironments } from '../../fixtures/environment'; import { SUMMARY_TAGS_CONTAINER_ID } from '../../../src/config/selectors'; +import { buildPublicAndPrivateEnvironments } from '../../fixtures/environment'; +import { PUBLISHED_ITEMS } from '../../fixtures/items'; +import { COLLECTION_LOADING_TIME } from '../../support/constants'; -describe('Tags in Summary', () => { +describe('Tags in Summary', { defaultCommandTimeout: 10000 }, () => { buildPublicAndPrivateEnvironments().forEach((environment) => { it(`Display item's tags for ${environment.currentMember.name}`, () => { cy.setUpApi(environment); const item = PUBLISHED_ITEMS[0]; cy.visit(buildCollectionRoute(item.id)); - cy.wait(COLLECTION_LOADING_TIME); item.settings.tags.forEach((tag) => { cy.get(`#${SUMMARY_TAGS_CONTAINER_ID}`).should('contain', tag); diff --git a/cypress/e2e/header.cy.js b/cypress/e2e/header.cy.js index c9a629b1..f72aa873 100644 --- a/cypress/e2e/header.cy.js +++ b/cypress/e2e/header.cy.js @@ -1,8 +1,5 @@ import { HOME_ROUTE } from '../../src/config/routes'; -import { - HEADER_ALL_COLLECTIONS_ID, - HEADER_MY_LIST_ID, -} from '../../src/config/selectors'; +import { HEADER_ALL_COLLECTIONS_ID } from '../../src/config/selectors'; import { PUBLISHED_ITEMS } from '../fixtures/items'; import { SIGNED_OUT_MEMBER } from '../fixtures/members'; @@ -15,7 +12,7 @@ describe('Header', () => { it('Layout', () => { cy.get(`#${HEADER_ALL_COLLECTIONS_ID}`).should('be.visible'); - cy.get(`#${HEADER_MY_LIST_ID}`).should('be.visible'); + // cy.get(`#${HEADER_MY_LIST_ID}`).should('be.visible'); }); }); @@ -27,7 +24,7 @@ describe('Header', () => { it('Do not show My List if signed out', () => { cy.get(`#${HEADER_ALL_COLLECTIONS_ID}`).should('be.visible'); - cy.get(`#${HEADER_MY_LIST_ID}`).should('not.exist'); + // cy.get(`#${HEADER_MY_LIST_ID}`).should('not.exist'); }); }); }); diff --git a/cypress/e2e/myLists/myFavorites.cy.js b/cypress/e2e/myLists/myFavorites.cy.js index 4634ae8f..d5763552 100644 --- a/cypress/e2e/myLists/myFavorites.cy.js +++ b/cypress/e2e/myLists/myFavorites.cy.js @@ -1,7 +1,7 @@ import { MY_LIST_ROUTE } from '../../../src/config/routes'; import { MY_FAVORITES_COLLECTIONS_ID } from '../../../src/config/selectors'; -import { PUBLISHED_ITEMS } from '../../fixtures/items'; import { ITEM_PUBLISHED_TAG } from '../../fixtures/itemTags'; +import { PUBLISHED_ITEMS } from '../../fixtures/items'; import { buildMemberWithFavorites } from '../../fixtures/members'; describe('My Favorite Items', () => { diff --git a/cypress/e2e/myLists/myLikes.cy.js b/cypress/e2e/myLists/myLikes.cy.js index 75d8a53c..b0bb76c4 100644 --- a/cypress/e2e/myLists/myLikes.cy.js +++ b/cypress/e2e/myLists/myLikes.cy.js @@ -1,12 +1,12 @@ import { MY_LIST_ROUTE } from '../../../src/config/routes'; -import { PUBLISHED_ITEMS } from '../../fixtures/items'; -import { ITEM_PUBLISHED_TAG } from '../../fixtures/itemTags'; -import { CURRENT_USER } from '../../fixtures/members'; import { - buildMyListNavigationTabId, MY_LIKES_COLLECTIONS_ID, + buildMyListNavigationTabId, } from '../../../src/config/selectors'; import { ITEM_LIKES } from '../../fixtures/itemLikes'; +import { ITEM_PUBLISHED_TAG } from '../../fixtures/itemTags'; +import { PUBLISHED_ITEMS } from '../../fixtures/items'; +import { CURRENT_USER } from '../../fixtures/members'; describe('My Liked Items', () => { describe('Current user', () => { @@ -16,9 +16,7 @@ describe('My Liked Items', () => { cy.visit(MY_LIST_ROUTE); // click my likes tab - cy.get( - `#${buildMyListNavigationTabId('myLikes')}`, - ).click(); + cy.get(`#${buildMyListNavigationTabId('myLikes')}`).click(); // liked items query both item-like table and published items cy.wait('@getPublicItemsWithTags').then(({ request: { url } }) => { diff --git a/cypress/e2e/myLists/myPublishments.cy.js b/cypress/e2e/myLists/myPublishments.cy.js index 4ea4828e..21d91797 100644 --- a/cypress/e2e/myLists/myPublishments.cy.js +++ b/cypress/e2e/myLists/myPublishments.cy.js @@ -1,14 +1,14 @@ import { MY_LIST_ROUTE } from '../../../src/config/routes'; import { - getNumberOfOwnPublishedItems, + MY_PUBLISHMENTS_COLLECTIONS_ID, + buildMyListNavigationTabId, +} from '../../../src/config/selectors'; +import { ITEM_PUBLISHED_TAG } from '../../fixtures/itemTags'; +import { PUBLISHED_ITEMS, + getNumberOfOwnPublishedItems, } from '../../fixtures/items'; -import { ITEM_PUBLISHED_TAG } from '../../fixtures/itemTags'; import { CURRENT_USER } from '../../fixtures/members'; -import { - buildMyListNavigationTabId, - MY_PUBLISHMENTS_COLLECTIONS_ID, -} from '../../../src/config/selectors'; describe('My Published Items', () => { describe('Current user', () => { @@ -18,9 +18,7 @@ describe('My Published Items', () => { cy.visit(MY_LIST_ROUTE); // click my publishment tab - cy.get( - `#${buildMyListNavigationTabId('myPublishments')}`, - ).click(); + cy.get(`#${buildMyListNavigationTabId('myPublishments')}`).click(); cy.wait('@getPublicItemsWithTags').then(({ request: { url } }) => { expect(url).to.contain(ITEM_PUBLISHED_TAG.id); diff --git a/cypress/fixtures/categories.js b/cypress/fixtures/categories.js index e801d110..fe8a8730 100644 --- a/cypress/fixtures/categories.js +++ b/cypress/fixtures/categories.js @@ -1,4 +1,4 @@ -// we cannot use constants.ts because next/config is not loaded correctly in cypress +// we cannot use constants.ts because next/config is not loaded correctly in cypress export const SAMPLE_CATEGORY_TYPES = [ { id: '3f7b79e2-7e78-4aea-b697-2b6a6ba92e91', diff --git a/cypress/fixtures/items.js b/cypress/fixtures/items.js index 5de483a4..96968c91 100644 --- a/cypress/fixtures/items.js +++ b/cypress/fixtures/items.js @@ -27,7 +27,7 @@ export const PUBLISHED_ITEMS = [ updatedAt: '2023-02-28T18:20:09.732Z', settings: { tags: ['one-tag', 'two-tag'], - ccLicenseAdaption: 'allow', + ccLicenseAdaption: 'CC BY-NC-ND', displayCoEditors: true, }, tags: [ @@ -124,6 +124,14 @@ export const PUBLISHED_ITEMS = [ memberId: MEMBERS.BOB.id, }, ], + categories: [ + { + categoryId: SAMPLE_CATEGORIES[1].id, + }, + { + categoryId: SAMPLE_CATEGORIES[0].id, + }, + ], }, { ...DEFAULT_FOLDER_ITEM, @@ -174,6 +182,40 @@ export const PUBLISHED_ITEMS = [ }, ], }, + { + ...DEFAULT_FOLDER_ITEM, + id: 'ecafcc2c-5688-11eb-ae93-0242ac130002', + name: 'Item Without Licence', + path: 'ecafcc2c_5688_11eb_ae93_0242ac130002', + createdAt: '2023-02-27T18:20:09.732Z', + updatedAt: '2023-02-28T18:20:09.732Z', + creator: MEMBERS.BOB.id, + settings: { + tags: ['one-tag', 'two-tag'], + displayCoEditors: true, + }, + tags: [], + memberships: [ + { + itemPath: 'fdf09f5a_5688_11eb_ae93_0242ac130002', + permission: PERMISSION_LEVELS.ADMIN, + memberId: MEMBERS.ANNA.id, + }, + { + itemPath: 'fdf09f5a_5688_11eb_ae93_0242ac130002', + permission: PERMISSION_LEVELS.ADMIN, + memberId: MEMBERS.BOB.id, + }, + ], + categories: [ + { + categoryId: SAMPLE_CATEGORIES[1].id, + }, + { + categoryId: SAMPLE_CATEGORIES[0].id, + }, + ], + }, ]; export const GRAASPER_ITEMS = [ @@ -250,7 +292,7 @@ export const GRAASPER_ITEMS = [ creator: MEMBERS.GRAASPER.id, id: 'bdf09f5d-5688-11eb-ae93-0242ac130004', name: 'child of public item1', - path: 'ecafbd2d_5688_11eb_ae93_0242ac130002.bdf09f5d_5688_11eb_ae93_0242ac130004.bdf09f5a_5688_11eb_ae93_0242ac130004', + path: 'ecafbd2d_5688_11eb_ae93_0242ac130002.bdf09f5a_5688_11eb_ae93_0242ac130004.bdf09f5d_5688_11eb_ae93_0242ac130004', tags: [ { tagId: ITEM_PUBLISHED_TAG.id, diff --git a/cypress/support/commands.js b/cypress/support/commands.js index 72da67da..debd4e3a 100644 --- a/cypress/support/commands.js +++ b/cypress/support/commands.js @@ -1,40 +1,40 @@ import { + SAMPLE_CATEGORIES, + SAMPLE_CATEGORY_TYPES, +} from '../fixtures/categories'; +import { SAMPLE_FLAGS } from '../fixtures/flags'; +import { ITEM_LIKES } from '../fixtures/itemLikes'; +import { DEFAULT_TAGS } from '../fixtures/itemTags'; +import { PUBLISHED_ITEMS } from '../fixtures/items'; +import { MEMBERS } from '../fixtures/members'; +import { + mockGetAvatar, + mockGetCategories, + mockGetCategoryTypes, mockGetChildren, - mockGetMember, mockGetCurrentMember, - mockSignInRedirection, - mockSignOut, - mockGetCategoryTypes, - mockGetCategories, + mockGetFlags, + mockGetItem, mockGetItemCategories, - mockGetPublishedItemsInCategories, - mockGetAvatar, + mockGetItemMembershipsForItem, + mockGetItemTags, mockGetItemThumbnail, - mockGetItem, + mockGetLikedItems, + mockGetMember, mockGetMembers, - mockGetItemMembershipsForItem, - mockGetPublicItemMembershipsForItem, - mockGetPublicItem, mockGetOwnItems, - mockGetPublicMembers, - mockGetPublicMember, mockGetPublicChildren, + mockGetPublicItem, mockGetPublicItemCategories, - mockGetFlags, + mockGetPublicItemMembershipsForItem, mockGetPublicItemsWithTags, + mockGetPublicMember, + mockGetPublicMembers, + mockGetPublishedItemsInCategories, mockSearch, - mockGetLikedItems, - mockGetItemTags, + mockSignInRedirection, + mockSignOut, } from './server'; -import { MEMBERS } from '../fixtures/members'; -import { - SAMPLE_CATEGORIES, - SAMPLE_CATEGORY_TYPES, -} from '../fixtures/categories'; -import { SAMPLE_FLAGS } from '../fixtures/flags'; -import { PUBLISHED_ITEMS } from '../fixtures/items'; -import { ITEM_LIKES } from '../fixtures/itemLikes'; -import { DEFAULT_TAGS } from '../fixtures/itemTags'; Cypress.Commands.add( 'setUpApi', diff --git a/next.config.js b/next.config.js index f6a5e562..fe9385a2 100644 --- a/next.config.js +++ b/next.config.js @@ -1,4 +1,5 @@ module.exports = { + experimental: { newNextLinkBehavior: true }, productionBrowserSourceMaps: true, publicRuntimeConfig: { NEXT_PUBLIC_API_HOST: process.env.NEXT_PUBLIC_API_HOST, diff --git a/package.json b/package.json index 68866053..95e6ba4d 100644 --- a/package.json +++ b/package.json @@ -13,8 +13,9 @@ "hooks:install": "husky install", "test:once": "exit 0", "lint": "eslint .", - "prettier:check": "prettier --check 'src/**/*.js'", - "prettier:write": "prettier --write 'src/**/*.js'", + "prettier:check": "prettier --check '{src,pages,cypress}/**/*.{js,ts,tsx}'", + "prettier:write": "prettier --write '{src,pages,cypress}/**/*.{js,ts,tsx}'", + "check": "yarn lint && yarn prettier:check && yarn build", "release": "standard-version -a", "release:first": "standard-version -a --first-release", "release:minor": "standard-version -a --release-as minor", @@ -28,44 +29,43 @@ "cypress:run": "env-cmd -f ./.env.test cypress run --headless --browser chrome --spec \"cypress/**/*.(spec|cy).js\"" }, "dependencies": { - "@emotion/cache": "11.10.5", - "@emotion/react": "11.10.5", + "@emotion/cache": "11.10.8", + "@emotion/react": "11.10.8", "@emotion/server": "11.10.0", - "@emotion/styled": "11.10.5", - "@graasp/query-client": "0.3.2", - "@graasp/sdk": "0.9.1", - "@graasp/translations": "1.8.0", - "@graasp/ui": "2.1.0", + "@emotion/styled": "11.10.8", + "@graasp/query-client": "0.4.1", + "@graasp/sdk": "0.12.0", + "@graasp/translations": "1.12.0", + "@graasp/ui": "2.5.0", "@mui/icons-material": "5.10.9", "@mui/lab": "5.0.0-alpha.104", "@mui/material": "5.10.12", - "@sentry/node": "6.19.2", - "@sentry/react": "6.19.2", - "@testing-library/jest-dom": "5.16.3", - "@testing-library/react": "12.1.4", - "@testing-library/user-event": "14.0.0", - "@trivago/prettier-plugin-sort-imports": "3.2.0", + "@sentry/node": "7.50.0", + "@sentry/react": "7.50.0", + "@testing-library/jest-dom": "5.16.5", + "@testing-library/react": "14.0.0", + "@testing-library/user-event": "14.4.3", + "@trivago/prettier-plugin-sort-imports": "4.1.1", "http-status-codes": "2.2.0", "i18next": "21.8.1", - "immutable": "4.0.0", - "katex": "0.15.3", + "immutable": "4.3.0", + "interweave": "13.1.0", "lodash": "4.17.21", "lodash.isobject": "3.0.2", "lodash.isstring": "4.0.1", "lodash.truncate": "4.4.2", "luxon": "3.3.0", - "next": "12.1.6", + "next": "12.2.6", "prop-types": "15.8.1", "react": "17.0.2", "react-dom": "17.0.2", - "react-ga4": "1.4.1", + "react-ga4": "2.1.0", "react-helmet": "6.1.0", - "react-i18next": "11.16.2", - "react-query": "3.34.19", - "react-quill": "1.3.5", - "react-router-dom": "6.3.0", - "react-toastify": "8.2.0", - "uuid": "8.3.2" + "react-i18next": "12.2.2", + "react-query": "3.39.3", + "react-router-dom": "6.10.0", + "react-toastify": "9.1.2", + "uuid": "9.0.0" }, "devDependencies": { "@babel/core": "7.17.8", @@ -74,34 +74,35 @@ "@babel/plugin-syntax-import-assertions": "7.16.7", "@babel/plugin-transform-destructuring": "7.17.7", "@babel/preset-react": "7.16.7", - "@commitlint/cli": "16.2.3", - "@commitlint/config-conventional": "16.2.1", - "@cypress/code-coverage": "3.10.0", - "@types/next": "9.0.0", - "@types/node": "18.7.1", + "@commitlint/cli": "17.6.1", + "@commitlint/config-conventional": "17.6.1", + "@cypress/code-coverage": "3.10.4", + "@types/lodash.truncate": "4.4.7", + "@types/node": "18.16.2", "@types/react": "17.0.30", "@types/react-dom": "17.0.2", - "@typescript-eslint/eslint-plugin": "5.44.0", - "@typescript-eslint/parser": "5.44.0", + "@typescript-eslint/eslint-plugin": "5.59.1", + "@typescript-eslint/parser": "5.59.1", "babel-eslint": "10.1.0", "babel-plugin-istanbul": "6.1.1", - "concurrently": "7.0.0", - "cypress": "12.4.0", + "concurrently": "8.0.1", + "cypress": "12.11.0", "env-cmd": "10.1.0", - "eslint": "7.32.0", - "eslint-config-airbnb": "18.2.1", + "eslint": "8.39.0", + "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "17.0.0", - "eslint-config-prettier": "7.2.0", - "eslint-import-resolver-typescript": "3.5.2", - "eslint-plugin-import": "2.25.4", - "eslint-plugin-jsx-a11y": "6.5.1", - "eslint-plugin-react": "7.28.0", + "eslint-config-prettier": "8.8.0", + "eslint-import-resolver-typescript": "3.5.5", + "eslint-plugin-import": "2.27.5", + "eslint-plugin-jsx-a11y": "6.7.1", + "eslint-plugin-prettier": "4.2.1", + "eslint-plugin-react": "7.32.2", "eslint-plugin-react-app": "6.2.2", - "husky": "^7.0.4", + "husky": "8.0.3", "istanbul-lib-coverage": "3.2.0", "nyc": "15.1.0", - "prettier": "2.6.1", - "qs": "6.11.0", + "prettier": "2.8.8", + "qs": "6.11.1", "standard-version": "9.5.0", "typescript": "4.8.4", "wait-on": "6.0.1" diff --git a/pages/all-collections.js b/pages/all-collections.js index 857a5bf3..3e1d632f 100644 --- a/pages/all-collections.js +++ b/pages/all-collections.js @@ -10,13 +10,11 @@ import AllCollections from '../src/components/home/AllCollections'; import { PUBLISHED_ITEMS_KEY } from '../src/config/constants'; import { QUERY_CLIENT_OPTIONS } from '../src/config/queryClient'; -function AllCollectionsPage({ dehydratedState }) { - return ( - - - - ); -} +const AllCollectionsPage = ({ dehydratedState }) => ( + + + +); AllCollectionsPage.propTypes = { dehydratedState: PropTypes.shape({}).isRequired, diff --git a/pages/collections/[id].js b/pages/collections/[id].js index e0ec89ec..8debcb17 100644 --- a/pages/collections/[id].js +++ b/pages/collections/[id].js @@ -1,11 +1,13 @@ -import { configureQueryClient, Api, DATA_KEYS } from '@graasp/query-client'; import PropTypes from 'prop-types'; import * as React from 'react'; -import { buildCollectionKey } from '../../src/config/constants'; -import { QUERY_CLIENT_OPTIONS } from '../../src/config/queryClient'; + +import { Api, DATA_KEYS, configureQueryClient } from '@graasp/query-client'; + import Collection from '../../src/components/collection/Collection'; import Wrapper from '../../src/components/common/Wrapper'; +import { buildCollectionKey } from '../../src/config/constants'; +import { QUERY_CLIENT_OPTIONS } from '../../src/config/queryClient'; const CollectionPage = ({ dehydratedState, id }) => ( @@ -29,13 +31,15 @@ export async function getServerSideProps({ params }) { Api.getItem(id, QUERY_CLIENT_OPTIONS).then((data) => data), ); - const author = (await queryClient.getQueryData(collectionKey))?.creator; + const queryData = await queryClient.getQueryData(collectionKey); - if (author) { - await queryClient.prefetchQuery(DATA_KEYS.buildMemberKey(author), () => + const { creator /* path */ } = { ...queryData }; + + if (creator) { + await queryClient.prefetchQuery(DATA_KEYS.buildMemberKey(creator), () => Api.getMember( { - id: author, + id: creator, }, QUERY_CLIENT_OPTIONS, ) @@ -46,6 +50,12 @@ export async function getServerSideProps({ params }) { ); } + // TODO: Prefetch items for breadcrumb. + // const parents = path.replaceAll('_', '-').split('.'); + // await queryClient.prefetchQuery(DATA_KEYS.buildItemsKey(parents), () => { + // Api.getItems(parents).then(data => data).catch(() => ({})) + // }); + // Pass data to the page via props return { props: { id, dehydratedState: dehydrate(queryClient) } }; } diff --git a/pages/index.js b/pages/index.js index 9e11b911..9306546f 100644 --- a/pages/index.js +++ b/pages/index.js @@ -10,13 +10,11 @@ import Home from '../src/components/home/Home'; import { PUBLISHED_ITEMS_KEY } from '../src/config/constants'; import { QUERY_CLIENT_OPTIONS } from '../src/config/queryClient'; -function HomePage({ dehydratedState }) { - return ( - - - - ); -} +const HomePage = ({ dehydratedState }) => ( + + + +); HomePage.propTypes = { dehydratedState: PropTypes.shape({}).isRequired, diff --git a/pages/my-list.js b/pages/my-list.js index 0342b330..7ec2bb04 100644 --- a/pages/my-list.js +++ b/pages/my-list.js @@ -1,19 +1,20 @@ -import * as React from 'react'; -import { configureQueryClient, Api } from '@graasp/query-client'; import getConfig from 'next/config'; import PropTypes from 'prop-types'; + +import * as React from 'react'; + +import { Api, configureQueryClient } from '@graasp/query-client'; + +import Wrapper from '../src/components/common/Wrapper'; +import MyList from '../src/components/home/MyList'; import { PUBLISHED_ITEMS_KEY } from '../src/config/constants'; import { QUERY_CLIENT_OPTIONS } from '../src/config/queryClient'; -import MyList from '../src/components/home/MyList'; -import Wrapper from '../src/components/common/Wrapper'; -function MyListPage({ dehydratedState }) { - return ( - - - - ); -} +const MyListPage = ({ dehydratedState }) => ( + + + +); MyListPage.propTypes = { dehydratedState: PropTypes.shape({}).isRequired, diff --git a/src/components/collection/Authorship.js b/src/components/collection/Authorship.js deleted file mode 100644 index 6e14509f..00000000 --- a/src/components/collection/Authorship.js +++ /dev/null @@ -1,113 +0,0 @@ -import { Map } from 'immutable'; -import dynamic from 'next/dynamic'; -import PropTypes from 'prop-types'; - -import React, { useContext } from 'react'; -import { useTranslation } from 'react-i18next'; - -import { Grid, Typography } from '@mui/material'; -import Skeleton from '@mui/material/Skeleton'; - -import { LIBRARY } from '@graasp/translations'; - -import { DEFAULT_MEMBER_THUMBNAIL } from '../../config/constants'; -import { SUMMARY_AUTHOR_CONTAINER_ID } from '../../config/selectors'; -import { QueryClientContext } from '../QueryClientContext'; -import Contributors from './Contributors'; - -const Avatar = dynamic(() => import('@graasp/ui').then((mod) => mod.Avatar), { - ssr: false, -}); - -const Authorship = ({ itemId, author, isLoading }) => { - const { t } = useTranslation(); - const { hooks } = useContext(QueryClientContext); - const { data: item, isLoading: isLoadingItem } = hooks.useItem(itemId); - const { data: memberships } = hooks.useItemMemberships(itemId); - - const memberIds = [ - ...new Set( - memberships - ?.filter( - ({ permission, memberId }) => - (permission === 'write' || permission === 'admin') && - memberId !== author?.id, - ) - ?.map(({ memberId }) => memberId), - ), - ]; - const { data: contributors, isLoading: isLoadingContributors } = - hooks.useMembers(memberIds); - - const isAnyLoading = isLoadingItem || isLoading || isLoadingContributors; - - if (isAnyLoading) { - return ; - } - - if (!author && !isLoading) { - return null; - } - - const authorName = author?.name; - - return ( - // wrapper div is necessary for grid to apply -
- - - - {t(LIBRARY.AUTHORSHIP_AUTHOR_TITLE)} - - - - {isLoading ? ( - - - - ) : ( - - )} - - - {authorName} - - - - - - - -
- ); -}; - -Authorship.propTypes = { - author: PropTypes.instanceOf(Map), - isLoading: PropTypes.bool.isRequired, - itemId: PropTypes.string.isRequired, -}; - -Authorship.defaultProps = { - author: null, -}; - -export default Authorship; diff --git a/src/components/collection/Authorship.tsx b/src/components/collection/Authorship.tsx new file mode 100644 index 00000000..0dd56508 --- /dev/null +++ b/src/components/collection/Authorship.tsx @@ -0,0 +1,100 @@ +import { List } from 'immutable'; +import dynamic from 'next/dynamic'; + +import React, { useContext } from 'react'; +import { useTranslation } from 'react-i18next'; + +import { Typography } from '@mui/material'; +import Skeleton from '@mui/material/Skeleton'; + +import { ThumbnailSize } from '@graasp/sdk'; +import { + ItemMembershipRecord, + ItemRecord, + MemberRecord, +} from '@graasp/sdk/frontend'; +import { LIBRARY } from '@graasp/translations'; + +import { DEFAULT_MEMBER_THUMBNAIL } from '../../config/constants'; +import { SUMMARY_AUTHOR_CONTAINER_ID } from '../../config/selectors'; +import { QueryClientContext } from '../QueryClientContext'; +import Contributors from './Contributors'; + +const Avatar = dynamic(() => import('@graasp/ui').then((mod) => mod.Avatar), { + ssr: false, +}); + +type Props = { + itemId: ItemRecord['id']; + author: MemberRecord; + isLoading: boolean; +}; + +const Authorship = ({ itemId, author, isLoading }: Props) => { + const { t } = useTranslation(); + const { hooks } = useContext(QueryClientContext); + const { data: item, isLoading: isLoadingItem } = hooks.useItem(itemId); + const { data: memberships } = hooks.useItemMemberships(itemId); + const { data: authorBlob, isLoading: isLoadingAuthor } = hooks.useAvatar({ + id: author?.id, + size: ThumbnailSize.Small, + }); + + const memberIds: string[] = [ + ...new Set( + (memberships as List | undefined) + ?.filter( + ({ permission, memberId }) => + (permission === 'write' || permission === 'admin') && + memberId !== author?.id, + ) + ?.map(({ memberId }) => memberId), + ), + ]; + const { data: contributors, isLoading: isLoadingContributors } = + hooks.useMembers(memberIds); + + const isAnyLoading = + isLoadingItem || isLoading || isLoadingContributors || isLoadingAuthor; + + if (isAnyLoading) { + return ; + } + + if (!author && !isLoading) { + return null; + } + + const authorName = author?.name; + + return ( + // wrapper div is necessary for grid to apply +
+
+ + + {isLoading ? : authorName} + + + +
+
+ ); +}; + +export default Authorship; diff --git a/src/components/collection/Badges.js b/src/components/collection/Badges.js index d5fcf932..b9aa23c0 100644 --- a/src/components/collection/Badges.js +++ b/src/components/collection/Badges.js @@ -1,3 +1,4 @@ +import { useTheme } from '@emotion/react'; import truncate from 'lodash.truncate'; import PropTypes from 'prop-types'; @@ -5,7 +6,7 @@ import React, { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { Email, Facebook, Twitter } from '@mui/icons-material'; -import { Grid, IconButton } from '@mui/material'; +import { Grid, IconButton, useMediaQuery } from '@mui/material'; import { LIBRARY } from '@graasp/translations'; @@ -19,7 +20,7 @@ import BadgeContainer from '../common/BadgeContainer'; import FavoriteBadge from '../common/FavoriteBadge'; import VisibilityBadge from '../common/VisibilityBadge'; -function Badges({ views, likes, name, description }) { +const Badges = ({ views, likes, name, description }) => { const { t } = useTranslation(); const [pageLocation, setPageLocation] = useState(null); const parsedDescription = removeTagsFromString(description); @@ -49,30 +50,39 @@ function Badges({ views, likes, name, description }) { })} ${pageLocation}${MAIL_BREAK_LINE}${MAIL_BREAK_LINE}${parsedDescription}`; const mailString = `mailto:?subject=${subject}&body=${message}`; + const shouldShowLikesAndViews = likes !== undefined || views !== undefined; + + const theme = useTheme(); + const isSm = useMediaQuery(theme.breakpoints.down('sm')); + + const iconSize = isSm ? 'medium' : 'large'; + return ( - - - - - - + {shouldShowLikesAndViews && ( + + + + + + + )} - + - + - + ); -} +}; Badges.propTypes = { views: PropTypes.number, @@ -81,9 +91,4 @@ Badges.propTypes = { description: PropTypes.string.isRequired, }; -Badges.defaultProps = { - views: 0, - likes: 0, -}; - export default Badges; diff --git a/src/components/collection/ChildrenCard.js b/src/components/collection/ChildrenCard.js deleted file mode 100644 index c49ceabb..00000000 --- a/src/components/collection/ChildrenCard.js +++ /dev/null @@ -1,56 +0,0 @@ -import PropTypes from 'prop-types'; - -import React from 'react'; - -import CardActions from '@mui/material/CardActions'; -import CardContent from '@mui/material/CardContent'; -import Typography from '@mui/material/Typography'; - -import { buildCollectionRoute } from '../../config/routes'; -import CardMedia from '../common/CardMediaComponent'; -import { StyledCard } from '../common/StyledCard'; -import CopyButton from './CopyButton'; -import CopyLinkButton from './CopyLinkButton'; -import DownloadButton from './DownloadButton'; - -export const ChildrenCard = ({ item }) => { - const { name, id, extra } = item; - - const link = buildCollectionRoute(id); - - return ( - - - - - - {name} - - - - - - - - - - ); -}; - -ChildrenCard.propTypes = { - item: PropTypes.shape({ - description: PropTypes.string, - id: PropTypes.string, - name: PropTypes.string, - type: PropTypes.string, - extra: PropTypes.shape({}), - }).isRequired, -}; - -export default ChildrenCard; diff --git a/src/components/collection/ChildrenCard.tsx b/src/components/collection/ChildrenCard.tsx new file mode 100644 index 00000000..dda24b64 --- /dev/null +++ b/src/components/collection/ChildrenCard.tsx @@ -0,0 +1,206 @@ +import dynamic from 'next/dynamic'; +import { useRouter } from 'next/router'; + +import React, { useContext } from 'react'; +import { useTranslation } from 'react-i18next'; + +import { Folder, InsertDriveFile } from '@mui/icons-material'; +import { Grid, styled } from '@mui/material'; +import Box from '@mui/material/Box'; +import Typography from '@mui/material/Typography'; + +import { ItemRecord } from '@graasp/sdk/frontend'; +import { LIBRARY } from '@graasp/translations'; + +import { + DEFAULT_ITEM_IMAGE_PATH, + THUMBNAIL_SIZES, +} from '../../config/constants'; +import { COLLECTION_CARD_BORDER_RADIUS } from '../../config/cssStyles'; +import { buildCollectionRoute } from '../../config/routes'; +import { QueryClientContext } from '../QueryClientContext'; +import CopyButton from './CopyButton'; +import CopyLinkButton from './CopyLinkButton'; +import DownloadButton from './DownloadButton'; + +const { DateTime } = require('luxon'); + +const Thumbnail = dynamic( + () => import('@graasp/ui').then((mod) => mod.Thumbnail), + { ssr: false }, +); + +const StyleFolderBox = styled(Box)(() => ({ + border: '1px solid #ddd', + borderRadius: COLLECTION_CARD_BORDER_RADIUS, + overflow: 'hidden', + padding: 20, + '&:hover': { + cursor: 'pointer', + '& .actions': { + opacity: 1, + }, + }, + '& .actions': { + opacity: 0, + transition: '0.2s ease-in-out', + }, +})); + +const THUMBNAIL_SIZE = 50; +const THUMBNAIL_DIMENSIONS = { width: THUMBNAIL_SIZE, height: THUMBNAIL_SIZE }; + +type SubItemCardProps = { + item: ItemRecord; + thumbnail: React.ReactNode; + subtext: string; +}; + +export const SubItemCard: React.FC = ({ + item, + thumbnail, + subtext, +}) => { + const router = useRouter(); + + const { hooks } = useContext(QueryClientContext); + + const { data: member } = hooks.useCurrentMember(); + + const { name, id, extra } = item; + + const link = buildCollectionRoute(id); + + const onClick = () => { + router.push(link); + }; + + const forceShowActions = window && window.matchMedia('(hover: none)').matches; + + return ( + + + + {thumbnail} +
+ {member?.id && } + + +
+
+ + + {name} + + + + + {subtext} + + +
+
+ ); +}; + +type FileChildrenCardProps = { + item: ItemRecord; + lang?: string; +}; + +export const FileChildrenCard: React.FC = ({ + item, + lang, +}) => { + const { t } = useTranslation(); + + const { name, id } = item; + + const { hooks } = useContext(QueryClientContext); + + const { data: thumbnailData } = hooks.useItemThumbnail({ + id: item.id, + size: THUMBNAIL_SIZES.SMALL, + }); + + const subtext = item.updatedAt + ? t(LIBRARY.SUMMARY_BROWSE_FILE_UPDATED, { + date: DateTime.fromISO(item.updatedAt).toLocaleString( + DateTime.DATE_FULL, + { locale: lang }, + ), + }) + : '...'; + + const thumbnail = React.useMemo( + () => + thumbnailData ? ( + + } + alt={name} + useThumbnail={hooks.useItemThumbnail} + id={id} + thumbnailSrc={DEFAULT_ITEM_IMAGE_PATH} + sx={{ + objectFit: 'cover', + overflow: 'hidden', + borderRadius: 1, + ...THUMBNAIL_DIMENSIONS, + }} + /> + ) : ( +
+ +
+ ), + [thumbnailData], + ); + + return ; +}; + +type FolderChildrenCardProps = { + item: ItemRecord; +}; + +export const FolderChildrenCard: React.FC = ({ + item, +}) => { + const { t } = useTranslation(); + + const { id } = item; + + const { hooks } = useContext(QueryClientContext); + const { data: items } = hooks.useChildren(id); + + const subtext = items + ? t(LIBRARY.SUMMARY_BROWSE_FOLDER_CONTAINS, { count: items.size }) + : '...'; + + const thumbnail = ( +
+ +
+ ); + + return ; +}; diff --git a/src/components/collection/Collection.js b/src/components/collection/Collection.js index 598c9019..3b77917b 100644 --- a/src/components/collection/Collection.js +++ b/src/components/collection/Collection.js @@ -4,31 +4,22 @@ import PropTypes from 'prop-types'; import { validate } from 'uuid'; import React, { useContext } from 'react'; -import { useTranslation } from 'react-i18next'; -import PlayCircleOutlineIcon from '@mui/icons-material/PlayCircleOutline'; -import { Alert, Box, Button, Divider } from '@mui/material'; +import { Alert, Box } from '@mui/material'; import { Context } from '@graasp/sdk'; -import { LIBRARY } from '@graasp/translations'; -import { - DEFAULT_ITEM_IMAGE_PATH, - ITEM_TYPES, - buildPlayerViewItemRoute, -} from '../../config/constants'; +import { DEFAULT_ITEM_IMAGE_PATH } from '../../config/constants'; import { PUBLISHED_TAG_ID } from '../../config/env'; import { ERROR_INVALID_COLLECTION_ID_CODE, ERROR_UNEXPECTED_ERROR_CODE, } from '../../config/messages'; import { PLACEHOLDER_COLLECTION } from '../../utils/collections'; -import { openInNewTab } from '../../utils/helpers'; import { QueryClientContext } from '../QueryClientContext'; import Error from '../common/Error'; import Seo from '../common/Seo'; import useHeader from '../layout/useHeader'; -import Items from './Items'; import Summary from './Summary'; // todo: get similar collections in same call @@ -46,7 +37,6 @@ const { BuildIcon } = { }; const Collection = ({ id }) => { - const { t } = useTranslation(); const { hooks } = useContext(QueryClientContext); const { data: collection, @@ -108,22 +98,16 @@ const Collection = ({ id }) => { const imageUrl = DEFAULT_ITEM_IMAGE_PATH; const parsedDescription = collection?.description || ''; - const settings = collection?.settings; - - const type = collection?.type; - const handlePlay = () => { - openInNewTab(buildPlayerViewItemRoute(id)); - }; // todo: views don't exist - const views = collection?.views; const likes = likeCount; + return (
{ ) } - + - - - {type === ITEM_TYPES.FOLDER && ( - <> - - - - )} {/* */}
diff --git a/src/components/collection/CollectionCard.js b/src/components/collection/CollectionCard.js deleted file mode 100644 index 3204f514..00000000 --- a/src/components/collection/CollectionCard.js +++ /dev/null @@ -1,187 +0,0 @@ -import dynamic from 'next/dynamic'; -import PropTypes from 'prop-types'; - -import React, { useContext } from 'react'; -import { useTranslation } from 'react-i18next'; - -import InfoIcon from '@mui/icons-material/Info'; -import { - CardActions, - CardContent, - CardHeader, - IconButton, - Typography, - styled, -} from '@mui/material'; -import Skeleton from '@mui/material/Skeleton'; - -import { LIBRARY } from '@graasp/translations'; - -import { DEFAULT_MEMBER_THUMBNAIL } from '../../config/constants'; -import { COLLECTION_CARD_HEADER_SIZE } from '../../config/cssStyles'; -import { buildCollectionRoute } from '../../config/routes'; -import { QueryClientContext } from '../QueryClientContext'; -import CardMedia from '../common/CardMediaComponent'; -import { StyledCard } from '../common/StyledCard'; -import CopyButton from './CopyButton'; -import CopyLinkButton from './CopyLinkButton'; -import DownloadButton from './DownloadButton'; -import SimilarCollectionBadges from './SimilarCollectionBadges'; -import ViewButton from './ViewButton'; - -const Avatar = dynamic(() => import('@graasp/ui').then((mod) => mod.Avatar), { - ssr: false, -}); - -const StyledDescription = styled('p')(({ theme }) => ({ - margin: theme.spacing(1, 0), - overflow: 'hidden', - 'text-overflow': 'ellipsis', - display: '-webkit-box', - // number of lines to show - WebkitLineClamp: '2', - WebkitBoxOrient: 'vertical', - '& p': { - margin: theme.spacing(0), - }, - // hide long descriptions split into multiple paragraphs - '& p:nth-child(1n+2)': { - display: 'none', - }, -})); - -const StyledCardHeader = styled(CardHeader)(() => ({ - ' .MuiCardHeader-root': { - height: COLLECTION_CARD_HEADER_SIZE, - position: 'relative', - }, - '.MuiCardHeader-title': { - overflow: 'hidden', - textOverflow: 'ellipsis', - display: '-webkit-box', - // number of lines to show - '-webkit-line-clamp': '2', - '-webkit-box-orient': 'vertical', - }, - '.MuiCardHeader-subheader': { - textOverflow: 'ellipsis', - overflow: 'hidden', - whiteSpace: 'nowrap', - }, - '.MuiCardHeader-content': { - width: '65%', - }, -})); - -export const CollectionCard = ({ collection = {}, isLoading }) => { - const { name, id, description, creator, views, voteScore, extra } = - collection; - const { t } = useTranslation(); - const descriptionContent = - description || LIBRARY.COLLECTION_EMPTY_DESCRIPTION_TEXT; - const [flipped, setFlipped] = React.useState(false); - const { hooks } = useContext(QueryClientContext); - const { data: author } = hooks.useMember(creator); - - // toggle the value - const handleClick = () => { - setFlipped(!flipped); - }; - - const avatar = isLoading ? ( - - - - ) : ( - - ); - - const action = ( - <> - - - - - ); - - const link = buildCollectionRoute(id); - - return ( - - - {flipped ? ( - - - - - - ) : ( - - )} - - - - - - - - - ); -}; - -CollectionCard.propTypes = { - collection: PropTypes.shape({ - name: PropTypes.string, - id: PropTypes.string.isRequired, - image: PropTypes.shape({ - pictureId: PropTypes.string.isRequired, - thumbnailUrl: PropTypes.string, - }), - description: PropTypes.string, - author: PropTypes.shape({ - name: PropTypes.string, - image: PropTypes.shape({ - gravatarUrl: PropTypes.string, - thumbnailUrl: PropTypes.string, - }), - }), - voteScore: PropTypes.number, - views: PropTypes.number, - }).isRequired, - isLoading: PropTypes.bool, -}; - -CollectionCard.defaultProps = { - isLoading: false, -}; - -export default CollectionCard; diff --git a/src/components/collection/CollectionCard.tsx b/src/components/collection/CollectionCard.tsx new file mode 100644 index 00000000..93bb4d41 --- /dev/null +++ b/src/components/collection/CollectionCard.tsx @@ -0,0 +1,118 @@ +import dynamic from 'next/dynamic'; +import Link from 'next/link'; + +import React, { useContext } from 'react'; +import { useTranslation } from 'react-i18next'; + +import { + CardActionArea, + CardActions, + CardContent, + CardHeader, + Stack, + Typography, +} from '@mui/material'; + +import { ThumbnailSize } from '@graasp/sdk'; +import { ItemRecord } from '@graasp/sdk/frontend'; +import { LIBRARY } from '@graasp/translations'; + +import { DEFAULT_MEMBER_THUMBNAIL } from '../../config/constants'; +import { buildCollectionRoute } from '../../config/routes'; +import { buildCollectionCardGridId } from '../../config/selectors'; +import { QueryClientContext } from '../QueryClientContext'; +import CardMediaComponent from '../common/CardMediaComponent'; +import { StyledCard } from '../common/StyledCard'; +import ContentDescription from './ContentDescription'; +import CopyButton from './CopyButton'; +import CopyLinkButton from './CopyLinkButton'; +import DownloadButton from './DownloadButton'; +import SimilarCollectionBadges from './SimilarCollectionBadges'; + +const Avatar = dynamic(() => import('@graasp/ui').then((mod) => mod.Avatar), { + ssr: false, +}); + +type Props = { + collection: ItemRecord; +}; + +export const CollectionCard = ({ collection }: Props) => { + const { name, id, creator, description, extra } = collection; + const { t } = useTranslation(); + const { hooks } = useContext(QueryClientContext); + const { data: author } = hooks.useMember(creator); + const { data: member } = hooks.useCurrentMember(); + const { data: userAvatar, isLoading: isLoadingAvatar } = hooks.useAvatar({ + id: creator, + size: ThumbnailSize.Small, + }); + + const avatar = ( + + ); + + const link = buildCollectionRoute(id); + + return ( + + + + + {avatar} + {author?.name} + + } + sx={{ '.MuiCardHeader-content ': { minWidth: '0px' } }} + titleTypographyProps={{ + title: name, + noWrap: true, + }} + subheaderTypographyProps={{ + title: author?.name, + noWrap: true, + }} + /> + + + {description ? ( + + ) : ( + t(LIBRARY.COLLECTION_EMPTY_DESCRIPTION_TEXT) + )} + + + + + + {member?.id && } + + {/* // todo: need to implement views and voteScore */} + + + + ); +}; + +export default CollectionCard; diff --git a/src/components/collection/CollectionsGrid.js b/src/components/collection/CollectionsGrid.js deleted file mode 100644 index fb93a14e..00000000 --- a/src/components/collection/CollectionsGrid.js +++ /dev/null @@ -1,67 +0,0 @@ -import { List } from 'immutable'; -import PropTypes from 'prop-types'; - -import React from 'react'; -import { useTranslation } from 'react-i18next'; - -import Grid from '@mui/material/Grid'; -import Typography from '@mui/material/Typography'; - -import { LIBRARY } from '@graasp/translations'; - -import { buildCollectionCardGridId } from '../../config/selectors'; -import CollectionCard from './CollectionCard'; - -function CollectionsGrid({ collections, isLoading, id, sm, md, lg, xl }) { - const { t } = useTranslation(); - - return !collections?.size ? ( - - {t(LIBRARY.EMPTY_COLLECTION_MESSAGE)} - - ) : ( - - {collections?.map((collection, index) => ( - - - - ))} - - ); -} - -CollectionsGrid.propTypes = { - id: PropTypes.string, - collections: PropTypes.instanceOf(List), - isLoading: PropTypes.bool.isRequired, - sm: PropTypes.number, - md: PropTypes.number, - lg: PropTypes.number, - xl: PropTypes.number, -}; - -CollectionsGrid.defaultProps = { - id: '', - collections: [], - sm: 6, - md: 4, - lg: 3, - xl: 3, -}; - -export default CollectionsGrid; diff --git a/src/components/collection/CollectionsGrid.tsx b/src/components/collection/CollectionsGrid.tsx new file mode 100644 index 00000000..9a76a7b4 --- /dev/null +++ b/src/components/collection/CollectionsGrid.tsx @@ -0,0 +1,61 @@ +import { List } from 'immutable'; + +import React from 'react'; +import { useTranslation } from 'react-i18next'; + +import Container from '@mui/material/Container'; +import Skeleton from '@mui/material/Skeleton'; +import Typography from '@mui/material/Typography'; +import Grid from '@mui/material/Unstable_Grid2'; + +import { ItemRecord } from '@graasp/sdk/frontend'; +import { LIBRARY } from '@graasp/translations'; + +import { buildCollectionCardGridId } from '../../config/selectors'; +import CollectionCard from './CollectionCard'; + +type Props = { + collections: List; + isLoading: boolean; + id: string; +}; + +const CollectionsGrid = ({ collections, isLoading, id }: Props) => { + const { t } = useTranslation(); + + if (isLoading) { + return ; + } + + return !collections?.size ? ( + + {t(LIBRARY.EMPTY_COLLECTION_MESSAGE)} + + ) : ( + + + {collections?.map((collection) => ( + + + + ))} + + + ); +}; + +export default CollectionsGrid; diff --git a/src/components/collection/Comment.js b/src/components/collection/Comment.js index 7b46f76f..10ead27d 100644 --- a/src/components/collection/Comment.js +++ b/src/components/collection/Comment.js @@ -16,7 +16,7 @@ import { LIBRARY } from '@graasp/translations'; import { formatDate } from '../../utils/date'; import { getAvatar } from '../../utils/layout'; -function Comment({ comment, members }) { +const Comment = ({ comment, members }) => { const { content, author, published } = comment; const { t } = useTranslation(); @@ -64,7 +64,7 @@ function Comment({ comment, members }) { ); -} +}; Comment.propTypes = { comment: PropTypes.shape({ diff --git a/src/components/collection/Comments.js b/src/components/collection/Comments.js index 93eaadd5..03230d10 100644 --- a/src/components/collection/Comments.js +++ b/src/components/collection/Comments.js @@ -8,7 +8,7 @@ import List from '@mui/material/List'; import Comment from './Comment'; import CommentsHeader from './CommentsHeader'; -function Comments({ comments, members }) { +const Comments = ({ comments, members }) => { if (!comments || !comments.length) { return null; } @@ -34,7 +34,7 @@ function Comments({ comments, members }) { ); -} +}; Comments.propTypes = { comments: PropTypes.arrayOf( diff --git a/src/components/collection/CommentsHeader.js b/src/components/collection/CommentsHeader.js index f37d2d84..31c66b90 100644 --- a/src/components/collection/CommentsHeader.js +++ b/src/components/collection/CommentsHeader.js @@ -8,7 +8,7 @@ import { useTheme } from '@mui/material/styles'; import { LIBRARY } from '@graasp/translations'; -function CommentsHeader() { +const CommentsHeader = () => { const { t } = useTranslation(); const theme = useTheme(); return ( @@ -27,6 +27,6 @@ function CommentsHeader() { ); -} +}; export default CommentsHeader; diff --git a/src/components/collection/ContentDescription.tsx b/src/components/collection/ContentDescription.tsx new file mode 100644 index 00000000..f6d3acc8 --- /dev/null +++ b/src/components/collection/ContentDescription.tsx @@ -0,0 +1,60 @@ +import { Interweave } from 'interweave'; + +import React from 'react'; + +import Box from '@mui/material/Box'; + +type CollapsibleDescriptionProps = { + collapsed: boolean; + numberOfLinesToShow?: number; + children: JSX.Element; +}; + +export const CollapsibleDescription = ({ + collapsed, + numberOfLinesToShow = 1, + children, +}: CollapsibleDescriptionProps) => + collapsed ? ( + p': { + margin: 0, + }, + }} + > + {children} + + ) : ( + children + ); + +type Props = { + content: string; + collapsed?: CollapsibleDescriptionProps['collapsed']; + numberOfLinesToShow?: CollapsibleDescriptionProps['numberOfLinesToShow']; +}; + +const ContentDescription = ({ + content, + collapsed = true, + numberOfLinesToShow, +}: Props): JSX.Element => ( + + (collapsed ? [arr.join(' ')] : arr)} + // disable html output when description is collapsed + noHtml={collapsed} + /> + +); +export default ContentDescription; diff --git a/src/components/collection/Contributors.js b/src/components/collection/Contributors.tsx similarity index 58% rename from src/components/collection/Contributors.js rename to src/components/collection/Contributors.tsx index 0fa4f004..84533350 100644 --- a/src/components/collection/Contributors.js +++ b/src/components/collection/Contributors.tsx @@ -1,18 +1,23 @@ import { List } from 'immutable'; -import PropTypes from 'prop-types'; import React from 'react'; import { useTranslation } from 'react-i18next'; import AvatarGroup from '@mui/lab/AvatarGroup'; -import { Avatar, Tooltip, Typography } from '@mui/material'; +import { Avatar, Stack, Tooltip, Typography } from '@mui/material'; +import { MemberRecord } from '@graasp/sdk/frontend'; import { LIBRARY } from '@graasp/translations'; import { buildContributorId } from '../../config/selectors'; import { getAvatar } from '../../utils/layout'; -function Contributors({ contributors, displayContributors }) { +type Props = { + contributors: List; + displayContributors: boolean; +}; + +const Contributors = ({ contributors, displayContributors }: Props) => { const { t } = useTranslation(); if (!contributors || contributors.isEmpty()) { @@ -24,22 +29,18 @@ function Contributors({ contributors, displayContributors }) { } return ( - <> - + + {t(LIBRARY.CONTRIBUTORS_TITLE)} {contributors.map((contributor) => { - const { - id, - name: contributorName, - image: contributorAvatar, - } = contributor; - const avatar = getAvatar(contributorAvatar); + const { id, name: contributorName } = contributor; + // todo: get avatar url + const avatar = getAvatar(undefined); return ( - + - + ); -} - -Contributors.propTypes = { - contributors: PropTypes.instanceOf(List), - displayContributors: PropTypes.bool.isRequired, -}; - -Contributors.defaultProps = { - contributors: List(), }; export default Contributors; diff --git a/src/components/collection/CopyButton.js b/src/components/collection/CopyButton.js index 61d89e22..c404d284 100644 --- a/src/components/collection/CopyButton.js +++ b/src/components/collection/CopyButton.js @@ -1,6 +1,6 @@ import PropTypes from 'prop-types'; -import React, { useContext, useEffect, useState } from 'react'; +import React, { useContext, useState } from 'react'; import { useTranslation } from 'react-i18next'; import FileCopyIcon from '@mui/icons-material/FileCopy'; @@ -17,47 +17,23 @@ import { TREE_MODAL_SHARED_ITEMS_ID, } from '../../config/selectors'; import { QueryClientContext } from '../QueryClientContext'; -import { LoginModalContext } from '../common/SignInModalContext'; import TreeModal from './TreeModal'; -const CopyButton = ({ id }) => { +export const useCopyAction = (itemId) => { const { t } = useTranslation(); + const [showTreeModal, setShowTreeModal] = useState(false); const { hooks, useMutation } = useContext(QueryClientContext); - const { data: user, isLoading } = hooks.useCurrentMember(); + const { data: user } = hooks.useCurrentMember(); const { mutate: copyItem, isLoading: isCopying } = useMutation( MUTATION_KEYS.COPY_PUBLIC_ITEM, ); - const { setOpen: setShowLoginModal, open: showLoginModal } = - useContext(LoginModalContext); - - useEffect(() => { - // if the user signs in while the login modal is open - // switch to copy modal - if (showLoginModal && !user?.id) { - setShowLoginModal(false); - setShowTreeModal(true); - } - // if user signs out while copying - // show login modal instead - else if (showTreeModal && !user?.id) { - setShowLoginModal(true); - setShowTreeModal(false); - } - }, [user]); - - if (isLoading) { - return null; - } - - const onClick = () => { - // show item tree, otherwise display sign in modal if the user is not signed in + const startCopy = (event) => { if (user?.id) { setShowTreeModal(true); - } else { - setShowLoginModal(true); } + event.stopPropagation(); }; // todo: set notifier for copy @@ -65,7 +41,7 @@ const CopyButton = ({ id }) => { // remove loading icon on callback // do not set parent if it is root copyItem({ - id, + itemId, to: [ ROOT_ID, TREE_MODAL_MY_ITEMS_ID, @@ -76,15 +52,37 @@ const CopyButton = ({ id }) => { }); }; + const treeModal = user?.id && ( + setShowTreeModal(false)} + onConfirm={copy} + itemIds={[itemId]} + /> + ); + + return { + treeModal, + startCopy, + isCopying, + }; +}; + +const CopyButton = ({ id }) => { + const { t } = useTranslation(); + + const { treeModal, isCopying, startCopy } = useCopyAction(id); + const renderButton = () => { if (isCopying) { - return ; + return ; } return ( - + @@ -96,15 +94,7 @@ const CopyButton = ({ id }) => { return ( <> {renderButton()} - {user?.id && ( - setShowTreeModal(false)} - onConfirm={copy} - itemIds={[id]} - /> - )} + {treeModal} ); }; diff --git a/src/components/collection/CopyLinkButton.js b/src/components/collection/CopyLinkButton.js index 22826ac1..a7ed30b3 100644 --- a/src/components/collection/CopyLinkButton.js +++ b/src/components/collection/CopyLinkButton.js @@ -17,12 +17,10 @@ import { copyToClipboard } from '../../utils/clipboard'; export const buildPlayerLink = (id) => `${GRAASP_PERFORM_HOST}/${id}`; -const CopyLinkButton = ({ id, extra }) => { - const { t } = useTranslation(); - - const onClick = () => { +export const useEmbedAction = (itemId, extra) => { + const startEmbed = (event) => { const link = - extra?.embeddedLink?.url ?? extra?.app?.url ?? buildPlayerLink(id); + extra?.embeddedLink?.url ?? extra?.app?.url ?? buildPlayerLink(itemId); copyToClipboard(link, { onSuccess: () => { @@ -38,12 +36,23 @@ const CopyLinkButton = ({ id, extra }) => { }); }, }); + + event.stopPropagation(); + }; + return { + startEmbed, }; +}; + +const CopyLinkButton = ({ id, extra }) => { + const { t } = useTranslation(); + + const { startEmbed } = useEmbedAction(id, extra); return ( - + diff --git a/src/components/collection/DownloadButton.js b/src/components/collection/DownloadButton.js index 4d166ba6..14f8d99a 100644 --- a/src/components/collection/DownloadButton.js +++ b/src/components/collection/DownloadButton.js @@ -16,8 +16,7 @@ const { GraaspDownloadButton } = { ), }; -const DownloadButton = ({ id }) => { - const { t } = useTranslation(); +export const useDownloadAction = (itemId) => { const { useMutation } = useContext(QueryClientContext); const { mutate: exportZip, @@ -31,20 +30,32 @@ const DownloadButton = ({ id }) => { const url = window.URL.createObjectURL(new Blob([data])); const link = document.createElement('a'); link.href = url; - link.setAttribute('download', `${id}.zip`); + link.setAttribute('download', `${itemId}.zip`); document.body.appendChild(link); link.click(); } }, [data, isSuccess]); - const handleDownload = () => { - exportZip({ id }); + const startDownload = () => { + exportZip({ id: itemId }); }; + return { + startDownload, + isDownloading: isLoading, + }; +}; + +const DownloadButton = ({ id }) => { + const { t } = useTranslation(); + + const { isDownloading, startDownload } = useDownloadAction(id); + return ( e.stopPropagation()} + isLoading={isDownloading} + handleDownload={startDownload} title={t(LIBRARY.DOWNLOAD_BUTTON_TOOLTIP)} /> ); diff --git a/src/components/collection/ItemBreadcrumb.tsx b/src/components/collection/ItemBreadcrumb.tsx new file mode 100644 index 00000000..904244f8 --- /dev/null +++ b/src/components/collection/ItemBreadcrumb.tsx @@ -0,0 +1,63 @@ +import Link from 'next/link'; + +import React, { useContext } from 'react'; + +import { Breadcrumbs, Button, Typography } from '@mui/material'; + +import { ItemRecord, ItemTagRecord } from '@graasp/sdk/frontend'; + +import { PUBLISHED_TAG_ID } from '../../config/env'; +import { buildCollectionRoute } from '../../config/routes'; +import { QueryClientContext } from '../QueryClientContext'; + +const getPublicParents = (publicParentPath: string, itemPath: string) => { + // Converts the path to an array and removes the current element from it. + const allParents = itemPath.split('.').slice(0, -1); + // Public parent is the last element of publicParentPath. + const publicParent = publicParentPath.split('.').pop(); + // Filters out all items before publicParent. + const publicParentIndex = allParents.findIndex((id) => id === publicParent); + return publicParentIndex < 0 + ? [] + : allParents.slice(publicParentIndex).map((id) => id.replaceAll('_', '-')); +}; + +type ItemBreadcrumbProps = { + itemId: string; +}; + +const ItemBreadcrumb: React.FC = ({ itemId }) => { + const { hooks } = useContext(QueryClientContext); + + const { data: item } = hooks.useItem(itemId); + + const { data: tags } = hooks.useItemTags(itemId); + + const topPublicParentPath = tags?.find( + (t: ItemTagRecord) => t.tagId === PUBLISHED_TAG_ID, + )?.itemPath; + + const publicParentsIds = getPublicParents( + topPublicParentPath ?? '', + item?.path ?? '', + ); + + const { data: parents } = hooks.useItems(publicParentsIds); + + if (!parents?.size) { + return null; + } + + return ( + + {parents.map((parent: ItemRecord) => ( + + ))} + {item?.name} + + ); +}; + +export default ItemBreadcrumb; diff --git a/src/components/collection/Items.js b/src/components/collection/Items.js deleted file mode 100644 index 73b22049..00000000 --- a/src/components/collection/Items.js +++ /dev/null @@ -1,51 +0,0 @@ -import { List } from 'immutable'; -import PropTypes from 'prop-types'; - -import React, { useContext } from 'react'; -import { useTranslation } from 'react-i18next'; - -import Grid from '@mui/material/Grid'; -import Typography from '@mui/material/Typography'; - -import { LIBRARY } from '@graasp/translations'; - -import { CHILDREN_ITEMS_GRID_ID } from '../../config/selectors'; -import { PLACEHOLDER_COLLECTION } from '../../utils/collections'; -import { QueryClientContext } from '../QueryClientContext'; -import { ChildrenCard } from './ChildrenCard'; -import ItemsHeader from './ItemsHeader'; - -function Items({ parentId }) { - const { t } = useTranslation(); - const { hooks } = useContext(QueryClientContext); - const { data: items } = hooks.useChildren(parentId, { - placeholderData: List(PLACEHOLDER_COLLECTION.children), - }); - - return ( -
- - {!items?.size ? ( -
- - {t(LIBRARY.COLLECTION_ITEMS_EMPTY_MESSAGE)} - -
- ) : ( - - {items.map((item) => ( - - - - ))} - - )} -
- ); -} - -Items.propTypes = { - parentId: PropTypes.string.isRequired, -}; - -export default Items; diff --git a/src/components/collection/Items.tsx b/src/components/collection/Items.tsx new file mode 100644 index 00000000..775e24ae --- /dev/null +++ b/src/components/collection/Items.tsx @@ -0,0 +1,157 @@ +import { List } from 'immutable'; + +import React, { useContext, useState } from 'react'; +import { useTranslation } from 'react-i18next'; + +import { Add, Remove } from '@mui/icons-material'; +import { Button, Grow, useMediaQuery, useTheme } from '@mui/material'; +import Box from '@mui/material/Box/Box'; +import Grid from '@mui/material/Grid'; +import Typography from '@mui/material/Typography'; + +import { ItemRecord } from '@graasp/sdk/frontend'; +import { LIBRARY } from '@graasp/translations'; + +import { ITEM_TYPES } from '../../config/constants'; +import { CHILDREN_ITEMS_GRID_ID } from '../../config/selectors'; +import { PLACEHOLDER_COLLECTION } from '../../utils/collections'; +import { QueryClientContext } from '../QueryClientContext'; +import { FileChildrenCard, FolderChildrenCard } from './ChildrenCard'; + +const DEFAULT_ITEM_SHOWN_COUNT = { + xs: 4, + sm: 4, + md: 6, + lg: 6, + xl: 8, +}; + +type CollapsibleItemCategoryProps = { + items: Immutable.List; + defaultItemCount: number; + children: (item: ItemRecord) => JSX.Element; +}; + +const CollapsibleItemCategory: React.FC = ({ + items, + children, + defaultItemCount, +}) => { + const { t } = useTranslation(); + + const [showMoreItems, setShowMoreItems] = useState(false); + + const shownItems = React.useMemo(() => { + if (showMoreItems) { + return items; + } + return items.slice(0, defaultItemCount); + }, [items, showMoreItems, defaultItemCount]); + + const handleShowMoreItems = () => { + setShowMoreItems((prevValue) => !prevValue); + }; + + const additionalItemsCount = items.size - defaultItemCount; + + return ( + <> + + {items.size > defaultItemCount && ( + + )} + + + {shownItems.map((item) => ( + + + {children(item)} + + + ))} + + + ); +}; + +type ItemsProps = { + parentId: string; + lang: string | undefined; + isTopLevel: boolean; +}; + +const Items: React.FC = ({ parentId, lang, isTopLevel }) => { + const { t } = useTranslation(); + const { hooks } = useContext(QueryClientContext); + const { data: items } = hooks.useChildren(parentId, { + placeholderData: List(PLACEHOLDER_COLLECTION.children), + }); + + const theme = useTheme(); + + const extraSmall = useMediaQuery(theme.breakpoints.down('sm')); + const small = useMediaQuery(theme.breakpoints.down('md')); + const medium = useMediaQuery(theme.breakpoints.down('lg')); + const large = useMediaQuery(theme.breakpoints.down('xl')); + + const itemToShow = React.useMemo(() => { + if (extraSmall) { + return DEFAULT_ITEM_SHOWN_COUNT.xs; + } + if (small) { + return DEFAULT_ITEM_SHOWN_COUNT.sm; + } + if (medium) { + return DEFAULT_ITEM_SHOWN_COUNT.md; + } + if (large) { + return DEFAULT_ITEM_SHOWN_COUNT.lg; + } + return DEFAULT_ITEM_SHOWN_COUNT.xl; + }, [extraSmall, small, medium, large]); + + const emptyMessage = isTopLevel + ? t(LIBRARY.COLLECTION_ITEMS_EMPTY_MESSAGE) + : t(LIBRARY.COLLECTION_ITEMS_EMPTY_FOLDER_MESSAGE); + + return ( +
+ + {t(LIBRARY.SUMMARY_CONTENT_TITLE)} + + + {!items?.size ? ( +
+ + {emptyMessage} + +
+ ) : ( + items.size > 0 && ( + + {(item) => + item.type === ITEM_TYPES.FOLDER ? ( + + ) : ( + + ) + } + + ) + )} +
+ ); +}; + +export default Items; diff --git a/src/components/collection/ItemsHeader.js b/src/components/collection/ItemsHeader.js deleted file mode 100644 index b244ec75..00000000 --- a/src/components/collection/ItemsHeader.js +++ /dev/null @@ -1,30 +0,0 @@ -import React from 'react'; -import { useTranslation } from 'react-i18next'; - -import { Info } from '@mui/icons-material'; -import { Box, Tooltip, Typography } from '@mui/material'; -import Grid from '@mui/material/Grid'; - -import { LIBRARY } from '@graasp/translations'; - -function ItemsHeader() { - const { t } = useTranslation(); - return ( - - - - - {t(LIBRARY.COLLECTION_ITEMS_TITLE)} - - - - - - - - - - ); -} - -export default ItemsHeader; diff --git a/src/components/collection/SimilarCollectionBadges.js b/src/components/collection/SimilarCollectionBadges.js index ee082feb..dc64b919 100644 --- a/src/components/collection/SimilarCollectionBadges.js +++ b/src/components/collection/SimilarCollectionBadges.js @@ -9,7 +9,7 @@ import Badge from '@mui/material/Badge'; import BadgeContainer from '../common/BadgeContainer'; import VisibilityBadge from '../common/VisibilityBadge'; -function SimilarCollectionBadges({ views, voteScore }) { +const SimilarCollectionBadges = ({ views, voteScore }) => { const voteScoreBadge = voteScore ? ( @@ -28,7 +28,7 @@ function SimilarCollectionBadges({ views, voteScore }) { ); -} +}; SimilarCollectionBadges.propTypes = { voteScore: PropTypes.number, diff --git a/src/components/collection/SimilarCollections.js b/src/components/collection/SimilarCollections.js index 16284df2..bb253b38 100644 --- a/src/components/collection/SimilarCollections.js +++ b/src/components/collection/SimilarCollections.js @@ -7,14 +7,12 @@ import { Box } from '@mui/material'; import CollectionsGrid from './CollectionsGrid'; import SimilarCollectionsHeader from './SimilarCollectionsHeader'; -function SimilarCollections({ similarCollections }) { - return ( - - - - - ); -} +const SimilarCollections = ({ similarCollections }) => ( + + + + +); SimilarCollections.propTypes = { similarCollections: PropTypes.arrayOf( diff --git a/src/components/collection/SimilarCollectionsHeader.js b/src/components/collection/SimilarCollectionsHeader.js index 45f3aa18..190942ee 100644 --- a/src/components/collection/SimilarCollectionsHeader.js +++ b/src/components/collection/SimilarCollectionsHeader.js @@ -7,7 +7,7 @@ import Grid from '@mui/material/Grid'; import { LIBRARY } from '@graasp/translations'; -function SimilarCollectionsHeader() { +const SimilarCollectionsHeader = () => { const { t } = useTranslation(); return ( @@ -30,6 +30,6 @@ function SimilarCollectionsHeader() { ); -} +}; export default SimilarCollectionsHeader; diff --git a/src/components/collection/Summary.js b/src/components/collection/Summary.js deleted file mode 100644 index aa0e3a7c..00000000 --- a/src/components/collection/Summary.js +++ /dev/null @@ -1,383 +0,0 @@ -import { Map } from 'immutable'; -import truncate from 'lodash.truncate'; -import { DateTime } from 'luxon'; -import dynamic from 'next/dynamic'; -import PropTypes from 'prop-types'; - -import React, { useContext, useState } from 'react'; -import { useTranslation } from 'react-i18next'; - -import { Chip, Grid, Typography } from '@mui/material'; -import Skeleton from '@mui/material/Skeleton'; -import { styled } from '@mui/material/styles'; - -import { MUTATION_KEYS } from '@graasp/query-client'; -import { LIBRARY } from '@graasp/translations'; - -import { - CATEGORY_COLORS, - CATEGORY_TYPES, - MAX_COLLECTION_NAME_LENGTH, - THUMBNAIL_SIZES, -} from '../../config/constants'; -import { - ITEM_SUMMARY_TITLE_ID, - SUMMARY_CATEGORIES_CONTAINER_ID, - SUMMARY_CC_LICENSE_CONTAINER_ID, - SUMMARY_CREATED_AT_CONTAINER_ID, - SUMMARY_LANGUAGES_CONTAINER_ID, - SUMMARY_LAST_UPDATE_CONTAINER_ID, - SUMMARY_TAGS_CONTAINER_ID, -} from '../../config/selectors'; -import { compare } from '../../utils/helpers'; -import { QueryClientContext } from '../QueryClientContext'; -import CardMedia from '../common/CardMediaComponent'; -import { StyledCard } from '../common/StyledCard'; -import Authorship from './Authorship'; -import Badges from './Badges'; - -const { - ItemFlagDialog, - FlagItemButton, - FavoriteButton, - LikeButton, - CCLicenseIcon, -} = { - ItemFlagDialog: dynamic( - () => import('@graasp/ui').then((mod) => mod.ItemFlagDialog), - { ssr: false }, - ), - FlagItemButton: dynamic( - () => import('@graasp/ui').then((mod) => mod.FlagItemButton), - { ssr: false }, - ), - FavoriteButton: dynamic( - () => import('@graasp/ui').then((mod) => mod.FavoriteButton), - { ssr: false }, - ), - LikeButton: dynamic( - () => import('@graasp/ui').then((mod) => mod.LikeButton), - { ssr: false }, - ), - CCLicenseIcon: dynamic( - () => import('@graasp/ui').then((mod) => mod.CCLicenseIcon), - { ssr: false }, - ), -}; - -const StyledCardMedia = styled(CardMedia)(() => ({ - width: '100%', - height: '500px !important', -})); - -function Summary({ - itemId, - name, - creator, - description, - settings, - likes, - views, - isLoading, - createdAt, - lastUpdate, -}) { - const truncatedName = truncate(name, { - length: MAX_COLLECTION_NAME_LENGTH, - separator: /,? +/, - }); - const tags = settings?.tags; - const ccLicenseAdaption = settings?.ccLicenseAdaption; - const { t } = useTranslation(); - const { hooks, useMutation } = useContext(QueryClientContext); - const { data: categoryTypes } = hooks.useCategoryTypes(); - const { data: itemCategories } = hooks.useItemCategories(itemId); - const { data: categories } = hooks.useCategories(); - const selectedCategories = categories - ?.filter((category) => - itemCategories?.map((entry) => entry.categoryId)?.includes(category.id), - ) - ?.groupBy((entry) => entry.type); - const levels = selectedCategories?.get( - categoryTypes?.find((type) => type.name === CATEGORY_TYPES.LEVEL)?.id, - ); - const disciplines = selectedCategories - ?.get( - categoryTypes?.find((type) => type.name === CATEGORY_TYPES.DISCIPLINE) - ?.id, - ) - ?.sort(compare); - const languages = selectedCategories?.get( - categoryTypes?.find((type) => type.name === CATEGORY_TYPES.LANGUAGE)?.id, - ); - - const { data: member } = hooks.useCurrentMember(); - const { data: likedItems } = hooks.useLikedItems(member?.get('id')); - - const { mutate: postFlagItem } = useMutation(MUTATION_KEYS.POST_ITEM_FLAG); - const { mutate: addFavoriteItem } = useMutation( - MUTATION_KEYS.ADD_FAVORITE_ITEM, - ); - const { mutate: deleteFavoriteItem } = useMutation( - MUTATION_KEYS.DELETE_FAVORITE_ITEM, - ); - const { mutate: postItemLike } = useMutation(MUTATION_KEYS.POST_ITEM_LIKE); - const { mutate: deleteItemLike } = useMutation( - MUTATION_KEYS.DELETE_ITEM_LIKE, - ); - - const [open, setOpen] = useState(false); - const [selectedFlag, setSelectedFlag] = useState(false); - - const { data: flags } = hooks.useFlags(); - - const isFavorite = member?.extra?.favoriteItems?.includes(itemId); - - const likeEntry = likedItems?.find((itemLike) => itemLike?.itemId === itemId); - - const { id: memberId, extra: memberExtra } = member || {}; - - const onFlag = () => { - postFlagItem({ - flagId: selectedFlag.id, - itemId, - }); - setOpen(false); - }; - - const handleFavorite = () => { - addFavoriteItem({ - memberId, - extra: memberExtra, - itemId, - }); - }; - - const handleUnfavorite = () => { - deleteFavoriteItem({ - memberId, - extra: memberExtra, - itemId, - }); - }; - - const handleLike = () => { - postItemLike({ - itemId, - memberId, - }); - }; - - const handleUnlike = () => { - deleteItemLike({ - id: likeEntry?.id, - itemId, - memberId, - }); - }; - - return ( -
- - - - {isLoading ? ( - - - - ) : ( - - )} - - - - - - - {truncatedName} - - - - - - - - - - - {isLoading ? ( - - ) : ( -
- )} - - - {createdAt && ( -
- - Created At - - - {DateTime.fromISO(createdAt).toLocaleString( - DateTime.DATE_FULL, - { locale: member?.extra?.lang }, - )} - -
- )} - {lastUpdate && ( -
- - Last Update - - - {DateTime.fromISO(lastUpdate).toLocaleString( - DateTime.DATE_FULL, - { locale: member?.extra?.lang }, - )} - -
- )} - - - {languages && ( -
- - {t(LIBRARY.COLLECTION_LANGUAGES_TITLE)} - - {languages?.map((entry) => ( - - ))} -
- )} - {(levels || disciplines) && ( -
- - {t(LIBRARY.COLLECTION_CATEGORIES_TITLE)} - - {levels?.map((entry) => ( - - ))} - {disciplines?.map((entry) => ( - - ))} -
- )} - {Boolean(tags?.size) && ( -
- - {t(LIBRARY.COLLECTION_TAGS_TITLE)} - - {tags?.map((text) => ( - - ))} -
- )} - {ccLicenseAdaption && ( -
- - {t(LIBRARY.COLLECTION_CC_LICENSE_TITLE)} - - -
- )} - - -
- ); -} - -Summary.propTypes = { - name: PropTypes.string, - description: PropTypes.string, - settings: PropTypes.shape({ - tags: PropTypes.arrayOf(PropTypes.string), - ccLicenseAdaption: PropTypes.string, - }), - creator: PropTypes.instanceOf(Map), - likes: PropTypes.number, - views: PropTypes.number, - rating: PropTypes.shape({ - value: PropTypes.number, - count: PropTypes.number, - }), - isLoading: PropTypes.bool.isRequired, - itemId: PropTypes.string.isRequired, - createdAt: PropTypes.string.isRequired, - lastUpdate: PropTypes.string.isRequired, -}; - -Summary.defaultProps = { - name: PropTypes.string, - description: PropTypes.string, - settings: {}, - views: 0, - likes: 0, - rating: { - count: 0, - value: 0, - }, - creator: null, -}; - -export default Summary; diff --git a/src/components/collection/Summary.tsx b/src/components/collection/Summary.tsx new file mode 100644 index 00000000..31ef7f15 --- /dev/null +++ b/src/components/collection/Summary.tsx @@ -0,0 +1,179 @@ +import truncate from 'lodash.truncate'; + +import React, { useContext } from 'react'; +import { useTranslation } from 'react-i18next'; + +import { Typography } from '@mui/material'; +import Box from '@mui/material/Box'; +import Container from '@mui/material/Container'; + +import { Category, CategoryType, ItemCategory } from '@graasp/sdk'; +import { ItemRecord, MemberRecord } from '@graasp/sdk/frontend'; +import { LIBRARY } from '@graasp/translations'; + +import { + CATEGORY_TYPES, + ITEM_TYPES, + MAX_COLLECTION_NAME_LENGTH, +} from '../../config/constants'; +import { compare } from '../../utils/helpers'; +import { QueryClientContext } from '../QueryClientContext'; +import ItemBreadcrumb from './ItemBreadcrumb'; +import Items from './Items'; +import SummaryDetails from './SummaryDetails'; +import SummaryHeader from './SummaryHeader'; + +export const getParentsIdsFromPath = ( + path: string, + { ignoreSelf = false } = {}, +) => { + if (!path) { + return []; + } + + let p = path; + // ignore self item in path + if (ignoreSelf) { + // split path in half parents / self + // eslint-disable-next-line no-useless-escape + const els = path.split(/\.[^\.]*$/); + // if els has only one element, the item has no parent + if (els.length <= 1) { + return []; + } + [p] = els; + } + const ids = p.replace(/_/g, '-').split('.'); + return ids; +}; + +type SummaryProps = { + collection: ItemRecord; + creator: MemberRecord; + likes: number; + isLoading: boolean; + views: number; +}; + +const Summary: React.FC = ({ + collection, + likes = 0, + views = 0, + isLoading, + creator, +}) => { + const { t } = useTranslation(); + + const { + id: itemId, + name = '', + description, + settings, + createdAt, + updatedAt: lastUpdate, + extra, + type, + path, + } = collection; + + const truncatedName = truncate(name, { + length: MAX_COLLECTION_NAME_LENGTH, + separator: /,? +/, + }); + const tags = settings?.tags as any; + + const { hooks } = useContext(QueryClientContext); + + const parents = getParentsIdsFromPath(path); + + const { data: topLevelParent } = hooks.useItem(parents[0] ?? itemId); + + const { data: categoryTypes } = hooks.useCategoryTypes(); + const { data: itemCategories } = hooks.useItemCategories( + topLevelParent?.id ?? itemId, + ); + const { data: categories } = hooks.useCategories(); + + const selectedCategories = categories + ?.filter((category: Category) => + itemCategories + ?.map((entry: ItemCategory) => entry.categoryId) + ?.includes(category.id), + ) + ?.groupBy((entry: Category) => entry.type); + + const levels = selectedCategories?.get( + categoryTypes?.find( + (ctype: CategoryType) => ctype.name === CATEGORY_TYPES.LEVEL, + )?.id ?? '', + ); + const disciplines = selectedCategories + ?.get( + categoryTypes?.find( + (ctype: CategoryType) => ctype.name === CATEGORY_TYPES.DISCIPLINE, + )?.id ?? '', + ) + ?.sort(compare); + const languages = selectedCategories?.get( + categoryTypes?.find( + (ctype: CategoryType) => ctype.name === CATEGORY_TYPES.LANGUAGE, + )?.id ?? '', + ); + + const ccLicenseAdaption = topLevelParent + ? topLevelParent.settings?.ccLicenseAdaption + : settings?.ccLicenseAdaption; + + const { data: member } = hooks.useCurrentMember(); + + return ( +
+ + + + + {type === ITEM_TYPES.FOLDER && ( + <> + + + + + + )} + + + + {t(LIBRARY.SUMMARY_DETAILS_TITLE)} + + + +
+ ); +}; + +export default Summary; diff --git a/src/components/collection/SummaryActionButtons.tsx b/src/components/collection/SummaryActionButtons.tsx new file mode 100644 index 00000000..7af15358 --- /dev/null +++ b/src/components/collection/SummaryActionButtons.tsx @@ -0,0 +1,165 @@ +import React, { useState } from 'react'; +import { useTranslation } from 'react-i18next'; + +import { Code, CopyAll, Download, MoreVert } from '@mui/icons-material'; +import PlayCircleOutlineIcon from '@mui/icons-material/PlayCircleOutline'; +import { + Button, + ButtonGroup, + CircularProgress, + ClickAwayListener, + Grow, + Popper, + styled, +} from '@mui/material'; + +import { UnknownExtra } from '@graasp/sdk'; +import { LIBRARY } from '@graasp/translations'; + +import { buildPlayerViewItemRoute } from '../../config/constants'; +import { openInNewTab } from '../../utils/helpers'; +import { useCopyAction } from './CopyButton'; +import { useEmbedAction } from './CopyLinkButton'; +import { useDownloadAction } from './DownloadButton'; + +const StyledButton = styled(Button)(() => ({ + color: '#504FD2', + border: '1px solid #eee !important', +})); + +type SummaryActionButtonsProps = { + itemId: string; + isLogged: boolean; + extra: UnknownExtra | undefined; +}; + +const SummaryActionButtons: React.FC = ({ + itemId, + isLogged, + extra, +}) => { + const { t } = useTranslation(); + + const { isCopying, startCopy, treeModal } = useCopyAction(itemId); + + const { startDownload } = useDownloadAction(itemId); + + const { startEmbed } = useEmbedAction(itemId, extra); + + const [open, setOpen] = useState(false); + const anchorRef = React.useRef(null); + + const handleToggle = () => { + setOpen((prevOpen) => !prevOpen); + }; + + const handleClose = (event: Event) => { + if ( + anchorRef.current && + anchorRef.current.contains(event.target as HTMLElement) + ) { + return; + } + + setOpen(false); + }; + + const handlePlay = () => { + openInNewTab(buildPlayerViewItemRoute(itemId)); + }; + + return ( + <> + + + + + + {({ TransitionProps, placement }) => ( + +
+ + + } + > + {t(LIBRARY.SUMMARY_ACTIONS_DOWNLOAD)} + + {isLogged && ( + + ) : ( + + ) + } + > + {t(LIBRARY.SUMMARY_ACTIONS_COPY)} + + )} + } + > + {t(LIBRARY.SUMMARY_ACTIONS_EMBED)} + + + +
+
+ )} +
+ {treeModal} + + ); +}; + +export default SummaryActionButtons; diff --git a/src/components/collection/SummaryDescription.tsx b/src/components/collection/SummaryDescription.tsx new file mode 100644 index 00000000..c657d378 --- /dev/null +++ b/src/components/collection/SummaryDescription.tsx @@ -0,0 +1,88 @@ +import React, { useState } from 'react'; +import { useTranslation } from 'react-i18next'; + +import { Box, Button, Skeleton, Typography } from '@mui/material'; + +import { LIBRARY } from '@graasp/translations'; + +import ContentDescription from './ContentDescription'; + +export const CollapsibleDescription = ({ + collapsed, + numberOfLinesToShow = 1, + children, +}: { + collapsed: boolean; + numberOfLinesToShow?: number; + children: JSX.Element; +}) => + collapsed ? ( + p': { + margin: 0, + }, + }} + > + {children} + + ) : ( + children + ); + +type DescriptionProps = { + isLoading: boolean; + description: string | null; +}; + +const Description: React.FC = ({ + description, + isLoading, +}) => { + const { t } = useTranslation(); + + const [collapsedDescription, setCollapsedDescription] = useState(true); + + const handleShowMoreButton = () => { + setCollapsedDescription(!collapsedDescription); + }; + + if (isLoading) { + return ; + } + + if (description) { + // Case distinction to allow the show more button to be rendered inline. + return ( + <> + + + + + ); + } + + return ( + + {t(LIBRARY.COLLECTION_EMPTY_DESCRIPTION_TEXT)} + + ); +}; + +export default Description; diff --git a/src/components/collection/SummaryDetails.tsx b/src/components/collection/SummaryDetails.tsx new file mode 100644 index 00000000..84a52dc3 --- /dev/null +++ b/src/components/collection/SummaryDetails.tsx @@ -0,0 +1,249 @@ +import dynamic from 'next/dynamic'; + +import React from 'react'; +import { useTranslation } from 'react-i18next'; + +import { Box, Chip, Grid, Skeleton, Typography, styled } from '@mui/material'; + +import { LIBRARY } from '@graasp/translations'; +import { CCSharingVariant } from '@graasp/ui'; + +import { CATEGORY_COLORS, CATEGORY_TYPES } from '../../config/constants'; +import { + SUMMARY_CATEGORIES_CONTAINER_ID, + SUMMARY_CC_LICENSE_CONTAINER_ID, + SUMMARY_CC_LICENSE_NO_LICENSE_ID, + SUMMARY_CREATED_AT_CONTAINER_ID, + SUMMARY_LANGUAGES_CONTAINER_ID, + SUMMARY_LAST_UPDATE_CONTAINER_ID, +} from '../../config/selectors'; + +const { DateTime } = require('luxon'); + +const { CreativeCommons } = { + CreativeCommons: dynamic( + () => import('@graasp/ui').then((mod) => mod.CreativeCommons), + { ssr: false }, + ), +}; + +const DetailCard = styled(Box)(() => ({ + border: '1px solid #ddd', + borderRadius: 7, + padding: 20, + height: '100%', +})); + +const convertLicense = (ccLicenseAdaption: string) => { + // Legacy licenses. + if (['alike', 'allow'].includes(ccLicenseAdaption)) { + return { + requireAccreditation: true, + allowCommercialUse: true, + allowSharing: ccLicenseAdaption === 'alike' ? 'alike' : 'yes', + }; + } + + return { + requireAccreditation: ccLicenseAdaption?.includes('BY'), + allowCommercialUse: !ccLicenseAdaption?.includes('NC'), + allowSharing: (() => { + if (!ccLicenseAdaption || !ccLicenseAdaption.length) { + return ''; + } + if (ccLicenseAdaption?.includes('SA')) { + return 'alike'; + } + return ccLicenseAdaption?.includes('ND') ? 'no' : 'yes'; + })(), + }; +}; + +type SummaryDetailsProps = { + createdAt: string; + lastUpdate: string; + lang: string; + languages: Immutable.List<{ + name: string; + }>; + levels: Immutable.List<{ + name: string; + }>; + disciplines: Immutable.List<{ + name: string; + }>; + isLoading: boolean; + ccLicenseAdaption: string | undefined; +}; + +const SummaryDetails: React.FC = ({ + isLoading, + createdAt, + lastUpdate, + lang, + languages, + levels, + disciplines, + ccLicenseAdaption, +}) => { + const { t } = useTranslation(); + + const { allowSharing, allowCommercialUse, requireAccreditation } = + React.useMemo( + () => convertLicense(ccLicenseAdaption ?? ''), + [ccLicenseAdaption], + ); + + return ( + + + + {createdAt && ( +
+ + {t(LIBRARY.SUMMARY_DETAILS_CREATED_AT_TITLE)} + + + {DateTime.fromISO(createdAt).toLocaleString( + DateTime.DATE_FULL, + { locale: lang }, + )} + +
+ )} +
+
+ + + {lastUpdate && ( +
+ + {t(LIBRARY.SUMMARY_DETAILS_UPDATED_AT_TITLE)} + + + {DateTime.fromISO(lastUpdate).toLocaleString( + DateTime.DATE_FULL, + { locale: lang }, + )} + +
+ )} +
+
+ + +
+ + {t(LIBRARY.COLLECTION_LANGUAGES_TITLE)} + + {isLoading && } + {languages?.size ? ( + languages?.map((entry) => ( + + )) + ) : ( + {t(LIBRARY.SUMMARY_DETAILS_NO_LANGUAGES)} + )} +
+
+
+ + +
+ + {t(LIBRARY.COLLECTION_CATEGORIES_TITLE)} + + {levels?.size || disciplines?.size ? ( + <> + {levels?.map((entry) => ( + + ))} + {disciplines?.map((entry) => ( + + ))} + + ) : ( + + {t(LIBRARY.SUMMARY_DETAILS_NO_CATEGORIES)} + + )} +
+
+
+ + + + + {t(LIBRARY.SUMMARY_DETAILS_LICENSE_TITLE)} + + + {isLoading ? ( + + + + + + ) : ( + + {ccLicenseAdaption && ccLicenseAdaption.length > 0 ? ( + + ) : ( + + {t(LIBRARY.SUMMARY_DETAILS_EMPTY_LICENSE_TEXT)} + + )} + + )} + + + +
+ ); +}; +export default SummaryDetails; diff --git a/src/components/collection/SummaryHeader.tsx b/src/components/collection/SummaryHeader.tsx new file mode 100644 index 00000000..96f9b476 --- /dev/null +++ b/src/components/collection/SummaryHeader.tsx @@ -0,0 +1,216 @@ +import dynamic from 'next/dynamic'; + +import React, { useContext } from 'react'; + +import { Favorite, Visibility } from '@mui/icons-material'; +import { Skeleton } from '@mui/lab'; +import { + Box, + Chip, + Container, + Divider, + Grid, + Stack, + Tooltip, + Typography, +} from '@mui/material'; + +import { MUTATION_KEYS } from '@graasp/query-client'; +import { ThumbnailSize } from '@graasp/sdk'; +import { ItemLikeRecord, MemberRecord } from '@graasp/sdk/frontend'; + +import { + ITEM_SUMMARY_TITLE_ID, + SUMMARY_TAGS_CONTAINER_ID, +} from '../../config/selectors'; +import { QueryClientContext } from '../QueryClientContext'; +import CardMedia from '../common/CardMediaComponent'; +import { StyledCard } from '../common/StyledCard'; +import Authorship from './Authorship'; +import Badges from './Badges'; +import SummaryActionButtons from './SummaryActionButtons'; +import Description from './SummaryDescription'; + +const { LikeButton } = { + LikeButton: dynamic( + () => import('@graasp/ui').then((mod) => mod.LikeButton), + { ssr: false }, + ), +}; + +type SummaryHeaderProps = { + itemId: string; + isLoading: boolean; + name: string; + truncatedName: string; + tags: Immutable.List | undefined; + description: string; + creator: MemberRecord; + views: number; + likes: number; + isLogged: boolean; + extra: any; +}; + +const SummaryHeader: React.FC = ({ + isLogged, + isLoading, + itemId, + name, + truncatedName, + tags, + description, + creator, + views, + likes, + extra, +}) => { + const { hooks, useMutation } = useContext(QueryClientContext); + + const { data: member } = hooks.useCurrentMember(); + const { data: likedItems } = hooks.useLikedItems(member?.get('id')); + + const { mutate: postItemLike } = useMutation(MUTATION_KEYS.POST_ITEM_LIKE); + const { mutate: deleteItemLike } = useMutation( + MUTATION_KEYS.DELETE_ITEM_LIKE, + ); + + const likeEntry = likedItems?.find( + (itemLike: ItemLikeRecord) => itemLike?.itemId === itemId, + ); + + const handleLike = () => { + postItemLike({ + itemId, + memberId: member?.id, + }); + }; + + const handleUnlike = () => { + deleteItemLike({ + id: likeEntry?.id, + itemId, + memberId: member?.id, + }); + }; + + return ( + + + + + {isLoading ? ( + + + + ) : ( + + )} + + + + + + {truncatedName} + + + + + + {tags?.size ? ( +
+ {tags?.map((text) => ( + + ))} +
+ ) : ( +
+ )} + + + + + + } + > + + + + + + + + + {views} + + + + + {String.fromCharCode(183)} + + + + {likes} + + + + + + + + + + + + + + + ); +}; + +export default SummaryHeader; diff --git a/src/components/common/CardMediaComponent.js b/src/components/common/CardMediaComponent.js deleted file mode 100644 index 020400e6..00000000 --- a/src/components/common/CardMediaComponent.js +++ /dev/null @@ -1,81 +0,0 @@ -import dynamic from 'next/dynamic'; -import { useRouter } from 'next/router'; -import PropTypes from 'prop-types'; - -import React, { useContext } from 'react'; - -import { styled } from '@mui/material'; -import CardMedia from '@mui/material/CardMedia'; - -import { - DEFAULT_ITEM_IMAGE_PATH, - DEFAULT_THUMBNAIL_SIZE, -} from '../../config/constants'; -import { QueryClientContext } from '../QueryClientContext'; - -const Thumbnail = dynamic( - () => import('@graasp/ui').then((mod) => mod.Thumbnail), - { ssr: false }, -); - -const StyledCardMedia = styled(CardMedia)(({ sx, link }) => ({ - minHeight: '60%', - '&:hover': { - cursor: link ? 'pointer' : 'mouse', - }, - ...sx, -})); - -const CardMediaComponent = ({ sx, name, link, itemId, size }) => { - const router = useRouter(); - const { hooks } = useContext(QueryClientContext); - - return ( - { - router.push(link); - }} - > -
- } - alt={name} - useThumbnail={hooks.useItemThumbnail} - id={itemId} - thumbnailSrc={DEFAULT_ITEM_IMAGE_PATH} - sx={{ width: '100%', objectFit: 'cover' }} - size={size} - /> -
-
- ); -}; - -CardMediaComponent.propTypes = { - itemId: PropTypes.string.isRequired, - sx: PropTypes.shape({}), - name: PropTypes.string.isRequired, - link: PropTypes.string, - itemExtra: PropTypes.shape({}), - size: PropTypes.string, -}; - -CardMediaComponent.defaultProps = { - sx: {}, - link: null, - itemExtra: null, - size: DEFAULT_THUMBNAIL_SIZE, -}; - -export default CardMediaComponent; diff --git a/src/components/common/CardMediaComponent.tsx b/src/components/common/CardMediaComponent.tsx new file mode 100644 index 00000000..347507b2 --- /dev/null +++ b/src/components/common/CardMediaComponent.tsx @@ -0,0 +1,45 @@ +import dynamic from 'next/dynamic'; + +import React, { useContext } from 'react'; + +import { Box } from '@mui/material'; + +import { ThumbnailSize } from '@graasp/sdk'; +import { ThumbnailSizeVariant } from '@graasp/sdk/frontend'; + +import { DEFAULT_ITEM_IMAGE_PATH } from '../../config/constants'; +import { QueryClientContext } from '../QueryClientContext'; + +const Thumbnail = dynamic( + () => import('@graasp/ui').then((mod) => mod.Thumbnail), + { ssr: false }, +); + +type Props = { + name: string; + itemId?: string; + size?: ThumbnailSizeVariant; +}; + +const CardMediaComponent = ({ + name, + itemId, + size = ThumbnailSize.Small, +}: Props) => { + const { hooks } = useContext(QueryClientContext); + + return ( + + + + ); +}; + +export default CardMediaComponent; diff --git a/src/components/common/GraaspQuill.js b/src/components/common/GraaspQuill.js deleted file mode 100644 index cd08199f..00000000 --- a/src/components/common/GraaspQuill.js +++ /dev/null @@ -1,14 +0,0 @@ -import dynamic from 'next/dynamic'; - -import React from 'react'; - -const Loader = dynamic(() => import('@graasp/ui').then((mod) => mod.Loader), { - ssr: false, -}); - -const GraaspQuill = dynamic(() => import('react-quill'), { - ssr: false, - loading: () => , -}); - -export default GraaspQuill; diff --git a/src/components/common/SignInModalContext.js b/src/components/common/SignInModalContext.js index e973b350..8ef836fd 100644 --- a/src/components/common/SignInModalContext.js +++ b/src/components/common/SignInModalContext.js @@ -1,6 +1,6 @@ import PropTypes from 'prop-types'; -import React, { useContext, useEffect, useState } from 'react'; +import React, { useContext, useEffect, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import CloseIcon from '@mui/icons-material/Close'; @@ -121,8 +121,10 @@ const LoginModalProvider = ({ children }) => {
); + const contextValue = useMemo(() => ({ setOpen, open }), [open]); + return ( - + {renderModal()} {children} diff --git a/src/components/common/StyledCard.tsx b/src/components/common/StyledCard.tsx index 64fbecd4..74603360 100644 --- a/src/components/common/StyledCard.tsx +++ b/src/components/common/StyledCard.tsx @@ -7,14 +7,10 @@ import { // eslint-disable-next-line import/prefer-default-export export const StyledCard = styled(Card)(() => ({ - width: '100%', - aspectRatio: 1, - display: 'flex', - flexDirection: 'column', - justifyContent: 'space-between', - borderRadius: COLLECTION_CARD_BORDER_RADIUS, boxShadow: DEFAULT_SHADOW_EFFECT, + + padding: 0, })); export default StyledCard; diff --git a/src/components/common/Text.js b/src/components/common/Text.js deleted file mode 100644 index 5d16a723..00000000 --- a/src/components/common/Text.js +++ /dev/null @@ -1,60 +0,0 @@ -import PropTypes from 'prop-types'; - -import React from 'react'; - -import { hasMath, renderMath } from '../../utils/math'; -import GraaspQuill from './GraaspQuill'; - -const modules = { - toolbar: false, -}; - -const formats = [ - 'header', - 'bold', - 'italic', - 'underline', - 'strike', - 'blockquote', - 'list', - 'bullet', - 'indent', - 'link', - 'image', - 'formula', -]; - -export const Text = ({ content, style, className, id }) => { - let parsedContent = content; - if (hasMath(content)) { - parsedContent = renderMath(parsedContent); - } - return ( -
- -
- ); -}; - -Text.propTypes = { - content: PropTypes.string, - className: PropTypes.string, - style: PropTypes.shape({}), - id: PropTypes.string, -}; - -Text.defaultProps = { - content: '', - className: '', - style: {}, - id: null, -}; - -export default Text; diff --git a/src/components/common/Wrapper.js b/src/components/common/Wrapper.js index f56471e0..1eeac73b 100644 --- a/src/components/common/Wrapper.js +++ b/src/components/common/Wrapper.js @@ -6,7 +6,7 @@ import React, { useState } from 'react'; import { useTranslation } from 'react-i18next'; import 'react-toastify/dist/ReactToastify.css'; -import { Divider, ThemeProvider, createTheme } from '@mui/material'; +import { Box, Divider, ThemeProvider, createTheme } from '@mui/material'; import { LIBRARY } from '@graasp/translations'; import '@graasp/ui/dist/bundle.css'; @@ -46,13 +46,13 @@ const Wrapper = ({ dehydratedState, children }) => { return ( -
+ {children} -
+
); }; diff --git a/src/components/common/useCategoryTypesSidebar.tsx b/src/components/common/useCategoryTypesSidebar.tsx index 0d28a1e4..2b0a2e03 100644 --- a/src/components/common/useCategoryTypesSidebar.tsx +++ b/src/components/common/useCategoryTypesSidebar.tsx @@ -154,7 +154,7 @@ const useCategoryTypesSidebar = () => { clearSelection={clearSelection} categoryType={CATEGORY_TYPES.LANGUAGE} /> - + ); diff --git a/src/components/home/AllCollections.js b/src/components/home/AllCollections.js index 4d788a11..8d01bba4 100644 --- a/src/components/home/AllCollections.js +++ b/src/components/home/AllCollections.js @@ -35,7 +35,7 @@ const Main = dynamic(() => import('@graasp/ui').then((mod) => mod.Main), { const gridParams = { sm: 12, md: 6, lg: 4, xl: 4 }; -function AllCollections() { +const AllCollections = () => { const { t } = useTranslation(); const { hooks } = useContext(QueryClientContext); const { data: collections, isLoading } = hooks.usePublicItemsWithTag( @@ -98,7 +98,7 @@ function AllCollections() { ); -} +}; AllCollections.propTypes = { selected: PropTypes.shape({}).isRequired, diff --git a/src/components/home/Home.js b/src/components/home/Home.js index c767de83..97c2c53e 100644 --- a/src/components/home/Home.js +++ b/src/components/home/Home.js @@ -39,7 +39,7 @@ const { Loader, Main } = { }), }; -function Home() { +const Home = () => { const { t } = useTranslation(); const [searchResults, setSearchResults] = useState(null); const [range, setRange] = useState(SEARCH_RANGES.ALL.value); @@ -154,6 +154,6 @@ function Home() { ); -} +}; export default Home; diff --git a/src/components/home/MyFavorites.js b/src/components/home/MyFavorites.js index ef2eda59..7400cfeb 100644 --- a/src/components/home/MyFavorites.js +++ b/src/components/home/MyFavorites.js @@ -9,7 +9,7 @@ import { QueryClientContext } from '../QueryClientContext'; import CollectionsGrid from '../collection/CollectionsGrid'; import TabPanel from './TabPanel'; -function MyFavorites({ tab, index }) { +const MyFavorites = ({ tab, index }) => { const { hooks } = useContext(QueryClientContext); const { data: member } = hooks.useCurrentMember(); const { data: collections, isLoading } = hooks.usePublicItemsWithTag( @@ -32,7 +32,7 @@ function MyFavorites({ tab, index }) { /> ); -} +}; MyFavorites.propTypes = { tab: PropTypes.number.isRequired, diff --git a/src/components/home/MyLikes.js b/src/components/home/MyLikes.js index cc294f51..2678e61f 100644 --- a/src/components/home/MyLikes.js +++ b/src/components/home/MyLikes.js @@ -9,7 +9,7 @@ import { QueryClientContext } from '../QueryClientContext'; import CollectionsGrid from '../collection/CollectionsGrid'; import TabPanel from './TabPanel'; -function MyLikes({ tab, index }) { +const MyLikes = ({ tab, index }) => { const { hooks } = useContext(QueryClientContext); const { data: member } = hooks.useCurrentMember(); const { data: collections, isLoading } = hooks.usePublicItemsWithTag( @@ -33,7 +33,7 @@ function MyLikes({ tab, index }) { /> ); -} +}; MyLikes.propTypes = { tab: PropTypes.number.isRequired, diff --git a/src/components/home/MyList.js b/src/components/home/MyList.js index 16008a4d..7b214dfa 100644 --- a/src/components/home/MyList.js +++ b/src/components/home/MyList.js @@ -14,7 +14,7 @@ import MyFavorites from './MyFavorites'; import MyLikes from './MyLikes'; import MyPublishments from './MyPublishments'; -function MyList() { +const MyList = () => { const { t } = useTranslation(); const [tab, setTab] = useState(0); @@ -56,6 +56,6 @@ function MyList() { ); -} +}; export default MyList; diff --git a/src/components/home/MyPublishments.js b/src/components/home/MyPublishments.js index a23edbe3..885efbee 100644 --- a/src/components/home/MyPublishments.js +++ b/src/components/home/MyPublishments.js @@ -9,7 +9,7 @@ import { QueryClientContext } from '../QueryClientContext'; import CollectionsGrid from '../collection/CollectionsGrid'; import TabPanel from './TabPanel'; -function MyPublishments({ tab, index }) { +const MyPublishments = ({ tab, index }) => { const { hooks } = useContext(QueryClientContext); const { data: member } = hooks.useCurrentMember(); const { data: collections, isLoading } = hooks.usePublicItemsWithTag( @@ -31,7 +31,7 @@ function MyPublishments({ tab, index }) { /> ); -} +}; MyPublishments.propTypes = { tab: PropTypes.number.isRequired, diff --git a/src/components/home/Search.js b/src/components/home/Search.js index 766320e2..eb920c55 100644 --- a/src/components/home/Search.js +++ b/src/components/home/Search.js @@ -25,7 +25,7 @@ import { } from '../../config/selectors'; import { SEARCH_RANGES } from '../../enums/searchRanges'; -function Search({ handleClick, isLoading, range, handleRangeChange }) { +const Search = ({ handleClick, isLoading, range, handleRangeChange }) => { const [searchInput, setSearchInput] = useState(null); const { t } = useTranslation(); @@ -65,9 +65,8 @@ function Search({ handleClick, isLoading, range, handleRangeChange }) { placeholder={t(LIBRARY.SEARCH_PLACEHOLDER)} fullWidth margin="none" - InputLabelProps={{ - shrink: true, - ariaLabel: LIBRARY.SEARCH_ARIA_LABEL, + inputProps={{ + 'aria-label': LIBRARY.SEARCH_ARIA_LABEL, }} variant="filled" onChange={handleChange} @@ -90,6 +89,7 @@ function Search({ handleClick, isLoading, range, handleRangeChange }) { {Object.values(SEARCH_RANGES).map((entry) => ( } label={t(entry.title)} @@ -97,8 +97,8 @@ function Search({ handleClick, isLoading, range, handleRangeChange }) { /> ))} {/* - TODO: prompt users hints about how to use multiple keywords - + TODO: prompt users hints about how to use multiple keywords + @@ -108,7 +108,7 @@ function Search({ handleClick, isLoading, range, handleRangeChange }) { ); -} +}; Search.propTypes = { handleClick: PropTypes.func.isRequired, diff --git a/src/components/layout/HeaderLeftContent.tsx b/src/components/layout/HeaderLeftContent.tsx index a81d1529..a9b18c1b 100644 --- a/src/components/layout/HeaderLeftContent.tsx +++ b/src/components/layout/HeaderLeftContent.tsx @@ -14,6 +14,25 @@ import { QueryClientContext } from '../QueryClientContext'; import HeaderNavigation from '../common/HeaderNavigation'; import HeaderLink from './HeaderLink'; +// eslint-disable-next-line @typescript-eslint/no-unused-vars +const MyListHeaderLink = () => { + const { t } = useTranslation(); + const { hooks } = useContext(QueryClientContext); + const { data: currentMember, isError } = hooks.useCurrentMember(); + + if (isError || !currentMember?.id) { + return null; + } + + return ( + + ); +}; + type Props = { id?: string; sx: SxProps; @@ -22,24 +41,6 @@ type Props = { const HeaderLeftContent: FC = ({ id, sx }) => { const { t } = useTranslation(); - const { hooks } = useContext(QueryClientContext); - - const { data: currentMember, isError } = hooks.useCurrentMember(); - - const renderMyList = () => { - if (isError || !currentMember?.id) { - return null; - } - - return ( - - ); - }; - return ( @@ -48,7 +49,8 @@ const HeaderLeftContent: FC = ({ id, sx }) => { id={HEADER_ALL_COLLECTIONS_ID} text={t(LIBRARY.HEADER_ALL_COLLECTIONS)} /> - {renderMyList()} + {/* // todo: put back once the page looks better */} + {/* */} ); }; diff --git a/src/config/constants.ts b/src/config/constants.ts index c7ee5006..4a9c37b4 100644 --- a/src/config/constants.ts +++ b/src/config/constants.ts @@ -62,6 +62,7 @@ export const CATEGORY_TYPES = { LEVEL: 'level', DISCIPLINE: 'discipline', LANGUAGE: 'language', + LICENSE: 'license', } as const; export const PICTURE_QUALITIES = { @@ -131,12 +132,13 @@ export const TREE_VIEW_MAX_WIDTH = 400; // values of CATEGORY_TYPES = "level", "discipline", etc type Keys = keyof typeof CATEGORY_TYPES; -type Values = typeof CATEGORY_TYPES[Keys]; +type Values = (typeof CATEGORY_TYPES)[Keys]; export const CATEGORY_COLORS: Record = { [CATEGORY_TYPES.DISCIPLINE]: '#4997DE', [CATEGORY_TYPES.LANGUAGE]: '#9A49DE', [CATEGORY_TYPES.LEVEL]: '#5050d2', + [CATEGORY_TYPES.LICENSE]: '#5050d2', }; export const MEMBER_PROFILE_PATH = `${GRAASP_BUILDER_HOST}/profile`; diff --git a/src/config/cssStyles.js b/src/config/cssStyles.js index bc66c9d0..138eac1f 100644 --- a/src/config/cssStyles.js +++ b/src/config/cssStyles.js @@ -1,13 +1,12 @@ export const COLOR_WHITE = '#ffffff'; export const COLOR_BLACK = '#000000'; -export const DEFAULT_SHADOW_EFFECT = - '0px 2px 4px -1px rgb(0 0 0 / 30%), 0px 4px 5px 0px rgb(0 0 0 / 20%), 0px 1px 10px 0px rgb(0 0 0 / 12%)'; +export const DEFAULT_SHADOW_EFFECT = '0 10px 30px rgba(0, 0, 0, .15)'; // header export const HEADER_LOGO_HEIGHT = 40; // collectionCard -export const COLLECTION_CARD_BORDER_RADIUS = 35; +export const COLLECTION_CARD_BORDER_RADIUS = 10; export const COLLECTION_CARD_HEADER_SIZE = '20%'; // item summary diff --git a/src/config/selectors.js b/src/config/selectors.js index 6598ab85..4a5863ee 100644 --- a/src/config/selectors.js +++ b/src/config/selectors.js @@ -7,8 +7,8 @@ export const buildEducationLevelOptionId = (index) => export const CLEAR_EDUCATION_LEVEL_SELECTION_ID = 'clearEducationLevelButton'; export const MENU_BUTTON_ID = 'menuButton'; export const OPEN_MENU_BUTTON_ID = 'openMenuButton'; -export const buildCollectionCardGridId = (collectionsGridId, index) => - `${collectionsGridId}-collection-${index}`; +export const buildCollectionCardGridId = (collectionId) => + `collection-${collectionId}`; export const buildEducationLevelOptionSelector = (index) => `#${buildEducationLevelOptionId(index)}`; export const buildItemInGridSelector = (index) => @@ -27,6 +27,7 @@ export const SUMMARY_LANGUAGES_CONTAINER_ID = 'summaryLanguagesContainer'; export const SUMMARY_CATEGORIES_CONTAINER_ID = 'summaryCategoriesContainer'; export const SUMMARY_TAGS_CONTAINER_ID = 'summaryTagsContainer'; export const SUMMARY_CC_LICENSE_CONTAINER_ID = 'summaryCCLicenseContainer'; +export const SUMMARY_CC_LICENSE_NO_LICENSE_ID = 'summaryCCLicenseEmpty'; export const SUMMARY_CREATED_AT_CONTAINER_ID = 'summaryCreatedAtContainer'; export const SUMMARY_LAST_UPDATE_CONTAINER_ID = 'summaryLastUpdateContainer'; export const HOME_SEARCH_ID = 'homeSearch'; diff --git a/src/utils/math.js b/src/utils/math.js deleted file mode 100644 index 0cd292a7..00000000 --- a/src/utils/math.js +++ /dev/null @@ -1,53 +0,0 @@ -import katex from 'katex'; -import isString from 'lodash.isstring'; - -import { - BLOCK_MATH_DIV, - BLOCK_MATH_INDICATOR, - BLOCK_MATH_REGEX, - INLINE_MATH_DIV, - INLINE_MATH_INDICATOR, - INLINE_MATH_REGEX, -} from '../config/constants'; - -const hasMath = (input = '') => - isString(input) && - (input.includes(BLOCK_MATH_INDICATOR) || - input.includes(INLINE_MATH_INDICATOR)); - -const renderToString = (input, indicator, regex, div) => { - let output = input ?? ''; - if (input.includes(indicator)) { - const matches = [...input.matchAll(regex)]; - matches.forEach((match) => { - const text = match[2]; - const matched = match[0]; - const parsed = `<${div} class="ql-formula" data-value="${text}"> - - ${katex.renderToString(text, { throwOnError: false })} - - `; - output = output.replace(matched, parsed); - }); - } - return output; -}; - -const renderMathBlock = (input) => - renderToString(input, BLOCK_MATH_INDICATOR, BLOCK_MATH_REGEX, BLOCK_MATH_DIV); -const renderMathInline = (input) => - renderToString( - input, - INLINE_MATH_INDICATOR, - INLINE_MATH_REGEX, - INLINE_MATH_DIV, - ); - -const renderMath = (input) => { - let rvalue = input; - rvalue = renderMathInline(rvalue); - rvalue = renderMathBlock(rvalue); - return rvalue; -}; - -export { renderMathInline, renderMathBlock, renderMath, hasMath }; diff --git a/tsconfig.json b/tsconfig.json index bcd378f3..747977aa 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,12 +2,8 @@ "compilerOptions": { "allowJs": true, "checkJs": false, - "target": "es5", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], + "target": "es6", + "lib": ["dom", "dom.iterable", "esnext"], "skipLibCheck": true, "strict": true, "forceConsistentCasingInFileNames": true, @@ -21,16 +17,8 @@ "incremental": true, "sourceMap": true, "inlineSources": true, - "sourceRoot": "/", + "sourceRoot": "/" }, - "include": [ - "next-env.d.ts", - "**/*.js", - "**/*.ts", - "**/*.tsx" - ], - "exclude": [ - "node_modules", - "public" - ] + "include": ["next-env.d.ts", "**/*.js", "**/*.ts", "**/*.tsx"], + "exclude": ["node_modules", "public"] } diff --git a/yarn.lock b/yarn.lock index 515265a0..a7a0f84c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,6 +5,13 @@ __metadata: version: 6 cacheKey: 8 +"@adobe/css-tools@npm:^4.0.1": + version: 4.2.0 + resolution: "@adobe/css-tools@npm:4.2.0" + checksum: dc5cc92ba3d562e7ffddb79d6d222c7e00b65f255fd2725b3d71490ff268844be322f917415d8c4ab39eca646343b632058db8bd5b1d646193fcc94d1d3e420b + languageName: node + linkType: hard + "@ampproject/remapping@npm:^2.1.0": version: 2.2.0 resolution: "@ampproject/remapping@npm:2.2.0" @@ -15,15 +22,6 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:7.12.11": - version: 7.12.11 - resolution: "@babel/code-frame@npm:7.12.11" - dependencies: - "@babel/highlight": ^7.10.4 - checksum: 3963eff3ebfb0e091c7e6f99596ef4b258683e4ba8a134e4e95f77afe85be5c931e184fff6435fb4885d12eba04a5e25532f7fbc292ca13b48e7da943474e2f3 - languageName: node - linkType: hard - "@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.18.6": version: 7.18.6 resolution: "@babel/code-frame@npm:7.18.6" @@ -40,30 +38,6 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:7.13.10": - version: 7.13.10 - resolution: "@babel/core@npm:7.13.10" - dependencies: - "@babel/code-frame": ^7.12.13 - "@babel/generator": ^7.13.9 - "@babel/helper-compilation-targets": ^7.13.10 - "@babel/helper-module-transforms": ^7.13.0 - "@babel/helpers": ^7.13.10 - "@babel/parser": ^7.13.10 - "@babel/template": ^7.12.13 - "@babel/traverse": ^7.13.0 - "@babel/types": ^7.13.0 - convert-source-map: ^1.7.0 - debug: ^4.1.0 - gensync: ^1.0.0-beta.2 - json5: ^2.1.2 - lodash: ^4.17.19 - semver: ^6.3.0 - source-map: ^0.5.0 - checksum: 9b3362fd02e6a4f3ad642893312ec3d22713c4eeb2571c994d49c31f38d24893a6a18f4b49abb8d56b510e116278608eaddde2ca72ccb39ab29350efa5af39de - languageName: node - linkType: hard - "@babel/core@npm:7.17.8": version: 7.17.8 resolution: "@babel/core@npm:7.17.8" @@ -110,18 +84,30 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:7.13.9": - version: 7.13.9 - resolution: "@babel/generator@npm:7.13.9" +"@babel/generator@npm:7.17.7": + version: 7.17.7 + resolution: "@babel/generator@npm:7.17.7" dependencies: - "@babel/types": ^7.13.0 + "@babel/types": ^7.17.0 jsesc: ^2.5.1 source-map: ^0.5.0 - checksum: 1b0e9fa1b5ea6656f0abeeedc99ff7bffa455d7bf118f4d17a75d80c439206b4ba3e1071c104b486b7447689512969286cbde505e6169ab38cf437e13ca54225 + checksum: e7344b9b4559115f2754ecc2ae9508412ea6a8f617544cd3d3f17cabc727bd30630765f96c8a4ebc8901ded1492a3a6c23d695a4f1e8f3042f860b30c891985c + languageName: node + linkType: hard + +"@babel/generator@npm:^7.17.3": + version: 7.21.4 + resolution: "@babel/generator@npm:7.21.4" + dependencies: + "@babel/types": ^7.21.4 + "@jridgewell/gen-mapping": ^0.3.2 + "@jridgewell/trace-mapping": ^0.3.17 + jsesc: ^2.5.1 + checksum: 9ffbb526a53bb8469b5402f7b5feac93809b09b2a9f82fcbfcdc5916268a65dae746a1f2479e03ba4fb0776facd7c892191f63baa61ab69b2cfdb24f7b92424d languageName: node linkType: hard -"@babel/generator@npm:^7.13.0, @babel/generator@npm:^7.13.9, @babel/generator@npm:^7.17.7, @babel/generator@npm:^7.17.9, @babel/generator@npm:^7.20.7": +"@babel/generator@npm:^7.17.7, @babel/generator@npm:^7.17.9, @babel/generator@npm:^7.20.7": version: 7.20.7 resolution: "@babel/generator@npm:7.20.7" dependencies: @@ -141,7 +127,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.13.10, @babel/helper-compilation-targets@npm:^7.17.7, @babel/helper-compilation-targets@npm:^7.20.7": +"@babel/helper-compilation-targets@npm:^7.17.7, @babel/helper-compilation-targets@npm:^7.20.7": version: 7.20.7 resolution: "@babel/helper-compilation-targets@npm:7.20.7" dependencies: @@ -156,14 +142,24 @@ __metadata: languageName: node linkType: hard -"@babel/helper-environment-visitor@npm:^7.18.9": +"@babel/helper-environment-visitor@npm:^7.16.7, @babel/helper-environment-visitor@npm:^7.18.9": version: 7.18.9 resolution: "@babel/helper-environment-visitor@npm:7.18.9" checksum: b25101f6162ddca2d12da73942c08ad203d7668e06663df685634a8fde54a98bc015f6f62938e8554457a592a024108d45b8f3e651fd6dcdb877275b73cc4420 languageName: node linkType: hard -"@babel/helper-function-name@npm:^7.12.13, @babel/helper-function-name@npm:^7.19.0": +"@babel/helper-function-name@npm:^7.16.7": + version: 7.21.0 + resolution: "@babel/helper-function-name@npm:7.21.0" + dependencies: + "@babel/template": ^7.20.7 + "@babel/types": ^7.21.0 + checksum: d63e63c3e0e3e8b3138fa47b0cd321148a300ef12b8ee951196994dcd2a492cc708aeda94c2c53759a5c9177fffaac0fd8778791286746f72a000976968daf4e + languageName: node + linkType: hard + +"@babel/helper-function-name@npm:^7.19.0": version: 7.19.0 resolution: "@babel/helper-function-name@npm:7.19.0" dependencies: @@ -173,7 +169,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-hoist-variables@npm:^7.18.6": +"@babel/helper-hoist-variables@npm:^7.16.7, @babel/helper-hoist-variables@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-hoist-variables@npm:7.18.6" dependencies: @@ -191,7 +187,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.13.0, @babel/helper-module-transforms@npm:^7.17.7, @babel/helper-module-transforms@npm:^7.20.11": +"@babel/helper-module-transforms@npm:^7.17.7, @babel/helper-module-transforms@npm:^7.20.11": version: 7.20.11 resolution: "@babel/helper-module-transforms@npm:7.20.11" dependencies: @@ -232,7 +228,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-split-export-declaration@npm:^7.12.13, @babel/helper-split-export-declaration@npm:^7.18.6": +"@babel/helper-split-export-declaration@npm:^7.16.7, @babel/helper-split-export-declaration@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-split-export-declaration@npm:7.18.6" dependencies: @@ -248,7 +244,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.12.11, @babel/helper-validator-identifier@npm:^7.18.6, @babel/helper-validator-identifier@npm:^7.19.1": +"@babel/helper-validator-identifier@npm:^7.16.7, @babel/helper-validator-identifier@npm:^7.18.6, @babel/helper-validator-identifier@npm:^7.19.1": version: 7.19.1 resolution: "@babel/helper-validator-identifier@npm:7.19.1" checksum: 0eca5e86a729162af569b46c6c41a63e18b43dbe09fda1d2a3c8924f7d617116af39cac5e4cd5d431bb760b4dca3c0970e0c444789b1db42bcf1fa41fbad0a3a @@ -262,7 +258,7 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.13.10, @babel/helpers@npm:^7.17.8, @babel/helpers@npm:^7.20.7": +"@babel/helpers@npm:^7.17.8, @babel/helpers@npm:^7.20.7": version: 7.20.13 resolution: "@babel/helpers@npm:7.20.13" dependencies: @@ -273,7 +269,7 @@ __metadata: languageName: node linkType: hard -"@babel/highlight@npm:^7.10.4, @babel/highlight@npm:^7.18.6": +"@babel/highlight@npm:^7.18.6": version: 7.18.6 resolution: "@babel/highlight@npm:7.18.6" dependencies: @@ -284,21 +280,21 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:7.14.6": - version: 7.14.6 - resolution: "@babel/parser@npm:7.14.6" +"@babel/parser@npm:^7.13.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.17.8, @babel/parser@npm:^7.20.13, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.7.0": + version: 7.20.13 + resolution: "@babel/parser@npm:7.20.13" bin: parser: ./bin/babel-parser.js - checksum: 104482e07971a78a3d68a0c329b1303981a272f55a510d39c93dac3c293f207ec863329046abc5d8bb86db58c49670cc607654793470a87ccd386544c2ccf298 + checksum: 7eb2e3d9d9ad5e24b087c88d137f5701d94f049e28b9dce9f3f5c6d4d9b06a0d7c43b9106f1c02df8a204226200e0517de4bc81a339768a4ebd4c59107ea93a4 languageName: node linkType: hard -"@babel/parser@npm:^7.13.0, @babel/parser@npm:^7.13.10, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.17.8, @babel/parser@npm:^7.20.13, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.7.0": - version: 7.20.13 - resolution: "@babel/parser@npm:7.20.13" +"@babel/parser@npm:^7.17.3, @babel/parser@npm:^7.20.5": + version: 7.21.4 + resolution: "@babel/parser@npm:7.21.4" bin: parser: ./bin/babel-parser.js - checksum: 7eb2e3d9d9ad5e24b087c88d137f5701d94f049e28b9dce9f3f5c6d4d9b06a0d7c43b9106f1c02df8a204226200e0517de4bc81a339768a4ebd4c59107ea93a4 + checksum: de610ecd1bff331766d0c058023ca11a4f242bfafefc42caf926becccfb6756637d167c001987ca830dd4b34b93c629a4cef63f8c8c864a8564cdfde1989ac77 languageName: node linkType: hard @@ -338,7 +334,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.17.12, @babel/plugin-syntax-jsx@npm:^7.18.6": +"@babel/plugin-syntax-jsx@npm:^7.18.6": version: 7.18.6 resolution: "@babel/plugin-syntax-jsx@npm:7.18.6" dependencies: @@ -447,26 +443,25 @@ __metadata: languageName: node linkType: hard -"@babel/runtime-corejs3@npm:^7.10.2": +"@babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.14.5, @babel/runtime@npm:^7.17.2, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.6, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.2, @babel/runtime@npm:^7.7.2, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": version: 7.20.13 - resolution: "@babel/runtime-corejs3@npm:7.20.13" + resolution: "@babel/runtime@npm:7.20.13" dependencies: - core-js-pure: ^3.25.1 regenerator-runtime: ^0.13.11 - checksum: 259681d99909fb56fc31d0d1a17cf98949db648873299958f9e1bf44d137f812c10815edb371fbd5a6ced3af9dde40ab461a06bd9151d5155b4808578a3d2290 + checksum: 09b7a97a05c80540db6c9e4ddf8c5d2ebb06cae5caf3a87e33c33f27f8c4d49d9c67a2d72f1570e796045288fad569f98a26ceba0c4f5fad2af84b6ad855c4fb languageName: node linkType: hard -"@babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.14.5, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.17.2, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.19.0, @babel/runtime@npm:^7.20.6, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.2, @babel/runtime@npm:^7.7.2, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": - version: 7.20.13 - resolution: "@babel/runtime@npm:7.20.13" +"@babel/runtime@npm:^7.19.0, @babel/runtime@npm:^7.21.0": + version: 7.21.0 + resolution: "@babel/runtime@npm:7.21.0" dependencies: regenerator-runtime: ^0.13.11 - checksum: 09b7a97a05c80540db6c9e4ddf8c5d2ebb06cae5caf3a87e33c33f27f8c4d49d9c67a2d72f1570e796045288fad569f98a26ceba0c4f5fad2af84b6ad855c4fb + checksum: 7b33e25bfa9e0e1b9e8828bb61b2d32bdd46b41b07ba7cb43319ad08efc6fda8eb89445193e67d6541814627df0ca59122c0ea795e412b99c5183a0540d338ab languageName: node linkType: hard -"@babel/template@npm:^7.12.13, @babel/template@npm:^7.16.7, @babel/template@npm:^7.18.10, @babel/template@npm:^7.20.7": +"@babel/template@npm:^7.16.7, @babel/template@npm:^7.18.10, @babel/template@npm:^7.20.7": version: 7.20.7 resolution: "@babel/template@npm:7.20.7" dependencies: @@ -477,24 +472,25 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:7.13.0": - version: 7.13.0 - resolution: "@babel/traverse@npm:7.13.0" +"@babel/traverse@npm:7.17.3": + version: 7.17.3 + resolution: "@babel/traverse@npm:7.17.3" dependencies: - "@babel/code-frame": ^7.12.13 - "@babel/generator": ^7.13.0 - "@babel/helper-function-name": ^7.12.13 - "@babel/helper-split-export-declaration": ^7.12.13 - "@babel/parser": ^7.13.0 - "@babel/types": ^7.13.0 + "@babel/code-frame": ^7.16.7 + "@babel/generator": ^7.17.3 + "@babel/helper-environment-visitor": ^7.16.7 + "@babel/helper-function-name": ^7.16.7 + "@babel/helper-hoist-variables": ^7.16.7 + "@babel/helper-split-export-declaration": ^7.16.7 + "@babel/parser": ^7.17.3 + "@babel/types": ^7.17.0 debug: ^4.1.0 globals: ^11.1.0 - lodash: ^4.17.19 - checksum: 7d584b5541396b02f6973ba8ec8a067f2a6c2fd2e894c663dfae36e86e65a004a6865fbffbfc89ca040c894f9c12134bb971d31f09e7ec32c28e9b18bf737f2a + checksum: 780d7ecf711758174989794891af08d378f81febdb8932056c0d9979524bf0298e28f8e7708a872d7781151506c28f56c85c63ea3f1f654662c2fcb8a3eb9fdc languageName: node linkType: hard -"@babel/traverse@npm:^7.13.0, @babel/traverse@npm:^7.17.3, @babel/traverse@npm:^7.17.9, @babel/traverse@npm:^7.20.10, @babel/traverse@npm:^7.20.12, @babel/traverse@npm:^7.20.13, @babel/traverse@npm:^7.7.0": +"@babel/traverse@npm:^7.17.3, @babel/traverse@npm:^7.17.9, @babel/traverse@npm:^7.20.10, @babel/traverse@npm:^7.20.12, @babel/traverse@npm:^7.20.13, @babel/traverse@npm:^7.7.0": version: 7.20.13 resolution: "@babel/traverse@npm:7.20.13" dependencies: @@ -512,18 +508,17 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:7.13.0": - version: 7.13.0 - resolution: "@babel/types@npm:7.13.0" +"@babel/types@npm:7.17.0": + version: 7.17.0 + resolution: "@babel/types@npm:7.17.0" dependencies: - "@babel/helper-validator-identifier": ^7.12.11 - lodash: ^4.17.19 + "@babel/helper-validator-identifier": ^7.16.7 to-fast-properties: ^2.0.0 - checksum: 3dbb08add345325a49e1deebefa8d3774a8ab055c4be675c339a389358f4b3443652ded4bfdb230b342c6af12593a6fd3fb95156564e7ec84081018815896821 + checksum: 12e5a287986fe557188e87b2c5202223f1dc83d9239a196ab936fdb9f8c1eb0be717ff19f934b5fad4e29a75586d5798f74bed209bccea1c20376b9952056f0e languageName: node linkType: hard -"@babel/types@npm:^7.13.0, @babel/types@npm:^7.17.0, @babel/types@npm:^7.18.6, @babel/types@npm:^7.19.0, @babel/types@npm:^7.20.0, @babel/types@npm:^7.20.2, @babel/types@npm:^7.20.7, @babel/types@npm:^7.7.0, @babel/types@npm:^7.8.3": +"@babel/types@npm:^7.17.0, @babel/types@npm:^7.18.6, @babel/types@npm:^7.19.0, @babel/types@npm:^7.20.0, @babel/types@npm:^7.20.2, @babel/types@npm:^7.20.7, @babel/types@npm:^7.7.0, @babel/types@npm:^7.8.3": version: 7.20.7 resolution: "@babel/types@npm:7.20.7" dependencies: @@ -534,6 +529,17 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.21.0, @babel/types@npm:^7.21.4": + version: 7.21.4 + resolution: "@babel/types@npm:7.21.4" + dependencies: + "@babel/helper-string-parser": ^7.19.4 + "@babel/helper-validator-identifier": ^7.19.1 + to-fast-properties: ^2.0.0 + checksum: 587bc55a91ce003b0f8aa10d70070f8006560d7dc0360dc0406d306a2cb2a10154e2f9080b9c37abec76907a90b330a536406cb75e6bdc905484f37b75c73219 + languageName: node + linkType: hard + "@colors/colors@npm:1.5.0": version: 1.5.0 resolution: "@colors/colors@npm:1.5.0" @@ -541,191 +547,200 @@ __metadata: languageName: node linkType: hard -"@commitlint/cli@npm:16.2.3": - version: 16.2.3 - resolution: "@commitlint/cli@npm:16.2.3" +"@commitlint/cli@npm:17.6.1": + version: 17.6.1 + resolution: "@commitlint/cli@npm:17.6.1" dependencies: - "@commitlint/format": ^16.2.1 - "@commitlint/lint": ^16.2.1 - "@commitlint/load": ^16.2.3 - "@commitlint/read": ^16.2.1 - "@commitlint/types": ^16.2.1 - lodash: ^4.17.19 + "@commitlint/format": ^17.4.4 + "@commitlint/lint": ^17.6.1 + "@commitlint/load": ^17.5.0 + "@commitlint/read": ^17.5.1 + "@commitlint/types": ^17.4.4 + execa: ^5.0.0 + lodash.isfunction: ^3.0.9 resolve-from: 5.0.0 resolve-global: 1.0.0 yargs: ^17.0.0 bin: commitlint: cli.js - checksum: e74a83389a736a87593cdc3665c820f1f8e837c9e834883d3e041b65cd6af85410fa65c1b0b8b1909d31eab3eadf4997e31a309af0fa0d211b6db21dc6fb917e + checksum: ec559e1f529c8bdc680d71527d2eb591dc7d264fcc8a70cf7ee12d5b833c385374ae41943f7a8e8346423c51f8900dded5041b6e719586295573882e366c41ba languageName: node linkType: hard -"@commitlint/config-conventional@npm:16.2.1": - version: 16.2.1 - resolution: "@commitlint/config-conventional@npm:16.2.1" +"@commitlint/config-conventional@npm:17.6.1": + version: 17.6.1 + resolution: "@commitlint/config-conventional@npm:17.6.1" dependencies: - conventional-changelog-conventionalcommits: ^4.3.1 - checksum: 23dac76a8fbe5624433e1c948bc53eaf0a60b77f418fe7f94eea8e17abf9605d7ae9418188d8c1a38c2e6d5cb865c8e2d0894826c3eb41fb052af95e79bc02d3 + conventional-changelog-conventionalcommits: ^5.0.0 + checksum: a854bae11f76b22e188af2fabe4048b5054f56b7f270e6364ab1ed807670fa38192e1a2628d626a9b759785f64874a0b33b560080b34208f69f401ef70d91562 languageName: node linkType: hard -"@commitlint/config-validator@npm:^16.2.1": - version: 16.2.1 - resolution: "@commitlint/config-validator@npm:16.2.1" +"@commitlint/config-validator@npm:^17.4.4": + version: 17.4.4 + resolution: "@commitlint/config-validator@npm:17.4.4" dependencies: - "@commitlint/types": ^16.2.1 - ajv: ^6.12.6 - checksum: 1b86832dc03fc7f9442f9358c6c73d42974e9006944b8524bc4b4cd2ce946e50f3eca972737844dc7765a874c465ff5f18dad210f979491f9ee07c831b0eb8d3 + "@commitlint/types": ^17.4.4 + ajv: ^8.11.0 + checksum: 71ee818608ed5c74832cdd63531c0f61b21758fba9f8b876205485ece4f047c9582bc3f323a20a5de700e3451296614d15448437270a82194eff7d71317b47ff languageName: node linkType: hard -"@commitlint/ensure@npm:^16.2.1": - version: 16.2.1 - resolution: "@commitlint/ensure@npm:16.2.1" +"@commitlint/ensure@npm:^17.4.4": + version: 17.4.4 + resolution: "@commitlint/ensure@npm:17.4.4" dependencies: - "@commitlint/types": ^16.2.1 - lodash: ^4.17.19 - checksum: 388a124e515c02f14d026973821a6ce1d586ac966da8a51e69fabb925ee858e864696cd2b398bb5bec8d7ceee97f9f04c77630061b7784a10b06e0a436447d44 + "@commitlint/types": ^17.4.4 + lodash.camelcase: ^4.3.0 + lodash.kebabcase: ^4.1.1 + lodash.snakecase: ^4.1.1 + lodash.startcase: ^4.4.0 + lodash.upperfirst: ^4.3.1 + checksum: c21c189f22d8d3265e93256d101b72ef7cbdf8660438081799b9a4a8bd47d33133f250bbed858ab9bcc0d249d1c95ac58eddd9e5b46314d64ff049d0479d0d71 languageName: node linkType: hard -"@commitlint/execute-rule@npm:^16.2.1": - version: 16.2.1 - resolution: "@commitlint/execute-rule@npm:16.2.1" - checksum: 83be0e858fa415ba7d844fc68c7c8bcc3b14074fe862f2129e03ce5fd07a58876d88d080e0d2fbf25e10f6d3189a04bca024def48206fa0f0f1c5890d689539c +"@commitlint/execute-rule@npm:^17.4.0": + version: 17.4.0 + resolution: "@commitlint/execute-rule@npm:17.4.0" + checksum: 17d8e56ab00bd45fdecb0ed33186d2020ce261250d6a516204b6509610b75af8c930e7226b1111af3de298db32a7e4d0ba2c9cc7ed67db5ba5159eeed634f067 languageName: node linkType: hard -"@commitlint/format@npm:^16.2.1": - version: 16.2.1 - resolution: "@commitlint/format@npm:16.2.1" +"@commitlint/format@npm:^17.4.4": + version: 17.4.4 + resolution: "@commitlint/format@npm:17.4.4" dependencies: - "@commitlint/types": ^16.2.1 - chalk: ^4.0.0 - checksum: d8f26a789f0ffc2dd763ed6467262e2cfa94900d7f517f39d32b0f0e9e5222767da12b5302bdccfb1e8a4805c667e5dc36ef98d41754c3ed0e339c35664c0ba6 + "@commitlint/types": ^17.4.4 + chalk: ^4.1.0 + checksum: 832d9641129f2da8d32389b4a47db59d41eb1adfab742723972cad64b833c4af9e253f96757b27664fedae61644dd4c01d21f775773b45b604bd7f93b23a27d2 languageName: node linkType: hard -"@commitlint/is-ignored@npm:^16.2.4": - version: 16.2.4 - resolution: "@commitlint/is-ignored@npm:16.2.4" +"@commitlint/is-ignored@npm:^17.4.4": + version: 17.4.4 + resolution: "@commitlint/is-ignored@npm:17.4.4" dependencies: - "@commitlint/types": ^16.2.1 - semver: 7.3.7 - checksum: 1ae5f3ca1394fc3d211e8c3bf8f8a16b77e8b04050390a6231990d3802865d465273976f4d3ea1d6ec7ca4c9a8220044f10ea5cae3c13db826d56f7d9c69cbaa + "@commitlint/types": ^17.4.4 + semver: 7.3.8 + checksum: 716631ecd6aece8642d76c1a99e1cdc24bad79f22199d1d4bad73d9b12edb3578ed7d6f23947ca28d4bb637e08a1738e55dd693c165a2d395c10560a988ffc05 languageName: node linkType: hard -"@commitlint/lint@npm:^16.2.1": - version: 16.2.4 - resolution: "@commitlint/lint@npm:16.2.4" +"@commitlint/lint@npm:^17.6.1": + version: 17.6.1 + resolution: "@commitlint/lint@npm:17.6.1" dependencies: - "@commitlint/is-ignored": ^16.2.4 - "@commitlint/parse": ^16.2.1 - "@commitlint/rules": ^16.2.4 - "@commitlint/types": ^16.2.1 - checksum: 189d3070fb0c131d6ac2b2e8c864c37892fd2d202b866be9f0d9fdf5a5d5a0d5e8221bc373f29977ac1e5e33015abd71640dbd104e86137b60d8d4783d61679f + "@commitlint/is-ignored": ^17.4.4 + "@commitlint/parse": ^17.4.4 + "@commitlint/rules": ^17.6.1 + "@commitlint/types": ^17.4.4 + checksum: 990f6940fe277f252087e1d11d1042cfc034fa66b6355d451a0d7d8a24a0f0c381fd88f03556edb9a187c19e6d2a22a575b10c8d6db2f8342578c06396f10285 languageName: node linkType: hard -"@commitlint/load@npm:^16.2.3": - version: 16.3.0 - resolution: "@commitlint/load@npm:16.3.0" +"@commitlint/load@npm:^17.5.0": + version: 17.5.0 + resolution: "@commitlint/load@npm:17.5.0" dependencies: - "@commitlint/config-validator": ^16.2.1 - "@commitlint/execute-rule": ^16.2.1 - "@commitlint/resolve-extends": ^16.2.1 - "@commitlint/types": ^16.2.1 - "@types/node": ">=12" - chalk: ^4.0.0 - cosmiconfig: ^7.0.0 - cosmiconfig-typescript-loader: ^2.0.0 - lodash: ^4.17.19 + "@commitlint/config-validator": ^17.4.4 + "@commitlint/execute-rule": ^17.4.0 + "@commitlint/resolve-extends": ^17.4.4 + "@commitlint/types": ^17.4.4 + "@types/node": "*" + chalk: ^4.1.0 + cosmiconfig: ^8.0.0 + cosmiconfig-typescript-loader: ^4.0.0 + lodash.isplainobject: ^4.0.6 + lodash.merge: ^4.6.2 + lodash.uniq: ^4.5.0 resolve-from: ^5.0.0 - typescript: ^4.4.3 - checksum: b03e3d9af2adec36e5d539741807c161a2860411ba25c2fddb75d3d4d2dadf4faaefd417150a0898b3aca4ce451a378222ce5039760e85faacc315b525a44035 + ts-node: ^10.8.1 + typescript: ^4.6.4 || ^5.0.0 + checksum: c039114b0ad67bb9d8b05ec635d847bd5ab760528f0fb203411f433585bdab5472f4f5c7856dfc417cf64c05576f54c1afc4997a813f529304e0156bfc1d6cc8 languageName: node linkType: hard -"@commitlint/message@npm:^16.2.1": - version: 16.2.1 - resolution: "@commitlint/message@npm:16.2.1" - checksum: 172e18bd5bd47bf7d61356ba1da4a552a5f96860fadb277b9431e1ecfe6b49dd8f303e6d7ad120961325093346ec6764231975f8c73434f5487b05493406d551 +"@commitlint/message@npm:^17.4.2": + version: 17.4.2 + resolution: "@commitlint/message@npm:17.4.2" + checksum: 55b6cfeb57f7c9f913e18821aa4d972a6b6faa78c62741390996151f99554396f6df68ccfee86c163d24d8c27a4dbbcb50ef03c2972ab0a7a21d89daa2f9a519 languageName: node linkType: hard -"@commitlint/parse@npm:^16.2.1": - version: 16.2.1 - resolution: "@commitlint/parse@npm:16.2.1" +"@commitlint/parse@npm:^17.4.4": + version: 17.4.4 + resolution: "@commitlint/parse@npm:17.4.4" dependencies: - "@commitlint/types": ^16.2.1 + "@commitlint/types": ^17.4.4 conventional-changelog-angular: ^5.0.11 conventional-commits-parser: ^3.2.2 - checksum: 8f966c45b2838900dfe8af14fa5085707a2c2ece7d6f00d8e61dad1fdd617b202177cfcc428ef6f7a41b7e6872560c9a040cf92eb122ad31a8f7777e3f9bab7b + checksum: 2a6e5b0a5cdea21c879a3919a0227c0d7f3fa1f343808bcb09e3e7f25b0dc494dcca8af32982e7a65640b53c3e6cf138ebf685b657dd55173160bc0fa4e58916 languageName: node linkType: hard -"@commitlint/read@npm:^16.2.1": - version: 16.2.1 - resolution: "@commitlint/read@npm:16.2.1" +"@commitlint/read@npm:^17.5.1": + version: 17.5.1 + resolution: "@commitlint/read@npm:17.5.1" dependencies: - "@commitlint/top-level": ^16.2.1 - "@commitlint/types": ^16.2.1 - fs-extra: ^10.0.0 - git-raw-commits: ^2.0.0 - checksum: c2eb6c299a6af0ffda8ba27a5534210638b227855dd5d01d757fbf7a26a05a5c3d4d1f30e91bdd5ce12de023e482a329fad049df1f5b0f232049e7212e3cf947 + "@commitlint/top-level": ^17.4.0 + "@commitlint/types": ^17.4.4 + fs-extra: ^11.0.0 + git-raw-commits: ^2.0.11 + minimist: ^1.2.6 + checksum: 62ee4f7a47b22a8571ae313bca36b418805a248f4986557f38f06317c44b6d18072889f95e7bc22bbb33a2f2b08236f74596ff28e3dbd0894249477a9df367c3 languageName: node linkType: hard -"@commitlint/resolve-extends@npm:^16.2.1": - version: 16.2.1 - resolution: "@commitlint/resolve-extends@npm:16.2.1" +"@commitlint/resolve-extends@npm:^17.4.4": + version: 17.4.4 + resolution: "@commitlint/resolve-extends@npm:17.4.4" dependencies: - "@commitlint/config-validator": ^16.2.1 - "@commitlint/types": ^16.2.1 + "@commitlint/config-validator": ^17.4.4 + "@commitlint/types": ^17.4.4 import-fresh: ^3.0.0 - lodash: ^4.17.19 + lodash.mergewith: ^4.6.2 resolve-from: ^5.0.0 resolve-global: ^1.0.0 - checksum: e710fcb24573e1027bf0b7336983cd0539c32734b01831eb0da8a7f500d0734669d38ea75ff93e90c162417fd4db5cc460c2f122d772dfa0f4577f49caaee687 + checksum: d7bf1ff1ad3db8750421b252d79cf7b96cf07d72cad8cc3f73c1363a8e68c0afde611d38ae6f213bbb54e3248160c6b9425578f3d0f8f790e84aea811d748b3e languageName: node linkType: hard -"@commitlint/rules@npm:^16.2.4": - version: 16.2.4 - resolution: "@commitlint/rules@npm:16.2.4" +"@commitlint/rules@npm:^17.6.1": + version: 17.6.1 + resolution: "@commitlint/rules@npm:17.6.1" dependencies: - "@commitlint/ensure": ^16.2.1 - "@commitlint/message": ^16.2.1 - "@commitlint/to-lines": ^16.2.1 - "@commitlint/types": ^16.2.1 + "@commitlint/ensure": ^17.4.4 + "@commitlint/message": ^17.4.2 + "@commitlint/to-lines": ^17.4.0 + "@commitlint/types": ^17.4.4 execa: ^5.0.0 - checksum: 117373efcec540512747832ab75af30a584e054ff92cce6f47b7fc552cc2048af5f9812b78d1dd5b128e7eeec7623f7bd45f139451020258d87548348c5bf08b + checksum: e00b453e8a66eee6a335223a67cb328943133c54a9b416a7700857a917ea5ab3a6394c6c37e6123a8244bc2625e765c0f7182b7dfc2d4dee94577bb300d6d3a0 languageName: node linkType: hard -"@commitlint/to-lines@npm:^16.2.1": - version: 16.2.1 - resolution: "@commitlint/to-lines@npm:16.2.1" - checksum: 94b1523298f335583307cff4f634137788bdce67f572dcdd6f08ca09cbe1176193ba2e308158696951ce3dd93cb2c6d1d8946e8ee376f506ac5212a65d87ed58 +"@commitlint/to-lines@npm:^17.4.0": + version: 17.4.0 + resolution: "@commitlint/to-lines@npm:17.4.0" + checksum: 841f90f606238e145ab4ba02940662d511fc04fe553619900152a8542170fe664031b95d820ffaeb8864d4851344278e662ef29637d763fc19fd828e0f8d139b languageName: node linkType: hard -"@commitlint/top-level@npm:^16.2.1": - version: 16.2.1 - resolution: "@commitlint/top-level@npm:16.2.1" +"@commitlint/top-level@npm:^17.4.0": + version: 17.4.0 + resolution: "@commitlint/top-level@npm:17.4.0" dependencies: find-up: ^5.0.0 - checksum: db6ae0483a4b7fbe3e2ca02541049180f87d88417039ea58e7539f22fb042fe50e465f5654394555bf9759b1c1e6130b435e4e80fbcec1d0e58cf24f9ccaf728 + checksum: 14cd77e982d2dd7989718dafdbf7a2168a5fb387005e0686c2dfa9ffc36bb9a749e5d80a151884459e4d8c88564339688dca26e9c711abe043beeb3f30c3dfd6 languageName: node linkType: hard -"@commitlint/types@npm:^16.2.1": - version: 16.2.1 - resolution: "@commitlint/types@npm:16.2.1" +"@commitlint/types@npm:^17.4.4": + version: 17.4.4 + resolution: "@commitlint/types@npm:17.4.4" dependencies: - chalk: ^4.0.0 - checksum: 93af3c26c36f3b11d99f0cbbb09c8952581eed2a6b7763eb728c0e7e7ecff5072de064a208b80225fb51533823af84ee3117d9c2efbcb63d1f5cfbf6fbfb8ed8 + chalk: ^4.1.0 + checksum: 03c52429052d161710896d198000196bd2e60be0fd71459b22133dd83dee43e8d05ea8ee703c8369823bc40f77a54881b80d8aa4368ac52aea7f30fb234b73d2 languageName: node linkType: hard @@ -738,9 +753,9 @@ __metadata: languageName: node linkType: hard -"@cypress/code-coverage@npm:3.10.0": - version: 3.10.0 - resolution: "@cypress/code-coverage@npm:3.10.0" +"@cypress/code-coverage@npm:3.10.4": + version: 3.10.4 + resolution: "@cypress/code-coverage@npm:3.10.4" dependencies: "@cypress/webpack-preprocessor": ^5.11.0 chalk: 4.1.2 @@ -749,11 +764,11 @@ __metadata: execa: 4.1.0 globby: 11.0.4 istanbul-lib-coverage: 3.0.0 - js-yaml: 3.14.1 + js-yaml: 4.1.0 nyc: 15.1.0 peerDependencies: cypress: "*" - checksum: e82d0ea1bb4d8eaf802fd0d916f5c72b5590ff0b96f31b2606881628d11d84c49e8299639cb54a2aa9b3ff12f3903d8558a428b250988a9b7e07a1fc42747675 + checksum: a758f06770e880c40f100fc42509db27b677066cd8520c3eb350b0016d32ac9a3df80da899f750a58f45957eeb4057b6fff5fa8d88fac1c5e41829454862dac6 languageName: node linkType: hard @@ -818,12 +833,11 @@ __metadata: languageName: node linkType: hard -"@emotion/babel-plugin@npm:^11.10.5": - version: 11.10.5 - resolution: "@emotion/babel-plugin@npm:11.10.5" +"@emotion/babel-plugin@npm:^11.10.8": + version: 11.10.8 + resolution: "@emotion/babel-plugin@npm:11.10.8" dependencies: "@babel/helper-module-imports": ^7.16.7 - "@babel/plugin-syntax-jsx": ^7.17.12 "@babel/runtime": ^7.18.3 "@emotion/hash": ^0.9.0 "@emotion/memoize": ^0.8.0 @@ -833,23 +847,21 @@ __metadata: escape-string-regexp: ^4.0.0 find-root: ^1.1.0 source-map: ^0.5.7 - stylis: 4.1.3 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: e3353499c76c4422d6e900c0dfab73607056d9da86161a3f27c3459c193c4908050c5d252c68fcde231e13f02a9d8e0dc07d260317ae0e5206841e331cc4caae + stylis: 4.1.4 + checksum: b8e2ed0c68a2ea423c5c2efdcf37e0b482dcb74caba042d2987a058f151819f0574fb2298fba4f76fa23265e1975dcf337f1f59ad6f35a33db2f9bf1afe03ee0 languageName: node linkType: hard -"@emotion/cache@npm:11.10.5, @emotion/cache@npm:^11.10.5": - version: 11.10.5 - resolution: "@emotion/cache@npm:11.10.5" +"@emotion/cache@npm:11.10.8, @emotion/cache@npm:^11.10.7, @emotion/cache@npm:^11.10.8": + version: 11.10.8 + resolution: "@emotion/cache@npm:11.10.8" dependencies: "@emotion/memoize": ^0.8.0 "@emotion/sheet": ^1.2.1 "@emotion/utils": ^1.2.0 "@emotion/weak-memoize": ^0.3.0 - stylis: 4.1.3 - checksum: 1dd2d9af2d3ecbd3d4469ecdf91a335eef6034c851b57a474471b2d2280613eb35bbed98c0368cc4625f188619fbdaf04cf07e8107aaffce94b2178444c0fe7b + stylis: 4.1.4 + checksum: a67751db54077813ee3a011f255ee5c79eb375284cec8404866d44da904d69b037566047ca52549772b8038f8cd00ebd092c628ddc764fe89d6932c16afd71e3 languageName: node linkType: hard @@ -876,27 +888,24 @@ __metadata: languageName: node linkType: hard -"@emotion/react@npm:11.10.5": - version: 11.10.5 - resolution: "@emotion/react@npm:11.10.5" +"@emotion/react@npm:11.10.8": + version: 11.10.8 + resolution: "@emotion/react@npm:11.10.8" dependencies: "@babel/runtime": ^7.18.3 - "@emotion/babel-plugin": ^11.10.5 - "@emotion/cache": ^11.10.5 + "@emotion/babel-plugin": ^11.10.8 + "@emotion/cache": ^11.10.8 "@emotion/serialize": ^1.1.1 "@emotion/use-insertion-effect-with-fallbacks": ^1.0.0 "@emotion/utils": ^1.2.0 "@emotion/weak-memoize": ^0.3.0 hoist-non-react-statics: ^3.3.1 peerDependencies: - "@babel/core": ^7.0.0 react: ">=16.8.0" peerDependenciesMeta: - "@babel/core": - optional: true "@types/react": optional: true - checksum: 32b67b28e9b6d6c53b970072680697f04c2521441050bdeb19a1a7f0164af549b4dad39ff375eda1b6a3cf1cc86ba2c6fa55460ec040e6ebbca3e9ec58353cf7 + checksum: ac56ef6375fa3bc7acd5a62eb5b2cf9eb4b1586a6a06cb05caab11a516700cf2f7857e0ad65bac57abd74e1141388e01fe65238f2de0075a912e129271c658b8 languageName: node linkType: hard @@ -937,26 +946,23 @@ __metadata: languageName: node linkType: hard -"@emotion/styled@npm:11.10.5": - version: 11.10.5 - resolution: "@emotion/styled@npm:11.10.5" +"@emotion/styled@npm:11.10.8": + version: 11.10.8 + resolution: "@emotion/styled@npm:11.10.8" dependencies: "@babel/runtime": ^7.18.3 - "@emotion/babel-plugin": ^11.10.5 + "@emotion/babel-plugin": ^11.10.8 "@emotion/is-prop-valid": ^1.2.0 "@emotion/serialize": ^1.1.1 "@emotion/use-insertion-effect-with-fallbacks": ^1.0.0 "@emotion/utils": ^1.2.0 peerDependencies: - "@babel/core": ^7.0.0 "@emotion/react": ^11.0.0-rc.0 react: ">=16.8.0" peerDependenciesMeta: - "@babel/core": - optional: true "@types/react": optional: true - checksum: 1cec5f6aeb227a7255141031e8594f38ad83902413472aae0a46c27e5f9769c01e23c1ad39adee408d8a2168a697464314d1a0c4f50b31a5d25ea506b2d7bbc8 + checksum: ceff0ac12f92289ea8febb1c3b4b70c1f3e110354452b9f6ee6461a7c01a24a0e2f071eb4303a7a289aad5cc8b62096561a150b0b6ed096bb1fd3e8503633226 languageName: node linkType: hard @@ -990,20 +996,45 @@ __metadata: languageName: node linkType: hard -"@eslint/eslintrc@npm:^0.4.3": - version: 0.4.3 - resolution: "@eslint/eslintrc@npm:0.4.3" +"@eslint-community/eslint-utils@npm:^4.2.0": + version: 4.4.0 + resolution: "@eslint-community/eslint-utils@npm:4.4.0" + dependencies: + eslint-visitor-keys: ^3.3.0 + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: cdfe3ae42b4f572cbfb46d20edafe6f36fc5fb52bf2d90875c58aefe226892b9677fef60820e2832caf864a326fe4fc225714c46e8389ccca04d5f9288aabd22 + languageName: node + linkType: hard + +"@eslint-community/regexpp@npm:^4.4.0": + version: 4.5.0 + resolution: "@eslint-community/regexpp@npm:4.5.0" + checksum: 99c01335947dbd7f2129e954413067e217ccaa4e219fe0917b7d2bd96135789384b8fedbfb8eb09584d5130b27a7b876a7150ab7376f51b3a0c377d5ce026a10 + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^2.0.2": + version: 2.0.2 + resolution: "@eslint/eslintrc@npm:2.0.2" dependencies: ajv: ^6.12.4 - debug: ^4.1.1 - espree: ^7.3.0 - globals: ^13.9.0 - ignore: ^4.0.6 + debug: ^4.3.2 + espree: ^9.5.1 + globals: ^13.19.0 + ignore: ^5.2.0 import-fresh: ^3.2.1 - js-yaml: ^3.13.1 - minimatch: ^3.0.4 + js-yaml: ^4.1.0 + minimatch: ^3.1.2 strip-json-comments: ^3.1.1 - checksum: 03a7704150b868c318aab6a94d87a33d30dc2ec579d27374575014f06237ba1370ae11178db772f985ef680d469dc237e7b16a1c5d8edaaeb8c3733e7a95a6d3 + checksum: cfcf5e12c7b2c4476482e7f12434e76eae16fcd163ee627309adb10b761e5caa4a4e52ed7be464423320ff3d11eca5b50de5bf8be3e25834222470835dd5c801 + languageName: node + linkType: hard + +"@eslint/js@npm:8.39.0": + version: 8.39.0 + resolution: "@eslint/js@npm:8.39.0" + checksum: 63fe36e2bfb5ff5705d1c1a8ccecd8eb2f81d9af239713489e767b0e398759c0177fcc75ad62581d02942f2776903a8496d5fae48dc2d883dff1b96fcb19e9e2 languageName: node linkType: hard @@ -1053,11 +1084,24 @@ __metadata: languageName: node linkType: hard -"@graasp/query-client@npm:0.3.2": - version: 0.3.2 - resolution: "@graasp/query-client@npm:0.3.2" +"@graasp/etherpad-api@npm:2.1.1": + version: 2.1.1 + resolution: "@graasp/etherpad-api@npm:2.1.1" + dependencies: + "@types/sanitize-html": ^2.9.0 + axios: ^1.3.5 + compare-versions: ^3.4.0 + http-errors: ^1.7.1 + sanitize-html: ^2.10.0 + checksum: 30042c1716fb55a18e8230db6934add149639cabf00d1ac27d4e163a5381f906bdc36a0a38f5454b6d12ca2020adccd7d5784888e59887adc2b3db7929059f68 + languageName: node + linkType: hard + +"@graasp/query-client@npm:0.4.1": + version: 0.4.1 + resolution: "@graasp/query-client@npm:0.4.1" dependencies: - "@graasp/sdk": 0.8.1 + "@graasp/sdk": 0.10.0 "@graasp/translations": 1.8.0 axios: 0.27.2 crypto-js: 4.1.1 @@ -1068,13 +1112,13 @@ __metadata: uuid: 9.0.0 peerDependencies: react: ^17.0.0 - checksum: 454c0e8e943efccb75e740995376dc713bdf0b8d7f619f59f1df35e4b4d7dc12c24430491f431494f94942356ac743c968bffd364275f73d531b67e30795d41f + checksum: 5ab2f261582838f822ee330d97e936163b0b222bafa113d9a8a417bebe17bdf9c645541ba682c09af480ab9747d9dbd16811a5feea9890fb0d17558234f7a14c languageName: node linkType: hard -"@graasp/sdk@npm:0.8.1": - version: 0.8.1 - resolution: "@graasp/sdk@npm:0.8.1" +"@graasp/sdk@npm:0.10.0": + version: 0.10.0 + resolution: "@graasp/sdk@npm:0.10.0" dependencies: "@fastify/secure-session": 5.3.0 aws-sdk: 2.1310.0 @@ -1085,24 +1129,34 @@ __metadata: qs: 6.11.0 slonik: 28.1.1 uuid: 9.0.0 - checksum: b2e8dec4aa624faef523e3452d117d6d565c474b5a51edbd4c98de0d1d0cf515fa067d5e47ffe57ac84a76668e15b473363df181cfcdf07cd0942f82a2c9281e + checksum: 5b7d89d72c12be75d9fcba69c9545be4d5caf38685270f66934c9b0c221968d33f4ee20c4c18573e3ed89641461faa12ae28acfcb9511ca45f50b61bb6068631 languageName: node linkType: hard -"@graasp/sdk@npm:0.9.1": - version: 0.9.1 - resolution: "@graasp/sdk@npm:0.9.1" +"@graasp/sdk@npm:0.12.0": + version: 0.12.0 + resolution: "@graasp/sdk@npm:0.12.0" dependencies: "@fastify/secure-session": 5.3.0 - aws-sdk: 2.1310.0 + "@graasp/etherpad-api": 2.1.1 + aws-sdk: 2.1356.0 fastify: 3.29.5 fluent-json-schema: 3.1.0 - immutable: 4.2.4 + immutable: 4.3.0 js-cookie: 3.0.1 - qs: 6.11.0 + qs: 6.11.1 slonik: 28.1.1 uuid: 9.0.0 - checksum: 28498b43bb23a4844aaea9e42301e97ce90758a338a6e54c3cb85f023ffff92e99f976728dd7670a09643b162ad912786e483e0d4a31066b9ea1afc821f389c2 + checksum: 784b0758d30d41d4bdff9a258f4e5d9e94370c25a29cc0a0e657c54d0533236a340bcd929e68ac6301855f3ed22fdf374a9579f890a5ac72446c4e4a272413e7 + languageName: node + linkType: hard + +"@graasp/translations@npm:1.12.0": + version: 1.12.0 + resolution: "@graasp/translations@npm:1.12.0" + dependencies: + i18next: 21.8.1 + checksum: 0c8f21bd9116b9b248575e3b94b0bcfaa431e5ae4af9310423f23341df613a409874dc8f96961781090f018c659e6263b72f75d7b0b55127e62b164425669950 languageName: node linkType: hard @@ -1115,14 +1169,14 @@ __metadata: languageName: node linkType: hard -"@graasp/ui@npm:2.1.0": - version: 2.1.0 - resolution: "@graasp/ui@npm:2.1.0" +"@graasp/ui@npm:2.5.0": + version: 2.5.0 + resolution: "@graasp/ui@npm:2.5.0" dependencies: - "@graasp/sdk": 0.8.1 + "@graasp/sdk": 0.12.0 clsx: 1.1.1 http-status-codes: 2.2.0 - immutable: 4.2.4 + immutable: 4.3.0 katex: 0.16.0 lodash.truncate: 4.4.2 qs: 6.11.0 @@ -1150,7 +1204,7 @@ __metadata: optional: true ag-grid-react: optional: true - checksum: 569a01f77d9a5b9b7bf28930b60f0199e2dadb911e831d709f04b40c7a46cc0f32392085e3edb0447d1eb16684d0e1e6a2556dcb0787b5fdfb348e158e41d34d + checksum: 7663e2cf56c1cd3c83faecb2f6565f2738fccc2f472d90cf00e6408654d5ad31bd8ff907eb15820f458b8324373750f8bc45b444d51f61bf5ac66065d9e7ec93 languageName: node linkType: hard @@ -1170,18 +1224,25 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/config-array@npm:^0.5.0": - version: 0.5.0 - resolution: "@humanwhocodes/config-array@npm:0.5.0" +"@humanwhocodes/config-array@npm:^0.11.8": + version: 0.11.8 + resolution: "@humanwhocodes/config-array@npm:0.11.8" dependencies: - "@humanwhocodes/object-schema": ^1.2.0 + "@humanwhocodes/object-schema": ^1.2.1 debug: ^4.1.1 - minimatch: ^3.0.4 - checksum: 44ee6a9f05d93dd9d5935a006b17572328ba9caff8002442f601736cbda79c580cc0f5a49ce9eb88fbacc5c3a6b62098357c2e95326cd17bb9f1a6c61d6e95e7 + minimatch: ^3.0.5 + checksum: 0fd6b3c54f1674ce0a224df09b9c2f9846d20b9e54fabae1281ecfc04f2e6ad69bf19e1d6af6a28f88e8aa3990168b6cb9e1ef755868c3256a630605ec2cb1d3 languageName: node linkType: hard -"@humanwhocodes/object-schema@npm:^1.2.0": +"@humanwhocodes/module-importer@npm:^1.0.1": + version: 1.0.1 + resolution: "@humanwhocodes/module-importer@npm:1.0.1" + checksum: 0fd22007db8034a2cdf2c764b140d37d9020bbfce8a49d3ec5c05290e77d4b0263b1b972b752df8c89e5eaa94073408f2b7d977aed131faf6cf396ebb5d7fb61 + languageName: node + linkType: hard + +"@humanwhocodes/object-schema@npm:^1.2.1": version: 1.2.1 resolution: "@humanwhocodes/object-schema@npm:1.2.1" checksum: a824a1ec31591231e4bad5787641f59e9633827d0a2eaae131a288d33c9ef0290bd16fda8da6f7c0fcb014147865d12118df10db57f27f41e20da92369fcb3f1 @@ -1299,6 +1360,16 @@ __metadata: languageName: node linkType: hard +"@jridgewell/trace-mapping@npm:^0.3.17": + version: 0.3.18 + resolution: "@jridgewell/trace-mapping@npm:0.3.18" + dependencies: + "@jridgewell/resolve-uri": 3.1.0 + "@jridgewell/sourcemap-codec": 1.4.14 + checksum: 0572669f855260808c16fe8f78f5f1b4356463b11d3f2c7c0b5580c8ba1cbf4ae53efe9f627595830856e57dbac2325ac17eb0c3dd0ec42102e6f227cc289c02 + languageName: node + linkType: hard + "@jridgewell/trace-mapping@npm:^0.3.9": version: 0.3.17 resolution: "@jridgewell/trace-mapping@npm:0.3.17" @@ -1356,9 +1427,9 @@ __metadata: linkType: hard "@mui/core-downloads-tracker@npm:^5.10.12": - version: 5.11.5 - resolution: "@mui/core-downloads-tracker@npm:5.11.5" - checksum: b04c0a0ebe83ee09e476ca8e5de24401555e78810a2eb6e989d177729f35ec778b22cf339e5124e5533271fd9aa71f89defd72cd16baf885d88c3654b54d6879 + version: 5.12.2 + resolution: "@mui/core-downloads-tracker@npm:5.12.2" + checksum: d748bdc56df6fdfe6712550a94263cf094c53ddcb70f6a8f633caf23927edf5ac88b1f888429d895fe2a5045b27eb7aa9826ccee5b917e31973667d604ed87fe languageName: node linkType: hard @@ -1441,12 +1512,12 @@ __metadata: languageName: node linkType: hard -"@mui/private-theming@npm:^5.11.2": - version: 5.11.2 - resolution: "@mui/private-theming@npm:5.11.2" +"@mui/private-theming@npm:^5.12.0": + version: 5.12.0 + resolution: "@mui/private-theming@npm:5.12.0" dependencies: - "@babel/runtime": ^7.20.7 - "@mui/utils": ^5.11.2 + "@babel/runtime": ^7.21.0 + "@mui/utils": ^5.12.0 prop-types: ^15.8.1 peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 @@ -1454,17 +1525,17 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 4a36ca48a7a8187d46c3e0d21ec08f7cb732bd4a5bac91c959337c8b0af031beb3a6c5ceac979b685c2e0e66321273d55dd54648f925bfdb946d6513fc6150e6 + checksum: 761bc7a57e1643c2c4c327886882fa5efc7bacae1c6fffe6be4197f49d337261c916a883d96996445efcdedc0672251725c1e5b264b6250d6c9527fd0cafcc62 languageName: node linkType: hard -"@mui/styled-engine@npm:^5.11.0": - version: 5.11.0 - resolution: "@mui/styled-engine@npm:5.11.0" +"@mui/styled-engine@npm:^5.12.0": + version: 5.12.0 + resolution: "@mui/styled-engine@npm:5.12.0" dependencies: - "@babel/runtime": ^7.20.6 - "@emotion/cache": ^11.10.5 - csstype: ^3.1.1 + "@babel/runtime": ^7.21.0 + "@emotion/cache": ^11.10.7 + csstype: ^3.1.2 prop-types: ^15.8.1 peerDependencies: "@emotion/react": ^11.4.1 @@ -1475,21 +1546,21 @@ __metadata: optional: true "@emotion/styled": optional: true - checksum: ddc486bc5e0e8e7b683e4c3bffecd11c2ce1e6c67a485354c5fc5a6fe04ed5ce76db737609a2ae04779e9d5f57c7936174d458a3795eab62291c2d7681184062 + checksum: 4a415473cf62aa05012f667dd2e9b1dc2fb175be5b0c4d0b8df541e2dac3d7db410e920e0d5910c8e2b8996a4fb51f74d79483e2878a9b5c0d334498f5537d74 languageName: node linkType: hard "@mui/system@npm:^5.10.10, @mui/system@npm:^5.10.12": - version: 5.11.5 - resolution: "@mui/system@npm:5.11.5" - dependencies: - "@babel/runtime": ^7.20.7 - "@mui/private-theming": ^5.11.2 - "@mui/styled-engine": ^5.11.0 - "@mui/types": ^7.2.3 - "@mui/utils": ^5.11.2 + version: 5.12.1 + resolution: "@mui/system@npm:5.12.1" + dependencies: + "@babel/runtime": ^7.21.0 + "@mui/private-theming": ^5.12.0 + "@mui/styled-engine": ^5.12.0 + "@mui/types": ^7.2.4 + "@mui/utils": ^5.12.0 clsx: ^1.2.1 - csstype: ^3.1.1 + csstype: ^3.1.2 prop-types: ^15.8.1 peerDependencies: "@emotion/react": ^11.5.0 @@ -1503,222 +1574,131 @@ __metadata: optional: true "@types/react": optional: true - checksum: 1c896d18f8a8cc4f27d0700046e2dfe3d59d3a81d363ba2ed01341415fce675e5651aafe5c548436fa459dfda2a0c44b6e00fd6917111f388701a64303973532 + checksum: b951959bf5e5af581319354c044f441d97849ff120cfec111d2ed5e7fa05efd63721acff96f48093b8e2bdeb5ccbe35c48613fb925be2b58c596447d10dbed3e languageName: node linkType: hard -"@mui/types@npm:^7.2.0, @mui/types@npm:^7.2.3": - version: 7.2.3 - resolution: "@mui/types@npm:7.2.3" +"@mui/types@npm:^7.2.0, @mui/types@npm:^7.2.4": + version: 7.2.4 + resolution: "@mui/types@npm:7.2.4" peerDependencies: "@types/react": "*" peerDependenciesMeta: "@types/react": optional: true - checksum: b8511cb78f8df25c8978317ad3fd585c782116b657f2d32233352c09d415c77040e532f41bbe96de6ad46be87138767d3129a9f0de3561900a9a64db7693bce4 + checksum: 16bea0547492193a22fd1794382f314698a114f6c673825314c66b56766c3a9d305992cc495684722b7be16a1ecf7e6e48a79caa64f90c439b530e8c02611a61 languageName: node linkType: hard -"@mui/utils@npm:^5.10.9, @mui/utils@npm:^5.11.2": - version: 5.11.2 - resolution: "@mui/utils@npm:5.11.2" +"@mui/utils@npm:^5.10.9, @mui/utils@npm:^5.12.0": + version: 5.12.0 + resolution: "@mui/utils@npm:5.12.0" dependencies: - "@babel/runtime": ^7.20.7 + "@babel/runtime": ^7.21.0 "@types/prop-types": ^15.7.5 "@types/react-is": ^16.7.1 || ^17.0.0 prop-types: ^15.8.1 react-is: ^18.2.0 peerDependencies: react: ^17.0.0 || ^18.0.0 - checksum: 69091d9120681dee29fc20220b7db5dd61334194c139df735d932f072dab00eeae6e440058ffbccebbe93d4a3a998c23b6f4df570cb66cdacd023fce9f0f5912 + checksum: 87b2c7468803b083f50af28d7c215c45291e73fef16570848b596d0f1cde1fc613c20e8951f431217b31451de254744abd50eda5013dedec4982420b5bf1c6b6 languageName: node linkType: hard -"@next/env@npm:12.1.6": - version: 12.1.6 - resolution: "@next/env@npm:12.1.6" - checksum: e6a4f189f0d653d13dc7ad510f6c9d2cf690bfd9e07c554bd501b840f8dabc3da5adcab874b0bc01aab86c3647cff4fb84692e3c3b28125af26f0b05cd4c7fcf +"@next/env@npm:12.2.6": + version: 12.2.6 + resolution: "@next/env@npm:12.2.6" + checksum: 4daf2704c648ef06c470156b7e945913a8ae7ed78a6bd8b4748f0d720792d3668118e41cd60b39a63d036f8b97c17f748927790e3e4f0bece3ac7966f7d7e399 languageName: node linkType: hard -"@next/env@npm:13.1.4": - version: 13.1.4 - resolution: "@next/env@npm:13.1.4" - checksum: 68e222462d35959f183aa17829e3b9045830d0a1030a64bc40fe556bde70584cab7f4bde3bf53abbdbf110fefb2c00a0c573180a50536676919016cded945e09 - languageName: node - linkType: hard - -"@next/swc-android-arm-eabi@npm:12.1.6": - version: 12.1.6 - resolution: "@next/swc-android-arm-eabi@npm:12.1.6" +"@next/swc-android-arm-eabi@npm:12.2.6": + version: 12.2.6 + resolution: "@next/swc-android-arm-eabi@npm:12.2.6" conditions: os=android & cpu=arm languageName: node linkType: hard -"@next/swc-android-arm-eabi@npm:13.1.4": - version: 13.1.4 - resolution: "@next/swc-android-arm-eabi@npm:13.1.4" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - -"@next/swc-android-arm64@npm:12.1.6": - version: 12.1.6 - resolution: "@next/swc-android-arm64@npm:12.1.6" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"@next/swc-android-arm64@npm:13.1.4": - version: 13.1.4 - resolution: "@next/swc-android-arm64@npm:13.1.4" +"@next/swc-android-arm64@npm:12.2.6": + version: 12.2.6 + resolution: "@next/swc-android-arm64@npm:12.2.6" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@next/swc-darwin-arm64@npm:12.1.6": - version: 12.1.6 - resolution: "@next/swc-darwin-arm64@npm:12.1.6" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@next/swc-darwin-arm64@npm:13.1.4": - version: 13.1.4 - resolution: "@next/swc-darwin-arm64@npm:13.1.4" +"@next/swc-darwin-arm64@npm:12.2.6": + version: 12.2.6 + resolution: "@next/swc-darwin-arm64@npm:12.2.6" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@next/swc-darwin-x64@npm:12.1.6": - version: 12.1.6 - resolution: "@next/swc-darwin-x64@npm:12.1.6" +"@next/swc-darwin-x64@npm:12.2.6": + version: 12.2.6 + resolution: "@next/swc-darwin-x64@npm:12.2.6" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@next/swc-darwin-x64@npm:13.1.4": - version: 13.1.4 - resolution: "@next/swc-darwin-x64@npm:13.1.4" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@next/swc-freebsd-x64@npm:13.1.4": - version: 13.1.4 - resolution: "@next/swc-freebsd-x64@npm:13.1.4" +"@next/swc-freebsd-x64@npm:12.2.6": + version: 12.2.6 + resolution: "@next/swc-freebsd-x64@npm:12.2.6" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@next/swc-linux-arm-gnueabihf@npm:12.1.6": - version: 12.1.6 - resolution: "@next/swc-linux-arm-gnueabihf@npm:12.1.6" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@next/swc-linux-arm-gnueabihf@npm:13.1.4": - version: 13.1.4 - resolution: "@next/swc-linux-arm-gnueabihf@npm:13.1.4" +"@next/swc-linux-arm-gnueabihf@npm:12.2.6": + version: 12.2.6 + resolution: "@next/swc-linux-arm-gnueabihf@npm:12.2.6" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@next/swc-linux-arm64-gnu@npm:12.1.6": - version: 12.1.6 - resolution: "@next/swc-linux-arm64-gnu@npm:12.1.6" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - -"@next/swc-linux-arm64-gnu@npm:13.1.4": - version: 13.1.4 - resolution: "@next/swc-linux-arm64-gnu@npm:13.1.4" +"@next/swc-linux-arm64-gnu@npm:12.2.6": + version: 12.2.6 + resolution: "@next/swc-linux-arm64-gnu@npm:12.2.6" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@next/swc-linux-arm64-musl@npm:12.1.6": - version: 12.1.6 - resolution: "@next/swc-linux-arm64-musl@npm:12.1.6" +"@next/swc-linux-arm64-musl@npm:12.2.6": + version: 12.2.6 + resolution: "@next/swc-linux-arm64-musl@npm:12.2.6" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@next/swc-linux-arm64-musl@npm:13.1.4": - version: 13.1.4 - resolution: "@next/swc-linux-arm64-musl@npm:13.1.4" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - -"@next/swc-linux-x64-gnu@npm:12.1.6": - version: 12.1.6 - resolution: "@next/swc-linux-x64-gnu@npm:12.1.6" +"@next/swc-linux-x64-gnu@npm:12.2.6": + version: 12.2.6 + resolution: "@next/swc-linux-x64-gnu@npm:12.2.6" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@next/swc-linux-x64-gnu@npm:13.1.4": - version: 13.1.4 - resolution: "@next/swc-linux-x64-gnu@npm:13.1.4" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - -"@next/swc-linux-x64-musl@npm:12.1.6": - version: 12.1.6 - resolution: "@next/swc-linux-x64-musl@npm:12.1.6" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - -"@next/swc-linux-x64-musl@npm:13.1.4": - version: 13.1.4 - resolution: "@next/swc-linux-x64-musl@npm:13.1.4" +"@next/swc-linux-x64-musl@npm:12.2.6": + version: 12.2.6 + resolution: "@next/swc-linux-x64-musl@npm:12.2.6" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@next/swc-win32-arm64-msvc@npm:12.1.6": - version: 12.1.6 - resolution: "@next/swc-win32-arm64-msvc@npm:12.1.6" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@next/swc-win32-arm64-msvc@npm:13.1.4": - version: 13.1.4 - resolution: "@next/swc-win32-arm64-msvc@npm:13.1.4" +"@next/swc-win32-arm64-msvc@npm:12.2.6": + version: 12.2.6 + resolution: "@next/swc-win32-arm64-msvc@npm:12.2.6" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@next/swc-win32-ia32-msvc@npm:12.1.6": - version: 12.1.6 - resolution: "@next/swc-win32-ia32-msvc@npm:12.1.6" +"@next/swc-win32-ia32-msvc@npm:12.2.6": + version: 12.2.6 + resolution: "@next/swc-win32-ia32-msvc@npm:12.2.6" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@next/swc-win32-ia32-msvc@npm:13.1.4": - version: 13.1.4 - resolution: "@next/swc-win32-ia32-msvc@npm:13.1.4" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"@next/swc-win32-x64-msvc@npm:12.1.6": - version: 12.1.6 - resolution: "@next/swc-win32-x64-msvc@npm:12.1.6" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"@next/swc-win32-x64-msvc@npm:13.1.4": - version: 13.1.4 - resolution: "@next/swc-win32-x64-msvc@npm:13.1.4" +"@next/swc-win32-x64-msvc@npm:12.2.6": + version: 12.2.6 + resolution: "@next/swc-win32-x64-msvc@npm:12.2.6" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -1740,7 +1720,7 @@ __metadata: languageName: node linkType: hard -"@nodelib/fs.walk@npm:^1.2.3": +"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": version: 1.2.8 resolution: "@nodelib/fs.walk@npm:1.2.8" dependencies: @@ -1785,105 +1765,112 @@ __metadata: linkType: hard "@popperjs/core@npm:^2.11.6": - version: 2.11.6 - resolution: "@popperjs/core@npm:2.11.6" - checksum: 47fb328cec1924559d759b48235c78574f2d71a8a6c4c03edb6de5d7074078371633b91e39bbf3f901b32aa8af9b9d8f82834856d2f5737a23475036b16817f0 + version: 2.11.7 + resolution: "@popperjs/core@npm:2.11.7" + checksum: 5b6553747899683452a1d28898c1b39173a4efd780e74360bfcda8eb42f1c5e819602769c81a10920fc68c881d07fb40429604517d499567eac079cfa6470f19 languageName: node linkType: hard -"@sentry/browser@npm:6.19.2": - version: 6.19.2 - resolution: "@sentry/browser@npm:6.19.2" - dependencies: - "@sentry/core": 6.19.2 - "@sentry/types": 6.19.2 - "@sentry/utils": 6.19.2 - tslib: ^1.9.3 - checksum: d84ed8bed929f8c5628d68f13e688b266b1dbabbc89e316ef13e5b595bf0707cade996911e1665b052245f2bc9b86145946f364edbe05fbb84c917333e8904c8 +"@remix-run/router@npm:1.5.0": + version: 1.5.0 + resolution: "@remix-run/router@npm:1.5.0" + checksum: 9c510c174af1553edd1f039ba16e7e3d34e04d53b3bac18814660e31cd0c48297ea4291ff86d0736b560123ebc63ecb62fa525829181d16a8dad15270d6672d7 languageName: node linkType: hard -"@sentry/core@npm:6.19.2": - version: 6.19.2 - resolution: "@sentry/core@npm:6.19.2" +"@sentry-internal/tracing@npm:7.50.0": + version: 7.50.0 + resolution: "@sentry-internal/tracing@npm:7.50.0" dependencies: - "@sentry/hub": 6.19.2 - "@sentry/minimal": 6.19.2 - "@sentry/types": 6.19.2 - "@sentry/utils": 6.19.2 + "@sentry/core": 7.50.0 + "@sentry/types": 7.50.0 + "@sentry/utils": 7.50.0 tslib: ^1.9.3 - checksum: 0b683287973d14b98a6a7b09bb8a30e1fbad5cbd144b34bb999fe9b9ffb15bfbfe3fc7eccdb8b308ab707c9a243b561feb3ccea196b10e01e27bc85385b87b13 + checksum: 5015b91bffa97a78522b1638d409074682b60bfd2a600e0bfb191ce6afd6dd7ee4fcdbf7cdd818142313001b77033b980a8645bfb9939bf123e3513a29d097ad languageName: node linkType: hard -"@sentry/hub@npm:6.19.2": - version: 6.19.2 - resolution: "@sentry/hub@npm:6.19.2" +"@sentry/browser@npm:7.50.0": + version: 7.50.0 + resolution: "@sentry/browser@npm:7.50.0" dependencies: - "@sentry/types": 6.19.2 - "@sentry/utils": 6.19.2 + "@sentry-internal/tracing": 7.50.0 + "@sentry/core": 7.50.0 + "@sentry/replay": 7.50.0 + "@sentry/types": 7.50.0 + "@sentry/utils": 7.50.0 tslib: ^1.9.3 - checksum: 22ff7103d0313395e47cb667ee7dc0efec239329c4bd513c6cc1dce2a03ccbd6f821d40b2dd3b944300aa857bf8c4e4e6591d40f0f5ddee983d717e28ea1419f + checksum: fa875610045380cdf8469f4267d149af7e89713137313db2ae671ce9c61eca15bb7a233dd8eeae3f09cb7bfa23bbdfc9e0aca5900ad48d90b25a231f5f87426c languageName: node linkType: hard -"@sentry/minimal@npm:6.19.2": - version: 6.19.2 - resolution: "@sentry/minimal@npm:6.19.2" +"@sentry/core@npm:7.50.0": + version: 7.50.0 + resolution: "@sentry/core@npm:7.50.0" dependencies: - "@sentry/hub": 6.19.2 - "@sentry/types": 6.19.2 + "@sentry/types": 7.50.0 + "@sentry/utils": 7.50.0 tslib: ^1.9.3 - checksum: a81344497cf86a7f94a79571a05da3915d9c2a05e15c7ea5fc3dddfec19390b49b18fcfcf71530cec0b18ce5b76bf2c1600346ec5545244d8b2a2c56a7d15c86 + checksum: d372d6235355e6e63eb82146e1944a323b5b6303f6a4f7df6a39a9713f3a9c4aebb68d3de43178a6028c7b2d6d68a2f7a34c08e33cf45c0596b46ae6fd2bf83e languageName: node linkType: hard -"@sentry/node@npm:6.19.2": - version: 6.19.2 - resolution: "@sentry/node@npm:6.19.2" +"@sentry/node@npm:7.50.0": + version: 7.50.0 + resolution: "@sentry/node@npm:7.50.0" dependencies: - "@sentry/core": 6.19.2 - "@sentry/hub": 6.19.2 - "@sentry/types": 6.19.2 - "@sentry/utils": 6.19.2 + "@sentry-internal/tracing": 7.50.0 + "@sentry/core": 7.50.0 + "@sentry/types": 7.50.0 + "@sentry/utils": 7.50.0 cookie: ^0.4.1 https-proxy-agent: ^5.0.0 lru_map: ^0.3.3 tslib: ^1.9.3 - checksum: 6c38c8cea0611c9c2dd267c5d43f806c7c06bbfa4506930b0027277dfae71b7b754f18b1141d75d102e366369068941e6f9c2f889cca0c571e0304b559c7aa80 + checksum: b65d69a2dd3242bf0bfe92059bfd2a39a4d46cd988544ee228a8e2df39b12d1942e8d343fe69bc9f945d9b2971f087e69ffb9a1774ee38a6cf1d3110d09efc4e languageName: node linkType: hard -"@sentry/react@npm:6.19.2": - version: 6.19.2 - resolution: "@sentry/react@npm:6.19.2" +"@sentry/react@npm:7.50.0": + version: 7.50.0 + resolution: "@sentry/react@npm:7.50.0" dependencies: - "@sentry/browser": 6.19.2 - "@sentry/minimal": 6.19.2 - "@sentry/types": 6.19.2 - "@sentry/utils": 6.19.2 + "@sentry/browser": 7.50.0 + "@sentry/types": 7.50.0 + "@sentry/utils": 7.50.0 hoist-non-react-statics: ^3.3.2 tslib: ^1.9.3 peerDependencies: - react: 15.x || 16.x || 17.x - checksum: 6acf67623908084409011e0297d9738ab45f97b34e32097ec9f831cc98768a579f9c951b0a4625316d9eabd678f9fb093b6dcb9ec1c388dd009438465cfe604c + react: 15.x || 16.x || 17.x || 18.x + checksum: 28044dc61b726bd08f8a68a9b0a04aa3bda52a3d8530005a6eb005c64099612a97b9d1d4028a8f1f2d3e004befff759a8c0ccd1ce0c845761143b50ed7188934 + languageName: node + linkType: hard + +"@sentry/replay@npm:7.50.0": + version: 7.50.0 + resolution: "@sentry/replay@npm:7.50.0" + dependencies: + "@sentry/core": 7.50.0 + "@sentry/types": 7.50.0 + "@sentry/utils": 7.50.0 + checksum: 3ad1d6af5a74a8896c7bad99a7bc38ebd8cd60824e4d9a1ddc2b240a5bf9215aef0c387a43169e625fba00ae39a8cb27efe27d6ddb6c5c6002d1a2b445740374 languageName: node linkType: hard -"@sentry/types@npm:6.19.2": - version: 6.19.2 - resolution: "@sentry/types@npm:6.19.2" - checksum: 4a22891c1549ad345abbe873b093898e4b9310ec0a53a0aa68055dc21e52bd2d4014e7b5c9da4106bccded29ae1a3f0ac04ba119eaf3371fe469de4f87e56e39 +"@sentry/types@npm:7.50.0": + version: 7.50.0 + resolution: "@sentry/types@npm:7.50.0" + checksum: 9f058231bf22ca9b1e83cf43607be5d7f174a75ac0477b3c565fec7e9431897b10aadfac94cf7eb5d84888e3520383ea2f4176cf2ad3928a8da78fc8b2e2481d languageName: node linkType: hard -"@sentry/utils@npm:6.19.2": - version: 6.19.2 - resolution: "@sentry/utils@npm:6.19.2" +"@sentry/utils@npm:7.50.0": + version: 7.50.0 + resolution: "@sentry/utils@npm:7.50.0" dependencies: - "@sentry/types": 6.19.2 + "@sentry/types": 7.50.0 tslib: ^1.9.3 - checksum: 9e1c95bb50e874f4d2e1b650dd1d8e3a19ba25789158756e7d296da41ddf44619adcfe027b7af0e7354bdf60953bffa157a69765c15c63345f0a2841646b5205 + checksum: 0fdb94a46d19d9b98b9be2cd2e7f8c4c54b7c9d92091cec2f1093388398d8a400be346a71108edf2b3351ee57edb6f77a0bff7026a9f1b9d91699a6a8c08f49b languageName: node linkType: hard @@ -1917,18 +1904,18 @@ __metadata: languageName: node linkType: hard -"@swc/helpers@npm:0.4.14": - version: 0.4.14 - resolution: "@swc/helpers@npm:0.4.14" +"@swc/helpers@npm:0.4.3": + version: 0.4.3 + resolution: "@swc/helpers@npm:0.4.3" dependencies: tslib: ^2.4.0 - checksum: 273fd3f3fc461a92f3790cc551ea054745c6d6959afbe1232e6d7aa1c722bbc114d308aab96bef5c78fc0303c85c7b472ef00e2253251cc89737f3b1af56e5a5 + checksum: 5c2f173e950dd3929d84ae48b3586a274d5a874e7cf2013b3d8081e4f8c723fa3a4d4e63b263e84bb7f06431f87b640e91a12655410463c81a3dc2bbc15eceda languageName: node linkType: hard -"@testing-library/dom@npm:^8.0.0": - version: 8.20.0 - resolution: "@testing-library/dom@npm:8.20.0" +"@testing-library/dom@npm:^9.0.0": + version: 9.2.0 + resolution: "@testing-library/dom@npm:9.2.0" dependencies: "@babel/code-frame": ^7.10.4 "@babel/runtime": ^7.12.5 @@ -1936,49 +1923,49 @@ __metadata: aria-query: ^5.0.0 chalk: ^4.1.0 dom-accessibility-api: ^0.5.9 - lz-string: ^1.4.4 + lz-string: ^1.5.0 pretty-format: ^27.0.2 - checksum: 1e599129a2fe91959ce80900a0a4897232b89e2a8e22c1f5950c36d39c97629ea86b4986b60b173b5525a05de33fde1e35836ea597b03de78cc51b122835c6f0 + checksum: b145f43cd06ff083012cf2503aff6ccba97ff80715fcb106fe64af690f5536557bf24d37b97e8d685bbe3803d7f71d685ce71426cb1b9e250c3611e4372dcfa9 languageName: node linkType: hard -"@testing-library/jest-dom@npm:5.16.3": - version: 5.16.3 - resolution: "@testing-library/jest-dom@npm:5.16.3" +"@testing-library/jest-dom@npm:5.16.5": + version: 5.16.5 + resolution: "@testing-library/jest-dom@npm:5.16.5" dependencies: + "@adobe/css-tools": ^4.0.1 "@babel/runtime": ^7.9.2 "@types/testing-library__jest-dom": ^5.9.1 aria-query: ^5.0.0 chalk: ^3.0.0 - css: ^3.0.0 css.escape: ^1.5.1 dom-accessibility-api: ^0.5.6 lodash: ^4.17.15 redent: ^3.0.0 - checksum: 2d7b767bc1337eea9698ec6d57beea37b4993d848b30d7498b72eb975fbf58dea14039515fb4b393f95ea52f55ca5f91db5d7b2f746f8457e345021ed7482ecb + checksum: 94911f901a8031f3e489d04ac057cb5373621230f5d92bed80e514e24b069fb58a3166d1dd86963e55f078a1bd999da595e2ab96ed95f452d477e272937d792a languageName: node linkType: hard -"@testing-library/react@npm:12.1.4": - version: 12.1.4 - resolution: "@testing-library/react@npm:12.1.4" +"@testing-library/react@npm:14.0.0": + version: 14.0.0 + resolution: "@testing-library/react@npm:14.0.0" dependencies: "@babel/runtime": ^7.12.5 - "@testing-library/dom": ^8.0.0 - "@types/react-dom": "*" + "@testing-library/dom": ^9.0.0 + "@types/react-dom": ^18.0.0 peerDependencies: - react: "*" - react-dom: "*" - checksum: 944c5f8d4abb22c0650c25c7ae499651828c37c0e741ff67a4635d4cd99b307d486dabec05b372aba638bd359d29cd2af97393b5055ea294a201d80b4bc384b8 + react: ^18.0.0 + react-dom: ^18.0.0 + checksum: 4a54c8f56cc4a39b50803205f84f06280bb76521d6d5d4b3b36651d760c7c7752ef142d857d52aaf4fad4848ed7a8be49afc793a5dda105955d2f8bef24901ac languageName: node linkType: hard -"@testing-library/user-event@npm:14.0.0": - version: 14.0.0 - resolution: "@testing-library/user-event@npm:14.0.0" +"@testing-library/user-event@npm:14.4.3": + version: 14.4.3 + resolution: "@testing-library/user-event@npm:14.4.3" peerDependencies: "@testing-library/dom": ">=7.21.4" - checksum: 171a40e680616e6a34299f9fb783dcadcd36f255256a53fe06cb71f4149715d8e5b84e65ea1c144af179f2e4b1799af92c79a8fc0c4c0ee2e94a713f2c476efd + checksum: 852c48ea6db1c9471b18276617c84fec4320771e466cd58339a732ca3fd73ad35e5a43ae14f51af51a8d0a150dcf60fcaab049ef367871207bea8f92c4b8195e languageName: node linkType: hard @@ -1989,20 +1976,23 @@ __metadata: languageName: node linkType: hard -"@trivago/prettier-plugin-sort-imports@npm:3.2.0": - version: 3.2.0 - resolution: "@trivago/prettier-plugin-sort-imports@npm:3.2.0" +"@trivago/prettier-plugin-sort-imports@npm:4.1.1": + version: 4.1.1 + resolution: "@trivago/prettier-plugin-sort-imports@npm:4.1.1" dependencies: - "@babel/core": 7.13.10 - "@babel/generator": 7.13.9 - "@babel/parser": 7.14.6 - "@babel/traverse": 7.13.0 - "@babel/types": 7.13.0 + "@babel/generator": 7.17.7 + "@babel/parser": ^7.20.5 + "@babel/traverse": 7.17.3 + "@babel/types": 7.17.0 javascript-natural-sort: 0.7.1 - lodash: 4.17.21 + lodash: ^4.17.21 peerDependencies: + "@vue/compiler-sfc": 3.x prettier: 2.x - checksum: 22461433fa0dc82621713cdfb88f8f527c6c41729e9859bb7f0106ef23c35b0da591ee7fed63516be7e8df5604dc8055f0c7e200fed1ef97f44000c9fe25a890 + peerDependenciesMeta: + "@vue/compiler-sfc": + optional: true + checksum: 09b4c3c3f4a9e7883737acf92ae7f2a59eb3f7a6f104621a883bdb2a962dcf98398891489267a6fdbba1227a3484676f8d7470e1b3bc6422b4f457382fd030ce languageName: node linkType: hard @@ -2097,6 +2087,22 @@ __metadata: languageName: node linkType: hard +"@types/lodash.truncate@npm:4.4.7": + version: 4.4.7 + resolution: "@types/lodash.truncate@npm:4.4.7" + dependencies: + "@types/lodash": "*" + checksum: d95ed373b514d63535f07a523244c6513bdbf4512f6b96cac28fde408be5a1212d9f5de847614c521508752a4cc150cc470b1295ad543ee31b79cb0bd310e716 + languageName: node + linkType: hard + +"@types/lodash@npm:*": + version: 4.14.194 + resolution: "@types/lodash@npm:4.14.194" + checksum: 113f34831c461469d91feca2dde737f88487732898b4d25e9eb23b087bb193985f864d1e1e0f3b777edc5022e460443588b6000a3b2348c966f72d17eedc35ea + languageName: node + linkType: hard + "@types/minimist@npm:^1.2.0": version: 1.2.2 resolution: "@types/minimist@npm:1.2.2" @@ -2104,26 +2110,17 @@ __metadata: languageName: node linkType: hard -"@types/next@npm:9.0.0": - version: 9.0.0 - resolution: "@types/next@npm:9.0.0" - dependencies: - next: "*" - checksum: 3115931293e1928df5ecd9d0cbf8b9edc9e2d7f67467db468f3d92dac7b44199706dbd4226c33193a7fcd3fe230a1ec2c796a1a585911d40be9fdaf47e8cb16e - languageName: node - linkType: hard - -"@types/node@npm:*, @types/node@npm:>=12": +"@types/node@npm:*": version: 18.11.18 resolution: "@types/node@npm:18.11.18" checksum: 03f17f9480f8d775c8a72da5ea7e9383db5f6d85aa5fefde90dd953a1449bd5e4ffde376f139da4f3744b4c83942166d2a7603969a6f8ea826edfb16e6e3b49d languageName: node linkType: hard -"@types/node@npm:18.7.1": - version: 18.7.1 - resolution: "@types/node@npm:18.7.1" - checksum: f1e2b701b107f97be01da4c46845cd23bcdcb2865f9abbb2847546d09587e726ea207daca6f0d1e72196875ef8c62feeeff5f1c1f2070445acd6d1a61d815c7c +"@types/node@npm:18.16.2": + version: 18.16.2 + resolution: "@types/node@npm:18.16.2" + checksum: 7ad66d23b3b93885a9f879bff98e0196790ad35589b47a3d81b52db969ad17ee298082020296df5166c2d72d3cd6a4b9ab34d254483637d967944a4b3e6febdb languageName: node linkType: hard @@ -2155,7 +2152,7 @@ __metadata: languageName: node linkType: hard -"@types/quill@npm:1.3.10, @types/quill@npm:^1.3.10": +"@types/quill@npm:^1.3.10": version: 1.3.10 resolution: "@types/quill@npm:1.3.10" dependencies: @@ -2164,21 +2161,21 @@ __metadata: languageName: node linkType: hard -"@types/react-dom@npm:*": - version: 18.0.10 - resolution: "@types/react-dom@npm:18.0.10" +"@types/react-dom@npm:17.0.2": + version: 17.0.2 + resolution: "@types/react-dom@npm:17.0.2" dependencies: "@types/react": "*" - checksum: ff8282d5005a0b1cd95fb65bf79d3d8485e4cfe2aaf052129033a178684b940014a3f4536bc20d573f8a01cf4c6f4770c74988cef7c2b5cac3041d9f172647e3 + checksum: 1725928a1c3a0026044e6401e6b53729e1a88849034fc67138d7784ec44a5132fe2e9056a19b741ccb462ff0ec0d8c2c01ef316bda19be0e31f2ead9346f600b languageName: node linkType: hard -"@types/react-dom@npm:17.0.2": - version: 17.0.2 - resolution: "@types/react-dom@npm:17.0.2" +"@types/react-dom@npm:^18.0.0": + version: 18.2.1 + resolution: "@types/react-dom@npm:18.2.1" dependencies: "@types/react": "*" - checksum: 1725928a1c3a0026044e6401e6b53729e1a88849034fc67138d7784ec44a5132fe2e9056a19b741ccb462ff0ec0d8c2c01ef316bda19be0e31f2ead9346f600b + checksum: 4e607a9d08f707ae2bd6b377f1da32989dcbe4e38ac39110423a1f6bc95dd53a5484f7f952b34e9d12b5f29a265d52a8c74c1a7d1d1e25be0fa69ccf9d64209f languageName: node linkType: hard @@ -2211,6 +2208,15 @@ __metadata: languageName: node linkType: hard +"@types/sanitize-html@npm:^2.9.0": + version: 2.9.0 + resolution: "@types/sanitize-html@npm:2.9.0" + dependencies: + htmlparser2: ^8.0.0 + checksum: b60f42b740bbfb1b1434ce8b43925a38ecc608b60aa654fd009d2e22e33f324b61d370768c55bd2fd98e03de08518ffa8911d61606c483526fb931bb8b59d1b0 + languageName: node + linkType: hard + "@types/scheduler@npm:*": version: 0.16.2 resolution: "@types/scheduler@npm:0.16.2" @@ -2298,17 +2304,18 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:5.44.0": - version: 5.44.0 - resolution: "@typescript-eslint/eslint-plugin@npm:5.44.0" +"@typescript-eslint/eslint-plugin@npm:5.59.1": + version: 5.59.1 + resolution: "@typescript-eslint/eslint-plugin@npm:5.59.1" dependencies: - "@typescript-eslint/scope-manager": 5.44.0 - "@typescript-eslint/type-utils": 5.44.0 - "@typescript-eslint/utils": 5.44.0 + "@eslint-community/regexpp": ^4.4.0 + "@typescript-eslint/scope-manager": 5.59.1 + "@typescript-eslint/type-utils": 5.59.1 + "@typescript-eslint/utils": 5.59.1 debug: ^4.3.4 + grapheme-splitter: ^1.0.4 ignore: ^5.2.0 natural-compare-lite: ^1.4.0 - regexpp: ^3.2.0 semver: ^7.3.7 tsutils: ^3.21.0 peerDependencies: @@ -2317,7 +2324,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 88784e77e8e35ea50ca9c49d46df94cabc3447f4b332f3ca53974d3b5370cb5dcd85cc9ee0e317b91083812012369209574725dcfc3b2b4056b60371b68ca854 + checksum: 9ada3ae721594ddd8101a6093e6383bc95e4dcb19b3929210dee5480637786473a9eba2e69e61e560fa592965f4fd02aeb98ddfda91b00b448ae01c5d77431d6 languageName: node linkType: hard @@ -2352,39 +2359,39 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/parser@npm:5.44.0": - version: 5.44.0 - resolution: "@typescript-eslint/parser@npm:5.44.0" +"@typescript-eslint/parser@npm:5.59.1": + version: 5.59.1 + resolution: "@typescript-eslint/parser@npm:5.59.1" dependencies: - "@typescript-eslint/scope-manager": 5.44.0 - "@typescript-eslint/types": 5.44.0 - "@typescript-eslint/typescript-estree": 5.44.0 + "@typescript-eslint/scope-manager": 5.59.1 + "@typescript-eslint/types": 5.59.1 + "@typescript-eslint/typescript-estree": 5.59.1 debug: ^4.3.4 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 2d09a1a1547a7ae3f76c9a33a54e11d79a194fbb9dbae69988e7aed3370bdf12bafde669211152769d89db822e0cdee4173affc126664fa6f17abba56daa7261 + checksum: d324d32a69e06ab12aacb72cd3e2a8eb8ade6c2a4d4e6bb013941588a675e818a8ebd973bef1cd818da6a76eb00908bf66d84ef214c3f015dfcb40f8067a335e languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:5.44.0": - version: 5.44.0 - resolution: "@typescript-eslint/scope-manager@npm:5.44.0" +"@typescript-eslint/scope-manager@npm:5.59.1": + version: 5.59.1 + resolution: "@typescript-eslint/scope-manager@npm:5.59.1" dependencies: - "@typescript-eslint/types": 5.44.0 - "@typescript-eslint/visitor-keys": 5.44.0 - checksum: 4cfe4b55eb428eda740e6b967e3a87f3e1f9c4bbd8e1d6b8d64a11666abe33ffe7a21e4e614444ccde2da6930fa85f3e0ffca43d6e339943ff7a4fbccb09c8fc + "@typescript-eslint/types": 5.59.1 + "@typescript-eslint/visitor-keys": 5.59.1 + checksum: ae7758181d0f18d1ad20abf95164553fa98c20410968d538ac7abd430ec59f69e30d4da16ad968d029feced1ed49abc65daf6685c996eb4529d798e8320204ff languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:5.44.0": - version: 5.44.0 - resolution: "@typescript-eslint/type-utils@npm:5.44.0" +"@typescript-eslint/type-utils@npm:5.59.1": + version: 5.59.1 + resolution: "@typescript-eslint/type-utils@npm:5.59.1" dependencies: - "@typescript-eslint/typescript-estree": 5.44.0 - "@typescript-eslint/utils": 5.44.0 + "@typescript-eslint/typescript-estree": 5.59.1 + "@typescript-eslint/utils": 5.59.1 debug: ^4.3.4 tsutils: ^3.21.0 peerDependencies: @@ -2392,14 +2399,14 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 4c7b594f8afa52d57d0512951a874fa390eb791dcefcd0e1efff8817872293b2e4e04eff3c54d1595c1720a34d5fd315729af4e459882033d13cb6069ae9d28f + checksum: ff46cc049995bb6505a6170550a9e658c42cd5699a95e1976822318fef2963381223505f797051fc727938ace66d4a7dc072a4b4cadbbdf91d2fda1a16c05c98 languageName: node linkType: hard -"@typescript-eslint/types@npm:5.44.0": - version: 5.44.0 - resolution: "@typescript-eslint/types@npm:5.44.0" - checksum: ced7d32abecfc62ccb67cf27e30c0785b9c153ec7b1a05153ced58fa5a2031ab3845bc2e477b83e4cebdcc5881c5845d23053c6739c62549d41ae6208e547e85 +"@typescript-eslint/types@npm:5.59.1": + version: 5.59.1 + resolution: "@typescript-eslint/types@npm:5.59.1" + checksum: 40ea7ccf59c4951797d3761e53c866a5979e07fbdabef9dc07d3a3f625a99d4318d5329ae8e628cdfdc0bb9bb6e6d8dfb740f33c7bf318e63fa0a863b9ae85c7 languageName: node linkType: hard @@ -2421,12 +2428,12 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:5.44.0": - version: 5.44.0 - resolution: "@typescript-eslint/typescript-estree@npm:5.44.0" +"@typescript-eslint/typescript-estree@npm:5.59.1": + version: 5.59.1 + resolution: "@typescript-eslint/typescript-estree@npm:5.59.1" dependencies: - "@typescript-eslint/types": 5.44.0 - "@typescript-eslint/visitor-keys": 5.44.0 + "@typescript-eslint/types": 5.59.1 + "@typescript-eslint/visitor-keys": 5.59.1 debug: ^4.3.4 globby: ^11.1.0 is-glob: ^4.0.3 @@ -2435,35 +2442,35 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 758731108497cca7ff81cf0a78d086b5a85757a983979d6bb25ad8252b7acbc738c642ecb5f5df82f925a45926b9846e431d5cf9fee5ed2613300b4d0c5d6c3f + checksum: e33081937225f38e717ac2f9e90c4a8c6b71b701923eea3e03be76d8c466f0d3c6a4ec1d65c9fc1da4f1989416d386305353c5b53aa736d3af9503061001e3eb languageName: node linkType: hard -"@typescript-eslint/utils@npm:5.44.0": - version: 5.44.0 - resolution: "@typescript-eslint/utils@npm:5.44.0" +"@typescript-eslint/utils@npm:5.59.1": + version: 5.59.1 + resolution: "@typescript-eslint/utils@npm:5.59.1" dependencies: + "@eslint-community/eslint-utils": ^4.2.0 "@types/json-schema": ^7.0.9 "@types/semver": ^7.3.12 - "@typescript-eslint/scope-manager": 5.44.0 - "@typescript-eslint/types": 5.44.0 - "@typescript-eslint/typescript-estree": 5.44.0 + "@typescript-eslint/scope-manager": 5.59.1 + "@typescript-eslint/types": 5.59.1 + "@typescript-eslint/typescript-estree": 5.59.1 eslint-scope: ^5.1.1 - eslint-utils: ^3.0.0 semver: ^7.3.7 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: bc5bb28e41898464d35b8eb47cc452103852541e3b6be56252c15a5a81c45e10aad3db4c749eb92d752b0c358df8074e23ec6f9e65f8089baadeda7f395c7e31 + checksum: ca32c90efa57e937ebf812221e070c0604ca99f900fbca60578b42d40c923d5a94fd9503cf5918ecd75b687b68a1be562f7c6593a329bc40b880c95036a021c0 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:5.44.0": - version: 5.44.0 - resolution: "@typescript-eslint/visitor-keys@npm:5.44.0" +"@typescript-eslint/visitor-keys@npm:5.59.1": + version: 5.59.1 + resolution: "@typescript-eslint/visitor-keys@npm:5.59.1" dependencies: - "@typescript-eslint/types": 5.44.0 + "@typescript-eslint/types": 5.59.1 eslint-visitor-keys: ^3.3.0 - checksum: a012c888209e1d6ae684b2a44fd460ae5a80f5faf07bca4bda6c9c0d8c063ad3297d4c53f7151ae86cf1a43dee09625dc3ee72183323c91089c7288fd573c6f4 + checksum: f98e399147310cad67de718a8a6336f053d46753bade380c89ddac3dd49512555c3f613636b255ce0b5e2b004654d1c167eb5e53fc8085148b637a5afc20cdd8 languageName: node linkType: hard @@ -2493,7 +2500,7 @@ __metadata: languageName: node linkType: hard -"acorn-jsx@npm:^5.3.1": +"acorn-jsx@npm:^5.3.2": version: 5.3.2 resolution: "acorn-jsx@npm:5.3.2" peerDependencies: @@ -2509,21 +2516,21 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^7.4.0": - version: 7.4.1 - resolution: "acorn@npm:7.4.1" +"acorn@npm:^8.4.1": + version: 8.8.1 + resolution: "acorn@npm:8.8.1" bin: acorn: bin/acorn - checksum: 1860f23c2107c910c6177b7b7be71be350db9e1080d814493fae143ae37605189504152d1ba8743ba3178d0b37269ce1ffc42b101547fdc1827078f82671e407 + checksum: 4079b67283b94935157698831967642f24a075c52ce3feaaaafe095776dfbe15d86a1b33b1e53860fc0d062ed6c83f4284a5c87c85b9ad51853a01173da6097f languageName: node linkType: hard -"acorn@npm:^8.4.1": - version: 8.8.1 - resolution: "acorn@npm:8.8.1" +"acorn@npm:^8.8.0": + version: 8.8.2 + resolution: "acorn@npm:8.8.2" bin: acorn: bin/acorn - checksum: 4079b67283b94935157698831967642f24a075c52ce3feaaaafe095776dfbe15d86a1b33b1e53860fc0d062ed6c83f4284a5c87c85b9ad51853a01173da6097f + checksum: f790b99a1bf63ef160c967e23c46feea7787e531292bb827126334612c234ed489a0dc2c7ba33156416f0ffa8d25bf2b0fdb7f35c2ba60eb3e960572bece4001 languageName: node linkType: hard @@ -2576,7 +2583,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^8.0.1, ajv@npm:^8.1.0": +"ajv@npm:^8.1.0, ajv@npm:^8.11.0": version: 8.12.0 resolution: "ajv@npm:8.12.0" dependencies: @@ -2699,13 +2706,10 @@ __metadata: languageName: node linkType: hard -"aria-query@npm:^4.2.2": - version: 4.2.2 - resolution: "aria-query@npm:4.2.2" - dependencies: - "@babel/runtime": ^7.10.2 - "@babel/runtime-corejs3": ^7.10.2 - checksum: 38401a9a400f26f3dcc24b84997461a16b32869a9893d323602bed8da40a8bcc0243b8d2880e942249a1496cea7a7de769e93d21c0baa439f01e1ee936fed665 +"argparse@npm:^2.0.1": + version: 2.0.1 + resolution: "argparse@npm:2.0.1" + checksum: 83644b56493e89a254bae05702abf3a1101b4fa4d0ca31df1c9985275a5a5bd47b3c27b7fa0b71098d41114d8ca000e6ed90cad764b306f8a503665e4d517ced languageName: node linkType: hard @@ -2725,7 +2729,7 @@ __metadata: languageName: node linkType: hard -"array-includes@npm:^3.1.4, array-includes@npm:^3.1.5, array-includes@npm:^3.1.6": +"array-includes@npm:^3.1.5, array-includes@npm:^3.1.6": version: 3.1.6 resolution: "array-includes@npm:3.1.6" dependencies: @@ -2745,7 +2749,7 @@ __metadata: languageName: node linkType: hard -"array.prototype.flat@npm:^1.2.5, array.prototype.flat@npm:^1.3.1": +"array.prototype.flat@npm:^1.3.1": version: 1.3.1 resolution: "array.prototype.flat@npm:1.3.1" dependencies: @@ -2757,7 +2761,7 @@ __metadata: languageName: node linkType: hard -"array.prototype.flatmap@npm:^1.2.5, array.prototype.flatmap@npm:^1.3.1": +"array.prototype.flatmap@npm:^1.3.1": version: 1.3.1 resolution: "array.prototype.flatmap@npm:1.3.1" dependencies: @@ -2840,15 +2844,6 @@ __metadata: languageName: node linkType: hard -"atob@npm:^2.1.2": - version: 2.1.2 - resolution: "atob@npm:2.1.2" - bin: - atob: bin/atob.js - checksum: dfeeeb70090c5ebea7be4b9f787f866686c645d9f39a0d184c817252d0cf08455ed25267d79c03254d3be1f03ac399992a792edcd5ffb9c91e097ab5ef42833a - languageName: node - linkType: hard - "atomic-sleep@npm:^1.0.0": version: 1.0.0 resolution: "atomic-sleep@npm:1.0.0" @@ -2893,6 +2888,24 @@ __metadata: languageName: node linkType: hard +"aws-sdk@npm:2.1356.0": + version: 2.1356.0 + resolution: "aws-sdk@npm:2.1356.0" + dependencies: + buffer: 4.9.2 + events: 1.1.1 + ieee754: 1.1.13 + jmespath: 0.16.0 + querystring: 0.2.0 + sax: 1.2.1 + url: 0.10.3 + util: ^0.12.4 + uuid: 8.0.0 + xml2js: 0.5.0 + checksum: 5e7c2f1c339305e95247d31ef012c5be02129d9688ac68465b8af6a3039c6bad86075e2a2f8582f0da80b31a0a8ffe99e043c0f23b9a136e1fe3de505859046d + languageName: node + linkType: hard + "aws-sign2@npm:~0.7.0": version: 0.7.0 resolution: "aws-sign2@npm:0.7.0" @@ -2907,7 +2920,7 @@ __metadata: languageName: node linkType: hard -"axe-core@npm:^4.3.5, axe-core@npm:^4.6.2": +"axe-core@npm:^4.6.2": version: 4.6.2 resolution: "axe-core@npm:4.6.2" checksum: 81523eeaf101a3a129545a936d448d235ecf1f8c0daccdee224d29f63bec716fa38cf1a65c8462548b1f995624277eed790d9d9977ae40ba692c4cadf1196403 @@ -2933,10 +2946,14 @@ __metadata: languageName: node linkType: hard -"axobject-query@npm:^2.2.0": - version: 2.2.0 - resolution: "axobject-query@npm:2.2.0" - checksum: 96b8c7d807ca525f41ad9b286186e2089b561ba63a6d36c3e7d73dc08150714660995c7ad19cda05784458446a0793b45246db45894631e13853f48c1aa3117f +"axios@npm:^1.3.5": + version: 1.4.0 + resolution: "axios@npm:1.4.0" + dependencies: + follow-redirects: ^1.15.0 + form-data: ^4.0.0 + proxy-from-env: ^1.1.0 + checksum: 7fb6a4313bae7f45e89d62c70a800913c303df653f19eafec88e56cea2e3821066b8409bc68be1930ecca80e861c52aa787659df0ffec6ad4d451c7816b9386b languageName: node linkType: hard @@ -3259,7 +3276,7 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001332, caniuse-lite@npm:^1.0.30001400, caniuse-lite@npm:^1.0.30001406": +"caniuse-lite@npm:^1.0.30001332, caniuse-lite@npm:^1.0.30001400": version: 1.0.30001447 resolution: "caniuse-lite@npm:1.0.30001447" checksum: b45ae1c4f2df2fb9ad71dc543b1d71c00b125c1aea1ffa25086fe4bee6c17163222dfaa6c0b8488e403b801f6550889f712d1624ba000a7acb8538a62c738c56 @@ -3273,7 +3290,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:4.1.2, chalk@npm:^4.0.0, chalk@npm:^4.1.0": +"chalk@npm:4.1.2, chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.2": version: 4.1.2 resolution: "chalk@npm:4.1.2" dependencies: @@ -3383,13 +3400,6 @@ __metadata: languageName: node linkType: hard -"client-only@npm:0.0.1": - version: 0.0.1 - resolution: "client-only@npm:0.0.1" - checksum: 0c16bf660dadb90610553c1d8946a7fdfb81d624adea073b8440b7d795d5b5b08beb3c950c6a2cf16279365a3265158a236876d92bce16423c485c322d7dfaf8 - languageName: node - linkType: hard - "cliui@npm:^6.0.0": version: 6.0.0 resolution: "cliui@npm:6.0.0" @@ -3517,10 +3527,10 @@ __metadata: languageName: node linkType: hard -"commander@npm:^5.1.0": - version: 5.1.0 - resolution: "commander@npm:5.1.0" - checksum: 0b7fec1712fbcc6230fcb161d8d73b4730fa91a21dc089515489402ad78810547683f058e2a9835929c212fead1d6a6ade70db28bbb03edbc2829a9ab7d69447 +"commander@npm:^6.2.1": + version: 6.2.1 + resolution: "commander@npm:6.2.1" + checksum: d7090410c0de6bc5c67d3ca41c41760d6d268f3c799e530aafb73b7437d1826bbf0d2a3edac33f8b57cc9887b4a986dce307fa5557e109be40eadb7c43b21742 languageName: node linkType: hard @@ -3555,6 +3565,13 @@ __metadata: languageName: node linkType: hard +"compare-versions@npm:^3.4.0": + version: 3.6.0 + resolution: "compare-versions@npm:3.6.0" + checksum: 7492a50cdaa2c27f5254eee7c4b38856e1c164991bab3d98d7fd067fe4b570d47123ecb92523b78338be86aa221668fd3868bfe8caa5587dc3ebbe1a03d52b5d + languageName: node + linkType: hard + "concat-map@npm:0.0.1": version: 0.0.1 resolution: "concat-map@npm:0.0.1" @@ -3574,21 +3591,23 @@ __metadata: languageName: node linkType: hard -"concurrently@npm:7.0.0": - version: 7.0.0 - resolution: "concurrently@npm:7.0.0" +"concurrently@npm:8.0.1": + version: 8.0.1 + resolution: "concurrently@npm:8.0.1" dependencies: - chalk: ^4.1.0 - date-fns: ^2.16.1 + chalk: ^4.1.2 + date-fns: ^2.29.3 lodash: ^4.17.21 - rxjs: ^6.6.3 - spawn-command: ^0.0.2-1 - supports-color: ^8.1.0 + rxjs: ^7.8.0 + shell-quote: ^1.8.0 + spawn-command: 0.0.2-1 + supports-color: ^8.1.1 tree-kill: ^1.2.2 - yargs: ^16.2.0 + yargs: ^17.7.1 bin: + conc: dist/bin/concurrently.js concurrently: dist/bin/concurrently.js - checksum: 1be78f24bf814f097adaf2e61a37563eb73f12272bbeda90e3e616a23525f793268e22a3c6aedf34e5bad44459f7c30ee053c617905416ba11ce2bee55f089a5 + checksum: cce10ab1bbd7fd099300234637cdbc8e12622a5fe53f8dd31dcd9562d9803f25d3d0410bdb6fffd54e8f4e11b852366c03994bd319843cce70e449c8a8a69526 languageName: node linkType: hard @@ -3641,7 +3660,7 @@ __metadata: languageName: node linkType: hard -"conventional-changelog-conventionalcommits@npm:4.6.3, conventional-changelog-conventionalcommits@npm:^4.3.1, conventional-changelog-conventionalcommits@npm:^4.5.0": +"conventional-changelog-conventionalcommits@npm:4.6.3, conventional-changelog-conventionalcommits@npm:^4.5.0": version: 4.6.3 resolution: "conventional-changelog-conventionalcommits@npm:4.6.3" dependencies: @@ -3652,6 +3671,17 @@ __metadata: languageName: node linkType: hard +"conventional-changelog-conventionalcommits@npm:^5.0.0": + version: 5.0.0 + resolution: "conventional-changelog-conventionalcommits@npm:5.0.0" + dependencies: + compare-func: ^2.0.0 + lodash: ^4.17.15 + q: ^1.5.1 + checksum: b67d12e4e0fdde5baa32c3d77af472de38646a18657b26f5543eecce041a318103092fbfcef247e2319a16957c9ac78c6ea78acc11a5db6acf74be79a28c561f + languageName: node + linkType: hard + "conventional-changelog-core@npm:^4.2.1": version: 4.2.4 resolution: "conventional-changelog-core@npm:4.2.4" @@ -3830,13 +3860,6 @@ __metadata: languageName: node linkType: hard -"core-js-pure@npm:^3.25.1": - version: 3.27.2 - resolution: "core-js-pure@npm:3.27.2" - checksum: 7cb24502a782a032ffa2af6e84abfcfeffa0c30e84c38f4d0a1d7567c8c86e2d36a7554a00ca47762606c84d2a86d99662a7158e9f4df989f3fe3c7e7c09fa45 - languageName: node - linkType: hard - "core-util-is@npm:1.0.2": version: 1.0.2 resolution: "core-util-is@npm:1.0.2" @@ -3851,21 +3874,19 @@ __metadata: languageName: node linkType: hard -"cosmiconfig-typescript-loader@npm:^2.0.0": - version: 2.0.2 - resolution: "cosmiconfig-typescript-loader@npm:2.0.2" - dependencies: - cosmiconfig: ^7 - ts-node: ^10.8.1 +"cosmiconfig-typescript-loader@npm:^4.0.0": + version: 4.3.0 + resolution: "cosmiconfig-typescript-loader@npm:4.3.0" peerDependencies: "@types/node": "*" cosmiconfig: ">=7" + ts-node: ">=10" typescript: ">=3" - checksum: 0c9a777e2e3ff7594d753e5781e8c3817ce5ba493a4e69cfde698a8e231b438695248dcc62a16c661f93ada7f762ac6e24457889439c94f58c094a24aecbd982 + checksum: ea61dfd8e112cf2bb18df0ef89280bd3ae3dd5b997b4a9fc22bbabdc02513aadfbc6d4e15e922b6a9a5d987e9dad42286fa38caf77a9b8dcdbe7d4ce1c9db4fb languageName: node linkType: hard -"cosmiconfig@npm:^7, cosmiconfig@npm:^7.0.0": +"cosmiconfig@npm:^7.0.0": version: 7.1.0 resolution: "cosmiconfig@npm:7.1.0" dependencies: @@ -3878,13 +3899,15 @@ __metadata: languageName: node linkType: hard -"create-react-class@npm:^15.6.0": - version: 15.7.0 - resolution: "create-react-class@npm:15.7.0" +"cosmiconfig@npm:^8.0.0": + version: 8.1.3 + resolution: "cosmiconfig@npm:8.1.3" dependencies: - loose-envify: ^1.3.1 - object-assign: ^4.1.1 - checksum: 0c5f43da705fa9f67ec289051dd5780792652d440dfa17cd2c7d8423c1f604609596f895dabf46fda1960ddd93ee96fe1b61ef4d55a94fc4271b07d515486714 + import-fresh: ^3.2.1 + js-yaml: ^4.1.0 + parse-json: ^5.0.0 + path-type: ^4.0.0 + checksum: b3d277bc3a8a9e649bf4c3fc9740f4c52bf07387481302aa79839f595045368903bf26ea24a8f7f7b8b180bf46037b027c5cb63b1391ab099f3f78814a147b2b languageName: node linkType: hard @@ -3927,27 +3950,23 @@ __metadata: languageName: node linkType: hard -"css@npm:^3.0.0": - version: 3.0.0 - resolution: "css@npm:3.0.0" - dependencies: - inherits: ^2.0.4 - source-map: ^0.6.1 - source-map-resolve: ^0.6.0 - checksum: 4273ac816ddf99b99acb9c1d1a27d86d266a533cc01118369d941d8e8a78277a83cad3315e267a398c509d930fbb86504e193ea1ebc620a4a4212e06fe76e8be - languageName: node - linkType: hard - -"csstype@npm:^3.0.2, csstype@npm:^3.1.1": +"csstype@npm:^3.0.2": version: 3.1.1 resolution: "csstype@npm:3.1.1" checksum: 1f7b4f5fdd955b7444b18ebdddf3f5c699159f13e9cf8ac9027ae4a60ae226aef9bbb14a6e12ca7dba3358b007cee6354b116e720262867c398de6c955ea451d languageName: node linkType: hard -"cypress@npm:12.4.0": - version: 12.4.0 - resolution: "cypress@npm:12.4.0" +"csstype@npm:^3.1.1, csstype@npm:^3.1.2": + version: 3.1.2 + resolution: "csstype@npm:3.1.2" + checksum: e1a52e6c25c1314d6beef5168da704ab29c5186b877c07d822bd0806717d9a265e8493a2e35ca7e68d0f5d472d43fac1cdce70fd79fd0853dff81f3028d857b5 + languageName: node + linkType: hard + +"cypress@npm:12.11.0": + version: 12.11.0 + resolution: "cypress@npm:12.11.0" dependencies: "@cypress/request": ^2.88.10 "@cypress/xvfb": ^1.2.4 @@ -3963,10 +3982,10 @@ __metadata: check-more-types: ^2.24.0 cli-cursor: ^3.1.0 cli-table3: ~0.6.1 - commander: ^5.1.0 + commander: ^6.2.1 common-tags: ^1.8.0 dayjs: ^1.10.4 - debug: ^4.3.2 + debug: ^4.3.4 enquirer: ^2.3.6 eventemitter2: 6.4.7 execa: 4.1.0 @@ -3981,7 +4000,7 @@ __metadata: listr2: ^3.8.3 lodash: ^4.17.21 log-symbols: ^4.0.0 - minimist: ^1.2.6 + minimist: ^1.2.8 ospath: ^1.2.2 pretty-bytes: ^5.6.0 proxy-from-env: 1.0.0 @@ -3993,11 +4012,11 @@ __metadata: yauzl: ^2.10.0 bin: cypress: bin/cypress - checksum: 34eeb48547e3bea3312e71147ddc87a08fe90cef92434194621a9bf7747026471b01e41f1ded3a406db4fbb2e70c03d7e5d0df011227f969882550fe64a7d5d1 + checksum: 56e5ebaec59dffca5d19704f2b2674cbb0002f20050c1d624217ede157c528757f58ad42f0899fc67c32c61d5461eef5e2a3a99a6a52b77b152362a025a22599 languageName: node linkType: hard -"damerau-levenshtein@npm:^1.0.7, damerau-levenshtein@npm:^1.0.8": +"damerau-levenshtein@npm:^1.0.8": version: 1.0.8 resolution: "damerau-levenshtein@npm:1.0.8" checksum: d240b7757544460ae0586a341a53110ab0a61126570ef2d8c731e3eab3f0cb6e488e2609e6a69b46727635de49be20b071688698744417ff1b6c1d7ccd03e0de @@ -4020,7 +4039,7 @@ __metadata: languageName: node linkType: hard -"date-fns@npm:^2.16.1": +"date-fns@npm:^2.29.3": version: 2.29.3 resolution: "date-fns@npm:2.29.3" checksum: e01cf5b62af04e05dfff921bb9c9933310ed0e1ae9a81eb8653452e64dc841acf7f6e01e1a5ae5644d0337e9a7f936175fd2cb6819dc122fdd9c5e86c56be484 @@ -4048,7 +4067,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:4.3.4, debug@npm:^4.0.0, debug@npm:^4.0.1, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": +"debug@npm:4, debug@npm:4.3.4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": version: 4.3.4 resolution: "debug@npm:4.3.4" dependencies: @@ -4060,15 +4079,6 @@ __metadata: languageName: node linkType: hard -"debug@npm:^2.6.9": - version: 2.6.9 - resolution: "debug@npm:2.6.9" - dependencies: - ms: 2.0.0 - checksum: d2f51589ca66df60bf36e1fa6e4386b318c3f1e06772280eea5b1ae9fd3d05e9c2b7fd8a7d862457d00853c75b00451aa2d7459b924629ee385287a650f58fe6 - languageName: node - linkType: hard - "debug@npm:^3.1.0, debug@npm:^3.2.7": version: 3.2.7 resolution: "debug@npm:3.2.7" @@ -4095,13 +4105,6 @@ __metadata: languageName: node linkType: hard -"decode-uri-component@npm:^0.2.0": - version: 0.2.2 - resolution: "decode-uri-component@npm:0.2.2" - checksum: 95476a7d28f267292ce745eac3524a9079058bbb35767b76e3ee87d42e34cd0275d2eb19d9d08c3e167f97556e8a2872747f5e65cbebcac8b0c98d83e285f139 - languageName: node - linkType: hard - "deep-equal@npm:^1.0.1": version: 1.1.1 resolution: "deep-equal@npm:1.1.1" @@ -4195,7 +4198,7 @@ __metadata: languageName: node linkType: hard -"depd@npm:^1.1.2": +"depd@npm:^1.1.2, depd@npm:~1.1.2": version: 1.1.2 resolution: "depd@npm:1.1.2" checksum: 6b406620d269619852885ce15965272b829df6f409724415e0002c8632ab6a8c0a08ec1f0bd2add05dc7bd7507606f7e2cc034fa24224ab829580040b835ecd9 @@ -4281,6 +4284,44 @@ __metadata: languageName: node linkType: hard +"dom-serializer@npm:^2.0.0": + version: 2.0.0 + resolution: "dom-serializer@npm:2.0.0" + dependencies: + domelementtype: ^2.3.0 + domhandler: ^5.0.2 + entities: ^4.2.0 + checksum: cd1810544fd8cdfbd51fa2c0c1128ec3a13ba92f14e61b7650b5de421b88205fd2e3f0cc6ace82f13334114addb90ed1c2f23074a51770a8e9c1273acbc7f3e6 + languageName: node + linkType: hard + +"domelementtype@npm:^2.3.0": + version: 2.3.0 + resolution: "domelementtype@npm:2.3.0" + checksum: ee837a318ff702622f383409d1f5b25dd1024b692ef64d3096ff702e26339f8e345820f29a68bcdcea8cfee3531776b3382651232fbeae95612d6f0a75efb4f6 + languageName: node + linkType: hard + +"domhandler@npm:^5.0.1, domhandler@npm:^5.0.2, domhandler@npm:^5.0.3": + version: 5.0.3 + resolution: "domhandler@npm:5.0.3" + dependencies: + domelementtype: ^2.3.0 + checksum: 0f58f4a6af63e6f3a4320aa446d28b5790a009018707bce2859dcb1d21144c7876482b5188395a188dfa974238c019e0a1e610d2fc269a12b2c192ea2b0b131c + languageName: node + linkType: hard + +"domutils@npm:^3.0.1": + version: 3.0.1 + resolution: "domutils@npm:3.0.1" + dependencies: + dom-serializer: ^2.0.0 + domelementtype: ^2.3.0 + domhandler: ^5.0.1 + checksum: 23aa7a840572d395220e173cb6263b0d028596e3950100520870a125af33ff819e6f609e1606d6f7d73bd9e7feb03bb404286e57a39063b5384c62b724d987b3 + languageName: node + linkType: hard + "dot-prop@npm:^5.1.0": version: 5.3.0 resolution: "dot-prop@npm:5.3.0" @@ -4382,17 +4423,17 @@ __metadata: languageName: node linkType: hard -"enhanced-resolve@npm:^5.10.0": - version: 5.12.0 - resolution: "enhanced-resolve@npm:5.12.0" +"enhanced-resolve@npm:^5.12.0": + version: 5.13.0 + resolution: "enhanced-resolve@npm:5.13.0" dependencies: graceful-fs: ^4.2.4 tapable: ^2.2.0 - checksum: bf3f787facaf4ce3439bef59d148646344e372bef5557f0d37ea8aa02c51f50a925cd1f07b8d338f18992c29f544ec235a8c64bcdb56030196c48832a5494174 + checksum: 76d6844c4393d76beed5b3ce6cf5a98dee3ad5c84a9887f49ccde1224e3b7af201dfbd5a57ebf2b49f623b74883df262d50ff480d3cc02fc2881fc58b84e1bbe languageName: node linkType: hard -"enquirer@npm:^2.3.5, enquirer@npm:^2.3.6": +"enquirer@npm:^2.3.6": version: 2.3.6 resolution: "enquirer@npm:2.3.6" dependencies: @@ -4401,6 +4442,13 @@ __metadata: languageName: node linkType: hard +"entities@npm:^4.2.0, entities@npm:^4.4.0": + version: 4.5.0 + resolution: "entities@npm:4.5.0" + checksum: 853f8ebd5b425d350bffa97dd6958143179a5938352ccae092c62d1267c4e392a039be1bae7d51b6e4ffad25f51f9617531fedf5237f15df302ccfb452cbf2d7 + languageName: node + linkType: hard + "env-cmd@npm:10.1.0": version: 10.1.0 resolution: "env-cmd@npm:10.1.0" @@ -4539,6 +4587,13 @@ __metadata: languageName: node linkType: hard +"escape-html@npm:^1.0.3": + version: 1.0.3 + resolution: "escape-html@npm:1.0.3" + checksum: 6213ca9ae00d0ab8bccb6d8d4e0a98e76237b2410302cf7df70aaa6591d509a2a37ce8998008cbecae8fc8ffaadf3fb0229535e6a145f3ce0b211d060decbb24 + languageName: node + linkType: hard + "escape-string-regexp@npm:^1.0.5": version: 1.0.5 resolution: "escape-string-regexp@npm:1.0.5" @@ -4560,20 +4615,6 @@ __metadata: languageName: node linkType: hard -"eslint-config-airbnb-base@npm:^14.2.1": - version: 14.2.1 - resolution: "eslint-config-airbnb-base@npm:14.2.1" - dependencies: - confusing-browser-globals: ^1.0.10 - object.assign: ^4.1.2 - object.entries: ^1.1.2 - peerDependencies: - eslint: ^5.16.0 || ^6.8.0 || ^7.2.0 - eslint-plugin-import: ^2.22.1 - checksum: 858bea748a3c8685b52fcf2488e6a0b964022f8387f4ee1e69cb707d4fda2a409f09eb8eea658bcd83fae3519967d10208ba7576dd3d3202b8cf0b9d1a6e21eb - languageName: node - linkType: hard - "eslint-config-airbnb-base@npm:^15.0.0": version: 15.0.0 resolution: "eslint-config-airbnb-base@npm:15.0.0" @@ -4603,31 +4644,31 @@ __metadata: languageName: node linkType: hard -"eslint-config-airbnb@npm:18.2.1": - version: 18.2.1 - resolution: "eslint-config-airbnb@npm:18.2.1" +"eslint-config-airbnb@npm:19.0.4": + version: 19.0.4 + resolution: "eslint-config-airbnb@npm:19.0.4" dependencies: - eslint-config-airbnb-base: ^14.2.1 + eslint-config-airbnb-base: ^15.0.0 object.assign: ^4.1.2 - object.entries: ^1.1.2 + object.entries: ^1.1.5 peerDependencies: - eslint: ^5.16.0 || ^6.8.0 || ^7.2.0 - eslint-plugin-import: ^2.22.1 - eslint-plugin-jsx-a11y: ^6.4.1 - eslint-plugin-react: ^7.21.5 - eslint-plugin-react-hooks: ^4 || ^3 || ^2.3.0 || ^1.7.0 - checksum: ea11cd0006912f7086fb278e03180da4bc2378cf4e93b1dd970775d8e9b50fd11a64209bdc0ed17654d29abe4ccfa19baa4d1e1e5bd3eb660fcf4798ba2810d2 + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.3 + eslint-plugin-jsx-a11y: ^6.5.1 + eslint-plugin-react: ^7.28.0 + eslint-plugin-react-hooks: ^4.3.0 + checksum: 253178689c3c80eef2567e3aaf0612e18973bc9cf51d9be36074b5dd58210e8b6942200a424bcccbb81ac884e41303479ab09f251a2a97addc2de61efdc9576c languageName: node linkType: hard -"eslint-config-prettier@npm:7.2.0": - version: 7.2.0 - resolution: "eslint-config-prettier@npm:7.2.0" +"eslint-config-prettier@npm:8.8.0": + version: 8.8.0 + resolution: "eslint-config-prettier@npm:8.8.0" peerDependencies: eslint: ">=7.0.0" bin: eslint-config-prettier: bin/cli.js - checksum: e3f7bba98e743bf62e937518104d3eb1dbbd17e8aef2b64ac4683c0e6d0643aca678b9f7321d1da79e7a4fd8c65b8836a20a8b0721647cb81787fd2caa046361 + checksum: 1e94c3882c4d5e41e1dcfa2c368dbccbfe3134f6ac7d40101644d3bfbe3eb2f2ffac757f3145910b5eacf20c0e85e02b91293d3126d770cbf3dc390b3564681c languageName: node linkType: hard @@ -4650,7 +4691,7 @@ __metadata: languageName: node linkType: hard -"eslint-import-resolver-node@npm:^0.3.6, eslint-import-resolver-node@npm:^0.3.7": +"eslint-import-resolver-node@npm:^0.3.7": version: 0.3.7 resolution: "eslint-import-resolver-node@npm:0.3.7" dependencies: @@ -4661,25 +4702,26 @@ __metadata: languageName: node linkType: hard -"eslint-import-resolver-typescript@npm:3.5.2": - version: 3.5.2 - resolution: "eslint-import-resolver-typescript@npm:3.5.2" +"eslint-import-resolver-typescript@npm:3.5.5": + version: 3.5.5 + resolution: "eslint-import-resolver-typescript@npm:3.5.5" dependencies: debug: ^4.3.4 - enhanced-resolve: ^5.10.0 - get-tsconfig: ^4.2.0 - globby: ^13.1.2 - is-core-module: ^2.10.0 + enhanced-resolve: ^5.12.0 + eslint-module-utils: ^2.7.4 + get-tsconfig: ^4.5.0 + globby: ^13.1.3 + is-core-module: ^2.11.0 is-glob: ^4.0.3 - synckit: ^0.8.4 + synckit: ^0.8.5 peerDependencies: eslint: "*" eslint-plugin-import: "*" - checksum: e163f36072c31150671973eb784e6b2a5d1e5dcc4c8ac19a01d9f1f4223ed07bc4c7ab235bef6caecb1949ba74eea20048cbbb4d6ac7de5f02bdd50c29485a4c + checksum: 27e6276fdff5d377c9036362ff736ac29852106e883ff589ea9092dc57d4bc2a67a82d75134221124f05045f9a7e2114a159b2c827d1f9f64d091f7afeab0f58 languageName: node linkType: hard -"eslint-module-utils@npm:^2.7.2, eslint-module-utils@npm:^2.7.4": +"eslint-module-utils@npm:^2.7.4": version: 2.7.4 resolution: "eslint-module-utils@npm:2.7.4" dependencies: @@ -4702,30 +4744,7 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-import@npm:2.25.4": - version: 2.25.4 - resolution: "eslint-plugin-import@npm:2.25.4" - dependencies: - array-includes: ^3.1.4 - array.prototype.flat: ^1.2.5 - debug: ^2.6.9 - doctrine: ^2.1.0 - eslint-import-resolver-node: ^0.3.6 - eslint-module-utils: ^2.7.2 - has: ^1.0.3 - is-core-module: ^2.8.0 - is-glob: ^4.0.3 - minimatch: ^3.0.4 - object.values: ^1.1.5 - resolve: ^1.20.0 - tsconfig-paths: ^3.12.0 - peerDependencies: - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - checksum: 0af24f5c7c6ca692f42e3947127f0ae7dfe44f1e02740f7cbe988b510a9c52bab0065d7df04e2d953dcc88a4595a00cbdcf14018acf8cd75cfd47b72efcbb734 - languageName: node - linkType: hard - -"eslint-plugin-import@npm:2.x": +"eslint-plugin-import@npm:2.27.5, eslint-plugin-import@npm:2.x": version: 2.27.5 resolution: "eslint-plugin-import@npm:2.27.5" dependencies: @@ -4750,29 +4769,7 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-jsx-a11y@npm:6.5.1": - version: 6.5.1 - resolution: "eslint-plugin-jsx-a11y@npm:6.5.1" - dependencies: - "@babel/runtime": ^7.16.3 - aria-query: ^4.2.2 - array-includes: ^3.1.4 - ast-types-flow: ^0.0.7 - axe-core: ^4.3.5 - axobject-query: ^2.2.0 - damerau-levenshtein: ^1.0.7 - emoji-regex: ^9.2.2 - has: ^1.0.3 - jsx-ast-utils: ^3.2.1 - language-tags: ^1.0.5 - minimatch: ^3.0.4 - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - checksum: 311ab993ed982d0cc7cb0ba02fbc4b36c4a94e9434f31e97f13c4d67e8ecb8aec36baecfd759ff70498846e7e11d7a197eb04c39ad64934baf3354712fd0bc9d - languageName: node - linkType: hard - -"eslint-plugin-jsx-a11y@npm:6.x": +"eslint-plugin-jsx-a11y@npm:6.7.1, eslint-plugin-jsx-a11y@npm:6.x": version: 6.7.1 resolution: "eslint-plugin-jsx-a11y@npm:6.7.1" dependencies: @@ -4798,6 +4795,21 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-prettier@npm:4.2.1": + version: 4.2.1 + resolution: "eslint-plugin-prettier@npm:4.2.1" + dependencies: + prettier-linter-helpers: ^1.0.0 + peerDependencies: + eslint: ">=7.28.0" + prettier: ">=2.0.0" + peerDependenciesMeta: + eslint-config-prettier: + optional: true + checksum: b9e839d2334ad8ec7a5589c5cb0f219bded260839a857d7a486997f9870e95106aa59b8756ff3f37202085ebab658de382b0267cae44c3a7f0eb0bcc03a4f6d6 + languageName: node + linkType: hard + "eslint-plugin-react-app@npm:6.2.2": version: 6.2.2 resolution: "eslint-plugin-react-app@npm:6.2.2" @@ -4826,27 +4838,28 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-react@npm:7.28.0": - version: 7.28.0 - resolution: "eslint-plugin-react@npm:7.28.0" +"eslint-plugin-react@npm:7.32.2": + version: 7.32.2 + resolution: "eslint-plugin-react@npm:7.32.2" dependencies: - array-includes: ^3.1.4 - array.prototype.flatmap: ^1.2.5 + array-includes: ^3.1.6 + array.prototype.flatmap: ^1.3.1 + array.prototype.tosorted: ^1.1.1 doctrine: ^2.1.0 estraverse: ^5.3.0 jsx-ast-utils: ^2.4.1 || ^3.0.0 - minimatch: ^3.0.4 - object.entries: ^1.1.5 - object.fromentries: ^2.0.5 - object.hasown: ^1.1.0 - object.values: ^1.1.5 - prop-types: ^15.7.2 - resolve: ^2.0.0-next.3 + minimatch: ^3.1.2 + object.entries: ^1.1.6 + object.fromentries: ^2.0.6 + object.hasown: ^1.1.2 + object.values: ^1.1.6 + prop-types: ^15.8.1 + resolve: ^2.0.0-next.4 semver: ^6.3.0 - string.prototype.matchall: ^4.0.6 + string.prototype.matchall: ^4.0.8 peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - checksum: 90293d0fd53bb1f735ffd32141cdd211fb1120c9f7bbe5342f9e923261a39e52a2b2575d4e46c9cd77d257f42db4a99b8b339689fc5b5c1c26048929f69b1784 + checksum: 2232b3b8945aa50b7773919c15cd96892acf35d2f82503667a79e2f55def90f728ed4f0e496f0f157acbe1bd4397c5615b676ae7428fe84488a544ca53feb944 languageName: node linkType: hard @@ -4885,40 +4898,32 @@ __metadata: languageName: node linkType: hard -"eslint-utils@npm:^2.0.0, eslint-utils@npm:^2.1.0": - version: 2.1.0 - resolution: "eslint-utils@npm:2.1.0" +"eslint-scope@npm:^7.2.0": + version: 7.2.0 + resolution: "eslint-scope@npm:7.2.0" dependencies: - eslint-visitor-keys: ^1.1.0 - checksum: 27500938f348da42100d9e6ad03ae29b3de19ba757ae1a7f4a087bdcf83ac60949bbb54286492ca61fac1f5f3ac8692dd21537ce6214240bf95ad0122f24d71d + esrecurse: ^4.3.0 + estraverse: ^5.2.0 + checksum: 64591a2d8b244ade9c690b59ef238a11d5c721a98bcee9e9f445454f442d03d3e04eda88e95a4daec558220a99fa384309d9faae3d459bd40e7a81b4063980ae languageName: node linkType: hard -"eslint-utils@npm:^3.0.0": - version: 3.0.0 - resolution: "eslint-utils@npm:3.0.0" +"eslint-utils@npm:^2.0.0": + version: 2.1.0 + resolution: "eslint-utils@npm:2.1.0" dependencies: - eslint-visitor-keys: ^2.0.0 - peerDependencies: - eslint: ">=5" - checksum: 0668fe02f5adab2e5a367eee5089f4c39033af20499df88fe4e6aba2015c20720404d8c3d6349b6f716b08fdf91b9da4e5d5481f265049278099c4c836ccb619 + eslint-visitor-keys: ^1.1.0 + checksum: 27500938f348da42100d9e6ad03ae29b3de19ba757ae1a7f4a087bdcf83ac60949bbb54286492ca61fac1f5f3ac8692dd21537ce6214240bf95ad0122f24d71d languageName: node linkType: hard -"eslint-visitor-keys@npm:^1.0.0, eslint-visitor-keys@npm:^1.1.0, eslint-visitor-keys@npm:^1.3.0": +"eslint-visitor-keys@npm:^1.0.0, eslint-visitor-keys@npm:^1.1.0": version: 1.3.0 resolution: "eslint-visitor-keys@npm:1.3.0" checksum: 37a19b712f42f4c9027e8ba98c2b06031c17e0c0a4c696cd429bd9ee04eb43889c446f2cd545e1ff51bef9593fcec94ecd2c2ef89129fcbbf3adadbef520376a languageName: node linkType: hard -"eslint-visitor-keys@npm:^2.0.0": - version: 2.1.0 - resolution: "eslint-visitor-keys@npm:2.1.0" - checksum: e3081d7dd2611a35f0388bbdc2f5da60b3a3c5b8b6e928daffff7391146b434d691577aa95064c8b7faad0b8a680266bcda0a42439c18c717b80e6718d7e267d - languageName: node - linkType: hard - "eslint-visitor-keys@npm:^3.3.0": version: 3.3.0 resolution: "eslint-visitor-keys@npm:3.3.0" @@ -4926,64 +4931,71 @@ __metadata: languageName: node linkType: hard -"eslint@npm:7.32.0": - version: 7.32.0 - resolution: "eslint@npm:7.32.0" +"eslint-visitor-keys@npm:^3.4.0": + version: 3.4.0 + resolution: "eslint-visitor-keys@npm:3.4.0" + checksum: 33159169462d3989321a1ec1e9aaaf6a24cc403d5d347e9886d1b5bfe18ffa1be73bdc6203143a28a606b142b1af49787f33cff0d6d0813eb5f2e8d2e1a6043c + languageName: node + linkType: hard + +"eslint@npm:8.39.0": + version: 8.39.0 + resolution: "eslint@npm:8.39.0" dependencies: - "@babel/code-frame": 7.12.11 - "@eslint/eslintrc": ^0.4.3 - "@humanwhocodes/config-array": ^0.5.0 + "@eslint-community/eslint-utils": ^4.2.0 + "@eslint-community/regexpp": ^4.4.0 + "@eslint/eslintrc": ^2.0.2 + "@eslint/js": 8.39.0 + "@humanwhocodes/config-array": ^0.11.8 + "@humanwhocodes/module-importer": ^1.0.1 + "@nodelib/fs.walk": ^1.2.8 ajv: ^6.10.0 chalk: ^4.0.0 cross-spawn: ^7.0.2 - debug: ^4.0.1 + debug: ^4.3.2 doctrine: ^3.0.0 - enquirer: ^2.3.5 escape-string-regexp: ^4.0.0 - eslint-scope: ^5.1.1 - eslint-utils: ^2.1.0 - eslint-visitor-keys: ^2.0.0 - espree: ^7.3.1 - esquery: ^1.4.0 + eslint-scope: ^7.2.0 + eslint-visitor-keys: ^3.4.0 + espree: ^9.5.1 + esquery: ^1.4.2 esutils: ^2.0.2 fast-deep-equal: ^3.1.3 file-entry-cache: ^6.0.1 - functional-red-black-tree: ^1.0.1 - glob-parent: ^5.1.2 - globals: ^13.6.0 - ignore: ^4.0.6 + find-up: ^5.0.0 + glob-parent: ^6.0.2 + globals: ^13.19.0 + grapheme-splitter: ^1.0.4 + ignore: ^5.2.0 import-fresh: ^3.0.0 imurmurhash: ^0.1.4 is-glob: ^4.0.0 - js-yaml: ^3.13.1 + is-path-inside: ^3.0.3 + js-sdsl: ^4.1.4 + js-yaml: ^4.1.0 json-stable-stringify-without-jsonify: ^1.0.1 levn: ^0.4.1 lodash.merge: ^4.6.2 - minimatch: ^3.0.4 + minimatch: ^3.1.2 natural-compare: ^1.4.0 optionator: ^0.9.1 - progress: ^2.0.0 - regexpp: ^3.1.0 - semver: ^7.2.1 - strip-ansi: ^6.0.0 + strip-ansi: ^6.0.1 strip-json-comments: ^3.1.0 - table: ^6.0.9 text-table: ^0.2.0 - v8-compile-cache: ^2.0.3 bin: eslint: bin/eslint.js - checksum: cc85af9985a3a11085c011f3d27abe8111006d34cc274291b3c4d7bea51a4e2ff6135780249becd919ba7f6d6d1ecc38a6b73dacb6a7be08d38453b344dc8d37 + checksum: d7a074ff326e7ea482500dc0427a7d4b0260460f0f812d19b46b1cca681806b67309f23da9d17cd3de8eb74dd3c14cb549c4d58b05b140564d14cc1a391122a0 languageName: node linkType: hard -"espree@npm:^7.3.0, espree@npm:^7.3.1": - version: 7.3.1 - resolution: "espree@npm:7.3.1" +"espree@npm:^9.5.1": + version: 9.5.1 + resolution: "espree@npm:9.5.1" dependencies: - acorn: ^7.4.0 - acorn-jsx: ^5.3.1 - eslint-visitor-keys: ^1.3.0 - checksum: aa9b50dcce883449af2e23bc2b8d9abb77118f96f4cb313935d6b220f77137eaef7724a83c3f6243b96bc0e4ab14766198e60818caad99f9519ae5a336a39b45 + acorn: ^8.8.0 + acorn-jsx: ^5.3.2 + eslint-visitor-keys: ^3.4.0 + checksum: cdf6e43540433d917c4f2ee087c6e987b2063baa85a1d9cdaf51533d78275ebd5910c42154e7baf8e3e89804b386da0a2f7fad2264d8f04420e7506bf87b3b88 languageName: node linkType: hard @@ -4997,12 +5009,12 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.4.0": - version: 1.4.0 - resolution: "esquery@npm:1.4.0" +"esquery@npm:^1.4.2": + version: 1.5.0 + resolution: "esquery@npm:1.5.0" dependencies: estraverse: ^5.1.0 - checksum: a0807e17abd7fbe5fbd4fab673038d6d8a50675cdae6b04fbaa520c34581be0c5fa24582990e8acd8854f671dd291c78bb2efb9e0ed5b62f33bac4f9cf820210 + checksum: aefb0d2596c230118656cd4ec7532d447333a410a48834d80ea648b1e7b5c9bc9ed8b5e33a89cb04e487b60d622f44cf5713bf4abed7c97343edefdc84a35900 languageName: node linkType: hard @@ -5179,6 +5191,13 @@ __metadata: languageName: node linkType: hard +"fast-diff@npm:^1.1.2": + version: 1.2.0 + resolution: "fast-diff@npm:1.2.0" + checksum: 1b5306eaa9e826564d9e5ffcd6ebd881eb5f770b3f977fcbf38f05c824e42172b53c79920e8429c54eb742ce15a0caf268b0fdd5b38f6de52234c4a8368131ae + languageName: node + linkType: hard + "fast-glob@npm:^3.1.1, fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.9": version: 3.2.12 resolution: "fast-glob@npm:3.2.12" @@ -5425,7 +5444,7 @@ __metadata: languageName: node linkType: hard -"follow-redirects@npm:^1.14.7, follow-redirects@npm:^1.14.9": +"follow-redirects@npm:^1.14.7, follow-redirects@npm:^1.14.9, follow-redirects@npm:^1.15.0": version: 1.15.2 resolution: "follow-redirects@npm:1.15.2" peerDependenciesMeta: @@ -5497,7 +5516,7 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^10.0.0, fs-extra@npm:^10.1.0": +"fs-extra@npm:^10.1.0": version: 10.1.0 resolution: "fs-extra@npm:10.1.0" dependencies: @@ -5508,6 +5527,17 @@ __metadata: languageName: node linkType: hard +"fs-extra@npm:^11.0.0": + version: 11.1.1 + resolution: "fs-extra@npm:11.1.1" + dependencies: + graceful-fs: ^4.2.0 + jsonfile: ^6.0.1 + universalify: ^2.0.0 + checksum: fb883c68245b2d777fbc1f2082c9efb084eaa2bbf9fddaa366130d196c03608eebef7fb490541276429ee1ca99f317e2d73e96f5ca0999eefedf5a624ae1edfd + languageName: node + linkType: hard + "fs-extra@npm:^9.1.0": version: 9.1.0 resolution: "fs-extra@npm:9.1.0" @@ -5674,10 +5704,10 @@ __metadata: languageName: node linkType: hard -"get-tsconfig@npm:^4.2.0": - version: 4.3.0 - resolution: "get-tsconfig@npm:4.3.0" - checksum: 2597aab99aa3a24db209e192a3e5874ac47fc5abc71703ee26346e0c5816cb346ca09fc813c739db5862d3a2905d89aeca1b0cbc46c2b272398d672309aaf414 +"get-tsconfig@npm:^4.5.0": + version: 4.5.0 + resolution: "get-tsconfig@npm:4.5.0" + checksum: 687ee2bd69a5a07db2e2edeb4d6c41c3debb38f6281a66beb643e3f5b520252e27fcbbb5702bdd9a5f05dcf8c1d2e0150a4d8a960ad75cbdea74e06a51e91b02 languageName: node linkType: hard @@ -5699,7 +5729,7 @@ __metadata: languageName: node linkType: hard -"git-raw-commits@npm:^2.0.0, git-raw-commits@npm:^2.0.8": +"git-raw-commits@npm:^2.0.11, git-raw-commits@npm:^2.0.8": version: 2.0.11 resolution: "git-raw-commits@npm:2.0.11" dependencies: @@ -5754,6 +5784,15 @@ __metadata: languageName: node linkType: hard +"glob-parent@npm:^6.0.2": + version: 6.0.2 + resolution: "glob-parent@npm:6.0.2" + dependencies: + is-glob: ^4.0.3 + checksum: c13ee97978bef4f55106b71e66428eb1512e71a7466ba49025fc2aec59a5bfb0954d5abd58fc5ee6c9b076eef4e1f6d3375c2e964b88466ca390da4419a786a8 + languageName: node + linkType: hard + "glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": version: 7.2.3 resolution: "glob@npm:7.2.3" @@ -5806,12 +5845,12 @@ __metadata: languageName: node linkType: hard -"globals@npm:^13.6.0, globals@npm:^13.9.0": - version: 13.19.0 - resolution: "globals@npm:13.19.0" +"globals@npm:^13.19.0": + version: 13.20.0 + resolution: "globals@npm:13.20.0" dependencies: type-fest: ^0.20.2 - checksum: a000dbd00bcf28f0941d8a29c3522b1c3b8e4bfe4e60e262c477a550c3cbbe8dbe2925a6905f037acd40f9a93c039242e1f7079c76b0fd184bc41dcc3b5c8e2e + checksum: ad1ecf914bd051325faad281d02ea2c0b1df5d01bd94d368dcc5513340eac41d14b3c61af325768e3c7f8d44576e72780ec0b6f2d366121f8eec6e03c3a3b97a languageName: node linkType: hard @@ -5859,16 +5898,16 @@ __metadata: languageName: node linkType: hard -"globby@npm:^13.1.2": - version: 13.1.3 - resolution: "globby@npm:13.1.3" +"globby@npm:^13.1.3": + version: 13.1.4 + resolution: "globby@npm:13.1.4" dependencies: dir-glob: ^3.0.1 fast-glob: ^3.2.11 ignore: ^5.2.0 merge2: ^1.4.1 slash: ^4.0.0 - checksum: 93f06e02002cdf368f7e3d55bd59e7b00784c7cc8fe92c7ee5082cc7171ff6109fda45e1c97a80bb48bc811dedaf7843c7c9186f5f84bde4883ab630e13c43df + checksum: e8bc13879972082d590cd1b0e27080d90d2e12fff7eeb2cee9329c29115ace14cc5b9f899e3d6beb136ba826307a727016658919a6f383e1511d698acee81741 languageName: node linkType: hard @@ -5898,74 +5937,74 @@ __metadata: "@babel/plugin-syntax-import-assertions": 7.16.7 "@babel/plugin-transform-destructuring": 7.17.7 "@babel/preset-react": 7.16.7 - "@commitlint/cli": 16.2.3 - "@commitlint/config-conventional": 16.2.1 - "@cypress/code-coverage": 3.10.0 - "@emotion/cache": 11.10.5 - "@emotion/react": 11.10.5 + "@commitlint/cli": 17.6.1 + "@commitlint/config-conventional": 17.6.1 + "@cypress/code-coverage": 3.10.4 + "@emotion/cache": 11.10.8 + "@emotion/react": 11.10.8 "@emotion/server": 11.10.0 - "@emotion/styled": 11.10.5 - "@graasp/query-client": 0.3.2 - "@graasp/sdk": 0.9.1 - "@graasp/translations": 1.8.0 - "@graasp/ui": 2.1.0 + "@emotion/styled": 11.10.8 + "@graasp/query-client": 0.4.1 + "@graasp/sdk": 0.12.0 + "@graasp/translations": 1.12.0 + "@graasp/ui": 2.5.0 "@mui/icons-material": 5.10.9 "@mui/lab": 5.0.0-alpha.104 "@mui/material": 5.10.12 - "@sentry/node": 6.19.2 - "@sentry/react": 6.19.2 - "@testing-library/jest-dom": 5.16.3 - "@testing-library/react": 12.1.4 - "@testing-library/user-event": 14.0.0 - "@trivago/prettier-plugin-sort-imports": 3.2.0 - "@types/next": 9.0.0 - "@types/node": 18.7.1 + "@sentry/node": 7.50.0 + "@sentry/react": 7.50.0 + "@testing-library/jest-dom": 5.16.5 + "@testing-library/react": 14.0.0 + "@testing-library/user-event": 14.4.3 + "@trivago/prettier-plugin-sort-imports": 4.1.1 + "@types/lodash.truncate": 4.4.7 + "@types/node": 18.16.2 "@types/react": 17.0.30 "@types/react-dom": 17.0.2 - "@typescript-eslint/eslint-plugin": 5.44.0 - "@typescript-eslint/parser": 5.44.0 + "@typescript-eslint/eslint-plugin": 5.59.1 + "@typescript-eslint/parser": 5.59.1 babel-eslint: 10.1.0 babel-plugin-istanbul: 6.1.1 - concurrently: 7.0.0 - cypress: 12.4.0 + concurrently: 8.0.1 + cypress: 12.11.0 env-cmd: 10.1.0 - eslint: 7.32.0 - eslint-config-airbnb: 18.2.1 + eslint: 8.39.0 + eslint-config-airbnb: 19.0.4 eslint-config-airbnb-typescript: 17.0.0 - eslint-config-prettier: 7.2.0 - eslint-import-resolver-typescript: 3.5.2 - eslint-plugin-import: 2.25.4 - eslint-plugin-jsx-a11y: 6.5.1 - eslint-plugin-react: 7.28.0 + eslint-config-prettier: 8.8.0 + eslint-import-resolver-typescript: 3.5.5 + eslint-plugin-import: 2.27.5 + eslint-plugin-jsx-a11y: 6.7.1 + eslint-plugin-prettier: 4.2.1 + eslint-plugin-react: 7.32.2 eslint-plugin-react-app: 6.2.2 http-status-codes: 2.2.0 - husky: ^7.0.4 + husky: 8.0.3 i18next: 21.8.1 - immutable: 4.0.0 + immutable: 4.3.0 + interweave: 13.1.0 istanbul-lib-coverage: 3.2.0 - katex: 0.15.3 lodash: 4.17.21 lodash.isobject: 3.0.2 lodash.isstring: 4.0.1 lodash.truncate: 4.4.2 luxon: 3.3.0 - next: 12.1.6 + next: 12.2.6 nyc: 15.1.0 - prettier: 2.6.1 + prettier: 2.8.8 prop-types: 15.8.1 - qs: 6.11.0 + qs: 6.11.1 react: 17.0.2 react-dom: 17.0.2 - react-ga4: 1.4.1 + react-ga4: 2.1.0 react-helmet: 6.1.0 - react-i18next: 11.16.2 - react-query: 3.34.19 - react-quill: 1.3.5 - react-router-dom: 6.3.0 - react-toastify: 8.2.0 + react-i18next: 12.2.2 + react-query: 3.39.3 + react-router-dom: 6.10.0 + react-toastify: 9.1.2 standard-version: 9.5.0 typescript: 4.8.4 - uuid: 8.3.2 + uuid: 9.0.0 wait-on: 6.0.1 languageName: unknown linkType: soft @@ -5984,6 +6023,13 @@ __metadata: languageName: node linkType: hard +"grapheme-splitter@npm:^1.0.4": + version: 1.0.4 + resolution: "grapheme-splitter@npm:1.0.4" + checksum: 0c22ec54dee1b05cd480f78cf14f732cb5b108edc073572c4ec205df4cd63f30f8db8025afc5debc8835a8ddeacf648a1c7992fe3dcd6ad38f9a476d84906620 + languageName: node + linkType: hard + "handlebars@npm:^4.7.7": version: 4.7.7 resolution: "handlebars@npm:4.7.7" @@ -6088,15 +6134,6 @@ __metadata: languageName: node linkType: hard -"history@npm:^5.2.0": - version: 5.3.0 - resolution: "history@npm:5.3.0" - dependencies: - "@babel/runtime": ^7.7.6 - checksum: d73c35df49d19ac172f9547d30a21a26793e83f16a78386d99583b5bf1429cc980799fcf1827eb215d31816a6600684fba9686ce78104e23bd89ec239e7c726f - languageName: node - linkType: hard - "hoist-non-react-statics@npm:^3.3.1, hoist-non-react-statics@npm:^3.3.2": version: 3.3.2 resolution: "hoist-non-react-statics@npm:3.3.2" @@ -6153,6 +6190,18 @@ __metadata: languageName: node linkType: hard +"htmlparser2@npm:^8.0.0": + version: 8.0.2 + resolution: "htmlparser2@npm:8.0.2" + dependencies: + domelementtype: ^2.3.0 + domhandler: ^5.0.3 + domutils: ^3.0.1 + entities: ^4.4.0 + checksum: 29167a0f9282f181da8a6d0311b76820c8a59bc9e3c87009e21968264c2987d2723d6fde5a964d4b7b6cba663fca96ffb373c06d8223a85f52a6089ced942700 + languageName: node + linkType: hard + "http-cache-semantics@npm:^4.1.0": version: 4.1.0 resolution: "http-cache-semantics@npm:4.1.0" @@ -6160,6 +6209,19 @@ __metadata: languageName: node linkType: hard +"http-errors@npm:^1.7.1": + version: 1.8.1 + resolution: "http-errors@npm:1.8.1" + dependencies: + depd: ~1.1.2 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: ">= 1.5.0 < 2" + toidentifier: 1.0.1 + checksum: d3c7e7e776fd51c0a812baff570bdf06fe49a5dc448b700ab6171b1250e4cf7db8b8f4c0b133e4bfe2451022a5790c1ca6c2cae4094dedd6ac8304a1267f91d2 + languageName: node + linkType: hard + "http-proxy-agent@npm:^5.0.0": version: 5.0.0 resolution: "http-proxy-agent@npm:5.0.0" @@ -6222,12 +6284,12 @@ __metadata: languageName: node linkType: hard -"husky@npm:^7.0.4": - version: 7.0.4 - resolution: "husky@npm:7.0.4" +"husky@npm:8.0.3": + version: 8.0.3 + resolution: "husky@npm:8.0.3" bin: husky: lib/bin.js - checksum: c6ec4af63da2c9522da8674a20ad9b48362cc92704896cc8a58c6a2a39d797feb2b806f93fbd83a6d653fbdceb2c3b6e0b602c6b2e8565206ffc2882ef7db9e9 + checksum: 837bc7e4413e58c1f2946d38fb050f5d7324c6f16b0fd66411ffce5703b294bd21429e8ba58711cd331951ee86ed529c5be4f76805959ff668a337dbfa82a1b0 languageName: node linkType: hard @@ -6273,13 +6335,6 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^4.0.6": - version: 4.0.6 - resolution: "ignore@npm:4.0.6" - checksum: 248f82e50a430906f9ee7f35e1158e3ec4c3971451dd9f99c9bc1548261b4db2b99709f60ac6c6cac9333494384176cc4cc9b07acbe42d52ac6a09cad734d800 - languageName: node - linkType: hard - "ignore@npm:^5.1.4, ignore@npm:^5.2.0": version: 5.2.4 resolution: "ignore@npm:5.2.4" @@ -6287,13 +6342,6 @@ __metadata: languageName: node linkType: hard -"immutable@npm:4.0.0": - version: 4.0.0 - resolution: "immutable@npm:4.0.0" - checksum: 4b5e9181e4d5fa06728a481835ec09c86367e5d03268666c95b522b7644ab891098022e4479a43c4c81a68f2ed82f10751ce5d33e208d7b873b6e7f9dfaf4d87 - languageName: node - linkType: hard - "immutable@npm:4.2.4": version: 4.2.4 resolution: "immutable@npm:4.2.4" @@ -6301,6 +6349,13 @@ __metadata: languageName: node linkType: hard +"immutable@npm:4.3.0": + version: 4.3.0 + resolution: "immutable@npm:4.3.0" + checksum: bbd7ea99e2752e053323543d6ff1cc71a4b4614fa6121f321ca766db2bd2092f3f1e0a90784c5431350b7344a4f792fa002eac227062d59b9377b6c09063b58b + languageName: node + linkType: hard + "import-fresh@npm:^3.0.0, import-fresh@npm:^3.2.1": version: 3.3.0 resolution: "import-fresh@npm:3.3.0" @@ -6342,7 +6397,7 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.1, inherits@npm:~2.0.3": +"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.1, inherits@npm:~2.0.3": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 @@ -6381,6 +6436,17 @@ __metadata: languageName: node linkType: hard +"interweave@npm:13.1.0": + version: 13.1.0 + resolution: "interweave@npm:13.1.0" + dependencies: + escape-html: ^1.0.3 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 8ddc82177bb81adc1148087b38763eee8cae3a64a41e07c73f705670b4b49fdd55f30095823a119b6a2f39ee9d2365211bd0220840a2c1aa61a6ca3b85f576a1 + languageName: node + linkType: hard + "ip@npm:^2.0.0": version: 2.0.0 resolution: "ip@npm:2.0.0" @@ -6467,7 +6533,7 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.10.0, is-core-module@npm:^2.11.0, is-core-module@npm:^2.5.0, is-core-module@npm:^2.8.0, is-core-module@npm:^2.9.0": +"is-core-module@npm:^2.11.0, is-core-module@npm:^2.5.0, is-core-module@npm:^2.9.0": version: 2.11.0 resolution: "is-core-module@npm:2.11.0" dependencies: @@ -6580,7 +6646,7 @@ __metadata: languageName: node linkType: hard -"is-path-inside@npm:^3.0.2": +"is-path-inside@npm:^3.0.2, is-path-inside@npm:^3.0.3": version: 3.0.3 resolution: "is-path-inside@npm:3.0.3" checksum: abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9 @@ -6969,6 +7035,13 @@ __metadata: languageName: node linkType: hard +"js-sdsl@npm:^4.1.4": + version: 4.4.0 + resolution: "js-sdsl@npm:4.4.0" + checksum: 7bb08a2d746ab7ff742720339aa006c631afe05e77d11eda988c1c35fae8e03e492e4e347e883e786e3ce6170685d4780c125619111f0730c11fdb41b04059c7 + languageName: node + linkType: hard + "js-sha3@npm:0.8.0": version: 0.8.0 resolution: "js-sha3@npm:0.8.0" @@ -6983,7 +7056,18 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:3.14.1, js-yaml@npm:^3.13.1": +"js-yaml@npm:4.1.0, js-yaml@npm:^4.1.0": + version: 4.1.0 + resolution: "js-yaml@npm:4.1.0" + dependencies: + argparse: ^2.0.1 + bin: + js-yaml: bin/js-yaml.js + checksum: c7830dfd456c3ef2c6e355cc5a92e6700ceafa1d14bba54497b34a99f0376cecbb3e9ac14d3e5849b426d5a5140709a66237a8c991c675431271c4ce5504151a + languageName: node + linkType: hard + +"js-yaml@npm:^3.13.1": version: 3.14.1 resolution: "js-yaml@npm:3.14.1" dependencies: @@ -7112,7 +7196,7 @@ __metadata: languageName: node linkType: hard -"jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.2.1, jsx-ast-utils@npm:^3.3.3": +"jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.3": version: 3.3.3 resolution: "jsx-ast-utils@npm:3.3.3" dependencies: @@ -7122,17 +7206,6 @@ __metadata: languageName: node linkType: hard -"katex@npm:0.15.3": - version: 0.15.3 - resolution: "katex@npm:0.15.3" - dependencies: - commander: ^8.0.0 - bin: - katex: cli.js - checksum: 12bec82d9ae9f122b9aeafaf2de476e702d12ae19bb9bdd9c8c24126fd81e752047bb856254af98ca54fc51f3bb7f149b3902d65dcdafb5e3deeb691ec4d3db2 - languageName: node - linkType: hard - "katex@npm:0.16.0": version: 0.16.0 resolution: "katex@npm:0.16.0" @@ -7151,7 +7224,7 @@ __metadata: languageName: node linkType: hard -"language-subtag-registry@npm:^0.3.20, language-subtag-registry@npm:~0.3.2": +"language-subtag-registry@npm:~0.3.2": version: 0.3.22 resolution: "language-subtag-registry@npm:0.3.22" checksum: 8ab70a7e0e055fe977ac16ea4c261faec7205ac43db5e806f72e5b59606939a3b972c4bd1e10e323b35d6ffa97c3e1c4c99f6553069dad2dfdd22020fa3eb56a @@ -7167,15 +7240,6 @@ __metadata: languageName: node linkType: hard -"language-tags@npm:^1.0.5": - version: 1.0.7 - resolution: "language-tags@npm:1.0.7" - dependencies: - language-subtag-registry: ^0.3.20 - checksum: 2f1ca8ffe4e549893817456ca1974dbff0f3cc8aea4e123e666dc6df85f3cf2d828b8143084388a7e2bec15fac77b7194151e43b5b32e63526dafe17a08a9fd0 - languageName: node - linkType: hard - "lazy-ass@npm:^1.6.0": version: 1.6.0 resolution: "lazy-ass@npm:1.6.0" @@ -7294,6 +7358,13 @@ __metadata: languageName: node linkType: hard +"lodash.camelcase@npm:^4.3.0": + version: 4.3.0 + resolution: "lodash.camelcase@npm:4.3.0" + checksum: cb9227612f71b83e42de93eccf1232feeb25e705bdb19ba26c04f91e885bfd3dd5c517c4a97137658190581d3493ea3973072ca010aab7e301046d90740393d1 + languageName: node + linkType: hard + "lodash.flattendeep@npm:^4.4.0": version: 4.4.0 resolution: "lodash.flattendeep@npm:4.4.0" @@ -7301,6 +7372,13 @@ __metadata: languageName: node linkType: hard +"lodash.isfunction@npm:^3.0.9": + version: 3.0.9 + resolution: "lodash.isfunction@npm:3.0.9" + checksum: 99e54c34b1e8a9ba75c034deb39cedbd2aca7af685815e67a2a8ec4f73ec9748cda6ebee5a07d7de4b938e90d421fd280e9c385cc190f903ac217ac8aff30314 + languageName: node + linkType: hard + "lodash.ismatch@npm:^4.4.0": version: 4.4.0 resolution: "lodash.ismatch@npm:4.4.0" @@ -7315,6 +7393,13 @@ __metadata: languageName: node linkType: hard +"lodash.isplainobject@npm:^4.0.6": + version: 4.0.6 + resolution: "lodash.isplainobject@npm:4.0.6" + checksum: 29c6351f281e0d9a1d58f1a4c8f4400924b4c79f18dfc4613624d7d54784df07efaff97c1ff2659f3e085ecf4fff493300adc4837553104cef2634110b0d5337 + languageName: node + linkType: hard + "lodash.isstring@npm:4.0.1": version: 4.0.1 resolution: "lodash.isstring@npm:4.0.1" @@ -7322,6 +7407,13 @@ __metadata: languageName: node linkType: hard +"lodash.kebabcase@npm:^4.1.1": + version: 4.1.1 + resolution: "lodash.kebabcase@npm:4.1.1" + checksum: 5a6c59161914e1bae23438a298c7433e83d935e0f59853fa862e691164696bc07f6dfa4c313d499fbf41ba8d53314e9850416502376705a357d24ee6ca33af78 + languageName: node + linkType: hard + "lodash.merge@npm:^4.6.2": version: 4.6.2 resolution: "lodash.merge@npm:4.6.2" @@ -7329,6 +7421,13 @@ __metadata: languageName: node linkType: hard +"lodash.mergewith@npm:^4.6.2": + version: 4.6.2 + resolution: "lodash.mergewith@npm:4.6.2" + checksum: a6db2a9339752411f21b956908c404ec1e088e783a65c8b29e30ae5b3b6384f82517662d6f425cc97c2070b546cc2c7daaa8d33f78db7b6e9be06cd834abdeb8 + languageName: node + linkType: hard + "lodash.once@npm:^4.1.1": version: 4.1.1 resolution: "lodash.once@npm:4.1.1" @@ -7336,6 +7435,13 @@ __metadata: languageName: node linkType: hard +"lodash.snakecase@npm:^4.1.1": + version: 4.1.1 + resolution: "lodash.snakecase@npm:4.1.1" + checksum: 1685ed3e83dda6eae5a4dcaee161a51cd210aabb3e1c09c57150e7dd8feda19e4ca0d27d0631eabe8d0f4eaa51e376da64e8c018ae5415417c5890d42feb72a8 + languageName: node + linkType: hard + "lodash.sortby@npm:^4.7.0": version: 4.7.0 resolution: "lodash.sortby@npm:4.7.0" @@ -7343,14 +7449,35 @@ __metadata: languageName: node linkType: hard -"lodash.truncate@npm:4.4.2, lodash.truncate@npm:^4.4.2": +"lodash.startcase@npm:^4.4.0": + version: 4.4.0 + resolution: "lodash.startcase@npm:4.4.0" + checksum: c03a4a784aca653845fe09d0ef67c902b6e49288dc45f542a4ab345a9c406a6dc194c774423fa313ee7b06283950301c1221dd2a1d8ecb2dac8dfbb9ed5606b5 + languageName: node + linkType: hard + +"lodash.truncate@npm:4.4.2": version: 4.4.2 resolution: "lodash.truncate@npm:4.4.2" checksum: b463d8a382cfb5f0e71c504dcb6f807a7bd379ff1ea216669aa42c52fc28c54e404bfbd96791aa09e6df0de2c1d7b8f1b7f4b1a61f324d38fe98bc535aeee4f5 languageName: node linkType: hard -"lodash@npm:4.17.21, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4": +"lodash.uniq@npm:^4.5.0": + version: 4.5.0 + resolution: "lodash.uniq@npm:4.5.0" + checksum: a4779b57a8d0f3c441af13d9afe7ecff22dd1b8ce1129849f71d9bbc8e8ee4e46dfb4b7c28f7ad3d67481edd6e51126e4e2a6ee276e25906d10f7140187c392d + languageName: node + linkType: hard + +"lodash.upperfirst@npm:^4.3.1": + version: 4.3.1 + resolution: "lodash.upperfirst@npm:4.3.1" + checksum: cadec6955900afe1928cc60cdc4923a79c2ef991e42665419cc81630ed9b4f952a1093b222e0141ab31cbc4dba549f97ec28ff67929d71e01861c97188a5fa83 + languageName: node + linkType: hard + +"lodash@npm:4.17.21, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 @@ -7379,7 +7506,7 @@ __metadata: languageName: node linkType: hard -"loose-envify@npm:^1.1.0, loose-envify@npm:^1.3.1, loose-envify@npm:^1.4.0": +"loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": version: 1.4.0 resolution: "loose-envify@npm:1.4.0" dependencies: @@ -7429,12 +7556,12 @@ __metadata: languageName: node linkType: hard -"lz-string@npm:^1.4.4": - version: 1.4.4 - resolution: "lz-string@npm:1.4.4" +"lz-string@npm:^1.5.0": + version: 1.5.0 + resolution: "lz-string@npm:1.5.0" bin: lz-string: bin/bin.js - checksum: 54e31238a61a84d8f664d9860a9fba7310c5b97a52c444f80543069bc084815eff40b8d4474ae1d93992fdf6c252dca37cf27f6adbeb4dbc3df2f3ac773d0e61 + checksum: 1ee98b4580246fd90dd54da6e346fb1caefcf05f677c686d9af237a157fdea3fd7c83a4bc58f858cd5b10a34d27afe0fdcbd0505a47e0590726a873dc8b8f65d languageName: node linkType: hard @@ -7593,7 +7720,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": +"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: @@ -7629,6 +7756,13 @@ __metadata: languageName: node linkType: hard +"minimist@npm:^1.2.8": + version: 1.2.8 + resolution: "minimist@npm:1.2.8" + checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0 + languageName: node + linkType: hard + "minipass-collect@npm:^1.0.2": version: 1.0.2 resolution: "minipass-collect@npm:1.0.2" @@ -7724,13 +7858,6 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.0.0": - version: 2.0.0 - resolution: "ms@npm:2.0.0" - checksum: 0e6a22b8b746d2e0b65a430519934fefd41b6db0682e3477c10f60c76e947c4c0ad06f63ffdf1d78d335f83edee8c0aa928aa66a36c7cd95b69b26f468d527f4 - languageName: node - linkType: hard - "ms@npm:2.1.2": version: 2.1.2 resolution: "ms@npm:2.1.2" @@ -7771,12 +7898,12 @@ __metadata: languageName: node linkType: hard -"nanoid@npm:^3.1.30, nanoid@npm:^3.3.4": - version: 3.3.4 - resolution: "nanoid@npm:3.3.4" +"nanoid@npm:^3.3.4, nanoid@npm:^3.3.6": + version: 3.3.6 + resolution: "nanoid@npm:3.3.6" bin: nanoid: bin/nanoid.cjs - checksum: 2fddd6dee994b7676f008d3ffa4ab16035a754f4bb586c61df5a22cf8c8c94017aadd360368f47d653829e0569a92b129979152ff97af23a558331e47e37cd9c + checksum: 7d0eda657002738aa5206107bd0580aead6c95c460ef1bdd0b1a87a9c7ae6277ac2e9b945306aaa5b32c6dcb7feaf462d0f552e7f8b5718abfc6ead5c94a71b3 languageName: node linkType: hard @@ -7808,94 +7935,29 @@ __metadata: languageName: node linkType: hard -"next@npm:*": - version: 13.1.4 - resolution: "next@npm:13.1.4" - dependencies: - "@next/env": 13.1.4 - "@next/swc-android-arm-eabi": 13.1.4 - "@next/swc-android-arm64": 13.1.4 - "@next/swc-darwin-arm64": 13.1.4 - "@next/swc-darwin-x64": 13.1.4 - "@next/swc-freebsd-x64": 13.1.4 - "@next/swc-linux-arm-gnueabihf": 13.1.4 - "@next/swc-linux-arm64-gnu": 13.1.4 - "@next/swc-linux-arm64-musl": 13.1.4 - "@next/swc-linux-x64-gnu": 13.1.4 - "@next/swc-linux-x64-musl": 13.1.4 - "@next/swc-win32-arm64-msvc": 13.1.4 - "@next/swc-win32-ia32-msvc": 13.1.4 - "@next/swc-win32-x64-msvc": 13.1.4 - "@swc/helpers": 0.4.14 - caniuse-lite: ^1.0.30001406 - postcss: 8.4.14 - styled-jsx: 5.1.1 - peerDependencies: - fibers: ">= 3.1.0" - node-sass: ^6.0.0 || ^7.0.0 - react: ^18.2.0 - react-dom: ^18.2.0 - sass: ^1.3.0 - dependenciesMeta: - "@next/swc-android-arm-eabi": - optional: true - "@next/swc-android-arm64": - optional: true - "@next/swc-darwin-arm64": - optional: true - "@next/swc-darwin-x64": - optional: true - "@next/swc-freebsd-x64": - optional: true - "@next/swc-linux-arm-gnueabihf": - optional: true - "@next/swc-linux-arm64-gnu": - optional: true - "@next/swc-linux-arm64-musl": - optional: true - "@next/swc-linux-x64-gnu": - optional: true - "@next/swc-linux-x64-musl": - optional: true - "@next/swc-win32-arm64-msvc": - optional: true - "@next/swc-win32-ia32-msvc": - optional: true - "@next/swc-win32-x64-msvc": - optional: true - peerDependenciesMeta: - fibers: - optional: true - node-sass: - optional: true - sass: - optional: true - bin: - next: dist/bin/next - checksum: cc399e2245c5bf27ac2101672e8ce591d8258bce777de788b812f3e5d346f99349c74be8567b7340270c314bd1522e90de9a36187f9b74dc759aa114a3fb5036 - languageName: node - linkType: hard - -"next@npm:12.1.6": - version: 12.1.6 - resolution: "next@npm:12.1.6" - dependencies: - "@next/env": 12.1.6 - "@next/swc-android-arm-eabi": 12.1.6 - "@next/swc-android-arm64": 12.1.6 - "@next/swc-darwin-arm64": 12.1.6 - "@next/swc-darwin-x64": 12.1.6 - "@next/swc-linux-arm-gnueabihf": 12.1.6 - "@next/swc-linux-arm64-gnu": 12.1.6 - "@next/swc-linux-arm64-musl": 12.1.6 - "@next/swc-linux-x64-gnu": 12.1.6 - "@next/swc-linux-x64-musl": 12.1.6 - "@next/swc-win32-arm64-msvc": 12.1.6 - "@next/swc-win32-ia32-msvc": 12.1.6 - "@next/swc-win32-x64-msvc": 12.1.6 +"next@npm:12.2.6": + version: 12.2.6 + resolution: "next@npm:12.2.6" + dependencies: + "@next/env": 12.2.6 + "@next/swc-android-arm-eabi": 12.2.6 + "@next/swc-android-arm64": 12.2.6 + "@next/swc-darwin-arm64": 12.2.6 + "@next/swc-darwin-x64": 12.2.6 + "@next/swc-freebsd-x64": 12.2.6 + "@next/swc-linux-arm-gnueabihf": 12.2.6 + "@next/swc-linux-arm64-gnu": 12.2.6 + "@next/swc-linux-arm64-musl": 12.2.6 + "@next/swc-linux-x64-gnu": 12.2.6 + "@next/swc-linux-x64-musl": 12.2.6 + "@next/swc-win32-arm64-msvc": 12.2.6 + "@next/swc-win32-ia32-msvc": 12.2.6 + "@next/swc-win32-x64-msvc": 12.2.6 + "@swc/helpers": 0.4.3 caniuse-lite: ^1.0.30001332 - postcss: 8.4.5 - styled-jsx: 5.0.2 + postcss: 8.4.14 + styled-jsx: 5.0.4 + use-sync-external-store: 1.2.0 peerDependencies: fibers: ">= 3.1.0" node-sass: ^6.0.0 || ^7.0.0 @@ -7911,6 +7973,8 @@ __metadata: optional: true "@next/swc-darwin-x64": optional: true + "@next/swc-freebsd-x64": + optional: true "@next/swc-linux-arm-gnueabihf": optional: true "@next/swc-linux-arm64-gnu": @@ -7936,7 +8000,7 @@ __metadata: optional: true bin: next: dist/bin/next - checksum: 670d544fd47670c29681d10824e6da625e9d4a048e564c8d9cb80d37f33c9ff9b5ca0a53e6d84d8d618b1fe7c9bb4e6b45040cb7e57a5c46b232a8f914425dc1 + checksum: 2f0b8bb8b6c1a8ef8b9b8e3d483f51bc83e7660d8153374017d11f3e1d7cb312def4dfbfbe8ceb98218dc33898a9f275f5361db2fe59fc12da1b34fbfee2b89a languageName: node linkType: hard @@ -8130,7 +8194,7 @@ __metadata: languageName: node linkType: hard -"object.entries@npm:^1.1.2, object.entries@npm:^1.1.5, object.entries@npm:^1.1.6": +"object.entries@npm:^1.1.5, object.entries@npm:^1.1.6": version: 1.1.6 resolution: "object.entries@npm:1.1.6" dependencies: @@ -8141,7 +8205,7 @@ __metadata: languageName: node linkType: hard -"object.fromentries@npm:^2.0.5, object.fromentries@npm:^2.0.6": +"object.fromentries@npm:^2.0.6": version: 2.0.6 resolution: "object.fromentries@npm:2.0.6" dependencies: @@ -8152,7 +8216,7 @@ __metadata: languageName: node linkType: hard -"object.hasown@npm:^1.1.0, object.hasown@npm:^1.1.2": +"object.hasown@npm:^1.1.2": version: 1.1.2 resolution: "object.hasown@npm:1.1.2" dependencies: @@ -8162,7 +8226,7 @@ __metadata: languageName: node linkType: hard -"object.values@npm:^1.1.5, object.values@npm:^1.1.6": +"object.values@npm:^1.1.6": version: 1.1.6 resolution: "object.values@npm:1.1.6" dependencies: @@ -8396,6 +8460,13 @@ __metadata: languageName: node linkType: hard +"parse-srcset@npm:^1.0.2": + version: 1.0.2 + resolution: "parse-srcset@npm:1.0.2" + checksum: 3a0380380c6082021fcce982f0b89fb8a493ce9dfd7d308e5e6d855201e80db8b90438649b31fdd82a3d6089a8ca17dccddaa2b730a718389af4c037b8539ebf + languageName: node + linkType: hard + "path-exists@npm:^3.0.0": version: 3.0.0 resolution: "path-exists@npm:3.0.0" @@ -8637,14 +8708,14 @@ __metadata: languageName: node linkType: hard -"postcss@npm:8.4.5": - version: 8.4.5 - resolution: "postcss@npm:8.4.5" +"postcss@npm:^8.3.11": + version: 8.4.23 + resolution: "postcss@npm:8.4.23" dependencies: - nanoid: ^3.1.30 + nanoid: ^3.3.6 picocolors: ^1.0.0 - source-map-js: ^1.0.1 - checksum: b78abdd89c10f7b48f4bdcd376104a19d6e9c7495ab521729bdb3df315af6c211360e9f06887ad3bc0ab0f61a04b91d68ea11462997c79cced58b9ccd66fac07 + source-map-js: ^1.0.2 + checksum: 8bb9d1b2ea6e694f8987d4f18c94617971b2b8d141602725fedcc2222fdc413b776a6e1b969a25d627d7b2681ca5aabb56f59e727ef94072e1b6ac8412105a2f languageName: node linkType: hard @@ -8699,12 +8770,21 @@ __metadata: languageName: node linkType: hard -"prettier@npm:2.6.1": - version: 2.6.1 - resolution: "prettier@npm:2.6.1" +"prettier-linter-helpers@npm:^1.0.0": + version: 1.0.0 + resolution: "prettier-linter-helpers@npm:1.0.0" + dependencies: + fast-diff: ^1.1.2 + checksum: 00ce8011cf6430158d27f9c92cfea0a7699405633f7f1d4a45f07e21bf78e99895911cbcdc3853db3a824201a7c745bd49bfea8abd5fb9883e765a90f74f8392 + languageName: node + linkType: hard + +"prettier@npm:2.8.8": + version: 2.8.8 + resolution: "prettier@npm:2.8.8" bin: prettier: bin-prettier.js - checksum: 78be1f8a3ddfad7c3d8a854b6c8941a3bb1ddfca4225c38d778e0fe1029a55368f71b3bbefff82c689015fbb4d391ec44add957f01308ad2725e01a7c1f37cb6 + checksum: b49e409431bf129dd89238d64299ba80717b57ff5a6d1c1a8b1a28b590d998a34e083fa13573bc732bb8d2305becb4c9a4407f8486c81fa7d55100eb08263cf8 languageName: node linkType: hard @@ -8760,13 +8840,6 @@ __metadata: languageName: node linkType: hard -"progress@npm:^2.0.0": - version: 2.0.3 - resolution: "progress@npm:2.0.3" - checksum: f67403fe7b34912148d9252cb7481266a354bd99ce82c835f79070643bb3c6583d10dbcfda4d41e04bbc1d8437e9af0fb1e1f2135727878f5308682a579429b7 - languageName: node - linkType: hard - "promise-inflight@npm:^1.0.1": version: 1.0.1 resolution: "promise-inflight@npm:1.0.1" @@ -8784,7 +8857,7 @@ __metadata: languageName: node linkType: hard -"prop-types@npm:15.8.1, prop-types@npm:^15.5.10, prop-types@npm:^15.5.6, prop-types@npm:^15.6.0, prop-types@npm:^15.6.2, prop-types@npm:^15.7.2, prop-types@npm:^15.8.1": +"prop-types@npm:15.8.1, prop-types@npm:^15.5.6, prop-types@npm:^15.6.0, prop-types@npm:^15.6.2, prop-types@npm:^15.7.2, prop-types@npm:^15.8.1": version: 15.8.1 resolution: "prop-types@npm:15.8.1" dependencies: @@ -8812,6 +8885,13 @@ __metadata: languageName: node linkType: hard +"proxy-from-env@npm:^1.1.0": + version: 1.1.0 + resolution: "proxy-from-env@npm:1.1.0" + checksum: ed7fcc2ba0a33404958e34d95d18638249a68c430e30fcb6c478497d72739ba64ce9810a24f53a7d921d0c065e5b78e3822759800698167256b04659366ca4d4 + languageName: node + linkType: hard + "psl@npm:^1.1.28": version: 1.9.0 resolution: "psl@npm:1.9.0" @@ -8859,6 +8939,15 @@ __metadata: languageName: node linkType: hard +"qs@npm:6.11.1": + version: 6.11.1 + resolution: "qs@npm:6.11.1" + dependencies: + side-channel: ^1.0.4 + checksum: 82ee78ef12a16f3372fae5b64f76f8aedecb000feea882bbff1af146c147f6eb66b08f9c3f34d7e076f28563586956318b9b2ca41141846cdd6d5ad6f241d52f + languageName: node + linkType: hard + "qs@npm:~6.10.3": version: 6.10.4 resolution: "qs@npm:6.10.4" @@ -8957,13 +9046,6 @@ __metadata: languageName: node linkType: hard -"react-dom-factories@npm:^1.0.0": - version: 1.0.2 - resolution: "react-dom-factories@npm:1.0.2" - checksum: 2ef14d4bb1d33ebcc52a752f9d32820ce57d7ac4e0fe53b90f98adf5310f604b120ee7bb1ba2f1b36eb487b02e5cd4b1b52f138f49a82303672b971a3eb92b6a - languageName: node - linkType: hard - "react-dom@npm:17.0.2": version: 17.0.2 resolution: "react-dom@npm:17.0.2" @@ -8997,10 +9079,10 @@ __metadata: languageName: node linkType: hard -"react-ga4@npm:1.4.1": - version: 1.4.1 - resolution: "react-ga4@npm:1.4.1" - checksum: 4c33ecb47dfc26c241a6af8e2b08b29b6c059f40e456e93d1c2b65c995edce18f32d9777295774ec992d968d7c5efdd105eb62398972d85ff2e2b6dad8646a26 +"react-ga4@npm:2.1.0": + version: 2.1.0 + resolution: "react-ga4@npm:2.1.0" + checksum: f7fb41141418d4ad14756f1126a1e9958db37d4d84ae6cd798043dc03a390b6dba74d69311af0349f0b9580a43bda8930138194ccc29c4100efe446e2d6eb057 languageName: node linkType: hard @@ -9018,9 +9100,9 @@ __metadata: languageName: node linkType: hard -"react-i18next@npm:11.16.2": - version: 11.16.2 - resolution: "react-i18next@npm:11.16.2" +"react-i18next@npm:11.17.0": + version: 11.17.0 + resolution: "react-i18next@npm:11.17.0" dependencies: "@babel/runtime": ^7.14.5 html-escaper: ^2.0.2 @@ -9033,16 +9115,15 @@ __metadata: optional: true react-native: optional: true - checksum: 3e86c5e7a73eef88eff7487bbc87ecf3d5c6808ce3d0cc1e9599e6a1b72466d2d6ced2b1b600c18a2309757bea49d1670526a1bc8953a9bf377964e9ea3c9166 + checksum: 0ed6823af56f4133bf1664262206be6651cbea95e2f9275411d6346c6b8009e277b32fe60702fd06607d13b8979913bd013da702e25fa3f4e1bd73e403417296 languageName: node linkType: hard -"react-i18next@npm:11.17.0": - version: 11.17.0 - resolution: "react-i18next@npm:11.17.0" +"react-i18next@npm:12.2.2": + version: 12.2.2 + resolution: "react-i18next@npm:12.2.2" dependencies: - "@babel/runtime": ^7.14.5 - html-escaper: ^2.0.2 + "@babel/runtime": ^7.20.6 html-parse-stringify: ^3.0.1 peerDependencies: i18next: ">= 19.0.0" @@ -9052,7 +9133,7 @@ __metadata: optional: true react-native: optional: true - checksum: 0ed6823af56f4133bf1664262206be6651cbea95e2f9275411d6346c6b8009e277b32fe60702fd06607d13b8979913bd013da702e25fa3f4e1bd73e403417296 + checksum: 460e32779f6abba287d63be6054f855202c2e365cbceca36673c8f37a497c2ac5a21a8577d20fcc0b3fcd4825f89427dc4fdf00136365963d27dac7d997c3c74 languageName: node linkType: hard @@ -9077,24 +9158,6 @@ __metadata: languageName: node linkType: hard -"react-query@npm:3.34.19": - version: 3.34.19 - resolution: "react-query@npm:3.34.19" - dependencies: - "@babel/runtime": ^7.5.5 - broadcast-channel: ^3.4.1 - match-sorter: ^6.0.2 - peerDependencies: - react: ^16.8.0 || ^17.0.0 - peerDependenciesMeta: - react-dom: - optional: true - react-native: - optional: true - checksum: 765bec81e521a78ef04a8feb6710041ce838ef82bf6e1d35c7e9327cc242b232b242fd89f3604adf6747dce2df055d12b15e8e4208687cc5eb493c1c0bf71d34 - languageName: node - linkType: hard - "react-query@npm:3.39.3": version: 3.39.3 resolution: "react-query@npm:3.39.3" @@ -9113,22 +9176,6 @@ __metadata: languageName: node linkType: hard -"react-quill@npm:1.3.5": - version: 1.3.5 - resolution: "react-quill@npm:1.3.5" - dependencies: - "@types/quill": 1.3.10 - create-react-class: ^15.6.0 - lodash: ^4.17.4 - prop-types: ^15.5.10 - quill: ^1.3.7 - react-dom-factories: ^1.0.0 - peerDependencies: - react: ^0.14.9 || ^15.3.0 || ^16.0.0 - checksum: c0bfa816c29eeb8bb361b43c753e907c5fa1882afd843055393e361219319226dc4a0570510bd460fc10fd8b22f1b40da28fbf8b8dece19add71103d63727fa6 - languageName: node - linkType: hard - "react-quill@npm:2.0.0-beta.4": version: 2.0.0-beta.4 resolution: "react-quill@npm:2.0.0-beta.4" @@ -9157,27 +9204,27 @@ __metadata: languageName: node linkType: hard -"react-router-dom@npm:6.3.0": - version: 6.3.0 - resolution: "react-router-dom@npm:6.3.0" +"react-router-dom@npm:6.10.0": + version: 6.10.0 + resolution: "react-router-dom@npm:6.10.0" dependencies: - history: ^5.2.0 - react-router: 6.3.0 + "@remix-run/router": 1.5.0 + react-router: 6.10.0 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 77603a654f8a8dc7f65535a2e5917a65f8d9ffcb06546d28dd297e52adcc4b8a84377e0115f48dca330b080af2da3e78f29d590c89307094d36927d2b1751ec3 + checksum: d048d8cc66e5aec782bd675097d6bf0e5f867f3f0539bff9acdc4a314b5e0e34093944762960ca0977a54c6255272edd262231242b18c4e260d68df6b5288464 languageName: node linkType: hard -"react-router@npm:6.3.0": - version: 6.3.0 - resolution: "react-router@npm:6.3.0" +"react-router@npm:6.10.0": + version: 6.10.0 + resolution: "react-router@npm:6.10.0" dependencies: - history: ^5.2.0 + "@remix-run/router": 1.5.0 peerDependencies: react: ">=16.8" - checksum: 7be673f5e72104be01e6ab274516bdb932efd93305243170690f6560e3bd1035dd1df3d3c9ce1e0f452638a2529f43a1e77dcf0934fc8031c4783da657be13ca + checksum: c9fce46147c04257d7d6fa1f5bbfac96c5fdd0b15f26918bd12b2e5fe9143977c5a4452272f9b85795a22e29ec105a60d0bbe036118efc52b383d163cd8829ab languageName: node linkType: hard @@ -9201,15 +9248,15 @@ __metadata: languageName: node linkType: hard -"react-toastify@npm:8.2.0": - version: 8.2.0 - resolution: "react-toastify@npm:8.2.0" +"react-toastify@npm:9.1.2": + version: 9.1.2 + resolution: "react-toastify@npm:9.1.2" dependencies: clsx: ^1.1.1 peerDependencies: react: ">=16" react-dom: ">=16" - checksum: 670f1176fb9fd247c7ce0cad22e72578cbfa356dd1920a810ec4aa19faa4dab16db9efbdaaf761bdd368c4fad5c3d7f15568d5328b7b3c8699539064e88fcd4b + checksum: 0b21851bbb03592aa6e318ca62622016a6aa37cc52484c4a2fee39ce38c9933993e570c8ad9375f0a7061d3401fd175796b74f851b7d5a711b4802e0a3f9f34a languageName: node linkType: hard @@ -9348,7 +9395,7 @@ __metadata: languageName: node linkType: hard -"regexpp@npm:^3.0.0, regexpp@npm:^3.1.0, regexpp@npm:^3.2.0": +"regexpp@npm:^3.0.0": version: 3.2.0 resolution: "regexpp@npm:3.2.0" checksum: a78dc5c7158ad9ddcfe01aa9144f46e192ddbfa7b263895a70a5c6c73edd9ce85faf7c0430e59ac38839e1734e275b9c3de5c57ee3ab6edc0e0b1bdebefccef8 @@ -9424,7 +9471,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.10.0, resolve@npm:^1.12.0, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.1": +"resolve@npm:^1.10.0, resolve@npm:^1.12.0, resolve@npm:^1.19.0, resolve@npm:^1.22.1": version: 1.22.1 resolution: "resolve@npm:1.22.1" dependencies: @@ -9437,7 +9484,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^2.0.0-next.3, resolve@npm:^2.0.0-next.4": +"resolve@npm:^2.0.0-next.4": version: 2.0.0-next.4 resolution: "resolve@npm:2.0.0-next.4" dependencies: @@ -9450,7 +9497,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.12.0#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin": +"resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.12.0#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin": version: 1.22.1 resolution: "resolve@patch:resolve@npm%3A1.22.1#~builtin::version=1.22.1&hash=07638b" dependencies: @@ -9463,7 +9510,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^2.0.0-next.3#~builtin, resolve@patch:resolve@^2.0.0-next.4#~builtin": +"resolve@patch:resolve@^2.0.0-next.4#~builtin": version: 2.0.0-next.4 resolution: "resolve@patch:resolve@npm%3A2.0.0-next.4#~builtin::version=2.0.0-next.4&hash=07638b" dependencies: @@ -9548,15 +9595,6 @@ __metadata: languageName: node linkType: hard -"rxjs@npm:^6.6.3": - version: 6.6.7 - resolution: "rxjs@npm:6.6.7" - dependencies: - tslib: ^1.9.0 - checksum: bc334edef1bb8bbf56590b0b25734ba0deaf8825b703256a93714308ea36dff8a11d25533671adf8e104e5e8f256aa6fdfe39b2e248cdbd7a5f90c260acbbd1b - languageName: node - linkType: hard - "rxjs@npm:^7.5.1, rxjs@npm:^7.5.4": version: 7.8.0 resolution: "rxjs@npm:7.8.0" @@ -9566,6 +9604,15 @@ __metadata: languageName: node linkType: hard +"rxjs@npm:^7.8.0": + version: 7.8.1 + resolution: "rxjs@npm:7.8.1" + dependencies: + tslib: ^2.1.0 + checksum: de4b53db1063e618ec2eca0f7965d9137cabe98cf6be9272efe6c86b47c17b987383df8574861bcced18ebd590764125a901d5506082be84a8b8e364bf05f119 + languageName: node + linkType: hard + "safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" @@ -9614,6 +9661,20 @@ __metadata: languageName: node linkType: hard +"sanitize-html@npm:^2.10.0": + version: 2.10.0 + resolution: "sanitize-html@npm:2.10.0" + dependencies: + deepmerge: ^4.2.2 + escape-string-regexp: ^4.0.0 + htmlparser2: ^8.0.0 + is-plain-object: ^5.0.0 + parse-srcset: ^1.0.2 + postcss: ^8.3.11 + checksum: 0cb2bb330ed966a4d667b1890322dd868a67f527f87c04d7e3be1688fcfda20f7452a9a7744870751f51e255742e7264a287d9bcfcd64d4cd74a3c99f99c73d2 + languageName: node + linkType: hard + "sax@npm:1.2.1": version: 1.2.1 resolution: "sax@npm:1.2.1" @@ -9668,14 +9729,14 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.3.7": - version: 7.3.7 - resolution: "semver@npm:7.3.7" +"semver@npm:7.3.8, semver@npm:^7.1.1, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7": + version: 7.3.8 + resolution: "semver@npm:7.3.8" dependencies: lru-cache: ^6.0.0 bin: semver: bin/semver.js - checksum: 2fa3e877568cd6ce769c75c211beaed1f9fce80b28338cadd9d0b6c40f2e2862bafd62c19a6cff42f3d54292b7c623277bcab8816a2b5521cf15210d43e75232 + checksum: ba9c7cbbf2b7884696523450a61fee1a09930d888b7a8d7579025ad93d459b2d1949ee5bbfeb188b2be5f4ac163544c5e98491ad6152df34154feebc2cc337c1 languageName: node linkType: hard @@ -9688,17 +9749,6 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.1.1, semver@npm:^7.2.1, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7": - version: 7.3.8 - resolution: "semver@npm:7.3.8" - dependencies: - lru-cache: ^6.0.0 - bin: - semver: bin/semver.js - checksum: ba9c7cbbf2b7884696523450a61fee1a09930d888b7a8d7579025ad93d459b2d1949ee5bbfeb188b2be5f4ac163544c5e98491ad6152df34154feebc2cc337c1 - languageName: node - linkType: hard - "serialize-error@npm:^8.0.0": version: 8.1.0 resolution: "serialize-error@npm:8.1.0" @@ -9722,6 +9772,13 @@ __metadata: languageName: node linkType: hard +"setprototypeof@npm:1.2.0": + version: 1.2.0 + resolution: "setprototypeof@npm:1.2.0" + checksum: be18cbbf70e7d8097c97f713a2e76edf84e87299b40d085c6bf8b65314e994cc15e2e317727342fa6996e38e1f52c59720b53fe621e2eb593a6847bf0356db89 + languageName: node + linkType: hard + "shebang-command@npm:^2.0.0": version: 2.0.0 resolution: "shebang-command@npm:2.0.0" @@ -9738,6 +9795,13 @@ __metadata: languageName: node linkType: hard +"shell-quote@npm:^1.8.0": + version: 1.8.1 + resolution: "shell-quote@npm:1.8.1" + checksum: 5f01201f4ef504d4c6a9d0d283fa17075f6770bfbe4c5850b074974c68062f37929ca61700d95ad2ac8822e14e8c4b990ca0e6e9272e64befd74ce5e19f0736b + languageName: node + linkType: hard + "side-channel@npm:^1.0.4": version: 1.0.4 resolution: "side-channel@npm:1.0.4" @@ -9866,23 +9930,13 @@ __metadata: languageName: node linkType: hard -"source-map-js@npm:^1.0.1, source-map-js@npm:^1.0.2": +"source-map-js@npm:^1.0.2": version: 1.0.2 resolution: "source-map-js@npm:1.0.2" checksum: c049a7fc4deb9a7e9b481ae3d424cc793cb4845daa690bc5a05d428bf41bf231ced49b4cf0c9e77f9d42fdb3d20d6187619fc586605f5eabe995a316da8d377c languageName: node linkType: hard -"source-map-resolve@npm:^0.6.0": - version: 0.6.0 - resolution: "source-map-resolve@npm:0.6.0" - dependencies: - atob: ^2.1.2 - decode-uri-component: ^0.2.0 - checksum: fe503b9e5dac1c54be835282fcfec10879434e7b3ee08a9774f230299c724a8d403484d9531276d1670c87390e0e4d1d3f92b14cca6e4a2445ea3016b786ecd4 - languageName: node - linkType: hard - "source-map@npm:0.4.x": version: 0.4.4 resolution: "source-map@npm:0.4.4" @@ -9915,10 +9969,10 @@ __metadata: languageName: node linkType: hard -"spawn-command@npm:^0.0.2-1": - version: 0.0.2 - resolution: "spawn-command@npm:0.0.2" - checksum: e35c5d28177b4d461d33c88cc11f6f3a5079e2b132c11e1746453bbb7a0c0b8a634f07541a2a234fa4758239d88203b758def509161b651e81958894c0b4b64b +"spawn-command@npm:0.0.2-1": + version: 0.0.2-1 + resolution: "spawn-command@npm:0.0.2-1" + checksum: 2cac8519332193d1ed37d57298c4a1f73095e9edd20440fbab4aa47f531da83831734f2b51c44bb42b2747bf3485dec3fa2b0a1003f74c67561f2636622e328b languageName: node linkType: hard @@ -10065,6 +10119,13 @@ __metadata: languageName: node linkType: hard +"statuses@npm:>= 1.5.0 < 2": + version: 1.5.0 + resolution: "statuses@npm:1.5.0" + checksum: c469b9519de16a4bb19600205cffb39ee471a5f17b82589757ca7bd40a8d92ebb6ed9f98b5a540c5d302ccbc78f15dc03cc0280dd6e00df1335568a5d5758a5c + languageName: node + linkType: hard + "stop-iteration-iterator@npm:^1.0.0": version: 1.0.0 resolution: "stop-iteration-iterator@npm:1.0.0" @@ -10092,7 +10153,7 @@ __metadata: languageName: node linkType: hard -"string.prototype.matchall@npm:^4.0.6, string.prototype.matchall@npm:^4.0.8": +"string.prototype.matchall@npm:^4.0.8": version: 4.0.8 resolution: "string.prototype.matchall@npm:4.0.8" dependencies: @@ -10208,25 +10269,9 @@ __metadata: languageName: node linkType: hard -"styled-jsx@npm:5.0.2": - version: 5.0.2 - resolution: "styled-jsx@npm:5.0.2" - peerDependencies: - react: ">= 16.8.0 || 17.x.x || ^18.0.0-0" - peerDependenciesMeta: - "@babel/core": - optional: true - babel-plugin-macros: - optional: true - checksum: 86d55819ebeabd283a574d2f44f7d3f8fa6b8c28fa41687ece161bf1e910e04965611618921d8f5cd33dc6dae1033b926a70421ae5ea045440a9861edc3e0d87 - languageName: node - linkType: hard - -"styled-jsx@npm:5.1.1": - version: 5.1.1 - resolution: "styled-jsx@npm:5.1.1" - dependencies: - client-only: 0.0.1 +"styled-jsx@npm:5.0.4": + version: 5.0.4 + resolution: "styled-jsx@npm:5.0.4" peerDependencies: react: ">= 16.8.0 || 17.x.x || ^18.0.0-0" peerDependenciesMeta: @@ -10234,14 +10279,14 @@ __metadata: optional: true babel-plugin-macros: optional: true - checksum: 523a33b38603492547e861b98e29c873939b04e15fbe5ef16132c6f1e15958126647983c7d4675325038b428a5e91183d996e90141b18bdd1bbadf6e2c45b2fa + checksum: db7530155626e5eebc9d80ca117ea5aed6219b0a65469196b0b5727550fbe743117d7eea1499d80511ccb312d31f4a1027a58d1f94a83f0986c9acfdcce8bdd1 languageName: node linkType: hard -"stylis@npm:4.1.3": - version: 4.1.3 - resolution: "stylis@npm:4.1.3" - checksum: d04dbffcb9bf2c5ca8d8dc09534203c75df3bf711d33973ea22038a99cc475412a350b661ebd99cbc01daa50d7eedcf0d130d121800eb7318759a197023442a6 +"stylis@npm:4.1.4": + version: 4.1.4 + resolution: "stylis@npm:4.1.4" + checksum: cd929bd89709def13b47e6c16b11317bf996a09b4e987fc45a235549c3adf49d41531e017d7df511daa095bc9468c923ae9094a934fe9c62440b7351874dafb7 languageName: node linkType: hard @@ -10263,7 +10308,7 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^8.1.0, supports-color@npm:^8.1.1": +"supports-color@npm:^8.1.1": version: 8.1.1 resolution: "supports-color@npm:8.1.1" dependencies: @@ -10279,26 +10324,13 @@ __metadata: languageName: node linkType: hard -"synckit@npm:^0.8.4": - version: 0.8.4 - resolution: "synckit@npm:0.8.4" +"synckit@npm:^0.8.5": + version: 0.8.5 + resolution: "synckit@npm:0.8.5" dependencies: "@pkgr/utils": ^2.3.1 - tslib: ^2.4.0 - checksum: 83e054fe4494dab42114fc4ed36a11b85e18742d304ade3f40d3afb4ba4145d76183adba1f29e2c36e9a0a453b93a83e2387505f96a0efd901f562927a968c44 - languageName: node - linkType: hard - -"table@npm:^6.0.9": - version: 6.8.1 - resolution: "table@npm:6.8.1" - dependencies: - ajv: ^8.0.1 - lodash.truncate: ^4.4.2 - slice-ansi: ^4.0.0 - string-width: ^4.2.3 - strip-ansi: ^6.0.1 - checksum: 08249c7046125d9d0a944a6e96cfe9ec66908d6b8a9db125531be6eb05fa0de047fd5542e9d43b4f987057f00a093b276b8d3e19af162a9c40db2681058fd306 + tslib: ^2.5.0 + checksum: 8a9560e5d8f3d94dc3cf5f7b9c83490ffa30d320093560a37b88f59483040771fd1750e76b9939abfbb1b5a23fd6dfbae77f6b338abffe7cae7329cd9b9bb86b languageName: node linkType: hard @@ -10443,6 +10475,13 @@ __metadata: languageName: node linkType: hard +"toidentifier@npm:1.0.1": + version: 1.0.1 + resolution: "toidentifier@npm:1.0.1" + checksum: 952c29e2a85d7123239b5cfdd889a0dde47ab0497f0913d70588f19c53f7e0b5327c95f4651e413c74b785147f9637b17410ac8c846d5d4a20a5a33eb6dc3a45 + languageName: node + linkType: hard + "tough-cookie@npm:~2.5.0": version: 2.5.0 resolution: "tough-cookie@npm:2.5.0" @@ -10516,7 +10555,7 @@ __metadata: languageName: node linkType: hard -"tsconfig-paths@npm:^3.12.0, tsconfig-paths@npm:^3.14.1": +"tsconfig-paths@npm:^3.14.1": version: 3.14.1 resolution: "tsconfig-paths@npm:3.14.1" dependencies: @@ -10535,7 +10574,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^1.8.1, tslib@npm:^1.9.0, tslib@npm:^1.9.3": +"tslib@npm:^1.8.1, tslib@npm:^1.9.3": version: 1.14.1 resolution: "tslib@npm:1.14.1" checksum: dbe628ef87f66691d5d2959b3e41b9ca0045c3ee3c7c7b906cc1e328b39f199bb1ad9e671c39025bd56122ac57dfbf7385a94843b1cc07c60a4db74795829acd @@ -10549,6 +10588,13 @@ __metadata: languageName: node linkType: hard +"tslib@npm:^2.5.0": + version: 2.5.0 + resolution: "tslib@npm:2.5.0" + checksum: ae3ed5f9ce29932d049908ebfdf21b3a003a85653a9a140d614da6b767a93ef94f460e52c3d787f0e4f383546981713f165037dc2274df212ea9f8a4541004e1 + languageName: node + linkType: hard + "tsutils@npm:^3.17.1, tsutils@npm:^3.21.0": version: 3.21.0 resolution: "tsutils@npm:3.21.0" @@ -10657,13 +10703,13 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^4.4.3": - version: 4.9.4 - resolution: "typescript@npm:4.9.4" +"typescript@npm:^4.6.4 || ^5.0.0": + version: 5.0.4 + resolution: "typescript@npm:5.0.4" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: e782fb9e0031cb258a80000f6c13530288c6d63f1177ed43f770533fdc15740d271554cdae86701c1dd2c83b082cea808b07e97fd68b38a172a83dbf9e0d0ef9 + checksum: 82b94da3f4604a8946da585f7d6c3025fff8410779e5bde2855ab130d05e4fd08938b9e593b6ebed165bda6ad9292b230984f10952cf82f0a0ca07bbeaa08172 languageName: node linkType: hard @@ -10677,13 +10723,13 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@^4.4.3#~builtin": - version: 4.9.4 - resolution: "typescript@patch:typescript@npm%3A4.9.4#~builtin::version=4.9.4&hash=701156" +"typescript@patch:typescript@^4.6.4 || ^5.0.0#~builtin": + version: 5.0.4 + resolution: "typescript@patch:typescript@npm%3A5.0.4#~builtin::version=5.0.4&hash=701156" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 37f6e2c3c5e2aa5934b85b0fddbf32eeac8b1bacf3a5b51d01946936d03f5377fe86255d4e5a4ae628fd0cd553386355ad362c57f13b4635064400f3e8e05b9d + checksum: 6a1fe9a77bb9c5176ead919cc4a1499ee63e46b4e05bf667079f11bf3a8f7887f135aa72460a4c3b016e6e6bb65a822cb8689a6d86cbfe92d22cc9f501f09213 languageName: node linkType: hard @@ -10783,6 +10829,15 @@ __metadata: languageName: node linkType: hard +"use-sync-external-store@npm:1.2.0": + version: 1.2.0 + resolution: "use-sync-external-store@npm:1.2.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 5c639e0f8da3521d605f59ce5be9e094ca772bd44a4ce7322b055a6f58eeed8dda3c94cabd90c7a41fb6fa852210092008afe48f7038792fd47501f33299116a + languageName: node + linkType: hard + "util-deprecate@npm:^1.0.1, util-deprecate@npm:~1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" @@ -10819,21 +10874,21 @@ __metadata: languageName: node linkType: hard -"uuid@npm:8.3.2, uuid@npm:^8.3.2": - version: 8.3.2 - resolution: "uuid@npm:8.3.2" +"uuid@npm:9.0.0": + version: 9.0.0 + resolution: "uuid@npm:9.0.0" bin: uuid: dist/bin/uuid - checksum: 5575a8a75c13120e2f10e6ddc801b2c7ed7d8f3c8ac22c7ed0c7b2ba6383ec0abda88c905085d630e251719e0777045ae3236f04c812184b7c765f63a70e58df + checksum: 8dd2c83c43ddc7e1c71e36b60aea40030a6505139af6bee0f382ebcd1a56f6cd3028f7f06ffb07f8cf6ced320b76aea275284b224b002b289f89fe89c389b028 languageName: node linkType: hard -"uuid@npm:9.0.0": - version: 9.0.0 - resolution: "uuid@npm:9.0.0" +"uuid@npm:^8.3.2": + version: 8.3.2 + resolution: "uuid@npm:8.3.2" bin: uuid: dist/bin/uuid - checksum: 8dd2c83c43ddc7e1c71e36b60aea40030a6505139af6bee0f382ebcd1a56f6cd3028f7f06ffb07f8cf6ced320b76aea275284b224b002b289f89fe89c389b028 + checksum: 5575a8a75c13120e2f10e6ddc801b2c7ed7d8f3c8ac22c7ed0c7b2ba6383ec0abda88c905085d630e251719e0777045ae3236f04c812184b7c765f63a70e58df languageName: node linkType: hard @@ -10844,13 +10899,6 @@ __metadata: languageName: node linkType: hard -"v8-compile-cache@npm:^2.0.3": - version: 2.3.0 - resolution: "v8-compile-cache@npm:2.3.0" - checksum: adb0a271eaa2297f2f4c536acbfee872d0dd26ec2d76f66921aa7fc437319132773483344207bdbeee169225f4739016d8d2dbf0553913a52bb34da6d0334f8e - languageName: node - linkType: hard - "validate-npm-package-license@npm:^3.0.1": version: 3.0.4 resolution: "validate-npm-package-license@npm:3.0.4" @@ -11050,6 +11098,23 @@ __metadata: languageName: node linkType: hard +"xml2js@npm:0.5.0": + version: 0.5.0 + resolution: "xml2js@npm:0.5.0" + dependencies: + sax: ">=0.6.0" + xmlbuilder: ~11.0.0 + checksum: 1aa71d62e5bc2d89138e3929b9ea46459157727759cbc62ef99484b778641c0cd21fb637696c052d901a22f82d092a3e740a16b4ce218e81ac59b933535124ea + languageName: node + linkType: hard + +"xmlbuilder@npm:~11.0.0": + version: 11.0.1 + resolution: "xmlbuilder@npm:11.0.1" + checksum: 7152695e16f1a9976658215abab27e55d08b1b97bca901d58b048d2b6e106b5af31efccbdecf9b07af37c8377d8e7e821b494af10b3a68b0ff4ae60331b415b0 + languageName: node + linkType: hard + "xmlbuilder@npm:~9.0.1": version: 9.0.7 resolution: "xmlbuilder@npm:9.0.7" @@ -11181,6 +11246,21 @@ __metadata: languageName: node linkType: hard +"yargs@npm:^17.7.1": + version: 17.7.2 + resolution: "yargs@npm:17.7.2" + dependencies: + cliui: ^8.0.1 + escalade: ^3.1.1 + get-caller-file: ^2.0.5 + require-directory: ^2.1.1 + string-width: ^4.2.3 + y18n: ^5.0.5 + yargs-parser: ^21.1.1 + checksum: 73b572e863aa4a8cbef323dd911d79d193b772defd5a51aab0aca2d446655216f5002c42c5306033968193bdbf892a7a4c110b0d77954a7fdf563e653967b56a + languageName: node + linkType: hard + "yauzl@npm:^2.10.0": version: 2.10.0 resolution: "yauzl@npm:2.10.0"