From 9fe0754ca8ba468a619fe8efb166b50cdfb27d9a Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 2 Dec 2024 18:48:02 +0200
Subject: [PATCH 001/198] package.json: update sharetribe-scripts v7.0.0 Note:
v7 is just a bug fix (changing unintended async loading to synchronous)
---
package.json | 2 +-
yarn.lock | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package.json b/package.json
index 82c330ef5..6ec830a41 100644
--- a/package.json
+++ b/package.json
@@ -60,7 +60,7 @@
"remark-rehype": "^8.1.0",
"seedrandom": "^3.0.5",
"sharetribe-flex-sdk": "^1.21.1",
- "sharetribe-scripts": "6.0.2",
+ "sharetribe-scripts": "7.0.0",
"sitemap": "^7.1.1",
"smoothscroll-polyfill": "^0.4.0",
"source-map-support": "^0.5.21",
diff --git a/yarn.lock b/yarn.lock
index 2d4424fff..1b845c9b3 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -11821,10 +11821,10 @@ sharetribe-flex-sdk@^1.21.1:
lodash "^4.17.10"
transit-js "^0.8.861"
-sharetribe-scripts@6.0.2:
- version "6.0.2"
- resolved "https://registry.yarnpkg.com/sharetribe-scripts/-/sharetribe-scripts-6.0.2.tgz#7589afb43a3259252ff2a7de4b1260753ded7bed"
- integrity sha512-bfFYj+qOqaxSVtPwf0Fh82BqurCEU6RzlmMc/9VDQSP/yinuP+ud4Sgml963K1AQQNU5oBA5v0CiMbwXWopqcw==
+sharetribe-scripts@7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/sharetribe-scripts/-/sharetribe-scripts-7.0.0.tgz#07963af5a2ccc97c3d57150a25a78f35134fa477"
+ integrity sha512-0VKjVG8ty5wZj69MKUEzurscmqvH7LG9qu9Yq1VtlQCmxiKgpJZDaeBT5BNHcUf3NYfbk85BbTufDFZIL3tn5Q==
dependencies:
"@babel/core" "^7.16.0"
"@babel/plugin-transform-runtime" "7.12.1"
From b2eb73210c74d45b9163a63a0584811da409d945 Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 2 Dec 2024 18:21:16 +0200
Subject: [PATCH 002/198] Update react-testing-library and tests
---
package.json | 3 +-
src/app.test.js | 12 ++-
.../AuthenticationPage.test.js | 14 ++--
.../ContactDetailsPage.test.js | 55 ++++++------
.../EditListingPage/EditListingPage.test.js | 83 +++++++++++--------
.../EditListingDeliveryForm.test.js | 13 +--
.../EditListingLocationForm.test.js | 52 ++++++++----
.../NoAccessPage/NoAccessPage.test.js | 58 +++++++------
.../NotFoundPage/NotFoundPage.test.js | 4 +-
.../PasswordChangePage.test.js | 28 ++++---
.../PasswordRecoveryPage.test.js | 23 ++---
src/containers/ProfilePage/ProfilePage.js | 8 +-
.../ProfilePage/ProfilePage.test.js | 47 +++++++----
.../ProfileSettingsPage.test.js | 8 +-
.../TransactionPage/TransactionPage.test.js | 39 +++++----
yarn.lock | 58 ++++++-------
16 files changed, 288 insertions(+), 217 deletions(-)
diff --git a/package.json b/package.json
index 6ec830a41..98089cc34 100644
--- a/package.json
+++ b/package.json
@@ -68,8 +68,9 @@
"url": "^0.11.0"
},
"devDependencies": {
+ "@testing-library/dom": "^10.4.0",
"@testing-library/jest-dom": "^5.16.2",
- "@testing-library/react": "^12.1.2",
+ "@testing-library/react": "^16.0.1",
"@testing-library/user-event": "^13.5.0",
"bfj": "^7.0.2",
"chalk": "^v4.1.2",
diff --git a/src/app.test.js b/src/app.test.js
index 1ad14efc8..086e1819a 100644
--- a/src/app.test.js
+++ b/src/app.test.js
@@ -1,5 +1,5 @@
-import React from 'react';
-import ReactDOM from 'react-dom';
+import React, { act } from 'react';
+import ReactDOMClient from 'react-dom/client';
import { getHostedConfiguration } from './util/testHelpers';
import { ClientApp } from './app';
import configureStore from './store';
@@ -15,7 +15,7 @@ afterAll(() => {
});
describe('Application - JSDOM environment', () => {
- it('renders the LandingPage without crashing', () => {
+ it('renders the LandingPage without crashing', async () => {
window.google = { maps: {} };
// LandingPage gets rendered and it calls hostedAsset > fetchPageAssets > sdk.assetByVersion
@@ -32,7 +32,11 @@ describe('Application - JSDOM environment', () => {
const fakeSdk = { assetByVersion: resolvePageAssetCall, assetByAlias: resolvePageAssetCall };
const store = configureStore({}, fakeSdk);
const div = document.createElement('div');
- ReactDOM.render( , div);
+ const root = ReactDOMClient.createRoot(div);
+
+ await act(async () => {
+ root.render( );
+ });
delete window.google;
});
});
diff --git a/src/containers/AuthenticationPage/AuthenticationPage.test.js b/src/containers/AuthenticationPage/AuthenticationPage.test.js
index 62980cf9d..e33a17f30 100644
--- a/src/containers/AuthenticationPage/AuthenticationPage.test.js
+++ b/src/containers/AuthenticationPage/AuthenticationPage.test.js
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { act } from 'react';
import '@testing-library/jest-dom';
import { renderWithProviders as render, testingLibrary } from '../../util/testHelpers';
@@ -41,13 +41,15 @@ describe('AuthenticationPage', () => {
jest.clearAllMocks();
});
- it('has just email and password inputs in login tab if social logins are not enabled', () => {
+ it('has just email and password inputs in login tab if social logins are not enabled', async () => {
// We want to make sure that during the test the env variables
// for social logins are as we expect them to be
process.env = Object.assign(process.env, { REACT_APP_FACEBOOK_APP_ID: '' });
process.env = Object.assign(process.env, { REACT_APP_GOOGLE_CLIENT_ID: '' });
- render( );
+ await act(async () => {
+ render( );
+ });
expect(screen.getByRole('textbox', { name: 'LoginForm.emailLabel' })).toBeInTheDocument();
expect(screen.getByLabelText('LoginForm.passwordLabel')).toBeInTheDocument();
@@ -74,8 +76,10 @@ describe('AuthenticationPage', () => {
// First we can check that login button is in the document
expect(screen.getByRole('button', { name: 'LoginForm.logIn' })).toBeInTheDocument();
- // User event for changing the tab
- userEvent.click(screen.getByRole('link', { name: 'AuthenticationPage.signupLinkText' }));
+ await act(async () => {
+ // User event for changing the tab
+ userEvent.click(screen.getByRole('link', { name: 'AuthenticationPage.signupLinkText' }));
+ });
// Then we can check that login sign up button is in the document
waitFor(() =>
diff --git a/src/containers/ContactDetailsPage/ContactDetailsPage.test.js b/src/containers/ContactDetailsPage/ContactDetailsPage.test.js
index f45467015..22bcfab60 100644
--- a/src/containers/ContactDetailsPage/ContactDetailsPage.test.js
+++ b/src/containers/ContactDetailsPage/ContactDetailsPage.test.js
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { act } from 'react';
import '@testing-library/jest-dom';
import { createCurrentUser, fakeIntl } from '../../util/testData';
@@ -6,34 +6,32 @@ import { renderWithProviders as render, testingLibrary } from '../../util/testHe
import { ContactDetailsPageComponent } from './ContactDetailsPage';
-const { screen, act, userEvent } = testingLibrary;
+const { screen, userEvent } = testingLibrary;
const noop = () => null;
describe('ContactDetailsPageComponent', () => {
- it('Check that newPassword input shows error and submit is enabled if form is filled', () => {
- act(() => {
- const tree = render(
-
- );
- });
+ it('Check that newPassword input shows error and submit is enabled if form is filled', async () => {
+ render(
+
+ );
const emailLabel = 'ContactDetailsForm.emailLabel';
const emailInput = screen.getByText(emailLabel);
@@ -44,8 +42,11 @@ describe('ContactDetailsPageComponent', () => {
const phoneLabel = 'ContactDetailsForm.phoneLabel';
const phoneInput = screen.getByText(phoneLabel);
- userEvent.type(phoneInput, '+358555555555');
- phoneInput.blur();
+
+ await act(async () => {
+ userEvent.type(phoneInput, '+358555555555');
+ phoneInput.blur();
+ });
// Save button is enabled
expect(screen.getByRole('button', { name: 'ContactDetailsForm.saveChanges' })).toBeEnabled();
diff --git a/src/containers/EditListingPage/EditListingPage.test.js b/src/containers/EditListingPage/EditListingPage.test.js
index 7db8efa24..da3e7e8ce 100644
--- a/src/containers/EditListingPage/EditListingPage.test.js
+++ b/src/containers/EditListingPage/EditListingPage.test.js
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { act } from 'react';
import '@testing-library/jest-dom';
import { types as sdkTypes } from '../../util/sdkLoader';
@@ -1565,17 +1565,20 @@ describe('EditListingPage', () => {
// mode: available, not-available
expect(getByText('EditListingAvailabilityExceptionForm.available')).toBeInTheDocument();
expect(getByText('EditListingAvailabilityExceptionForm.notAvailable')).toBeInTheDocument();
- // date range picker
- expect(
- getByText('EditListingAvailabilityExceptionForm.exceptionStartDateLabel')
- ).toBeInTheDocument();
- expect(
- getByText('EditListingAvailabilityExceptionForm.exceptionEndDateLabel')
- ).toBeInTheDocument();
- // submit button
- expect(
- getByRole('button', { name: 'EditListingAvailabilityExceptionForm.addException' })
- ).toBeInTheDocument();
+
+ // date range picker (code-splitted)
+ await waitFor(async () => {
+ expect(
+ getByText('EditListingAvailabilityExceptionForm.exceptionStartDateLabel')
+ ).toBeInTheDocument();
+ expect(
+ getByText('EditListingAvailabilityExceptionForm.exceptionEndDateLabel')
+ ).toBeInTheDocument();
+ // submit button
+ expect(
+ getByRole('button', { name: 'EditListingAvailabilityExceptionForm.addException' })
+ ).toBeInTheDocument();
+ });
}, 10000);
it('Booking (day): edit flow on availability tab with seats', async () => {
@@ -1968,17 +1971,20 @@ describe('EditListingPage', () => {
// mode: available, not-available
expect(getByText('EditListingAvailabilityExceptionForm.available')).toBeInTheDocument();
expect(getByText('EditListingAvailabilityExceptionForm.notAvailable')).toBeInTheDocument();
- // date range picker
- expect(
- getByText('EditListingAvailabilityExceptionForm.exceptionStartDateLabel')
- ).toBeInTheDocument();
- expect(
- getByText('EditListingAvailabilityExceptionForm.exceptionEndDateLabel')
- ).toBeInTheDocument();
- // submit button
- expect(
- getByRole('button', { name: 'EditListingAvailabilityExceptionForm.addException' })
- ).toBeInTheDocument();
+
+ // date range picker (code-splitted)
+ await waitFor(async () => {
+ expect(
+ getByText('EditListingAvailabilityExceptionForm.exceptionStartDateLabel')
+ ).toBeInTheDocument();
+ expect(
+ getByText('EditListingAvailabilityExceptionForm.exceptionEndDateLabel')
+ ).toBeInTheDocument();
+ // submit button
+ expect(
+ getByRole('button', { name: 'EditListingAvailabilityExceptionForm.addException' })
+ ).toBeInTheDocument();
+ });
}, 10000);
it('Booking (hour): edit flow on availability tab', async () => {
@@ -2137,15 +2143,18 @@ describe('EditListingPage', () => {
// mode: available, not-available
expect(getByText('EditListingAvailabilityExceptionForm.available')).toBeInTheDocument();
expect(getByText('EditListingAvailabilityExceptionForm.notAvailable')).toBeInTheDocument();
- // time range pickers
- expect(
- getByText('EditListingAvailabilityExceptionForm.exceptionStartDateLabel')
- ).toBeInTheDocument();
- expect(
- getByText('EditListingAvailabilityExceptionForm.exceptionEndDateLabel')
- ).toBeInTheDocument();
- // TODO Testing date pickers needs more work
+ // time range pickers (code-splitted)
+ await waitFor(async () => {
+ expect(
+ getByText('EditListingAvailabilityExceptionForm.exceptionStartDateLabel')
+ ).toBeInTheDocument();
+ expect(
+ getByText('EditListingAvailabilityExceptionForm.exceptionEndDateLabel')
+ ).toBeInTheDocument();
+
+ // TODO Testing date pickers needs more work
+ });
// submit button
expect(
@@ -2612,7 +2621,7 @@ describe('EditListingPage', () => {
});
describe('EditListingPageComponent', () => {
- it('Check that there is correct wizard tabs', () => {
+ it('Check that there is correct wizard tabs', async () => {
render(
{
const tabLabelPhotos = 'EditListingWizard.tabLabelPhotos';
expect(screen.queryByText(tabLabelPhotos)).not.toBeInTheDocument();
- userEvent.selectOptions(
- screen.getByLabelText('EditListingDetailsForm.listingTypeLabel'),
- 'product-selling'
- );
+ await act(async () => {
+ userEvent.selectOptions(
+ screen.getByLabelText('EditListingDetailsForm.listingTypeLabel'),
+ 'product-selling'
+ );
+ });
// Tabs not in use
const tabLabelLocation = 'EditListingWizard.tabLabelLocation';
diff --git a/src/containers/EditListingPage/EditListingWizard/EditListingDeliveryPanel/EditListingDeliveryForm.test.js b/src/containers/EditListingPage/EditListingWizard/EditListingDeliveryPanel/EditListingDeliveryForm.test.js
index 706c7718f..cd9d1224b 100644
--- a/src/containers/EditListingPage/EditListingWizard/EditListingDeliveryPanel/EditListingDeliveryForm.test.js
+++ b/src/containers/EditListingPage/EditListingWizard/EditListingDeliveryPanel/EditListingDeliveryForm.test.js
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { act } from 'react';
import '@testing-library/jest-dom';
import { fakeIntl } from '../../../../util/testData';
@@ -6,12 +6,12 @@ import { renderWithProviders as render, testingLibrary } from '../../../../util/
import EditListingDeliveryForm from './EditListingDeliveryForm';
-const { screen, userEvent, fireEvent } = testingLibrary;
+const { screen, userEvent } = testingLibrary;
const noop = () => null;
describe('EditListingDeliveryForm', () => {
- it('Check that shipping fees can be given and submit button activates', () => {
+ it('Check that shipping fees can be given and submit button activates', async () => {
const saveActionMsg = 'Save location';
render(
{
// Test that save button is disabled at first
expect(screen.getByRole('button', { name: saveActionMsg })).toBeDisabled();
- // Add shipping price
- fireEvent.click(screen.getByLabelText(/EditListingDeliveryForm.shippingLabel/i));
-
+ await act(async () => {
+ // Add shipping price
+ userEvent.click(screen.getByLabelText(/EditListingDeliveryForm.shippingLabel/i));
+ });
const shippingOneItemLabel = 'EditListingDeliveryForm.shippingOneItemLabel';
const shippingAdditionalItemsLabel = 'EditListingDeliveryForm.shippingAdditionalItemsLabel';
userEvent.type(screen.getByRole('textbox', { name: shippingOneItemLabel }), '10');
diff --git a/src/containers/EditListingPage/EditListingWizard/EditListingLocationPanel/EditListingLocationForm.test.js b/src/containers/EditListingPage/EditListingWizard/EditListingLocationPanel/EditListingLocationForm.test.js
index 38bf68789..e340d3455 100644
--- a/src/containers/EditListingPage/EditListingWizard/EditListingLocationPanel/EditListingLocationForm.test.js
+++ b/src/containers/EditListingPage/EditListingWizard/EditListingLocationPanel/EditListingLocationForm.test.js
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { act } from 'react';
import '@testing-library/jest-dom';
import { fakeIntl } from '../../../../util/testData';
@@ -10,21 +10,38 @@ const { screen, userEvent, fireEvent } = testingLibrary;
const noop = () => null;
+beforeAll(() => {
+ // Mock window.scroll - otherwise, Jest/JSDOM will print a not-implemented error.
+ window.mapboxgl = { accessToken: 'test' };
+ window.mapboxSdk = () => ({
+ geocoding: {
+ forwardGeocode: () => ({
+ send: () =>
+ Promise.resolve({
+ body: { features: [] },
+ }),
+ }),
+ },
+ });
+});
+
describe('EditListingDeliveryForm', () => {
- it('Check that shipping fees can be given and submit button activates', () => {
+ it('Check that shipping fees can be given and submit button activates', async () => {
const saveActionMsg = 'Save location';
- render(
-
- );
+ await act(async () => {
+ render(
+
+ );
+ });
// Pickup fields
const address = 'EditListingLocationForm.address';
@@ -36,8 +53,9 @@ describe('EditListingDeliveryForm', () => {
// Test that save button is disabled at first
expect(screen.getByRole('button', { name: saveActionMsg })).toBeDisabled();
- // TODO: this should be tested some other way (address is actually a LocationAutocompleteInput, which is code-splitted)
- // userEvent.type(screen.getByRole('textbox', { name: address }), 'Erottajankatu 19, Helsinki');
- userEvent.type(screen.getByRole('textbox', { name: building }), 'B');
+ await act(async () => {
+ userEvent.type(screen.getByTestId('location-search'), 'Erottajankatu 19, Helsinki');
+ userEvent.type(screen.getByRole('textbox', { name: building }), 'B');
+ });
});
});
diff --git a/src/containers/NoAccessPage/NoAccessPage.test.js b/src/containers/NoAccessPage/NoAccessPage.test.js
index ffb8a336b..f68c27dcf 100644
--- a/src/containers/NoAccessPage/NoAccessPage.test.js
+++ b/src/containers/NoAccessPage/NoAccessPage.test.js
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { act } from 'react';
import '@testing-library/jest-dom';
import { fakeIntl } from '../../util/testData';
@@ -11,15 +11,16 @@ const { screen, userEvent } = testingLibrary;
const noop = () => null;
describe('NoAccessPageComponent', () => {
- it('Check that /no-posting-rights has heading and content', () => {
- render(
-
- );
-
+ it('Check that /no-posting-rights has heading and content', async () => {
+ await act(async () => {
+ render(
+
+ );
+ });
const postListingsHeading = 'NoAccessPage.postListings.heading';
const found = screen.getByText(postListingsHeading);
expect(found).toBeInTheDocument();
@@ -28,14 +29,16 @@ describe('NoAccessPageComponent', () => {
expect(found2).toBeInTheDocument();
});
- it('Check that /no-transaction-rights has heading and content', () => {
- render(
-
- );
+ it('Check that /no-transaction-rights has heading and content', async () => {
+ await act(async () => {
+ render(
+
+ );
+ });
const initiateTransactionsHeading = 'NoAccessPage.initiateTransactions.heading';
const found = screen.getByText(initiateTransactionsHeading);
@@ -45,15 +48,16 @@ describe('NoAccessPageComponent', () => {
expect(found2).toBeInTheDocument();
});
- it('Check that /no-asdf renders 404', () => {
- render(
-
- );
-
+ it('Check that /no-asdf renders 404', async () => {
+ await act(async () => {
+ render(
+
+ );
+ });
const theNotFoundHeading = '404';
const found = screen.queryByText(theNotFoundHeading);
expect(found).toBeInTheDocument();
diff --git a/src/containers/NotFoundPage/NotFoundPage.test.js b/src/containers/NotFoundPage/NotFoundPage.test.js
index 9cba26f61..1544bbffc 100644
--- a/src/containers/NotFoundPage/NotFoundPage.test.js
+++ b/src/containers/NotFoundPage/NotFoundPage.test.js
@@ -24,7 +24,7 @@ const routeConfiguration = [
];
describe('NotFoundPage', () => {
- it('has placeholder for SearchForm when isKeywordSearch=true', () => {
+ it('has placeholder for SearchForm when isKeywordSearch=true', async () => {
render(
{
/>
);
const placeholder = 'NotFoundPage.SearchForm.placeholder';
- expect(screen.getByPlaceholderText(placeholder)).toBeInTheDocument();
+ expect(await screen.findByPlaceholderText(placeholder)).toBeInTheDocument();
// TODO: when isKeywordSearch = false, the form uses LocationAutocompleteInput, which is code-splitted
});
diff --git a/src/containers/PasswordChangePage/PasswordChangePage.test.js b/src/containers/PasswordChangePage/PasswordChangePage.test.js
index 1eda4b83e..6964550e2 100644
--- a/src/containers/PasswordChangePage/PasswordChangePage.test.js
+++ b/src/containers/PasswordChangePage/PasswordChangePage.test.js
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { act } from 'react';
import '@testing-library/jest-dom';
import { createCurrentUser, fakeIntl } from '../../util/testData';
@@ -11,7 +11,7 @@ const { screen, userEvent } = testingLibrary;
const noop = () => null;
describe('PasswordChangePageComponent', () => {
- it('Check that newPassword input shows error and submit is enabled if form is filled', () => {
+ it('Check that newPassword input shows error and submit is enabled if form is filled', async () => {
render(
{
);
const newPasswordLabel = 'PasswordChangeForm.newPasswordLabel';
- expect(screen.getByText(newPasswordLabel)).toBeInTheDocument();
+ expect(await screen.findByText(newPasswordLabel)).toBeInTheDocument();
// Save button is disabled
expect(screen.getByRole('button', { name: 'PasswordChangeForm.saveChanges' })).toBeDisabled();
// There's a too short password, there is error text visible
const newPasswordInput = screen.getByLabelText(newPasswordLabel);
- userEvent.type(newPasswordInput, 'short');
- newPasswordInput.blur();
+
+ await act(async () => {
+ userEvent.type(newPasswordInput, 'short');
+ newPasswordInput.blur();
+ });
const passwordTooShort = 'PasswordChangeForm.passwordTooShort';
expect(screen.getByText(passwordTooShort)).toBeInTheDocument();
- // There's a long enough password => there is no error text visible
- userEvent.type(newPasswordInput, 'morethan8characters');
- newPasswordInput.blur();
+ await act(async () => {
+ // There's a long enough password => there is no error text visible
+ userEvent.type(newPasswordInput, 'morethan8characters');
+ newPasswordInput.blur();
+ });
expect(screen.queryByText(passwordTooShort)).not.toBeInTheDocument();
-
const passwordLabel = 'PasswordChangeForm.passwordLabel';
const passwordInput = screen.getByText(passwordLabel);
expect(passwordInput).toBeInTheDocument();
- // Save button is enabled
- userEvent.type(passwordInput, 'somepasswordasoldpassword');
+ await act(async () => {
+ // Save button is enabled
+ userEvent.type(passwordInput, 'somepasswordasoldpassword');
+ });
expect(screen.queryByText(passwordTooShort)).not.toBeInTheDocument();
expect(screen.getByRole('button', { name: 'PasswordChangeForm.saveChanges' })).toBeEnabled();
});
diff --git a/src/containers/PasswordRecoveryPage/PasswordRecoveryPage.test.js b/src/containers/PasswordRecoveryPage/PasswordRecoveryPage.test.js
index b63f9e5b9..12d1e549c 100644
--- a/src/containers/PasswordRecoveryPage/PasswordRecoveryPage.test.js
+++ b/src/containers/PasswordRecoveryPage/PasswordRecoveryPage.test.js
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { act } from 'react';
import '@testing-library/jest-dom';
import { fakeIntl } from '../../util/testData';
@@ -6,12 +6,12 @@ import { renderWithProviders as render, testingLibrary } from '../../util/testHe
import { PasswordRecoveryPageComponent } from './PasswordRecoveryPage';
-const { screen, userEvent } = testingLibrary;
+const { screen, userEvent, waitFor } = testingLibrary;
const noop = () => null;
describe('PasswordRecoveryPageComponent', () => {
- it('Check that email input shows error and submit is enabled if form is filled', () => {
+ it('Check that email input shows error and submit is enabled if form is filled', async () => {
render(
{
screen.getByRole('button', { name: 'PasswordRecoveryForm.sendInstructions' })
).toBeDisabled();
- // There's a too short password, there is error text visible
- userEvent.type(emailInput, 'foobar');
- emailInput.blur();
-
+ await act(async () => {
+ // There's a too short password, there is error text visible
+ userEvent.type(emailInput, 'foobar');
+ emailInput.blur();
+ });
const emailInvalid = 'PasswordRecoveryForm.emailInvalid';
expect(screen.getByText(emailInvalid)).toBeInTheDocument();
- // There's a valid email written to input => there is no error text visible
- userEvent.type(emailInput, 'foo@bar.com');
- emailInput.blur();
+ await act(async () => {
+ // There's a valid email written to input => there is no error text visible
+ userEvent.type(emailInput, '@bar.com');
+ emailInput.blur();
+ });
expect(screen.queryByText(emailInvalid)).not.toBeInTheDocument();
// Save button is enabled
diff --git a/src/containers/ProfilePage/ProfilePage.js b/src/containers/ProfilePage/ProfilePage.js
index d4a1a976b..b7ad77f0c 100644
--- a/src/containers/ProfilePage/ProfilePage.js
+++ b/src/containers/ProfilePage/ProfilePage.js
@@ -180,13 +180,13 @@ export const CustomUserFields = props => {
<>
{propsForCustomFields.map(customFieldProps => {
- const { schemaType, ...fieldProps } = customFieldProps;
+ const { schemaType, key, ...fieldProps } = customFieldProps;
return schemaType === SCHEMA_TYPE_MULTI_ENUM ? (
-
+
) : schemaType === SCHEMA_TYPE_TEXT ? (
-
+
) : schemaType === SCHEMA_TYPE_YOUTUBE ? (
-
+
) : null;
})}
>
diff --git a/src/containers/ProfilePage/ProfilePage.test.js b/src/containers/ProfilePage/ProfilePage.test.js
index 6c9830538..41e9223da 100644
--- a/src/containers/ProfilePage/ProfilePage.test.js
+++ b/src/containers/ProfilePage/ProfilePage.test.js
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { act } from 'react';
import '@testing-library/jest-dom';
import { types as sdkTypes } from '../../util/sdkLoader';
@@ -126,21 +126,26 @@ describe('ProfilePage', () => {
params: {},
};
- it('Check that user name and bio is shown correctly', () => {
- render( , {
- initialState: getInitialState(),
- config,
+ it('Check that user name and bio is shown correctly', async () => {
+ await act(async () => {
+ render( , {
+ initialState: getInitialState(),
+ config,
+ });
});
expect(screen.getByText('ProfilePage.desktopHeading')).toBeInTheDocument();
expect(screen.getByText('I am a great cook!')).toBeInTheDocument();
});
- it('Check that custom user information is shown correctly', () => {
- const { getByRole } = render( , {
- initialState: getInitialState(),
- config,
+ it('Check that custom user information is shown correctly', async () => {
+ let rendered = {};
+ await act(async () => {
+ rendered = render( , {
+ initialState: getInitialState(),
+ config,
+ });
});
-
+ const { getByRole } = rendered;
// Show custom fields correctly
expect(getByRole('heading', { name: 'ProfilePage.detailsTitle' })).toBeInTheDocument();
expect(getByRole('heading', { name: 'Dietary preferences' })).toBeInTheDocument();
@@ -158,10 +163,12 @@ describe('ProfilePage', () => {
expect(screen.queryByText('Not shown in profile')).toBeNull();
});
- it('Check that listing information is shown correctly', () => {
- render( , {
- initialState: getInitialState(),
- config,
+ it('Check that listing information is shown correctly', async () => {
+ await act(async () => {
+ render( , {
+ initialState: getInitialState(),
+ config,
+ });
});
expect(screen.getByText('ProfilePage.listingsTitle')).toBeInTheDocument();
@@ -169,11 +176,15 @@ describe('ProfilePage', () => {
expect(screen.getByText('$55.00')).toBeInTheDocument();
});
- it('Check that review information is shown correctly', () => {
- const { getByRole } = render( , {
- initialState: getInitialState(),
- config,
+ it('Check that review information is shown correctly', async () => {
+ let rendered = {};
+ await act(async () => {
+ rendered = render( , {
+ initialState: getInitialState(),
+ config,
+ });
});
+ const { getByRole } = rendered;
expect(
getByRole('heading', { name: 'ProfilePage.reviewsFromMyCustomersTitle' })
diff --git a/src/containers/ProfileSettingsPage/ProfileSettingsPage.test.js b/src/containers/ProfileSettingsPage/ProfileSettingsPage.test.js
index 8e8a848b4..3464b0eb9 100644
--- a/src/containers/ProfileSettingsPage/ProfileSettingsPage.test.js
+++ b/src/containers/ProfileSettingsPage/ProfileSettingsPage.test.js
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { act } from 'react';
import '@testing-library/jest-dom';
import { createCurrentUser, fakeIntl } from '../../util/testData';
@@ -11,7 +11,7 @@ const { screen } = testingLibrary;
const noop = () => null;
describe('ProfileSettingsPage', () => {
- it('Check that there is a link to ProfilePage', () => {
+ it('Check that there is a link to ProfilePage', async () => {
const props = {
authInProgress: false,
currentUser: createCurrentUser('userId'),
@@ -32,7 +32,9 @@ describe('ProfileSettingsPage', () => {
intl: fakeIntl,
};
- render( );
+ await act(async () => {
+ render( );
+ });
const viewProfileLink = 'ProfileSettingsPage.viewProfileLink';
expect(screen.getByText(viewProfileLink)).toBeInTheDocument();
diff --git a/src/containers/TransactionPage/TransactionPage.test.js b/src/containers/TransactionPage/TransactionPage.test.js
index 1968e1d06..cda822dee 100644
--- a/src/containers/TransactionPage/TransactionPage.test.js
+++ b/src/containers/TransactionPage/TransactionPage.test.js
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { act } from 'react';
import '@testing-library/jest-dom';
import Decimal from 'decimal.js';
@@ -159,7 +159,7 @@ describe('TransactionPage', () => {
};
});
- test.each(purchases)('check purchase: $tr', ({ tr, tx, isReversal, isReceived }) => {
+ test.each(purchases)('check purchase: $tr', async ({ tr, tx, isReversal, isReceived }) => {
const transactionRole = TX_TRANSITION_ACTOR_PROVIDER;
const stateData = getStateData(
@@ -186,8 +186,9 @@ describe('TransactionPage', () => {
id: tx.id?.uuid,
},
};
-
- render( );
+ await act(async () => {
+ render( );
+ });
const state = stateData.processState;
const providerTitle = `TransactionPage.${processName}.${transactionRole}.${state}.title`;
@@ -298,7 +299,7 @@ describe('TransactionPage', () => {
};
});
- test.each(purchases)('check purchase: $tr', ({ tr, tx, isReversal, isReceived }) => {
+ test.each(purchases)('check purchase: $tr', async ({ tr, tx, isReversal, isReceived }) => {
const transactionRole = TX_TRANSITION_ACTOR_CUSTOMER;
const isInquiry = tr === 'transition/inquire';
@@ -327,7 +328,9 @@ describe('TransactionPage', () => {
},
};
- render( );
+ await act(async () => {
+ render( );
+ });
const state = stateData.processState;
const providerTitle = `TransactionPage.${processName}.${transactionRole}.${state}.title`;
@@ -456,7 +459,7 @@ describe('TransactionPage', () => {
};
});
- test.each(bookings)('check booking: $tr', ({ tr, tx, isReversal, isReceived }) => {
+ test.each(bookings)('check booking: $tr', async ({ tr, tx, isReversal, isReceived }) => {
const transactionRole = TX_TRANSITION_ACTOR_PROVIDER;
const isInquiry = tr === 'transition/inquire';
@@ -485,7 +488,9 @@ describe('TransactionPage', () => {
},
};
- render( );
+ await act(async () => {
+ render( );
+ });
const state = stateData.processState;
const txTitle = `TransactionPage.${processName}.${transactionRole}.${state}.title`;
@@ -624,7 +629,7 @@ describe('TransactionPage', () => {
};
});
- test.each(bookings)('check booking: $tr', ({ tr, tx, isReversal, isReceived }) => {
+ test.each(bookings)('check booking: $tr', async ({ tr, tx, isReversal, isReceived }) => {
const transactionRole = TX_TRANSITION_ACTOR_CUSTOMER;
const isInquiry = tr === 'transition/inquire';
@@ -653,7 +658,9 @@ describe('TransactionPage', () => {
},
};
- render( );
+ await act(async () => {
+ render( );
+ });
const state = stateData.processState;
const txTitle = `TransactionPage.${processName}.${transactionRole}.${state}.title`;
@@ -788,7 +795,7 @@ describe('TransactionPage', () => {
};
});
- test.each(bookings)('check booking: $tr', ({ tr, tx, isReversal, isReceived }) => {
+ test.each(bookings)('check booking: $tr', async ({ tr, tx, isReversal, isReceived }) => {
const transactionRole = TX_TRANSITION_ACTOR_PROVIDER;
const isInquiry = tr === 'transition/inquire';
@@ -817,7 +824,9 @@ describe('TransactionPage', () => {
},
};
- render( );
+ await act(async () => {
+ render( );
+ });
const state = stateData.processState;
const txTitle = `TransactionPage.${processName}.${transactionRole}.${state}.title`;
@@ -955,7 +964,7 @@ describe('TransactionPage', () => {
};
});
- test.each(bookings)('check purchase: $tr', ({ tr, tx, isReversal, isReceived }) => {
+ test.each(bookings)('check purchase: $tr', async ({ tr, tx, isReversal, isReceived }) => {
const transactionRole = TX_TRANSITION_ACTOR_CUSTOMER;
const isInquiry = tr === 'transition/inquire';
@@ -984,7 +993,9 @@ describe('TransactionPage', () => {
},
};
- render( );
+ await act(async () => {
+ render( );
+ });
const state = stateData.processState;
const txTitle = `TransactionPage.${processName}.${transactionRole}.${state}.title`;
diff --git a/yarn.lock b/yarn.lock
index 1b845c9b3..b384254a8 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3299,18 +3299,18 @@
"@svgr/plugin-svgo" "^5.5.0"
loader-utils "^2.0.0"
-"@testing-library/dom@^8.0.0":
- version "8.20.0"
- resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.20.0.tgz#914aa862cef0f5e89b98cc48e3445c4c921010f6"
- integrity sha512-d9ULIT+a4EXLX3UU8FBjauG9NnsZHkHztXoIcTsOKoOw030fyjheN9svkTULjJxtYag9DZz5Jz5qkWZDPxTFwA==
+"@testing-library/dom@^10.4.0":
+ version "10.4.0"
+ resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-10.4.0.tgz#82a9d9462f11d240ecadbf406607c6ceeeff43a8"
+ integrity sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==
dependencies:
"@babel/code-frame" "^7.10.4"
"@babel/runtime" "^7.12.5"
"@types/aria-query" "^5.0.1"
- aria-query "^5.0.0"
+ aria-query "5.3.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"
"@testing-library/jest-dom@^5.16.2":
@@ -3328,14 +3328,12 @@
lodash "^4.17.15"
redent "^3.0.0"
-"@testing-library/react@^12.1.2":
- version "12.1.5"
- resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-12.1.5.tgz#bb248f72f02a5ac9d949dea07279095fa577963b"
- integrity sha512-OfTXCJUFgjd/digLUuPxa0+/3ZxsQmE7ub9kcbW/wi96Bh3o/p5vrETcBGfP17NWPGqeYYl5LTRpwyGoMC4ysg==
+"@testing-library/react@^16.0.1":
+ version "16.0.1"
+ resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-16.0.1.tgz#29c0ee878d672703f5e7579f239005e4e0faa875"
+ integrity sha512-dSmwJVtJXmku+iocRhWOUFbrERC76TX2Mnf0ATODz8brzAZrMBbzLwQixlBSanZxR6LddK3eiwpSFZgDET1URg==
dependencies:
"@babel/runtime" "^7.12.5"
- "@testing-library/dom" "^8.0.0"
- "@types/react-dom" "<18.0.0"
"@testing-library/user-event@^13.5.0":
version "13.5.0"
@@ -3670,13 +3668,6 @@
resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc"
integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==
-"@types/react-dom@<18.0.0":
- version "17.0.19"
- resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.19.tgz#36feef3aa35d045cacd5ed60fe0eef5272f19492"
- integrity sha512-PiYG40pnQRdPHnlf7tZnp0aQ6q9tspYr72vD61saO6zFCybLfMqwUCN0va1/P+86DXn18ZWeW30Bk7xlC5eEAQ==
- dependencies:
- "@types/react" "^17"
-
"@types/react-redux@^7.1.20":
version "7.1.20"
resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.20.tgz#42f0e61ababb621e12c66c96dda94c58423bd7df"
@@ -3704,15 +3695,6 @@
"@types/scheduler" "*"
csstype "^3.0.2"
-"@types/react@^17":
- version "17.0.53"
- resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.53.tgz#10d4d5999b8af3d6bc6a9369d7eb953da82442ab"
- integrity sha512-1yIpQR2zdYu1Z/dc1OxC+MA6GR240u3gcnP4l6mvj/PJiVaqHsQPmWttsvHsfnhfPbU2FuGmo0wSITPygjBmsw==
- dependencies:
- "@types/prop-types" "*"
- "@types/scheduler" "*"
- csstype "^3.0.2"
-
"@types/resolve@1.17.1":
version "1.17.1"
resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6"
@@ -4291,6 +4273,13 @@ argparse@^2.0.1:
resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
+aria-query@5.3.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e"
+ integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==
+ dependencies:
+ dequal "^2.0.3"
+
aria-query@^4.2.2:
version "4.2.2"
resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b"
@@ -5739,6 +5728,11 @@ depd@~1.1.2:
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
+dequal@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be"
+ integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==
+
destroy@1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
@@ -8979,10 +8973,10 @@ lru-cache@^6.0.0:
dependencies:
yallist "^4.0.0"
-lz-string@^1.4.4:
- version "1.4.4"
- resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26"
- integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=
+lz-string@^1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941"
+ integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==
magic-string@^0.25.0, magic-string@^0.25.7:
version "0.25.7"
From 0c813150d6d95e51ae7fa973bb94410cb72103ae Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 2 Dec 2024 18:22:32 +0200
Subject: [PATCH 003/198] react-final-form-arrays: update to v3.1.4
---
package.json | 2 +-
yarn.lock | 24 ++++++++++++------------
2 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/package.json b/package.json
index 98089cc34..40e6515c5 100644
--- a/package.json
+++ b/package.json
@@ -44,7 +44,7 @@
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-final-form": "6.5.9",
- "react-final-form-arrays": "3.1.3",
+ "react-final-form-arrays": "3.1.4",
"react-helmet-async": "^1.3.0",
"react-image-gallery": "1.2.8",
"react-intl": "^5.25.1",
diff --git a/yarn.lock b/yarn.lock
index b384254a8..67c7af4c6 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1986,13 +1986,6 @@
dependencies:
regenerator-runtime "^0.13.4"
-"@babel/runtime@^7.12.1":
- version "7.15.3"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.3.tgz#2e1c2880ca118e5b2f9988322bd8a7656a32502b"
- integrity sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA==
- dependencies:
- regenerator-runtime "^0.13.4"
-
"@babel/runtime@^7.12.13", "@babel/runtime@^7.17.9":
version "7.17.9"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72"
@@ -2021,6 +2014,13 @@
dependencies:
regenerator-runtime "^0.13.4"
+"@babel/runtime@^7.19.4":
+ version "7.26.0"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1"
+ integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==
+ dependencies:
+ regenerator-runtime "^0.14.0"
+
"@babel/runtime@^7.21.0":
version "7.23.8"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.8.tgz#8ee6fe1ac47add7122902f257b8ddf55c898f650"
@@ -10964,12 +10964,12 @@ react-fast-compare@^3.2.0:
resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb"
integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==
-react-final-form-arrays@3.1.3:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/react-final-form-arrays/-/react-final-form-arrays-3.1.3.tgz#d3594c500495a4cf5e437070ada989da9624bba2"
- integrity sha512-dzBiLfbr9l1YRExARBpJ8uA/djBenCvFrbrsXjd362joDl3vT+WhmMKKr6HDQMJffjA8T4gZ3n5+G9M59yZfuQ==
+react-final-form-arrays@3.1.4:
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/react-final-form-arrays/-/react-final-form-arrays-3.1.4.tgz#2744941d8fd200fc648481022e515588f60bbac3"
+ integrity sha512-siVFAolUAe29rMR6u8VwepoysUcUdh6MLV2OWnCtKpsPRUdT9VUgECjAPaVMAH2GROZNiVB9On1H9MMrm9gdpg==
dependencies:
- "@babel/runtime" "^7.12.1"
+ "@babel/runtime" "^7.19.4"
react-final-form@6.5.9:
version "6.5.9"
From d061603beaafed1b5a16de635b4c3d9f32348a5a Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 2 Dec 2024 18:25:01 +0200
Subject: [PATCH 004/198] Update final-form and final-form-arrays and patch for
final-form The patch is related to bug in Safari. Bug: Cannot read property
'active' of undefined
https://github.com/final-form/final-form/issues/186#issuecomment-1779109218
---
package.json | 4 ++--
...rm+4.20.7.patch => final-form+4.20.10.patch} | 17 ++++++++---------
yarn.lock | 16 ++++++++--------
3 files changed, 18 insertions(+), 19 deletions(-)
rename patches/{final-form+4.20.7.patch => final-form+4.20.10.patch} (75%)
diff --git a/package.json b/package.json
index 40e6515c5..60e7a692d 100644
--- a/package.json
+++ b/package.json
@@ -23,8 +23,8 @@
"dotenv-expand": "^5.1.0",
"express": "^4.19.2",
"express-enforces-ssl": "^1.1.0",
- "final-form": "4.20.7",
- "final-form-arrays": "3.0.2",
+ "final-form": "4.20.10",
+ "final-form-arrays": "3.1.0",
"full-icu": "^1.4.0",
"helmet": "^7.1.0",
"jose": "5.2.0",
diff --git a/patches/final-form+4.20.7.patch b/patches/final-form+4.20.10.patch
similarity index 75%
rename from patches/final-form+4.20.7.patch
rename to patches/final-form+4.20.10.patch
index 3cdb1fd9e..207037656 100644
--- a/patches/final-form+4.20.7.patch
+++ b/patches/final-form+4.20.10.patch
@@ -1,8 +1,8 @@
diff --git a/node_modules/final-form/dist/final-form.es.js b/node_modules/final-form/dist/final-form.es.js
-index a1fa14f..72011ef 100644
+index e31d7f3..0757644 100644
--- a/node_modules/final-form/dist/final-form.es.js
+++ b/node_modules/final-form/dist/final-form.es.js
-@@ -1,6 +1,17 @@
+@@ -1,6 +1,16 @@
-import _extends from '@babel/runtime/helpers/esm/extends';
import _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';
@@ -10,14 +10,13 @@ index a1fa14f..72011ef 100644
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i];
+ for (var key in source) {
-+ if (Object.prototype.hasOwnProperty.call(source, key)) {
-+ target[key] = source[key];
-+ }
-+ }
++ if (Object.prototype.hasOwnProperty.call(source, key)) {
++ target[key] = source[key];
++ }
++ }
+ }
+ return target;
-+};
-+
++}
//
+
var charCodeOfDot = ".".charCodeAt(0);
- var reEscapeChar = /\\(\\)?/g;
diff --git a/yarn.lock b/yarn.lock
index 67c7af4c6..cc85d61a0 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -6729,15 +6729,15 @@ filter-obj@^1.1.0:
resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b"
integrity sha1-mzERErxsYSehbgFsbF1/GeCAXFs=
-final-form-arrays@3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/final-form-arrays/-/final-form-arrays-3.0.2.tgz#9f3bef778dec61432357744eb6f3abef7e7f3847"
- integrity sha512-TfO8aZNz3RrsZCDx8GHMQcyztDNpGxSSi9w4wpSNKlmv2PfFWVVM8P7Yj5tj4n0OWax+x5YwTLhT5BnqSlCi+w==
+final-form-arrays@3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/final-form-arrays/-/final-form-arrays-3.1.0.tgz#8bdace2fccedd61f3cbd032ae429813ae5ea37af"
+ integrity sha512-TWBvun+AopgBLw9zfTFHBllnKMVNEwCEyDawphPuBGGqNsuhGzhT7yewHys64KFFwzIs6KEteGLpKOwvTQEscQ==
-final-form@4.20.7:
- version "4.20.7"
- resolved "https://registry.yarnpkg.com/final-form/-/final-form-4.20.7.tgz#e7e2eb5fd952951d4fe6153d46043da2d68b207e"
- integrity sha512-ii3X9wNfyBYFnDPunYN5jh1/HAvtOZ9aJI/TVk0MB86hZuOeYkb+W5L3icgwW9WWNztZR6MDU3En6eoZTUoFPg==
+final-form@4.20.10:
+ version "4.20.10"
+ resolved "https://registry.yarnpkg.com/final-form/-/final-form-4.20.10.tgz#1a484be6e9a91989121c054dcbd6f48bad051ecc"
+ integrity sha512-TL48Pi1oNHeMOHrKv1bCJUrWZDcD3DIG6AGYVNOnyZPr7Bd/pStN0pL+lfzF5BNoj/FclaoiaLenk4XUIFVYng==
dependencies:
"@babel/runtime" "^7.10.0"
From 5b84c8fe64766970d6a7757c42f9e891d0e9ca83 Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 2 Dec 2024 18:27:00 +0200
Subject: [PATCH 005/198] React Intl: update to v6.8.4 We did not update to the
newest (v7.0.1), because there is a bug with fast-memoize:
https://github.com/formatjs/formatjs/issues/4725
---
package.json | 2 +-
yarn.lock | 224 ++++++++++++++++++++++++++-------------------------
2 files changed, 117 insertions(+), 109 deletions(-)
diff --git a/package.json b/package.json
index 60e7a692d..a425c714f 100644
--- a/package.json
+++ b/package.json
@@ -47,7 +47,7 @@
"react-final-form-arrays": "3.1.4",
"react-helmet-async": "^1.3.0",
"react-image-gallery": "1.2.8",
- "react-intl": "^5.25.1",
+ "react-intl": "6.8.4",
"react-moment-proptypes": "^1.8.1",
"react-redux": "^7.2.8",
"react-router-dom": "^5.3.2",
diff --git a/yarn.lock b/yarn.lock
index cc85d61a0..55a684ce8 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2257,75 +2257,76 @@
minimatch "^3.1.2"
strip-json-comments "^3.1.1"
-"@formatjs/ecma402-abstract@1.11.4":
- version "1.11.4"
- resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz#b962dfc4ae84361f9f08fbce411b4e4340930eda"
- integrity sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==
- dependencies:
- "@formatjs/intl-localematcher" "0.2.25"
- tslib "^2.1.0"
-
-"@formatjs/fast-memoize@1.2.1":
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-1.2.1.tgz#e6f5aee2e4fd0ca5edba6eba7668e2d855e0fc21"
- integrity sha512-Rg0e76nomkz3vF9IPlKeV+Qynok0r7YZjL6syLz4/urSg0IbjPZCB/iYUMNsYA643gh4mgrX3T7KEIFIxJBQeg==
- dependencies:
- tslib "^2.1.0"
-
-"@formatjs/icu-messageformat-parser@2.1.0":
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.0.tgz#a54293dd7f098d6a6f6a084ab08b6d54a3e8c12d"
- integrity sha512-Qxv/lmCN6hKpBSss2uQ8IROVnta2r9jd3ymUEIjm2UyIkUCHVcbUVRGL/KS/wv7876edvsPe+hjHVJ4z8YuVaw==
- dependencies:
- "@formatjs/ecma402-abstract" "1.11.4"
- "@formatjs/icu-skeleton-parser" "1.3.6"
- tslib "^2.1.0"
-
-"@formatjs/icu-skeleton-parser@1.3.6":
- version "1.3.6"
- resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.6.tgz#4ce8c0737d6f07b735288177049e97acbf2e8964"
- integrity sha512-I96mOxvml/YLrwU2Txnd4klA7V8fRhb6JG/4hm3VMNmeJo1F03IpV2L3wWt7EweqNLES59SZ4d6hVOPCSf80Bg==
- dependencies:
- "@formatjs/ecma402-abstract" "1.11.4"
- tslib "^2.1.0"
-
-"@formatjs/intl-displaynames@5.4.3":
- version "5.4.3"
- resolved "https://registry.yarnpkg.com/@formatjs/intl-displaynames/-/intl-displaynames-5.4.3.tgz#e468586694350c722c7efab1a31fcde68aeaed8b"
- integrity sha512-4r12A3mS5dp5hnSaQCWBuBNfi9Amgx2dzhU4lTFfhSxgb5DOAiAbMpg6+7gpWZgl4ahsj3l2r/iHIjdmdXOE2Q==
- dependencies:
- "@formatjs/ecma402-abstract" "1.11.4"
- "@formatjs/intl-localematcher" "0.2.25"
- tslib "^2.1.0"
-
-"@formatjs/intl-listformat@6.5.3":
- version "6.5.3"
- resolved "https://registry.yarnpkg.com/@formatjs/intl-listformat/-/intl-listformat-6.5.3.tgz#f29da613a8062dc3e4e3d847ba890c3ea745f051"
- integrity sha512-ozpz515F/+3CU+HnLi5DYPsLa6JoCfBggBSSg/8nOB5LYSFW9+ZgNQJxJ8tdhKYeODT+4qVHX27EeJLoxLGLNg==
- dependencies:
- "@formatjs/ecma402-abstract" "1.11.4"
- "@formatjs/intl-localematcher" "0.2.25"
- tslib "^2.1.0"
-
-"@formatjs/intl-localematcher@0.2.25":
- version "0.2.25"
- resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.2.25.tgz#60892fe1b271ec35ba07a2eb018a2dd7bca6ea3a"
- integrity sha512-YmLcX70BxoSopLFdLr1Ds99NdlTI2oWoLbaUW2M406lxOIPzE1KQhRz2fPUkq34xVZQaihCoU29h0KK7An3bhA==
+"@formatjs/ecma402-abstract@2.2.1":
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-2.2.1.tgz#2e62bc5c22b0e6a5e13bfec6aac15d3d403e1065"
+ integrity sha512-O4ywpkdJybrjFc9zyL8qK5aklleIAi5O4nYhBVJaOFtCkNrnU+lKFeJOFC48zpsZQmR8Aok2V79hGpHnzbmFpg==
dependencies:
- tslib "^2.1.0"
+ "@formatjs/fast-memoize" "2.2.2"
+ "@formatjs/intl-localematcher" "0.5.6"
+ tslib "2"
-"@formatjs/intl@2.2.1":
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/@formatjs/intl/-/intl-2.2.1.tgz#6daf4dabed055b17f467f0aa1bc073a626bc9189"
- integrity sha512-vgvyUOOrzqVaOFYzTf2d3+ToSkH2JpR7x/4U1RyoHQLmvEaTQvXJ7A2qm1Iy3brGNXC/+/7bUlc3lpH+h/LOJA==
- dependencies:
- "@formatjs/ecma402-abstract" "1.11.4"
- "@formatjs/fast-memoize" "1.2.1"
- "@formatjs/icu-messageformat-parser" "2.1.0"
- "@formatjs/intl-displaynames" "5.4.3"
- "@formatjs/intl-listformat" "6.5.3"
- intl-messageformat "9.13.0"
- tslib "^2.1.0"
+"@formatjs/fast-memoize@2.2.2":
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-2.2.2.tgz#2409ec10f5f7d6c65f4c04e6c2d6cc56fa1e4cef"
+ integrity sha512-mzxZcS0g1pOzwZTslJOBTmLzDXseMLLvnh25ymRilCm8QLMObsQ7x/rj9GNrH0iUhZMlFisVOD6J1n6WQqpKPQ==
+ dependencies:
+ tslib "2"
+
+"@formatjs/icu-messageformat-parser@2.9.1":
+ version "2.9.1"
+ resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.9.1.tgz#f127c6a8196446c7d842c08b1230f10cf27a3dc3"
+ integrity sha512-7AYk4tjnLi5wBkxst2w7qFj38JLMJoqzj7BhdEl7oTlsWMlqwgx4p9oMmmvpXWTSDGNwOKBRc1SfwMh5MOHeNg==
+ dependencies:
+ "@formatjs/ecma402-abstract" "2.2.1"
+ "@formatjs/icu-skeleton-parser" "1.8.5"
+ tslib "2"
+
+"@formatjs/icu-skeleton-parser@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.5.tgz#c25355778b9ea49bb0dcd85af727a375b9fcea62"
+ integrity sha512-zRZ/e3B5qY2+JCLs7puTzWS1Jb+t/K+8Jur/gEZpA2EjWeLDE17nsx8thyo9P48Mno7UmafnPupV2NCJXX17Dg==
+ dependencies:
+ "@formatjs/ecma402-abstract" "2.2.1"
+ tslib "2"
+
+"@formatjs/intl-displaynames@6.8.1":
+ version "6.8.1"
+ resolved "https://registry.yarnpkg.com/@formatjs/intl-displaynames/-/intl-displaynames-6.8.1.tgz#9cb16ecdd08410c884f0edf9057abb23ef842a86"
+ integrity sha512-nyWfJk4BZ1+GzLq9a40BgVPSRpBkRAVzrSpql+92i0i+lX11m9eS1trSRf/h3j/XcQ+h1h+ntA4Ra4jETK7nNg==
+ dependencies:
+ "@formatjs/ecma402-abstract" "2.2.1"
+ "@formatjs/intl-localematcher" "0.5.6"
+ tslib "2"
+
+"@formatjs/intl-listformat@7.7.1":
+ version "7.7.1"
+ resolved "https://registry.yarnpkg.com/@formatjs/intl-listformat/-/intl-listformat-7.7.1.tgz#267b7aff8ad3bf28d6608caab5dad26346a7b07c"
+ integrity sha512-bjBxWaUhYAbJFUlFSMWZGn3r2mglXwk+BLyGRu8dY8Q83ZPsqmmVQzjQKENHE3lV6eoQGHT2oZHxUaVndJlk6Q==
+ dependencies:
+ "@formatjs/ecma402-abstract" "2.2.1"
+ "@formatjs/intl-localematcher" "0.5.6"
+ tslib "2"
+
+"@formatjs/intl-localematcher@0.5.6":
+ version "0.5.6"
+ resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.5.6.tgz#cd0cd99483673d3196a15b4e2c924cfda7f002f8"
+ integrity sha512-roz1+Ba5e23AHX6KUAWmLEyTRZegM5YDuxuvkHCyK3RJddf/UXB2f+s7pOMm9ktfPGla0g+mQXOn5vsuYirnaA==
+ dependencies:
+ tslib "2"
+
+"@formatjs/intl@2.10.11":
+ version "2.10.11"
+ resolved "https://registry.yarnpkg.com/@formatjs/intl/-/intl-2.10.11.tgz#f63c62cc540709b35d080188838b3dbb262f47ca"
+ integrity sha512-FNLZjzE1QRlv1Wf0oinnM97AbvZU1zQnQMHI0Oza2F7PxzrPf6bYFRs0ugapq/O4FrvNwDt9F9nyRNwsMM118g==
+ dependencies:
+ "@formatjs/ecma402-abstract" "2.2.1"
+ "@formatjs/fast-memoize" "2.2.2"
+ "@formatjs/icu-messageformat-parser" "2.9.1"
+ "@formatjs/intl-displaynames" "6.8.1"
+ "@formatjs/intl-listformat" "7.7.1"
+ intl-messageformat "10.7.3"
+ tslib "2"
"@humanwhocodes/config-array@^0.9.2":
version "0.9.5"
@@ -3507,7 +3508,15 @@
dependencies:
"@types/node" "*"
-"@types/hoist-non-react-statics@^3.3.0", "@types/hoist-non-react-statics@^3.3.1":
+"@types/hoist-non-react-statics@3":
+ version "3.3.5"
+ resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz#dab7867ef789d87e2b4b0003c9d65c49cc44a494"
+ integrity sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==
+ dependencies:
+ "@types/react" "*"
+ hoist-non-react-statics "^3.3.0"
+
+"@types/hoist-non-react-statics@^3.3.0":
version "3.3.1"
resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f"
integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==
@@ -3686,13 +3695,12 @@
"@types/prop-types" "*"
csstype "^2.2.0"
-"@types/react@16 || 17 || 18":
- version "18.0.9"
- resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.9.tgz#d6712a38bd6cd83469603e7359511126f122e878"
- integrity sha512-9bjbg1hJHUm4De19L1cHiW0Jvx3geel6Qczhjd0qY5VKVE2X5+x77YxAepuCwVh4vrgZJdgEJw48zrhRIeF4Nw==
+"@types/react@^18.3.11":
+ version "18.3.12"
+ resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.12.tgz#99419f182ccd69151813b7ee24b792fe08774f60"
+ integrity sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==
dependencies:
"@types/prop-types" "*"
- "@types/scheduler" "*"
csstype "^3.0.2"
"@types/resolve@1.17.1":
@@ -3714,11 +3722,6 @@
dependencies:
"@types/node" "*"
-"@types/scheduler@*":
- version "0.16.2"
- resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39"
- integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==
-
"@types/serve-index@^1.9.1":
version "1.9.1"
resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278"
@@ -7270,6 +7273,13 @@ history@^4.9.0:
tiny-warning "^1.0.0"
value-equal "^0.4.0"
+hoist-non-react-statics@3, hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
+ integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
+ dependencies:
+ react-is "^16.7.0"
+
hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz#b09178f0122184fb95acf525daaecb4d8f45958b"
@@ -7277,13 +7287,6 @@ hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0:
dependencies:
react-is "^16.7.0"
-hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2:
- version "3.3.2"
- resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
- integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
- dependencies:
- react-is "^16.7.0"
-
hoopy@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d"
@@ -7597,15 +7600,15 @@ internal-slot@^1.0.4:
has "^1.0.3"
side-channel "^1.0.4"
-intl-messageformat@9.13.0:
- version "9.13.0"
- resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-9.13.0.tgz#97360b73bd82212e4f6005c712a4a16053165468"
- integrity sha512-7sGC7QnSQGa5LZP7bXLDhVDtQOeKGeBFGHF2Y8LVBwYZoQZCgWeKoPGTa5GMG8g/TzDgeXuYJQis7Ggiw2xTOw==
+intl-messageformat@10.7.3:
+ version "10.7.3"
+ resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-10.7.3.tgz#a5cbc886f1db4b6324e6bfc4fd8f91a3e3e37c31"
+ integrity sha512-AAo/3oyh7ROfPhDuh7DxTTydh97OC+lv7h1Eq5LuHWuLsUMKOhtzTYuyXlUReuwZ9vANDHo4CS1bGRrn7TZRtg==
dependencies:
- "@formatjs/ecma402-abstract" "1.11.4"
- "@formatjs/fast-memoize" "1.2.1"
- "@formatjs/icu-messageformat-parser" "2.1.0"
- tslib "^2.1.0"
+ "@formatjs/ecma402-abstract" "2.2.1"
+ "@formatjs/fast-memoize" "2.2.2"
+ "@formatjs/icu-messageformat-parser" "2.9.1"
+ tslib "2"
invariant@^2.2.4:
version "2.2.4"
@@ -10994,21 +10997,21 @@ react-image-gallery@1.2.8:
resolved "https://registry.yarnpkg.com/react-image-gallery/-/react-image-gallery-1.2.8.tgz#8f41b0ade1c115a4f34621771c182af33d2d9a62"
integrity sha512-7KbWcWChUMHRGyJHA/eH3injWF9/2WTlQXjV6fym1DqwrINSVIh1hLiqmujh/XANstW+osqSu5WFKKPy2F2gbA==
-react-intl@^5.25.1:
- version "5.25.1"
- resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-5.25.1.tgz#68a73aefc485c9bf70062381ae7f6f4791680879"
- integrity sha512-pkjdQDvpJROoXLMltkP/5mZb0/XqrqLoPGKUCfbdkP8m6U9xbK40K51Wu+a4aQqTEvEK5lHBk0fWzUV72SJ3Hg==
- dependencies:
- "@formatjs/ecma402-abstract" "1.11.4"
- "@formatjs/icu-messageformat-parser" "2.1.0"
- "@formatjs/intl" "2.2.1"
- "@formatjs/intl-displaynames" "5.4.3"
- "@formatjs/intl-listformat" "6.5.3"
- "@types/hoist-non-react-statics" "^3.3.1"
- "@types/react" "16 || 17 || 18"
- hoist-non-react-statics "^3.3.2"
- intl-messageformat "9.13.0"
- tslib "^2.1.0"
+react-intl@6.8.4:
+ version "6.8.4"
+ resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-6.8.4.tgz#e39b6a71bbce5db90460abba4869c9f58b38fc1e"
+ integrity sha512-UKYrCIztyvSiZCpvHjDwAHlXT735fDioABVP+uhRAOhDSBS9NQ2vVbxiUikvVEBdr2b0cTe1tUfOfvhbmSPi/A==
+ dependencies:
+ "@formatjs/ecma402-abstract" "2.2.1"
+ "@formatjs/icu-messageformat-parser" "2.9.1"
+ "@formatjs/intl" "2.10.11"
+ "@formatjs/intl-displaynames" "6.8.1"
+ "@formatjs/intl-listformat" "7.7.1"
+ "@types/hoist-non-react-statics" "3"
+ "@types/react" "^18.3.11"
+ hoist-non-react-statics "3"
+ intl-messageformat "10.7.3"
+ tslib "2"
react-is@^16.12.0, react-is@^16.13.1:
version "16.13.1"
@@ -12706,6 +12709,11 @@ tsconfig-paths@^3.14.1:
minimist "^1.2.6"
strip-bom "^3.0.0"
+tslib@2:
+ version "2.8.1"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
+ integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
+
tslib@^1.8.1:
version "1.14.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
From 2f6036a9c751ab832334a5a7effb19f6f0ae6130 Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 2 Dec 2024 18:28:18 +0200
Subject: [PATCH 006/198] Remove react-with-direction dep: that should have
been removed with react-dates
---
package.json | 1 -
yarn.lock | 92 +---------------------------------------------------
2 files changed, 1 insertion(+), 92 deletions(-)
diff --git a/package.json b/package.json
index a425c714f..10a1bef2d 100644
--- a/package.json
+++ b/package.json
@@ -51,7 +51,6 @@
"react-moment-proptypes": "^1.8.1",
"react-redux": "^7.2.8",
"react-router-dom": "^5.3.2",
- "react-with-direction": "^1.4.0",
"redux": "^4.2.0",
"redux-thunk": "^2.4.1",
"rehype-react": "^6.2.1",
diff --git a/yarn.lock b/yarn.lock
index 55a684ce8..68738a574 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4128,21 +4128,6 @@ agent-base@6:
dependencies:
debug "4"
-airbnb-prop-types@^2.16.0:
- version "2.16.0"
- resolved "https://registry.yarnpkg.com/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz#b96274cefa1abb14f623f804173ee97c13971dc2"
- integrity sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==
- dependencies:
- array.prototype.find "^2.1.1"
- function.prototype.name "^1.1.2"
- is-regex "^1.1.0"
- object-is "^1.1.2"
- object.assign "^4.1.0"
- object.entries "^1.1.2"
- prop-types "^15.7.2"
- prop-types-exact "^1.2.0"
- react-is "^16.13.1"
-
ajv-formats@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520"
@@ -4333,15 +4318,6 @@ array-union@^2.1.0:
resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
-array.prototype.find@^2.1.1:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.1.2.tgz#6abbd0c2573925d8094f7d23112306af8c16d534"
- integrity sha512-00S1O4ewO95OmmJW7EesWfQlrCrLEL8kZ40w3+GkLX2yTt0m2ggcePPa2uHPJ9KUmJvwRq+lCV9bD8Yim23x/Q==
- dependencies:
- call-bind "^1.0.2"
- define-properties "^1.1.3"
- es-abstract "^1.19.0"
-
array.prototype.flat@^1.2.5:
version "1.3.0"
resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz#0b0c1567bf57b38b56b4c97b8aa72ab45e4adc7b"
@@ -4720,11 +4696,6 @@ braces@^3.0.1, braces@^3.0.2, braces@~3.0.2:
dependencies:
fill-range "^7.0.1"
-brcast@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/brcast/-/brcast-2.0.2.tgz#2db16de44140e418dc37fab10beec0369e78dcef"
- integrity sha512-Tfn5JSE7hrUlFcOoaLzVvkbgIemIorMIyoMr3TgvszWW7jFt2C9PdeMLtysYD9RU0MmU17b69+XJG1eRY2OBRg==
-
browser-process-hrtime@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626"
@@ -5667,11 +5638,6 @@ deep-is@^0.1.3, deep-is@~0.1.3:
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
-deepmerge@^1.5.2:
- version "1.5.2"
- resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753"
- integrity sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==
-
deepmerge@^4.2.2:
version "4.2.2"
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
@@ -5790,11 +5756,6 @@ dir-glob@^3.0.1:
dependencies:
path-type "^4.0.0"
-direction@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/direction/-/direction-1.0.4.tgz#2b86fb686967e987088caf8b89059370d4837442"
- integrity sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ==
-
dlv@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79"
@@ -6946,15 +6907,6 @@ function-bind@^1.1.2:
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
-function.prototype.name@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.2.tgz#5cdf79d7c05db401591dfde83e3b70c5123e9a45"
- integrity sha512-C8A+LlHBJjB2AdcRPorc5JvJ5VUoWlXdEHLOJdCI7kjHEtGTpHQUiqMvCIKUwIsGwZX2jZJy761AXsn356bJQg==
- dependencies:
- define-properties "^1.1.3"
- es-abstract "^1.17.0-next.1"
- functions-have-names "^1.2.0"
-
function.prototype.name@^1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621"
@@ -6970,11 +6922,6 @@ functional-red-black-tree@^1.0.1:
resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
-functions-have-names@^1.2.0:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.1.tgz#a981ac397fa0c9964551402cdc5533d7a4d52f91"
- integrity sha512-j48B/ZI7VKs3sgeI2cZp7WXWmZXu7Iq5pl5/vptV5N2mq+DGFuS/ulaDjtaoLpYzuD6u8UgrUKHfgo7fDTSiBA==
-
functions-have-names@^1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.2.tgz#98d93991c39da9361f8e50b337c4f6e41f120e21"
@@ -9462,7 +9409,7 @@ object-inspect@^1.8.0:
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0"
integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==
-object-is@^1.1.2, object-is@^1.1.5:
+object-is@^1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac"
integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==
@@ -9515,15 +9462,6 @@ object.assign@^4.1.4:
has-symbols "^1.0.3"
object-keys "^1.1.1"
-object.entries@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.2.tgz#bc73f00acb6b6bb16c203434b10f9a7e797d3add"
- integrity sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==
- dependencies:
- define-properties "^1.1.3"
- es-abstract "^1.17.5"
- has "^1.0.3"
-
object.entries@^1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861"
@@ -10751,15 +10689,6 @@ prompts@^2.4.2:
kleur "^3.0.3"
sisteransi "^1.0.5"
-prop-types-exact@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/prop-types-exact/-/prop-types-exact-1.2.0.tgz#825d6be46094663848237e3925a98c6e944e9869"
- integrity sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA==
- dependencies:
- has "^1.0.3"
- object.assign "^4.1.0"
- reflect.ownkeys "^0.2.0"
-
prop-types@^15.6.2, prop-types@^15.7.2:
version "15.7.2"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
@@ -11096,20 +11025,6 @@ react-router@5.3.2:
tiny-invariant "^1.0.2"
tiny-warning "^1.0.0"
-react-with-direction@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/react-with-direction/-/react-with-direction-1.4.0.tgz#ebdf64d685d0650ce966e872e6431ad5a2485444"
- integrity sha512-ybHNPiAmaJpoWwugwqry9Hd1Irl2hnNXlo/2SXQBwbLn/jGMauMS2y9jw+ydyX5V9ICryCqObNSthNt5R94xpg==
- dependencies:
- airbnb-prop-types "^2.16.0"
- brcast "^2.0.2"
- deepmerge "^1.5.2"
- direction "^1.0.4"
- hoist-non-react-statics "^3.3.2"
- object.assign "^4.1.2"
- object.values "^1.1.5"
- prop-types "^15.7.2"
-
react@^17.0.2:
version "17.0.2"
resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037"
@@ -11207,11 +11122,6 @@ redux@^4.2.0:
dependencies:
"@babel/runtime" "^7.9.2"
-reflect.ownkeys@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460"
- integrity sha1-dJrO7H8/34tj+SegSAnpDFwLNGA=
-
regenerate-unicode-properties@^10.0.1:
version "10.0.1"
resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56"
From a6edfdcdf984c14468d929c40583181a1f819f07 Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 2 Dec 2024 18:29:32 +0200
Subject: [PATCH 007/198] react-router-dom: update to v5.3.4
---
package.json | 2 +-
yarn.lock | 39 +++++++++------------------------------
2 files changed, 10 insertions(+), 31 deletions(-)
diff --git a/package.json b/package.json
index 10a1bef2d..3d162a697 100644
--- a/package.json
+++ b/package.json
@@ -50,7 +50,7 @@
"react-intl": "6.8.4",
"react-moment-proptypes": "^1.8.1",
"react-redux": "^7.2.8",
- "react-router-dom": "^5.3.2",
+ "react-router-dom": "^5.3.4",
"redux": "^4.2.0",
"redux-thunk": "^2.4.1",
"rehype-react": "^6.2.1",
diff --git a/yarn.lock b/yarn.lock
index 68738a574..9ff1e4721 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2028,13 +2028,6 @@
dependencies:
regenerator-runtime "^0.14.0"
-"@babel/runtime@^7.5.5":
- version "7.5.5"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.5.5.tgz#74fba56d35efbeca444091c7850ccd494fd2f132"
- integrity sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ==
- dependencies:
- regenerator-runtime "^0.13.2"
-
"@babel/template@^7.12.13":
version "7.12.13"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327"
@@ -9145,14 +9138,6 @@ min-indent@^1.0.0:
resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==
-mini-create-react-context@^0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.0.tgz#df60501c83151db69e28eac0ef08b4002efab040"
- integrity sha512-b0TytUgFSbgFJGzJqXPKCFCBWigAjpjo+Fl7Vf7ZbKRDptszpppKxXH6DRXEABZ/gcEQczeb0iZ7JvL8e8jjCA==
- dependencies:
- "@babel/runtime" "^7.5.5"
- tiny-warning "^1.0.3"
-
mini-css-extract-plugin@^2.4.5:
version "2.6.1"
resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz#9a1251d15f2035c342d99a468ab9da7a0451b71e"
@@ -10996,29 +10981,28 @@ react-refresh@^0.11.0:
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046"
integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==
-react-router-dom@^5.3.2:
- version "5.3.2"
- resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.2.tgz#93a82c95732963d137c02b3aee0505956baeb69e"
- integrity sha512-j8sAq4YdWsrkM2DfDX26GnjtDKWUSd65LzHyBz8NcgFcK0ct7oTvYlwhOr532xpXsYP1HONq6QqUGA7GhbAY5w==
+react-router-dom@^5.3.4:
+ version "5.3.4"
+ resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.4.tgz#2ed62ffd88cae6db134445f4a0c0ae8b91d2e5e6"
+ integrity sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==
dependencies:
"@babel/runtime" "^7.12.13"
history "^4.9.0"
loose-envify "^1.3.1"
prop-types "^15.6.2"
- react-router "5.3.2"
+ react-router "5.3.4"
tiny-invariant "^1.0.2"
tiny-warning "^1.0.0"
-react-router@5.3.2:
- version "5.3.2"
- resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.3.2.tgz#87614394781e75cc6aa3b61cdfd147a1361cd890"
- integrity sha512-GlsSUckZ4JthgsW5lV9oSCs5CoQ7q0t0Ump/Y5YQ8qhiS+WjaAhaoJhc7otpZW9eVhO6N06vYPt40SpEzuuZeg==
+react-router@5.3.4:
+ version "5.3.4"
+ resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.3.4.tgz#8ca252d70fcc37841e31473c7a151cf777887bb5"
+ integrity sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==
dependencies:
"@babel/runtime" "^7.12.13"
history "^4.9.0"
hoist-non-react-statics "^3.1.0"
loose-envify "^1.3.1"
- mini-create-react-context "^0.4.0"
path-to-regexp "^1.7.0"
prop-types "^15.6.2"
react-is "^16.6.0"
@@ -12508,11 +12492,6 @@ tiny-warning@^1.0.0:
resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.2.tgz#1dfae771ee1a04396bdfde27a3adcebc6b648b28"
integrity sha512-rru86D9CpQRLvsFG5XFdy0KdLAvjdQDyZCsRcuu60WtzFylDM3eAWSxEVz5kzL2Gp544XiUvPbVKtOA/txLi9Q==
-tiny-warning@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
- integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==
-
tmp@^0.0.33:
version "0.0.33"
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
From af85b9268e8ab85ae5c4d18d913e71d38afb3d58 Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 2 Dec 2024 18:31:29 +0200
Subject: [PATCH 008/198] react-redux: update from v7.2.8 to v8.1.2
---
package.json | 2 +-
yarn.lock | 74 +++++++++++++++++++---------------------------------
2 files changed, 28 insertions(+), 48 deletions(-)
diff --git a/package.json b/package.json
index 3d162a697..823a480ac 100644
--- a/package.json
+++ b/package.json
@@ -49,7 +49,7 @@
"react-image-gallery": "1.2.8",
"react-intl": "6.8.4",
"react-moment-proptypes": "^1.8.1",
- "react-redux": "^7.2.8",
+ "react-redux": "^8.1.2",
"react-router-dom": "^5.3.4",
"redux": "^4.2.0",
"redux-thunk": "^2.4.1",
diff --git a/yarn.lock b/yarn.lock
index 9ff1e4721..11fee9152 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1986,6 +1986,13 @@
dependencies:
regenerator-runtime "^0.13.4"
+"@babel/runtime@^7.12.1", "@babel/runtime@^7.19.4":
+ version "7.26.0"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1"
+ integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==
+ dependencies:
+ regenerator-runtime "^0.14.0"
+
"@babel/runtime@^7.12.13", "@babel/runtime@^7.17.9":
version "7.17.9"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72"
@@ -2014,13 +2021,6 @@
dependencies:
regenerator-runtime "^0.13.4"
-"@babel/runtime@^7.19.4":
- version "7.26.0"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1"
- integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==
- dependencies:
- regenerator-runtime "^0.14.0"
-
"@babel/runtime@^7.21.0":
version "7.23.8"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.8.tgz#8ee6fe1ac47add7122902f257b8ddf55c898f650"
@@ -3501,7 +3501,7 @@
dependencies:
"@types/node" "*"
-"@types/hoist-non-react-statics@3":
+"@types/hoist-non-react-statics@3", "@types/hoist-non-react-statics@^3.3.1":
version "3.3.5"
resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz#dab7867ef789d87e2b4b0003c9d65c49cc44a494"
integrity sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==
@@ -3509,14 +3509,6 @@
"@types/react" "*"
hoist-non-react-statics "^3.3.0"
-"@types/hoist-non-react-statics@^3.3.0":
- version "3.3.1"
- resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f"
- integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==
- dependencies:
- "@types/react" "*"
- hoist-non-react-statics "^3.3.0"
-
"@types/html-minifier-terser@^6.0.0":
version "6.1.0"
resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35"
@@ -3670,16 +3662,6 @@
resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc"
integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==
-"@types/react-redux@^7.1.20":
- version "7.1.20"
- resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.20.tgz#42f0e61ababb621e12c66c96dda94c58423bd7df"
- integrity sha512-q42es4c8iIeTgcnB+yJgRTTzftv3eYYvCZOh1Ckn2eX/3o5TdsQYKUWpLoLuGlcY/p+VAhV9IOEZJcWk/vfkXw==
- dependencies:
- "@types/hoist-non-react-statics" "^3.3.0"
- "@types/react" "*"
- hoist-non-react-statics "^3.3.0"
- redux "^4.0.0"
-
"@types/react@*":
version "16.9.2"
resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.2.tgz#6d1765431a1ad1877979013906731aae373de268"
@@ -3764,6 +3746,11 @@
resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d"
integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==
+"@types/use-sync-external-store@^0.0.3":
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz#b6725d5f4af24ace33b36fafd295136e75509f43"
+ integrity sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==
+
"@types/ws@^8.5.1":
version "8.5.3"
resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.3.tgz#7d25a1ffbecd3c4f2d35068d0b283c037003274d"
@@ -10947,11 +10934,6 @@ react-is@^17.0.1:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339"
integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA==
-react-is@^17.0.2:
- version "17.0.2"
- resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
- integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
-
react-is@^18.0.0:
version "18.2.0"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
@@ -10964,17 +10946,17 @@ react-moment-proptypes@^1.8.1:
dependencies:
moment ">=1.6.0"
-react-redux@^7.2.8:
- version "7.2.8"
- resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.8.tgz#a894068315e65de5b1b68899f9c6ee0923dd28de"
- integrity sha512-6+uDjhs3PSIclqoCk0kd6iX74gzrGc3W5zcAjbrFgEdIjRSQObdIwfx80unTkVUYvbQ95Y8Av3OvFHq1w5EOUw==
+react-redux@^8.1.2:
+ version "8.1.3"
+ resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-8.1.3.tgz#4fdc0462d0acb59af29a13c27ffef6f49ab4df46"
+ integrity sha512-n0ZrutD7DaX/j9VscF+uTALI3oUPa/pO4Z3soOBIjuRn/FzVu6aehhysxZCLi6y7duMf52WNZGMl7CtuK5EnRw==
dependencies:
- "@babel/runtime" "^7.15.4"
- "@types/react-redux" "^7.1.20"
+ "@babel/runtime" "^7.12.1"
+ "@types/hoist-non-react-statics" "^3.3.1"
+ "@types/use-sync-external-store" "^0.0.3"
hoist-non-react-statics "^3.3.2"
- loose-envify "^1.4.0"
- prop-types "^15.7.2"
- react-is "^17.0.2"
+ react-is "^18.0.0"
+ use-sync-external-store "^1.0.0"
react-refresh@^0.11.0:
version "0.11.0"
@@ -11092,13 +11074,6 @@ redux-thunk@^2.4.1:
resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.4.1.tgz#0dd8042cf47868f4b29699941de03c9301a75714"
integrity sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q==
-redux@^4.0.0:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/redux/-/redux-4.1.2.tgz#140f35426d99bb4729af760afcf79eaaac407104"
- integrity sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw==
- dependencies:
- "@babel/runtime" "^7.9.2"
-
redux@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.0.tgz#46f10d6e29b6666df758780437651eeb2b969f13"
@@ -12915,6 +12890,11 @@ url@^0.11.0:
punycode "1.3.2"
querystring "0.2.0"
+use-sync-external-store@^1.0.0:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz#c3b6390f3a30eba13200d2302dcdf1e7b57b2ef9"
+ integrity sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==
+
util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
From 2df65f32529ec08554c57d74f268e8ff8db5598c Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 2 Dec 2024 18:33:07 +0200
Subject: [PATCH 009/198] redux: update from v4.2.0 to v4.2.1
---
package.json | 2 +-
yarn.lock | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package.json b/package.json
index 823a480ac..bb227d294 100644
--- a/package.json
+++ b/package.json
@@ -51,7 +51,7 @@
"react-moment-proptypes": "^1.8.1",
"react-redux": "^8.1.2",
"react-router-dom": "^5.3.4",
- "redux": "^4.2.0",
+ "redux": "^4.2.1",
"redux-thunk": "^2.4.1",
"rehype-react": "^6.2.1",
"rehype-sanitize": "^4.0.0",
diff --git a/yarn.lock b/yarn.lock
index 11fee9152..126897fb9 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -11074,10 +11074,10 @@ redux-thunk@^2.4.1:
resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.4.1.tgz#0dd8042cf47868f4b29699941de03c9301a75714"
integrity sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q==
-redux@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.0.tgz#46f10d6e29b6666df758780437651eeb2b969f13"
- integrity sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA==
+redux@^4.2.1:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.1.tgz#c08f4306826c49b5e9dc901dee0452ea8fce6197"
+ integrity sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==
dependencies:
"@babel/runtime" "^7.9.2"
From 90eccf83f7cadf1a54753bd963ec2e887d25cbbf Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 2 Dec 2024 18:34:19 +0200
Subject: [PATCH 010/198] redux-thunk: update from v4.2.1 to v4.2.2
---
package.json | 2 +-
yarn.lock | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package.json b/package.json
index bb227d294..3c93cfe96 100644
--- a/package.json
+++ b/package.json
@@ -52,7 +52,7 @@
"react-redux": "^8.1.2",
"react-router-dom": "^5.3.4",
"redux": "^4.2.1",
- "redux-thunk": "^2.4.1",
+ "redux-thunk": "^2.4.2",
"rehype-react": "^6.2.1",
"rehype-sanitize": "^4.0.0",
"remark-parse": "^9.0.0",
diff --git a/yarn.lock b/yarn.lock
index 126897fb9..560ec9e54 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -11069,10 +11069,10 @@ redent@^3.0.0:
indent-string "^4.0.0"
strip-indent "^3.0.0"
-redux-thunk@^2.4.1:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.4.1.tgz#0dd8042cf47868f4b29699941de03c9301a75714"
- integrity sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q==
+redux-thunk@^2.4.2:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.4.2.tgz#b9d05d11994b99f7a91ea223e8b04cf0afa5ef3b"
+ integrity sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==
redux@^4.2.1:
version "4.2.1"
From 2d95aed34d62c07cce48f75da64b5a12ea61708b Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 2 Dec 2024 18:35:23 +0200
Subject: [PATCH 011/198] react-image-gallery: update from v1.2.8 to v1.3.0
---
package.json | 2 +-
.../ListingImageGallery/image-gallery.css | 352 ++++++++++--------
yarn.lock | 8 +-
3 files changed, 203 insertions(+), 159 deletions(-)
diff --git a/package.json b/package.json
index 3c93cfe96..c11b99f02 100644
--- a/package.json
+++ b/package.json
@@ -46,7 +46,7 @@
"react-final-form": "6.5.9",
"react-final-form-arrays": "3.1.4",
"react-helmet-async": "^1.3.0",
- "react-image-gallery": "1.2.8",
+ "react-image-gallery": "1.3.0",
"react-intl": "6.8.4",
"react-moment-proptypes": "^1.8.1",
"react-redux": "^8.1.2",
diff --git a/src/containers/ListingPage/ListingImageGallery/image-gallery.css b/src/containers/ListingPage/ListingImageGallery/image-gallery.css
index 29bb08def..935d9c5ce 100644
--- a/src/containers/ListingPage/ListingImageGallery/image-gallery.css
+++ b/src/containers/ListingPage/ListingImageGallery/image-gallery.css
@@ -1,6 +1,7 @@
+/* This file is copied from node_modules/react-image-gallery/styles/css/image-gallery.css (v1.3.0) */
.image-gallery-icon {
color: #fff;
- transition: all 0.3s ease-out;
+ transition: all .3s ease-out;
appearance: none;
background-color: transparent;
border: 0;
@@ -8,97 +9,106 @@
outline: none;
position: absolute;
z-index: 4;
- filter: drop-shadow(0 2px 2px #1a1a1a);
+ filter: drop-shadow(0 2px 2px #1a1a1a)
}
-@media (hover: hover) and (pointer: fine) {
+
+@media(hover: hover)and (pointer: fine) {
.image-gallery-icon:hover {
- color: #337ab7;
+ color: #337ab7
}
+
.image-gallery-icon:hover .image-gallery-svg {
- transform: scale(1.1);
+ transform: scale(1.1)
}
}
+
.image-gallery-icon:focus {
- outline: 2px solid #337ab7;
+ outline: 2px solid #337ab7
}
+
.image-gallery-using-mouse .image-gallery-icon:focus {
- outline: none;
+ outline: none
}
-.image-gallery-fullscreen-button,
-.image-gallery-play-button {
+
+.image-gallery-fullscreen-button, .image-gallery-play-button {
bottom: 0;
- padding: 20px;
+ padding: 20px
}
-.image-gallery-fullscreen-button .image-gallery-svg,
-.image-gallery-play-button .image-gallery-svg {
+
+.image-gallery-fullscreen-button .image-gallery-svg, .image-gallery-play-button .image-gallery-svg {
height: 28px;
- width: 28px;
+ width: 28px
}
-@media (max-width: 768px) {
- .image-gallery-fullscreen-button,
- .image-gallery-play-button {
- padding: 15px;
+
+@media(max-width: 768px) {
+ .image-gallery-fullscreen-button, .image-gallery-play-button {
+ padding: 15px
}
- .image-gallery-fullscreen-button .image-gallery-svg,
- .image-gallery-play-button .image-gallery-svg {
+
+ .image-gallery-fullscreen-button .image-gallery-svg, .image-gallery-play-button .image-gallery-svg {
height: 24px;
- width: 24px;
+ width: 24px
}
}
-@media (max-width: 480px) {
- .image-gallery-fullscreen-button,
- .image-gallery-play-button {
- padding: 10px;
+
+@media(max-width: 480px) {
+ .image-gallery-fullscreen-button, .image-gallery-play-button {
+ padding: 10px
}
- .image-gallery-fullscreen-button .image-gallery-svg,
- .image-gallery-play-button .image-gallery-svg {
+
+ .image-gallery-fullscreen-button .image-gallery-svg, .image-gallery-play-button .image-gallery-svg {
height: 16px;
- width: 16px;
+ width: 16px
}
}
+
.image-gallery-fullscreen-button {
- right: 0;
+ right: 0
}
+
.image-gallery-play-button {
- left: 0;
+ left: 0
}
-.image-gallery-left-nav,
-.image-gallery-right-nav {
+
+.image-gallery-left-nav, .image-gallery-right-nav {
padding: 50px 10px;
top: 50%;
- transform: translateY(-50%);
+ transform: translateY(-50%)
}
-.image-gallery-left-nav .image-gallery-svg,
-.image-gallery-right-nav .image-gallery-svg {
+
+.image-gallery-left-nav .image-gallery-svg, .image-gallery-right-nav .image-gallery-svg {
height: 120px;
- width: 60px;
+ width: 60px
}
-@media (max-width: 768px) {
- .image-gallery-left-nav .image-gallery-svg,
- .image-gallery-right-nav .image-gallery-svg {
+
+@media(max-width: 768px) {
+ .image-gallery-left-nav .image-gallery-svg, .image-gallery-right-nav .image-gallery-svg {
height: 72px;
- width: 36px;
+ width: 36px
}
}
-@media (max-width: 480px) {
- .image-gallery-left-nav .image-gallery-svg,
- .image-gallery-right-nav .image-gallery-svg {
+
+@media(max-width: 480px) {
+ .image-gallery-left-nav .image-gallery-svg, .image-gallery-right-nav .image-gallery-svg {
height: 48px;
- width: 24px;
+ width: 24px
}
}
-.image-gallery-left-nav[disabled],
-.image-gallery-right-nav[disabled] {
+
+.image-gallery-left-nav[disabled], .image-gallery-right-nav[disabled] {
cursor: disabled;
- opacity: 0.6;
- pointer-events: none;
+ opacity: .6;
+ pointer-events: none
}
+
.image-gallery-left-nav {
- left: 0;
+ left: 0
}
+
.image-gallery-right-nav {
- right: 0;
+ right: 0
}
+
.image-gallery {
-webkit-user-select: none;
-moz-user-select: none;
@@ -106,8 +116,9 @@
-o-user-select: none;
user-select: none;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
- position: relative;
+ position: relative
}
+
.image-gallery.fullscreen-modal {
background: #000;
bottom: 0;
@@ -117,81 +128,94 @@
right: 0;
top: 0;
width: 100%;
- z-index: 5;
+ z-index: 5
}
+
.image-gallery.fullscreen-modal .image-gallery-content {
top: 50%;
- transform: translateY(-50%);
+ transform: translateY(-50%)
}
+
.image-gallery-content {
position: relative;
line-height: 0;
- top: 0;
+ top: 0
}
+
.image-gallery-content.fullscreen {
- background: #000;
+ background: #000
}
+
.image-gallery-content .image-gallery-slide .image-gallery-image {
- max-height: calc(100vh - 80px);
+ max-height: calc(100vh - 80px)
}
-.image-gallery-content.left .image-gallery-slide .image-gallery-image,
-.image-gallery-content.right .image-gallery-slide .image-gallery-image {
- max-height: 100vh;
+
+.image-gallery-content.image-gallery-thumbnails-left .image-gallery-slide .image-gallery-image, .image-gallery-content.image-gallery-thumbnails-right .image-gallery-slide .image-gallery-image {
+ max-height: 100vh
}
+
.image-gallery-slide-wrapper {
- position: relative;
+ position: relative
}
-.image-gallery-slide-wrapper.left,
-.image-gallery-slide-wrapper.right {
+
+.image-gallery-slide-wrapper.image-gallery-thumbnails-left, .image-gallery-slide-wrapper.image-gallery-thumbnails-right {
display: inline-block;
- width: calc(100% - 110px);
+ width: calc(100% - 110px)
}
-@media (max-width: 768px) {
- .image-gallery-slide-wrapper.left,
- .image-gallery-slide-wrapper.right {
- width: calc(100% - 87px);
+
+@media(max-width: 768px) {
+ .image-gallery-slide-wrapper.image-gallery-thumbnails-left, .image-gallery-slide-wrapper.image-gallery-thumbnails-right {
+ width: calc(100% - 87px)
}
}
+
.image-gallery-slide-wrapper.image-gallery-rtl {
- direction: rtl;
+ direction: rtl
}
+
.image-gallery-slides {
line-height: 0;
overflow: hidden;
position: relative;
white-space: nowrap;
- text-align: center;
+ text-align: center
}
+
.image-gallery-slide {
left: 0;
position: absolute;
top: 0;
- width: 100%;
+ width: 100%
}
-.image-gallery-slide.center {
- position: relative;
+
+.image-gallery-slide.image-gallery-center {
+ position: relative
}
+
.image-gallery-slide .image-gallery-image {
width: 100%;
- object-fit: contain;
+ object-fit: contain
}
+
.image-gallery-slide .image-gallery-description {
- background: rgba(0, 0, 0, 0.4);
+ background: rgba(0, 0, 0, .4);
bottom: 70px;
color: #fff;
left: 0;
line-height: 1;
padding: 10px 20px;
position: absolute;
- white-space: normal;
+ white-space: normal
}
-@media (max-width: 768px) {
+
+@media(max-width: 768px) {
.image-gallery-slide .image-gallery-description {
bottom: 45px;
- font-size: 0.8em;
- padding: 8px 15px;
+ font-size: .8em;
+ padding: 8px 15px
}
}
+
.image-gallery-bullets {
bottom: 20px;
left: 0;
@@ -199,13 +223,15 @@
position: absolute;
right: 0;
width: 80%;
- z-index: 4;
+ z-index: 4
}
+
.image-gallery-bullets .image-gallery-bullets-container {
margin: 0;
padding: 0;
- text-align: center;
+ text-align: center
}
+
.image-gallery-bullets .image-gallery-bullet {
appearance: none;
background-color: transparent;
@@ -217,160 +243,175 @@
margin: 0 5px;
outline: none;
padding: 5px;
- transition: all 0.2s ease-out;
+ transition: all .2s ease-out
}
-@media (max-width: 768px) {
+
+@media(max-width: 768px) {
.image-gallery-bullets .image-gallery-bullet {
margin: 0 3px;
- padding: 3px;
+ padding: 3px
}
}
-@media (max-width: 480px) {
+
+@media(max-width: 480px) {
.image-gallery-bullets .image-gallery-bullet {
- padding: 2.7px;
+ padding: 2.7px
}
}
+
.image-gallery-bullets .image-gallery-bullet:focus {
transform: scale(1.2);
background: #337ab7;
- border: 1px solid #337ab7;
+ border: 1px solid #337ab7
}
+
.image-gallery-bullets .image-gallery-bullet.active {
transform: scale(1.2);
border: 1px solid #fff;
- background: #fff;
+ background: #fff
}
-@media (hover: hover) and (pointer: fine) {
+
+@media(hover: hover)and (pointer: fine) {
.image-gallery-bullets .image-gallery-bullet:hover {
background: #337ab7;
- border: 1px solid #337ab7;
+ border: 1px solid #337ab7
}
+
.image-gallery-bullets .image-gallery-bullet.active:hover {
- background: #337ab7;
+ background: #337ab7
}
}
+
.image-gallery-thumbnails-wrapper {
- position: relative;
+ position: relative
}
+
.image-gallery-thumbnails-wrapper.thumbnails-swipe-horizontal {
- touch-action: pan-y;
+ touch-action: pan-y
}
+
.image-gallery-thumbnails-wrapper.thumbnails-swipe-vertical {
- touch-action: pan-x;
+ touch-action: pan-x
}
+
.image-gallery-thumbnails-wrapper.thumbnails-wrapper-rtl {
- direction: rtl;
+ direction: rtl
}
-.image-gallery-thumbnails-wrapper.left,
-.image-gallery-thumbnails-wrapper.right {
+
+.image-gallery-thumbnails-wrapper.image-gallery-thumbnails-left, .image-gallery-thumbnails-wrapper.image-gallery-thumbnails-right {
display: inline-block;
vertical-align: top;
- width: 100px;
+ width: 100px
}
-@media (max-width: 768px) {
- .image-gallery-thumbnails-wrapper.left,
- .image-gallery-thumbnails-wrapper.right {
- width: 81px;
+
+@media(max-width: 768px) {
+ .image-gallery-thumbnails-wrapper.image-gallery-thumbnails-left, .image-gallery-thumbnails-wrapper.image-gallery-thumbnails-right {
+ width: 81px
}
}
-.image-gallery-thumbnails-wrapper.left .image-gallery-thumbnails,
-.image-gallery-thumbnails-wrapper.right .image-gallery-thumbnails {
+
+.image-gallery-thumbnails-wrapper.image-gallery-thumbnails-left .image-gallery-thumbnails, .image-gallery-thumbnails-wrapper.image-gallery-thumbnails-right .image-gallery-thumbnails {
height: 100%;
width: 100%;
left: 0;
padding: 0;
position: absolute;
- top: 0;
+ top: 0
}
-.image-gallery-thumbnails-wrapper.left .image-gallery-thumbnails .image-gallery-thumbnail,
-.image-gallery-thumbnails-wrapper.right .image-gallery-thumbnails .image-gallery-thumbnail {
+
+.image-gallery-thumbnails-wrapper.image-gallery-thumbnails-left .image-gallery-thumbnails .image-gallery-thumbnail, .image-gallery-thumbnails-wrapper.image-gallery-thumbnails-right .image-gallery-thumbnails .image-gallery-thumbnail {
display: block;
margin-right: 0;
- padding: 0;
+ padding: 0
}
-.image-gallery-thumbnails-wrapper.left
- .image-gallery-thumbnails
- .image-gallery-thumbnail
- + .image-gallery-thumbnail,
-.image-gallery-thumbnails-wrapper.right
- .image-gallery-thumbnails
- .image-gallery-thumbnail
- + .image-gallery-thumbnail {
+
+.image-gallery-thumbnails-wrapper.image-gallery-thumbnails-left .image-gallery-thumbnails .image-gallery-thumbnail+.image-gallery-thumbnail, .image-gallery-thumbnails-wrapper.image-gallery-thumbnails-right .image-gallery-thumbnails .image-gallery-thumbnail+.image-gallery-thumbnail {
margin-left: 0;
- margin-top: 2px;
+ margin-top: 2px
}
-.image-gallery-thumbnails-wrapper.left,
-.image-gallery-thumbnails-wrapper.right {
- margin: 0 5px;
+
+.image-gallery-thumbnails-wrapper.image-gallery-thumbnails-left, .image-gallery-thumbnails-wrapper.image-gallery-thumbnails-right {
+ margin: 0 5px
}
-@media (max-width: 768px) {
- .image-gallery-thumbnails-wrapper.left,
- .image-gallery-thumbnails-wrapper.right {
- margin: 0 3px;
+
+@media(max-width: 768px) {
+ .image-gallery-thumbnails-wrapper.image-gallery-thumbnails-left, .image-gallery-thumbnails-wrapper.image-gallery-thumbnails-right {
+ margin: 0 3px
}
}
+
.image-gallery-thumbnails {
overflow: hidden;
- padding: 5px 0;
+ padding: 5px 0
}
-@media (max-width: 768px) {
+
+@media(max-width: 768px) {
.image-gallery-thumbnails {
- padding: 3px 0;
+ padding: 3px 0
}
}
+
.image-gallery-thumbnails .image-gallery-thumbnails-container {
cursor: pointer;
text-align: center;
- white-space: nowrap;
+ white-space: nowrap
}
+
.image-gallery-thumbnail {
display: inline-block;
border: 4px solid transparent;
- transition: border 0.3s ease-out;
+ transition: border .3s ease-out;
width: 100px;
background: transparent;
- padding: 0;
+ padding: 0
}
-@media (max-width: 768px) {
+
+@media(max-width: 768px) {
.image-gallery-thumbnail {
border: 3px solid transparent;
- width: 81px;
+ width: 81px
}
}
-.image-gallery-thumbnail + .image-gallery-thumbnail {
- margin-left: 2px;
+
+.image-gallery-thumbnail+.image-gallery-thumbnail {
+ margin-left: 2px
}
+
.image-gallery-thumbnail .image-gallery-thumbnail-inner {
display: block;
- position: relative;
+ position: relative
}
+
.image-gallery-thumbnail .image-gallery-thumbnail-image {
vertical-align: middle;
width: 100%;
- line-height: 0;
+ line-height: 0
}
-.image-gallery-thumbnail.active,
-.image-gallery-thumbnail:focus {
+
+.image-gallery-thumbnail.active, .image-gallery-thumbnail:focus {
outline: none;
- border: 4px solid #337ab7;
+ border: 4px solid #337ab7
}
-@media (max-width: 768px) {
- .image-gallery-thumbnail.active,
- .image-gallery-thumbnail:focus {
- border: 3px solid #337ab7;
+
+@media(max-width: 768px) {
+ .image-gallery-thumbnail.active, .image-gallery-thumbnail:focus {
+ border: 3px solid #337ab7
}
}
-@media (hover: hover) and (pointer: fine) {
+
+@media(hover: hover)and (pointer: fine) {
.image-gallery-thumbnail:hover {
outline: none;
- border: 4px solid #337ab7;
+ border: 4px solid #337ab7
}
}
-@media (hover: hover) and (pointer: fine) and (max-width: 768px) {
+
+@media(hover: hover)and (pointer: fine)and (max-width: 768px) {
.image-gallery-thumbnail:hover {
- border: 3px solid #337ab7;
+ border: 3px solid #337ab7
}
}
+
.image-gallery-thumbnail-label {
box-sizing: border-box;
color: #fff;
@@ -383,27 +424,30 @@
text-shadow: 0 2px 2px #1a1a1a;
transform: translateY(-50%);
white-space: normal;
- width: 100%;
+ width: 100%
}
-@media (max-width: 768px) {
+
+@media(max-width: 768px) {
.image-gallery-thumbnail-label {
- font-size: 0.8em;
- line-height: 0.8em;
+ font-size: .8em;
+ line-height: .8em
}
}
+
.image-gallery-index {
- background: rgba(0, 0, 0, 0.4);
+ background: rgba(0, 0, 0, .4);
color: #fff;
line-height: 1;
padding: 10px 20px;
position: absolute;
right: 0;
top: 0;
- z-index: 4;
+ z-index: 4
}
-@media (max-width: 768px) {
+
+@media(max-width: 768px) {
.image-gallery-index {
- font-size: 0.8em;
- padding: 5px 10px;
+ font-size: .8em;
+ padding: 5px 10px
}
}
diff --git a/yarn.lock b/yarn.lock
index 560ec9e54..01ab381f2 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -10893,10 +10893,10 @@ react-helmet-async@^1.3.0:
react-fast-compare "^3.2.0"
shallowequal "^1.1.0"
-react-image-gallery@1.2.8:
- version "1.2.8"
- resolved "https://registry.yarnpkg.com/react-image-gallery/-/react-image-gallery-1.2.8.tgz#8f41b0ade1c115a4f34621771c182af33d2d9a62"
- integrity sha512-7KbWcWChUMHRGyJHA/eH3injWF9/2WTlQXjV6fym1DqwrINSVIh1hLiqmujh/XANstW+osqSu5WFKKPy2F2gbA==
+react-image-gallery@1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/react-image-gallery/-/react-image-gallery-1.3.0.tgz#789035b12d8149bdd2ab296c155f989205077ffb"
+ integrity sha512-lKnPaOzxqSdujPFyl+CkVw0j1aYoNCHk61cvr1h7aahf5aWqmPcR9YhUB4cYrt5Tn5KHDaPUzYm5/+cX9WxzaA==
react-intl@6.8.4:
version "6.8.4"
From 86b148dcf1c26de0af99ad70202fcc52c2cda55c Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 2 Dec 2024 18:36:23 +0200
Subject: [PATCH 012/198] nodemon: update from v3.1.4 to v3.1.7
---
package.json | 2 +-
yarn.lock | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package.json b/package.json
index c11b99f02..35c7b4ab0 100644
--- a/package.json
+++ b/package.json
@@ -76,7 +76,7 @@
"concurrently": "^8.2.2",
"cross-env": "^7.0.3",
"inquirer": "^8.2.4",
- "nodemon": "^3.1.4",
+ "nodemon": "^3.1.7",
"prettier": "^1.18.2"
},
"resolutions": {
diff --git a/yarn.lock b/yarn.lock
index 01ab381f2..f30384dd1 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -9272,10 +9272,10 @@ node-releases@^2.0.5:
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503"
integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==
-nodemon@^3.1.4:
- version "3.1.4"
- resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-3.1.4.tgz#c34dcd8eb46a05723ccde60cbdd25addcc8725e4"
- integrity sha512-wjPBbFhtpJwmIeY2yP7QF+UKzPfltVGtfce1g/bB15/8vCGZj8uxD62b/b9M9/WVgme0NZudpownKN+c0plXlQ==
+nodemon@^3.1.7:
+ version "3.1.7"
+ resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-3.1.7.tgz#07cb1f455f8bece6a499e0d72b5e029485521a54"
+ integrity sha512-hLj7fuMow6f0lbB0cD14Lz2xNjwsyruH251Pk4t/yIitCFJbmY1myuLlHm/q06aST4jg6EgAh74PIBBrRqpVAQ==
dependencies:
chokidar "^3.5.2"
debug "^4"
From 9dbf4b1efaa85458a39ca9655cd8e0928672b483 Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 2 Dec 2024 18:38:21 +0200
Subject: [PATCH 013/198] sitemap: update from v7.1.1 to v8.0.0
---
package.json | 2 +-
yarn.lock | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package.json b/package.json
index 35c7b4ab0..33e7c0c0c 100644
--- a/package.json
+++ b/package.json
@@ -60,7 +60,7 @@
"seedrandom": "^3.0.5",
"sharetribe-flex-sdk": "^1.21.1",
"sharetribe-scripts": "7.0.0",
- "sitemap": "^7.1.1",
+ "sitemap": "^8.0.0",
"smoothscroll-polyfill": "^0.4.0",
"source-map-support": "^0.5.21",
"unified": "^9.2.2",
diff --git a/yarn.lock b/yarn.lock
index f30384dd1..617347360 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -11808,10 +11808,10 @@ sisteransi@^1.0.5:
resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==
-sitemap@^7.1.1:
- version "7.1.1"
- resolved "https://registry.yarnpkg.com/sitemap/-/sitemap-7.1.1.tgz#eeed9ad6d95499161a3eadc60f8c6dce4bea2bef"
- integrity sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==
+sitemap@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/sitemap/-/sitemap-8.0.0.tgz#eb6ea48f95787cd680b83683c555d6f6b5a903fd"
+ integrity sha512-+AbdxhM9kJsHtruUF39bwS/B0Fytw6Fr1o4ZAIAEqA6cke2xcoO2GleBw9Zw7nRzILVEgz7zBM5GiTJjie1G9A==
dependencies:
"@types/node" "^17.0.5"
"@types/sax" "^1.2.1"
From 5d001a6a9ab23e5bb7fbc71bfc4e3df6fabb1c12 Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 2 Dec 2024 18:39:39 +0200
Subject: [PATCH 014/198] Remove url pkg in favor of node:url. Remove
deprecated url.parse in favor of WhatWG URL API
---
package.json | 3 +--
server/dataLoader.js | 7 ++++---
yarn.lock | 18 ------------------
3 files changed, 5 insertions(+), 23 deletions(-)
diff --git a/package.json b/package.json
index 33e7c0c0c..dfb2f5d5c 100644
--- a/package.json
+++ b/package.json
@@ -63,8 +63,7 @@
"sitemap": "^8.0.0",
"smoothscroll-polyfill": "^0.4.0",
"source-map-support": "^0.5.21",
- "unified": "^9.2.2",
- "url": "^0.11.0"
+ "unified": "^9.2.2"
},
"devDependencies": {
"@testing-library/dom": "^10.4.0",
diff --git a/server/dataLoader.js b/server/dataLoader.js
index b02c314f7..b2c507e08 100644
--- a/server/dataLoader.js
+++ b/server/dataLoader.js
@@ -1,5 +1,6 @@
-const url = require('url');
+const { URL } = require('node:url');
const log = require('./log');
+const { getRootURL } = require('./api-util/rootURL');
const PREVENT_DATA_LOADING_IN_SSR = process.env.PREVENT_DATA_LOADING_IN_SSR === 'true';
@@ -19,7 +20,7 @@ exports.loadData = function(requestUrl, sdk, appInfo) {
mergeConfig,
fetchAppAssets,
} = appInfo;
- const { pathname, query } = url.parse(requestUrl);
+ const { pathname, search } = new URL(`${getRootURL()}${requestUrl}`);
let translations = {};
let hostedConfig = {};
@@ -43,7 +44,7 @@ exports.loadData = function(requestUrl, sdk, appInfo) {
return matchedRoutes.reduce((calls, match) => {
const { route, params } = match;
if (typeof route.loadData === 'function' && !route.auth) {
- calls.push(store.dispatch(route.loadData(params, query, config)));
+ calls.push(store.dispatch(route.loadData(params, search, config)));
}
return calls;
}, []);
diff --git a/yarn.lock b/yarn.lock
index 617347360..c218b72e8 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -10709,11 +10709,6 @@ pstree.remy@^1.1.8:
resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a"
integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==
-punycode@1.3.2:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
- integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
-
punycode@^2.1.0, punycode@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
@@ -10748,11 +10743,6 @@ query-string@^7.1.1:
split-on-first "^1.0.0"
strict-uri-encode "^2.0.0"
-querystring@0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
- integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
-
queue-microtask@^1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.2.tgz#abf64491e6ecf0f38a6502403d4cda04f372dfd3"
@@ -12882,14 +12872,6 @@ uri-js@^4.2.2:
dependencies:
punycode "^2.1.0"
-url@^0.11.0:
- version "0.11.0"
- resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
- integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
- dependencies:
- punycode "1.3.2"
- querystring "0.2.0"
-
use-sync-external-store@^1.0.0:
version "1.2.2"
resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz#c3b6390f3a30eba13200d2302dcdf1e7b57b2ef9"
From 59b981b8600db938b9562e6d64d77b02be5ebc9c Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 2 Dec 2024 18:41:19 +0200
Subject: [PATCH 015/198] jose: update from v5.2.0 to v5.9.6
---
package.json | 2 +-
yarn.lock | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package.json b/package.json
index dfb2f5d5c..eaf5ddf44 100644
--- a/package.json
+++ b/package.json
@@ -27,7 +27,7 @@
"final-form-arrays": "3.1.0",
"full-icu": "^1.4.0",
"helmet": "^7.1.0",
- "jose": "5.2.0",
+ "jose": "5.9.6",
"lodash": "^4.17.21",
"mapbox-gl-multitouch": "^1.0.3",
"moment": "^2.30.1",
diff --git a/yarn.lock b/yarn.lock
index c218b72e8..225a2be5e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -8541,10 +8541,10 @@ jest@^27.4.3:
import-local "^3.0.2"
jest-cli "^27.5.1"
-jose@5.2.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/jose/-/jose-5.2.0.tgz#d0ffd7f7e31253f633eefb190a930cd14a916995"
- integrity sha512-oW3PCnvyrcm1HMvGTzqjxxfnEs9EoFOFWi2HsEGhlFVOXxTE3K9GKWVMFoFw06yPUqwpvEWic1BmtUZBI/tIjw==
+jose@5.9.6:
+ version "5.9.6"
+ resolved "https://registry.yarnpkg.com/jose/-/jose-5.9.6.tgz#77f1f901d88ebdc405e57cce08d2a91f47521883"
+ integrity sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ==
js-cookie@^2.1.3:
version "2.2.1"
From 1f091abaa43b0d35d4e9a3c5cde799b6d33c026f Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 2 Dec 2024 18:42:33 +0200
Subject: [PATCH 016/198] react-helmet-async: update from v1.3.0 to v2.0.5
Note: this library does not have proper changelog nor release notes!
---
package.json | 2 +-
yarn.lock | 22 ++++++++++------------
2 files changed, 11 insertions(+), 13 deletions(-)
diff --git a/package.json b/package.json
index eaf5ddf44..42f62c756 100644
--- a/package.json
+++ b/package.json
@@ -45,7 +45,7 @@
"react-dom": "^17.0.2",
"react-final-form": "6.5.9",
"react-final-form-arrays": "3.1.4",
- "react-helmet-async": "^1.3.0",
+ "react-helmet-async": "^2.0.5",
"react-image-gallery": "1.3.0",
"react-intl": "6.8.4",
"react-moment-proptypes": "^1.8.1",
diff --git a/yarn.lock b/yarn.lock
index 225a2be5e..f9e7ff2a6 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -10661,7 +10661,7 @@ prompts@^2.4.2:
kleur "^3.0.3"
sisteransi "^1.0.5"
-prop-types@^15.6.2, prop-types@^15.7.2:
+prop-types@^15.6.2:
version "15.7.2"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
@@ -10853,10 +10853,10 @@ react-error-overlay@^6.0.11:
resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb"
integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==
-react-fast-compare@^3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb"
- integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==
+react-fast-compare@^3.2.2:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz#929a97a532304ce9fee4bcae44234f1ce2c21d49"
+ integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==
react-final-form-arrays@3.1.4:
version "3.1.4"
@@ -10872,15 +10872,13 @@ react-final-form@6.5.9:
dependencies:
"@babel/runtime" "^7.15.4"
-react-helmet-async@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-1.3.0.tgz#7bd5bf8c5c69ea9f02f6083f14ce33ef545c222e"
- integrity sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==
+react-helmet-async@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-2.0.5.tgz#cfc70cd7bb32df7883a8ed55502a1513747223ec"
+ integrity sha512-rYUYHeus+i27MvFE+Jaa4WsyBKGkL6qVgbJvSBoX8mbsWoABJXdEO0bZyi0F6i+4f0NuIb8AvqPMj3iXFHkMwg==
dependencies:
- "@babel/runtime" "^7.12.5"
invariant "^2.2.4"
- prop-types "^15.7.2"
- react-fast-compare "^3.2.0"
+ react-fast-compare "^3.2.2"
shallowequal "^1.1.0"
react-image-gallery@1.3.0:
From 06ee761ba3c7be1e298350be813d4f4208008314 Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 2 Dec 2024 18:46:05 +0200
Subject: [PATCH 017/198] React: update from v17.0.2 to v18.2.0
---
package.json | 4 ++--
yarn.lock | 29 +++++++++++++----------------
2 files changed, 15 insertions(+), 18 deletions(-)
diff --git a/package.json b/package.json
index 42f62c756..06c7c31b5 100644
--- a/package.json
+++ b/package.json
@@ -41,8 +41,8 @@
"prop-types": "^15.8.1",
"query-string": "^7.1.1",
"raf": "^3.4.0",
- "react": "^17.0.2",
- "react-dom": "^17.0.2",
+ "react": "18.2.0",
+ "react-dom": "18.2.0",
"react-final-form": "6.5.9",
"react-final-form-arrays": "3.1.4",
"react-helmet-async": "^2.0.5",
diff --git a/yarn.lock b/yarn.lock
index f9e7ff2a6..c03f75d83 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -10839,14 +10839,13 @@ react-dev-utils@^12.0.1:
strip-ansi "^6.0.1"
text-table "^0.2.0"
-react-dom@^17.0.2:
- version "17.0.2"
- resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23"
- integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==
+react-dom@18.2.0:
+ version "18.2.0"
+ resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d"
+ integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==
dependencies:
loose-envify "^1.1.0"
- object-assign "^4.1.1"
- scheduler "^0.20.2"
+ scheduler "^0.23.0"
react-error-overlay@^6.0.11:
version "6.0.11"
@@ -10979,13 +10978,12 @@ react-router@5.3.4:
tiny-invariant "^1.0.2"
tiny-warning "^1.0.0"
-react@^17.0.2:
- version "17.0.2"
- resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037"
- integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==
+react@18.2.0:
+ version "18.2.0"
+ resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5"
+ integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==
dependencies:
loose-envify "^1.1.0"
- object-assign "^4.1.1"
read-cache@^1.0.0:
version "1.0.0"
@@ -11458,13 +11456,12 @@ saxes@^5.0.1:
dependencies:
xmlchars "^2.2.0"
-scheduler@^0.20.2:
- version "0.20.2"
- resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91"
- integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==
+scheduler@^0.23.0:
+ version "0.23.2"
+ resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3"
+ integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==
dependencies:
loose-envify "^1.1.0"
- object-assign "^4.1.1"
schema-utils@2.7.0:
version "2.7.0"
From b6cdef5ca8e3a7add630b6922f5828183db6fa57 Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 2 Dec 2024 19:42:09 +0200
Subject: [PATCH 018/198] query-string: update from v7.1.1 to v7.1.3
---
package.json | 2 +-
yarn.lock | 12 ++++++------
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/package.json b/package.json
index 06c7c31b5..aa9781949 100644
--- a/package.json
+++ b/package.json
@@ -39,7 +39,7 @@
"path-to-regexp": "^6.2.1",
"postinstall-postinstall": "^2.1.0",
"prop-types": "^15.8.1",
- "query-string": "^7.1.1",
+ "query-string": "^7.1.3",
"raf": "^3.4.0",
"react": "18.2.0",
"react-dom": "18.2.0",
diff --git a/yarn.lock b/yarn.lock
index c03f75d83..271b38423 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5580,7 +5580,7 @@ decimal.js@^10.4.3:
resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23"
integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==
-decode-uri-component@^0.2.0:
+decode-uri-component@^0.2.2:
version "0.2.2"
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9"
integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==
@@ -10733,12 +10733,12 @@ qs@6.11.0:
dependencies:
side-channel "^1.0.4"
-query-string@^7.1.1:
- version "7.1.1"
- resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.1.tgz#754620669db978625a90f635f12617c271a088e1"
- integrity sha512-MplouLRDHBZSG9z7fpuAAcI7aAYjDLhtsiVZsevsfaHWDS2IDdORKbSd1kWUA+V4zyva/HZoSfpwnYMMQDhb0w==
+query-string@^7.1.3:
+ version "7.1.3"
+ resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.3.tgz#a1cf90e994abb113a325804a972d98276fe02328"
+ integrity sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==
dependencies:
- decode-uri-component "^0.2.0"
+ decode-uri-component "^0.2.2"
filter-obj "^1.1.0"
split-on-first "^1.0.0"
strict-uri-encode "^2.0.0"
From ada9a93f2b994e086c0e39a1dbb0d3f925a7351e Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 2 Dec 2024 19:56:41 +0200
Subject: [PATCH 019/198] path-to-regexp: update from v6.2.1 to v8.2.0 Update
tests related to path-to-regexp update - The path params need to be strings -
Thrown errors have been changed
---
package.json | 2 +-
src/components/NamedLink/NamedLink.test.js | 4 ++--
src/util/routes.test.js | 6 +++---
yarn.lock | 8 ++++----
4 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/package.json b/package.json
index aa9781949..c0a0ae69a 100644
--- a/package.json
+++ b/package.json
@@ -36,7 +36,7 @@
"passport-facebook": "^3.0.0",
"passport-google-oauth": "^2.0.0",
"patch-package": "^8.0.0",
- "path-to-regexp": "^6.2.1",
+ "path-to-regexp": "^8.2.0",
"postinstall-postinstall": "^2.1.0",
"prop-types": "^15.8.1",
"query-string": "^7.1.3",
diff --git a/src/components/NamedLink/NamedLink.test.js b/src/components/NamedLink/NamedLink.test.js
index e61702846..13b99b7e6 100644
--- a/src/components/NamedLink/NamedLink.test.js
+++ b/src/components/NamedLink/NamedLink.test.js
@@ -35,8 +35,8 @@ describe('NamedLink', () => {
});
it('should contain correct link', () => {
- const id = 12;
- const tree = render(
+ const id = '12';
+ render(
to ListingPage
diff --git a/src/util/routes.test.js b/src/util/routes.test.js
index 2ce2fd428..3a823cab9 100644
--- a/src/util/routes.test.js
+++ b/src/util/routes.test.js
@@ -26,14 +26,14 @@ describe('util/routes.js', () => {
createResourceLocatorString('ListingPage', routes, { id: '1234', slug: 'nice-listing' }, {})
).toEqual('/l/nice-listing/1234');
expect(() => createResourceLocatorString('ListingPage', routes, {}, {})).toThrowError(
- TypeError('Expected "slug" to be a string')
+ TypeError('Missing parameters: slug, id')
);
expect(() =>
createResourceLocatorString('ListingPage', routes, { id: '1234' }, {})
- ).toThrowError(TypeError('Expected "slug" to be a string'));
+ ).toThrowError(TypeError('Missing parameters: slug'));
expect(() =>
createResourceLocatorString('ListingPage', routes, { slug: 'nice-listing' }, {})
- ).toThrowError(TypeError('Expected "id" to be a string'));
+ ).toThrowError(TypeError('Missing parameters: id'));
});
it('should return meaningful strings with search parameters', () => {
diff --git a/yarn.lock b/yarn.lock
index 271b38423..be94aa817 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -9847,10 +9847,10 @@ path-to-regexp@^1.7.0:
dependencies:
isarray "0.0.1"
-path-to-regexp@^6.2.1:
- version "6.2.1"
- resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.1.tgz#d54934d6798eb9e5ef14e7af7962c945906918e5"
- integrity sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==
+path-to-regexp@^8.2.0:
+ version "8.2.0"
+ resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-8.2.0.tgz#73990cc29e57a3ff2a0d914095156df5db79e8b4"
+ integrity sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==
path-type@^4.0.0:
version "4.0.0"
From 36eb701605d03645a0bcd595d06d522769d506d0 Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 2 Dec 2024 20:02:14 +0200
Subject: [PATCH 020/198] inquirer: update from v8.2.4 to v8.2.6
---
package.json | 2 +-
yarn.lock | 19 ++++++++++++++-----
2 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/package.json b/package.json
index c0a0ae69a..440fde594 100644
--- a/package.json
+++ b/package.json
@@ -74,7 +74,7 @@
"chalk": "^v4.1.2",
"concurrently": "^8.2.2",
"cross-env": "^7.0.3",
- "inquirer": "^8.2.4",
+ "inquirer": "^8.2.6",
"nodemon": "^3.1.7",
"prettier": "^1.18.2"
},
diff --git a/yarn.lock b/yarn.lock
index be94aa817..da5929ad8 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -7488,10 +7488,10 @@ inline-style-parser@0.1.1:
resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1"
integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==
-inquirer@^8.2.4:
- version "8.2.4"
- resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.4.tgz#ddbfe86ca2f67649a67daa6f1051c128f684f0b4"
- integrity sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==
+inquirer@^8.2.6:
+ version "8.2.6"
+ resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.6.tgz#733b74888195d8d400a67ac332011b5fae5ea562"
+ integrity sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==
dependencies:
ansi-escapes "^4.2.1"
chalk "^4.1.1"
@@ -7507,7 +7507,7 @@ inquirer@^8.2.4:
string-width "^4.1.0"
strip-ansi "^6.0.0"
through "^2.3.6"
- wrap-ansi "^7.0.0"
+ wrap-ansi "^6.0.1"
internal-slot@^1.0.3:
version "1.0.3"
@@ -13404,6 +13404,15 @@ workbox-window@6.5.3:
"@types/trusted-types" "^2.0.2"
workbox-core "6.5.3"
+wrap-ansi@^6.0.1:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53"
+ integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
wrap-ansi@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
From 0287e7ffcf8241d9cb6e59c1d673f931cdb50c17 Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 2 Dec 2024 20:04:52 +0200
Subject: [PATCH 021/198] helmet: update from v7.1.0 to v8.0.0
---
package.json | 2 +-
yarn.lock | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package.json b/package.json
index 440fde594..78042ea7e 100644
--- a/package.json
+++ b/package.json
@@ -26,7 +26,7 @@
"final-form": "4.20.10",
"final-form-arrays": "3.1.0",
"full-icu": "^1.4.0",
- "helmet": "^7.1.0",
+ "helmet": "^8.0.0",
"jose": "5.9.6",
"lodash": "^4.17.21",
"mapbox-gl-multitouch": "^1.0.3",
diff --git a/yarn.lock b/yarn.lock
index da5929ad8..f570f60d0 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -7183,10 +7183,10 @@ he@^1.2.0:
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
-helmet@^7.1.0:
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/helmet/-/helmet-7.1.0.tgz#287279e00f8a3763d5dccbaf1e5ee39b8c3784ca"
- integrity sha512-g+HZqgfbpXdCkme/Cd/mZkV0aV3BZZZSugecH03kl38m/Kmdx8jKjBikpDj2cr+Iynv4KpYEviojNdTJActJAg==
+helmet@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/helmet/-/helmet-8.0.0.tgz#05370fb1953aa7b81bd0ddfa459221247be6ea5c"
+ integrity sha512-VyusHLEIIO5mjQPUI1wpOAEu+wl6Q0998jzTxqUYGE45xCIcAxy3MsbEK/yyJUJ3ADeMoB6MornPH6GMWAf+Pw==
history@^4.9.0:
version "4.9.0"
From ca9bbd6cc05a81162aeb943396d2834d0c778ee7 Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 2 Dec 2024 20:25:18 +0200
Subject: [PATCH 022/198] express: update from v4.19.2 to v4.21.1
---
package.json | 2 +-
yarn.lock | 204 ++++++++++++++++++++++++++++++++++++++++++++++-----
2 files changed, 186 insertions(+), 20 deletions(-)
diff --git a/package.json b/package.json
index 78042ea7e..eacca7710 100644
--- a/package.json
+++ b/package.json
@@ -21,7 +21,7 @@
"decimal.js": "^10.4.3",
"dotenv": "^10.0.0",
"dotenv-expand": "^5.1.0",
- "express": "^4.19.2",
+ "express": "^4.21.1",
"express-enforces-ssl": "^1.1.0",
"final-form": "4.20.10",
"final-form-arrays": "3.1.0",
diff --git a/yarn.lock b/yarn.lock
index f570f60d0..4d36d2d51 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4621,7 +4621,25 @@ body-parser@1.20.0:
type-is "~1.6.18"
unpipe "1.0.0"
-body-parser@1.20.2, body-parser@^1.20.2:
+body-parser@1.20.3:
+ version "1.20.3"
+ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6"
+ integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==
+ dependencies:
+ bytes "3.1.2"
+ content-type "~1.0.5"
+ debug "2.6.9"
+ depd "2.0.0"
+ destroy "1.2.0"
+ http-errors "2.0.0"
+ iconv-lite "0.4.24"
+ on-finished "2.4.1"
+ qs "6.13.0"
+ raw-body "2.5.2"
+ type-is "~1.6.18"
+ unpipe "1.0.0"
+
+body-parser@^1.20.2:
version "1.20.2"
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd"
integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==
@@ -4744,6 +4762,17 @@ call-bind@^1.0.0, call-bind@^1.0.2:
function-bind "^1.1.1"
get-intrinsic "^1.0.2"
+call-bind@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9"
+ integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==
+ dependencies:
+ es-define-property "^1.0.0"
+ es-errors "^1.3.0"
+ function-bind "^1.1.2"
+ get-intrinsic "^1.2.4"
+ set-function-length "^1.2.1"
+
callsites@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
@@ -5182,10 +5211,10 @@ cookie@0.5.0:
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b"
integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
-cookie@0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051"
- integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==
+cookie@0.7.1:
+ version "0.7.1"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.1.tgz#2f73c42142d5d5cf71310a74fc4ae61670e5dbc9"
+ integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==
core-js-compat@^3.21.0, core-js-compat@^3.22.1:
version "3.23.3"
@@ -5637,6 +5666,15 @@ defaults@^1.0.3:
dependencies:
clone "^1.0.2"
+define-data-property@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e"
+ integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
+ dependencies:
+ es-define-property "^1.0.0"
+ es-errors "^1.3.0"
+ gopd "^1.0.1"
+
define-lazy-prop@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f"
@@ -5919,6 +5957,11 @@ encodeurl@~1.0.2:
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
+encodeurl@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58"
+ integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==
+
enhanced-resolve@^5.15.0:
version "5.15.0"
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35"
@@ -6082,6 +6125,18 @@ es-abstract@^1.19.2, es-abstract@^1.19.5:
string.prototype.trimstart "^1.0.5"
unbox-primitive "^1.0.2"
+es-define-property@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845"
+ integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==
+ dependencies:
+ get-intrinsic "^1.2.4"
+
+es-errors@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
+ integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
+
es-get-iterator@^1.1.2:
version "1.1.3"
resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6"
@@ -6517,37 +6572,37 @@ express@^4.17.3:
utils-merge "1.0.1"
vary "~1.1.2"
-express@^4.19.2:
- version "4.19.2"
- resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465"
- integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==
+express@^4.21.1:
+ version "4.21.1"
+ resolved "https://registry.yarnpkg.com/express/-/express-4.21.1.tgz#9dae5dda832f16b4eec941a4e44aa89ec481b281"
+ integrity sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==
dependencies:
accepts "~1.3.8"
array-flatten "1.1.1"
- body-parser "1.20.2"
+ body-parser "1.20.3"
content-disposition "0.5.4"
content-type "~1.0.4"
- cookie "0.6.0"
+ cookie "0.7.1"
cookie-signature "1.0.6"
debug "2.6.9"
depd "2.0.0"
- encodeurl "~1.0.2"
+ encodeurl "~2.0.0"
escape-html "~1.0.3"
etag "~1.8.1"
- finalhandler "1.2.0"
+ finalhandler "1.3.1"
fresh "0.5.2"
http-errors "2.0.0"
- merge-descriptors "1.0.1"
+ merge-descriptors "1.0.3"
methods "~1.1.2"
on-finished "2.4.1"
parseurl "~1.3.3"
- path-to-regexp "0.1.7"
+ path-to-regexp "0.1.10"
proxy-addr "~2.0.7"
- qs "6.11.0"
+ qs "6.13.0"
range-parser "~1.2.1"
safe-buffer "5.2.1"
- send "0.18.0"
- serve-static "1.15.0"
+ send "0.19.0"
+ serve-static "1.16.2"
setprototypeof "1.2.0"
statuses "2.0.1"
type-is "~1.6.18"
@@ -6698,6 +6753,19 @@ finalhandler@1.2.0:
statuses "2.0.1"
unpipe "~1.0.0"
+finalhandler@1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019"
+ integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==
+ dependencies:
+ debug "2.6.9"
+ encodeurl "~2.0.0"
+ escape-html "~1.0.3"
+ on-finished "2.4.1"
+ parseurl "~1.3.3"
+ statuses "2.0.1"
+ unpipe "~1.0.0"
+
find-cache-dir@^3.3.1:
version "3.3.1"
resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880"
@@ -6940,6 +7008,17 @@ get-intrinsic@^1.1.3, get-intrinsic@^1.2.0:
has "^1.0.3"
has-symbols "^1.0.3"
+get-intrinsic@^1.2.4:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd"
+ integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==
+ dependencies:
+ es-errors "^1.3.0"
+ function-bind "^1.1.2"
+ has-proto "^1.0.1"
+ has-symbols "^1.0.3"
+ hasown "^2.0.0"
+
get-own-enumerable-property-symbols@^3.0.0:
version "3.0.2"
resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664"
@@ -7122,6 +7201,20 @@ has-property-descriptors@^1.0.0:
dependencies:
get-intrinsic "^1.1.1"
+has-property-descriptors@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854"
+ integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
+ dependencies:
+ es-define-property "^1.0.0"
+
+has-proto@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.1.0.tgz#deb10494cbbe8809bce168a3b961f42969f5ed43"
+ integrity sha512-QLdzI9IIO1Jg7f9GT1gXpPpXArAn6cS31R1eEZqz08Gc+uQ8/XiqHWt17Fiw+2p6oTTIq5GXEpQkAlA88YRl/Q==
+ dependencies:
+ call-bind "^1.0.7"
+
has-symbols@^1.0.0, has-symbols@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
@@ -7151,7 +7244,7 @@ has@^1.0.3:
dependencies:
function-bind "^1.1.1"
-hasown@^2.0.2:
+hasown@^2.0.0, hasown@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
@@ -9035,6 +9128,11 @@ merge-descriptors@1.0.1:
resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
+merge-descriptors@1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5"
+ integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==
+
merge-stream@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
@@ -9371,6 +9469,11 @@ object-inspect@^1.12.0:
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0"
integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==
+object-inspect@^1.13.1:
+ version "1.13.3"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.3.tgz#f14c183de51130243d6d18ae149375ff50ea488a"
+ integrity sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==
+
object-inspect@^1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67"
@@ -9835,6 +9938,11 @@ path-parse@^1.0.6, path-parse@^1.0.7:
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
+path-to-regexp@0.1.10:
+ version "0.1.10"
+ resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.10.tgz#67e9108c5c0551b9e5326064387de4763c4d5f8b"
+ integrity sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==
+
path-to-regexp@0.1.7:
version "0.1.7"
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
@@ -10733,6 +10841,13 @@ qs@6.11.0:
dependencies:
side-channel "^1.0.4"
+qs@6.13.0:
+ version "6.13.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906"
+ integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==
+ dependencies:
+ side-channel "^1.0.6"
+
query-string@^7.1.3:
version "7.1.3"
resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.3.tgz#a1cf90e994abb113a325804a972d98276fe02328"
@@ -11602,6 +11717,25 @@ send@0.18.0:
range-parser "~1.2.1"
statuses "2.0.1"
+send@0.19.0:
+ version "0.19.0"
+ resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8"
+ integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==
+ dependencies:
+ debug "2.6.9"
+ depd "2.0.0"
+ destroy "1.2.0"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ fresh "0.5.2"
+ http-errors "2.0.0"
+ mime "1.6.0"
+ ms "2.1.3"
+ on-finished "2.4.1"
+ range-parser "~1.2.1"
+ statuses "2.0.1"
+
serialize-javascript@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa"
@@ -11646,6 +11780,28 @@ serve-static@1.15.0:
parseurl "~1.3.3"
send "0.18.0"
+serve-static@1.16.2:
+ version "1.16.2"
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296"
+ integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==
+ dependencies:
+ encodeurl "~2.0.0"
+ escape-html "~1.0.3"
+ parseurl "~1.3.3"
+ send "0.19.0"
+
+set-function-length@^1.2.1:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449"
+ integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==
+ dependencies:
+ define-data-property "^1.1.4"
+ es-errors "^1.3.0"
+ function-bind "^1.1.2"
+ get-intrinsic "^1.2.4"
+ gopd "^1.0.1"
+ has-property-descriptors "^1.0.2"
+
setprototypeof@1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
@@ -11771,6 +11927,16 @@ side-channel@^1.0.4:
get-intrinsic "^1.0.2"
object-inspect "^1.9.0"
+side-channel@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2"
+ integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==
+ dependencies:
+ call-bind "^1.0.7"
+ es-errors "^1.3.0"
+ get-intrinsic "^1.2.4"
+ object-inspect "^1.13.1"
+
signal-exit@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
From 14f169e27bee96e0bdbb9634a3004dd8a167f778 Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 2 Dec 2024 20:35:37 +0200
Subject: [PATCH 023/198] Remove React 16 related polyfills (Map, Set, raf)
---
package.json | 2 --
src/index.js | 6 ------
yarn.lock | 7 +------
3 files changed, 1 insertion(+), 14 deletions(-)
diff --git a/package.json b/package.json
index eacca7710..adc0cf71d 100644
--- a/package.json
+++ b/package.json
@@ -16,7 +16,6 @@
"classnames": "^2.5.1",
"compression": "^1.7.4",
"cookie-parser": "^1.4.6",
- "core-js": "^3.22.5",
"cors": "^2.8.5",
"decimal.js": "^10.4.3",
"dotenv": "^10.0.0",
@@ -40,7 +39,6 @@
"postinstall-postinstall": "^2.1.0",
"prop-types": "^15.8.1",
"query-string": "^7.1.3",
- "raf": "^3.4.0",
"react": "18.2.0",
"react-dom": "18.2.0",
"react-final-form": "6.5.9",
diff --git a/src/index.js b/src/index.js
index 8bd56e4ad..df51e6ada 100644
--- a/src/index.js
+++ b/src/index.js
@@ -11,12 +11,6 @@
* Note that this file is required for the build process.
*/
-// React 16 depends on the collection types Map and Set, as well as requestAnimationFrame.
-// https://reactjs.org/docs/javascript-environment-requirements.html
-import 'core-js/features/map';
-import 'core-js/features/set';
-import 'raf/polyfill';
-
// Dependency libs
import React from 'react';
import ReactDOM from 'react-dom';
diff --git a/yarn.lock b/yarn.lock
index 4d36d2d51..adde1857c 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5247,11 +5247,6 @@ core-js@^3.19.2:
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.23.3.tgz#3b977612b15da6da0c9cc4aec487e8d24f371112"
integrity sha512-oAKwkj9xcWNBAvGbT//WiCdOMpb9XQG92/Fe3ABFM/R16BsHgePG00mFOgKf7IsCtfj8tA1kHtf/VwErhriz5Q==
-core-js@^3.22.5:
- version "3.22.5"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.22.5.tgz#a5f5a58e663d5c0ebb4e680cd7be37536fb2a9cf"
- integrity sha512-VP/xYuvJ0MJWRAobcmQ8F2H6Bsn+s7zqAAjFaHGBMc5AQm7zaelhD1LGduFn2EehEcQcU+br6t+fwbpQ5d1ZWA==
-
core-util-is@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
@@ -10873,7 +10868,7 @@ quick-lru@^5.1.1:
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932"
integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==
-raf@^3.4.0, raf@^3.4.1:
+raf@^3.4.1:
version "3.4.1"
resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39"
integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==
From 4e1226f40388a642c78db195c865ed4d2d7aa298 Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 2 Dec 2024 21:14:37 +0200
Subject: [PATCH 024/198] React: update to v18.3.1
---
package.json | 4 ++--
yarn.lock | 20 ++++++++++----------
2 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/package.json b/package.json
index adc0cf71d..6f5e725fb 100644
--- a/package.json
+++ b/package.json
@@ -39,8 +39,8 @@
"postinstall-postinstall": "^2.1.0",
"prop-types": "^15.8.1",
"query-string": "^7.1.3",
- "react": "18.2.0",
- "react-dom": "18.2.0",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1",
"react-final-form": "6.5.9",
"react-final-form-arrays": "3.1.4",
"react-helmet-async": "^2.0.5",
diff --git a/yarn.lock b/yarn.lock
index adde1857c..7b66d7122 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -10949,13 +10949,13 @@ react-dev-utils@^12.0.1:
strip-ansi "^6.0.1"
text-table "^0.2.0"
-react-dom@18.2.0:
- version "18.2.0"
- resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d"
- integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==
+react-dom@^18.3.1:
+ version "18.3.1"
+ resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4"
+ integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==
dependencies:
loose-envify "^1.1.0"
- scheduler "^0.23.0"
+ scheduler "^0.23.2"
react-error-overlay@^6.0.11:
version "6.0.11"
@@ -11088,10 +11088,10 @@ react-router@5.3.4:
tiny-invariant "^1.0.2"
tiny-warning "^1.0.0"
-react@18.2.0:
- version "18.2.0"
- resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5"
- integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==
+react@^18.3.1:
+ version "18.3.1"
+ resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891"
+ integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==
dependencies:
loose-envify "^1.1.0"
@@ -11566,7 +11566,7 @@ saxes@^5.0.1:
dependencies:
xmlchars "^2.2.0"
-scheduler@^0.23.0:
+scheduler@^0.23.2:
version "0.23.2"
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3"
integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==
From 92f6eb236110cf37d69f04afd918dd21a263e60a Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 2 Dec 2024 21:16:43 +0200
Subject: [PATCH 025/198] React v18.3.1: avoid warning about key being among
spread props
---
.../AuthenticationPage/ConfirmSignupForm/ConfirmSignupForm.js | 4 ++--
src/containers/AuthenticationPage/SignupForm/SignupForm.js | 4 ++--
.../ProfileSettingsForm/ProfileSettingsForm.js | 4 ++--
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/containers/AuthenticationPage/ConfirmSignupForm/ConfirmSignupForm.js b/src/containers/AuthenticationPage/ConfirmSignupForm/ConfirmSignupForm.js
index bddfa8d15..c9a64e360 100644
--- a/src/containers/AuthenticationPage/ConfirmSignupForm/ConfirmSignupForm.js
+++ b/src/containers/AuthenticationPage/ConfirmSignupForm/ConfirmSignupForm.js
@@ -162,8 +162,8 @@ const ConfirmSignupFormComponent = props => (
{showCustomUserFields ? (
- {userFieldProps.map(fieldProps => (
-
+ {userFieldProps.map(({ key, ...fieldProps }) => (
+
))}
) : null}
diff --git a/src/containers/AuthenticationPage/SignupForm/SignupForm.js b/src/containers/AuthenticationPage/SignupForm/SignupForm.js
index bf70201e9..a0162d604 100644
--- a/src/containers/AuthenticationPage/SignupForm/SignupForm.js
+++ b/src/containers/AuthenticationPage/SignupForm/SignupForm.js
@@ -200,8 +200,8 @@ const SignupFormComponent = props => (
{showCustomUserFields ? (
- {userFieldProps.map(fieldProps => (
-
+ {userFieldProps.map(({ key, ...fieldProps}) => (
+
))}
) : null}
diff --git a/src/containers/ProfileSettingsPage/ProfileSettingsForm/ProfileSettingsForm.js b/src/containers/ProfileSettingsPage/ProfileSettingsForm/ProfileSettingsForm.js
index 7fa89f052..cbb010b9c 100644
--- a/src/containers/ProfileSettingsPage/ProfileSettingsForm/ProfileSettingsForm.js
+++ b/src/containers/ProfileSettingsPage/ProfileSettingsForm/ProfileSettingsForm.js
@@ -368,8 +368,8 @@ class ProfileSettingsFormComponent extends Component {
- {userFieldProps.map(fieldProps => (
-
+ {userFieldProps.map(({ key, ...fieldProps}) => (
+
))}
{submitError}
From e60f857b5f527e3dd87a58b1f5bfff7e2c736d98 Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 2 Dec 2024 21:25:44 +0200
Subject: [PATCH 026/198] cookie-parser: update from v1.4.6 to v1.4.7
---
package.json | 2 +-
yarn.lock | 20 ++++++++++----------
2 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/package.json b/package.json
index 6f5e725fb..9c6087aba 100644
--- a/package.json
+++ b/package.json
@@ -15,7 +15,7 @@
"body-parser": "^1.20.2",
"classnames": "^2.5.1",
"compression": "^1.7.4",
- "cookie-parser": "^1.4.6",
+ "cookie-parser": "^1.4.7",
"cors": "^2.8.5",
"decimal.js": "^10.4.3",
"dotenv": "^10.0.0",
diff --git a/yarn.lock b/yarn.lock
index 7b66d7122..6ec0de268 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5188,12 +5188,12 @@ convert-source-map@^1.6.0, convert-source-map@^1.7.0:
dependencies:
safe-buffer "~5.1.1"
-cookie-parser@^1.4.6:
- version "1.4.6"
- resolved "https://registry.yarnpkg.com/cookie-parser/-/cookie-parser-1.4.6.tgz#3ac3a7d35a7a03bbc7e365073a26074824214594"
- integrity sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==
+cookie-parser@^1.4.7:
+ version "1.4.7"
+ resolved "https://registry.yarnpkg.com/cookie-parser/-/cookie-parser-1.4.7.tgz#e2125635dfd766888ffe90d60c286404fa0e7b26"
+ integrity sha512-nGUvgXnotP3BsjiLX2ypbQnWoGUPIIfHQNZkkC668ntrzGWEZVW70HDEB1qnNGMicPje6EttlIgzo51YSwNQGw==
dependencies:
- cookie "0.4.1"
+ cookie "0.7.2"
cookie-signature "1.0.6"
cookie-signature@1.0.6:
@@ -5201,11 +5201,6 @@ cookie-signature@1.0.6:
resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
-cookie@0.4.1:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1"
- integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==
-
cookie@0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b"
@@ -5216,6 +5211,11 @@ cookie@0.7.1:
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.1.tgz#2f73c42142d5d5cf71310a74fc4ae61670e5dbc9"
integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==
+cookie@0.7.2:
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7"
+ integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==
+
core-js-compat@^3.21.0, core-js-compat@^3.22.1:
version "3.23.3"
resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.23.3.tgz#7d8503185be76bb6d8d592c291a4457a8e440aa9"
From 2b3ec1a2b435f00e68233925e91599dd8d11bb9c Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 2 Dec 2024 21:30:11 +0200
Subject: [PATCH 027/198] compression: update from v1.7.4 to v1.7.5
---
package.json | 2 +-
yarn.lock | 30 ++++++++++++++++++++++++++++++
2 files changed, 31 insertions(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 9c6087aba..cfdca2601 100644
--- a/package.json
+++ b/package.json
@@ -14,7 +14,7 @@
"basic-auth": "^2.0.1",
"body-parser": "^1.20.2",
"classnames": "^2.5.1",
- "compression": "^1.7.4",
+ "compression": "^1.7.5",
"cookie-parser": "^1.4.7",
"cors": "^2.8.5",
"decimal.js": "^10.4.3",
diff --git a/yarn.lock b/yarn.lock
index 6ec0de268..602c4ebac 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5114,6 +5114,13 @@ compressible@~2.0.16:
dependencies:
mime-db ">= 1.40.0 < 2"
+compressible@~2.0.18:
+ version "2.0.18"
+ resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba"
+ integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==
+ dependencies:
+ mime-db ">= 1.43.0 < 2"
+
compression@^1.7.4:
version "1.7.4"
resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f"
@@ -5127,6 +5134,19 @@ compression@^1.7.4:
safe-buffer "5.1.2"
vary "~1.1.2"
+compression@^1.7.5:
+ version "1.7.5"
+ resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.5.tgz#fdd256c0a642e39e314c478f6c2cd654edd74c93"
+ integrity sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==
+ dependencies:
+ bytes "3.1.2"
+ compressible "~2.0.18"
+ debug "2.6.9"
+ negotiator "~0.6.4"
+ on-headers "~1.0.2"
+ safe-buffer "5.2.1"
+ vary "~1.1.2"
+
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
@@ -9182,6 +9202,11 @@ mime-db@1.52.0:
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
+"mime-db@>= 1.43.0 < 2":
+ version "1.53.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.53.0.tgz#3cb63cd820fc29896d9d4e8c32ab4fcd74ccb447"
+ integrity sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==
+
mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.17:
version "2.1.27"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f"
@@ -9337,6 +9362,11 @@ negotiator@0.6.3:
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
+negotiator@~0.6.4:
+ version "0.6.4"
+ resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.4.tgz#777948e2452651c570b712dd01c23e262713fff7"
+ integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==
+
neo-async@^2.6.2:
version "2.6.2"
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
From 647f05b54c3742a8ba6af0bae0519f4b8eb30f26 Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 2 Dec 2024 21:31:54 +0200
Subject: [PATCH 028/198] body-parser: update from v1.20.2 to v1.20.3
---
package.json | 2 +-
yarn.lock | 27 +--------------------------
2 files changed, 2 insertions(+), 27 deletions(-)
diff --git a/package.json b/package.json
index cfdca2601..bee06216c 100644
--- a/package.json
+++ b/package.json
@@ -12,7 +12,7 @@
"@sentry/node": "^8.26.0",
"autosize": "^5.0.1",
"basic-auth": "^2.0.1",
- "body-parser": "^1.20.2",
+ "body-parser": "^1.20.3",
"classnames": "^2.5.1",
"compression": "^1.7.5",
"cookie-parser": "^1.4.7",
diff --git a/yarn.lock b/yarn.lock
index 602c4ebac..626e9d9ac 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4621,7 +4621,7 @@ body-parser@1.20.0:
type-is "~1.6.18"
unpipe "1.0.0"
-body-parser@1.20.3:
+body-parser@1.20.3, body-parser@^1.20.3:
version "1.20.3"
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6"
integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==
@@ -4639,24 +4639,6 @@ body-parser@1.20.3:
type-is "~1.6.18"
unpipe "1.0.0"
-body-parser@^1.20.2:
- version "1.20.2"
- resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd"
- integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==
- dependencies:
- bytes "3.1.2"
- content-type "~1.0.5"
- debug "2.6.9"
- depd "2.0.0"
- destroy "1.2.0"
- http-errors "2.0.0"
- iconv-lite "0.4.24"
- on-finished "2.4.1"
- qs "6.11.0"
- raw-body "2.5.2"
- type-is "~1.6.18"
- unpipe "1.0.0"
-
bonjour-service@^1.0.11:
version "1.0.13"
resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.0.13.tgz#4ac003dc1626023252d58adf2946f57e5da450c1"
@@ -10859,13 +10841,6 @@ qs@6.10.3:
dependencies:
side-channel "^1.0.4"
-qs@6.11.0:
- version "6.11.0"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a"
- integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==
- dependencies:
- side-channel "^1.0.4"
-
qs@6.13.0:
version "6.13.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906"
From 08cae43d860e08b1837110b3e945b75644fc785c Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 2 Dec 2024 21:50:19 +0200
Subject: [PATCH 029/198] @babel-runtime: remove an old peer-dependency
requirement
---
package.json | 1 -
yarn.lock | 2 +-
2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/package.json b/package.json
index bee06216c..89afd6953 100644
--- a/package.json
+++ b/package.json
@@ -4,7 +4,6 @@
"private": true,
"license": "Apache-2.0",
"dependencies": {
- "@babel/runtime": "^7.17.9",
"@loadable/component": "^5.16.4",
"@loadable/server": "^5.16.5",
"@mapbox/polyline": "^1.1.1",
diff --git a/yarn.lock b/yarn.lock
index 626e9d9ac..73e7c1313 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1993,7 +1993,7 @@
dependencies:
regenerator-runtime "^0.14.0"
-"@babel/runtime@^7.12.13", "@babel/runtime@^7.17.9":
+"@babel/runtime@^7.12.13":
version "7.17.9"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72"
integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==
From 7004868858dc30279fb241c00e7b898f44f8c59d Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 2 Dec 2024 21:58:18 +0200
Subject: [PATCH 030/198] @mapbox/polyline: update from v1.1.1 to v1.2.1
---
package.json | 2 +-
yarn.lock | 80 +++++++++++++++++++++++++++++-----------------------
2 files changed, 46 insertions(+), 36 deletions(-)
diff --git a/package.json b/package.json
index 89afd6953..11abc65b0 100644
--- a/package.json
+++ b/package.json
@@ -6,7 +6,7 @@
"dependencies": {
"@loadable/component": "^5.16.4",
"@loadable/server": "^5.16.5",
- "@mapbox/polyline": "^1.1.1",
+ "@mapbox/polyline": "^1.2.1",
"@sentry/browser": "^8.26.0",
"@sentry/node": "^8.26.0",
"autosize": "^5.0.1",
diff --git a/yarn.lock b/yarn.lock
index 73e7c1313..3cbcd4d20 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2711,12 +2711,12 @@
dependencies:
unist-util-visit "^1.4.1"
-"@mapbox/polyline@^1.1.1":
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/@mapbox/polyline/-/polyline-1.1.1.tgz#ab96e5e6936f4847a4894e14558daf43e40e3bd2"
- integrity sha512-z9Sl7NYzsEIrAza658H92mc0OvpBjQwjp7Snv4xREKhsCMat7m1IKdWJMjQ5opiPYa0veMf7kCaSd1yx55AhmQ==
+"@mapbox/polyline@^1.2.1":
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/@mapbox/polyline/-/polyline-1.2.1.tgz#1eecce5e8c0d9e6dfc718b225e8e9f03591ea636"
+ integrity sha512-sn0V18O3OzW4RCcPoUIVDWvEGQaBNH9a0y5lgqrf5hUycyw1CzrhEoxV5irzrMNXKCkw1xRsZXcaVbsVZggHXA==
dependencies:
- meow "^6.1.1"
+ meow "^9.0.0"
"@nodelib/fs.scandir@2.1.4":
version "2.1.4"
@@ -4782,7 +4782,7 @@ camelcase-keys@^6.2.2:
map-obj "^4.0.0"
quick-lru "^4.0.1"
-camelcase@^5.0.0, camelcase@^5.3.1:
+camelcase@^5.3.1:
version "5.3.1"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
@@ -7314,6 +7314,13 @@ hosted-git-info@^2.1.4:
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9"
integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==
+hosted-git-info@^4.0.1:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224"
+ integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==
+ dependencies:
+ lru-cache "^6.0.0"
+
hpack.js@^2.1.6:
version "2.1.6"
resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2"
@@ -7738,7 +7745,7 @@ is-core-module@^2.0.0:
dependencies:
has "^1.0.3"
-is-core-module@^2.13.0:
+is-core-module@^2.13.0, is-core-module@^2.5.0:
version "2.15.1"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37"
integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==
@@ -9103,22 +9110,23 @@ memfs@^3.1.2, memfs@^3.4.3:
dependencies:
fs-monkey "^1.0.3"
-meow@^6.1.1:
- version "6.1.1"
- resolved "https://registry.yarnpkg.com/meow/-/meow-6.1.1.tgz#1ad64c4b76b2a24dfb2f635fddcadf320d251467"
- integrity sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==
+meow@^9.0.0:
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/meow/-/meow-9.0.0.tgz#cd9510bc5cac9dee7d03c73ee1f9ad959f4ea364"
+ integrity sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==
dependencies:
"@types/minimist" "^1.2.0"
camelcase-keys "^6.2.2"
+ decamelize "^1.2.0"
decamelize-keys "^1.1.0"
hard-rejection "^2.1.0"
- minimist-options "^4.0.2"
- normalize-package-data "^2.5.0"
+ minimist-options "4.1.0"
+ normalize-package-data "^3.0.0"
read-pkg-up "^7.0.1"
redent "^3.0.0"
trim-newlines "^3.0.0"
- type-fest "^0.13.1"
- yargs-parser "^18.1.3"
+ type-fest "^0.18.0"
+ yargs-parser "^20.2.3"
merge-descriptors@1.0.1:
version "1.0.1"
@@ -9258,7 +9266,7 @@ minimatch@^5.0.1:
dependencies:
brace-expansion "^2.0.1"
-minimist-options@^4.0.2:
+minimist-options@4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619"
integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==
@@ -9410,6 +9418,16 @@ normalize-package-data@^2.5.0:
semver "2 || 3 || 4 || 5"
validate-npm-package-license "^3.0.1"
+normalize-package-data@^3.0.0:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e"
+ integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==
+ dependencies:
+ hosted-git-info "^4.0.1"
+ is-core-module "^2.5.0"
+ semver "^7.3.4"
+ validate-npm-package-license "^3.0.1"
+
normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
@@ -11672,6 +11690,11 @@ semver@^7.3.2:
dependencies:
lru-cache "^6.0.0"
+semver@^7.3.4, semver@^7.5.2:
+ version "7.6.3"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143"
+ integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
+
semver@^7.3.5, semver@^7.3.7:
version "7.3.7"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f"
@@ -11686,11 +11709,6 @@ semver@^7.3.8:
dependencies:
lru-cache "^6.0.0"
-semver@^7.5.2:
- version "7.6.3"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143"
- integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
-
semver@^7.5.3:
version "7.5.4"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
@@ -12780,16 +12798,16 @@ type-fest@^0.11.0:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1"
integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==
-type-fest@^0.13.1:
- version "0.13.1"
- resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934"
- integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==
-
type-fest@^0.16.0:
version "0.16.0"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860"
integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==
+type-fest@^0.18.0:
+ version "0.18.1"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f"
+ integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==
+
type-fest@^0.20.2:
version "0.20.2"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
@@ -13653,15 +13671,7 @@ yaml@^2.2.2:
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2"
integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==
-yargs-parser@^18.1.3:
- version "18.1.3"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
- integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
- dependencies:
- camelcase "^5.0.0"
- decamelize "^1.2.0"
-
-yargs-parser@^20.2.2:
+yargs-parser@^20.2.2, yargs-parser@^20.2.3:
version "20.2.9"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
From a7b43c69daa9ea35dddeb034511af540cff0e01f Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 2 Dec 2024 22:07:02 +0200
Subject: [PATCH 031/198] bfj: update from v7.0.2 to v9.1.1
---
package.json | 2 +-
yarn.lock | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 55 insertions(+), 2 deletions(-)
diff --git a/package.json b/package.json
index 11abc65b0..a3b23d8e9 100644
--- a/package.json
+++ b/package.json
@@ -67,7 +67,7 @@
"@testing-library/jest-dom": "^5.16.2",
"@testing-library/react": "^16.0.1",
"@testing-library/user-event": "^13.5.0",
- "bfj": "^7.0.2",
+ "bfj": "^9.1.1",
"chalk": "^v4.1.2",
"concurrently": "^8.2.2",
"cross-env": "^7.0.3",
diff --git a/yarn.lock b/yarn.lock
index 3cbcd4d20..4ef1cf58c 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4579,6 +4579,16 @@ bfj@^7.0.2:
hoopy "^0.1.4"
tryer "^1.0.1"
+bfj@^9.1.1:
+ version "9.1.1"
+ resolved "https://registry.yarnpkg.com/bfj/-/bfj-9.1.1.tgz#913f7cbf87b14ac63975e89f21c64ad18e83c502"
+ integrity sha512-f3uU0MzqtuOvnB62ZUyzr2qqHVy5zFu3KV9H0MBVacdb7hsRxKSa18KtiwLZCF/5oRE3O4udraOxOC3F3A+kzA==
+ dependencies:
+ check-types "^11.2.3"
+ hoopy "^0.1.4"
+ jsonpath "^1.1.1"
+ tryer "^1.0.1"
+
big.js@^5.2.2:
version "5.2.2"
resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
@@ -4885,6 +4895,11 @@ check-types@^11.1.1:
resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.1.2.tgz#86a7c12bf5539f6324eb0e70ca8896c0e38f3e2f"
integrity sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ==
+check-types@^11.2.3:
+ version "11.2.3"
+ resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.2.3.tgz#1ffdf68faae4e941fce252840b1787b8edc93b71"
+ integrity sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg==
+
chokidar@^3.4.2, chokidar@^3.5.3:
version "3.5.3"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
@@ -6195,6 +6210,18 @@ escape-string-regexp@^4.0.0:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
+escodegen@^1.8.1:
+ version "1.14.3"
+ resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503"
+ integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==
+ dependencies:
+ esprima "^4.0.1"
+ estraverse "^4.2.0"
+ esutils "^2.0.2"
+ optionator "^0.8.1"
+ optionalDependencies:
+ source-map "~0.6.1"
+
escodegen@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd"
@@ -6427,6 +6454,11 @@ espree@^9.3.2:
acorn-jsx "^5.3.2"
eslint-visitor-keys "^3.3.0"
+esprima@1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.2.2.tgz#76a0fd66fcfe154fd292667dc264019750b1657b"
+ integrity sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==
+
esprima@^4.0.0, esprima@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
@@ -6446,7 +6478,7 @@ esrecurse@^4.3.0:
dependencies:
estraverse "^5.2.0"
-estraverse@^4.1.1:
+estraverse@^4.1.1, estraverse@^4.2.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
@@ -8774,6 +8806,15 @@ jsonify@^0.0.1:
resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978"
integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==
+jsonpath@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/jsonpath/-/jsonpath-1.1.1.tgz#0ca1ed8fb65bb3309248cc9d5466d12d5b0b9901"
+ integrity sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==
+ dependencies:
+ esprima "1.2.2"
+ static-eval "2.0.2"
+ underscore "1.12.1"
+
jsonpointer@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.0.tgz#f802669a524ec4805fa7389eadbc9921d5dc8072"
@@ -12156,6 +12197,13 @@ stackframe@^1.1.1:
resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303"
integrity sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==
+static-eval@2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/static-eval/-/static-eval-2.0.2.tgz#2d1759306b1befa688938454c546b7871f806a42"
+ integrity sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==
+ dependencies:
+ escodegen "^1.8.1"
+
statuses@2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
@@ -12873,6 +12921,11 @@ undefsafe@^2.0.5:
resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c"
integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==
+underscore@1.12.1:
+ version "1.12.1"
+ resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.12.1.tgz#7bb8cc9b3d397e201cf8553336d262544ead829e"
+ integrity sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==
+
unicode-canonical-property-names-ecmascript@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818"
From 65f9f9a081e13455df43669f11a0380710283e6b Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 2 Dec 2024 15:55:20 +0200
Subject: [PATCH 032/198] ListingPageCarousel: do not render ActionBar before
mounting (hydration issue)
---
src/containers/ListingPage/ListingPageCarousel.js | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/src/containers/ListingPage/ListingPageCarousel.js b/src/containers/ListingPage/ListingPageCarousel.js
index 378a630ae..7d466ebf5 100644
--- a/src/containers/ListingPage/ListingPageCarousel.js
+++ b/src/containers/ListingPage/ListingPageCarousel.js
@@ -1,4 +1,4 @@
-import React, { useState } from 'react';
+import React, { useState, useEffect } from 'react';
import { array, arrayOf, bool, func, shape, string, oneOf, object } from 'prop-types';
import { compose } from 'redux';
import { connect } from 'react-redux';
@@ -94,6 +94,11 @@ export const ListingPageComponent = props => {
const [inquiryModalOpen, setInquiryModalOpen] = useState(
props.inquiryModalOpenForListingId === props.params.id
);
+ const [mounted, setMounted] = useState(false);
+
+ useEffect(() => {
+ setMounted(true);
+ }, []);
const {
isAuthenticated,
@@ -313,7 +318,7 @@ export const ListingPageComponent = props => {
}>
- {currentListing.id && noPayoutDetailsSetWithOwnListing ? (
+ {mounted && currentListing.id && noPayoutDetailsSetWithOwnListing ? (
{
currentUser={currentUser}
/>
) : null}
- {currentListing.id ? (
+ {mounted && currentListing.id ? (
Date: Thu, 5 Dec 2024 15:06:09 +0200
Subject: [PATCH 033/198] Remove the new react-dom/server lib from the main
code-chunk
---
server/index.js | 7 +++---
server/renderer.js | 62 +++++++++++++++++++++++-----------------------
src/app.js | 12 ++++++---
3 files changed, 43 insertions(+), 38 deletions(-)
diff --git a/server/index.js b/server/index.js
index be46cb1bf..f9ede88cb 100644
--- a/server/index.js
+++ b/server/index.js
@@ -192,7 +192,7 @@ const noCacheHeaders = {
'Cache-control': 'no-cache, no-store, must-revalidate',
};
-app.get('*', (req, res) => {
+app.get('*', async (req, res) => {
if (req.url.startsWith('/static/')) {
// The express.static middleware only handles static resources
// that it finds, otherwise passes them through. However, we don't
@@ -226,8 +226,9 @@ app.get('*', (req, res) => {
.loadData(req.url, sdk, appInfo)
.then(data => {
const cspNonce = cspEnabled ? res.locals.cspNonce : null;
- const html = renderer.render(req.url, context, data, renderApp, webExtractor, cspNonce);
-
+ return renderer.render(req.url, context, data, renderApp, webExtractor, cspNonce);
+ })
+ .then(html => {
if (dev) {
const debugData = {
url: req.url,
diff --git a/server/renderer.js b/server/renderer.js
index 14a6b2852..8fa31ce4c 100644
--- a/server/renderer.js
+++ b/server/renderer.js
@@ -97,44 +97,44 @@ exports.render = function(requestUrl, context, data, renderApp, webExtractor, no
const collectWebChunks = webExtractor.collectChunks.bind(webExtractor);
// Render the app with given route, preloaded state, hosted translations.
- const { head, body } = renderApp(
+ return renderApp(
requestUrl,
context,
preloadedState,
translations,
hostedConfig,
collectWebChunks
- );
+ ).then(({ head, body }) => {
+ // Preloaded state needs to be passed for client side too.
+ // For security reasons we ensure that preloaded state is considered as a string
+ // by replacing '<' character with its unicode equivalent.
+ // http://redux.js.org/docs/recipes/ServerRendering.html#security-considerations
+ const serializedState = JSON.stringify(preloadedState, replacer).replace(/window.__PRELOADED_STATE__ = ${JSON.stringify(
+ serializedState
+ )};
+ `;
+ // Add nonce to server-side rendered script tags
+ const nonceParamMaybe = nonce ? { nonce } : {};
- // At this point the serializedState is a string, the second
- // JSON.stringify wraps it within double quotes and escapes the
- // contents properly so the value can be injected in the script tag
- // as a string.
- const nonceMaybe = nonce ? `nonce="${nonce}"` : '';
- const preloadedStateScript = `
-
- `;
- // Add nonce to server-side rendered script tags
- const nonceParamMaybe = nonce ? { nonce } : {};
-
- return template({
- htmlAttributes: head.htmlAttributes.toString(),
- title: head.title.toString(),
- link: head.link.toString(),
- meta: head.meta.toString(),
- script: head.script.toString(),
- preloadedStateScript,
- ssrStyles: webExtractor.getStyleTags(),
- ssrLinks: webExtractor.getLinkTags(),
- ssrScripts: webExtractor.getScriptTags(nonceParamMaybe),
- body,
+ return template({
+ htmlAttributes: head.htmlAttributes.toString(),
+ title: head.title.toString(),
+ link: head.link.toString(),
+ meta: head.meta.toString(),
+ script: head.script.toString(),
+ preloadedStateScript,
+ ssrStyles: webExtractor.getStyleTags(),
+ ssrLinks: webExtractor.getLinkTags(),
+ ssrScripts: webExtractor.getScriptTags(nonceParamMaybe),
+ body,
+ });
});
};
diff --git a/src/app.js b/src/app.js
index deca4eca4..7e972e7b6 100644
--- a/src/app.js
+++ b/src/app.js
@@ -1,6 +1,5 @@
import React from 'react';
import { any, string } from 'prop-types';
-import ReactDOMServer from 'react-dom/server';
import { HelmetProvider } from 'react-helmet-async';
import { BrowserRouter, StaticRouter } from 'react-router-dom';
@@ -340,7 +339,12 @@ export const renderApp = (
hostedConfig={hostedConfig}
/>
);
- const body = ReactDOMServer.renderToString(WithChunks);
- const { helmet: head } = helmetContext;
- return { head, body };
+
+ // Let's keep react-dom/server out of the main code-chunk.
+ return import('react-dom/server').then(mod => {
+ const { default: ReactDOMServer } = mod;
+ const body = ReactDOMServer.renderToString(WithChunks);
+ const { helmet: head } = helmetContext;
+ return { head, body };
+ });
};
From 10ee0e0e890d9b4fb347a79dc693a488a94efa0d Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Thu, 5 Dec 2024 15:24:52 +0200
Subject: [PATCH 034/198] Component's key can't be spread from collection of
props
---
.../AuthenticationPage/SignupForm/SignupForm.js | 2 +-
.../ProfileSettingsForm/ProfileSettingsForm.js | 2 +-
.../SearchPage/SearchMap/SearchMapWithMapbox.js | 8 +++++---
3 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/src/containers/AuthenticationPage/SignupForm/SignupForm.js b/src/containers/AuthenticationPage/SignupForm/SignupForm.js
index a0162d604..e078521a9 100644
--- a/src/containers/AuthenticationPage/SignupForm/SignupForm.js
+++ b/src/containers/AuthenticationPage/SignupForm/SignupForm.js
@@ -200,7 +200,7 @@ const SignupFormComponent = props => (
{showCustomUserFields ? (
- {userFieldProps.map(({ key, ...fieldProps}) => (
+ {userFieldProps.map(({ key, ...fieldProps }) => (
))}
diff --git a/src/containers/ProfileSettingsPage/ProfileSettingsForm/ProfileSettingsForm.js b/src/containers/ProfileSettingsPage/ProfileSettingsForm/ProfileSettingsForm.js
index cbb010b9c..e91af4d88 100644
--- a/src/containers/ProfileSettingsPage/ProfileSettingsForm/ProfileSettingsForm.js
+++ b/src/containers/ProfileSettingsPage/ProfileSettingsForm/ProfileSettingsForm.js
@@ -368,7 +368,7 @@ class ProfileSettingsFormComponent extends Component {
- {userFieldProps.map(({ key, ...fieldProps}) => (
+ {userFieldProps.map(({ key, ...fieldProps }) => (
))}
diff --git a/src/containers/SearchPage/SearchMap/SearchMapWithMapbox.js b/src/containers/SearchPage/SearchMap/SearchMapWithMapbox.js
index ec07e6d51..a9f588e1b 100644
--- a/src/containers/SearchPage/SearchMap/SearchMapWithMapbox.js
+++ b/src/containers/SearchPage/SearchMap/SearchMapWithMapbox.js
@@ -461,9 +461,11 @@ class SearchMapWithMapbox extends Component {
onClick={this.props.onClick}
>
{this.currentMarkers.map(m => {
+ const { key, ...compProps } = m.componentProps || {};
+
// Remove existing activeLabel classes and add it only to the correct container
m.markerContainer.classList.remove(css.activeLabel);
- if (activeListingId && activeListingId.uuid === m.componentProps.key) {
+ if (activeListingId && activeListingId.uuid === key) {
m.markerContainer.classList.add(css.activeLabel);
}
@@ -476,12 +478,12 @@ class SearchMapWithMapbox extends Component {
// Create component portals for correct marker containers
if (isMapReadyForMarkers && m.type === 'price') {
return ReactDOM.createPortal(
-
,
+
,
portalDOMContainer
);
} else if (isMapReadyForMarkers && m.type === 'group') {
return ReactDOM.createPortal(
-
,
+
,
portalDOMContainer
);
}
From 92970384630332137c3b6404454938cecb5ae9e1 Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 9 Dec 2024 18:59:48 +0200
Subject: [PATCH 035/198] src/index.js: use react-dom/client and React v18
rendering
---
src/index.js | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/src/index.js b/src/index.js
index df51e6ada..22d6ad2b3 100644
--- a/src/index.js
+++ b/src/index.js
@@ -13,7 +13,7 @@
// Dependency libs
import React from 'react';
-import ReactDOM from 'react-dom';
+import ReactDOMClient from 'react-dom/client';
import { loadableReady } from '@loadable/component';
// Import default styles before other CSS-related modules are imported
@@ -52,6 +52,7 @@ const render = (store, shouldHydrate) => {
const cdnAssetsVersion = state.hostedAssets.version;
const authInfoLoaded = state.auth.authInfoLoaded;
const info = authInfoLoaded ? Promise.resolve({}) : store.dispatch(authInfo());
+
info
.then(() => {
// Ensure that Loadable Components is ready
@@ -75,14 +76,17 @@ const render = (store, shouldHydrate) => {
}, {});
if (shouldHydrate) {
- ReactDOM.hydrate(
- ,
- document.getElementById('root')
+ const container = document.getElementById('root');
+
+ ReactDOMClient.hydrateRoot(
+ container,
+
);
} else {
- ReactDOM.render(
- ,
- document.getElementById('root')
+ const container = document.getElementById('root');
+ const root = ReactDOMClient.createRoot(container);
+ root.render(
+
);
}
})
From 1d890428d03cf9c531f86e1003a9a2b78317e6be Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 9 Dec 2024 19:00:43 +0200
Subject: [PATCH 036/198] src/index.js: add logging for onRecoverableError
callback option The onRecoverableError cb is called with hydration errors.
---
src/index.js | 3 ++-
src/util/log.js | 37 +++++++++++++++++++++++++++++++++++++
2 files changed, 39 insertions(+), 1 deletion(-)
diff --git a/src/index.js b/src/index.js
index 22d6ad2b3..4d69a72be 100644
--- a/src/index.js
+++ b/src/index.js
@@ -80,7 +80,8 @@ const render = (store, shouldHydrate) => {
ReactDOMClient.hydrateRoot(
container,
-
+ ,
+ { onRecoverableError: log.onRecoverableError }
);
} else {
const container = document.getElementById('root');
diff --git a/src/util/log.js b/src/util/log.js
index 68e5e3f6e..4c9ed1661 100644
--- a/src/util/log.js
+++ b/src/util/log.js
@@ -103,3 +103,40 @@ export const error = (e, code, data) => {
printAPIErrorsAsConsoleTable(apiErrors);
}
};
+
+const setCause = (error, cause) => {
+ const seenErrors = new WeakSet();
+
+ const setCauseIfNoExistingCause = (error, cause) => {
+ if (seenErrors.has(error)) {
+ return;
+ }
+ if (error.cause) {
+ seenErrors.add(error);
+ return setCauseIfNoExistingCause(error.cause, cause);
+ }
+ error.cause = cause;
+ };
+
+ setCauseIfNoExistingCause(error, cause);
+};
+
+export const onRecoverableError = (error, componentStack) => {
+ let data = {};
+
+ if (componentStack) {
+ // Generating this synthetic error allows monitoring services to apply sourcemaps
+ // to unminify the stacktrace and make it readable.
+ const errorBoundaryError = new Error(error.message);
+ errorBoundaryError.name = `React ErrorBoundary ${errorBoundaryError.name}`;
+ errorBoundaryError.stack = componentStack;
+
+ // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause
+ setCause(error, errorBoundaryError);
+
+ data.componentStack = componentStack;
+ }
+
+ // Replace with your error monitoring service.
+ error(error, 'recoverable-error', data);
+};
From 6b037b1e5617c8da05f5950a1fff123a024d4343 Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 9 Dec 2024 19:03:03 +0200
Subject: [PATCH 037/198] Page: refactor attribute order This is a no-op: it
just helped readability when checking attributes on DOM rendered by Chrome
---
src/components/Page/Page.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/components/Page/Page.js b/src/components/Page/Page.js
index ba1fc2bed..15a85fd06 100644
--- a/src/components/Page/Page.js
+++ b/src/components/Page/Page.js
@@ -243,7 +243,7 @@ class PageComponent extends Component {
const styles = getCustomCSSPropertiesFromConfig(config.branding);
return (
-
+
Date: Mon, 9 Dec 2024 19:11:48 +0200
Subject: [PATCH 038/198] OrderPanel: hydration should not render the actual
form. Reason: the visibility of those forms depends on the responsive layout
and CSR must match SSR.
---
src/components/OrderPanel/OrderPanel.js | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/components/OrderPanel/OrderPanel.js b/src/components/OrderPanel/OrderPanel.js
index 66464c4fd..5ab499265 100644
--- a/src/components/OrderPanel/OrderPanel.js
+++ b/src/components/OrderPanel/OrderPanel.js
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { useEffect, useState } from 'react';
import { compose } from 'redux';
import { withRouter } from 'react-router-dom';
import {
@@ -164,6 +164,10 @@ const PriceMaybe = props => {
};
const OrderPanel = props => {
+ const [mounted, setMounted] = useState(false);
+ useEffect(() => {
+ setMounted(true);
+ }, []);
const {
rootClassName,
className,
@@ -225,11 +229,11 @@ const OrderPanel = props => {
const isBooking = isBookingProcess(processName);
const shouldHaveBookingTime = isBooking && [LINE_ITEM_HOUR].includes(lineItemUnitType);
- const showBookingTimeForm = shouldHaveBookingTime && !isClosed && timeZone;
+ const showBookingTimeForm = mounted && shouldHaveBookingTime && !isClosed && timeZone;
const shouldHaveBookingDates =
isBooking && [LINE_ITEM_DAY, LINE_ITEM_NIGHT].includes(lineItemUnitType);
- const showBookingDatesForm = shouldHaveBookingDates && !isClosed && timeZone;
+ const showBookingDatesForm = mounted && shouldHaveBookingDates && !isClosed && timeZone;
// The listing resource has a relationship: `currentStock`,
// which you should include when making API calls.
@@ -239,9 +243,9 @@ const OrderPanel = props => {
// Show form only when stock is fully loaded. This avoids "Out of stock" UI by
// default before all data has been downloaded.
- const showProductOrderForm = isPurchase && typeof currentStock === 'number';
+ const showProductOrderForm = mounted && isPurchase && typeof currentStock === 'number';
- const showInquiryForm = processName === INQUIRY_PROCESS_NAME;
+ const showInquiryForm = mounted && processName === INQUIRY_PROCESS_NAME;
const supportedProcessesInfo = getSupportedProcessesInfo();
const isKnownProcess = supportedProcessesInfo.map(info => info.name).includes(processName);
From a21166386c5e16bf19ccd38ffc829175c58455c9 Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 9 Dec 2024 19:15:26 +0200
Subject: [PATCH 039/198] ListingPage/SectionHero: hydration must produce the
same HTML structure as SSR. The issue: ActionBars are currentUser-specific
info.
---
src/containers/ListingPage/SectionHero.js | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/src/containers/ListingPage/SectionHero.js b/src/containers/ListingPage/SectionHero.js
index 5e5b256db..813685853 100644
--- a/src/containers/ListingPage/SectionHero.js
+++ b/src/containers/ListingPage/SectionHero.js
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { useEffect, useState } from 'react';
import { FormattedMessage } from '../../util/reactIntl';
import { ResponsiveImage, Modal } from '../../components';
@@ -9,6 +9,11 @@ import ActionBarMaybe from './ActionBarMaybe';
import css from './ListingPage.module.css';
const SectionHero = props => {
+ const [mounted, setMounted] = useState(false);
+ useEffect(() => {
+ setMounted(true);
+ }, []);
+
const {
title,
listing,
@@ -40,7 +45,7 @@ const SectionHero = props => {
return (
- {listing.id && isOwnListing ? (
+ {mounted && listing.id && isOwnListing ? (
e.stopPropagation()} className={css.actionBarContainerForHeroLayout}>
{noPayoutDetailsSetWithOwnListing ? (
Date: Mon, 9 Dec 2024 19:17:16 +0200
Subject: [PATCH 040/198] ListingPage/UserCard: hydration must produce the same
HTML structure as SSR. The issue: contact link can't be rendered for the
author of the listing.
---
.../ListingPage/UserCard/UserCard.js | 24 ++++++++++++-------
1 file changed, 16 insertions(+), 8 deletions(-)
diff --git a/src/containers/ListingPage/UserCard/UserCard.js b/src/containers/ListingPage/UserCard/UserCard.js
index b1b530547..ee8fbdb64 100644
--- a/src/containers/ListingPage/UserCard/UserCard.js
+++ b/src/containers/ListingPage/UserCard/UserCard.js
@@ -1,4 +1,4 @@
-import React, { useState } from 'react';
+import React, { useEffect, useState } from 'react';
import { bool, func, oneOfType, string } from 'prop-types';
import truncate from 'lodash/truncate';
import classNames from 'classnames';
@@ -71,6 +71,11 @@ ExpandableBio.propTypes = {
};
const UserCard = props => {
+ const [mounted, setMounted] = useState(false);
+ useEffect(() => {
+ setMounted(true);
+ }, []);
+
const { rootClassName, className, user, currentUser, onContactUser, showContact } = props;
const userIsCurrentUser = user && user.type === 'currentUser';
@@ -92,7 +97,9 @@ const UserCard = props => {
});
const separator =
- isCurrentUser || !showContact ? null : • ;
+ (mounted && isCurrentUser) || !showContact ? null : (
+ •
+ );
const contact = showContact ? (
{
);
- const editProfileDesktop = isCurrentUser ? (
-
-
-
- ) : null;
+ const editProfileDesktop =
+ mounted && isCurrentUser ? (
+
+
+
+ ) : null;
const links = ensuredUser.id ? (
@@ -125,7 +133,7 @@ const UserCard = props => {
{separator}
- {isCurrentUser ? editProfileMobile : contact}
+ {mounted && isCurrentUser ? editProfileMobile : contact}
) : null;
From 4d8112911d521205d155fecba7f44e5c445e9c73 Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 9 Dec 2024 19:19:19 +0200
Subject: [PATCH 041/198] ProfilePage: hydration must produce the same HTML
structure as SSR. The issue: window.matchMedia can't be used on the first
pass after mounting.
---
src/containers/ProfilePage/ProfilePage.js | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/src/containers/ProfilePage/ProfilePage.js b/src/containers/ProfilePage/ProfilePage.js
index b7ad77f0c..2c54fa68e 100644
--- a/src/containers/ProfilePage/ProfilePage.js
+++ b/src/containers/ProfilePage/ProfilePage.js
@@ -194,6 +194,11 @@ export const CustomUserFields = props => {
};
export const MainContent = props => {
+ const [mounted, setMounted] = useState(false);
+ useEffect(() => {
+ setMounted(true);
+ }, []);
+
const {
userShowError,
bio,
@@ -211,9 +216,10 @@ export const MainContent = props => {
const hasListings = listings.length > 0;
const hasMatchMedia = typeof window !== 'undefined' && window?.matchMedia;
- const isMobileLayout = hasMatchMedia
- ? window.matchMedia(`(max-width: ${MAX_MOBILE_SCREEN_WIDTH}px)`)?.matches
- : true;
+ const isMobileLayout =
+ mounted && hasMatchMedia
+ ? window.matchMedia(`(max-width: ${MAX_MOBILE_SCREEN_WIDTH}px)`)?.matches
+ : true;
const hasBio = !!bio;
const bioWithLinks = richText(bio, {
From 2ff014956806771db50c1f1055dfe885b5e8b79a Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 9 Dec 2024 19:21:20 +0200
Subject: [PATCH 042/198] StyleguidePage: hydration must produce the same HTML
structure as SSR. The issue: those example components might be CSR only.
---
.../StyleguidePage/StyleguidePage.js | 62 +++++++++++--------
1 file changed, 37 insertions(+), 25 deletions(-)
diff --git a/src/containers/StyleguidePage/StyleguidePage.js b/src/containers/StyleguidePage/StyleguidePage.js
index 9df4ecba2..10627da37 100644
--- a/src/containers/StyleguidePage/StyleguidePage.js
+++ b/src/containers/StyleguidePage/StyleguidePage.js
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { useEffect, useState } from 'react';
import PropTypes from 'prop-types';
import isEmpty from 'lodash/isEmpty';
import classNames from 'classnames';
@@ -194,21 +194,21 @@ const examplesFor = (examples, group, componentName, exampleName) => {
});
};
-const StyleguidePage = props => {
- const { params, raw } = props;
+const Examples = props => {
+ const [mounted, setMounted] = useState(false);
+ useEffect(() => {
+ setMounted(true);
+ }, []);
+
+ if (!mounted) {
+ return null;
+ }
+
+ const { flattened, params, raw } = props;
const group = params.group ? decodeURIComponent(params.group) : ALL;
const componentName = params.component || ALL;
const exampleName = params.example || ALL;
- const flattened = flatExamples(allExamples);
- const groups = flattened.reduce((result, ex) => {
- if (ex.group && !result.includes(ex.group)) {
- return result.concat(ex.group);
- }
- return result;
- }, []);
- groups.sort();
- const selectedGroup = isEmpty(params) ? ALL : params.group;
const examples = examplesFor(flattened, group, componentName, exampleName);
// Raw examples are rendered without any wrapper
@@ -225,18 +225,30 @@ const StyleguidePage = props => {
);
}
- const html =
- examples.length > 0 ? (
-
- {examples.map(ex => (
-
- ))}
-
- ) : (
-
- No examples with filter: {componentName}/{exampleName}
-
- );
+ return examples.length > 0 ? (
+
+ {examples.map(ex => (
+
+ ))}
+
+ ) : (
+
+ No examples with filter: {componentName}/{exampleName}
+
+ );
+};
+
+const StyleguidePage = props => {
+ const { params, raw } = props;
+ const flattened = flatExamples(allExamples);
+ const groups = flattened.reduce((result, ex) => {
+ if (ex.group && !result.includes(ex.group)) {
+ return result.concat(ex.group);
+ }
+ return result;
+ }, []);
+ groups.sort();
+ const selectedGroup = isEmpty(params) ? ALL : params.group;
const prefixIndex = selectedGroup ? selectedGroup.indexOf(PREFIX_SEPARATOR) : -1;
const selectedGroupWithoutPrefix =
@@ -260,7 +272,7 @@ const StyleguidePage = props => {
? `Selected category: ${selectedGroupWithoutPrefix}`
: `Component`}
- {html}
+
);
From 461fcfe91bb840208dfef323ba6b17ed8430aefa Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 9 Dec 2024 19:27:50 +0200
Subject: [PATCH 043/198] Topbar: refactor - turn the class component to
functional component.
---
.../TopbarContainer/Topbar/Topbar.js | 384 ++++++++----------
1 file changed, 170 insertions(+), 214 deletions(-)
diff --git a/src/containers/TopbarContainer/Topbar/Topbar.js b/src/containers/TopbarContainer/Topbar/Topbar.js
index e70dbb3dd..e2e63bb0f 100644
--- a/src/containers/TopbarContainer/Topbar/Topbar.js
+++ b/src/containers/TopbarContainer/Topbar/Topbar.js
@@ -1,4 +1,4 @@
-import React, { Component } from 'react';
+import React, { Component, useEffect, useState } from 'react';
import { array, arrayOf, bool, func, number, object, shape, string } from 'prop-types';
import pickBy from 'lodash/pickBy';
import classNames from 'classnames';
@@ -30,15 +30,13 @@ import css from './Topbar.module.css';
const MAX_MOBILE_SCREEN_WIDTH = 1024;
-const redirectToURLWithModalState = (props, modalStateParam) => {
- const { history, location } = props;
+const redirectToURLWithModalState = (history, location, modalStateParam) => {
const { pathname, search, state } = location;
const searchString = `?${stringify({ [modalStateParam]: 'open', ...parse(search) })}`;
history.push(`${pathname}${searchString}`, state);
};
-const redirectToURLWithoutModalState = (props, modalStateParam) => {
- const { history, location } = props;
+const redirectToURLWithoutModalState = (history, location, modalStateParam) => {
const { pathname, search, state } = location;
const queryParams = pickBy(parse(search), (v, k) => {
return k !== modalStateParam;
@@ -129,36 +127,36 @@ GenericError.propTypes = {
show: bool.isRequired,
};
-class TopbarComponent extends Component {
- constructor(props) {
- super(props);
- this.handleMobileMenuOpen = this.handleMobileMenuOpen.bind(this);
- this.handleMobileMenuClose = this.handleMobileMenuClose.bind(this);
- this.handleMobileSearchOpen = this.handleMobileSearchOpen.bind(this);
- this.handleMobileSearchClose = this.handleMobileSearchClose.bind(this);
- this.handleSubmit = this.handleSubmit.bind(this);
- this.handleLogout = this.handleLogout.bind(this);
- }
-
- handleMobileMenuOpen() {
- redirectToURLWithModalState(this.props, 'mobilemenu');
- }
-
- handleMobileMenuClose() {
- redirectToURLWithoutModalState(this.props, 'mobilemenu');
- }
-
- handleMobileSearchOpen() {
- redirectToURLWithModalState(this.props, 'mobilesearch');
- }
-
- handleMobileSearchClose() {
- redirectToURLWithoutModalState(this.props, 'mobilesearch');
- }
-
- handleSubmit(values) {
- const { currentSearchParams } = this.props;
- const { history, config, routeConfiguration } = this.props;
+const TopbarComponent = props => {
+ const {
+ className,
+ rootClassName,
+ desktopClassName,
+ mobileRootClassName,
+ mobileClassName,
+ isAuthenticated,
+ isLoggedInAs,
+ authScopes = [],
+ authInProgress,
+ currentUser,
+ currentUserHasListings,
+ currentUserHasOrders,
+ currentPage,
+ notificationCount = 0,
+ intl,
+ history,
+ location,
+ onManageDisableScrolling,
+ onResendVerificationEmail,
+ sendVerificationEmailInProgress,
+ sendVerificationEmailError,
+ showGenericError,
+ config,
+ routeConfiguration,
+ } = props;
+
+ const handleSubmit = values => {
+ const { currentSearchParams, history, config, routeConfiguration } = props;
const topbarSearchParams = () => {
if (isMainSearchTypeKeywords(config)) {
@@ -180,10 +178,10 @@ class TopbarComponent extends Component {
...topbarSearchParams(),
};
history.push(createResourceLocatorString('SearchPage', routeConfiguration, {}, searchParams));
- }
+ };
- handleLogout() {
- const { onLogout, history, routeConfiguration } = this.props;
+ const handleLogout = () => {
+ const { onLogout, history, routeConfiguration } = props;
onLogout().then(() => {
const path = pathByRouteName('LandingPage', routeConfiguration);
@@ -197,197 +195,155 @@ class TopbarComponent extends Component {
console.log('logged out'); // eslint-disable-line
});
- }
+ };
- render() {
- const {
- className,
- rootClassName,
- desktopClassName,
- mobileRootClassName,
- mobileClassName,
- isAuthenticated,
- isLoggedInAs,
- authScopes,
- authInProgress,
- currentUser,
- currentUserHasListings,
- currentUserHasOrders,
- currentPage,
- notificationCount,
- intl,
- location,
- onManageDisableScrolling,
- onResendVerificationEmail,
- sendVerificationEmailInProgress,
- sendVerificationEmailError,
- showGenericError,
- config,
- routeConfiguration,
- } = this.props;
-
- const { mobilemenu, mobilesearch, keywords, address, origin, bounds } = parse(location.search, {
- latlng: ['origin'],
- latlngBounds: ['bounds'],
- });
+ const { mobilemenu, mobilesearch, keywords, address, origin, bounds } = parse(location.search, {
+ latlng: ['origin'],
+ latlngBounds: ['bounds'],
+ });
- // Custom links are sorted so that group="primary" are always at the beginning of the list.
- const sortedCustomLinks = sortCustomLinks(config.topbar?.customLinks);
- const customLinks = getResolvedCustomLinks(sortedCustomLinks, routeConfiguration);
- const resolvedCurrentPage = currentPage || getResolvedCurrentPage(location, routeConfiguration);
+ // Custom links are sorted so that group="primary" are always at the beginning of the list.
+ const sortedCustomLinks = sortCustomLinks(config.topbar?.customLinks);
+ const customLinks = getResolvedCustomLinks(sortedCustomLinks, routeConfiguration);
+ const resolvedCurrentPage = currentPage || getResolvedCurrentPage(location, routeConfiguration);
+
+ const notificationDot = notificationCount > 0 ?
: null;
+
+ const hasMatchMedia = typeof window !== 'undefined' && window?.matchMedia;
+ const isMobileLayout = hasMatchMedia
+ ? window.matchMedia(`(max-width: ${MAX_MOBILE_SCREEN_WIDTH}px)`)?.matches
+ : true;
+ const isMobileMenuOpen = isMobileLayout && mobilemenu === 'open';
+ const isMobileSearchOpen = isMobileLayout && mobilesearch === 'open';
+
+ const mobileMenu = (
+
+ );
- const notificationDot = notificationCount > 0 ?
: null;
+ const topbarSearcInitialValues = () => {
+ if (isMainSearchTypeKeywords(config)) {
+ return { keywords };
+ }
- const hasMatchMedia = typeof window !== 'undefined' && window?.matchMedia;
- const isMobileLayout = hasMatchMedia
- ? window.matchMedia(`(max-width: ${MAX_MOBILE_SCREEN_WIDTH}px)`)?.matches
- : true;
- const isMobileMenuOpen = isMobileLayout && mobilemenu === 'open';
- const isMobileSearchOpen = isMobileLayout && mobilesearch === 'open';
+ // Only render current search if full place object is available in the URL params
+ const locationFieldsPresent = isOriginInUse(config)
+ ? address && origin && bounds
+ : address && bounds;
+ return {
+ location: locationFieldsPresent
+ ? {
+ search: address,
+ selectedPlace: { address, origin, bounds },
+ }
+ : null,
+ };
+ };
+ const initialSearchFormValues = topbarSearcInitialValues();
- const mobileMenu = (
-
+
- );
-
- const topbarSearcInitialValues = () => {
- if (isMainSearchTypeKeywords(config)) {
- return { keywords };
- }
-
- // Only render current search if full place object is available in the URL params
- const locationFieldsPresent = isOriginInUse(config)
- ? address && origin && bounds
- : address && bounds;
- return {
- location: locationFieldsPresent
- ? {
- search: address,
- selectedPlace: { address, origin, bounds },
- }
- : null,
- };
- };
- const initialSearchFormValues = topbarSearcInitialValues();
-
- const classes = classNames(rootClassName || css.root, className);
-
- return (
-
-
+ redirectToURLWithModalState(history, location, 'mobilemenu')}
+ title={intl.formatMessage({ id: 'Topbar.menuIcon' })}
+ >
+
+ {notificationDot}
+
+
+ redirectToURLWithModalState(history, location, 'mobilesearch')}
+ title={intl.formatMessage({ id: 'Topbar.searchIcon' })}
+ >
+
+
+
+
+
-
-
-
- {notificationDot}
-
-
-
-
-
-
-
-
+
+ redirectToURLWithoutModalState(history, location, 'mobilesearch')}
+ usePortal
+ onManageDisableScrolling={onManageDisableScrolling}
+ >
+
-
-
-
-
-
+
+
-
-
- );
- }
-}
-
-TopbarComponent.defaultProps = {
- className: null,
- rootClassName: null,
- desktopClassName: null,
- mobileRootClassName: null,
- mobileClassName: null,
- notificationCount: 0,
- currentUser: null,
- currentUserHasOrders: null,
- currentPage: null,
- sendVerificationEmailError: null,
- authScopes: [],
+
+
+ );
};
TopbarComponent.propTypes = {
From 41a89d775138097be60268c1ceb818936615a4b3 Mon Sep 17 00:00:00 2001
From: Vesa Luusua
Date: Mon, 9 Dec 2024 19:36:22 +0200
Subject: [PATCH 044/198] TopbarDesktop/CustomLinksMenu: hydration must produce
the same HTML structure as SSR. The issue: LinksMenu should not be rendered
on the first pass after mounting since it produces different HTML structure
that SSR.
---
.../CustomLinksMenu/CustomLinksMenu.js | 2 +-
.../TopbarDesktop/CustomLinksMenu/LinksMenu.js | 15 ++++++++++-----
2 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/src/containers/TopbarContainer/Topbar/TopbarDesktop/CustomLinksMenu/CustomLinksMenu.js b/src/containers/TopbarContainer/Topbar/TopbarDesktop/CustomLinksMenu/CustomLinksMenu.js
index b9387392f..9b9de037a 100644
--- a/src/containers/TopbarContainer/Topbar/TopbarDesktop/CustomLinksMenu/CustomLinksMenu.js
+++ b/src/containers/TopbarContainer/Topbar/TopbarDesktop/CustomLinksMenu/CustomLinksMenu.js
@@ -190,7 +190,7 @@ const CustomLinksMenu = ({ currentPage, customLinks = [], hasClientSideContentRe
return (
- {hasMenuLinks ? (
+ {mounted && hasMenuLinks ? (