diff --git a/.github/renovate.json b/.github/renovate.json index 1de5552206ed..90c5a18d9f6d 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -128,7 +128,7 @@ { "customType": "regex", "fileMatch": [ - "war/pom.xml" + "pom.xml" ], "matchStrings": [ "(?.*?)" diff --git a/.github/workflows/run-since-updater.yml b/.github/workflows/run-since-updater.yml index 409520a5f73f..6241acdc2dc4 100644 --- a/.github/workflows/run-since-updater.yml +++ b/.github/workflows/run-since-updater.yml @@ -29,7 +29,7 @@ jobs: id: run_script shell: bash - name: Create Pull Request - uses: peter-evans/create-pull-request@d121e62763d8cc35b5fb1710e887d6e69a52d3a4 # v7 + uses: peter-evans/create-pull-request@5e914681df9dc83aa4e4905692ca88beb2f9e91f # v7 with: token: ${{ secrets.GITHUB_TOKEN }} commit-message: Fill in since annotations diff --git a/.gitignore b/.gitignore index c09d79fcf8c4..f7314d0646ec 100644 --- a/.gitignore +++ b/.gitignore @@ -79,3 +79,6 @@ node_modules/ # Generated JavaScript Bundles jsbundles + +# In case someone accidentally runs npm install instead of yarn install +package-lock.json diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d2f4700a3ab7..1be9d4f3f9cf 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -52,6 +52,9 @@ MAVEN_OPTS='--add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/ja ### Running the Yarn frontend build +> [!TIP] +> If you already have Node.js installed, you do not need to change your path. Start using `yarn` by enabling [Corepack](https://yarnpkg.com/corepack) with `corepack enable`, if it isn't already; this will add the `yarn` binary to your PATH. + To run the Yarn frontend build, after [building the WAR file](#building-the-war-file), add the downloaded versions of Node and Yarn to your path: ```sh @@ -74,7 +77,7 @@ On one terminal, start a development server that will not process frontend asset MAVEN_OPTS='--add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED' mvn -pl war jetty:run -Dskip.yarn ``` -Open another terminal and start a [webpack](https://webpack.js.org/) dev server, after [adding Node and Yarn to your path](#running-the-yarn-frontend-build): +Open another terminal and start a [webpack](https://webpack.js.org/) dev server, after [optionally adding Node and Yarn to your path](#running-the-yarn-frontend-build): ```sh yarn start @@ -108,13 +111,13 @@ To automatically fix backend issues, run: mvn spotless:apply ``` -To view frontend issues, after [adding Node and Yarn to your path](#running-the-yarn-frontend-build), run: +To view frontend issues, after [optionally adding Node and Yarn to your path](#running-the-yarn-frontend-build), run: ```sh yarn lint ``` -To fix frontend issues, after [adding Node and Yarn to your path](#running-the-yarn-frontend-build), run: +To fix frontend issues, after [optionally adding Node and Yarn to your path](#running-the-yarn-frontend-build), run: ```sh yarn lint:fix diff --git a/ath.sh b/ath.sh index 2df3d4909e10..1816e037466b 100644 --- a/ath.sh +++ b/ath.sh @@ -6,7 +6,7 @@ set -o xtrace cd "$(dirname "$0")" # https://github.com/jenkinsci/acceptance-test-harness/releases -export ATH_VERSION=5992.v39030e88deb_3 +export ATH_VERSION=5997.v2a_1a_696620a_0 if [[ $# -eq 0 ]]; then export JDK=17 diff --git a/bom/pom.xml b/bom/pom.xml index 39e1714b809a..47321614432c 100644 --- a/bom/pom.xml +++ b/bom/pom.xml @@ -129,7 +129,7 @@ THE SOFTWARE. commons-io commons-io - 2.16.1 + 2.17.0 commons-jelly @@ -169,7 +169,7 @@ THE SOFTWARE. net.java.dev.jna jna - 5.14.0 + 5.15.0 net.java.sezpoz diff --git a/core/src/main/java/hudson/lifecycle/WindowsInstallerLink.java b/core/src/main/java/hudson/lifecycle/WindowsInstallerLink.java index c54a90d1c576..af0ddf9a6ecf 100644 --- a/core/src/main/java/hudson/lifecycle/WindowsInstallerLink.java +++ b/core/src/main/java/hudson/lifecycle/WindowsInstallerLink.java @@ -226,7 +226,7 @@ public void run() { new File(installationDir, "jenkins.exe"), "start", task, installationDir); task.getLogger().println(r == 0 ? "Successfully started" : "start service failed. Exit code=" + r); } catch (IOException | InterruptedException e) { - e.printStackTrace(); + LOGGER.log(Level.WARNING, null, e); } } @@ -241,7 +241,7 @@ private DefaultLogger createLogger() { Jenkins.get().cleanUp(); System.exit(0); } catch (InterruptedException e) { - e.printStackTrace(); + LOGGER.log(Level.SEVERE, null, e); } } }.start(); diff --git a/core/src/main/java/hudson/model/AbstractItem.java b/core/src/main/java/hudson/model/AbstractItem.java index 0e712d8a2e88..8ba7aafe15cd 100644 --- a/core/src/main/java/hudson/model/AbstractItem.java +++ b/core/src/main/java/hudson/model/AbstractItem.java @@ -434,7 +434,7 @@ protected void renameTo(final String newName) throws IOException { Util.deleteRecursive(oldRoot); } catch (IOException e) { // but ignore the error, since we expect that - e.printStackTrace(); + LOGGER.log(Level.WARNING, "Ignoring IOException while deleting", e); } } diff --git a/core/src/main/java/hudson/model/UserPropertyDescriptor.java b/core/src/main/java/hudson/model/UserPropertyDescriptor.java index b5a115404be3..f19a54e14aa0 100644 --- a/core/src/main/java/hudson/model/UserPropertyDescriptor.java +++ b/core/src/main/java/hudson/model/UserPropertyDescriptor.java @@ -132,7 +132,7 @@ public boolean isEnabled() { * Optional description for the configurable object * Displays as plain text * - * @since TODO + * @since 2.477 */ @Nullable public String getDescription() { diff --git a/core/src/main/java/hudson/model/ViewJob.java b/core/src/main/java/hudson/model/ViewJob.java index 055b98cafdb5..c030fea0122c 100644 --- a/core/src/main/java/hudson/model/ViewJob.java +++ b/core/src/main/java/hudson/model/ViewJob.java @@ -236,14 +236,23 @@ private boolean terminating() { @Override public void run() { while (!terminating()) { + String jobName = null; try { - getNext()._reload(); + var next = getNext(); + jobName = next.getFullName(); + next._reload(); + jobName = null; } catch (InterruptedException e) { // treat this as a death signal return; - } catch (Throwable t) { + } catch (Exception e) { // otherwise ignore any error - t.printStackTrace(); + if (jobName != null) { + var finalJobName = jobName; + LOGGER.log(Level.WARNING, e, () -> "Failed to reload job " + finalJobName); + } else { + LOGGER.log(Level.WARNING, e, () -> "Failed to obtain next job in the reload queue"); + } } } } diff --git a/core/src/main/java/jenkins/model/HistoricalBuild.java b/core/src/main/java/jenkins/model/HistoricalBuild.java index 2f9f14aefff7..480eb9935654 100644 --- a/core/src/main/java/jenkins/model/HistoricalBuild.java +++ b/core/src/main/java/jenkins/model/HistoricalBuild.java @@ -45,7 +45,7 @@ /** * A {@link Run}-like object as it might be displayed by {@link BuildHistoryWidget}. * - * @since TODO + * @since 2.477 */ @Restricted(Beta.class) public interface HistoricalBuild extends ModelObject { diff --git a/core/src/main/java/jenkins/model/Jenkins.java b/core/src/main/java/jenkins/model/Jenkins.java index e29651773803..afa634608562 100644 --- a/core/src/main/java/jenkins/model/Jenkins.java +++ b/core/src/main/java/jenkins/model/Jenkins.java @@ -5629,7 +5629,7 @@ private static void computeVersion(ServletContext context) { if (is != null) props.load(is); } catch (IOException e) { - e.printStackTrace(); // if the version properties is missing, that's OK. + LOGGER.log(Level.WARNING, e, () -> "Failed to load jenkins-version.properties"); } String ver = props.getProperty("version"); if (ver == null) ver = UNCOMPUTED_VERSION; diff --git a/core/src/main/java/jenkins/model/ModelObjectWithContextMenu.java b/core/src/main/java/jenkins/model/ModelObjectWithContextMenu.java index 2fa50556574c..f46280fef0c0 100644 --- a/core/src/main/java/jenkins/model/ModelObjectWithContextMenu.java +++ b/core/src/main/java/jenkins/model/ModelObjectWithContextMenu.java @@ -299,6 +299,10 @@ public ContextMenu from(ModelObjectWithContextMenu self, StaplerRequest2 request return from(self, request, response, "sidepanel"); } + public ContextMenu from(ModelObjectWithContextMenu self, StaplerRequest request, StaplerResponse response) throws JellyException, IOException { + return from(self, StaplerRequest.toStaplerRequest2(request), StaplerResponse.toStaplerResponse2(response), "sidepanel"); + } + public ContextMenu from(ModelObjectWithContextMenu self, StaplerRequest2 request, StaplerResponse2 response, String view) throws JellyException, IOException { WebApp webApp = WebApp.getCurrent(); final Script s = webApp.getMetaClass(self).getTearOff(JellyClassTearOff.class).findScript(view); diff --git a/core/src/main/resources/hudson/model/Messages.properties b/core/src/main/resources/hudson/model/Messages.properties index fbe7a70ae53b..f0d52f795ec0 100644 --- a/core/src/main/resources/hudson/model/Messages.properties +++ b/core/src/main/resources/hudson/model/Messages.properties @@ -409,7 +409,7 @@ User.IllegalUsername="{0}" is prohibited as a username for security reasons. User.IllegalFullname="{0}" is prohibited as a full name for security reasons. TimeZoneProperty.DisplayName=Time zone -TimeZoneProperty.Description=Select a time zone to use rather than the system default +TimeZoneProperty.Description=Select a time zone to use rather than the system default. TimeZoneProperty.DisplayDefaultTimeZone=Default TimeZoneProperty.current_time_in_=Current time in {0}: {1} TimeZoneProperty.current_time_on_server_in_in_proposed_di=Current time on server in {0}: {1}; in proposed display zone: {2} diff --git a/core/src/main/resources/hudson/model/userproperty/UserPropertyCategoryAccountAction/index.properties b/core/src/main/resources/hudson/model/userproperty/UserPropertyCategoryAccountAction/index.properties index dfeb5024042c..648592ed85ae 100644 --- a/core/src/main/resources/hudson/model/userproperty/UserPropertyCategoryAccountAction/index.properties +++ b/core/src/main/resources/hudson/model/userproperty/UserPropertyCategoryAccountAction/index.properties @@ -22,6 +22,6 @@ title=Account Full\ name=Full name -Full\ name.Description=We recommend using your real name so people can recognize you instead of your ID +Full\ name.Description=We recommend using your real name so people can recognize you instead of your ID. Description=Description -Description.Description=Enter a short description about yourself so that visitors know who you are +Description.Description=Enter a short description about yourself so that visitors know who you are. diff --git a/package.json b/package.json index 9f40f36fff5b..365fadb619ed 100644 --- a/package.json +++ b/package.json @@ -26,24 +26,24 @@ "@babel/cli": "7.25.6", "@babel/core": "7.25.2", "@babel/preset-env": "7.25.4", - "@eslint/js": "9.10.0", - "babel-loader": "9.1.3", + "@eslint/js": "9.11.0", + "babel-loader": "9.2.1", "clean-webpack-plugin": "4.0.0", "css-loader": "7.1.2", "css-minimizer-webpack-plugin": "7.0.0", - "eslint": "9.10.0", + "eslint": "9.11.0", "eslint-config-prettier": "9.1.0", "eslint-formatter-checkstyle": "8.40.0", "globals": "15.9.0", "handlebars-loader": "1.7.3", "mini-css-extract-plugin": "2.9.1", - "postcss": "8.4.45", + "postcss": "8.4.47", "postcss-loader": "8.1.1", "postcss-preset-env": "10.0.3", "postcss-scss": "4.0.9", "prettier": "3.3.3", - "sass": "1.78.0", - "sass-loader": "16.0.1", + "sass": "1.79.3", + "sass-loader": "16.0.2", "style-loader": "4.0.0", "stylelint": "16.9.0", "stylelint-checkstyle-reporter": "1.0.0", @@ -65,5 +65,5 @@ "defaults", "not IE 11" ], - "packageManager": "yarn@4.4.1" + "packageManager": "yarn@4.5.0" } diff --git a/pom.xml b/pom.xml index 86265c667654..61ca93c2edc6 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,7 @@ THE SOFTWARE. org.jenkins-ci jenkins - 1.122 + 1.123 @@ -73,9 +73,9 @@ THE SOFTWARE. - 2.477 + 2.479 -SNAPSHOT - 2024-09-10T14:09:56Z + 2024-09-24T13:48:23Z github @@ -102,8 +102,8 @@ THE SOFTWARE. 1.22.19 - 4.4.1 - 920b4530755296dc2ce8b4351f057d4a26429524fcb2789d277560d94837c27e + 4.5.0 + cc00dce5de4f68d11450519a0f69eadf2a1cbe5cc0d8e740bfac817a31d76874 - yarn install @@ -548,7 +482,6 @@ THE SOFTWARE. initialize - yarn build @@ -559,12 +492,34 @@ THE SOFTWARE. build - + + + + + + + yarn-ci-lint + + + env.CI + + + package.json + + + + + + com.github.eirslett + frontend-maven-plugin + 1.15.1 + - yarn lint + yarn lint:ci yarn + test lint:ci ${yarn.lint.skip} @@ -575,6 +530,39 @@ THE SOFTWARE. + + yarn-lint + + + !env.CI + + + package.json + + + + + + com.github.eirslett + frontend-maven-plugin + 1.15.1 + + + yarn lint + + yarn + + test + + lint + ${yarn.lint.skip} + + + + + + + clean-node diff --git a/test/pom.xml b/test/pom.xml index 97fa920d4090..0f3aa999e08e 100644 --- a/test/pom.xml +++ b/test/pom.xml @@ -90,7 +90,7 @@ THE SOFTWARE. io.jenkins.plugins plugin-util-api - 4.1.0 + 5.1.0 org.jenkins-ci.plugins @@ -118,7 +118,7 @@ THE SOFTWARE. org.jenkins-ci.plugins script-security - 1361.v913100720139 + 1362.v67dc1f0e1b_b_3 org.jenkins-ci.plugins.workflow @@ -134,7 +134,7 @@ THE SOFTWARE. org.jenkins-ci.plugins.workflow workflow-support - 920.v59f71ce16f04 + 926.v9f4f9b_b_98c19 @@ -178,7 +178,7 @@ THE SOFTWARE. org.jenkins-ci.main jenkins-test-harness - 2265.v3da_49c8134d6 + 2289.vfd344a_6d1660 test @@ -224,7 +224,7 @@ THE SOFTWARE. org.jenkins-ci.plugins credentials - 1371.vfee6b_095f0a_3 + 1378.v81ef4269d764 test diff --git a/test/src/test/java/hudson/ClassicPluginStrategyTest.java b/test/src/test/java/hudson/ClassicPluginStrategyTest.java index e8472cef0d81..1bf06531d68d 100644 --- a/test/src/test/java/hudson/ClassicPluginStrategyTest.java +++ b/test/src/test/java/hudson/ClassicPluginStrategyTest.java @@ -71,7 +71,7 @@ protected Collection loadBundledPlugins() { } }; setPluginManager(pluginManager); - return new Hudson(home, createWebServer(), pluginManager); + return new Hudson(home, createWebServer2(), pluginManager); } }; diff --git a/test/src/test/java/hudson/slaves/JNLPLauncherRealTest.java b/test/src/test/java/hudson/slaves/JNLPLauncherRealTest.java index 557231f5d140..9b4b9bed3f69 100644 --- a/test/src/test/java/hudson/slaves/JNLPLauncherRealTest.java +++ b/test/src/test/java/hudson/slaves/JNLPLauncherRealTest.java @@ -25,6 +25,7 @@ package hudson.slaves; import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.hasKey; import static org.hamcrest.Matchers.is; import hudson.ExtensionList; @@ -32,7 +33,6 @@ import hudson.model.FreeStyleBuild; import hudson.model.FreeStyleProject; import hudson.model.Slave; -import java.io.File; import jenkins.agents.WebSocketAgentsTest; import jenkins.slaves.JnlpSlaveAgentProtocol4; import org.junit.Rule; @@ -104,7 +104,7 @@ public void run(JenkinsRule r) throws Throwable { p.setAssignedNode(agent); FreeStyleBuild b = r.buildAndAssertSuccess(p); if (webSocket) { - assertThat(agent.toComputer().getSystemProperties().get("java.class.path"), is(new File(r.jenkins.root, "agent.jar").getAbsolutePath())); + assertThat(agent.toComputer().getSystemProperties(), hasKey("os.name")); } System.err.println(JenkinsRule.getLog(b)); } diff --git a/test/src/test/java/jenkins/security/Security3430Test.java b/test/src/test/java/jenkins/security/Security3430Test.java index f39702fd4204..09f227af4805 100644 --- a/test/src/test/java/jenkins/security/Security3430Test.java +++ b/test/src/test/java/jenkins/security/Security3430Test.java @@ -40,6 +40,7 @@ import org.hamcrest.TypeSafeMatcher; import org.junit.Rule; import org.junit.Test; +import org.junit.rules.TemporaryFolder; import org.jvnet.hudson.test.InboundAgentRule; import org.jvnet.hudson.test.JenkinsRule; import org.jvnet.hudson.test.RealJenkinsRule; @@ -53,6 +54,9 @@ public class Security3430Test { @Rule public InboundAgentRule agents = new InboundAgentRule(); + @Rule + public TemporaryFolder tmp = new TemporaryFolder(); + @Test public void runWithOldestSupportedAgentJar() throws Throwable { runWithRemoting(RemotingVersionInfo.getMinimumSupportedVersion().toString(), "/old-remoting/remoting-minimum-supported.jar", true); @@ -65,18 +69,14 @@ public void runWithPreviousAgentJar() throws Throwable { @Test public void runWithCurrentAgentJar() throws Throwable { - runWithRemoting(null, null, false); + runWithRemoting(Launcher.VERSION, null, false); } private void runWithRemoting(String expectedRemotingVersion, String remotingResourcePath, boolean requestingJarFromAgent) throws Throwable { - if (expectedRemotingVersion != null) { - FileUtils.copyURLToFile(Security3430Test.class.getResource(remotingResourcePath), new File(jj.getHome(), "agent.jar")); - } - jj.startJenkins(); final String agentName = "agent1"; try { - agents.createAgent(jj, InboundAgentRule.Options.newBuilder().name(agentName).build()); + createAgent(agentName, remotingResourcePath); jj.runRemotely(Security3430Test::_run, agentName, expectedRemotingVersion, requestingJarFromAgent, true); } finally { agents.stop(jj, agentName); @@ -84,13 +84,31 @@ private void runWithRemoting(String expectedRemotingVersion, String remotingReso jj.runRemotely(Security3430Test::disableJarURLValidatorImpl); final String agentName2 = "agent2"; try { - agents.createAgent(jj, InboundAgentRule.Options.newBuilder().name(agentName2).build()); + createAgent(agentName2, remotingResourcePath); jj.runRemotely(Security3430Test::_run, agentName2, expectedRemotingVersion, requestingJarFromAgent, false); } finally { agents.stop(jj, agentName2); } } + private void createAgent(String name, String remotingResourcePath) throws Throwable { + if (remotingResourcePath != null) { + var jar = tmp.newFile(name + ".jar"); + FileUtils.copyURLToFile(Security3430Test.class.getResource(remotingResourcePath), jar); + // TODO awkward, especially as InboundAgentRule.getAgentArguments is private; + // would be helpful to have an option for a specific agent JAR: + var opts = InboundAgentRule.Options.newBuilder().name(name).skipStart().build(); + agents.createAgent(jj, opts); + agents.start(new InboundAgentRule.AgentArguments(jj.getUrl() + "computer/" + name + "/slave-agent.jnlp", jar, jj.runRemotely(Security3430Test::getJnlpMac, name), 1, List.of()), opts); + } else { + agents.createAgent(jj, InboundAgentRule.Options.newBuilder().name(name).build()); + } + } + + private static String getJnlpMac(JenkinsRule r, String name) throws Throwable { + return ((SlaveComputer) r.jenkins.getComputer(name)).getJnlpMac(); + } + // This is quite artificial, but demonstrating that without JarURLValidatorImpl we do not allow any calls from the agent: private static void disableJarURLValidatorImpl(JenkinsRule j) { assertTrue(ExtensionList.lookup(ChannelConfigurator.class).remove(ExtensionList.lookupSingleton(JarURLValidatorImpl.class))); @@ -111,6 +129,7 @@ private static void _run(JenkinsRule j, String agentName, String expectedRemotin final Computer computer = j.jenkins.getComputer(agentName); assertThat(computer, instanceOf(SlaveComputer.class)); SlaveComputer agent = (SlaveComputer) computer; + j.waitOnline(agent.getNode()); final Channel channel = agent.getChannel(); if (expectedRemotingVersion != null) { final String result = channel.call(new AgentVersionCallable()); @@ -126,7 +145,7 @@ private static void _run(JenkinsRule j, String agentName, String expectedRemotin if (requestingJarFromAgent) { assertThat(logRecords, hasItem(logMessageContainsString("Allowing URL: file:/"))); } else { - assertThat(logRecords, is(empty())); + assertThat(logRecords.stream().map(LogRecord::getMessage).toList(), is(empty())); } logHandler.clear(); @@ -140,7 +159,7 @@ private static void _run(JenkinsRule j, String agentName, String expectedRemotin assertThat(ex.getMessage(), containsString("No hudson.remoting.JarURLValidator has been set for this channel, so all #fetchJar calls are rejected. This is likely a bug in Jenkins. As a workaround, try updating the agent.jar file.")); } else { assertTrue(channel.preloadJar(j.jenkins.getPluginManager().uberClassLoader, Stapler.class)); - assertThat(logRecords, is(empty())); + assertThat(logRecords.stream().map(LogRecord::getMessage).toList(), is(empty())); } } } diff --git a/update-since-todo.py b/update-since-todo.py index 3b0241a9928f..38563e6ca488 100755 --- a/update-since-todo.py +++ b/update-since-todo.py @@ -102,8 +102,8 @@ def analyze_files(commits_and_tags, dry_run=False): "*.js", ] - runningInCI = os.environ.get("CI", "false") == "true" - if runningInCI: + is_ci = "CI" in os.environ + if is_ci: print("
Detailed output\n\n") with subprocess.Popen(cmd, stdout=subprocess.PIPE) as proc: for line in io.TextIOWrapper(proc.stdout): @@ -113,7 +113,7 @@ def analyze_files(commits_and_tags, dry_run=False): if retcode: raise subprocess.CalledProcessError(retcode, cmd) print() - if runningInCI: + if is_ci: print("
\n") diff --git a/war/pom.xml b/war/pom.xml index ab2100469ba4..f256a95017ca 100644 --- a/war/pom.xml +++ b/war/pom.xml @@ -299,7 +299,7 @@ THE SOFTWARE. org.jenkins-ci.plugins script-security - 1361.v913100720139 + 1362.v67dc1f0e1b_b_3 hpi @@ -320,7 +320,7 @@ THE SOFTWARE. io.jenkins.plugins plugin-util-api - 4.1.0 + 5.1.0 hpi @@ -342,7 +342,7 @@ THE SOFTWARE. org.jenkins-ci.plugins.workflow workflow-support - 920.v59f71ce16f04 + 926.v9f4f9b_b_98c19 hpi diff --git a/yarn.lock b/yarn.lock index de7c0e057fe5..28ee807765bc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1871,10 +1871,10 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:9.10.0": - version: 9.10.0 - resolution: "@eslint/js@npm:9.10.0" - checksum: 10c0/2ac45a002dc1ccf25be46ea61001ada8d77248d1313ab4e53f3735e5ae00738a757874e41f62ad6fbd49df7dffeece66e5f53ff0d7b78a99ce4c68e8fea66753 +"@eslint/js@npm:9.11.0": + version: 9.11.0 + resolution: "@eslint/js@npm:9.11.0" + checksum: 10c0/7403aeba28ba9cae3470d149b334a51375eb7fd850f167555c81cc72fe98e5cc5ac3059ccdbe68eb255a49d7498a7288d25429af0c7d20afeb4b3c0748349bb4 languageName: node linkType: hard @@ -1885,12 +1885,12 @@ __metadata: languageName: node linkType: hard -"@eslint/plugin-kit@npm:^0.1.0": - version: 0.1.0 - resolution: "@eslint/plugin-kit@npm:0.1.0" +"@eslint/plugin-kit@npm:^0.2.0": + version: 0.2.0 + resolution: "@eslint/plugin-kit@npm:0.2.0" dependencies: levn: "npm:^0.4.1" - checksum: 10c0/fae97cd4efc1c32501c286abba1b5409848ce8c989e1ca6a5bb057a304a2cd721e6e957f6bc35ce95cfd0871e822ed42df3c759fecdad72c30e70802e26f83c7 + checksum: 10c0/00b92bc52ad09b0e2bbbb30591c02a895f0bec3376759562590e8a57a13d096b22f8c8773b6bf791a7cf2ea614123b3d592fd006c51ac5fd0edbb90ea6d8760c languageName: node linkType: hard @@ -2635,16 +2635,16 @@ __metadata: languageName: node linkType: hard -"babel-loader@npm:9.1.3": - version: 9.1.3 - resolution: "babel-loader@npm:9.1.3" +"babel-loader@npm:9.2.1": + version: 9.2.1 + resolution: "babel-loader@npm:9.2.1" dependencies: find-cache-dir: "npm:^4.0.0" schema-utils: "npm:^4.0.0" peerDependencies: "@babel/core": ^7.12.0 webpack: ">=5" - checksum: 10c0/e3fc3c9e02bd908b37e8e8cd4f3d7280cf6ac45e33fc203aedbb615135a0fecc33bf92573b71a166a827af029d302c0b060354985cd91d510320bd70a2f949eb + checksum: 10c0/efb82faff4c7c27e9c15bb28bf11c73200e61cf365118a9514e8d74dd489d0afc2a0d5aaa62cb4254eefc2ab631579224d95a03fd245410f28ea75e24de54ba4 languageName: node linkType: hard @@ -2835,7 +2835,7 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:>=3.0.0 <4.0.0, chokidar@npm:^3.6.0": +"chokidar@npm:^3.6.0": version: 3.6.0 resolution: "chokidar@npm:3.6.0" dependencies: @@ -2854,6 +2854,15 @@ __metadata: languageName: node linkType: hard +"chokidar@npm:^4.0.0": + version: 4.0.0 + resolution: "chokidar@npm:4.0.0" + dependencies: + readdirp: "npm:^4.0.1" + checksum: 10c0/42d03c53b0ad200689e4fae7763133561480561cab8ba5304e8f2298ff45ff84bf0f6065c3f02b9e557b74b156813734439a1a2ff19a1ea6b35692395cd92738 + languageName: node + linkType: hard + "chownr@npm:^2.0.0": version: 2.0.0 resolution: "chownr@npm:2.0.0" @@ -3518,16 +3527,16 @@ __metadata: languageName: node linkType: hard -"eslint@npm:9.10.0": - version: 9.10.0 - resolution: "eslint@npm:9.10.0" +"eslint@npm:9.11.0": + version: 9.11.0 + resolution: "eslint@npm:9.11.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.2.0" "@eslint-community/regexpp": "npm:^4.11.0" "@eslint/config-array": "npm:^0.18.0" "@eslint/eslintrc": "npm:^3.1.0" - "@eslint/js": "npm:9.10.0" - "@eslint/plugin-kit": "npm:^0.1.0" + "@eslint/js": "npm:9.11.0" + "@eslint/plugin-kit": "npm:^0.2.0" "@humanwhocodes/module-importer": "npm:^1.0.1" "@humanwhocodes/retry": "npm:^0.3.0" "@nodelib/fs.walk": "npm:^1.2.8" @@ -3563,7 +3572,7 @@ __metadata: optional: true bin: eslint: bin/eslint.js - checksum: 10c0/7357f3995b15043eea83c8c0ab16c385ce3f28925c1b11cfcd6b2ede8faab3d91ede84a68173dd5f6e3e176e177984e6218de58b7b8388e53e2881f1ec07c836 + checksum: 10c0/3438a78172bc667dc87bc4ad864671bd93231c82c9d366899ea3a77fc3444c8cdd158e7fe3ca1cfe4cb566045b1b36c0ccae9fc20efeb4b187f1a534075a1177 languageName: node linkType: hard @@ -4390,12 +4399,12 @@ __metadata: "@babel/cli": "npm:7.25.6" "@babel/core": "npm:7.25.2" "@babel/preset-env": "npm:7.25.4" - "@eslint/js": "npm:9.10.0" - babel-loader: "npm:9.1.3" + "@eslint/js": "npm:9.11.0" + babel-loader: "npm:9.2.1" clean-webpack-plugin: "npm:4.0.0" css-loader: "npm:7.1.2" css-minimizer-webpack-plugin: "npm:7.0.0" - eslint: "npm:9.10.0" + eslint: "npm:9.11.0" eslint-config-prettier: "npm:9.1.0" eslint-formatter-checkstyle: "npm:8.40.0" globals: "npm:15.9.0" @@ -4405,13 +4414,13 @@ __metadata: jquery: "npm:3.7.1" lodash: "npm:4.17.21" mini-css-extract-plugin: "npm:2.9.1" - postcss: "npm:8.4.45" + postcss: "npm:8.4.47" postcss-loader: "npm:8.1.1" postcss-preset-env: "npm:10.0.3" postcss-scss: "npm:4.0.9" prettier: "npm:3.3.3" - sass: "npm:1.78.0" - sass-loader: "npm:16.0.1" + sass: "npm:1.79.3" + sass-loader: "npm:16.0.2" sortablejs: "npm:1.15.3" style-loader: "npm:4.0.0" stylelint: "npm:16.9.0" @@ -5258,7 +5267,7 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.0.0, picocolors@npm:^1.0.1": +"picocolors@npm:^1.0.0, picocolors@npm:^1.0.1, picocolors@npm:^1.1.0": version: 1.1.0 resolution: "picocolors@npm:1.1.0" checksum: 10c0/86946f6032148801ef09c051c6fb13b5cf942eaf147e30ea79edb91dd32d700934edebe782a1078ff859fb2b816792e97ef4dab03d7f0b804f6b01a0df35e023 @@ -6094,14 +6103,14 @@ __metadata: languageName: node linkType: hard -"postcss@npm:8.4.45, postcss@npm:^8.4.33, postcss@npm:^8.4.38, postcss@npm:^8.4.41": - version: 8.4.45 - resolution: "postcss@npm:8.4.45" +"postcss@npm:8.4.47, postcss@npm:^8.4.33, postcss@npm:^8.4.38, postcss@npm:^8.4.41": + version: 8.4.47 + resolution: "postcss@npm:8.4.47" dependencies: nanoid: "npm:^3.3.7" - picocolors: "npm:^1.0.1" - source-map-js: "npm:^1.2.0" - checksum: 10c0/ad6f8b9b1157d678560373696109745ab97a947d449f8a997acac41c7f1e4c0f3ca4b092d6df1387f430f2c9a319987b1780dbdc27e35800a88cde9b606c1e8f + picocolors: "npm:^1.1.0" + source-map-js: "npm:^1.2.1" + checksum: 10c0/929f68b5081b7202709456532cee2a145c1843d391508c5a09de2517e8c4791638f71dd63b1898dba6712f8839d7a6da046c72a5e44c162e908f5911f57b5f44 languageName: node linkType: hard @@ -6161,6 +6170,13 @@ __metadata: languageName: node linkType: hard +"readdirp@npm:^4.0.1": + version: 4.0.1 + resolution: "readdirp@npm:4.0.1" + checksum: 10c0/e5a0b547015f68ecc918f115b62b75b2b840611480a9240cb3317090a0ddac01bb9b40315a8fa08acdf52a43eea17b808c89b645263cba3ab64dc557d7f801f1 + languageName: node + linkType: hard + "readdirp@npm:~3.6.0": version: 3.6.0 resolution: "readdirp@npm:3.6.0" @@ -6340,9 +6356,9 @@ __metadata: languageName: node linkType: hard -"sass-loader@npm:16.0.1": - version: 16.0.1 - resolution: "sass-loader@npm:16.0.1" +"sass-loader@npm:16.0.2": + version: 16.0.2 + resolution: "sass-loader@npm:16.0.2" dependencies: neo-async: "npm:^2.6.2" peerDependencies: @@ -6362,20 +6378,20 @@ __metadata: optional: true webpack: optional: true - checksum: 10c0/ac841ea8881354e4bf286c2c5f331b60c2edf73c6e4abbc85b954024ec16dfda01accf59ea6fcb4b29ec7dd5a81a9950fc9138dcb262b9130865367201b7699a + checksum: 10c0/9c5165b44fc6229d8f36fb2af3ebb9d1e3a837bcc80040d3f3fc5793cd2998407e2ed55853c2b342cca2b5e17fa141160198ad034685a95b17126200c320ae11 languageName: node linkType: hard -"sass@npm:1.78.0": - version: 1.78.0 - resolution: "sass@npm:1.78.0" +"sass@npm:1.79.3": + version: 1.79.3 + resolution: "sass@npm:1.79.3" dependencies: - chokidar: "npm:>=3.0.0 <4.0.0" + chokidar: "npm:^4.0.0" immutable: "npm:^4.0.0" source-map-js: "npm:>=0.6.2 <2.0.0" bin: sass: sass.js - checksum: 10c0/6577a87c00b03a5a50f3a11b4b6592f28abce34e61812e381535a3b712151bd94db3ca06467d20395431e0f38a23f99e616d6859d771fb6d4617c359f590c48c + checksum: 10c0/ad171bbbb2d7a789cc47803a59dcf2d0ac92ede34b538bb3fd683b6391a9ac3dc3eabaac264fc9582c770c4e435b85840e011785b7adfc0ac002b51ba91179c9 languageName: node linkType: hard @@ -6530,7 +6546,7 @@ __metadata: languageName: node linkType: hard -"source-map-js@npm:>=0.6.2 <2.0.0, source-map-js@npm:^1.0.1, source-map-js@npm:^1.2.0": +"source-map-js@npm:>=0.6.2 <2.0.0, source-map-js@npm:^1.0.1, source-map-js@npm:^1.2.1": version: 1.2.1 resolution: "source-map-js@npm:1.2.1" checksum: 10c0/7bda1fc4c197e3c6ff17de1b8b2c20e60af81b63a52cb32ec5a5d67a20a7d42651e2cb34ebe93833c5a2a084377e17455854fee3e21e7925c64a51b6a52b0faf