diff --git a/Dockerfile b/Dockerfile index 00806cdeb1..719982e84f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,7 +11,7 @@ RUN --mount=type=cache,target=/root/.cache/pip pip3 install --user --requirement # Build stage: Install yarn dependencies # === -FROM node:20 AS yarn-dependencies +FROM node:21 AS yarn-dependencies WORKDIR /srv ADD package.json . ADD yarn.lock . diff --git a/package.json b/package.json index 259e0691be..aa4463f3f3 100644 --- a/package.json +++ b/package.json @@ -35,13 +35,13 @@ "@canonical/react-components": "0.50.2", "@canonical/store-components": "0.48.0", "@dnd-kit/core": "6.1.0", - "@dnd-kit/sortable": "7.0.2", + "@dnd-kit/sortable": "8.0.0", "@dnd-kit/utilities": "3.2.2", "@reduxjs/toolkit": "1.9.7", "@sentry/react": "7.91.0", "@sentry/tracing": "7.91.0", "@tarekraafat/autocomplete.js": "10.2.7", - "@testing-library/jest-dom": "5.17.0", + "@testing-library/jest-dom": "6.4.2", "@testing-library/react": "14.1.2", "@testing-library/user-event": "14.5.2", "@types/jest": "29.5.11", @@ -63,16 +63,16 @@ "d3-selection": "3.0.0", "d3-shape": "3.2.0", "d3-time-format": "4.1.0", - "date-fns": "2.30.0", - "downshift": "7.6.2", - "expose-loader": "4.1.0", + "date-fns": "3.3.1", + "downshift": "8.3.1", + "expose-loader": "5.0.0", "fast-average-color": "9.4.0", - "markdown-it": "13.0.2", - "nanoid": "4.0.2", + "markdown-it": "14.0.0", + "nanoid": "5.0.5", "polylabel": "1.1.0", "postcss": "8.4.32", - "postcss-cli": "10.1.0", - "prettier": "2.8.8", + "postcss-cli": "11.0.0", + "prettier": "3.2.5", "prop-types": "15.8.1", "randomstring": "1.3.0", "raven-js": "3.27.2", @@ -91,10 +91,10 @@ "redux-thunk": "2.4.2", "sass": "1.69.6", "style-loader": "3.3.3", - "swiper": "9.4.1", + "swiper": "11.0.6", "topojson-client": "3.1.0", "ts-loader": "9.5.1", - "typescript": "4.9.5", + "typescript": "5.3.3", "vanilla-framework": "4.7.0", "watch-cli": "0.2.3", "webpack": "5.89.0", @@ -106,18 +106,18 @@ "@percy/cli": "1.27.6", "@types/react-dom": "18.2.18", "babel-jest": "29.7.0", - "concurrently": "7.6.0", + "concurrently": "8.2.2", "eslint": "8.56.0", - "eslint-config-prettier": "8.10.0", + "eslint-config-prettier": "9.1.0", "eslint-plugin-jest": "27.6.1", - "eslint-plugin-prettier": "4.2.1", + "eslint-plugin-prettier": "5.1.3", "eslint-plugin-react": "7.33.2", "identity-obj-proxy": "3.0.0", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", - "sass-loader": "13.3.3", - "stylelint": "15.11.0", - "stylelint-config-standard-scss": "7.0.1", + "sass-loader": "14.1.0", + "stylelint": "16.2.1", + "stylelint-config-standard-scss": "13.0.0", "stylelint-order": "6.0.4", "ts-jest": "29.1.1" } diff --git a/requirements.txt b/requirements.txt index 0431032d7a..3a1ccadaa5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -16,7 +16,7 @@ emoji==2.9.0 humanize==4.9.0 mistune==2.0.5 pybadges==3.0.1 -pycountry==22.3.5 +pycountry==23.12.11 pymacaroons==0.13.0 python-dateutil==2.8.2 requests==2.31.0 @@ -28,5 +28,5 @@ user-agents==2.2.0 # Development dependencies Flask-Testing==0.8.1 freezegun==1.4.0 -black==23.12.1 +black==24.1.1 flake8==6.1.0 diff --git a/static/js/base/dropdown-menu-toggle.js b/static/js/base/dropdown-menu-toggle.js index eb6c17ed5b..fccb70fe1b 100644 --- a/static/js/base/dropdown-menu-toggle.js +++ b/static/js/base/dropdown-menu-toggle.js @@ -2,7 +2,7 @@ function toggleDropdown(toggle, open) { var parentElement = toggle.parentNode; var dropdown = document.getElementById( - toggle.getAttribute("aria-controls") + toggle.getAttribute("aria-controls"), ); dropdown.setAttribute("aria-hidden", !open); @@ -46,7 +46,7 @@ function initNavDropdowns(containerClass) { var toggles = [].slice.call( - document.querySelectorAll(containerClass + " [aria-controls]") + document.querySelectorAll(containerClass + " [aria-controls]"), ); handleClickOutside(toggles, containerClass); diff --git a/static/js/base/navigation.js b/static/js/base/navigation.js index c819bdd91a..cd1591d783 100644 --- a/static/js/base/navigation.js +++ b/static/js/base/navigation.js @@ -3,10 +3,10 @@ var navAccountContainer = document.querySelector(".js-nav-account"); if (navAccountContainer) { var notAuthenticatedMenu = navAccountContainer.querySelector( - ".js-nav-account--notauthenticated" + ".js-nav-account--notauthenticated", ); var authenticatedMenu = navAccountContainer.querySelector( - ".js-nav-account--authenticated" + ".js-nav-account--authenticated", ); fetch("/account.json") @@ -22,7 +22,7 @@ if (navAccountContainer) { if (window.sessionStorage) { window.sessionStorage.setItem( "displayName", - data.publisher["fullname"] + data.publisher["fullname"], ); } diff --git a/static/js/base/notification-dismiss.js b/static/js/base/notification-dismiss.js index ecfbba3ff4..97ff083856 100644 --- a/static/js/base/notification-dismiss.js +++ b/static/js/base/notification-dismiss.js @@ -20,7 +20,7 @@ */ function dismissNotifications() { const links = document.querySelectorAll( - ".p-notification__action, .js-notification-close" + ".p-notification__action, .js-notification-close", ); for (let i = 0; i < links.length; i++) { diff --git a/static/js/base/polyfills.js b/static/js/base/polyfills.js index 99094e71a1..cd134a6445 100644 --- a/static/js/base/polyfills.js +++ b/static/js/base/polyfills.js @@ -35,7 +35,7 @@ if (!Array.from) { // 3. ReturnIfAbrupt(items). if (arrayLike == null) { throw new TypeError( - "Array.from requires an array-like object - not null or undefined" + "Array.from requires an array-like object - not null or undefined", ); } @@ -47,7 +47,7 @@ if (!Array.from) { // 5. a If IsCallable(mapfn) is false, throw a TypeError exception. if (!isCallable(mapFn)) { throw new TypeError( - "Array.from: when provided, the second argument must be a function" + "Array.from: when provided, the second argument must be a function", ); } diff --git a/static/js/brand-store/components/Snaps/SnapsSearch.tsx b/static/js/brand-store/components/Snaps/SnapsSearch.tsx index e1eefa4e9a..9d71c26ffa 100644 --- a/static/js/brand-store/components/Snaps/SnapsSearch.tsx +++ b/static/js/brand-store/components/Snaps/SnapsSearch.tsx @@ -52,7 +52,6 @@ function SnapsSearch({ className="p-search-box__input" name="search" placeholder="Search available snaps" - autoComplete="off" {...getInputProps({ onKeyUp: debounce( ( @@ -125,7 +124,6 @@ function SnapsSearch({ {suggestions.map((item: Snap, index: number) => (
  • { arraysEqual(arr1, arr2); expect( JSON.stringify(arr1) === JSON.stringify(arr1Copy) && - JSON.stringify(arr2) === JSON.stringify(arr2Copy) + JSON.stringify(arr2) === JSON.stringify(arr2Copy), ).toEqual(true); }); }); diff --git a/static/js/libs/channels.js b/static/js/libs/channels.js index 0bf3a14ae2..245df56d95 100644 --- a/static/js/libs/channels.js +++ b/static/js/libs/channels.js @@ -218,7 +218,7 @@ function sortChannels(channels, options) { (item) => item.track === track.name && item.risk === risk.name && - item.branch === branch.name + item.branch === branch.name, )[0].format; const str = []; if (format.track) { diff --git a/static/js/libs/channels.test.js b/static/js/libs/channels.test.js index 9f0da9a690..3d98dbe37c 100644 --- a/static/js/libs/channels.test.js +++ b/static/js/libs/channels.test.js @@ -74,7 +74,7 @@ describe("createChannelTree", () => { describe("risk only", () => { beforeEach(() => { channelList = ["stable", "beta", "candidate", "edge"].map((channel) => - parseChannel(channel) + parseChannel(channel), ); }); @@ -124,7 +124,7 @@ describe("createChannelTree", () => { describe("track/risk", () => { beforeEach(() => { channelList = ["stable", "latest/edge", "test/candidate"].map((channel) => - parseChannel(channel) + parseChannel(channel), ); }); it("should return 'latest' and others", () => { @@ -170,7 +170,7 @@ describe("createChannelTree", () => { describe("risk/branch", () => { beforeEach(() => { channelList = ["stable", "beta/test", "edge/1.0.1", "edge/hotfix"].map( - (channel) => parseChannel(channel) + (channel) => parseChannel(channel), ); }); @@ -292,13 +292,13 @@ describe("sortAlphaNum", () => { it("puts latest first if isTrack and no defaultTrack", () => { expect( - sortAlphaNum(["0.0.1", "5", "test", "11", "latest"], "latest") + sortAlphaNum(["0.0.1", "5", "test", "11", "latest"], "latest"), ).toEqual(["latest", "test", "11", "5", "0.0.1"]); }); it("puts defaultTrack first if isTrack and defaultTrack set", () => { expect( - sortAlphaNum(["0.0.1", "5", "test", "11", "latest"], "test") + sortAlphaNum(["0.0.1", "5", "test", "11", "latest"], "test"), ).toEqual(["test", "latest", "11", "5", "0.0.1"]); }); }); @@ -307,7 +307,7 @@ describe("sortChannels", () => { describe("tracks", () => { it("should return in the track order, with latest first", () => { expect( - sortChannels(["zzz/edge", "stable", "1/beta", "5.9.0/candidate"]).tree + sortChannels(["zzz/edge", "stable", "1/beta", "5.9.0/candidate"]).tree, ).toEqual([ { name: "latest", @@ -368,7 +368,7 @@ describe("sortChannels", () => { describe("track/risk", () => { it("should return with 'latest' track first, with risks in order of stability", () => { expect( - sortChannels(["zzz/edge", "stable", "1/beta", "1/candidate"]).tree + sortChannels(["zzz/edge", "stable", "1/beta", "1/candidate"]).tree, ).toEqual([ { name: "latest", @@ -431,7 +431,7 @@ describe("sortChannels", () => { "1/beta/1.0.1", "1/beta/hotfix", "1/candidate", - ]).tree + ]).tree, ).toEqual([ { name: "latest", @@ -493,7 +493,7 @@ describe("sortChannels", () => { "1/beta/1.0.1", "1/beta/hotfix", "1/candidate", - ]).list + ]).list, ).toEqual([ "stable", "zzz/edge", @@ -511,7 +511,7 @@ describe("sortChannels", () => { expect( sortChannels(["latest/stable", "test/stable"], { defaultTrack: "test", - }).list + }).list, ).toEqual(["test/stable", "latest/stable"]); }); }); @@ -521,7 +521,7 @@ describe("sortChannels", () => { expect( sortChannels(["test/stable", "stable"], { maintainFormat: true, - }).list + }).list, ).toEqual(["stable", "test/stable"]); }); }); diff --git a/static/js/libs/fileValidation.js b/static/js/libs/fileValidation.js index bffa406f16..9e75a5b7f9 100644 --- a/static/js/libs/fileValidation.js +++ b/static/js/libs/fileValidation.js @@ -153,7 +153,7 @@ function imageRestrictions(file, restrictions) { // If the min and max are the same we only accept 1 aspect ratio if (min === max) { message.push( - `it needs to be ${aspectRatioMin[0]}:${aspectRatioMin[1]}` + `it needs to be ${aspectRatioMin[0]}:${aspectRatioMin[1]}`, ); const suggestedSize = [height / max]; @@ -168,14 +168,14 @@ function imageRestrictions(file, restrictions) { message.push( `(e.g., ${Math.round(suggestedSize[0])} x ${Math.round( - suggestedSize[1] - )} pixels)` + suggestedSize[1], + )} pixels)`, ); // Otherwise it's a range } else { message.push( - `it needs to be between ${aspectRatioMin[0]}:${aspectRatioMin[1]} and ${aspectRatioMax[0]}:${aspectRatioMax[1]}` + `it needs to be between ${aspectRatioMin[0]}:${aspectRatioMin[1]} and ${aspectRatioMax[0]}:${aspectRatioMax[1]}`, ); } diff --git a/static/js/libs/fileValidation.test.js b/static/js/libs/fileValidation.test.js index 63270d59d9..fd8c731bf8 100644 --- a/static/js/libs/fileValidation.test.js +++ b/static/js/libs/fileValidation.test.js @@ -3,7 +3,7 @@ import { validateRestrictions } from "./fileValidation"; function generateFile( options, name = "test", - fileContents = "testymctestface" + fileContents = "testymctestface", ) { return new File([fileContents], name, options); } @@ -48,7 +48,7 @@ describe("validateRestrictions", () => { const validationSmall = await validateRestrictions( smallFile, - smallRestrictions + smallRestrictions, ); expect(validationSmall.errors).toEqual([`file size is over 1KB`]); @@ -62,7 +62,7 @@ describe("validateRestrictions", () => { const validationLarge = await validateRestrictions( largeFile, - largeRestrictions + largeRestrictions, ); expect(validationLarge.errors).toEqual([`file size is over 1.00MB`]); @@ -81,7 +81,7 @@ describe("validateRestrictions", () => { const validationSmall = await validateRestrictions( smallFile, - smallRestrictions + smallRestrictions, ); expect(validationSmall.errors).toEqual([`file size is below 2KB`]); @@ -95,7 +95,7 @@ describe("validateRestrictions", () => { const validationLarge = await validateRestrictions( largeFile, - largeRestrictions + largeRestrictions, ); expect(validationLarge.errors).toEqual([`file size is below 2.00MB`]); @@ -605,7 +605,7 @@ describe("validateRestrictions", () => { { type: "image/png", }, - "test.png" + "test.png", ); generateImage({ @@ -652,7 +652,7 @@ describe("validateRestrictions", () => { { type: "image/png", }, - "test.png" + "test.png", ); generateImage({ @@ -699,7 +699,7 @@ describe("validateRestrictions", () => { { type: "image/png", }, - "green.png" + "green.png", ); generateImage({ @@ -746,7 +746,7 @@ describe("validateRestrictions", () => { { type: "image/png", }, - "test.png" + "test.png", ); generateImage({ diff --git a/static/js/libs/iframeSize.js b/static/js/libs/iframeSize.js index 0b27b3e07d..90aa32a908 100644 --- a/static/js/libs/iframeSize.js +++ b/static/js/libs/iframeSize.js @@ -32,7 +32,7 @@ function sizeIframe(wrapperSelector) { export default (wrapperSelector) => { window.addEventListener( "resize", - debounce(sizeIframe.bind(this, wrapperSelector), 100) + debounce(sizeIframe.bind(this, wrapperSelector), 100), ); sizeIframe(wrapperSelector); diff --git a/static/js/libs/mobile.js b/static/js/libs/mobile.js index 7c3f5bbd25..129aa22a9c 100644 --- a/static/js/libs/mobile.js +++ b/static/js/libs/mobile.js @@ -1,7 +1,7 @@ function isMobile() { // If the mobile menu button is visible, we're on mobile const mobileMenuButton = document.querySelector( - ".p-navigation__toggle--open" + ".p-navigation__toggle--open", ); // Use offsetWidth and offsetHeight to figure out if an element is visibile diff --git a/static/js/public/accordion.js b/static/js/public/accordion.js index 4bb7c8ae75..7898339d48 100644 --- a/static/js/public/accordion.js +++ b/static/js/public/accordion.js @@ -29,7 +29,7 @@ export default function initAccordion(accordionContainerSelector) { if (target && !target.disabled) { // Find any open panels within the container and close them. Array.from( - e.currentTarget.querySelectorAll("[aria-expanded=true]") + e.currentTarget.querySelectorAll("[aria-expanded=true]"), ).forEach((element) => toggleAccordion(element, false)); // Open the target. toggleAccordion(target, true); @@ -38,7 +38,7 @@ export default function initAccordion(accordionContainerSelector) { // Add event listeners to buttons that expand the next section of the accordion const nextButtons = [].slice.call( - document.querySelectorAll("[data-js='js-accordion-next-button']") + document.querySelectorAll("[data-js='js-accordion-next-button']"), ); if (nextButtons) { nextButtons.forEach((button) => { @@ -47,11 +47,11 @@ export default function initAccordion(accordionContainerSelector) { const currentPanel = button.closest(".p-accordion__group"); const currentToggle = currentPanel.querySelector( - "[class*='p-accordion__tab']" + "[class*='p-accordion__tab']", ); const nextPanel = currentPanel.nextElementSibling; const nextToggle = nextPanel.querySelector( - "[class*='p-accordion__tab']" + "[class*='p-accordion__tab']", ); if (currentPanel && nextPanel) { @@ -72,7 +72,7 @@ export function initAccordionButtons(continueButton) { const currentPanel = continueButton.closest(".p-accordion__group"); const currentToggle = currentPanel.querySelector( - "[class*='p-accordion__tab']" + "[class*='p-accordion__tab']", ); const currentSuccess = currentPanel.querySelector(".p-icon--success"); const nextPanel = currentPanel.nextElementSibling; diff --git a/static/js/public/expandable-area.js b/static/js/public/expandable-area.js index f05bdecc55..8d021acb44 100644 --- a/static/js/public/expandable-area.js +++ b/static/js/public/expandable-area.js @@ -6,10 +6,10 @@ */ export default function initExpandableArea( overflowSelector, - heightMatchSelector + heightMatchSelector, ) { const showMoreContainer = [].slice.call( - document.querySelectorAll("[data-js='js-show-more']") + document.querySelectorAll("[data-js='js-show-more']"), ); if (showMoreContainer && showMoreContainer.length > 0) { diff --git a/static/js/public/first-snap-flow.js b/static/js/public/first-snap-flow.js index c9e4d9c8f6..055b019178 100644 --- a/static/js/public/first-snap-flow.js +++ b/static/js/public/first-snap-flow.js @@ -63,7 +63,7 @@ function install(language, fsfFlow) { const os = type.split("-")[0]; const selected = document.querySelector(".js-" + type); const unselected = document.querySelector( - "[class*='js-" + os + "-']:not(.js-" + type + ")" + "[class*='js-" + os + "-']:not(.js-" + type + ")", ); if (!selected && !unselected) { @@ -259,7 +259,7 @@ function initRegisterName(formEl, notificationEl, successEl) { event.preventDefault(); let formData = new FormData(formEl); const submitButton = formEl.querySelector( - "[data-js='js-snap-name-register']" + "[data-js='js-snap-name-register']", ); const currentPanel = formEl.closest(".p-accordion__group"); @@ -326,7 +326,7 @@ function initRegisterName(formEl, notificationEl, successEl) { } errorNotification( notificationEl, - "There was some problem registering name. Please try again." + "There was some problem registering name. Please try again.", ); }); }); diff --git a/static/js/public/ga-scroll-event.js b/static/js/public/ga-scroll-event.js index bbb1ad6bd6..1c86b7f376 100644 --- a/static/js/public/ga-scroll-event.js +++ b/static/js/public/ga-scroll-event.js @@ -23,7 +23,7 @@ export default function triggerEventWhenVisible(selector) { "element-visible", origin, selector, - `Element visible on screen: ${selector}` + `Element visible on screen: ${selector}`, ); } else { let triggered = false; @@ -35,11 +35,11 @@ export default function triggerEventWhenVisible(selector) { "element-visible", origin, selector, - `Element visible on screen: ${selector}` + `Element visible on screen: ${selector}`, ); triggered = true; } - }, 500) + }, 500), ); } } else { diff --git a/static/js/public/nps.js b/static/js/public/nps.js index 05fc9de1f1..595db6c7b2 100644 --- a/static/js/public/nps.js +++ b/static/js/public/nps.js @@ -52,7 +52,7 @@ function nps() { button.innerHTML = ``; mktoForm.submit(); }); - } + }, ); } diff --git a/static/js/public/snap-details/blog-posts.js b/static/js/public/snap-details/blog-posts.js index a96140bfb7..d8933b77a4 100644 --- a/static/js/public/snap-details/blog-posts.js +++ b/static/js/public/snap-details/blog-posts.js @@ -86,12 +86,12 @@ class BlogPosts { function snapDetailsPosts( holderSelector, templateSelector, - showOnSuccessSelector + showOnSuccessSelector, ) { const blogPosts = new BlogPosts( "/blog/api/snap-posts/", holderSelector, - templateSelector + templateSelector, ); const snap = blogPosts.holder.dataset.snap; @@ -119,7 +119,7 @@ function seriesPosts(holderSelector, templateSelector) { const blogPosts = new BlogPosts( "/blog/api/series/", holderSelector, - templateSelector + templateSelector, ); const series = blogPosts.holder.dataset.series; diff --git a/static/js/public/snap-details/channelMap.js b/static/js/public/snap-details/channelMap.js index 66770cd79f..43d7e2d297 100644 --- a/static/js/public/snap-details/channelMap.js +++ b/static/js/public/snap-details/channelMap.js @@ -67,23 +67,23 @@ class ChannelMap { initOtherVersions() { let installTemplateEl = document.querySelector( - '[data-js="install-window"]' + '[data-js="install-window"]', ); if (!installTemplateEl) { installTemplateEl = document.getElementById("install-window-template"); } let channelRowTemplateEl = document.querySelector( - '[data-js="channel-map-row"]' + '[data-js="channel-map-row"]', ); if (!channelRowTemplateEl) { channelRowTemplateEl = document.getElementById( - "channel-map-row-template" + "channel-map-row-template", ); } if (!installTemplateEl || !channelRowTemplateEl) { document.querySelector( - ".p-snap-install-buttons__versions" + ".p-snap-install-buttons__versions", ).style.display = "none"; return false; } @@ -121,7 +121,7 @@ class ChannelMap { this.openScreenName === "channel-map-install" ? "cta-0" : "cta-1", window.location.href, target.dataset.controls, - target.innerText + target.innerText, ); } }, @@ -150,7 +150,7 @@ class ChannelMap { "cta-1", window.location.href, `snap://${target.dataset.snap}`, - target.innerText + target.innerText, ); }, @@ -206,7 +206,7 @@ class ChannelMap { this.openButton.getAttribute("aria-controls") || "channel-map-install"; const openScreen = this.channelMapEl.querySelector( - `#${this.openScreenName}` + `#${this.openScreenName}`, ); // select default screen before opening @@ -296,7 +296,7 @@ class ChannelMap { // Add content to the right slide area this.writeInstallInstructions( clickEl.dataset.channel, - clickEl.dataset.confinement + clickEl.dataset.confinement, ); const slides = clickEl.closest(".p-channel-map__slides"); @@ -347,7 +347,7 @@ class ChannelMap { } const holder = document.querySelector( - '[data-js="channel-map-install-details"]' + '[data-js="channel-map-install-details"]', ); holder.innerHTML = newDiv.innerHTML; @@ -368,7 +368,7 @@ class ChannelMap { } let _row = this.CHANNEL_ROW_TEMPLATE.split("${rowClass}").join( - rowClass.join(" ") + rowClass.join(" "), ); row.forEach((val, index) => { @@ -390,7 +390,7 @@ class ChannelMap { */ prepareTable(archData) { const tbodyEl = this.channelMapEl.querySelector( - '[data-js="channel-map-table"]' + '[data-js="channel-map-table"]', ); // If we're on the overview tab we only want to see latest/[all risks] @@ -480,7 +480,7 @@ export default function channelMap( el, packageName, channelMapData, - defaultTrack + defaultTrack, ) { return new ChannelMap(el, packageName, channelMapData, defaultTrack); } diff --git a/static/js/public/snap-details/map.js b/static/js/public/snap-details/map.js index 06c245de80..86a6513b94 100644 --- a/static/js/public/snap-details/map.js +++ b/static/js/public/snap-details/map.js @@ -108,9 +108,9 @@ export default function renderMap(el, snapData) { ` - ${content.join(" ")}` + countrySnapData.color_rgb[1] + }, ${countrySnapData.color_rgb[2]})"> + ${content.join(" ")}`, ); } }) @@ -122,7 +122,7 @@ export default function renderMap(el, snapData) { .datum( mesh(world, world.objects.countries, function (a, b) { return a !== b; - }) + }), ) .attr("class", "snapcraft-territories__boundary") .attr("d", path); diff --git a/static/js/public/snap-details/reportSnap.js b/static/js/public/snap-details/reportSnap.js index 931ced0a8b..b05d82a3ce 100644 --- a/static/js/public/snap-details/reportSnap.js +++ b/static/js/public/snap-details/reportSnap.js @@ -41,7 +41,7 @@ export default function initReportSnap( snapName, toggleSelector, modalSelector, - formURL + formURL, ) { const toggle = document.querySelector(toggleSelector); const modal = document.querySelector(modalSelector); @@ -64,7 +64,7 @@ export default function initReportSnap( e.preventDefault(); buttonLoading( reportForm.querySelector("button[type=submit]"), - "Submitting…" + "Submitting…", ); fetch(formURL, { diff --git a/static/js/public/snap-details/screenshots.js b/static/js/public/snap-details/screenshots.js index 2f039a116f..687376ffb6 100644 --- a/static/js/public/snap-details/screenshots.js +++ b/static/js/public/snap-details/screenshots.js @@ -18,7 +18,7 @@ function clickCallback(event) { function filterImages() { return Array.from( - screenshotsEl.querySelectorAll("img, video, .js-video-slide") + screenshotsEl.querySelectorAll("img, video, .js-video-slide"), ) .filter((image) => image.dataset.original) .map((image) => image.dataset.original); diff --git a/static/js/publisher/build-status.js b/static/js/publisher/build-status.js index c2d919a317..d391238d87 100644 --- a/static/js/publisher/build-status.js +++ b/static/js/publisher/build-status.js @@ -36,7 +36,7 @@ function buildStatus() { getStatuses() .then((data) => { const snapListRows = document.querySelectorAll( - "[data-js='snap-list-row']" + "[data-js='snap-list-row']", ); snapListRows.forEach((row) => addBuildStatus(row, data)); diff --git a/static/js/publisher/builds/components/buildsTable.js b/static/js/publisher/builds/components/buildsTable.js index 756c2be31e..5dfcd7ccd4 100644 --- a/static/js/publisher/builds/components/buildsTable.js +++ b/static/js/publisher/builds/components/buildsTable.js @@ -99,7 +99,7 @@ const BuildsTable = ({ }, ], // updates to builds and queueTime affect columns, so they should be recalculated when they change - [builds, queueTime] + [builds, queueTime], ); const data = React.useMemo(() => builds, [builds]); diff --git a/static/js/publisher/builds/components/datalistSelect.test.js b/static/js/publisher/builds/components/datalistSelect.test.js index 280977f406..03c61acc0e 100644 --- a/static/js/publisher/builds/components/datalistSelect.test.js +++ b/static/js/publisher/builds/components/datalistSelect.test.js @@ -42,7 +42,7 @@ describe("DatalistSelect", () => { it("should render the loading icon when loading", () => { const { container } = render( - + , ); const iconClassList = container.querySelector(".p-icon-container").firstChild.classList; diff --git a/static/js/publisher/builds/components/repoConnect.js b/static/js/publisher/builds/components/repoConnect.js index 12894e2eef..11474ee04d 100644 --- a/static/js/publisher/builds/components/repoConnect.js +++ b/static/js/publisher/builds/components/repoConnect.js @@ -72,7 +72,7 @@ class RepoConnect extends React.Component { status: null, error: null, }, - () => this.checkRepo(selectedRepo) + () => this.checkRepo(selectedRepo), ); } @@ -84,7 +84,7 @@ class RepoConnect extends React.Component { handleOrganizationSelect(selectedOrganization) { this.setState( { selectedOrganization: selectedOrganization, selectedRepo: "" }, - () => this.fetchRepoList() + () => this.fetchRepoList(), ); } @@ -153,7 +153,7 @@ class RepoConnect extends React.Component { if (selectedRepo && repoList.some((el) => el.value === selectedRepo)) { const orgRepo = RepoConnect.orgRepoString( selectedOrganization, - selectedRepo + selectedRepo, ); const url = `/${snapName}/builds/validate-repo?repo=${orgRepo}`; @@ -210,7 +210,7 @@ class RepoConnect extends React.Component { const orgRepo = RepoConnect.orgRepoString( selectedOrganization, - selectedRepo + selectedRepo, ); return ( @@ -319,7 +319,7 @@ class RepoConnect extends React.Component { const { selectedOrganization, selectedRepo, snapName } = this.state; const orgRepo = RepoConnect.orgRepoString( selectedOrganization, - selectedRepo + selectedRepo, ); return `https://github.com/${orgRepo}/new/master?filename=snap%2Fsnapcraft.yaml&value=%0A%20%20%23%20After%20registering%20a%20name%20on%20build.snapcraft.io%2C%20commit%20an%20uncommented%20line%3A%0A%20%20%23%20name%3A%20${snapName}%0A%20%20version%3A%20%270.1%27%20%23%20just%20for%20humans%2C%20typically%20%271.2%2Bgit%27%20or%20%271.3.2%27%0A%20%20summary%3A%20Single-line%20elevator%20pitch%20for%20your%20amazing%20snap%20%23%2079%20char%20long%20summary%0A%20%20description%3A%20%7C%0A%20%20%20%20This%20is%20my-snap%27s%20description.%20You%20have%20a%20paragraph%20or%20two%20to%20tell%20the%0A%20%20%20%20most%20important%20story%20about%20your%20snap.%20Keep%20it%20under%20100%20words%20though%2C%0A%20%20%20%20we%20live%20in%20tweetspace%20and%20your%20description%20wants%20to%20look%20good%20in%20the%20snap%0A%20%20%20%20store.%0A%0A%20%20grade%3A%20devel%20%23%20must%20be%20%27stable%27%20to%20release%20into%20candidate%2Fstable%20channels%0A%20%20confinement%3A%20devmode%20%23%20use%20%27strict%27%20once%20you%20have%20the%20right%20plugs%20and%20slots%0A%0A%20%20parts%3A%0A%20%20%20%20my-part%3A%0A%20%20%20%20%20%20%23%20See%20%27snapcraft%20plugins%27%0A%20%20%20%20%20%20plugin%3A%20nil%0A%20%20`; } @@ -387,7 +387,7 @@ class RepoConnect extends React.Component { const orgRepo = RepoConnect.orgRepoString( selectedOrganization, - selectedRepo + selectedRepo, ); return ( @@ -467,7 +467,7 @@ function init(selector, organizations, user, snapName) { organizations={_organizations} user={user} snapName={snapName} - /> + />, ); } } diff --git a/static/js/publisher/builds/components/repoConnect.test.js b/static/js/publisher/builds/components/repoConnect.test.js index 2a9af40d75..f202244e3d 100644 --- a/static/js/publisher/builds/components/repoConnect.test.js +++ b/static/js/publisher/builds/components/repoConnect.test.js @@ -20,7 +20,7 @@ const essentialProps = { describe("RepoConnect", () => { it("should render all critical elements", () => { const { container, queryByPlaceholderText } = render( - + , ); expect(container.querySelectorAll("input").length).toEqual(2); diff --git a/static/js/publisher/builds/components/triggerBuild.test.js b/static/js/publisher/builds/components/triggerBuild.test.js index 6e91f63f68..49d26bc77f 100644 --- a/static/js/publisher/builds/components/triggerBuild.test.js +++ b/static/js/publisher/builds/components/triggerBuild.test.js @@ -6,7 +6,7 @@ describe("TriggerBuild", () => { it("renders the trigger new build button and the button triggers a build on click", () => { const triggerBuildHandler = jest.fn(); const { container } = render( - + , ); const btn = container.querySelector("button"); expect(btn.innerHTML).toEqual("Trigger new build"); @@ -17,7 +17,7 @@ describe("TriggerBuild", () => { it("renders with an error", () => { const { container } = render(); expect(container.querySelector(".p-notification__title").innerHTML).toEqual( - "Error:" + "Error:", ); }); diff --git a/static/js/publisher/builds/helpers.js b/static/js/publisher/builds/helpers.js index 0dd96ff837..3747cf6a9e 100644 --- a/static/js/publisher/builds/helpers.js +++ b/static/js/publisher/builds/helpers.js @@ -22,14 +22,14 @@ export const UserFacingStatus = { "Built, won’t be released", "Built", 6, - WONT_RELEASE + WONT_RELEASE, ), [RELEASED]: createStatus("Released", "Released", 5, "released"), [RELEASE_FAILED]: createStatus( "Built, failed to release", "Failed", 4, - RELEASE_FAILED + RELEASE_FAILED, ), [RELEASING_SOON]: createStatus("Releasing", "Releasing", 3, RELEASING_SOON), [IN_PROGRESS]: createStatus("In progress", "In progress", 2, IN_PROGRESS), @@ -37,7 +37,7 @@ export const UserFacingStatus = { "Failed to build", "Failed", 1, - FAILED_TO_BUILD + FAILED_TO_BUILD, ), [CANCELLED]: createStatus("Cancelled", "Cancelled", 8, CANCELLED), [UNKNOWN]: createStatus("Unknown", "Unknown", 8, NEVER_BUILT), @@ -47,7 +47,7 @@ export function createStatus( statusMessage, shortStatusMessage, priority, - badge + badge, ) { const loadingStatus = [IN_PROGRESS, RELEASING_SOON]; let icon; diff --git a/static/js/publisher/builds/helpers.test.js b/static/js/publisher/builds/helpers.test.js index 66c26e6f56..e13f31e56b 100644 --- a/static/js/publisher/builds/helpers.test.js +++ b/static/js/publisher/builds/helpers.test.js @@ -31,7 +31,7 @@ describe("createStatus", () => { statusMessage: "Built, releasing soon", }; expect( - createStatus("Built, releasing soon", "Releasing", 3, "releasing_soon") + createStatus("Built, releasing soon", "Releasing", 3, "releasing_soon"), ).toEqual(statusObject); }); @@ -44,7 +44,7 @@ describe("createStatus", () => { statusMessage: "Cancelled", }; expect(createStatus("Cancelled", "Cancelled", 8, "cancelled")).toEqual( - statusObject + statusObject, ); }); }); diff --git a/static/js/publisher/builds/index.js b/static/js/publisher/builds/index.js index b89dd8b703..be9fd6716b 100644 --- a/static/js/publisher/builds/index.js +++ b/static/js/publisher/builds/index.js @@ -118,7 +118,7 @@ class Builds extends React.Component { this.updateQueueTime(); } this.triggerFetchBuilds(); - } + }, ); }) .catch(() => { @@ -155,7 +155,7 @@ class Builds extends React.Component { if (result.status === PENDING) { setTimeout( () => this.triggerFetchBuildRequest(build_id), - this.props.updateFreq + this.props.updateFreq, ); } else if (result.status === COMPLETED) { this.setState({ @@ -238,7 +238,7 @@ class Builds extends React.Component { }, () => { this.fetchBuilds(); - } + }, ); } @@ -297,7 +297,7 @@ export function initBuilds( csrf_token, builds, totalBuilds, - singleBuild + singleBuild, ) { const container = document.querySelector(id); const root = createRoot(container); @@ -309,6 +309,6 @@ export function initBuilds( totalBuilds={totalBuilds} updateFreq={singleBuild ? null : 30000} singleBuild={singleBuild} - /> + />, ); } diff --git a/static/js/publisher/builds/repoDisconnect.js b/static/js/publisher/builds/repoDisconnect.js index 3e9968db10..ad882dde48 100644 --- a/static/js/publisher/builds/repoDisconnect.js +++ b/static/js/publisher/builds/repoDisconnect.js @@ -14,13 +14,13 @@ function initRepoDisconnect() { } const repoDisconnectButtons = document.querySelectorAll( - "[aria-controls='repo-disconnect-modal']" + "[aria-controls='repo-disconnect-modal']", ); const repoDisconnectConfirm = document.querySelector( - "[data-js='repo-disconnect-confirm']" + "[data-js='repo-disconnect-confirm']", ); const repoDisconnectModal = document.querySelector( - "[data-js='repo-disconnect-modal']" + "[data-js='repo-disconnect-modal']", ); const repoDisconnectForm = document.repoDisconnectForm; diff --git a/static/js/publisher/form.js b/static/js/publisher/form.js index bc6bfd6e12..be2cc7a75d 100644 --- a/static/js/publisher/form.js +++ b/static/js/publisher/form.js @@ -56,7 +56,7 @@ function initForm(config, initialState, errors) { if (errorInput.scrollIntoView) { const stickyHeight = document.querySelector( - ".snapcraft-p-sticky" + ".snapcraft-p-sticky", ).scrollHeight; errorInput.scrollIntoView(); window.scrollBy(0, -(stickyHeight + 16)); @@ -126,11 +126,11 @@ function initForm(config, initialState, errors) { if (config.mediaHolder) { const screenshots = state.images.filter( - (image) => image.type === "screenshot" + (image) => image.type === "screenshot", ); initMedia(config.mediaHolder, screenshots, (newImages) => { const noneScreenshots = state.images.filter( - (item) => item.type !== "screenshot" + (item) => item.type !== "screenshot", ); const newState = { ...state, @@ -301,7 +301,7 @@ function initForm(config, initialState, errors) { ignoreChangesOnUnload = true; const updateMetadataModal = document.querySelector( - ".update-metadata-warning" + ".update-metadata-warning", ); if (updateMetadataModal) { diff --git a/static/js/publisher/form.test.js b/static/js/publisher/form.test.js index 7255a90d96..e8ad2e1432 100644 --- a/static/js/publisher/form.test.js +++ b/static/js/publisher/form.test.js @@ -197,8 +197,8 @@ describe("initForm", () => { JSON.stringify( Object.assign(initialState, { title: "test", - }) - ) + }), + ), ); const diffInput = document.querySelector("[name='changes']"); @@ -206,7 +206,7 @@ describe("initForm", () => { JSON.stringify({ title: "test3", categories: "", - }) + }), ); }); }); @@ -228,7 +228,7 @@ describe("initForm", () => { previewButton.dispatchEvent( new Event("click", { bubbles: true, - }) + }), ); expect(JSON.parse(previewStateInput.value)).toEqual(initialState); @@ -239,10 +239,10 @@ describe("initForm", () => { describe("updateLocalStorage init", () => { test("should set the initial state", () => { expect(window.localStorage.getItem("test-initial")).toEqual( - JSON.stringify(initialState) + JSON.stringify(initialState), ); expect(window.localStorage.getItem("test")).toEqual( - JSON.stringify(initialState) + JSON.stringify(initialState), ); }); }); @@ -256,7 +256,7 @@ describe("initForm", () => { primaryCategoryInput.options[0].removeAttribute("selected"); primaryCategoryInput.options[1].selected = "selected"; primaryCategoryInput.dispatchEvent( - new Event("change", { bubbles: true }) + new Event("change", { bubbles: true }), ); form.dispatchEvent(new Event("submit")); diff --git a/static/js/publisher/form/AccordionHelp.test.js b/static/js/publisher/form/AccordionHelp.test.js index 01c728b7b2..37d584574a 100644 --- a/static/js/publisher/form/AccordionHelp.test.js +++ b/static/js/publisher/form/AccordionHelp.test.js @@ -12,7 +12,7 @@ describe("AccordionHelp", () => { const { container } = render(
    - + , ); const aEl = container.querySelector("a"); fireEvent.click(aEl); diff --git a/static/js/publisher/form/banner.test.js b/static/js/publisher/form/banner.test.js index eab59394d5..ea7f55e257 100644 --- a/static/js/publisher/form/banner.test.js +++ b/static/js/publisher/form/banner.test.js @@ -10,18 +10,18 @@ describe("Banner", () => { const { container } = render(); expect( - container.querySelectorAll(".p-market-banner__image-holder").length + container.querySelectorAll(".p-market-banner__image-holder").length, ).toEqual(1); }); describe("background image", () => { it("should show the background image if set at render", () => { const { container } = render( - + , ); expect( - container.querySelector(backgroundSelector).getAttribute("src") + container.querySelector(backgroundSelector).getAttribute("src"), ).toEqual("banner.png"); }); @@ -49,10 +49,10 @@ describe("Banner", () => { setTimeout(() => { expect( - container.querySelectorAll(".p-notification--negative").length + container.querySelectorAll(".p-notification--negative").length, ).toEqual(0); expect( - container.querySelector(backgroundSelector).getAttribute("src") + container.querySelector(backgroundSelector).getAttribute("src"), ).toEqual("banner.png"); done(); }, 500); @@ -64,7 +64,7 @@ describe("Banner", () => { restrictions={{ accept: ["image/jpeg"], }} - /> + />, ); window.URL = { @@ -88,7 +88,7 @@ describe("Banner", () => { setTimeout(() => { expect( - container.querySelectorAll(".p-notification--negative").length + container.querySelectorAll(".p-notification--negative").length, ).toEqual(1); done(); }, 500); @@ -102,7 +102,7 @@ describe("Banner", () => { url: "banner.png", }} updateImageState={cb} - /> + />, ); const deleteButton = container.querySelector(".p-market-banner__remove"); @@ -121,7 +121,7 @@ describe("Banner", () => { url: "banner.png", }} updateImageState={cb} - /> + />, ); const backgroundImage = container.querySelector(backgroundSelector); @@ -136,7 +136,7 @@ describe("Banner", () => { it("should set focus class when focused and remove it on blur", () => { const { container } = render( - + , ); const image = container.querySelector(backgroundSelector); diff --git a/static/js/publisher/form/fileInput.js b/static/js/publisher/form/fileInput.js index f1ab5aa09a..9a488592f7 100644 --- a/static/js/publisher/form/fileInput.js +++ b/static/js/publisher/form/fileInput.js @@ -78,7 +78,7 @@ class FileInput extends React.Component { fileChangedHandler() { const { fileChangedCallback, restrictions } = this.props; const files = Array.from(this.input.files).map((file) => - validateRestrictions(file, restrictions) + validateRestrictions(file, restrictions), ); Promise.all(files).then((values) => { diff --git a/static/js/publisher/form/fileInput.test.js b/static/js/publisher/form/fileInput.test.js index 1290b8e9fc..8d5fc32436 100644 --- a/static/js/publisher/form/fileInput.test.js +++ b/static/js/publisher/form/fileInput.test.js @@ -14,7 +14,7 @@ describe("FileInput", () => { }} > bewton - + , ); const clickElement = container.querySelector(".test"); @@ -37,7 +37,7 @@ describe("FileInput", () => { }} > bewton - + , ); const clickElement = container.querySelector(".test"); @@ -77,7 +77,7 @@ describe("FileInput", () => { render(); const dragRelatedCalls = addEventListener.mock.calls.filter( - (call) => call[0].indexOf("drag") > -1 || call[0].indexOf("drop") > -1 + (call) => call[0].indexOf("drag") > -1 || call[0].indexOf("drop") > -1, ); expect(dragRelatedCalls.length).toEqual(3); @@ -91,7 +91,7 @@ describe("FileInput", () => { unmount(); const dragRelatedCalls = removeEventListener.mock.calls.filter( - (call) => call[0].indexOf("drag") > -1 || call[0].indexOf("drop") > -1 + (call) => call[0].indexOf("drag") > -1 || call[0].indexOf("drop") > -1, ); expect(dragRelatedCalls.length).toEqual(3); diff --git a/static/js/publisher/form/icon.test.js b/static/js/publisher/form/icon.test.js index 4a20b298f1..09ef5cbc73 100644 --- a/static/js/publisher/form/icon.test.js +++ b/static/js/publisher/form/icon.test.js @@ -6,20 +6,20 @@ describe("Icon", () => { it("should render without an icon", () => { const { container } = render( {}} />); expect(container.querySelectorAll(".p-editable-icon__icon").length).toEqual( - 1 + 1, ); expect( - container.querySelectorAll(".p-editable-icon__actions").length + container.querySelectorAll(".p-editable-icon__actions").length, ).toEqual(0); }); it("should render with an icon", () => { const { container } = render( - {}} /> + {}} />, ); expect(container.querySelectorAll(`img[src="test"]`).length).toEqual(1); expect( - container.querySelectorAll(".p-editable-icon__actions").length + container.querySelectorAll(".p-editable-icon__actions").length, ).toEqual(1); }); @@ -65,7 +65,7 @@ describe("Icon", () => { restrictions={{ accept: ["text/plain"], }} - /> + />, ); const file = new File(["test"], "test", { type: "text/html" }); @@ -79,7 +79,7 @@ describe("Icon", () => { setTimeout(() => { expect( - container.querySelectorAll(".p-notification--negative").length + container.querySelectorAll(".p-notification--negative").length, ).toEqual(1); done(); }, 500); @@ -88,7 +88,7 @@ describe("Icon", () => { it("should remove the icon when removeIcon is called", (done) => { const changeCB = jest.fn(); const { container } = render( - + , ); const deleteButton = container.querySelector(".p-editable-icon__delete"); diff --git a/static/js/publisher/form/media.test.js b/static/js/publisher/form/media.test.js index 163ada82b1..b5b87a8fb3 100644 --- a/static/js/publisher/form/media.test.js +++ b/static/js/publisher/form/media.test.js @@ -20,7 +20,7 @@ describe("Media", () => { status: "uploaded", }, ]} - /> + />, ); expect(container.querySelectorAll(imageSelector).length).toEqual(1); expect(container.querySelector(`[src="test"]`).length).toBeUndefined(); @@ -35,7 +35,7 @@ describe("Media", () => { status: "uploaded", }, ]} - /> + />, ); const image = container.querySelector(imageSelector); @@ -53,7 +53,7 @@ describe("Media", () => { status: "uploaded", }, ]} - /> + />, ); const image = container.querySelector(imageSelector); @@ -74,11 +74,11 @@ describe("Media", () => { { url: "test-2", status: "uploaded" }, ]} mediaLimit={1} - /> + />, ); expect( - container.querySelectorAll(".p-notification--caution").length + container.querySelectorAll(".p-notification--caution").length, ).toEqual(1); }); @@ -97,7 +97,7 @@ describe("Media", () => { }, ]} updateState={updateState} - /> + />, ); const addButton = container.querySelector(addImageSelector); @@ -130,7 +130,7 @@ describe("Media", () => { expect(cont.querySelectorAll(`[src="test"]`).length).toEqual(1); expect( cont.querySelectorAll(`.js-media-item-holder [src="test-upload"]`) - .length + .length, ).toEqual(1); expect(updateState.mock.calls.length).toEqual(1); @@ -177,7 +177,7 @@ describe("Media", () => { }, ]} updateState={updateState} - /> + />, ); cont = container; @@ -185,7 +185,7 @@ describe("Media", () => { it("should remove an item from images list", () => { const deleteImages = cont.querySelectorAll( - ".p-listing-images__delete-image" + ".p-listing-images__delete-image", ); expect(deleteImages.length).toEqual(3); @@ -204,7 +204,7 @@ describe("Media", () => { ]); const newDeleteImages = cont.querySelectorAll( - ".p-listing-images__delete-image" + ".p-listing-images__delete-image", ); expect(newDeleteImages.length).toEqual(2); @@ -218,11 +218,11 @@ describe("Media", () => { restrictions={{ size: { max: 0.00001 }, }} - /> + />, ); const addImageButton = container.querySelector( - ".p-listing-images__add-image" + ".p-listing-images__add-image", ); fireEvent.click(addImageButton); @@ -245,7 +245,7 @@ describe("Media", () => { // timeout to wait for the promises to resolve setTimeout(() => { expect( - container.querySelectorAll(".p-notification--negative").length + container.querySelectorAll(".p-notification--negative").length, ).toEqual(1); done(); }, 500); diff --git a/static/js/publisher/form/mediaList.js b/static/js/publisher/form/mediaList.js index 1ac4d4451c..652d4fc9a2 100644 --- a/static/js/publisher/form/mediaList.js +++ b/static/js/publisher/form/mediaList.js @@ -51,7 +51,7 @@ class MediaList extends React.Component { )} - + , ); } diff --git a/static/js/publisher/listing/components/LicenseInputs/LicenseSearch.tsx b/static/js/publisher/listing/components/LicenseInputs/LicenseSearch.tsx index 73f5fd124c..1a74bcf11f 100644 --- a/static/js/publisher/listing/components/LicenseInputs/LicenseSearch.tsx +++ b/static/js/publisher/listing/components/LicenseInputs/LicenseSearch.tsx @@ -106,17 +106,13 @@ function LicenseSearch({ { - const newSelectedLicenses: ( - | License - | undefined - )[] = selectedLicenses.filter( - (item) => item?.key !== selectedLicense?.key - ); + const newSelectedLicenses: (License | undefined)[] = + selectedLicenses.filter( + (item) => item?.key !== selectedLicense?.key + ); - const newSelectedLicenseKeys: ( - | string - | undefined - )[] = newSelectedLicenses.map((item) => item?.key); + const newSelectedLicenseKeys: (string | undefined)[] = + newSelectedLicenses.map((item) => item?.key); const newLicense = newSelectedLicenseKeys.join(" OR "); setLicense(newLicense); @@ -133,7 +129,6 @@ function LicenseSearch({ type="text" className="p-multiselect__input" name="search" - autoComplete="off" {...getInputProps({ onKeyUp: debounce( ( @@ -176,7 +171,6 @@ function LicenseSearch({ {suggestions.map((item: License, index) => (
  • { @@ -60,7 +60,7 @@ function initCategories() { const resetSecondaryCategory = () => { secondaryCategorySelectEl.value = ""; secondaryCategorySelectEl.dispatchEvent( - new Event("change", { bubbles: true }) + new Event("change", { bubbles: true }), ); }; diff --git a/static/js/publisher/market/categories.test.js b/static/js/publisher/market/categories.test.js index 1d2e1db87c..f7699f43b4 100644 --- a/static/js/publisher/market/categories.test.js +++ b/static/js/publisher/market/categories.test.js @@ -129,13 +129,13 @@ describe("initCategories", () => { test("shows the secondary add prompty", () => { expect(categorySecondaryAddEl.classList.contains("u-hide")).toEqual( - false + false, ); }); test("hides the secondary category selector", () => { expect(categorySecondaryPickerEl.classList.contains("u-hide")).toEqual( - true + true, ); }); @@ -161,7 +161,7 @@ describe("initCategories", () => { test("hides the secondary category selector", () => { expect(categorySecondaryPickerEl.classList.contains("u-hide")).toEqual( - true + true, ); }); @@ -185,7 +185,7 @@ describe("initCategories", () => { test("shows the secondary category selector", () => { expect(categorySecondaryPickerEl.classList.contains("u-hide")).toEqual( - false + false, ); }); @@ -201,13 +201,13 @@ describe("initCategories", () => { test("shows the secondary add prompt", () => { expect(categorySecondaryAddEl.classList.contains("u-hide")).toEqual( - false + false, ); }); test("hides the secondary category selector", () => { expect(categorySecondaryPickerEl.classList.contains("u-hide")).toEqual( - true + true, ); }); diff --git a/static/js/publisher/market/initBanner.js b/static/js/publisher/market/initBanner.js index 8336c781f7..2a139336e3 100644 --- a/static/js/publisher/market/initBanner.js +++ b/static/js/publisher/market/initBanner.js @@ -22,7 +22,7 @@ function initBanner(holder, banners, nextState) { bannerImage={banner} updateImageState={nextState} restrictions={BANNER_RESTRICTIONS} - /> + />, ); } diff --git a/static/js/publisher/market/initIcon.js b/static/js/publisher/market/initIcon.js index 0fe5808c47..98f1e41a17 100644 --- a/static/js/publisher/market/initIcon.js +++ b/static/js/publisher/market/initIcon.js @@ -18,7 +18,7 @@ function initIcon(holder, icon, title, updateIcon) { title={title} updateIcon={updateIcon} restrictions={ICON_RESTRICTIONS} - /> + />, ); } diff --git a/static/js/publisher/market/initMedia.js b/static/js/publisher/market/initMedia.js index 6878d1ae3b..21b3100d52 100644 --- a/static/js/publisher/market/initMedia.js +++ b/static/js/publisher/market/initMedia.js @@ -16,7 +16,7 @@ function initMedia(mediaHolder, images, updateState) { updateState={updateState} restrictions={MEDIA_RESTRICTIONS} />, - mediaHolderEl + mediaHolderEl, ); } diff --git a/static/js/publisher/market/initMedia.test.js b/static/js/publisher/market/initMedia.test.js index 4b459b9d67..b3c459e675 100644 --- a/static/js/publisher/market/initMedia.test.js +++ b/static/js/publisher/market/initMedia.test.js @@ -15,7 +15,7 @@ describe("initMedia", () => { initMedia("#media-holder", [], () => {}); expect( - holder.querySelectorAll(".p-listing-images__add-image").length + holder.querySelectorAll(".p-listing-images__add-image").length, ).toEqual(1); }); }); diff --git a/static/js/publisher/market/lightbox.js b/static/js/publisher/market/lightbox.js index 481bed98bf..a5eef5838c 100644 --- a/static/js/publisher/market/lightbox.js +++ b/static/js/publisher/market/lightbox.js @@ -69,7 +69,7 @@ const loadLightboxImage = (lightboxEl, url, images) => { contentEl.style.opacity = "1"; const originalEl = document.body.querySelector( - `[data-original="${url}"]` + `[data-original="${url}"]`, ); if (media.canPlayType("video/webm")) { diff --git a/static/js/publisher/market/storageCommands.js b/static/js/publisher/market/storageCommands.js index bd275f7ed5..0b6001ff48 100644 --- a/static/js/publisher/market/storageCommands.js +++ b/static/js/publisher/market/storageCommands.js @@ -3,7 +3,7 @@ function storageCommands( formEl, snap_name, ignoreChangesOnUnload, - context = window + context = window, ) { const key = `${snap_name}-command`; if (e.key === key) { diff --git a/static/js/publisher/market/storageCommands.test.js b/static/js/publisher/market/storageCommands.test.js index 39a872a5ba..5492395bf3 100644 --- a/static/js/publisher/market/storageCommands.test.js +++ b/static/js/publisher/market/storageCommands.test.js @@ -20,7 +20,7 @@ describe("storage commands", () => { }, document.createElement("form"), "test", - ignoreChangeOnUnload + ignoreChangeOnUnload, ); }); @@ -34,8 +34,8 @@ describe("storage commands", () => { }, document.createElement("form"), "test", - ignoreChangeOnUnload - ) + ignoreChangeOnUnload, + ), ).toEqual(undefined); }); }); @@ -50,8 +50,8 @@ describe("storage commands", () => { }, document.createElement("form"), "test", - ignoreChangeOnUnload - ) + ignoreChangeOnUnload, + ), ).toEqual(undefined); }); }); @@ -67,7 +67,7 @@ describe("storage commands", () => { }, document.createElement("form"), "test", - ignoreChangeOnUnload + ignoreChangeOnUnload, ); }); it("removes the %-command key from localStorage", () => { @@ -90,7 +90,7 @@ describe("storage commands", () => { }, document.createElement("form"), "test", - ignoreChangeOnUnload + ignoreChangeOnUnload, ); }); @@ -125,7 +125,7 @@ describe("storage commands", () => { }, form, "test", - ignoreChangeOnUnload + ignoreChangeOnUnload, ); }); diff --git a/static/js/publisher/metrics/graphs/activeDevicesGraph/dataProcessing.js b/static/js/publisher/metrics/graphs/activeDevicesGraph/dataProcessing.js index ff8e565b83..323c940455 100644 --- a/static/js/publisher/metrics/graphs/activeDevicesGraph/dataProcessing.js +++ b/static/js/publisher/metrics/graphs/activeDevicesGraph/dataProcessing.js @@ -202,7 +202,7 @@ function prepareAxis() { this.xAxis = axisBottom(this.xScale).tickValues(tickValues).tickPadding(16); this.yAxis = axisLeft(this.yScale).tickFormat((d) => - d === 0 ? "0" : this.shortValue(d) + d === 0 ? "0" : this.shortValue(d), ); } diff --git a/static/js/publisher/metrics/graphs/activeDevicesGraph/index.js b/static/js/publisher/metrics/graphs/activeDevicesGraph/index.js index d2d92103dc..4a11901a66 100644 --- a/static/js/publisher/metrics/graphs/activeDevicesGraph/index.js +++ b/static/js/publisher/metrics/graphs/activeDevicesGraph/index.js @@ -52,7 +52,7 @@ class ActiveDevicesGraph { bottom: 30, left: 50, }, - options.margin || {} + options.margin || {}, ); this.padding = Object.assign( @@ -62,7 +62,7 @@ class ActiveDevicesGraph { bottom: 16, left: 16, }, - options.padding || {} + options.padding || {}, ); this.width; diff --git a/static/js/publisher/metrics/graphs/activeDevicesGraph/tooltips.js b/static/js/publisher/metrics/graphs/activeDevicesGraph/tooltips.js index 8dd46c7d5a..9b160e23ff 100644 --- a/static/js/publisher/metrics/graphs/activeDevicesGraph/tooltips.js +++ b/static/js/publisher/metrics/graphs/activeDevicesGraph/tooltips.js @@ -74,7 +74,7 @@ export function tooltips() { }>`, `${item.key}`, `${commaValue( - item.value + item.value, )}`, ``, ].join(""); @@ -87,7 +87,7 @@ export function tooltips() { `
    `, ``, `${tooltipTimeFormat( - dateData.date + dateData.date, )}`, tooltipRows(dateData, currentHoverKey), ``, diff --git a/static/js/publisher/metrics/metrics.js b/static/js/publisher/metrics/metrics.js index 0a29af69e9..974841eecb 100644 --- a/static/js/publisher/metrics/metrics.js +++ b/static/js/publisher/metrics/metrics.js @@ -32,7 +32,7 @@ function renderMetrics(metrics) { graphType: metrics.activeDevices.type, defaultTrack: metrics.defaultTrack, annotations: metrics.activeDevices.annotations, - } + }, ) .render() .enableTooltip() @@ -76,7 +76,7 @@ function renderPublisherMetrics(options) { { stacked: false, area: false, - } + }, ); const loader = document.querySelector(".snapcraft-metrics__loader"); @@ -106,10 +106,10 @@ function renderPublisherMetrics(options) { json.snaps.forEach((snap) => { const continuedDevices = snap.series.filter( - (singleSeries) => singleSeries.name === "continued" + (singleSeries) => singleSeries.name === "continued", )[0]; const newDevices = snap.series.filter( - (singleSeries) => singleSeries.name === "new" + (singleSeries) => singleSeries.name === "new", )[0]; let totalSeries = []; @@ -118,12 +118,12 @@ function renderPublisherMetrics(options) { totalSeries = continuedDevices.values.map( (continuedValue, index) => { return continuedValue + newDevices.values[index]; - } + }, ); } else { console.log( "There is no information available for continued or new devices.", - snap.series + snap.series, ); } diff --git a/static/js/publisher/preview.js b/static/js/publisher/preview.js index 8d3410db95..84e339e51b 100644 --- a/static/js/publisher/preview.js +++ b/static/js/publisher/preview.js @@ -162,7 +162,7 @@ function screenshotsAndVideos(screenshots, video) { videoSlide.setAttribute("data-video-url", videoDetails.url); videoSlide.setAttribute("data-video-id", videoDetails.id); const videoTemplate = document.querySelector( - `#video-${videoDetails.type}-template` + `#video-${videoDetails.type}-template`, ); if (!videoTemplate) { throw new Error("Video template not available"); @@ -261,7 +261,7 @@ function render(packageName) { const el = document.createElement("div"); el.innerHTML = notification; return el; - })() + })(), ); return; } @@ -306,8 +306,8 @@ function render(packageName) { screenshotsEl, screenshotsAndVideos( transformedState.screenshot_urls, - transformedState.video_urls - ) + transformedState.video_urls, + ), ); hideMap.screenshots(screenshotsEl).classList.remove("u-hide"); terminateScreenshots("#js-snap-screenshots"); @@ -323,10 +323,10 @@ function render(packageName) { const metricsEl = document.querySelector(`[data-live="public_metrics_live"]`); if (metricsEl) { const mapEl = metricsEl.querySelector( - `[data-live="installed_base_by_country_percent"]` + `[data-live="installed_base_by_country_percent"]`, ); const distroEl = metricsEl.querySelector( - `[data-live="weekly_installed_base_by_operating_system_normalized"]` + `[data-live="weekly_installed_base_by_operating_system_normalized"]`, ); if (transformedState.public_metrics_enabled) { @@ -338,7 +338,7 @@ function render(packageName) { if (mapEl) { if ( transformedState.public_metrics_blacklist.indexOf( - "installed_base_by_country_percent" + "installed_base_by_country_percent", ) > -1 ) { mapEl.classList.add("u-hide"); @@ -350,7 +350,7 @@ function render(packageName) { if (distroEl) { if ( transformedState.public_metrics_blacklist.indexOf( - "weekly_installed_base_by_operating_system_normalized" + "weekly_installed_base_by_operating_system_normalized", ) > -1 ) { distroEl.classList.add("u-hide"); @@ -362,7 +362,7 @@ function render(packageName) { // Remove the notification that you can edit the snap const snapOwnerNotification = document.querySelector( - ".js-snap-owner-notification" + ".js-snap-owner-notification", ); if (snapOwnerNotification) { snapOwnerNotification.classList.add("u-hide"); @@ -387,7 +387,7 @@ function establishedConnection(packageName, enableButtons) { */ function preview(packageName) { let initialState = JSON.parse( - window.localStorage.getItem(`${packageName}-initial`) + window.localStorage.getItem(`${packageName}-initial`), ); let editButton; let revertButton; diff --git a/static/js/publisher/publicise.js b/static/js/publisher/publicise.js index 199202003b..26f691778f 100644 --- a/static/js/publisher/publicise.js +++ b/static/js/publisher/publicise.js @@ -7,7 +7,7 @@ function initSnapButtonsPicker() { const open = document.querySelector("#" + language + "_content"); const notHidden = document.querySelector( - ".js-language-content:not(.u-hide)" + ".js-language-content:not(.u-hide)", ); if (notHidden) { notHidden.classList.add("u-hide"); @@ -67,7 +67,7 @@ const getCardPath = (snapName, options = {}) => { const getCardEmbedHTML = (snapName, options) => { return `<iframe src="https://snapcraft.io${getCardPath( snapName, - options + options, )}" frameborder="0" width="100%" height="${ options.frameHeight }px" style="border: 1px solid #CCC; border-radius: 2px;"></iframe>`; @@ -152,7 +152,7 @@ function initEmbeddedCardPicker(options) { if (previewFrame.offsetParent && previewFrame.contentWindow.document.body) { const height = Math.floor( - (previewFrame.contentWindow.document.body.clientHeight + 20) / 10 + (previewFrame.contentWindow.document.body.clientHeight + 20) / 10, ) * 10; if (height !== state.frameHeight) { @@ -185,7 +185,7 @@ const getBadgePath = ( snapName, badgeName = "badge", showName = true, - isPreview = false + isPreview = false, ) => { const params = []; if (!showName) { @@ -207,7 +207,7 @@ const getBadgePreview = (snapName, badgeName, showName) => { snapName, badgeName, showName, - badgeName === "trending" + badgeName === "trending", )}" /> `; }; @@ -217,7 +217,7 @@ const getBadgeHTML = (snapName, badgeName, showName) => { <img alt="${snapName}" src="https://snapcraft.io${getBadgePath( snapName, badgeName, - showName + showName, )}" /> </a>`; }; @@ -226,7 +226,7 @@ const getBadgeMarkdown = (snapName, badgeName, showName) => { return `[![${snapName}](https://snapcraft.io${getBadgePath( snapName, badgeName, - showName + showName, )})](https://snapcraft.io/${snapName})`; }; diff --git a/static/js/publisher/release.js b/static/js/publisher/release.js index 4ccd0bd6b0..fc9fd60fd2 100644 --- a/static/js/publisher/release.js +++ b/static/js/publisher/release.js @@ -19,7 +19,7 @@ const initReleases = ( releasesData, channelMap, tracks, - options + options, ) => { const store = createStore( releases, @@ -32,7 +32,7 @@ const initReleases = ( tracks, }, }, - composeEnhancers(applyMiddleware(thunk)) + composeEnhancers(applyMiddleware(thunk)), ); const container = document.querySelector(id); const root = createRoot(container); @@ -46,7 +46,7 @@ const initReleases = ( options={options} /> - + , ); }; diff --git a/static/js/publisher/release/actions/availableRevisionsSelect.test.js b/static/js/publisher/release/actions/availableRevisionsSelect.test.js index c8f7c70c09..63d313431d 100644 --- a/static/js/publisher/release/actions/availableRevisionsSelect.test.js +++ b/static/js/publisher/release/actions/availableRevisionsSelect.test.js @@ -25,7 +25,7 @@ describe("availableRevisionsSelect actions", () => { it("should create an action to set value of available revisions select", () => { expect(setAvailableRevisionsSelect(value).type).toBe( - SET_AVAILABLE_REVISIONS_SELECT + SET_AVAILABLE_REVISIONS_SELECT, ); }); @@ -57,7 +57,7 @@ describe("availableRevisionsSelect actions", () => { it("should dispatch SET_AVAILABLE_REVISIONS_SELECT action", () => { expect(store.getActions()).toContainEqual( - setAvailableRevisionsSelect(value) + setAvailableRevisionsSelect(value), ); }); @@ -72,7 +72,7 @@ describe("availableRevisionsSelect actions", () => { it("should not dispatch SELECT_REVISION action for not selected revisions", () => { expect(store.getActions()).not.toContainEqual( - selectRevision(revisions[3]) + selectRevision(revisions[3]), ); }); @@ -98,7 +98,7 @@ describe("availableRevisionsSelect actions", () => { expect.objectContaining({ type: SELECT_REVISION, }), - ]) + ]), ); }); }); @@ -139,16 +139,16 @@ describe("availableRevisionsSelect actions", () => { it("should dispatch SELECT_REVISION action for latest revisions with most recent version", () => { expect(store.getActions()).toContainEqual( - selectRevision(revisions[1]) + selectRevision(revisions[1]), ); expect(store.getActions()).toContainEqual( - selectRevision(revisions[3]) + selectRevision(revisions[3]), ); }); it("should not dispatch SELECT_REVISION action for latest revisions with other versions", () => { expect(store.getActions()).not.toContainEqual( - selectRevision(revisions[2]) + selectRevision(revisions[2]), ); }); }); @@ -176,7 +176,7 @@ describe("availableRevisionsSelect actions", () => { expect.objectContaining({ type: SELECT_REVISION, }), - ]) + ]), ); }); }); @@ -217,16 +217,16 @@ describe("availableRevisionsSelect actions", () => { it("should dispatch SELECT_REVISION action for latest revisions with most recent build id", () => { expect(store.getActions()).toContainEqual( - selectRevision(revisions[1]) + selectRevision(revisions[1]), ); expect(store.getActions()).toContainEqual( - selectRevision(revisions[3]) + selectRevision(revisions[3]), ); }); it("should not dispatch SELECT_REVISION action for latest revisions with other versions", () => { expect(store.getActions()).not.toContainEqual( - selectRevision(revisions[2]) + selectRevision(revisions[2]), ); }); }); diff --git a/static/js/publisher/release/actions/channelMap.test.js b/static/js/publisher/release/actions/channelMap.test.js index e87ef0dee7..3b7604ecdd 100644 --- a/static/js/publisher/release/actions/channelMap.test.js +++ b/static/js/publisher/release/actions/channelMap.test.js @@ -73,7 +73,7 @@ describe("channelMap actions", () => { describe("releaseRevisionSuccess", () => { it("should create an action to release revision", () => { expect(releaseRevisionSuccess(revision, channel).type).toBe( - RELEASE_REVISION_SUCCESS + RELEASE_REVISION_SUCCESS, ); }); diff --git a/static/js/publisher/release/actions/defaultTrack.js b/static/js/publisher/release/actions/defaultTrack.js index 5af1c7fd15..bd01bbd3ae 100644 --- a/static/js/publisher/release/actions/defaultTrack.js +++ b/static/js/publisher/release/actions/defaultTrack.js @@ -40,7 +40,7 @@ export function clearDefaultTrack() { appearance: "positive", content: `The default track for ${snapName} has been removed. All new installations without a specified track (e.g. \`sudo snap install ${snapName}\`) will receive updates from latest track.`, canDismiss: true, - }) + }), ); }); }; @@ -65,7 +65,7 @@ export function setDefaultTrack() { appearance: "positive", content: `The default track for ${snapName} has been set to ${currentTrack}. All new installations without a specified track (e.g. \`sudo snap install ${snapName}\`) will receive updates from the newly defined default track.`, canDismiss: true, - }) + }), ); }); }; diff --git a/static/js/publisher/release/actions/history.js b/static/js/publisher/release/actions/history.js index 35cf7b2bf7..3df6cba4ac 100644 --- a/static/js/publisher/release/actions/history.js +++ b/static/js/publisher/release/actions/history.js @@ -34,8 +34,8 @@ export function toggleHistory(filters) { dispatch( triggerGAEvent( `click-close-history`, - `${filters.track}/${filters.risk}/${filters.branch}/${filters.arch}` - ) + `${filters.track}/${filters.risk}/${filters.branch}/${filters.arch}`, + ), ); } dispatch(closeHistory()); @@ -44,8 +44,8 @@ export function toggleHistory(filters) { dispatch( triggerGAEvent( `click-open-history`, - `${filters.track}/${filters.risk}/${filters.branch}/${filters.arch}` - ) + `${filters.track}/${filters.risk}/${filters.branch}/${filters.arch}`, + ), ); } dispatch(openHistory(filters)); diff --git a/static/js/publisher/release/actions/pendingReleases.js b/static/js/publisher/release/actions/pendingReleases.js index a59aa20897..987d0ad626 100644 --- a/static/js/publisher/release/actions/pendingReleases.js +++ b/static/js/publisher/release/actions/pendingReleases.js @@ -21,7 +21,7 @@ export function releaseRevision(revision, channel, progressive) { const previousRevisions = getReleases( state, revision.architectures, - channel + channel, ) .filter((release) => release.revision !== revision.revision) .map((release) => revisions[release.revision]); @@ -143,8 +143,8 @@ export function undoRelease(revision, channel) { dispatch( triggerGAEvent( "click-cancel-promotion", - `${channel}/${revision.architectures[0]}` - ) + `${channel}/${revision.architectures[0]}`, + ), ); return dispatch({ type: UNDO_RELEASE, diff --git a/static/js/publisher/release/actions/pendingReleases.test.js b/static/js/publisher/release/actions/pendingReleases.test.js index dd9269ad6d..cef6606c1b 100644 --- a/static/js/publisher/release/actions/pendingReleases.test.js +++ b/static/js/publisher/release/actions/pendingReleases.test.js @@ -58,21 +58,21 @@ describe("pendingReleases actions", () => { const store = mockStore(stateWithRevisions); it("should create an action to promote revision", () => { expect(store.dispatch(releaseRevision(revision, channel)).type).toBe( - RELEASE_REVISION + RELEASE_REVISION, ); }); it("should supply a payload with revision", () => { const store = mockStore(stateWithRevisions); expect( - store.dispatch(releaseRevision(revision, channel)).payload.revision + store.dispatch(releaseRevision(revision, channel)).payload.revision, ).toEqual(revision); }); it("should supply a payload with channel", () => { const store = mockStore(stateWithRevisions); expect( - store.dispatch(releaseRevision(revision, channel)).payload.channel + store.dispatch(releaseRevision(revision, channel)).payload.channel, ).toEqual(channel); }); @@ -89,7 +89,7 @@ describe("pendingReleases actions", () => { }; const store = mockStore(stateWithPreviousReleases); expect( - store.dispatch(releaseRevision(revision, channel)).payload.progressive + store.dispatch(releaseRevision(revision, channel)).payload.progressive, ).toEqual({ percentage: 100, paused: false, @@ -99,7 +99,7 @@ describe("pendingReleases actions", () => { it("should not supply a payload with a progressive release if there aren't previous releases", () => { const store = mockStore(stateWithRevisions); expect( - store.dispatch(releaseRevision(revision, channel)).payload.progressive + store.dispatch(releaseRevision(revision, channel)).payload.progressive, ).toBeUndefined(); }); @@ -107,7 +107,7 @@ describe("pendingReleases actions", () => { const store = mockStore(stateWithRevisions); expect( store.dispatch(releaseRevision(revision, channel)).payload - .previousRevisions + .previousRevisions, ).toEqual([]); }); @@ -145,8 +145,8 @@ describe("pendingReleases actions", () => { const dispatch = store.dispatch( releaseRevision(revisionWithRelease, channel)( store.dispatch, - store.getState - ) + store.getState, + ), ); expect(dispatch.payload.previousRevisions).toEqual([ @@ -168,7 +168,7 @@ describe("pendingReleases actions", () => { const actions = store.getActions(); const expectedAction = releaseRevision(revision, channel)( store.dispatch, - store.getState + store.getState, ); expect(actions).toContainEqual(expectedAction); @@ -241,7 +241,7 @@ describe("pendingReleases actions", () => { progressive: actions.find( (action) => action.payload.revision.revision === revision.revision && - action.payload.channel === targetChannel + action.payload.channel === targetChannel, ).payload.progressive, }, }); @@ -251,7 +251,7 @@ describe("pendingReleases actions", () => { progressive: actions.find( (action) => action.payload.revision.revision === revision2.revision && - action.payload.channel === targetChannel + action.payload.channel === targetChannel, ).payload.progressive, revision: revision2, channel: targetChannel, @@ -266,19 +266,19 @@ describe("pendingReleases actions", () => { const store = mockStore(stateWithRevisions); it("should create an action to undo release of revision", () => { expect(store.dispatch(undoRelease(revision, channel)).type).toBe( - UNDO_RELEASE + UNDO_RELEASE, ); }); it("should supply a payload with revision", () => { expect( - store.dispatch(undoRelease(revision, channel)).payload.revision + store.dispatch(undoRelease(revision, channel)).payload.revision, ).toEqual(revision); }); it("should supply a payload with channel", () => { expect( - store.dispatch(undoRelease(revision, channel)).payload.channel + store.dispatch(undoRelease(revision, channel)).payload.channel, ).toEqual(channel); }); }); @@ -286,7 +286,7 @@ describe("pendingReleases actions", () => { describe("cancelPendingReleases", () => { it("should create an action to cancel pending releases", () => { expect(cancelPendingReleases(revision, channel).type).toBe( - CANCEL_PENDING_RELEASES + CANCEL_PENDING_RELEASES, ); }); }); @@ -296,13 +296,13 @@ describe("pendingReleases actions", () => { it("should create an action to set release progressive percentage", () => { expect(setProgressiveReleasePercentage(percentage).type).toBe( - SET_PROGRESSIVE_RELEASE_PERCENTAGE + SET_PROGRESSIVE_RELEASE_PERCENTAGE, ); }); it("should supply a payload with percentage", () => { expect( - setProgressiveReleasePercentage(percentage).payload.percentage + setProgressiveReleasePercentage(percentage).payload.percentage, ).toEqual(percentage); }); }); @@ -312,13 +312,13 @@ describe("pendingReleases actions", () => { it("should create an action to update release percentage", () => { expect(updateProgressiveReleasePercentage(percentage).type).toBe( - UPDATE_PROGRESSIVE_RELEASE_PERCENTAGE + UPDATE_PROGRESSIVE_RELEASE_PERCENTAGE, ); }); it("should supply a payload with percentage", () => { expect( - updateProgressiveReleasePercentage(percentage).payload.percentage + updateProgressiveReleasePercentage(percentage).payload.percentage, ).toEqual(percentage); }); }); @@ -355,13 +355,13 @@ describe("pendingReleases actions", () => { it("should create an action to cancel a release", () => { expect(cancelProgressiveRelease(previousRevision).type).toBe( - CANCEL_PROGRESSIVE_RELEASE + CANCEL_PROGRESSIVE_RELEASE, ); }); it("should supply a revision in the payload", () => { expect( - cancelProgressiveRelease(previousRevision).payload.previousRevision + cancelProgressiveRelease(previousRevision).payload.previousRevision, ).toBe(previousRevision); }); }); diff --git a/static/js/publisher/release/actions/releases.js b/static/js/publisher/release/actions/releases.js index 1341c97643..811b9e0195 100644 --- a/static/js/publisher/release/actions/releases.js +++ b/static/js/publisher/release/actions/releases.js @@ -46,7 +46,7 @@ export function handleCloseResponse(dispatch, json, channels) { } } else { let error = new Error( - `Error while closing channels: ${channels.join(", ")}.` + `Error while closing channels: ${channels.join(", ")}.`, ); error.json = json; throw error; @@ -153,7 +153,7 @@ export function releaseRevisions() { progressiveReleases.push(mapToRelease(pendingRelease)); } else { const releaseIndex = regularReleases.findIndex( - (release) => release.revision.revision === parseInt(revId) + (release) => release.revision.revision === parseInt(revId), ); if (releaseIndex === -1) { regularReleases.push(mapToRelease(pendingRelease)); @@ -172,7 +172,7 @@ export function releaseRevisions() { json, release, revisions, - defaultTrack + defaultTrack, ); }; @@ -183,7 +183,7 @@ export function releaseRevisions() { dispatch(hideNotification()); return fetchReleases(_handleReleaseResponse, releases, csrfToken, snapName) .then(() => - fetchCloses(_handleCloseResponse, csrfToken, snapName, pendingCloses) + fetchCloses(_handleCloseResponse, csrfToken, snapName, pendingCloses), ) .then(() => fetchReleasesHistory(csrfToken, snapName)) .then((json) => dispatch(updateReleasesData(json))) @@ -193,8 +193,8 @@ export function releaseRevisions() { status: "error", appearance: "negative", content: getErrorMessage(error), - }) - ) + }), + ), ) .then(() => dispatch(cancelPendingReleases())) .then(() => dispatch(closeHistory())); diff --git a/static/js/publisher/release/actions/releases.test.js b/static/js/publisher/release/actions/releases.test.js index a34e9b8afd..3041368b31 100644 --- a/static/js/publisher/release/actions/releases.test.js +++ b/static/js/publisher/release/actions/releases.test.js @@ -74,7 +74,7 @@ describe("releases actions", () => { getErrorMessage({ message: "error!", json: [{ message: "error1" }, { message: "error2" }], - }) + }), ).toEqual("error! error1 error2"); }); @@ -83,7 +83,7 @@ describe("releases actions", () => { getErrorMessage({ message: "error!", json: { errors: [{ message: "error1" }, { message: "error2" }] }, - }) + }), ).toEqual("error! error1 error2"); }); @@ -97,7 +97,7 @@ describe("releases actions", () => { message: "error message", }, ], - }) + }), ).toEqual("error message"); }); }); diff --git a/static/js/publisher/release/api/releases.js b/static/js/publisher/release/api/releases.js index 1d5b34b464..eabd2183e4 100644 --- a/static/js/publisher/release/api/releases.js +++ b/static/js/publisher/release/api/releases.js @@ -13,7 +13,7 @@ export function fetchReleases(onComplete, releases, csrfToken, snapName) { snapName, release.id, release.channels, - release.progressive + release.progressive, ).then((json) => onComplete(json, release)); })); }); @@ -45,7 +45,7 @@ export function fetchRelease( snapName, revision, channels, - progressive + progressive, ) { const body = { name: snapName, diff --git a/static/js/publisher/release/components/channelMenu.js b/static/js/publisher/release/components/channelMenu.js index 324b4da59a..5d6afbbf3a 100644 --- a/static/js/publisher/release/components/channelMenu.js +++ b/static/js/publisher/release/components/channelMenu.js @@ -89,7 +89,7 @@ export default class ChannelMenu extends Component { render() { const canBePromoted = !this.props.targetChannels.every( - (targetChannel) => targetChannel.isDisabled + (targetChannel) => targetChannel.isDisabled, ); const isDisabled = !canBePromoted && !this.props.closeChannel; diff --git a/static/js/publisher/release/components/defaultTrackModifier.js b/static/js/publisher/release/components/defaultTrackModifier.js index 9bbc53c340..ca954f0003 100644 --- a/static/js/publisher/release/components/defaultTrackModifier.js +++ b/static/js/publisher/release/components/defaultTrackModifier.js @@ -163,5 +163,5 @@ const mapDispatchToProps = (dispatch) => ({ export default connect( mapStateToProps, - mapDispatchToProps + mapDispatchToProps, )(DefaultTrackModifier); diff --git a/static/js/publisher/release/components/modal.js b/static/js/publisher/release/components/modal.js index b202695845..087db26ca5 100644 --- a/static/js/publisher/release/components/modal.js +++ b/static/js/publisher/release/components/modal.js @@ -78,7 +78,7 @@ const mapActionButtonDispatchToProps = (dispatch) => ({ const ModalActionButtonWrapped = connect( null, - mapActionButtonDispatchToProps + mapActionButtonDispatchToProps, )(ModalActionButton); const Modal = ({ title, content, actions, closeModal }) => { diff --git a/static/js/publisher/release/components/releasesConfirm.js b/static/js/publisher/release/components/releasesConfirm.js index d363fe69c0..df69b50bac 100644 --- a/static/js/publisher/release/components/releasesConfirm.js +++ b/static/js/publisher/release/components/releasesConfirm.js @@ -38,7 +38,7 @@ class ReleasesConfirm extends Component { this.stickyBar.current.classList.toggle("is-pinned", topPosition === 0); }), - 500 + 500, ); } @@ -77,7 +77,7 @@ class ReleasesConfirm extends Component { toggleDetails() { this.props.triggerGAEvent( - `click-${this.state.showDetails ? "hide" : "show"}-details` + `click-${this.state.showDetails ? "hide" : "show"}-details`, ); this.setState({ showDetails: !this.state.showDetails, diff --git a/static/js/publisher/release/components/releasesConfirmDetails/index.js b/static/js/publisher/release/components/releasesConfirmDetails/index.js index cd15d1475e..dd1d0823e5 100644 --- a/static/js/publisher/release/components/releasesConfirmDetails/index.js +++ b/static/js/publisher/release/components/releasesConfirmDetails/index.js @@ -116,5 +116,5 @@ const mapDispatchToProps = (dispatch) => { export default connect( mapStateToProps, - mapDispatchToProps + mapDispatchToProps, )(ReleasesConfirmDetails); diff --git a/static/js/publisher/release/components/releasesConfirmDetails/progressiveRow.js b/static/js/publisher/release/components/releasesConfirmDetails/progressiveRow.js index 389b4a473a..2e7529c138 100644 --- a/static/js/publisher/release/components/releasesConfirmDetails/progressiveRow.js +++ b/static/js/publisher/release/components/releasesConfirmDetails/progressiveRow.js @@ -64,7 +64,7 @@ class ProgressiveRow extends React.Component { release.progressive.changes.some((change) => change.key === "paused") ) { const paused = release.progressive.changes.find( - (change) => change.key === "paused" + (change) => change.key === "paused", ).value; progress = ( diff --git a/static/js/publisher/release/components/releasesTable/cellViews.js b/static/js/publisher/release/components/releasesTable/cellViews.js index 7b2d7393b9..1f8d427522 100644 --- a/static/js/publisher/release/components/releasesTable/cellViews.js +++ b/static/js/publisher/release/components/releasesTable/cellViews.js @@ -280,7 +280,7 @@ export const ReleasesTableCellView = (props) => { className={className} onMouseEnter={() => { const hoveredRow = document.querySelector( - ".p-releases-table__row.is-hovered" + ".p-releases-table__row.is-hovered", ); if (hoveredRow) { diff --git a/static/js/publisher/release/components/releasesTable/channelHeading.js b/static/js/publisher/release/components/releasesTable/channelHeading.js index 0f36512bb8..ac4a3d1a28 100644 --- a/static/js/publisher/release/components/releasesTable/channelHeading.js +++ b/static/js/publisher/release/components/releasesTable/channelHeading.js @@ -47,7 +47,7 @@ const disabledBecauseNotSelected = "Select some revisions to promote them."; // TODO: move to selectors or helpers? const compareRevisionsPerArch = ( currentRevisionsByArch, - targetRevisionsByArch + targetRevisionsByArch, ) => { if (currentRevisionsByArch) { return Object.keys(currentRevisionsByArch).every((arch) => { @@ -176,7 +176,7 @@ const ReleasesTableChannelHeading = (props) => { if ( compareRevisionsPerArch( rowRevisions, - pendingChannelMap[targetChannel.channel] + pendingChannelMap[targetChannel.channel], ) ) { targetChannel.isDisabled = true; @@ -189,7 +189,7 @@ const ReleasesTableChannelHeading = (props) => { } else { // order the channel names const channelOrder = sortChannels( - targetChannels.map((channel) => channel.channel) + targetChannels.map((channel) => channel.channel), ).list; // remap targetchannels to this new order @@ -245,7 +245,7 @@ const ReleasesTableChannelHeading = (props) => { channelBuildDate = Object.values(revisions)[0].attributes["build-request-timestamp"] && new Date( - Object.values(revisions)[0].attributes["build-request-timestamp"] + Object.values(revisions)[0].attributes["build-request-timestamp"], ); } } @@ -269,7 +269,7 @@ const ReleasesTableChannelHeading = (props) => { Object.values(rowRevisions).forEach( (revision) => canBeReleased(revision) && - props.promoteRevision(revision, targetChannel) + props.promoteRevision(revision, targetChannel), ); }; @@ -412,5 +412,5 @@ const mapDispatchToProps = (dispatch) => { export default connect( mapStateToProps, - mapDispatchToProps + mapDispatchToProps, )(ReleasesTableChannelHeading); diff --git a/static/js/publisher/release/components/releasesTable/droppableRow.js b/static/js/publisher/release/components/releasesTable/droppableRow.js index fb0c4cb025..1998647737 100644 --- a/static/js/publisher/release/components/releasesTable/droppableRow.js +++ b/static/js/publisher/release/components/releasesTable/droppableRow.js @@ -53,14 +53,14 @@ const ReleasesTableDroppableRow = (props) => { accept: DND_ITEM_REVISIONS, drop: (item) => { item.revisions.forEach( - (r) => canBeReleased(r) && promoteRevision(r, channel) + (r) => canBeReleased(r) && promoteRevision(r, channel), ); if (item.revisions.length > 1) { triggerGAEvent( "drop-channel", `${currentTrack}/${item.risk}/${item.branch ? item.branch : null}`, - `${currentTrack}/${risk}/${branchName}` + `${currentTrack}/${risk}/${branchName}`, ); } else { triggerGAEvent( @@ -68,7 +68,7 @@ const ReleasesTableDroppableRow = (props) => { `${currentTrack}/${item.risk}/${item.branch ? item.branch : null}/${ item.architectures[0] }`, - `${currentTrack}/${risk}/${branchName}/${item.architectures[0]}` + `${currentTrack}/${risk}/${branchName}/${item.architectures[0]}`, ); } }, @@ -80,7 +80,7 @@ const ReleasesTableDroppableRow = (props) => { const draggedChannel = getChannelName( currentTrack, item.risk, - item.branch + item.branch, ); const dropChannel = getChannelName(currentTrack, risk, branchName); @@ -214,5 +214,5 @@ const mapDispatchToProps = (dispatch) => { export default connect( mapStateToProps, - mapDispatchToProps + mapDispatchToProps, )(ReleasesTableDroppableRow); diff --git a/static/js/publisher/release/components/releasesTable/releaseCell.js b/static/js/publisher/release/components/releasesTable/releaseCell.js index 693f542277..bcea1947f7 100644 --- a/static/js/publisher/release/components/releasesTable/releaseCell.js +++ b/static/js/publisher/release/components/releasesTable/releaseCell.js @@ -64,7 +64,7 @@ const ReleasesTableReleaseCell = (props) => { [previousRevision, pendingProgressiveState] = getProgressiveState( channel, arch, - pendingRelease + pendingRelease, ); } @@ -166,7 +166,7 @@ const ReleasesTableReleaseCell = (props) => { arch, risk, track, - branchName + branchName, )} /> )} @@ -225,5 +225,5 @@ const mapDispatchToProps = (dispatch) => { export default connect( mapStateToProps, - mapDispatchToProps + mapDispatchToProps, )(ReleasesTableReleaseCell); diff --git a/static/js/publisher/release/helpers.test.js b/static/js/publisher/release/helpers.test.js index 92ecbda43e..2304a66ff7 100644 --- a/static/js/publisher/release/helpers.test.js +++ b/static/js/publisher/release/helpers.test.js @@ -14,7 +14,7 @@ describe("getChannelName", () => { it("should return track/risk/branch pair as a name", () => { expect(getChannelName("track", "risk", "branch")).toEqual( - "track/risk/branch" + "track/risk/branch", ); }); @@ -33,7 +33,7 @@ describe("isRevisionBuiltOnLauchpad", () => { isRevisionBuiltOnLauchpad({ revision: 1, attributes: { "build-request-id": "something-else" }, - }) + }), ).toBe(false); }); @@ -43,7 +43,7 @@ describe("isRevisionBuiltOnLauchpad", () => { revision: 1, version: "1", attributes: { "build-request-id": "lp-123" }, - }) + }), ).toBe(true); }); }); diff --git a/static/js/publisher/release/reducers/availableRevisionsSelect.js b/static/js/publisher/release/reducers/availableRevisionsSelect.js index 1c0bf51828..b15b1795c2 100644 --- a/static/js/publisher/release/reducers/availableRevisionsSelect.js +++ b/static/js/publisher/release/reducers/availableRevisionsSelect.js @@ -3,7 +3,7 @@ import { SET_AVAILABLE_REVISIONS_SELECT } from "../actions/availableRevisionsSel export default function availableRevisionsSelect( state = AVAILABLE_REVISIONS_SELECT_UNRELEASED, - action + action, ) { switch (action.type) { case SET_AVAILABLE_REVISIONS_SELECT: diff --git a/static/js/publisher/release/reducers/availableRevisionsSelect.test.js b/static/js/publisher/release/reducers/availableRevisionsSelect.test.js index 7df8a2be4a..e629cd3def 100644 --- a/static/js/publisher/release/reducers/availableRevisionsSelect.test.js +++ b/static/js/publisher/release/reducers/availableRevisionsSelect.test.js @@ -5,7 +5,7 @@ import { AVAILABLE_REVISIONS_SELECT_UNRELEASED } from "../constants"; describe("releases", () => { it("should return the initial state", () => { expect(availableRevisionsSelect(undefined, {})).toEqual( - AVAILABLE_REVISIONS_SELECT_UNRELEASED + AVAILABLE_REVISIONS_SELECT_UNRELEASED, ); }); diff --git a/static/js/publisher/release/reducers/channelMap.js b/static/js/publisher/release/reducers/channelMap.js index 4353470cba..2c22d99387 100644 --- a/static/js/publisher/release/reducers/channelMap.js +++ b/static/js/publisher/release/reducers/channelMap.js @@ -73,7 +73,7 @@ export default function channelMap(state = {}, action) { return selectRevision( state, action.payload.revision, - action.payload.toggle + action.payload.toggle, ); case CLEAR_SELECTED_REVISIONS: return { @@ -84,7 +84,7 @@ export default function channelMap(state = {}, action) { return releaseRevision( state, action.payload.revision, - action.payload.channel + action.payload.channel, ); case CLOSE_CHANNEL_SUCCESS: return closeChannel(state, action.payload.channel); diff --git a/static/js/publisher/release/reducers/channelMap.test.js b/static/js/publisher/release/reducers/channelMap.test.js index 9e13b0fb0e..3f65e52e90 100644 --- a/static/js/publisher/release/reducers/channelMap.test.js +++ b/static/js/publisher/release/reducers/channelMap.test.js @@ -74,7 +74,7 @@ describe("channelMap", () => { it("should update selected revision", () => { const result = channelMap( stateWithSelectedRevision, - selectRevisionAction + selectRevisionAction, ); expect(result[AVAILABLE]["abc42"]).toEqual(revision); @@ -108,7 +108,7 @@ describe("channelMap", () => { it("should remove selected revision from AVAILABLE channel", () => { const result = channelMap( stateWithSelectedRevision, - toggleRevisionAction + toggleRevisionAction, ); expect(result[AVAILABLE]["abc42"]).toBeUndefined(); @@ -174,7 +174,7 @@ describe("channelMap", () => { it("should not update released revision if it has the same id", () => { const result = channelMap( stateWithReleasedRevision, - releaseRevisionAction + releaseRevisionAction, ); expect(result[channel]["abc42"].isPreviouslyReleased).toBe(true); @@ -218,7 +218,7 @@ describe("channelMap", () => { it("should remove channel from channel map", () => { const result = channelMap( stateWithReleasedRevision, - closeChannelAction + closeChannelAction, ); expect(result[channel]).toBeUndefined(); diff --git a/static/js/publisher/release/reducers/defaultTrack.test.js b/static/js/publisher/release/reducers/defaultTrack.test.js index ccc615c462..fd93ee6a8f 100644 --- a/static/js/publisher/release/reducers/defaultTrack.test.js +++ b/static/js/publisher/release/reducers/defaultTrack.test.js @@ -14,7 +14,7 @@ describe("defaultTrack", () => { { type: SET_DEFAULT_TRACK_SUCCESS, payload: "test", - } + }, ); expect(result).toEqual("test"); diff --git a/static/js/publisher/release/reducers/history.js b/static/js/publisher/release/reducers/history.js index 20716692fd..bb82474e3d 100644 --- a/static/js/publisher/release/reducers/history.js +++ b/static/js/publisher/release/reducers/history.js @@ -6,7 +6,7 @@ export default function history( filters: null, isOpen: false, }, - action + action, ) { switch (action.type) { case OPEN_HISTORY: diff --git a/static/js/publisher/release/reducers/pendingCloses.test.js b/static/js/publisher/release/reducers/pendingCloses.test.js index 12c4e5ec85..ed94042c00 100644 --- a/static/js/publisher/release/reducers/pendingCloses.test.js +++ b/static/js/publisher/release/reducers/pendingCloses.test.js @@ -34,7 +34,7 @@ describe("pendingCloses", () => { it("should add channel to pending closes", () => { const result = pendingCloses( stateWithOtherPendingCloses, - closeChannelAction + closeChannelAction, ); expect(result).toEqual([...stateWithOtherPendingCloses, channel]); @@ -47,7 +47,7 @@ describe("pendingCloses", () => { it("should not add duplicated channel to pending closes", () => { const result = pendingCloses( stateWithPendingCloses, - closeChannelAction + closeChannelAction, ); expect(result).toEqual(stateWithPendingCloses); @@ -80,7 +80,7 @@ describe("pendingCloses", () => { it("should not change the state", () => { const result = pendingCloses( stateWithOtherPendingCloses, - releaseRevisionAction + releaseRevisionAction, ); expect(result).toBe(stateWithOtherPendingCloses); @@ -93,7 +93,7 @@ describe("pendingCloses", () => { it("should remove pending close of the channel released to", () => { const result = pendingCloses( stateWithPendingCloses, - releaseRevisionAction + releaseRevisionAction, ); expect(result).toEqual(["latest/candidate"]); @@ -122,7 +122,7 @@ describe("pendingCloses", () => { it("should remove all pending releases", () => { const result = pendingCloses( stateWithPendingCloses, - cancelPendingReleasesAction + cancelPendingReleasesAction, ); expect(result).toEqual([]); diff --git a/static/js/publisher/release/reducers/pendingReleases.js b/static/js/publisher/release/reducers/pendingReleases.js index e3a0e743ef..9da62f6fca 100644 --- a/static/js/publisher/release/reducers/pendingReleases.js +++ b/static/js/publisher/release/reducers/pendingReleases.js @@ -33,7 +33,7 @@ function releaseRevision( revision, channel, progressive, - previousRevisions + previousRevisions, ) { state = { ...state }; @@ -51,7 +51,7 @@ function releaseRevision( state = removePendingRelease( state, pendingRelease[channel].revision, - channel + channel, ); } }); @@ -85,7 +85,7 @@ function closeChannel(state, channel) { state = removePendingRelease( state, pendingRelease[channel].revision, - channel + channel, ); } }); @@ -205,13 +205,13 @@ export default function pendingReleases(state = {}, action) { action.payload.revision, action.payload.channel, action.payload.progressive, - action.payload.previousRevisions + action.payload.previousRevisions, ); case UNDO_RELEASE: return removePendingRelease( state, action.payload.revision, - action.payload.channel + action.payload.channel, ); case CANCEL_PENDING_RELEASES: return {}; diff --git a/static/js/publisher/release/reducers/pendingReleases.test.js b/static/js/publisher/release/reducers/pendingReleases.test.js index 4b73d0a369..c2755ac339 100644 --- a/static/js/publisher/release/reducers/pendingReleases.test.js +++ b/static/js/publisher/release/reducers/pendingReleases.test.js @@ -56,7 +56,7 @@ describe("pendingReleases", () => { it("should add new release to list of pending releases", () => { const result = pendingReleases( stateWithSamePendingRevision, - releaseRevisionAction + releaseRevisionAction, ); expect(result[1]).toEqual({ @@ -90,7 +90,7 @@ describe("pendingReleases", () => { it("should add promoted revision to state", () => { const result = pendingReleases( stateWithPendingReleases, - releaseRevisionAction + releaseRevisionAction, ); expect(result).toEqual({ @@ -133,7 +133,7 @@ describe("pendingReleases", () => { it("should add promoted revision to state", () => { const result = pendingReleases( stateWithPendingReleases, - releaseRevisionAction + releaseRevisionAction, ); expect(result).toMatchObject({ @@ -149,7 +149,7 @@ describe("pendingReleases", () => { it("should remove pending releases from same arch and channel", () => { const result = pendingReleases( stateWithPendingReleases, - releaseRevisionAction + releaseRevisionAction, ); expect(Object.keys(result)).not.toContain(4); @@ -180,7 +180,7 @@ describe("pendingReleases", () => { const result = pendingReleases( state, - releaseRevisionPreviousRevisionsAction + releaseRevisionPreviousRevisionsAction, ); expect(result).toEqual({ @@ -213,7 +213,7 @@ describe("pendingReleases", () => { it("should add a pending release with progressive state", () => { const result = pendingReleases( {}, - releaseRevisionActionWithProgressive + releaseRevisionActionWithProgressive, ); expect(result).toEqual({ @@ -233,7 +233,7 @@ describe("pendingReleases", () => { const result = pendingReleases( {}, - releaseRevisionActionWith100Progressive + releaseRevisionActionWith100Progressive, ); expect(result).toEqual({ @@ -259,7 +259,7 @@ describe("pendingReleases", () => { it("should not add a pendingRelease", () => { const result = pendingReleases( emptyState, - pauseProgressiveReleaseAction + pauseProgressiveReleaseAction, ); expect(result).toEqual(emptyState); @@ -279,7 +279,7 @@ describe("pendingReleases", () => { it("should not change the pendingRelease", () => { const result = pendingReleases( nonProgressiveState, - pauseProgressiveReleaseAction + pauseProgressiveReleaseAction, ); expect(result).toEqual(nonProgressiveState); @@ -303,7 +303,7 @@ describe("pendingReleases", () => { it("should pause a key matching progressive release", () => { const result = pendingReleases( progressiveReleaseState, - pauseProgressiveReleaseAction + pauseProgressiveReleaseAction, ); expect(result).toEqual({ @@ -333,7 +333,7 @@ describe("pendingReleases", () => { it("should not add a pendingRelease", () => { const result = pendingReleases( emptyState, - resumeProgressiveReleaseAction + resumeProgressiveReleaseAction, ); expect(result).toEqual(emptyState); @@ -353,7 +353,7 @@ describe("pendingReleases", () => { it("should not change the pendingRelease", () => { const result = pendingReleases( nonProgressiveState, - resumeProgressiveReleaseAction + resumeProgressiveReleaseAction, ); expect(result).toEqual(nonProgressiveState); @@ -377,7 +377,7 @@ describe("pendingReleases", () => { it("should resume a key matching progressive release", () => { const result = pendingReleases( progressiveReleaseState, - resumeProgressiveReleaseAction + resumeProgressiveReleaseAction, ); expect(result).toEqual({ @@ -431,7 +431,7 @@ describe("pendingReleases", () => { it("should remove given channel from pending releases", () => { const result = pendingReleases( stateWithRevisionInChannel, - undoReleaseAction + undoReleaseAction, ); expect(result).toEqual({ @@ -455,7 +455,7 @@ describe("pendingReleases", () => { it("should remove revision from the state", () => { const result = pendingReleases( stateWithRevisionInChannel, - undoReleaseAction + undoReleaseAction, ); expect(result).toEqual({}); @@ -501,7 +501,7 @@ describe("pendingReleases", () => { it("should remove all pending releases", () => { const result = pendingReleases( stateWithPendingReleases, - cancelPendingReleasesAction + cancelPendingReleasesAction, ); expect(result).toEqual({}); @@ -539,7 +539,7 @@ describe("pendingReleases", () => { it("should not change the state", () => { const result = pendingReleases( stateWithOtherPendingReleases, - closeChannelAction + closeChannelAction, ); expect(result).toBe(stateWithOtherPendingReleases); @@ -571,7 +571,7 @@ describe("pendingReleases", () => { it("should remove pending releases from closed channel", () => { const result = pendingReleases( stateWithPendingReleases, - closeChannelAction + closeChannelAction, ); expect(result[2]).toBeUndefined(); @@ -611,7 +611,7 @@ describe("pendingReleases", () => { it("should not add progressive state", () => { const result = pendingReleases( stateWithPendingRevision, - setProgressiveAction + setProgressiveAction, ); expect(result).toEqual({ @@ -636,7 +636,7 @@ describe("pendingReleases", () => { it("should add progressive state to pending revision", () => { const result = pendingReleases( stateWithPendingRevision, - setProgressiveAction + setProgressiveAction, ); expect(result).toEqual({ @@ -671,7 +671,7 @@ describe("pendingReleases", () => { it("should not update progressive state", () => { const result = pendingReleases( stateWithPendingRevision, - setProgressiveAction + setProgressiveAction, ); expect(result).toEqual(stateWithPendingRevision); @@ -710,7 +710,7 @@ describe("pendingReleases", () => { it("should not affect the pending releases", () => { const result = pendingReleases( stateWithoutProgressiveReleases, - updateProgressiveAction + updateProgressiveAction, ); expect(result).toEqual(stateWithoutProgressiveReleases); @@ -747,7 +747,7 @@ describe("pendingReleases", () => { it("should update progressive releases with same key", () => { const result = pendingReleases( stateWithProgressiveReleases, - updateProgressiveAction + updateProgressiveAction, ); expect(result["1"]["test/edge"]).toEqual({ @@ -778,7 +778,7 @@ describe("pendingReleases", () => { it("should not add a pendingRelease", () => { const result = pendingReleases( emptyState, - cancelProgressiveReleaseAction + cancelProgressiveReleaseAction, ); expect(result).toEqual(emptyState); @@ -798,7 +798,7 @@ describe("pendingReleases", () => { it("should not change the pendingRelease", () => { const result = pendingReleases( nonProgressiveState, - cancelProgressiveReleaseAction + cancelProgressiveReleaseAction, ); expect(result).toEqual(nonProgressiveState); @@ -822,7 +822,7 @@ describe("pendingReleases", () => { it("should replace a key matching progressive release with the new release", () => { const result = pendingReleases( progressiveReleaseState, - cancelProgressiveReleaseAction + cancelProgressiveReleaseAction, ); expect(result).toEqual({ @@ -865,7 +865,7 @@ describe("pendingReleases", () => { it("should replace only the release in the specified channel", () => { const result = pendingReleases( progressiveReleasesState, - cancelProgressiveReleaseAction + cancelProgressiveReleaseAction, ); expect(result).toEqual({ diff --git a/static/js/publisher/release/releasesController.js b/static/js/publisher/release/releasesController.js index 84aa7830a8..3f4e7efffc 100644 --- a/static/js/publisher/release/releasesController.js +++ b/static/js/publisher/release/releasesController.js @@ -45,7 +45,7 @@ const ReleasesController = ({ updateArchitectures(revisionsList); initChannelMap(transformedChannelMap); setReady(true); - } + }, ); }, []); diff --git a/static/js/publisher/release/releasesState.js b/static/js/publisher/release/releasesState.js index 1231ef5c8d..a4a41349d1 100644 --- a/static/js/publisher/release/releasesState.js +++ b/static/js/publisher/release/releasesState.js @@ -72,7 +72,7 @@ function getReleaseDataFromChannelMap(channelMap, revisionsMap, snapName) { if (!releasedChannels[mapInfo.channel][mapInfo.architecture]) { const revisionInfo = revisionsMap.find( - (r) => r.revision === mapInfo.revision + (r) => r.revision === mapInfo.revision, ); if (revisionInfo) { releasedChannels[mapInfo.channel][mapInfo.architecture] = diff --git a/static/js/publisher/release/selectors/index.js b/static/js/publisher/release/selectors/index.js index 4e5f21c944..8e9f3be989 100644 --- a/static/js/publisher/release/selectors/index.js +++ b/static/js/publisher/release/selectors/index.js @@ -68,7 +68,7 @@ export function getFilteredReleaseHistory(state) { export function getSelectedRevisions(state) { if (state.channelMap[AVAILABLE]) { return Object.values(state.channelMap[AVAILABLE]).map( - (revision) => revision.revision + (revision) => revision.revision, ); } @@ -129,7 +129,7 @@ export function getAllRevisions(state) { // get all revisions not released to any channel yet export function getUnreleasedRevisions(state) { return getAllRevisions(state).filter( - (revision) => !revision.channels || revision.channels.length === 0 + (revision) => !revision.channels || revision.channels.length === 0, ); } @@ -137,7 +137,7 @@ export function getUnreleasedRevisions(state) { export function getRecentRevisions(state) { const interval = 1000 * 60 * 60 * 24 * 7; // 7 days return getUnreleasedRevisions(state).filter( - (r) => Date.now() - new Date(r.created_at).getTime() < interval + (r) => Date.now() - new Date(r.created_at).getTime() < interval, ); } @@ -165,7 +165,7 @@ export function getFilteredAvailableRevisions(state) { // filtered by arch (can't be memoized) export function getFilteredAvailableRevisionsForArch(state, arch) { return getFilteredAvailableRevisions(state).filter((revision) => - revision.architectures.includes(arch) + revision.architectures.includes(arch), ); } @@ -199,7 +199,7 @@ export function getBranches(state) { const { track, risk, branch, when, revision } = item; const exists = branches.filter( - (b) => b.track === track && b.risk === risk && b.branch === branch + (b) => b.track === track && b.risk === risk && b.branch === branch, ).length > 0; if (!exists) { @@ -242,7 +242,7 @@ export function hasPendingRelease(state, channel, arch) { export function getTrackRevisions({ channelMap }, track) { const trackKeys = Object.keys(channelMap).filter( - (trackName) => trackName.indexOf(track) == 0 + (trackName) => trackName.indexOf(track) == 0, ); return trackKeys.map((trackName) => channelMap[trackName]); } @@ -259,7 +259,7 @@ export function getLaunchpadRevisions(state) { export function getRevisionsFromBuild(state, buildId) { return getAllRevisions(state).filter( - (revision) => getBuildId(revision) === buildId + (revision) => getBuildId(revision) === buildId, ); } @@ -279,7 +279,7 @@ export function getProgressiveState(state, channel, arch, isPending) { let pendingProgressiveStatus = null; const allReleases = releases.filter( - (item) => channel === getChannelString(item) && arch === item.architecture + (item) => channel === getChannelString(item) && arch === item.architecture, ); const release = allReleases[0]; @@ -326,7 +326,7 @@ export function hasRelease(state, channel, architecture) { const filteredReleases = releases.filter( (release) => release.architecture === architecture && - getChannelString(release) === channel + getChannelString(release) === channel, ); return filteredReleases && @@ -426,6 +426,6 @@ export function getPendingRelease({ pendingReleases }, channel, arch) { export function getReleases({ releases }, archs, channel) { return releases.filter( (release) => - archs.includes(release.architecture) && release.channel === channel + archs.includes(release.architecture) && release.channel === channel, ); } diff --git a/static/js/publisher/release/selectors/selectors.test.js b/static/js/publisher/release/selectors/selectors.test.js index c818a2e9da..1158ff0a71 100644 --- a/static/js/publisher/release/selectors/selectors.test.js +++ b/static/js/publisher/release/selectors/selectors.test.js @@ -79,7 +79,7 @@ describe("getFilteredReleaseHistory", () => { const filteredHistory = getFilteredReleaseHistory(state); const isEveryReleaseInTestArch = filteredHistory.every( - (r) => r.release.architecture === "test" + (r) => r.release.architecture === "test", ); expect(isEveryReleaseInTestArch).toBe(true); }); @@ -102,7 +102,7 @@ describe("getFilteredReleaseHistory", () => { const filteredHistory = getFilteredReleaseHistory(state); const isEveryReleaseInTestTrack = filteredHistory.every( - (r) => r.release.track === "test" + (r) => r.release.track === "test", ); expect(isEveryReleaseInTestTrack).toBe(true); }); @@ -125,7 +125,7 @@ describe("getFilteredReleaseHistory", () => { const filteredHistory = getFilteredReleaseHistory(state); const isEveryReleaseInTestRisk = filteredHistory.every( - (r) => r.release.risk === "test" + (r) => r.release.risk === "test", ); expect(isEveryReleaseInTestRisk).toBe(true); }); @@ -147,7 +147,7 @@ describe("getFilteredReleaseHistory", () => { const filteredHistory = getFilteredReleaseHistory(state); const isEveryReleaseInTestBranch = filteredHistory.every( - (r) => r.release.branch === "test" + (r) => r.release.branch === "test", ); expect(isEveryReleaseInTestBranch).toBe(true); }); @@ -164,7 +164,7 @@ describe("getFilteredReleaseHistory", () => { }; const filteredRevisions = getFilteredReleaseHistory(state).map( - (r) => r.revision + (r) => r.revision, ); const isUnique = @@ -215,7 +215,7 @@ describe("getSelectedRevision", () => { it("should return revision selected in given arch", () => { expect(getSelectedRevision(stateWithSelectedRevisions, "test64")).toEqual( - stateWithSelectedRevisions.channelMap[AVAILABLE]["test64"] + stateWithSelectedRevisions.channelMap[AVAILABLE]["test64"], ); }); }); @@ -310,7 +310,7 @@ describe("getPendingChannelMap", () => { it("should return channel map as it is", () => { expect(getPendingChannelMap(stateWithNoPendingReleases)).toEqual( - stateWithNoPendingReleases.channelMap + stateWithNoPendingReleases.channelMap, ); }); }); @@ -442,7 +442,7 @@ describe("getFilteredAvailableRevisions", () => { it("should return only unreleased revisions", () => { expect( - getFilteredAvailableRevisions(stateWithUnreleasedSelected) + getFilteredAvailableRevisions(stateWithUnreleasedSelected), ).toEqual([ stateWithUnreleasedSelected.revisions[2], stateWithUnreleasedSelected.revisions[1], @@ -471,7 +471,7 @@ describe("getFilteredAvailableRevisions", () => { it("should return unreleased revisions not older then a week", () => { expect( - getFilteredAvailableRevisions(stateWithLaunchpadSelected) + getFilteredAvailableRevisions(stateWithLaunchpadSelected), ).toEqual([stateWithLaunchpadSelected.revisions[4]]); }); }); @@ -498,7 +498,7 @@ describe("getFilteredAvailableRevisionsByArch", () => { describe("when there are no revisions", () => { it("should return empty list", () => { expect(getFilteredAvailableRevisionsForArch(initialState, arch)).toEqual( - [] + [], ); }); }); @@ -511,7 +511,7 @@ describe("getFilteredAvailableRevisionsByArch", () => { it("should return selected revisions by for given architecture", () => { expect( - getFilteredAvailableRevisionsForArch(stateWithAllSelected, arch) + getFilteredAvailableRevisionsForArch(stateWithAllSelected, arch), ).toEqual([ stateWithAllSelected.revisions[3], stateWithAllSelected.revisions[1], @@ -568,7 +568,7 @@ describe("hasPendingRelease", () => { it("should return false", () => { expect( - hasPendingRelease(stateWithNoPendingReleases, "test/edge", "test64") + hasPendingRelease(stateWithNoPendingReleases, "test/edge", "test64"), ).toBe(false); }); }); @@ -592,13 +592,13 @@ describe("hasPendingRelease", () => { it("should return false for channel/arch without pending release", () => { expect( - hasPendingRelease(stateWithPendingReleases, "test/edge", "test64") + hasPendingRelease(stateWithPendingReleases, "test/edge", "test64"), ).toBe(false); }); it("should return true for channel/arch with pending release", () => { expect( - hasPendingRelease(stateWithPendingReleases, "latest/stable", "test64") + hasPendingRelease(stateWithPendingReleases, "latest/stable", "test64"), ).toBe(true); }); }); @@ -622,7 +622,7 @@ describe("hasPendingRelease", () => { it("should return true for channel/arch with pending release", () => { expect( - hasPendingRelease(stateWithPendingReleases, "test/edge", "test64") + hasPendingRelease(stateWithPendingReleases, "test/edge", "test64"), ).toBe(true); }); }); @@ -661,10 +661,10 @@ describe("getBranches", () => { it("should return branches on the currentTrack, ordered by oldest first", () => { const today = new Date(); const expired = new Date( - new Date().setDate(today.getDate() - 1) + new Date().setDate(today.getDate() - 1), ).toISOString(); const notExpired = new Date( - new Date().setDate(today.getDate() + 24) + new Date().setDate(today.getDate() + 24), ).toISOString(); const state = { @@ -780,11 +780,11 @@ describe("getLaunchpadRevisions", () => { expect(getLaunchpadRevisions(stateWithLauchpadBuilds).length).toEqual(2); expect(getLaunchpadRevisions(stateWithLauchpadBuilds)).not.toContain( stateWithLauchpadBuilds.revisions[1], - stateWithLauchpadBuilds.revisions[2] + stateWithLauchpadBuilds.revisions[2], ); expect(getLaunchpadRevisions(stateWithLauchpadBuilds)).toContain( stateWithLauchpadBuilds.revisions[3], - stateWithLauchpadBuilds.revisions[4] + stateWithLauchpadBuilds.revisions[4], ); }); }); @@ -820,11 +820,11 @@ describe("getRevisionsFromBuild", () => { expect(revisions).not.toContain( stateWithLauchpadBuilds.revisions[1], stateWithLauchpadBuilds.revisions[2], - stateWithLauchpadBuilds.revisions[5] + stateWithLauchpadBuilds.revisions[5], ); expect(revisions).toContain( stateWithLauchpadBuilds.revisions[3], - stateWithLauchpadBuilds.revisions[4] + stateWithLauchpadBuilds.revisions[4], ); }); }); @@ -908,7 +908,11 @@ describe("getProgressiveState", () => { it("should return the progressive release state of a channel and arch", () => { expect( - getProgressiveState(stateWithProgressiveEnabled, "latest/stable", "arch2") + getProgressiveState( + stateWithProgressiveEnabled, + "latest/stable", + "arch2", + ), ).toEqual(["revision2", null]); }); @@ -917,8 +921,8 @@ describe("getProgressiveState", () => { getProgressiveState( stateWithProgressiveEnabledAndPendingRelease, "latest/stable", - "arch2" - ) + "arch2", + ), ).toEqual([ "revision2", { key: "progressive-test", paused: false, percentage: 40 }, @@ -930,8 +934,8 @@ describe("getProgressiveState", () => { getProgressiveState( stateWithProgressiveDisabled, "latest/stable", - "arch2" - ) + "arch2", + ), ).toEqual([null, null, null]); }); }); @@ -964,7 +968,7 @@ describe("isProgressiveReleaseEnabled", () => { it("should be false with isProgressiveReleaseEnabled flag turned off", () => { expect(isProgressiveReleaseEnabled(stateWithProgressiveDisabled)).toBe( - false + false, ); }); }); @@ -1010,14 +1014,14 @@ describe("hasRelease", () => { it("should return false if the previous release was a close", () => { expect(hasRelease(stateWithAClose, "latest/beta", "arm64")).toBe(false); expect( - hasRelease(stateWithMultipleArchAndChannels, "latest/stable", "arm64") + hasRelease(stateWithMultipleArchAndChannels, "latest/stable", "arm64"), ).toBe(false); }); it("should return true if there is a previous release", () => { expect(hasRelease(stateWithARelease, "latest/beta", "arm64")).toBe(true); expect( - hasRelease(stateWithMultipleArchAndChannels, "latest/beta", "arm64") + hasRelease(stateWithMultipleArchAndChannels, "latest/beta", "arm64"), ).toBe(true); }); @@ -1047,7 +1051,7 @@ describe("hasRelease", () => { it("should return new releases and ignore releases to progress", () => { expect( - getSeparatePendingReleases(stateWithPendingReleaseToProgress) + getSeparatePendingReleases(stateWithPendingReleaseToProgress), ).toEqual({ newReleases: { "1-latest/stable": @@ -1188,7 +1192,7 @@ describe("hasRelease", () => { it("should return new release and releases to progress", () => { expect( - getSeparatePendingReleases(stateWithPendingReleaseToProgress) + getSeparatePendingReleases(stateWithPendingReleaseToProgress), ).toEqual({ newReleases: {}, newReleasesToProgress: { @@ -1204,7 +1208,7 @@ describe("hasRelease", () => { it("should return a pending release to update", () => { expect( - getSeparatePendingReleases(stateWithPendingReleaseToUpdate) + getSeparatePendingReleases(stateWithPendingReleaseToUpdate), ).toEqual({ newReleases: {}, newReleasesToProgress: {}, @@ -1227,7 +1231,7 @@ describe("hasRelease", () => { it("should return a progressive release to cancel", () => { expect( - getSeparatePendingReleases(stateWithPendingReleaseToCancel) + getSeparatePendingReleases(stateWithPendingReleaseToCancel), ).toEqual({ newReleases: {}, newReleasesToProgress: {}, @@ -1293,7 +1297,7 @@ describe("getReleases", () => { releases: [], }, "amd64", - "latest/stable" + "latest/stable", ); expect(result).toEqual([]); @@ -1315,7 +1319,7 @@ describe("getReleases", () => { releases, }, ["amd64"], - "latest/stable" + "latest/stable", ); expect(result).toEqual([releases[0]]); diff --git a/static/js/publisher/shared/SearchAutocomplete/SearchAutocomplete.tsx b/static/js/publisher/shared/SearchAutocomplete/SearchAutocomplete.tsx index bf68cd6871..72e4a750a9 100644 --- a/static/js/publisher/shared/SearchAutocomplete/SearchAutocomplete.tsx +++ b/static/js/publisher/shared/SearchAutocomplete/SearchAutocomplete.tsx @@ -120,7 +120,6 @@ function SearchAutocomplete({ .map((item, index) => (
  • { }, { title: "Test title", - } - ) + }, + ), ).toBeNull(); }); @@ -90,8 +90,8 @@ describe("diffState", () => { title: "Test title", summary: "Test summary changed", something: "Test something", - } - ) + }, + ), ).toEqual({ summary: "Test summary changed", }); @@ -113,8 +113,8 @@ describe("diffState", () => { { url: "test1.png", status: "uploaded", selected: false }, { url: "test2.png", status: "uploaded", selected: true }, ], - } - ) + }, + ), ).toBeNull(); }); }); diff --git a/static/js/publisher/submitEnabler.js b/static/js/publisher/submitEnabler.js index 92998c2d0d..da5c530861 100644 --- a/static/js/publisher/submitEnabler.js +++ b/static/js/publisher/submitEnabler.js @@ -16,7 +16,7 @@ function submitEnabler(formSelector, buttonSelectors) { } const buttonEls = buttonSelectors.map((selector) => - document.querySelector(selector) + document.querySelector(selector), ); const initialState = new FormData(formEl); diff --git a/static/js/publisher/tour.js b/static/js/publisher/tour.js index a97d2e71d5..9c2abaee17 100644 --- a/static/js/publisher/tour.js +++ b/static/js/publisher/tour.js @@ -33,7 +33,7 @@ export function initTour({ onTourStarted={onTourStarted} onTourClosed={onTourClosed} startTour={startTour} - /> + />, ); } diff --git a/static/js/publisher/tour/constants.js b/static/js/publisher/tour/constants.js index 8d3bcd07ee..773dc8fd41 100644 --- a/static/js/publisher/tour/constants.js +++ b/static/js/publisher/tour/constants.js @@ -1,5 +1,5 @@ export const REM = parseFloat( - getComputedStyle(document.documentElement).fontSize + getComputedStyle(document.documentElement).fontSize, ); export const MASK_OFFSET = REM / 2; // .5rem is a default spacing unit in Vanilla diff --git a/static/js/publisher/tour/helpers.js b/static/js/publisher/tour/helpers.js index d55a1e8910..c07529073f 100644 --- a/static/js/publisher/tour/helpers.js +++ b/static/js/publisher/tour/helpers.js @@ -12,7 +12,7 @@ export function prepareSteps(steps) { return { ...step, elements: [].slice.apply( - document.querySelectorAll(`[data-tour="${step.id}"]`) + document.querySelectorAll(`[data-tour="${step.id}"]`), ), position: step.position || "bottom-left", }; @@ -85,6 +85,6 @@ export const getMaskFromElements = (elements) => { left: Infinity, right: 0, bottom: 0, - } + }, ); }; diff --git a/static/js/publisher/tour/metricsEvents.js b/static/js/publisher/tour/metricsEvents.js index e0191cfa46..3510afd15b 100644 --- a/static/js/publisher/tour/metricsEvents.js +++ b/static/js/publisher/tour/metricsEvents.js @@ -5,7 +5,7 @@ export const tourStartedByUser = () => "tour-started-by-user", window.location.href, "", - `Tour started manually by user on "${document.title}" page` + `Tour started manually by user on "${document.title}" page`, ); export const tourStartedAutomatically = () => @@ -13,7 +13,7 @@ export const tourStartedAutomatically = () => "tour-started-automatically", window.location.href, "", - `Tour started automatically on "${document.title}" page` + `Tour started automatically on "${document.title}" page`, ); export const tourFinished = (stepId) => @@ -21,7 +21,7 @@ export const tourFinished = (stepId) => "tour-finished", window.location.href, "", - `Tour finished on "${document.title}" page on step ${stepId}` + `Tour finished on "${document.title}" page on step ${stepId}`, ); export const tourSkipped = (stepId) => @@ -29,5 +29,5 @@ export const tourSkipped = (stepId) => "tour-skipped", window.location.href, "", - `Tour skipped on "${document.title}" page on step ${stepId}` + `Tour skipped on "${document.title}" page on step ${stepId}`, ); diff --git a/static/js/publisher/tour/metricsEvents.test.js b/static/js/publisher/tour/metricsEvents.test.js index 442b7f083d..7f74a20497 100644 --- a/static/js/publisher/tour/metricsEvents.test.js +++ b/static/js/publisher/tour/metricsEvents.test.js @@ -16,7 +16,7 @@ describe("metricsEvents", () => { "tour-started-by-user", expect.anything(), expect.anything(), - expect.anything() + expect.anything(), ); }); }); @@ -28,7 +28,7 @@ describe("metricsEvents", () => { "tour-started-automatically", expect.anything(), expect.anything(), - expect.anything() + expect.anything(), ); }); }); @@ -40,7 +40,7 @@ describe("metricsEvents", () => { "tour-finished", expect.anything(), expect.anything(), - expect.stringContaining("test-step") + expect.stringContaining("test-step"), ); }); }); @@ -52,7 +52,7 @@ describe("metricsEvents", () => { "tour-skipped", expect.anything(), expect.anything(), - expect.stringContaining("test-step") + expect.stringContaining("test-step"), ); }); }); diff --git a/static/js/publisher/tour/tour.test.js b/static/js/publisher/tour/tour.test.js index fed64eeeaf..46adcd5eb0 100644 --- a/static/js/publisher/tour/tour.test.js +++ b/static/js/publisher/tour/tour.test.js @@ -39,7 +39,7 @@ describe("Tour", () => { expect.objectContaining({ steps, }), - expect.any(Object) + expect.any(Object), ); }); }); @@ -52,7 +52,7 @@ describe("Tour", () => { expect.objectContaining({ steps, }), - expect.any(Object) + expect.any(Object), ); }); @@ -71,7 +71,7 @@ describe("Tour", () => { it("should call the callback when starting automatically", () => { render( - + , ); expect(onTourStarted).toBeCalled(); @@ -79,7 +79,7 @@ describe("Tour", () => { it("should call the callback when starting with a button", () => { const { getByText } = render( - + , ); fireEvent.click(getByText("Tour")); @@ -96,7 +96,7 @@ describe("Tour", () => { it("should not call the callback when starting automatically", () => { render( - + , ); expect(onTourClosed).not.toBeCalled(); diff --git a/static/js/publisher/tour/tourOverlay.js b/static/js/publisher/tour/tourOverlay.js index 058d4fe527..0a5156ad3b 100644 --- a/static/js/publisher/tour/tourOverlay.js +++ b/static/js/publisher/tour/tourOverlay.js @@ -42,7 +42,7 @@ export default function TourOverlay({ steps, hideTour, currentStepIndex = 0 }) { // we scroll relative to top of the screen, but we want to stick to bottom // so we need to substract the window height mask.bottom - window.innerHeight, - -SCROLL_OFFSET_BOTTOM + -SCROLL_OFFSET_BOTTOM, ); } } @@ -58,7 +58,7 @@ export default function TourOverlay({ steps, hideTour, currentStepIndex = 0 }) { } } }, - [currentStepIndex] // refresh effect on step changes, to scroll to correct step + [currentStepIndex], // refresh effect on step changes, to scroll to correct step ); const overlayEl = useRef(null); @@ -85,7 +85,7 @@ export default function TourOverlay({ steps, hideTour, currentStepIndex = 0 }) { window.removeEventListener("scroll", afterScroll); }; }, - [] // don't refresh the effect on every render + [], // don't refresh the effect on every render ); // rerender after resize (to adjust to new positions of elements) @@ -109,7 +109,7 @@ export default function TourOverlay({ steps, hideTour, currentStepIndex = 0 }) { window.removeEventListener("resize", afterResize); }; }, - [] // don't refresh the effect on every render + [], // don't refresh the effect on every render ); const onNextClick = () => @@ -146,7 +146,7 @@ export default function TourOverlay({ steps, hideTour, currentStepIndex = 0 }) { window.removeEventListener("keyup", escClick); }; }, - [currentStepIndex] // refresh effect when step changes, to pass correct step id into skip metrics + [currentStepIndex], // refresh effect when step changes, to pass correct step id into skip metrics ); return ( diff --git a/static/js/publisher/tour/tourOverlay.test.js b/static/js/publisher/tour/tourOverlay.test.js index f74ab5adf9..3c5b536cc4 100644 --- a/static/js/publisher/tour/tourOverlay.test.js +++ b/static/js/publisher/tour/tourOverlay.test.js @@ -74,7 +74,7 @@ describe("TourOverlay", () => { describe("when moving to previous step", () => { it("should render TourStepCard for previous step", () => { const { getByText } = render( - + , ); fireEvent.click(getByText("Previous step")); @@ -84,7 +84,7 @@ describe("TourOverlay", () => { it("should scroll previous step into view", () => { const { getByText } = render( - + , ); fireEvent.click(getByText("Previous step")); @@ -98,7 +98,7 @@ describe("TourOverlay", () => { const hideTour = jest.fn(); const { getByText } = render( - + , ); fireEvent.click(getByText("Skip tour")); @@ -110,7 +110,7 @@ describe("TourOverlay", () => { const hideTour = jest.fn(); const { getByText } = render( - + , ); fireEvent.click(getByText("Skip tour")); @@ -125,7 +125,7 @@ describe("TourOverlay", () => { const hideTour = jest.fn(); const { getByText } = render( - + , ); fireEvent.click(getByText("Finish tour")); @@ -137,7 +137,7 @@ describe("TourOverlay", () => { const hideTour = jest.fn(); const { getByText } = render( - + , ); fireEvent.click(getByText("Finish tour")); @@ -173,7 +173,7 @@ describe("TourOverlay", () => { const hideTour = jest.fn(); render( - + , ); fireEvent.keyUp(document, { key: "Escape", keyCode: 27 }); diff --git a/static/js/publisher/tour/tourStepCard.test.js b/static/js/publisher/tour/tourStepCard.test.js index a440dfefc7..d4f28f512f 100644 --- a/static/js/publisher/tour/tourStepCard.test.js +++ b/static/js/publisher/tour/tourStepCard.test.js @@ -54,7 +54,7 @@ describe("TourStepCard", () => { onSkipClick={onSkipClick} onNextClick={onNextClick} onPrevClick={onPrevClick} - /> + />, ); }; diff --git a/static/sass/_pattern_p-button-group.scss b/static/sass/_pattern_p-button-group.scss index 4e894db202..568515a651 100644 --- a/static/sass/_pattern_p-button-group.scss +++ b/static/sass/_pattern_p-button-group.scss @@ -22,7 +22,7 @@ &__label { margin-right: 0.5rem; - @media (max-width: 768px) { + @media (width <= 768px) { display: none; } } diff --git a/static/sass/_patterns_maas_modal.scss b/static/sass/_patterns_maas_modal.scss index 1e6345e327..dc0016ef50 100644 --- a/static/sass/_patterns_maas_modal.scss +++ b/static/sass/_patterns_maas_modal.scss @@ -163,7 +163,7 @@ $color-modal-controls: rgba($color-x-dark, 0.2); text-align: center; width: 100%; - @media screen and (max-width: 1024px) { + @media screen and (width <= 1024px) { bottom: 25px; } } @@ -202,7 +202,7 @@ $color-modal-controls: rgba($color-x-dark, 0.2); width: 100%; } - @media (max-width: 992px) { + @media (width <= 992px) { .venoframe { height: 480px; min-height: inherit; @@ -210,7 +210,7 @@ $color-modal-controls: rgba($color-x-dark, 0.2); } } - @media (max-width: 767px) { + @media (width <= 767px) { .venoframe { height: 315px; min-height: inherit; @@ -218,7 +218,7 @@ $color-modal-controls: rgba($color-x-dark, 0.2); } } - @media (max-width: 460px) { + @media (width <= 460px) { .vbox-inline { width: 100%; } diff --git a/static/sass/_patterns_strip_slanted.scss b/static/sass/_patterns_strip_slanted.scss index 4cfac0e6d7..cd05b3a114 100644 --- a/static/sass/_patterns_strip_slanted.scss +++ b/static/sass/_patterns_strip_slanted.scss @@ -28,15 +28,15 @@ } // custom styles for extra large screens - @media (min-width: 2300px) { + @media (width >= 2300px) { padding-bottom: $slanted-edge-padding + 2rem; } - @media (min-width: 3000px) { + @media (width >= 3000px) { padding-bottom: $slanted-edge-padding + 4rem; } - @media (min-width: 3500px) { + @media (width >= 3500px) { padding-bottom: $slanted-edge-padding + 6rem; } @@ -83,9 +83,14 @@ ), linear-gradient(10deg, $color-brand, lighten($color-brand, 10%)); // stylelint-enable - background-position: top right, bottom right; + background-position: + top right, + bottom right; background-repeat: no-repeat; - background-size: 80% 70%, 80% 75%, 100% auto; + background-size: + 80% 70%, + 80% 75%, + 100% auto; color: $color-light; &::after { @@ -115,14 +120,22 @@ $color-slanted-background 100% ); // stylelint-enable - background-position: left top, right top; + background-position: + left top, + right top; background-repeat: no-repeat; - background-size: 70% 80%, 75% 100%, 100% 100%; + background-size: + 70% 80%, + 75% 100%, + 100% 100%; padding-bottom: 6rem; padding-top: 6rem; @media screen and (max-width: $breakpoint-large - 1) { - background-size: 70% 30%, 75% 100%, 100% 100%; + background-size: + 70% 30%, + 75% 100%, + 100% 100%; padding-bottom: 3rem; padding-top: 3rem; } diff --git a/static/sass/_snapcraft_custom-cols.scss b/static/sass/_snapcraft_custom-cols.scss index 6f55d80e04..edd650d678 100644 --- a/static/sass/_snapcraft_custom-cols.scss +++ b/static/sass/_snapcraft_custom-cols.scss @@ -2,14 +2,14 @@ .col-logo { // These breakpoints are a combination of the content width - for logos we // consistently have 6 across each at 146 pixels wide - @media (min-width: 772px) and (max-width: 1083px) { + @media (width >= 772px) and (width <= 1083px) { grid-column-end: span 2; } } .col-lang-select--3 { // As above but 6 across by col-2 width - @media (min-width: 772px) and (max-width: 1152px) { + @media (width >= 772px) and (width <= 1152px) { grid-column-end: span 2; } } diff --git a/static/sass/_snapcraft_p-navigation.scss b/static/sass/_snapcraft_p-navigation.scss index b03918f6ed..f2ea21acfe 100644 --- a/static/sass/_snapcraft_p-navigation.scss +++ b/static/sass/_snapcraft_p-navigation.scss @@ -4,7 +4,7 @@ background-color: #333; // https://github.com/canonical-web-and-design/vanilla-framework/issues/2753 - @media screen and (max-width: 800px) { + @media screen and (width <= 800px) { padding-left: 0; } diff --git a/static/sass/_snapcraft_p-release-details-row.scss b/static/sass/_snapcraft_p-release-details-row.scss index ecfbb795ad..bc16a84dd8 100644 --- a/static/sass/_snapcraft_p-release-details-row.scss +++ b/static/sass/_snapcraft_p-release-details-row.scss @@ -12,7 +12,7 @@ } // Same as the global nav breakpoint - @media screen and (max-width: 875px) { + @media screen and (width <= 875px) { grid-template-columns: 3rem 11rem 2rem auto 0; &__notes { diff --git a/static/sass/styles.scss b/static/sass/styles.scss index ec121aefc1..61f762dd76 100644 --- a/static/sass/styles.scss +++ b/static/sass/styles.scss @@ -317,7 +317,7 @@ dl { margin-left: 0.75rem !important; } - @media (min-width: 1353px) { + @media (width >= 1353px) { margin-bottom: 0 !important; } } @@ -338,7 +338,7 @@ dl { } .u-hide-table-col--large { - @media (min-width: 1036px) { + @media (width >= 1036px) { display: none !important; } } @@ -450,11 +450,11 @@ dl { // Vanilla override - documentaion layout .l-docs__subgrid { - @media (min-width: 1036px) { + @media (width >= 1036px) { grid-template-columns: 15rem minmax(0, 1fr) 15rem; } - @media (min-width: calc(1036px + 15rem)) { + @media (width >= calc(1036px + 15rem)) { grid-template-columns: 15rem minmax(0, 1fr) 15rem; } } diff --git a/tests/store/tests_search.py b/tests/store/tests_search.py index c0a5010209..4d1c1909fe 100644 --- a/tests/store/tests_search.py +++ b/tests/store/tests_search.py @@ -317,9 +317,11 @@ def test_search_q_with_category_page_2(self): { "package_name": snap["package_name"], "media": snap["media"], - "icon_url": snap["media"][0]["url"] - if len(snap["media"]) > 0 - else "", + "icon_url": ( + snap["media"][0]["url"] + if len(snap["media"]) > 0 + else "" + ), } ) diff --git a/webapp/api/marketo.py b/webapp/api/marketo.py index 0fe0eee1f0..de12fa7f65 100644 --- a/webapp/api/marketo.py +++ b/webapp/api/marketo.py @@ -105,9 +105,9 @@ def set_newsletter_subscription(self, lead_email, newsletter_status): "input": [ { "email": lead_email, - "snapcraftnewsletter": True - if newsletter_status - else False, + "snapcraftnewsletter": ( + True if newsletter_status else False + ), } ], } diff --git a/webapp/app.py b/webapp/app.py index 401d12dd7c..267452f6fa 100644 --- a/webapp/app.py +++ b/webapp/app.py @@ -3,6 +3,7 @@ The web frontend for the snap store. """ + import talisker.requests import webapp.api diff --git a/webapp/decorators.py b/webapp/decorators.py index befc2d7f83..f59e86e3fc 100644 --- a/webapp/decorators.py +++ b/webapp/decorators.py @@ -33,9 +33,9 @@ def exchange_required(func): @functools.wraps(func) def is_exchanged(*args, **kwargs): if "developer_token" not in flask.session: - flask.session[ - "developer_token" - ] = publisher_api.exchange_dashboard_macaroons(flask.session) + flask.session["developer_token"] = ( + publisher_api.exchange_dashboard_macaroons(flask.session) + ) return func(*args, **kwargs) return is_exchanged diff --git a/yarn.lock b/yarn.lock index 8a1e784d6d..cb46edabbb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,10 +7,10 @@ resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== -"@adobe/css-tools@^4.0.1": - version "4.3.2" - resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.3.2.tgz#a6abc715fb6884851fca9dad37fc34739a04fd11" - integrity sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw== +"@adobe/css-tools@^4.3.2": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.3.3.tgz#90749bde8b89cd41764224f5aac29cd4138f75ff" + integrity sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ== "@ampproject/remapping@^2.2.0": version "2.2.1" @@ -1030,7 +1030,14 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.8", "@babel/runtime@^7.2.0", "@babel/runtime@^7.21.0", "@babel/runtime@^7.23.8", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.12.1", "@babel/runtime@^7.22.15": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.9.tgz#47791a15e4603bb5f905bc0753801cf21d6345f7" + integrity sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw== + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/runtime@^7.12.5", "@babel/runtime@^7.2.0", "@babel/runtime@^7.21.0", "@babel/runtime@^7.23.8", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": version "7.23.8" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.8.tgz#8ee6fe1ac47add7122902f257b8ddf55c898f650" integrity sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw== @@ -1144,22 +1151,22 @@ react-table "7.8.0" react-useportal "1.0.18" -"@csstools/css-parser-algorithms@^2.3.1": +"@csstools/css-parser-algorithms@^2.5.0": version "2.5.0" resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.5.0.tgz#0c03cd5418a9f404a05ff2ffcb1b69d04e8ec532" integrity sha512-abypo6m9re3clXA00eu5syw+oaPHbJTPapu9C4pzNsJ4hdZDzushT50Zhu+iIYXgEe1CxnRMn7ngsbV+MLrlpQ== -"@csstools/css-tokenizer@^2.2.0": +"@csstools/css-tokenizer@^2.2.3": version "2.2.3" resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-2.2.3.tgz#b099d543ea57b64f495915a095ead583866c50c6" integrity sha512-pp//EvZ9dUmGuGtG1p+n17gTHEOqu9jO+FiCUjNN3BDmyhdA2Jq9QsVeR7K8/2QCK17HSsioPlTW9ZkzoWb3Lg== -"@csstools/media-query-list-parser@^2.1.4": +"@csstools/media-query-list-parser@^2.1.7": version "2.1.7" resolved "https://registry.yarnpkg.com/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.7.tgz#a4836e3dbd693081a30b32ce9c2a781e1be16788" integrity sha512-lHPKJDkPUECsyAvD60joYfDmp8UERYxHGkFfyLJFTVK/ERJe0sVlIFLXU5XFxdjNDTerp5L4KeaKG+Z5S94qxQ== -"@csstools/selector-specificity@^3.0.0": +"@csstools/selector-specificity@^3.0.1": version "3.0.1" resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-3.0.1.tgz#d84597fbc0f897240c12fc0a31e492b036c70e40" integrity sha512-NPljRHkq4a14YzZ3YD406uaxh7s0g6eAq3L9aLOWywoqe8PkYamAvtsh7KNX6c++ihDrJ0RiU+/z7rGnhlZ5ww== @@ -1185,15 +1192,15 @@ "@dnd-kit/utilities" "^3.2.2" tslib "^2.0.0" -"@dnd-kit/sortable@7.0.2": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@dnd-kit/sortable/-/sortable-7.0.2.tgz#791d550872457f3f3c843e00d159b640f982011c" - integrity sha512-wDkBHHf9iCi1veM834Gbk1429bd4lHX4RpAwT0y2cHLf246GAvU2sVw/oxWNpPKQNQRQaeGXhAVgrOl1IT+iyA== +"@dnd-kit/sortable@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@dnd-kit/sortable/-/sortable-8.0.0.tgz#086b7ac6723d4618a4ccb6f0227406d8a8862a96" + integrity sha512-U3jk5ebVXe1Lr7c2wU7SBZjcWdQP+j7peHJfCspnA81enlu88Mgd7CC8Q+pub9ubP7eKVETzJW+IBAhsqbSu/g== dependencies: - "@dnd-kit/utilities" "^3.2.0" + "@dnd-kit/utilities" "^3.2.2" tslib "^2.0.0" -"@dnd-kit/utilities@3.2.2", "@dnd-kit/utilities@^3.2.0", "@dnd-kit/utilities@^3.2.2": +"@dnd-kit/utilities@3.2.2", "@dnd-kit/utilities@^3.2.2": version "3.2.2" resolved "https://registry.yarnpkg.com/@dnd-kit/utilities/-/utilities-3.2.2.tgz#5a32b6af356dc5f74d61b37d6f7129a4040ced7b" integrity sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg== @@ -1251,6 +1258,18 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -1667,6 +1686,16 @@ "@percy/config" "1.27.6" "@percy/sdk-utils" "1.27.6" +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@pkgr/core@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" + integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== + "@react-dnd/asap@^5.0.1": version "5.0.2" resolved "https://registry.yarnpkg.com/@react-dnd/asap/-/asap-5.0.2.tgz#1f81f124c1cd6f39511c11a881cfb0f715343488" @@ -1784,6 +1813,11 @@ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== +"@sindresorhus/merge-streams@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/merge-streams/-/merge-streams-1.0.0.tgz#9cd84cc15bc865a5ca35fcaae198eb899f7b5c90" + integrity sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw== + "@sinonjs/commons@^3.0.0": version "3.0.1" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" @@ -1817,18 +1851,17 @@ lz-string "^1.5.0" pretty-format "^27.0.2" -"@testing-library/jest-dom@5.17.0": - version "5.17.0" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz#5e97c8f9a15ccf4656da00fecab505728de81e0c" - integrity sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg== +"@testing-library/jest-dom@6.4.2": + version "6.4.2" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.4.2.tgz#38949f6b63722900e2d75ba3c6d9bf8cffb3300e" + integrity sha512-CzqH0AFymEMG48CpzXFriYYkOjk6ZGPCLMhW9e9jg3KMCn5OfJecF8GtGW7yGfR/IgCe3SX8BSwjdzI6BBbZLw== dependencies: - "@adobe/css-tools" "^4.0.1" + "@adobe/css-tools" "^4.3.2" "@babel/runtime" "^7.9.2" - "@types/testing-library__jest-dom" "^5.9.1" aria-query "^5.0.0" chalk "^3.0.0" css.escape "^1.5.1" - dom-accessibility-api "^0.5.6" + dom-accessibility-api "^0.6.3" lodash "^4.17.15" redent "^3.0.0" @@ -1949,14 +1982,6 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@*", "@types/jest@29.5.11": - version "29.5.11" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.11.tgz#0c13aa0da7d0929f078ab080ae5d4ced80fa2f2c" - integrity sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ== - dependencies: - expect "^29.0.0" - pretty-format "^29.0.0" - "@types/jest@27.5.2": version "27.5.2" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.5.2.tgz#ec49d29d926500ffb9fd22b84262e862049c026c" @@ -1965,6 +1990,14 @@ jest-matcher-utils "^27.0.0" pretty-format "^27.0.0" +"@types/jest@29.5.11": + version "29.5.11" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.11.tgz#0c13aa0da7d0929f078ab080ae5d4ced80fa2f2c" + integrity sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ== + dependencies: + expect "^29.0.0" + pretty-format "^29.0.0" + "@types/jsdom@^20.0.0": version "20.0.1" resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-20.0.1.tgz#07c14bc19bd2f918c1929541cdaacae894744808" @@ -1979,11 +2012,6 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== -"@types/minimist@^1.2.2": - version "1.2.5" - resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.5.tgz#ec10755e871497bcd83efe927e43ec46e8c0747e" - integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== - "@types/node@*": version "20.11.5" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.5.tgz#be10c622ca7fcaa3cf226cf80166abc31389d86e" @@ -2008,11 +2036,6 @@ dependencies: undici-types "~5.26.4" -"@types/normalize-package-data@^2.4.0": - version "2.4.4" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" - integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== - "@types/prop-types@*": version "15.7.11" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.11.tgz#2596fb352ee96a1379c657734d4b913a613ad563" @@ -2145,13 +2168,6 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== -"@types/testing-library__jest-dom@^5.9.1": - version "5.14.9" - resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz#0fb1e6a0278d87b6737db55af5967570b67cb466" - integrity sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw== - dependencies: - "@types/jest" "*" - "@types/tough-cookie@*": version "4.0.5" resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.5.tgz#cb6e2a691b70cb177c6e3ae9c1d2e8b2ea8cd304" @@ -2471,6 +2487,11 @@ ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -2490,6 +2511,11 @@ ansi-styles@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + ansi-styles@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" @@ -2597,11 +2623,6 @@ arraybuffer.prototype.slice@^1.0.2: is-array-buffer "^3.0.2" is-shared-array-buffer "^1.0.2" -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== - astral-regex@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" @@ -2756,6 +2777,13 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" @@ -2825,22 +2853,12 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase-keys@^7.0.0: - version "7.0.2" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-7.0.2.tgz#d048d8c69448745bb0de6fc4c1c52a30dfbe7252" - integrity sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg== - dependencies: - camelcase "^6.3.0" - map-obj "^4.1.0" - quick-lru "^5.1.1" - type-fest "^1.2.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== -camelcase@^6.2.0, camelcase@^6.3.0: +camelcase@^6.2.0: version "6.3.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== @@ -2867,7 +2885,7 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0.0, chalk@^4.1.0: +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -3027,30 +3045,30 @@ common-path-prefix@^3.0.0: resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== -compute-scroll-into-view@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-2.0.4.tgz#2b444b2b9e4724819d2531efacb7ac094155fdf6" - integrity sha512-y/ZA3BGnxoM/QHHQ2Uy49CLtnWPbt4tTPpEEZiEmmiWBFKjej7nEyH8Ryz54jH0MLXflUYA3Er2zUxPSJu5R+g== +compute-scroll-into-view@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-3.1.0.tgz#753f11d972596558d8fe7c6bcbc8497690ab4c87" + integrity sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg== concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -concurrently@7.6.0: - version "7.6.0" - resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-7.6.0.tgz#531a6f5f30cf616f355a4afb8f8fcb2bba65a49a" - integrity sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw== +concurrently@8.2.2: + version "8.2.2" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-8.2.2.tgz#353141985c198cfa5e4a3ef90082c336b5851784" + integrity sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg== dependencies: - chalk "^4.1.0" - date-fns "^2.29.1" + chalk "^4.1.2" + date-fns "^2.30.0" lodash "^4.17.21" - rxjs "^7.0.0" - shell-quote "^1.7.3" - spawn-command "^0.0.2-1" - supports-color "^8.1.0" + rxjs "^7.8.1" + shell-quote "^1.8.1" + spawn-command "0.0.2" + supports-color "^8.1.1" tree-kill "^1.2.2" - yargs "^17.3.1" + yargs "^17.7.2" content-disposition@^0.5.4: version "0.5.4" @@ -3071,7 +3089,7 @@ core-js-compat@^3.31.0, core-js-compat@^3.33.1: dependencies: browserslist "^4.22.2" -cosmiconfig@^8.0.0, cosmiconfig@^8.2.0: +cosmiconfig@^8.0.0: version "8.3.6" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== @@ -3081,6 +3099,16 @@ cosmiconfig@^8.0.0, cosmiconfig@^8.2.0: parse-json "^5.2.0" path-type "^4.0.0" +cosmiconfig@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-9.0.0.tgz#34c3fc58287b915f3ae905ab6dc3de258b55ad9d" + integrity sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg== + dependencies: + env-paths "^2.2.1" + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" + create-jest@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" @@ -3094,7 +3122,7 @@ create-jest@^29.7.0: jest-util "^29.7.0" prompts "^2.0.1" -cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -3415,7 +3443,12 @@ data-urls@^3.0.2: whatwg-mimetype "^3.0.0" whatwg-url "^11.0.0" -date-fns@2.30.0, date-fns@^2.29.1: +date-fns@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-3.3.1.tgz#7581daca0892d139736697717a168afbb908cfed" + integrity sha512-y8e109LYGgoQDveiEBD3DYXKba1jWf5BA8YU1FL5Tvm0BTdEfy54WLCwnuYWZNnzzvALy/QQ4Hov+Q9RVRv+Zw== + +date-fns@^2.30.0: version "2.30.0" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== @@ -3429,24 +3462,6 @@ debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: dependencies: ms "2.1.2" -decamelize-keys@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" - integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== - dependencies: - decamelize "^1.1.0" - map-obj "^1.0.0" - -decamelize@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== - -decamelize@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-5.0.1.tgz#db11a92e58c741ef339fb0a2868d8a06a9a7b1e9" - integrity sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA== - decimal.js@^10.4.2: version "10.4.3" resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" @@ -3586,11 +3601,16 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: +dom-accessibility-api@^0.5.9: version "0.5.16" resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== +dom-accessibility-api@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz#993e925cc1d73f2c662e7d75dd5a5445259a8fd8" + integrity sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w== + domexception@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" @@ -3598,16 +3618,21 @@ domexception@^4.0.0: dependencies: webidl-conversions "^7.0.0" -downshift@7.6.2: - version "7.6.2" - resolved "https://registry.yarnpkg.com/downshift/-/downshift-7.6.2.tgz#16fc951b7ff8f9c1c47d0f71b5ff10d78fb06e4c" - integrity sha512-iOv+E1Hyt3JDdL9yYcOgW7nZ7GQ2Uz6YbggwXvKUSleetYhU2nXD482Rz6CzvM4lvI1At34BYruKAL4swRGxaA== +downshift@8.3.1: + version "8.3.1" + resolved "https://registry.yarnpkg.com/downshift/-/downshift-8.3.1.tgz#a820e3a500f0f2a0784a55bac48ffaa7e11141b5" + integrity sha512-djPzjGfTSEjOsfmlur4onCV3Mtd6oGI+eOQIBNwoS7oEYTjPrxk6n+sJLmndT/KKwHvUyBSh3AFb64eHIFifTQ== dependencies: - "@babel/runtime" "^7.14.8" - compute-scroll-into-view "^2.0.4" - prop-types "^15.7.2" - react-is "^17.0.2" - tslib "^2.3.0" + "@babel/runtime" "^7.22.15" + compute-scroll-into-view "^3.0.3" + prop-types "^15.8.1" + react-is "^18.2.0" + tslib "^2.6.2" + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== electron-to-chromium@^1.4.601: version "1.4.640" @@ -3624,6 +3649,11 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" @@ -3644,10 +3674,10 @@ entities@^4.4.0: resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== -entities@~3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" - integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== +env-paths@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== envinfo@^7.7.3: version "7.11.0" @@ -3802,10 +3832,10 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" -eslint-config-prettier@8.10.0: - version "8.10.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz#3a06a662130807e2502fc3ff8b4143d8a0658e11" - integrity sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg== +eslint-config-prettier@9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" + integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== eslint-plugin-jest@27.6.1: version "27.6.1" @@ -3814,12 +3844,13 @@ eslint-plugin-jest@27.6.1: dependencies: "@typescript-eslint/utils" "^5.10.0" -eslint-plugin-prettier@4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" - integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== +eslint-plugin-prettier@5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz#17cfade9e732cef32b5f5be53bd4e07afd8e67e1" + integrity sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw== dependencies: prettier-linter-helpers "^1.0.0" + synckit "^0.8.6" eslint-plugin-react@7.33.2: version "7.33.2" @@ -3992,10 +4023,10 @@ expect@^29.0.0, expect@^29.7.0: jest-message-util "^29.7.0" jest-util "^29.7.0" -expose-loader@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/expose-loader/-/expose-loader-4.1.0.tgz#9c6d55d24e3ac0e5d50ee5dc7930d564fc475d48" - integrity sha512-oLAesnzerwDGGADzBMnu0LPqqnlVz6e2V9lTa+/4X6VeW9W93x/nJpw05WBrcIdbqXm/EdnEQpiVDFFiQXuNfg== +expose-loader@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/expose-loader/-/expose-loader-5.0.0.tgz#41368903eb1246b7c09fecf32c5cb3f67d0260e6" + integrity sha512-BtUqYRmvx1bEY5HN6eK2I9URUZgNmN0x5UANuocaNjXSgfoDlkXt+wyEMe7i5DzDNh2BKJHPc5F4rBwEdSQX6w== extract-zip@^2.0.1: version "2.0.1" @@ -4023,7 +4054,7 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== -fast-glob@^3.2.11, fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.1: +fast-glob@^3.2.11, fast-glob@^3.2.9, fast-glob@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -4077,12 +4108,12 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" -file-entry-cache@^7.0.0: - version "7.0.2" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-7.0.2.tgz#2d61bb70ba89b9548e3035b7c9173fe91deafff0" - integrity sha512-TfW7/1iI4Cy7Y8L6iqNdZQVvdXn0f8B4QcIXmkIbtTIe/Okm/nSlHb4IwGzRVOd3WfSieCgvf5cMzEfySAIl0g== +file-entry-cache@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" + integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== dependencies: - flat-cache "^3.2.0" + flat-cache "^4.0.0" fill-range@^7.0.1: version "7.0.1" @@ -4123,7 +4154,7 @@ find-up@^6.3.0: locate-path "^7.1.0" path-exists "^5.0.0" -flat-cache@^3.0.4, flat-cache@^3.2.0: +flat-cache@^3.0.4: version "3.2.0" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== @@ -4132,6 +4163,15 @@ flat-cache@^3.0.4, flat-cache@^3.2.0: keyv "^4.5.3" rimraf "^3.0.2" +flat-cache@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.0.tgz#d12437636f83bb8a12b8f300c36fd1614e1c7224" + integrity sha512-EryKbCE/wxpxKniQlyas6PY1I9vwtF3uCBweX+N8KYTCn3Y12RTGtQAJ/bd5pl7kxUAc8v/R3Ake/N17OZiFqA== + dependencies: + flatted "^3.2.9" + keyv "^4.5.4" + rimraf "^5.0.5" + flat@^5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" @@ -4149,6 +4189,14 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" +foreground-child@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + form-data@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" @@ -4278,6 +4326,17 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== +glob@^10.3.7: + version "10.3.10" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== + dependencies: + foreground-child "^3.1.0" + jackspeak "^2.3.5" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry "^1.10.1" + glob@^7.1.3, glob@^7.1.4: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" @@ -4346,16 +4405,17 @@ globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" -globby@^13.0.0: - version "13.2.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-13.2.2.tgz#63b90b1bf68619c2135475cbd4e71e66aa090592" - integrity sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w== +globby@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-14.0.0.tgz#ea9c062a3614e33f516804e778590fcf055256b9" + integrity sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ== dependencies: - dir-glob "^3.0.1" - fast-glob "^3.3.0" + "@sindresorhus/merge-streams" "^1.0.0" + fast-glob "^3.3.2" ignore "^5.2.4" - merge2 "^1.4.1" - slash "^4.0.0" + path-type "^5.0.0" + slash "^5.1.0" + unicorn-magic "^0.1.0" globjoin@^0.1.4: version "0.1.4" @@ -4405,11 +4465,6 @@ hamt_plus@1.0.2: resolved "https://registry.yarnpkg.com/hamt_plus/-/hamt_plus-1.0.2.tgz#e21c252968c7e33b20f6a1b094cd85787a265601" integrity sha512-t2JXKaehnMb9paaYA7J0BX8QQAY8lwfQ9Gjf4pg/mk4krt+cmwmU652HOoWonf+7+EQV97ARPMhhVgU1ra2GhA== -hard-rejection@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" - integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== - harmony-reflect@^1.4.6: version "1.6.2" resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" @@ -4478,13 +4533,6 @@ hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2: dependencies: react-is "^16.7.0" -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" - html-encoding-sniffer@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" @@ -4548,6 +4596,11 @@ ignore@^5.2.0, ignore@^5.2.4: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78" integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== +ignore@^5.3.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== + image-size@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.1.1.tgz#ddd67d4dc340e52ac29ce5f546a09f4e29e840ac" @@ -4573,11 +4626,6 @@ import-fresh@^3.2.1, import-fresh@^3.3.0: parent-module "^1.0.0" resolve-from "^4.0.0" -import-lazy@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" - integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== - import-local@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" @@ -4596,11 +4644,6 @@ indent-string@^4.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== -indent-string@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-5.0.0.tgz#4fd2980fccaf8622d14c64d694f4cf33c81951a5" - integrity sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg== - inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -4706,7 +4749,7 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-core-module@^2.13.0, is-core-module@^2.5.0: +is-core-module@^2.13.0: version "2.13.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== @@ -4783,11 +4826,6 @@ is-path-inside@^3.0.3: resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== -is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== - is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -4950,6 +4988,15 @@ iterator.prototype@^1.1.2: reflect.getprototypeof "^1.0.4" set-function-name "^2.0.1" +jackspeak@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" + integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + jest-changed-files@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" @@ -5472,14 +5519,14 @@ jsonfile@^6.0.1: object.assign "^4.1.4" object.values "^1.1.6" -keyv@^4.5.3: +keyv@^4.5.3, keyv@^4.5.4: version "4.5.4" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== dependencies: json-buffer "3.0.1" -kind-of@^6.0.2, kind-of@^6.0.3: +kind-of@^6.0.2: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== @@ -5517,12 +5564,12 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -linkify-it@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-4.0.1.tgz#01f1d5e508190d06669982ba31a7d9f56a5751ec" - integrity sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw== +linkify-it@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-5.0.0.tgz#9ef238bfa6dc70bd8e7f9572b52d369af569b421" + integrity sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ== dependencies: - uc.micro "^1.0.1" + uc.micro "^2.0.0" loader-runner@^4.2.0: version "4.3.0" @@ -5616,6 +5663,11 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +"lru-cache@^9.1.1 || ^10.0.0": + version "10.2.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" + integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== + lz-string@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" @@ -5640,26 +5692,17 @@ makeerror@1.0.12: dependencies: tmpl "1.0.5" -map-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== - -map-obj@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" - integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== - -markdown-it@13.0.2: - version "13.0.2" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-13.0.2.tgz#1bc22e23379a6952e5d56217fbed881e0c94d536" - integrity sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w== +markdown-it@14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-14.0.0.tgz#b4b2ddeb0f925e88d981f84c183b59bac9e3741b" + integrity sha512-seFjF0FIcPt4P9U39Bq1JYblX0KZCjDLFFQPHpL5AzHpqPEKtosxmdq/LTVZnjfH7tjt9BxStm+wXcDBNuYmzw== dependencies: argparse "^2.0.1" - entities "~3.0.1" - linkify-it "^4.0.1" - mdurl "^1.0.1" - uc.micro "^1.0.5" + entities "^4.4.0" + linkify-it "^5.0.0" + mdurl "^2.0.0" + punycode.js "^2.3.1" + uc.micro "^2.0.0" match-sorter@^6.0.2: version "6.3.3" @@ -5679,28 +5722,15 @@ mdn-data@2.0.30: resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== -mdurl@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" - integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== - -meow@^10.1.5: - version "10.1.5" - resolved "https://registry.yarnpkg.com/meow/-/meow-10.1.5.tgz#be52a1d87b5f5698602b0f32875ee5940904aa7f" - integrity sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw== - dependencies: - "@types/minimist" "^1.2.2" - camelcase-keys "^7.0.0" - decamelize "^5.0.0" - decamelize-keys "^1.1.0" - hard-rejection "^2.1.0" - minimist-options "4.1.0" - normalize-package-data "^3.0.2" - read-pkg-up "^8.0.0" - redent "^4.0.0" - trim-newlines "^4.0.2" - type-fest "^1.2.2" - yargs-parser "^20.2.9" +mdurl@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-2.0.0.tgz#80676ec0433025dd3e17ee983d0fe8de5a2237e0" + integrity sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w== + +meow@^13.1.0: + version "13.2.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-13.2.0.tgz#6b7d63f913f984063b3cc261b6e8800c4cd3474f" + integrity sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA== merge-stream@^2.0.0: version "2.0.0" @@ -5742,7 +5772,7 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -min-indent@^1.0.0, min-indent@^1.0.1: +min-indent@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== @@ -5754,6 +5784,13 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" +minimatch@^9.0.1: + version "9.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + minimatch@~0.2.11: version "0.2.14" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a" @@ -5762,20 +5799,16 @@ minimatch@~0.2.11: lru-cache "2" sigmund "~1.0.0" -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== - dependencies: - arrify "^1.0.1" - is-plain-obj "^1.1.0" - kind-of "^6.0.3" - minimist@^1.1.1: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": + version "7.0.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" + integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== + ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" @@ -5793,16 +5826,16 @@ nanoid@3.3.6: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== -nanoid@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-4.0.2.tgz#140b3c5003959adbebf521c170f282c5e7f9fb9e" - integrity sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw== - nanoid@5.0.4: version "5.0.4" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-5.0.4.tgz#d2b608d8169d7da669279127615535705aa52edf" integrity sha512-vAjmBf13gsmhXSgBrtIclinISzFFy22WwCYoyilZlsrRXNIHSwgFQ1bEdjRwMT3aoadeIF6HMuDRlOxzfXV8ig== +nanoid@5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-5.0.5.tgz#5112efb5c0caf4fc80680d66d303c65233a79fdd" + integrity sha512-/Veqm+QKsyMY3kqi4faWplnY1u+VuKO3dD2binyPIybP31DRO29bPF+1mszgLnrR2KqSLceFLBNw0zmvDzN1QQ== + nanoid@^3.3.7: version "3.3.7" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" @@ -5828,16 +5861,6 @@ node-releases@^2.0.14: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== -normalize-package-data@^3.0.2: - 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" @@ -6055,6 +6078,14 @@ 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-scurry@^1.10.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" + integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== + dependencies: + lru-cache "^9.1.1 || ^10.0.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-to-regexp@^6.2.0: version "6.2.1" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.1.tgz#d54934d6798eb9e5ef14e7af7962c945906918e5" @@ -6065,6 +6096,11 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +path-type@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-5.0.0.tgz#14b01ed7aea7ddf9c7c3f46181d4d04f9c785bb8" + integrity sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg== + pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" @@ -6111,28 +6147,28 @@ polylabel@1.1.0: dependencies: tinyqueue "^2.0.3" -postcss-cli@10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/postcss-cli/-/postcss-cli-10.1.0.tgz#f6658c4998a1c35bd66cd71009132b2d12e04f80" - integrity sha512-Zu7PLORkE9YwNdvOeOVKPmWghprOtjFQU3srMUGbdz3pHJiFh7yZ4geiZFMkjMfB0mtTFR3h8RemR62rPkbOPA== +postcss-cli@11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/postcss-cli/-/postcss-cli-11.0.0.tgz#649f4b9af447501feb6cbca7f7505a132f90442b" + integrity sha512-xMITAI7M0u1yolVcXJ9XTZiO9aO49mcoKQy6pCDFdMh9kGqhzLVpWxeD/32M/QBmkhcGypZFFOLNLmIW4Pg4RA== dependencies: chokidar "^3.3.0" dependency-graph "^0.11.0" fs-extra "^11.0.0" get-stdin "^9.0.0" - globby "^13.0.0" + globby "^14.0.0" picocolors "^1.0.0" - postcss-load-config "^4.0.0" + postcss-load-config "^5.0.0" postcss-reporter "^7.0.0" pretty-hrtime "^1.0.3" read-cache "^1.0.0" slash "^5.0.0" yargs "^17.0.0" -postcss-load-config@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz#7159dcf626118d33e299f485d6afe4aff7c4a3e3" - integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== +postcss-load-config@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-5.0.3.tgz#f4927637d907de900c4828615077646844545820" + integrity sha512-90pBBI5apUVruIEdCxZic93Wm+i9fTrp7TXbgdUCH+/L+2WnfpITSpq5dFU/IPvbv7aNiMlQISpUkAm3fEcvgQ== dependencies: lilconfig "^3.0.0" yaml "^2.3.4" @@ -6183,17 +6219,17 @@ postcss-resolve-nested-selector@^0.1.1: resolved "https://registry.yarnpkg.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz#29ccbc7c37dedfac304e9fff0bf1596b3f6a0e4e" integrity sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw== -postcss-safe-parser@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz#bb4c29894171a94bc5c996b9a30317ef402adaa1" - integrity sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ== +postcss-safe-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-7.0.0.tgz#6273d4e5149e286db5a45bc6cf6eafcad464014a" + integrity sha512-ovehqRNVCpuFzbXoTb4qLtyzK3xn3t/CUBxOs8LsnQjQrShaB4lKiHoVqY8ANaC0hBMHq5QVWk77rwGklFUDrg== -postcss-scss@^4.0.2: +postcss-scss@^4.0.9: version "4.0.9" resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-4.0.9.tgz#a03c773cd4c9623cb04ce142a52afcec74806685" integrity sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A== -postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.13, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: +postcss-selector-parser@^6.0.15, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: version "6.0.15" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz#11cc2b21eebc0b99ea374ffb9887174855a01535" integrity sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw== @@ -6220,7 +6256,7 @@ postcss@8.4.32: picocolors "^1.0.0" source-map-js "^1.0.2" -postcss@^8.4.21, postcss@^8.4.28, postcss@^8.4.32: +postcss@^8.4.21, postcss@^8.4.32: version "8.4.33" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.33.tgz#1378e859c9f69bf6f638b990a0212f43e2aaa742" integrity sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg== @@ -6229,6 +6265,15 @@ postcss@^8.4.21, postcss@^8.4.28, postcss@^8.4.32: picocolors "^1.0.0" source-map-js "^1.0.2" +postcss@^8.4.33: + version "8.4.35" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.35.tgz#60997775689ce09011edf083a549cea44aabe2f7" + integrity sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.0" + source-map-js "^1.0.2" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -6241,10 +6286,10 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@2.8.8: - version "2.8.8" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" - integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== +prettier@3.2.5: + version "3.2.5" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368" + integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== pretty-format@^27.0.0, pretty-format@^27.0.2, pretty-format@^27.5.1: version "27.5.1" @@ -6277,7 +6322,7 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.5" -prop-types@15.8.1, prop-types@^15.5.7, prop-types@^15.7.2, prop-types@^15.8.1: +prop-types@15.8.1, prop-types@^15.5.7, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -6299,6 +6344,11 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" +punycode.js@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode.js/-/punycode.js-2.3.1.tgz#6b53e56ad75588234e79f4affa90972c7dd8cdb7" + integrity sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA== + punycode@^2.1.0, punycode@^2.1.1: version "2.3.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" @@ -6326,11 +6376,6 @@ queue@6.0.2: dependencies: inherits "~2.0.3" -quick-lru@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" - integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== - randombytes@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec" @@ -6391,12 +6436,12 @@ react-is@^16.13.1, react-is@^16.7.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react-is@^17.0.1, react-is@^17.0.2: +react-is@^17.0.1: 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: +react-is@^18.0.0, react-is@^18.2.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== @@ -6494,25 +6539,6 @@ read-cache@^1.0.0: dependencies: pify "^2.3.0" -read-pkg-up@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-8.0.0.tgz#72f595b65e66110f43b052dd9af4de6b10534670" - integrity sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ== - dependencies: - find-up "^5.0.0" - read-pkg "^6.0.0" - type-fest "^1.0.1" - -read-pkg@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-6.0.0.tgz#a67a7d6a1c2b0c3cd6aa2ea521f40c458a4a504c" - integrity sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^3.0.2" - parse-json "^5.2.0" - type-fest "^1.0.1" - readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -6542,14 +6568,6 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" -redent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-4.0.0.tgz#0c0ba7caabb24257ab3bb7a4fd95dd1d5c5681f9" - integrity sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag== - dependencies: - indent-string "^5.0.0" - strip-indent "^4.0.0" - redux-mock-store@1.5.4: version "1.5.4" resolved "https://registry.yarnpkg.com/redux-mock-store/-/redux-mock-store-1.5.4.tgz#90d02495fd918ddbaa96b83aef626287c9ab5872" @@ -6710,6 +6728,13 @@ rimraf@3.0.2, rimraf@^3.0.2: dependencies: glob "^7.1.3" +rimraf@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.5.tgz#9be65d2d6e683447d2e9013da2bf451139a61ccf" + integrity sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A== + dependencies: + glob "^10.3.7" + robust-predicates@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/robust-predicates/-/robust-predicates-3.0.2.tgz#d5b28528c4824d20fc48df1928d41d9efa1ad771" @@ -6727,7 +6752,7 @@ rw@1: resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ== -rxjs@^7.0.0: +rxjs@^7.8.1: version "7.8.1" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== @@ -6763,10 +6788,10 @@ safe-regex-test@^1.0.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sass-loader@13.3.3: - version "13.3.3" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-13.3.3.tgz#60df5e858788cffb1a3215e5b92e9cba61e7e133" - integrity sha512-mt5YN2F1MOZr3d/wBRcZxeFgwgkH44wVc2zohO2YF6JiOMkiXe4BYRZpSu2sO1g71mo/j16txzUhsKZlqjVGzA== +sass-loader@14.1.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-14.1.0.tgz#43ba90e0cd8a15a1e932e818c525b0115a0ce8a3" + integrity sha512-LS2mLeFWA+orYxHNu+O18Xe4jR0kyamNOOUsE3NyBP4DvIL+8stHpNX0arYTItdPe80kluIiJ7Wfe/9iHSRO0Q== dependencies: neo-async "^2.6.2" @@ -6875,7 +6900,7 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@^1.7.3: +shell-quote@^1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== @@ -6914,12 +6939,7 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slash@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" - integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== - -slash@^5.0.0: +slash@^5.0.0, slash@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/slash/-/slash-5.1.0.tgz#be3adddcdf09ac38eebe8dcdc7b1a57a75b095ce" integrity sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg== @@ -6964,47 +6984,16 @@ source-map@^0.7.4: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== -spawn-command@^0.0.2-1: - version "0.0.2-1" - resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" - integrity sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg== - -spdx-correct@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" - integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.16" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz#a14f64e0954f6e25cc6587bd4f392522db0d998f" - integrity sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw== +spawn-command@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2.tgz#9544e1a43ca045f8531aac1a48cb29bdae62338e" + integrity sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ== sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== -ssr-window@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/ssr-window/-/ssr-window-4.0.2.tgz#dc6b3ee37be86ac0e3ddc60030f7b3bc9b8553be" - integrity sha512-ISv/Ch+ig7SOtw7G2+qkwfVASzazUnvlDTwypdLoPoySv+6MqlOV10VwPSE6EWkGjhW50lUmghPmpYZXMu/+AQ== - stack-utils@^2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" @@ -7027,7 +7016,7 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -7036,6 +7025,15 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + string.prototype.matchall@^4.0.8: version "4.0.10" resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz#a1553eb532221d4180c51581d6072cd65d1ee100" @@ -7078,13 +7076,20 @@ string.prototype.trimstart@^1.0.7: define-properties "^1.2.0" es-abstract "^1.22.1" -strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" +strip-ansi@^7.0.1, strip-ansi@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + strip-ansi@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" @@ -7107,13 +7112,6 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-4.0.0.tgz#b41379433dd06f5eae805e21d631e07ee670d853" - integrity sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA== - dependencies: - min-indent "^1.0.1" - strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" @@ -7124,39 +7122,34 @@ style-loader@3.3.3: resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.3.tgz#bba8daac19930169c0c9c96706749a597ae3acff" integrity sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw== -style-search@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902" - integrity sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg== - -stylelint-config-recommended-scss@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-9.0.1.tgz#7ea233ea637ac2d8f0b50d8aad236257e44e2cbb" - integrity sha512-qAmz/TdrqslwiMTuLM3QXeISUkfEDUXGMfRBCHm/xrkCJNnQefv+mzG2mWTsWkqcVk8HAyUkug10dwAcYp2fCQ== +stylelint-config-recommended-scss@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-14.0.0.tgz#d3482c9817dada80b5ec01685b38fc8af8f7263f" + integrity sha512-HDvpoOAQ1RpF+sPbDOT2Q2/YrBDEJDnUymmVmZ7mMCeNiFSdhRdyGEimBkz06wsN+HaFwUh249gDR+I9JR7Onw== dependencies: - postcss-scss "^4.0.2" - stylelint-config-recommended "^10.0.1" - stylelint-scss "^4.4.0" + postcss-scss "^4.0.9" + stylelint-config-recommended "^14.0.0" + stylelint-scss "^6.0.0" -stylelint-config-recommended@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-10.0.1.tgz#25a8828acf6cde87dac6db2950c8c4ed82a69ae1" - integrity sha512-TQ4xQ48tW4QSlODcti7pgSRqBZcUaBzuh0jPpfiMhwJKBPkqzTIAU+IrSWL/7BgXlOM90DjB7YaNgFpx8QWhuA== +stylelint-config-recommended@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-14.0.0.tgz#b395c7014838d2aaca1755eebd914d0bb5274994" + integrity sha512-jSkx290CglS8StmrLp2TxAppIajzIBZKYm3IxT89Kg6fGlxbPiTiyH9PS5YUuVAFwaJLl1ikiXX0QWjI0jmgZQ== -stylelint-config-standard-scss@7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/stylelint-config-standard-scss/-/stylelint-config-standard-scss-7.0.1.tgz#4ba83fa19e1508937f7e02674e085cf94fc1a145" - integrity sha512-m5sRdtsB1F5fnC1Ozla7ryftU47wVpO+HWd+JQTqeoG0g/oPh5EfbWfcVHbNCEtuoHfALIySiUWS20pz2hX6jA== +stylelint-config-standard-scss@13.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/stylelint-config-standard-scss/-/stylelint-config-standard-scss-13.0.0.tgz#fa65637d439a012a435213f73e00d3576eb925bb" + integrity sha512-WaLvkP689qSYUpJQPCo30TFJSSc3VzvvoWnrgp+7PpVby5o8fRUY1cZcP0sePZfjrFl9T8caGhcKg0GO34VDiQ== dependencies: - stylelint-config-recommended-scss "^9.0.0" - stylelint-config-standard "^30.0.1" + stylelint-config-recommended-scss "^14.0.0" + stylelint-config-standard "^36.0.0" -stylelint-config-standard@^30.0.1: - version "30.0.1" - resolved "https://registry.yarnpkg.com/stylelint-config-standard/-/stylelint-config-standard-30.0.1.tgz#a84d57c240c37f7db47023ab9d2e64c49090e1eb" - integrity sha512-NbeHOmpRQhjZh5XB1B/S4MLRWvz4xxAxeDBjzl0tY2xEcayNhLbaRGF0ZQzq+DQZLCcPpOHeS2Ru1ydbkhkmLg== +stylelint-config-standard@^36.0.0: + version "36.0.0" + resolved "https://registry.yarnpkg.com/stylelint-config-standard/-/stylelint-config-standard-36.0.0.tgz#6704c044d611edc12692d4a5e37b039a441604d4" + integrity sha512-3Kjyq4d62bYFp/Aq8PMKDwlgUyPU4nacXsjDLWJdNPRUgpuxALu1KnlAHIj36cdtxViVhXexZij65yM0uNIHug== dependencies: - stylelint-config-recommended "^10.0.1" + stylelint-config-recommended "^14.0.0" stylelint-order@6.0.4: version "6.0.4" @@ -7166,57 +7159,56 @@ stylelint-order@6.0.4: postcss "^8.4.32" postcss-sorting "^8.0.2" -stylelint-scss@^4.4.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/stylelint-scss/-/stylelint-scss-4.7.0.tgz#f986bf8c5a4b93eae2b67d3a3562eef822657908" - integrity sha512-TSUgIeS0H3jqDZnby1UO1Qv3poi1N8wUYIJY6D1tuUq2MN3lwp/rITVo0wD+1SWTmRm0tNmGO0b7nKInnqF6Hg== +stylelint-scss@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/stylelint-scss/-/stylelint-scss-6.1.0.tgz#b7ef162c417132e8df2b69d1759ae07395d54fb5" + integrity sha512-kCfK8TQzthGwb4vaZniZgxRsVbCM4ZckmT1b/H5m4FU3I8Dz0id9llKsy1NMp3XXqC8+OPD4rVKtUbSxXlJb5g== dependencies: + known-css-properties "^0.29.0" postcss-media-query-parser "^0.2.3" postcss-resolve-nested-selector "^0.1.1" - postcss-selector-parser "^6.0.11" + postcss-selector-parser "^6.0.15" postcss-value-parser "^4.2.0" -stylelint@15.11.0: - version "15.11.0" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-15.11.0.tgz#3ff8466f5f5c47362bc7c8c9d382741c58bc3292" - integrity sha512-78O4c6IswZ9TzpcIiQJIN49K3qNoXTM8zEJzhaTE/xRTCZswaovSEVIa/uwbOltZrk16X4jAxjaOhzz/hTm1Kw== +stylelint@16.2.1: + version "16.2.1" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-16.2.1.tgz#895d6d42523c5126ec0895f0ca2a58febeb77e89" + integrity sha512-SfIMGFK+4n7XVAyv50CpVfcGYWG4v41y6xG7PqOgQSY8M/PgdK0SQbjWFblxjJZlN9jNq879mB4BCZHJRIJ1hA== dependencies: - "@csstools/css-parser-algorithms" "^2.3.1" - "@csstools/css-tokenizer" "^2.2.0" - "@csstools/media-query-list-parser" "^2.1.4" - "@csstools/selector-specificity" "^3.0.0" + "@csstools/css-parser-algorithms" "^2.5.0" + "@csstools/css-tokenizer" "^2.2.3" + "@csstools/media-query-list-parser" "^2.1.7" + "@csstools/selector-specificity" "^3.0.1" balanced-match "^2.0.0" colord "^2.9.3" - cosmiconfig "^8.2.0" + cosmiconfig "^9.0.0" css-functions-list "^3.2.1" css-tree "^2.3.1" debug "^4.3.4" - fast-glob "^3.3.1" + fast-glob "^3.3.2" fastest-levenshtein "^1.0.16" - file-entry-cache "^7.0.0" + file-entry-cache "^8.0.0" global-modules "^2.0.0" globby "^11.1.0" globjoin "^0.1.4" html-tags "^3.3.1" - ignore "^5.2.4" - import-lazy "^4.0.0" + ignore "^5.3.0" imurmurhash "^0.1.4" is-plain-object "^5.0.0" known-css-properties "^0.29.0" mathml-tag-names "^2.1.3" - meow "^10.1.5" + meow "^13.1.0" micromatch "^4.0.5" normalize-path "^3.0.0" picocolors "^1.0.0" - postcss "^8.4.28" + postcss "^8.4.33" postcss-resolve-nested-selector "^0.1.1" - postcss-safe-parser "^6.0.0" - postcss-selector-parser "^6.0.13" + postcss-safe-parser "^7.0.0" + postcss-selector-parser "^6.0.15" postcss-value-parser "^4.2.0" resolve-from "^5.0.0" string-width "^4.2.3" - strip-ansi "^6.0.1" - style-search "^0.1.0" + strip-ansi "^7.1.0" supports-hyperlinks "^3.0.0" svg-tags "^1.0.0" table "^6.8.1" @@ -7243,7 +7235,7 @@ supports-color@^7.0.0, supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -supports-color@^8.0.0, supports-color@^8.1.0: +supports-color@^8.0.0, supports-color@^8.1.1: version "8.1.1" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== @@ -7268,18 +7260,24 @@ svg-tags@^1.0.0: resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" integrity sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA== -swiper@9.4.1: - version "9.4.1" - resolved "https://registry.yarnpkg.com/swiper/-/swiper-9.4.1.tgz#2f48bcd6ab4b4fcf4ae93eaee53980531d42fd42" - integrity sha512-1nT2T8EzUpZ0FagEqaN/YAhRj33F2x/lN6cyB0/xoYJDMf8KwTFT3hMOeoB8Tg4o3+P/CKqskP+WX0Df046fqA== - dependencies: - ssr-window "^4.0.2" +swiper@11.0.6: + version "11.0.6" + resolved "https://registry.yarnpkg.com/swiper/-/swiper-11.0.6.tgz#787187e2711b01301b4c67b86b8e03099e2fc9f2" + integrity sha512-W/Me7MQl5rNgdM5x9i3Gll76WsyVpnHn91GhBOyL7RCFUeg62aVnflzlVfIpXzZ/87FtJOfAoDH79ZH2Yq76zA== symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== +synckit@^0.8.6: + version "0.8.8" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.8.tgz#fe7fe446518e3d3d49f5e429f443cf08b6edfcd7" + integrity sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ== + dependencies: + "@pkgr/core" "^0.1.0" + tslib "^2.6.2" + table@^6.8.1: version "6.8.1" resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf" @@ -7392,11 +7390,6 @@ tree-kill@^1.2.2: resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== -trim-newlines@^4.0.2: - version "4.1.1" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-4.1.1.tgz#28c88deb50ed10c7ba6dc2474421904a00139125" - integrity sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ== - ts-jest@29.1.1: version "29.1.1" resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.1.tgz#f58fe62c63caf7bfcc5cc6472082f79180f0815b" @@ -7427,7 +7420,7 @@ tslib@^1.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.0, tslib@^2.1.0, tslib@^2.3.0: +tslib@^2.0.0, tslib@^2.1.0, tslib@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== @@ -7461,11 +7454,6 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -type-fest@^1.0.1, type-fest@^1.2.1, type-fest@^1.2.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" - integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== - typed-array-buffer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" @@ -7505,15 +7493,15 @@ typed-array-length@^1.0.4: for-each "^0.3.3" is-typed-array "^1.1.9" -typescript@4.9.5: - version "4.9.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" - integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== +typescript@5.3.3: + version "5.3.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" + integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== -uc.micro@^1.0.1, uc.micro@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" - integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== +uc.micro@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-2.0.0.tgz#84b3c335c12b1497fd9e80fcd3bfa7634c363ff1" + integrity sha512-DffL94LsNOccVn4hyfRe5rdKa273swqeA5DJpMOeFmEn1wCDc7nAbbB0gXlgBCL7TNzeTv6G7XVWzan7iJtfig== unbox-primitive@^1.0.2: version "1.0.2" @@ -7553,6 +7541,11 @@ unicode-property-aliases-ecmascript@^2.0.0: resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== +unicorn-magic@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/unicorn-magic/-/unicorn-magic-0.1.0.tgz#1bb9a51c823aaf9d73a8bfcd3d1a23dde94b0ce4" + integrity sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ== + universalify@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" @@ -7618,14 +7611,6 @@ v8-to-istanbul@^9.0.1: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^2.0.0" -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - vanilla-framework@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/vanilla-framework/-/vanilla-framework-4.0.0.tgz#a2fee9bd9763ebd6932b764f9d66484dc177d4cc" @@ -7838,7 +7823,7 @@ wildcard@^2.0.0: resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== -wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.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" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -7847,6 +7832,15 @@ wrap-ansi@^7.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -7903,17 +7897,12 @@ yaml@^2.0.0, yaml@^2.3.4: resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== -yargs-parser@^20.2.9: - 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== - yargs-parser@^21.0.1, yargs-parser@^21.1.1: version "21.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs@^17.0.0, yargs@^17.3.1: +yargs@^17.0.0, yargs@^17.3.1, yargs@^17.7.2: version "17.7.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==