Compare commits

7 Commits
1.1 ... main

29 changed files with 5532 additions and 2427 deletions

View File

@@ -0,0 +1,51 @@
From ec3a1efce07770b7641e07d41a73732967c65175 Mon Sep 17 00:00:00 2001
From: Luna D Dragon <luna.dragon@suse.com>
Date: Tue, 8 Jul 2025 14:58:03 +0530
Subject: [PATCH 1/3] cockpit overview: support SUSE_SUPPORT_PRODUCT keys
SLE Micro 6.2(and Framework one components) have custom os-release keys namely in SUSE_SUPPORT_PRODUCT and
SUSE_SUPPORT_PRODUCT_VERSION instead of the standard os prettyname which
results in systemd not being able to determine the os name correctly.
This patch should be dropped when systemd is fixed
---
pkg/systemd/overview.jsx | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/pkg/systemd/overview.jsx b/pkg/systemd/overview.jsx
index 868469d68..186fcf59e 100644
--- a/pkg/systemd/overview.jsx
+++ b/pkg/systemd/overview.jsx
@@ -42,6 +42,7 @@ import { ShutdownModal } from 'cockpit-components-shutdown.jsx';
import { WithDialogs, DialogsContext } from "dialogs.jsx";
import "./overview.scss";
+import { read_os_release } from "os-release.js";
const _ = cockpit.gettext;
@@ -98,6 +99,7 @@ class OverviewPage extends React.Component {
this.hostname_proxy.addEventListener("changed", data => {
this.setState({ hostnameData: data.detail });
});
+ read_os_release().then(os_release => this.setState({ os_release }));
}
render() {
@@ -160,8 +162,12 @@ class OverviewPage extends React.Component {
{this.hostname_text()}
</h1>
{this.state.hostnameData &&
- this.state.hostnameData.OperatingSystemPrettyName &&
- <div className="ct-overview-header-subheading" id="system_information_os_text">{cockpit.format(_("running $0"), this.state.hostnameData.OperatingSystemPrettyName)}</div>}
+ this.state.hostnameData.OperatingSystemPrettyName && (
+ <div className="ct-overview-header-subheading" id="system_information_os_text">
+ {(this.state.os_release && this.state.os_release.SUSE_PRETTY_NAME)
+ ? cockpit.format(_("running $0"), this.state.os_release.SUSE_PRETTY_NAME)
+ : cockpit.format(_("running $0"), this.state.hostnameData.OperatingSystemPrettyName)}
+ </div>)}
</div>
<div className='ct-overview-header-actions'>
{ show_superuser && <SuperuserIndicator proxy={this.superuser} /> }
--
2.50.0

View File

@@ -6,13 +6,14 @@ Date: Fri Aug 6 15:11:23 2021 +0200
Index: cockpit/selinux/cockpit.te
===================================================================
--- cockpit.orig/selinux/cockpit.te
+++ cockpit/selinux/cockpit.te
@@ -202,3 +202,11 @@ optional_policy(`
optional_policy(`
diff --git a/selinux/cockpit.te b/selinux/cockpit.te
index 50695ee..55b1226 100644
--- a/selinux/cockpit.te
+++ b/selinux/cockpit.te
@@ -224,6 +224,14 @@ optional_policy(`
gnome_exec_keyringd(cockpit_session_t)
')
+
+# login may read motd file through pam
+optional_policy(`
+ gen_require(`
@@ -20,3 +21,7 @@ Index: cockpit/selinux/cockpit.te
+ ')
+ cockpit_read_pid_files(local_login_t)
+')
+
#########################################################
#
# Misc

View File

@@ -0,0 +1,37 @@
From 14b86b6d60b009c4294f06589a561e688ba49223 Mon Sep 17 00:00:00 2001
From: Luna D Dragon <luna.dragon@suse.com>
Date: Tue, 8 Jul 2025 14:58:25 +0530
Subject: [PATCH 2/3] cockpit-kdump support SLE micro 6.2
SLE micro 6.2 no longer has MicroOS in the NAME. This updates it to
check if the VARIANT_ID is transactional to use transactional-update
over manually enabling kdump.
---
pkg/kdump/kdump-view.jsx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/pkg/kdump/kdump-view.jsx b/pkg/kdump/kdump-view.jsx
index eee4d16b1..7d8439f2b 100644
--- a/pkg/kdump/kdump-view.jsx
+++ b/pkg/kdump/kdump-view.jsx
@@ -421,7 +421,7 @@ export class KdumpPage extends React.Component {
kdumpctl reset-crashkernel`;
}
let shell;
- if (this.state.os_release.NAME?.includes('MicroOS')) {
+ if (this.state.os_release.NAME?.includes('MicroOS') || this.state.os_release.VARIANT_ID?.includes("transactional")) {
enableCrashKernel = `
# A reboot will be required if crashkernel was not set before
transactional-update setup-kdump`;
@@ -443,7 +443,7 @@ ${enableCrashKernel}
Dialogs.show(
<ModificationsExportDialog
- ansible={ this.state.os_release.NAME?.includes('MicroOS') ? null : exportAnsibleTask(this.props.kdumpStatus.config, this.state.os_release)}
+ ansible={ (this.state.os_release.NAME?.includes('MicroOS') || this.state.os_release.VARIANT_ID?.includes("transactional")) ? null : exportAnsibleTask(this.props.kdumpStatus.config, this.state.os_release)}
shell={shell}
onClose={Dialogs.close}
/>);
--
2.50.0

View File

@@ -0,0 +1,136 @@
From cfc476e5127ee3f21b70124e77ded9627e9692b5 Mon Sep 17 00:00:00 2001
From: Luna D Dragon <luna.dragon@suse.com>
Date: Tue, 8 Jul 2025 15:09:09 +0530
Subject: [PATCH 3/3] branding: use SUSE_SUPPORT_PRODUCT and
SUSE_SUPPORT_PRODUCT_VERSION
---
Makefile.am | 1 +
src/branding/suse/Makefile.am | 11 +++++
src/branding/suse/branding.css | 82 ++++++++++++++++++++++++++++++++++
3 files changed, 94 insertions(+)
create mode 100644 src/branding/suse/Makefile.am
create mode 100644 src/branding/suse/branding.css
diff --git a/Makefile.am b/Makefile.am
index 83f1ee7a7..1198d191e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -167,6 +167,7 @@ include src/branding/debian/Makefile.am
include src/branding/default/Makefile.am
include src/branding/fedora/Makefile.am
include src/branding/opensuse/Makefile.am
+include src/branding/suse/Makefile.am
include src/branding/rhel/Makefile.am
include src/branding/ubuntu/Makefile.am
include src/client/Makefile.am
diff --git a/src/branding/suse/Makefile.am b/src/branding/suse/Makefile.am
new file mode 100644
index 000000000..4a1e7ab72
--- /dev/null
+++ b/src/branding/suse/Makefile.am
@@ -0,0 +1,11 @@
+slemicrobrandingdir = $(datadir)/cockpit/branding/suse
+
+dist_slemicrobranding_DATA = \
+ src/branding/suse/branding.css \
+ $(NULL)
+
+install-data-hook::
+ ln -sf /usr/share/wallpapers/SLEdefault/contents/images/1920x1200.png $(DESTDIR)$(slemicrobrandingdir)/default-1920x1200.png
+ ln -sf /usr/share/pixmaps/distribution-logos/square-hicolor.svg $(DESTDIR)$(slemicrobrandingdir)/square-hicolor.svg
+ ln -sf /usr/share/pixmaps/distribution-logos/favicon.ico $(DESTDIR)$(slemicrobrandingdir)/favicon.ico
+ ln -sf /usr/share/pixmaps/distribution-logos/apple-touch-icon.png $(DESTDIR)$(slemicrobrandingdir)/apple-touch-icon.png
\ No newline at end of file
diff --git a/src/branding/suse/branding.css b/src/branding/suse/branding.css
new file mode 100644
index 000000000..c1617abc2
--- /dev/null
+++ b/src/branding/suse/branding.css
@@ -0,0 +1,82 @@
+/* Extra overrides */
+:root {
+ --eos-bc-green-500: #30ba78;
+ --eos-bc-pine-500: #0c322c;
+ --eos-bc-gray-50: #F2F2F2;
+ --eos-bc-white: #ffffff;
+ --eos-bc-text: #333;
+}
+
+
+#brand:before {
+ content: "${SUSE_PRETTY_NAME}";
+}
+
+#option-group svg polygon {
+ fill: var(--eos-bc-text);
+}
+
+/* Nav & sidebar overwrites */
+.navbar-pf {
+ background: var(--eos-bc-pine-500);
+}
+
+.navbar-pf-vertical {
+ border-top: none;
+}
+
+
+/* Default overrides */
+
+.login-note {
+ color: transparent;
+ position: relative;
+}
+
+body.login-pf {
+ background-color: var(--eos-bc-pine-500);
+}
+
+/* Only use background image on desktops */
+@media(min-width: 1024px) {
+ body.login-pf {
+ background-image: url("default-1920x1200.png") !important;
+ background-repeat: no-repeat;
+ background-position: 100% 0 !important;
+ background-size: cover;
+ }
+}
+
+/* Hide badge on desktops (already included in background) */
+@media(max-width: 1023px) {
+ #badge {
+ width: 51px;
+ height: 45px;
+ background-image: url("square-hicolor.svg");
+ background-repeat: no-repeat;
+ }
+}
+
+#brand {
+ width: auto;
+ height: auto;
+ background-image: none;
+ background-repeat: no-repeat;
+ font-size: 2em;
+ white-space: nowrap;
+}
+
+/* Switch to small font faster to not clip long name */
+@media(max-width: 560px) {
+ #brand {
+ font-size: inherit;
+ }
+}
+
+#index-brand {
+ font-weight: bold;
+}
+
+#index-brand:before {
+ content: "${PRETTY_NAME}";
+}
\ No newline at end of file
--
2.50.0

View File

@@ -1,11 +0,0 @@
--- pkg/src/systemd/cockpit-ws-user.service
+++ pkg/src/systemd/cockpit-ws-user.service
@@ -1,6 +1,8 @@
[Unit]
Description=Dynamic user for cockpit-ws
Documentation=man:cockpit-ws(8)
+# avoid dependency loop with basic.target/sockets.target shutdown
+DefaultDependencies=no
BindsTo=cockpit.service
[Service]

View File

@@ -1,5 +1,5 @@
--- a/src/systemd/inactive.motd
+++ b/src/systemd/inactive.motd
--- a/src/systemd/inactive.issue
+++ b/src/systemd/inactive.issue
@@ -1,2 +1,7 @@
Activate the web console with: systemctl enable --now cockpit.socket

View File

@@ -0,0 +1,64 @@
From 3f0d624c5af89fc9ebe81d92351d8ac8e7583997 Mon Sep 17 00:00:00 2001
From: Alice Brooks <alice.brooks@suse.com>
Date: Mon, 28 Apr 2025 12:40:31 +0530
Subject: [PATCH] Remove DynamicUser setting as these conflict with real users
Real users are having to be created due to Leap15.6's nsswitch not
containing systemd, so dynamic users cannot be resolved inter
service due to this we must manually create the users postinstall
Co-authored-by: Luna D Dragon <luna.dragon@suse.com>
---
src/systemd/cockpit-wsinstance-http.service.in | 4 +++-
src/systemd/cockpit-wsinstance-https@.service.in | 4 +++-
src/systemd/cockpit.service.in | 4 +++-
3 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/src/systemd/cockpit-wsinstance-http.service.in b/src/systemd/cockpit-wsinstance-http.service.in
index 539b90345..dfc9f3b1b 100644
--- a/src/systemd/cockpit-wsinstance-http.service.in
+++ b/src/systemd/cockpit-wsinstance-http.service.in
@@ -7,7 +7,9 @@ After=cockpit-session.socket
[Service]
ExecStart=@libexecdir@/cockpit-ws --no-tls --port=0
-DynamicUser=yes
+DynamicUser=no
+PrivateTmp=yes
+ProtectHome=yes
Group=cockpit-session-socket
PrivateDevices=yes
diff --git a/src/systemd/cockpit-wsinstance-https@.service.in b/src/systemd/cockpit-wsinstance-https@.service.in
index f66c9f874..3c07bb9a7 100644
--- a/src/systemd/cockpit-wsinstance-https@.service.in
+++ b/src/systemd/cockpit-wsinstance-https@.service.in
@@ -8,7 +8,9 @@ After=cockpit-session.socket
[Service]
Slice=system-cockpithttps.slice
ExecStart=@libexecdir@/cockpit-ws --for-tls-proxy --port=0
-DynamicUser=yes
+DynamicUser=no
+PrivateTmp=yes
+ProtectHome=yes
Group=cockpit-session-socket
PrivateDevices=yes
diff --git a/src/systemd/cockpit.service.in b/src/systemd/cockpit.service.in
index 97adda221..4b496fd3a 100644
--- a/src/systemd/cockpit.service.in
+++ b/src/systemd/cockpit.service.in
@@ -10,7 +10,9 @@ After=cockpit-wsinstance-http.socket cockpit-wsinstance-https-factory.socket
RuntimeDirectory=cockpit/tls
ExecStartPre=+@libexecdir@/cockpit-certificate-ensure --for-cockpit-tls
ExecStart=@libexecdir@/cockpit-tls
-DynamicUser=yes
+DynamicUser=no
+PrivateTmp=yes
+ProtectHome=yes
# otherwise systemd uses 'cockpit' even if it exists as a normal user account
User=cockpit-systemd-service
Group=cockpit-wsinstance-socket
--
2.49.0

View File

@@ -0,0 +1,62 @@
From 388870cfef754dd6f23d13abad2f10dc05758384 Mon Sep 17 00:00:00 2001
From: Miika Alikirri <miika.alikirri@suse.com>
Date: Wed, 19 Mar 2025 08:50:40 +0200
Subject: pybridge: Stop hard-coding endian flag in DBusChannel
When you issue sd_bus_read() you'll always get the data returned to in
the machines native endianness. Therefore the endianness flag can be set
based on the machines architecture.
This is apparently "undertested" on systemd's end so this may have to
fixed in the future if we run into real world cases where sd_bus_read()
doesn't return data in native endianness.
https://github.com/systemd/systemd/pull/36784#issuecomment-2734771532
---
src/cockpit/channels/dbus.py | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/cockpit/channels/dbus.py b/src/cockpit/channels/dbus.py
index 5fc52c3a8..3ebc6404a 100644
--- a/src/cockpit/channels/dbus.py
+++ b/src/cockpit/channels/dbus.py
@@ -38,6 +38,7 @@ import asyncio
import errno
import json
import logging
+import sys
import traceback
import xml.etree.ElementTree as ET
@@ -48,6 +49,8 @@ from ..channel import Channel, ChannelError
logger = logging.getLogger(__name__)
+IS_LITTLE_ENDIAN_MACHINE = sys.byteorder == 'little'
+
# The dbusjson3 payload
#
# This channel payload type translates JSON encoded messages on a
@@ -174,6 +177,7 @@ class DBusChannel(Channel):
name = None
bus = None
owner = None
+ endianness = "<" if IS_LITTLE_ENDIAN_MACHINE else ">"
async def setup_name_owner_tracking(self):
def send_owner(owner):
@@ -346,10 +350,9 @@ class DBusChannel(Channel):
# If the method call has kicked off any signals related to
# watch processing, wait for that to be done.
async with self.watch_processing_lock:
- # TODO: stop hard-coding the endian flag here.
self.send_json(
reply=[reply.get_body()], id=cookie,
- flags="<" if flags is not None else None,
+ flags=self.endianness,
type=reply.get_signature(True)) # noqa: FBT003
except BusError as error:
# actually, should send the fields from the message body
--
2.48.1

View File

@@ -0,0 +1,116 @@
diff --git a/pkg/packagekit/updates.jsx b/pkg/packagekit/updates.jsx
index ce4b3c4cc6d1..b423ee4c09bd 100644
--- a/pkg/packagekit/updates.jsx
+++ b/pkg/packagekit/updates.jsx
@@ -21,6 +21,7 @@ import 'polyfills'; // once per application
import 'cockpit-dark-theme'; // once per page
import cockpit from "cockpit";
+import { fsinfo } from 'cockpit/fsinfo';
import React from "react";
import { createRoot } from 'react-dom/client';
@@ -1079,12 +1080,19 @@ class OsUpdates extends React.Component {
debug("tracer parsed restartPackages:", JSON.stringify(restartPackages));
this.setState({ checkRestartAvailable: true, checkRestartRunning: false, restartPackages });
})
- .catch((exception, data) => {
+ .catch(async (exception, data) => {
// tracer not installed or supported (like on Arch)? then fall back to dnf needs-restarting
if (exception.message?.includes("ModuleNotFoundError") ||
exception.message?.includes("UnsupportedDistribution")) {
- debug('tracer not installed:', JSON.stringify(exception), "trying dnf needs-restarting");
- return this.checkDnfNeedsRestarting();
+ try {
+ // if there's a history for zypper, we can assume the system uses it
+ await fsinfo("/var/log/zypp/history", [], { superuser: "require" });
+ debug('tracer not installed:', JSON.stringify(exception), "trying zypper ps");
+ return this.checkZypperNeedsRestarting();
+ } catch {
+ debug('tracer not installed:', JSON.stringify(exception), "trying dnf needs-restarting");
+ return this.checkDnfNeedsRestarting();
+ }
}
// log the error except for some common cases: polkit does not allow it
@@ -1106,6 +1114,80 @@ class OsUpdates extends React.Component {
});
}
+ checkZypperNeedsRestarting() {
+ const restartPackages = { reboot: [], daemons: [], manual: [] };
+ return cockpit.spawn(["zypper", "ps", "-ss", "--print", "%s"], { err: "message", superuser: "require" })
+ .then((serviceOut) => {
+ debug("zypper ps -ss succeeded:", serviceOut);
+
+ // set all the services to be manually restarted since it's
+ // not always clear if it's safe to restart them via cockpit
+ const data = serviceOut.trim();
+ if (data.length !== 0) {
+ serviceOut.trim()
+ .split("\n")
+ .forEach(line => restartPackages.manual.push(line));
+ }
+
+ // Check if any kernels are updated since system boot,
+ // ignoring kernel-firmware updates as they can make things noisy
+ //
+ // /var/log/zypper.log can be quite big so it's better to
+ // handle the processing on machine instead of fetching the data
+ const kScript = `
+ stat -c %z /proc/ | \\
+ cut -d. -f 1 | \\
+ xargs -i \\
+ awk -F'|' -v boot="{}" \\
+ '/install\\|kernel/{if (boot <= $1 && index($0, "firmware") == 0) {print $3"-"$4"."$5}}' \\
+ /var/log/zypp/history
+ `;
+
+ cockpit.script(kScript, undefined, { err: "message", superuser: "require" })
+ .then(kernels => {
+ debug("zypper kernel scripts succeeded:", kernels);
+
+ if (kernels.trim().length == 0) {
+ return;
+ }
+
+ kernels.trim()
+ .split("\n")
+ .forEach(line => { restartPackages.reboot.push(line.trim()) });
+ })
+ .catch(ex => {
+ if (ex.problem !== "not-found" &&
+ // polkit does not allow it
+ ex.problem !== "access-denied" &&
+ // or unprivileged session
+ ex.problem !== "authentication-failed" &&
+ // or the session goes away while checking
+ ex.problem !== "terminated")
+ console.error("zypper kernel fetching failed:", ex.toString());
+ })
+ .then(() => {
+ let checkRestartAvailable = false;
+ if (restartPackages.reboot.length !== 0 || restartPackages.manual.length !== 0)
+ checkRestartAvailable = true;
+
+ this.setState({ checkRestartAvailable, checkRestartRunning: false, restartPackages });
+ });
+ }).catch((ex) => {
+ // log the error except for some common cases: no zypper
+ if (ex.problem !== "not-found" &&
+ // polkit does not allow it
+ ex.problem !== "access-denied" &&
+ // or unprivileged session
+ ex.problem !== "authentication-failed" &&
+ // or the session goes away while checking
+ ex.problem !== "terminated")
+ console.error("zypper ps -ss failed:", ex);
+
+ // act like it's not available (demand reboot after every update)
+ this.setState({ checkRestartAvailable: false, checkRestartRunning: false, restartPackages });
+ });
+ }
+
checkDnfNeedsRestarting() {
const restartPackages = { reboot: [], daemons: [], manual: [] };

View File

@@ -1,4 +0,0 @@
mtime: 1727777011
commit: 21d1ebacbb91c3907f48a5d9df03dd989adbc2050db1d3aac87b892c3ae84354
url: https://src.suse.de/jzerebecki/cockpit
revision: slfo

12
add_preexec_cockpit.patch Normal file
View File

@@ -0,0 +1,12 @@
diff --git c/src/systemd/cockpit.socket.in w/src/systemd/cockpit.socket.in
index de45b0dc9..a1dccef7f 100644
--- c/src/systemd/cockpit.socket.in
+++ w/src/systemd/cockpit.socket.in
@@ -5,6 +5,7 @@ Wants=cockpit-issue.service
[Socket]
ListenStream=9090
+ExecStartPre=@libexecdir@/check_cockpit_users
ExecStartPost=-@datadir@/@PACKAGE@/issue/update-issue '' localhost
ExecStartPost=-/bin/ln -snf active.issue /run/cockpit/issue
ExecStopPost=-/bin/ln -snf inactive.issue /run/cockpit/issue

35
check_cockpit_users Normal file
View File

@@ -0,0 +1,35 @@
#!/bin/sh
bad_users_groups=("cockpit-wsinstance-socket" "cockpit-session-socket")
failed=false
for gu in "${bad_users_groups[@]}"; do
grep -q "$gu" /etc/passwd
if [ $? -eq 0 ]; then
echo "user ${gu} exists, cockpit will fail to start up if this user exists, please run userdel ${gu} to resolve this"
failed=true
fi
grep -q "$gu" /etc/group
if [ $? -eq 0 ]; then
echo "group ${gu} exists, cockpit will fail to start up if this group exists, please run groupdel ${gu} to resolve this"
failed=true
fi
done
grep -q cockpit-systemd-service /etc/passwd
if [ $? -eq 0 ]; then
echo "user cockpit-systemd-service exists, cockpit will fail to start up if this group exists, please run userdel cockpit-systemd-service to resolve this"
failed=true
fi
if [ -f /etc/nsswitch.conf ]; then
grep -Eq "passwd:.*systemd" /etc/nsswitch.conf
if [ $? -ne 0 ]; then
echo "/etc/nsswitch.conf is out of date, please update it from /usr/etc/nsswitch.conf to use cockpit"
failed=true
fi
fi
if $failed; then
exit 1
fi

Binary file not shown.

BIN
cockpit-340.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

10
cockpit-no-pamoath.pam Normal file
View File

@@ -0,0 +1,10 @@
#%PAM-1.0
auth substack common-auth
# List of users to deny access to Cockpit, by default root is included.
auth required pam_listfile.so item=user sense=deny file=/etc/cockpit/disallowed-users onerr=succeed
account required pam_nologin.so
account include common-account
password include common-password
session required pam_loginuid.so
session optional pam_keyinit.so force revoke
session include common-session

Binary file not shown.

View File

@@ -1,3 +1,238 @@
-------------------------------------------------------------------
Wed Jul 30 03:21:48 UTC 2025 - Luna D Dragon <luna.dragon@suse.com>
- drop duplicate %changelog macro
-------------------------------------------------------------------
Wed Jul 23 12:53:37 UTC 2025 - Alice Brooks <alice.brooks@suse.com>
- Add %postun for firewalld package to ensure the firewall state
remains as expected
-------------------------------------------------------------------
Mon Jul 21 11:39:56 UTC 2025 - Alice Brooks <alice.brooks@suse.com>
- Add cockpit-firewalld package for easily configuring the users
firewall jsc#PED-13228
-------------------------------------------------------------------
Tue Jul 15 07:00:10 UTC 2025 - Luna D Dragon <luna.dragon@suse.com>
- add 0001-cockpit-overview-support-SUSE_SUPPORT_PRODUCT-keys.patch
- add 0002-cockpit-kdump-support-SLE-micro-6.2.patch
- add 0003-branding-use-SUSE_SUPPORT_PRODUCT-and-SUSE_SUPPORT_P.patch to fix bsc#1241003
-------------------------------------------------------------------
Mon Jul 14 08:04:06 UTC 2025 - Luna D Dragon <luna.dragon@suse.com>
- update check_cockpit_users to only check for systemd support in /etc/nsswitch.conf bsc#1246408
-------------------------------------------------------------------
Fri Jul 11 07:13:59 UTC 2025 - Alice Brooks <alice.brooks@suse.com>
- add a requirement on /usr/sbin/kdumptool for cockpit-kdump (bsc#1227402)
-------------------------------------------------------------------
Fri Jul 11 06:50:17 UTC 2025 - Alice Brooks <alice.brooks@suse.com>
- add libzypp-plugin-appdata dependency to cockpit-packagekit as
this will generate the swcatalog which it depends on for calculating
various cockpit packages
-------------------------------------------------------------------
Thu Jul 10 10:10:21 UTC 2025 - Miika Alikirri <miika.alikirri@suse.com>
- Show reboot nofication after updates in packagekit
* Add 0009-packagekit-reboot-notification.patch
-------------------------------------------------------------------
Thu Jun 19 08:30:49 UTC 2025 - Alice Brooks <alice.brooks@suse.com>
- Add kdump-nfs-fixes.patch to fix bsc#1241949
-------------------------------------------------------------------
Mon Jun 16 06:29:04 UTC 2025 - Alice Brooks <alice.brooks@suse.com>
- Update to 340
* Detect multiple mount points when creating btrfs subvolumes
* Disk Self-Test error warnings on the overview page
* Prevent modifying partitions in unsupported places
* Bug fixes and translation updates
-------------------------------------------------------------------
Fri May 23 07:46:41 UTC 2025 - Alice Brooks <alice.brooks@suse.com>
- Update branding patch for micro and sle
-------------------------------------------------------------------
Thu May 22 12:42:43 UTC 2025 - Alice Brooks <alice.brooks@suse.com>
- Bug fixes
- Update theme for patternfly 6
- Update spec from upstream
- Change when selinux policies are installed
-------------------------------------------------------------------
Thu May 8 08:30:23 UTC 2025 - Luna D Dragon <luna.dragon@suse.com>
- update to 338:
Upstream Changes:
- Translation updates
- Bug fixes
- Add check_cockpit_users and add_preexec_cockpit.patch to ensure manually created
users and groups are removed. Also check systemd support is in nsswitch
-------------------------------------------------------------------
Tue Apr 29 04:23:41 UTC 2025 - Luna D Dragon <luna.dragon@suse.com>
- Update cockpit to 337
Upstream Changes:
337:
- Upgraded to Patternfly 6
- Support dnf needs-restarting
336.2:
- storage: Revert "Use mdraid metadata version 1.0 when in Anaconda mode"
- Translation updates
336.1:
- storage: Fix passphrase remembering with "Reuse encryption"
- Translation updates
336:
- storage: Implement deletion of multi-device btrfs
- storage: Use mdraid metadata version 1.0 when in Anaconda mode
- Add a channel capabilities system
335:
storage: SMART support
- update various patches to apply on 337
-------------------------------------------------------------------
Mon Apr 28 07:43:52 UTC 2025 - Luna D Dragon <luna.dragon@suse.com>
- Update 0007-Remove-DynamicUser-setting-as-these-conflict-with-re.patch
Update the patch to set ProtectHome and PrivateTmp to yes as it is implied
when DynamicUser is enabled. The patch is also now only applied on leap 15
where it is relevant
-------------------------------------------------------------------
Wed Apr 16 11:48:12 UTC 2025 - Alice Brooks <alice.brooks@suse.com>
- Add extra requirements for selinux policies to cockpit-selinux-policies
so it can't be installed before selinux or policycoreutils
-------------------------------------------------------------------
Fri Apr 11 13:27:42 UTC 2025 - Alice Brooks <alice.brooks@suse.com>
- Add a requires for either sudo or polkit for assuming admin rights
(bsc#1240569)
-------------------------------------------------------------------
Mon Apr 7 10:41:09 UTC 2025 - Alice Brooks <alice.brooks@suse.com>
- Ensure cockpit-selinux-policies always installs the selinux policy
regardless of selinuxenabled status (bsc#1240787 and bsc#1240421)
-------------------------------------------------------------------
Wed Mar 19 06:56:06 UTC 2025 - Miika Alikirri <miika.alikirri@suse.com>
- Patch python bridge to handle dbus message endianness correctly
- added 0008-pybridge-endian-flag.patch
(bsc#1220477)
-------------------------------------------------------------------
Wed Mar 12 04:23:06 UTC 2025 - Luna D Dragon <luna.dragon@suse.com>
- move selinux policies to cockpit-selinux-policies bsc#1236057
-------------------------------------------------------------------
Mon Mar 10 11:41:28 UTC 2025 - Alice Brooks <alice.brooks@suse.com>
- Update to 334.1
- Various bug fixes and improvements
- Translation updates
- npm modules updated, since new version
-------------------------------------------------------------------
Mon Feb 24 17:02:38 UTC 2025 - Adam Majer <adam.majer@suse.de>
- fix build with latest local-npm-registry
-------------------------------------------------------------------
Fri Feb 21 08:03:00 UTC 2025 - Alice Brooks <alice.brooks@suse.com>
- Always apply 0007-Remove-DynamicUser-setting-as-these-conflict-with-re.patch
for every build system. Fixes bsc#1237451
-------------------------------------------------------------------
Thu Feb 20 22:22:32 UTC 2025 - Miika Alikirri <miika.alikirri@suse.com>
- Add functionality to cockpit-packagekit that allows selecting what updates
should be applied
- Added packagekit-single-install.patch file that adds this functionality
-------------------------------------------------------------------
Fri Feb 7 09:24:33 UTC 2025 - Alice Brooks <alice.brooks@suse.com>
- Update to 332
- Updated naming convention for motd to issue and relevant patches
- Added 0007-Remove-DynamicUser-setting-as-these-conflict-with-re.patch
since dynamic users can't be resolved since systemd is missing in nsswitch
bsc#1230638
-------------------------------------------------------------------
Thu Jan 30 12:59:34 UTC 2025 - Alice Brooks <alice.brooks@suse.com>
- Remove 0005-cockpit-ws-user-remove-default-deps.patch
- Fix dynamic users for 330 since systemd isn't included in the
nsswitch.conf
- Tidy up pam_oath removal for leap
- Ship a new pam file since Leap15 doesn't have pam_oath
- Don't change motd if we don't have pam_oath
- Properly fix pidfd_getpid
- This can be dropped once we update again as it's been upstreamed
-------------------------------------------------------------------
Fri Dec 6 06:32:31 UTC 2024 - Luna D Dragon <luna.dragon@suse.com>
- Update to 330
- Web server: Increased sandboxing, setuid removal, bootc support
- Development: New install mode using systemd-sysext
-------------------------------------------------------------------
Mon Nov 25 06:18:44 UTC 2024 - Luna D Dragon <luna.dragon@suse.com>
- update to 329.1:
- cockpit.js: Put back cockpit.{resolve,reject}() to fix subscription-manager-cockpit
- Past updates:
* 329
- Shell: Extra warnings when connecting to remote hosts
* 328:
- Bug fixes and performance improvements
* 327:
- Connect to similar servers without Cockpit installed
* 326:
- cockpit-pcp package is now obsolete
- cockpit/ws container: Connect to servers without installed Cockpit
- cockpit/ws container: Support host specific SSH keys
- Storage: Support for Stratis filesystem sizes and limits
* 325:
- client: Properly handle unknown SSH host keys
* 324:
- Bug fixes and performance improvements
* 323.1:
- Translation updates
* 323:
- login: Prevent multiple logins in a single browser session
- Update documentation links
-------------------------------------------------------------------
Wed Oct 9 12:14:14 UTC 2024 - Alice Brooks <alice.brooks@suse.com>
- suse_docs.patch: update documentation to point at new links (bsc#1226050)
- remove_rh_links.patch: remove additional hardcoded RH refs (bsc#1221336)
- hide-pcp.patch: correct patch to properly disable pcp on micro
(bsc#1226049)
- suse-microos-branding.patch: use suse ID as branding instead of sle-micro
(bsc#1227441)
-------------------------------------------------------------------
Mon Sep 30 07:08:12 UTC 2024 - Alice Brooks <alice.brooks@suse.com>
@@ -8,11 +243,27 @@ Wed Sep 18 12:37:18 UTC 2024 - Jan Zerebecki <jan.suse@zerebecki.de>
- support optional TOTP for authentication, requires pam_oath
-------------------------------------------------------------------
Tue Aug 20 13:24:06 UTC 2024 - Adam Majer <adam.majer@suse.de>
- remove requires on pam_oath completely. It will be re-introduced
later when it works with optional enrollment
-------------------------------------------------------------------
Mon Aug 20 11:44:33 UTC 2024 - Alice Brooks <alice.brooks@suse.com>
- add 0005-cockpit-ws-user-remove-default-deps.patch (bsc#1229146)
-------------------------------------------------------------------
Mon Aug 12 13:47:26 UTC 2024 - Luna D Dragon <luna.dragon@suse.com>
- new version 322:
* shell: Deprecate host switcher
* files: Permissions column in details view
- suse_docs.patch: refreshed
For details, see https://cockpit-project.org/blog/cockpit-322.html
-------------------------------------------------------------------
Thu Aug 8 12:21:51 UTC 2024 - Jan Zerebecki <jan.suse@zerebecki.de>
@@ -30,6 +281,7 @@ Sat Aug 7 09:37:00 UTC 2024 - pallas wept <pallaswept@proton.me>
- Recommend cockpit-packagekit if zypper is installed
-------------------------------------------------------------------
Wed Aug 7 09:36:58 UTC 2024 - Jan Zerebecki <jan.suse@zerebecki.de>
- load pam_oath for optional TOTP for authentication

View File

@@ -12,7 +12,7 @@
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Cockpit; If not, see <http://www.gnu.org/licenses/>.
# along with Cockpit; If not, see <https://www.gnu.org/licenses/>.
#
#
@@ -50,12 +50,14 @@ Summary: Web Console for Linux servers
License: LGPL-2.1-or-later
URL: https://cockpit-project.org/
Version: 321
Version: 340
Release: 0
Source0: cockpit-%{version}.tar
Source0: cockpit-%{version}.tar.gz
Source1: cockpit.pam
Source2: cockpit-rpmlintrc
Source3: cockpit-suse-theme.tar
Source4: cockpit-no-pamoath.pam
Source5: check_cockpit_users
Source10: update_version.sh
Source99: README.packaging
Source98: package-lock.json
@@ -66,15 +68,24 @@ Patch2: suse_docs.patch
Patch3: suse-microos-branding.patch
Patch4: css-overrides.patch
Patch5: storage-btrfs.patch
Patch6: kdump-nfs-fixes.patch
# SLE Micro specific patches
Patch101: hide-pcp.patch
Patch102: 0002-selinux-temporary-remove-setroubleshoot-section.patch
Patch107: 0006-totp-motd.patch
Patch108: 0007-Remove-DynamicUser-setting-as-these-conflict-with-re.patch
# For anything based on SLES 15 codebase (including Leap, SLE Micro)
Patch103: 0004-leap-gnu18-removal.patch
Patch104: selinux_libdir.patch
Patch105: fix-libexecdir.patch
Patch106: 0005-cockpit-ws-user-remove-default-deps.patch
Patch106: packagekit-single-install.patch
Patch109: 0008-pybridge-endian-flag.patch
Patch110: add_preexec_cockpit.patch
Patch111: 0001-cockpit-overview-support-SUSE_SUPPORT_PRODUCT-keys.patch
Patch112: 0002-cockpit-kdump-support-SLE-micro-6.2.patch
Patch113: 0003-branding-use-SUSE_SUPPORT_PRODUCT-and-SUSE_SUPPORT_P.patch
Patch114: 0009-packagekit-reboot-notification.patch
Patch201: remove_rh_links.patch
%define build_all 1
%if 0%{?rhel} == 8 && 0%{?epel} == 0 && !0%{?build_all}
@@ -107,12 +118,9 @@ Patch106: 0005-cockpit-ws-user-remove-default-deps.patch
ExcludeArch: %{ix86}
%endif
# pcp stopped building on ix86 in Fedora 40+, and broke hard on 39: https://bugzilla.redhat.com/show_bug.cgi?id=2284431
%define build_pcp 1
%if 0%{?fedora} >= 40 || 0%{?rhel} >= 10 || 0%{?suse_version} > 1500
%ifarch %ix86
%define build_pcp 0
%endif
%define enable_multihost 1
%if 0%{?fedora} >= 41 || 0%{?rhel} >= 10
%define enable_multihost 0
%endif
%if 0%{?suse_version} == 0 || 0%{?suse_version} > 1500
@@ -135,7 +143,6 @@ BuildRequires: make
BuildRequires: /usr/bin/python3
BuildRequires: python3-devel
BuildRequires: gettext >= 0.21
BuildRequires: libssh-devel >= 0.8.5
BuildRequires: openssl-devel
BuildRequires: gnutls-devel >= 3.4.3
BuildRequires: zlib-devel
@@ -149,21 +156,12 @@ BuildRequires: glib2-devel >= 2.50.0
BuildRequires: pkgconfig(libsystemd) >= 235
%if 0%{?suse_version}
BuildRequires: distribution-release
%if %{build_pcp}
BuildRequires: libpcp-devel
BuildRequires: pcp-devel
BuildRequires: libpcp3
BuildRequires: libpcp_import1
%endif
BuildRequires: openssh
BuildRequires: distribution-logos
BuildRequires: wallpaper-branding
# needed for /var/lib/pcp directory ownership
BuildRequires: pcp
%else
%if %{build_pcp}
BuildRequires: pcp-libs-devel
%endif
BuildRequires: openssh-clients
BuildRequires: docbook-style-xsl
%endif
@@ -194,7 +192,8 @@ Requires: cockpit-system
# Optional components
Recommends: (cockpit-storaged if udisks2)
Recommends: (cockpit-packagekit if (dnf or zypper))
Suggests: cockpit-pcp
Recommends: (cockpit-firewalld if firewalld)
Suggests: python3-pcp
%if 0%{?rhel} == 0
Recommends: (cockpit-networkmanager if NetworkManager)
@@ -211,26 +210,33 @@ BuildRequires: python3-pip
%if 0%{?rhel} == 0 && !0%{?suse_version}
# All of these are only required for running pytest (which we only do on Fedora)
BuildRequires: procps-ng
BuildRequires: pyproject-rpm-macros
BuildRequires: python3-pytest-asyncio
BuildRequires: python3-pytest-cov
BuildRequires: python3-pytest-timeout
BuildRequires: python3-tox-current-env
%endif
%prep
%setup -q -n cockpit-%{version} -a 3
%patch -P 1 -p1
%patch -P 2 -p1
%if 0%{?is_opensuse} || 0%{?suse_version} < 1600
%patch -P 3 -p1
%else
%patch -P 113 -p1
%endif
%patch -P 4 -p1
%patch -P 5 -p1
%patch -P 6 -p1
%patch -P 106 -p1
%patch -P 107 -p1
%patch -P 109 -p1
%patch -P 114 -p1
# SLE Micro specific patches
%if 0%{?is_smo}
%patch -P 101 -p1
%patch -P 107 -p1
# Patches for versions lower then SLE Micro 5.5
%if 0%{?sle_version} < 150500
%patch -P 102 -p1
@@ -239,13 +245,31 @@ BuildRequires: python3-tox-current-env
# For anything based on SLES 15 codebase (including Leap, SLEM)
%if 0%{?suse_version} == 1500
%patch -P 103 -p1
%patch -P 104 -p0
%patch -P 104 -p1
%patch -P 105 -p1
%patch -P 108 -p1
%else
%patch -P 107 -p1
%endif
%if 0%{?suse_version} >= 1600
%patch -P 110 -p1
%if !0%{?is_opensuse}
%patch -P 111 -p1
%patch -P 112 -p1
%endif
%endif
%patch -P 201 -p1
%if 0%{?suse_version} > 1500
cp %SOURCE1 tools/cockpit.pam
%else
cp %SOURCE4 tools/cockpit.pam
%endif
#
local-npm-registry %{_sourcedir} install --include=dev --ignore-scripts
touch package-lock.json
%build
find node_modules -name \*.node -print -delete
@@ -263,8 +287,8 @@ autoreconf -fvi -I tools
--libexecdir=%_libexecdir \
%endif
--with-pamdir='%{pamdir}' \
%if %{build_pcp} == 0
--disable-pcp \
%if %{enable_multihost}
--enable-multihost \
%endif
%if 0%{?with_selinux}
@@ -314,8 +338,7 @@ popd
%if 0%{?suse_version} == 1500
sed -i -e 's#"/lib/systemd/system#"%{_unitdir}#' \
%{buildroot}%{_datadir}/cockpit/packagekit/manifest.json \
%{buildroot}%{_datadir}/cockpit/pcp/manifest.json
%{buildroot}%{_datadir}/cockpit/packagekit/manifest.json
%endif
# Build the package lists for resource packages
@@ -325,57 +348,6 @@ echo '%dir %{_datadir}/cockpit/base1' >> base.list
find %{buildroot}%{_datadir}/cockpit/base1 -type f -o -type l >> base.list
echo '%{_sysconfdir}/cockpit/machines.d' >> base.list
echo %{buildroot}%{_datadir}/polkit-1/actions/org.cockpit-project.cockpit-bridge.policy >> base.list
echo '%{_libexecdir}/cockpit-ssh' >> base.list
%if %{build_pcp}
echo '%dir %{_datadir}/cockpit/pcp' > pcp.list
find %{buildroot}%{_datadir}/cockpit/pcp -type f >> pcp.list
%endif
# when not building basic packages, remove their files
%if 0%{?build_basic} == 0
for pkg in base1 branding motd kdump networkmanager selinux shell sosreport static systemd users metrics; do
rm -r %{buildroot}/%{_datadir}/cockpit/$pkg
rm -f %{buildroot}/%{_datadir}/metainfo/org.cockpit-project.cockpit-${pkg}.metainfo.xml
done
for data in doc man pixmaps polkit-1; do
rm -r %{buildroot}/%{_datadir}/$data
done
rm -r %{buildroot}/%{_prefix}/%{__lib}/tmpfiles.d
find %{buildroot}/%{_unitdir}/ -type f ! -name 'cockpit-session*' -delete
for libexec in cockpit-askpass cockpit-session cockpit-ws cockpit-tls cockpit-wsinstance-factory cockpit-client cockpit-client.ui cockpit-desktop cockpit-certificate-helper cockpit-certificate-ensure; do
rm -f %{buildroot}/%{_libexecdir}/$libexec
done
rm -rf %{buildroot}/%{_sysconfdir}/pam.d %{buildroot}/%{_sysconfdir}/motd.d %{buildroot}/%{_sysconfdir}/issue.d
%if 0%{?suse_version} > 1500
rm -rf %{buildroot}/%{_pam_vendordir}
%else
rm -rf %{buildroot}/%{_sysconfdir}/pam.d
%endif
rm -f %{buildroot}/%{_libdir}/security/pam_*
rm -f %{buildroot}/usr/bin/cockpit-bridge
rm -f %{buildroot}%{_libexecdir}/cockpit-ssh
rm -f %{buildroot}%{_datadir}/metainfo/cockpit.appdata.xml
rm -rf %{buildroot}%{python3_sitelib}/cockpit*
%endif
# when not building optional packages, remove their files
%if 0%{?build_optional} == 0
for pkg in apps packagekit pcp playground storaged; do
rm -rf %{buildroot}/%{_datadir}/cockpit/$pkg
done
# files from -pcp
rm -rf %{buildroot}/%{_libexecdir}/cockpit-pcp %{buildroot}/%{_localstatedir}/lib/pcp/
# files from -storaged
rm -f %{buildroot}/%{_prefix}/share/metainfo/org.cockpit-project.cockpit-storaged.metainfo.xml
%endif
%if 0%{?build_tests} == 0
rm -rf %{buildroot}%{_datadir}/cockpit/playground
rm -f %{buildroot}/%{pamdir}/mock-pam-conv-mod.so
rm -f %{buildroot}/%{_unitdir}/cockpit-session.socket
rm -f %{buildroot}/%{_unitdir}/cockpit-session@.service
%endif
echo '%dir %{_datadir}/cockpit/shell' >> system.list
find %{buildroot}%{_datadir}/cockpit/shell -type f >> system.list
@@ -410,30 +382,69 @@ find %{buildroot}%{_datadir}/cockpit/apps -type f >> packagekit.list
echo '%dir %{_datadir}/cockpit/selinux' > selinux.list
find %{buildroot}%{_datadir}/cockpit/selinux -type f >> selinux.list
# echo '%dir %{_datadir}/cockpit/playground' > tests.list
# find %{buildroot}%{_datadir}/cockpit/playground -type f >> tests.list
echo '%dir %{_datadir}/cockpit/static' > static.list
echo '%dir %{_datadir}/cockpit/static/fonts' >> static.list
find %{buildroot}%{_datadir}/cockpit/static/* -type d | while read line; do echo "%dir $line"; done >> static.list
find %{buildroot}%{_datadir}/cockpit/static -type f >> static.list
# when not building basic packages, remove their files
%if 0%{?build_basic} == 0
for pkg in base1 branding motd kdump networkmanager selinux shell sosreport static systemd users metrics; do
rm -r %{buildroot}/%{_datadir}/cockpit/$pkg
rm -f %{buildroot}/%{_datadir}/metainfo/org.cockpit-project.cockpit-${pkg}.metainfo.xml
done
for data in doc man pixmaps polkit-1; do
rm -r %{buildroot}/%{_datadir}/$data
done
rm -r %{buildroot}/%{_prefix}/%{__lib}/tmpfiles.d
for libexec in cockpit-askpass cockpit-session cockpit-ws cockpit-tls cockpit-wsinstance-factory cockpit-client cockpit-client.ui cockpit-desktop cockpit-certificate-helper cockpit-certificate-ensure; do
rm -f %{buildroot}/%{_libexecdir}/$libexec
done
rm -rf %{buildroot}/%{_sysconfdir}/pam.d %{buildroot}/%{_sysconfdir}/motd.d %{buildroot}/%{_sysconfdir}/issue.d
%if 0%{?suse_version} > 1500
rm -rf %{buildroot}/%{_pam_vendordir}
%else
rm -rf %{buildroot}/%{_sysconfdir}/pam.d
%endif
rm -f %{buildroot}/%{_libdir}/security/pam_*
rm -f %{buildroot}/usr/bin/cockpit-bridge
rm -f %{buildroot}%{_libexecdir}/cockpit-ssh
rm -f %{buildroot}%{_datadir}/metainfo/cockpit.appdata.xml
rm -rf %{buildroot}%{python3_sitelib}/cockpit*
%endif
# when not building optional packages, remove their files
%if 0%{?build_optional} == 0
for pkg in apps packagekit playground storaged; do
rm -rf %{buildroot}/%{_datadir}/cockpit/$pkg
done
# files from -storaged
rm -f %{buildroot}/%{_prefix}/share/metainfo/org.cockpit-project.cockpit-storaged.metainfo.xml
%endif
%if 0%{?build_tests} == 0
rm -rf %{buildroot}%{_datadir}/cockpit/playground
rm -f %{buildroot}/%{pamdir}/mock-pam-conv-mod.so
%endif
sed -i "s|%{buildroot}||" *.list
%if 0%{?suse_version}
# remove brandings with stale symlinks. Means they don't match
# the distro.
pushd %{buildroot}/%{_datadir}/cockpit/branding
ls --hide={default,kubernetes,opensuse,registry,sle-micro,suse} | xargs rm -rv
ls --hide={default,kubernetes,opensuse,registry,suse} | xargs rm -rv
popd
# need this in SUSE as post build checks dislike stale symlinks
install -m 644 -D /dev/null %{buildroot}/run/cockpit/motd
install -m 644 -D /dev/null %{buildroot}/run/cockpit/issue
test -e %{buildroot}/usr/share/cockpit/branding/opensuse/default-1920x1200.jpg || install -m 644 -D /dev/null %{buildroot}/usr/share/cockpit/branding/opensuse/default-1920x1200.jpg
test -e %{buildroot}/usr/share/cockpit/branding/sle-micro/apple-touch-icon.png || install -m 644 -D /dev/null %{buildroot}/usr/share/cockpit/branding/sle-micro/apple-touch-icon.png
test -e %{buildroot}/usr/share/cockpit/branding/sle-micro/default-1920x1200.png || install -m 644 -D /dev/null %{buildroot}/usr/share/cockpit/branding/sle-micro/default-1920x1200.png
test -e %{buildroot}/usr/share/cockpit/branding/suse/apple-touch-icon.png || install -m 644 -D /dev/null %{buildroot}/usr/share/cockpit/branding/suse/apple-touch-icon.png
test -e %{buildroot}/usr/share/cockpit/branding/suse/default-1920x1200.png || install -m 644 -D /dev/null %{buildroot}/usr/share/cockpit/branding/suse/default-1920x1200.png
# remove files of not installable packages
rm -r %{buildroot}%{_datadir}/cockpit/sosreport
rm -f %{buildroot}/%{_prefix}/share/metainfo/org.cockpit-project.cockpit-sosreport.metainfo.xml
rm -f %{buildroot}%{_datadir}/pixmaps/cockpit-sosreport.png
rm -f %{buildroot}/%{_prefix}/share/metainfo/org.cockpit_project.cockpit_sosreport.metainfo.xml
rm -f %{buildroot}%{_datadir}/icons/hicolor/64x64/apps/cockpit-sosreport.png
%else
%global _debugsource_packages 1
%global _debuginfo_subpackages 0
@@ -457,6 +468,12 @@ rm -f %{buildroot}%{_datadir}/pixmaps/cockpit-sosreport.png
mkdir -p %{buildroot}%{_datadir}/cockpit/devel
cp -a pkg/lib %{buildroot}%{_datadir}/cockpit/devel
# cockpit.socket preexec to ensure users are created as dynamic users
%if 0%{?suse_version} >= 1600
install -D -m 755 %SOURCE5 %{buildroot}%{_libexecdir}/
%endif
# -------------------------------------------------------------------------------
# Sub-packages
@@ -468,31 +485,28 @@ It offers network configuration, log inspection, diagnostic reports, SELinux
troubleshooting, interactive command-line sessions, and more.
%files
%license COPYING
%{_docdir}/cockpit/AUTHORS
%{_docdir}/cockpit/COPYING
%{_docdir}/cockpit/README.md
%{_datadir}/metainfo/cockpit.appdata.xml
%{_datadir}/pixmaps/cockpit.png
%{_datadir}/metainfo/org.cockpit_project.cockpit.appdata.xml
%dir %{_datadir}/icons/hicolor/128x128/apps
%dir %{_datadir}/icons/hicolor/128x128
%dir %{_datadir}/icons/hicolor
%{_datadir}/icons/hicolor/128x128/apps/cockpit.png
%doc %{_mandir}/man1/cockpit.1.gz
%package bridge
Summary: Cockpit bridge server-side component
Requires: glib-networking
Provides: cockpit-ssh = %{version}-%{release}
# 233 dropped jquery.js, pages started to bundle it (commit 049e8b8dce)
Conflicts: cockpit-dashboard < 233
Conflicts: cockpit-networkmanager < 233
Conflicts: cockpit-storaged < 233
Conflicts: cockpit-system < 233
Conflicts: cockpit-tests < 233
Conflicts: cockpit-docker < 233
BuildArch: noarch
%description bridge
The Cockpit bridge component installed server side and runs commands on the
system on behalf of the web based user interface.
%files bridge -f base.list
%license COPYING
%doc %{_mandir}/man1/cockpit-bridge.1.gz
%{_bindir}/cockpit-bridge
%{_libexecdir}/cockpit-askpass
@@ -508,6 +522,7 @@ deploy Cockpit on their machines as well as helps developers who want to
embed or extend Cockpit.
%files doc
%license COPYING
%exclude %{_docdir}/cockpit/AUTHORS
%exclude %{_docdir}/cockpit/COPYING
%exclude %{_docdir}/cockpit/README.md
@@ -524,25 +539,26 @@ Requires: grep
Requires: jeos-firstboot
Requires: /usr/bin/pwscore
Requires: /usr/bin/date
Requires: (sudo or polkit)
Provides: cockpit-shell = %{version}-%{release}
Provides: cockpit-systemd = %{version}-%{release}
Provides: cockpit-tuned = %{version}-%{release}
Provides: cockpit-users = %{version}-%{release}
Obsoletes: cockpit-dashboard < %{version}-%{release}
%if 0%{?rhel}
Requires: NetworkManager >= 1.6
Requires: kexec-tools
Requires: sos
Requires: sudo
Recommends: PackageKit
Recommends: setroubleshoot-server >= 3.3.3
Recommends: /usr/bin/kdumpctl
Recommends: kexec-tools
Suggests: NetworkManager-team
Suggests: python3-pcp
Provides: cockpit-kdump = %{version}-%{release}
Provides: cockpit-networkmanager = %{version}-%{release}
Provides: cockpit-selinux = %{version}-%{release}
Provides: cockpit-sosreport = %{version}-%{release}
%endif
Obsoletes: cockpit-tests < %{version}
%if 0%{?fedora}
Recommends: (reportd if abrt)
%endif
@@ -553,6 +569,7 @@ Recommends: (reportd if abrt)
This package contains the Cockpit shell and system configuration interfaces.
%files system -f system.list
%license COPYING
%dir %{_datadir}/cockpit/shell/images
%package ws
@@ -561,25 +578,32 @@ Requires: glib-networking
Requires: openssl
Requires: glib2 >= 2.50.0
%if 0%{?with_selinux}
Requires: (%{name}-ws-selinux = %{version}-%{release} if selinux-policy-base)
Requires: (selinux-policy >= %{_selinux_policy_version} if selinux-policy-%{selinuxtype})
Requires(post): (policycoreutils if selinux-policy-%{selinuxtype})
%endif
Conflicts: firewalld < 0.6.0-1
Recommends: sscg >= 2.3
Recommends: system-logos
Suggests: sssd-dbus >= 2.6.2
Suggests: sssd-dbus
%if 0%{?suse_version}
Requires(pre): permissions
Requires: distribution-logos
%if 0%{?suse_version} > 1500
Requires: pam_oath >= 2.6.11.12
%endif
Requires: wallpaper-branding
%endif
# for cockpit-desktop
Suggests: python3
Provides: group(cockpit-ws)
Provides: group(cockpit-wsinstance)
Provides: user(cockpit-ws)
Provides: user(cockpit-wsinstance)
Obsoletes: cockpit-tests < 331
%if 0%{?suse_version} == 1500
Provides: group(cockpit-wsinstance-socket)
Provides: group(cockpit-session-socket)
Provides: user(cockpit-wsinstance-socket)
Provides: user(cockpit-session-socket)
Provides: user(cockpit-systemd-service)
%endif
# prevent hard python3 dependency for cockpit-desktop, it falls back to other browsers
%global __requires_exclude_from ^%{_libexecdir}/cockpit-client$
@@ -591,6 +615,7 @@ If sssd-dbus is installed, you can enable client certificate/smart card
authentication via sssd/FreeIPA.
%files ws -f static.list
%license COPYING
%doc %{_mandir}/man1/cockpit-desktop.1.gz
%doc %{_mandir}/man5/cockpit.conf.5.gz
%doc %{_mandir}/man8/cockpit-ws.8.gz
@@ -610,23 +635,25 @@ authentication via sssd/FreeIPA.
%ghost %{_sysconfdir}/motd.d/cockpit
%ghost %attr(0644, root, root) %{_sysconfdir}/cockpit/disallowed-users
%ghost %dir /run/cockpit
%ghost /run/cockpit/motd
%dir %{_datadir}/cockpit/motd
%{_datadir}/cockpit/motd/update-motd
%{_datadir}/cockpit/motd/inactive.motd
%ghost /run/cockpit/issue
%dir %{_datadir}/cockpit/issue
%{_datadir}/cockpit/issue/update-issue
%{_datadir}/cockpit/issue/inactive.issue
%{_unitdir}/cockpit.service
%{_unitdir}/cockpit-motd.service
%{_unitdir}/cockpit-issue.service
%{_unitdir}/cockpit.socket
%{_unitdir}/cockpit-ws-user.service
%{_unitdir}/cockpit-session-socket-user.service
%{_unitdir}/cockpit-session.socket
%{_unitdir}/cockpit-session@.service
%{_unitdir}/cockpit-wsinstance-http.socket
%{_unitdir}/cockpit-wsinstance-http.service
%{_unitdir}/cockpit-wsinstance-https-factory.socket
%{_unitdir}/cockpit-wsinstance-https-factory@.service
%{_unitdir}/cockpit-wsinstance-https@.socket
%{_unitdir}/cockpit-wsinstance-https@.service
%{_unitdir}/cockpit-wsinstance-socket-user.service
%{_unitdir}/system-cockpithttps.slice
%{_prefix}/%{__lib}/tmpfiles.d/cockpit-ws.conf
%{_sysusersdir}/cockpit-wsinstance.conf
%{pamdir}/pam_ssh_add.so
%{pamdir}/pam_cockpit_cert.so
%{_libexecdir}/cockpit-ws
@@ -637,24 +664,25 @@ authentication via sssd/FreeIPA.
%{_libexecdir}/cockpit-desktop
%{_libexecdir}/cockpit-certificate-ensure
%{_libexecdir}/cockpit-certificate-helper
%{?suse_version:%verify(not mode) }%attr(4750, root, cockpit-wsinstance) %{_libexecdir}/cockpit-session
%{_datadir}/cockpit/branding
%if 0%{?with_selinux}
%{_datadir}/selinux/packages/%{selinuxtype}/%{name}.pp.bz2
%{_mandir}/man8/%{name}_session_selinux.8cockpit.*
%{_mandir}/man8/%{name}_ws_selinux.8cockpit.*
%ghost %{_sharedstatedir}/selinux/%{selinuxtype}/active/modules/200/%{name}
%if 0%{?suse_version} == 1500
%{?suse_version:%verify(not mode) }%attr(4750, root, cockpit-wsinstance-socket) %{_libexecdir}/cockpit-session
%else
%{_libexecdir}/check_cockpit_users
%{_libexecdir}/cockpit-session
%endif
%{_datadir}/cockpit/branding
%pre ws
%if 0%{?suse_version} == 1500
# HACK: old RPM and even Fedora's current RPM don't properly support sysusers
# https://github.com/rpm-software-management/rpm/issues/3073
getent group cockpit-wsinstance >/dev/null || groupadd -r cockpit-wsinstance
getent passwd cockpit-wsinstance >/dev/null || useradd -r -g cockpit-wsinstance -d /nonexisting -s /sbin/nologin -c "User for cockpit-ws instances" cockpit-wsinstance
getent group cockpit-wsinstance-socket >/dev/null || groupadd -r cockpit-wsinstance-socket
getent group cockpit-session-socket >/dev/null || groupadd -r cockpit-session-socket
getent passwd cockpit-wsinstance-socket >/dev/null || useradd -r -g cockpit-wsinstance-socket -d /nonexisting -s /sbin/nologin -c "User for cockpit-ws instances" cockpit-wsinstance-socket
getent passwd cockpit-session-socket >/dev/null || useradd -r -g cockpit-session-socket -d /nonexisting -s /sbin/nologin -c "User for cockpit-session instances" cockpit-session-socket
getent passwd cockpit-systemd-service >/dev/null || useradd -r -g cockpit-wsinstance-socket -d /nonexisting -s /sbin/nologin -c "User for cockpit.service" cockpit-systemd-service
%endif
if %{_sbindir}/selinuxenabled 2>/dev/null; then
%selinux_relabel_pre -s %{selinuxtype}
fi
%if 0%{?suse_version} > 1500
# Prepare for migration to /usr/lib; save any old .rpmsave
for i in pam.d/cockpit ; do
@@ -663,31 +691,35 @@ done
%endif
%post ws
if [ -x %{_sbindir}/selinuxenabled ]; then
%selinux_modules_install -s %{selinuxtype} %{_datadir}/selinux/packages/%{selinuxtype}/%{name}.pp.bz2
%selinux_relabel_post -s %{selinuxtype}
fi
# set up dynamic motd/issue symlinks on first-time install; don't bring them back on upgrades if admin removed them
# disable root login on first-time install; so existing installations aren't changed
if [ "$1" = 1 ]; then
mkdir -p /etc/motd.d /etc/issue.d
ln -s ../../run/cockpit/motd /etc/motd.d/cockpit
ln -s ../../run/cockpit/motd /etc/issue.d/cockpit.issue
ln -s ../../run/cockpit/issue /etc/motd.d/cockpit
ln -s ../../run/cockpit/issue /etc/issue.d/cockpit.issue
printf "# List of users which are not allowed to login to Cockpit\n" > /etc/cockpit/disallowed-users
printf "root\n" >> /etc/cockpit/disallowed-users
chmod 644 /etc/cockpit/disallowed-users
fi
# switch old self-signed cert group from cockpit-wsintance to cockpit-ws on upgrade
if [ "$1" = 2 ]; then
# switch old self-signed cert group from cockpit-wsintance to cockpit-ws on upgrade
certfile=/etc/cockpit/ws-certs.d/0-self-signed.cert
test -f $certfile && stat -c '%G' $certfile | grep -q cockpit-wsinstance && chgrp cockpit-ws $certfile
# on upgrades, adjust motd/issue links to changed target if they still exist (changed in 331)
if [ "$(readlink /etc/motd.d/cockpit 2>/dev/null)" = "../../run/cockpit/motd" ]; then
ln -sfn ../../run/cockpit/issue /etc/motd.d/cockpit
fi
if [ "$(readlink /etc/issue.d/cockpit.issue 2>/dev/null)" = "../../run/cockpit/motd" ]; then
ln -sfn ../../run/cockpit/issue /etc/issue.d/cockpit.issue
fi
fi
%if 0%{?suse_version}
%set_permissions %{_libexecdir}/cockpit-session
%endif
%tmpfiles_create cockpit-tempfiles.conf
%tmpfiles_create cockpit-ws.conf
%systemd_post cockpit.socket cockpit.service
# firewalld only partially picks up changes to its services files without this
test -f %{_bindir}/firewall-cmd && firewall-cmd --reload --quiet || true
@@ -700,14 +732,15 @@ if test -f %{_sysconfdir}/pam.d/cockpit && grep -q pam_cockpit_cert %{_sysconfd
echo '**** WARNING:'
fi
# remove obsolete system user on upgrade (replaced with DynamicUser in version 330)
if getent passwd cockpit-wsinstance >/dev/null; then
userdel cockpit-wsinstance
fi
%preun ws
%systemd_preun cockpit.socket cockpit.service
%postun ws
if [ -x %{_sbindir}/selinuxenabled ]; then
%selinux_modules_uninstall -s %{selinuxtype} %{name}
%selinux_relabel_post -s %{selinuxtype}
fi
%systemd_postun_with_restart cockpit.socket cockpit.service
%if 0%{?suse_version}
@@ -723,6 +756,36 @@ for i in pam.d/cockpit ; do
done
%endif
%if 0%{?with_selinux}
%package ws-selinux
Summary: SELinux security policy for cockpit-ws
# older -ws contained the SELinux policy, now split out
Conflicts: %{name}-ws < 337-1.2025
Requires(post): selinux-policy-%{selinuxtype} >= %{_selinux_policy_version}
Requires(post): libselinux-utils
Requires(post): policycoreutils
Obsoletes: %{name}-selinux-policies < 338
%description ws-selinux
SELinux policy module for the cockpit-ws package.
%files ws-selinux
%license COPYING
%{_datadir}/selinux/packages/%{selinuxtype}/%{name}.pp.bz2
%{_mandir}/man8/%{name}_session_selinux.8cockpit.*
%{_mandir}/man8/%{name}_ws_selinux.8cockpit.*
%ghost %{_sharedstatedir}/selinux/%{selinuxtype}/active/modules/200/%{name}
%posttrans ws-selinux
%selinux_relabel_pre -s %{selinuxtype}
%selinux_modules_install -s %{selinuxtype} %{_datadir}/selinux/packages/%{selinuxtype}/%{name}.pp.bz2
%selinux_relabel_post -s %{selinuxtype}
%postun ws-selinux
%selinux_modules_uninstall -s %{selinuxtype} %{name}
%selinux_relabel_post -s %{selinuxtype}
%endif
# -------------------------------------------------------------------------------
# Sub-packages that are part of cockpit-system in RHEL/CentOS, but separate in Fedora
@@ -732,14 +795,15 @@ done
Summary: Cockpit user interface for kernel crash dumping
Requires: cockpit-bridge >= %{required_base}
Requires: cockpit-shell >= %{required_base}
Requires: kexec-tools
Requires: /usr/sbin/kdumptool
BuildArch: noarch
%description kdump
The Cockpit component for configuring kernel crash dumping.
%files kdump -f kdump.list
%{_datadir}/metainfo/org.cockpit-project.cockpit-kdump.metainfo.xml
%license COPYING
%{_datadir}/metainfo/org.cockpit_project.cockpit_kdump.metainfo.xml
%if !0%{?suse_version}
%package sosreport
@@ -754,8 +818,9 @@ The Cockpit component for creating diagnostic reports with the
sosreport tool.
%files sosreport -f sosreport.list
%{_datadir}/metainfo/org.cockpit-project.cockpit-sosreport.metainfo.xml
%{_datadir}/pixmaps/cockpit-sosreport.png
%license COPYING
%{_datadir}/metainfo/org.cockpit_project.cockpit_sosreport.metainfo.xml
%{_datadir}/icons/hicolor/64x64/apps/cockpit-sosreport.png
%endif
%package networkmanager
@@ -772,7 +837,8 @@ BuildArch: noarch
The Cockpit component for managing networking. This package uses NetworkManager.
%files networkmanager -f networkmanager.list
%{_datadir}/metainfo/org.cockpit-project.cockpit-networkmanager.metainfo.xml
%license COPYING
%{_datadir}/metainfo/org.cockpit_project.cockpit_networkmanager.metainfo.xml
%endif
@@ -794,7 +860,8 @@ This package contains the Cockpit user interface integration with the
utility setroubleshoot to diagnose and resolve SELinux issues.
%files selinux -f selinux.list
%{_datadir}/metainfo/org.cockpit-project.cockpit-selinux.metainfo.xml
%license COPYING
%{_datadir}/metainfo/org.cockpit_project.cockpit_selinux.metainfo.xml
%endif
@@ -824,27 +891,14 @@ BuildArch: noarch
The Cockpit component for managing storage. This package uses udisks.
%files -n cockpit-storaged -f storaged.list
%{_datadir}/metainfo/org.cockpit-project.cockpit-storaged.metainfo.xml
%license COPYING
%{_datadir}/metainfo/org.cockpit_project.cockpit_storaged.metainfo.xml
%if 0%{?build_tests}
%package -n cockpit-tests
Summary: Tests for Cockpit
Requires: cockpit-bridge >= %{required_base}
Requires: cockpit-system >= %{required_base}
Requires: openssh-clients
Provides: cockpit-test-assets = %{version}-%{release}
%description -n cockpit-tests
This package contains tests and files used while testing Cockpit.
These files are not required for running Cockpit.
%files -n cockpit-tests -f tests.list
%{pamdir}/mock-pam-conv-mod.so
%{_unitdir}/cockpit-session.socket
%{_unitdir}/cockpit-session@.service
# /build_tests
%endif
%post storaged
# version 332 moved the btrfs temp mounts db to /run
if [ "$1" = 2 ] && [ -d /var/lib/cockpit/btrfs ]; then
rm -rf --one-file-system /var/lib/cockpit/btrfs || true
fi
%package devel
Summary: Development files for for Cockpit
@@ -855,29 +909,12 @@ This package contains files used to develop cockpit modules
%files devel
%{_datadir}/cockpit/devel
%if %{build_pcp}
%package -n cockpit-pcp
Summary: Cockpit PCP integration
Requires: cockpit-bridge >= %{required_base}
Requires: pcp
%description -n cockpit-pcp
Cockpit support for reading PCP metrics and loading PCP archives.
%files -n cockpit-pcp -f pcp.list
%{_libexecdir}/cockpit-pcp
%{_localstatedir}/lib/pcp/config/pmlogconf/tools/cockpit
%post -n cockpit-pcp
systemctl reload-or-try-restart pmlogger
%endif
%package -n cockpit-packagekit
Summary: Cockpit user interface for packages
BuildArch: noarch
Requires: cockpit-bridge >= %{required_base}
Requires: PackageKit
Requires: libzypp-plugin-appdata
Recommends: python3-tracer
# HACK: https://bugzilla.redhat.com/show_bug.cgi?id=1800468
Requires: polkit
@@ -887,6 +924,33 @@ The Cockpit components for installing OS updates and Cockpit add-ons,
via PackageKit.
%files -n cockpit-packagekit -f packagekit.list
%license COPYING
%package firewalld
Summary: Allows Cockpit access through the firewall
Requires: cockpit-bridge >= %{required_base}
Requires: firewalld
BuildArch: noarch
%description firewalld
This package allows Cockpit access through the firewall
%files firewalld
%license COPYING
%postun firewalld
if test -f %{_bindir}/firewall-cmd && firewall-cmd --state &>/dev/null; then
firewall-cmd --quiet --permanent --remove-service=cockpit && firewall-cmd --reload --quiet || true
elif test -f %{_bindir}/firewall-offline-cmd; then
firewall-offline-cmd --quiet --remove-service=cockpit || true
fi
%posttrans firewalld
if test -f %{_bindir}/firewall-cmd && firewall-cmd --state &>/dev/null; then
firewall-cmd --quiet --permanent --add-service=cockpit && firewall-cmd --reload --quiet || true
elif test -f %{_bindir}/firewall-offline-cmd; then
firewall-offline-cmd --quiet --add-service=cockpit || true
fi
# The changelog is automatically generated and merged
%changelog

View File

@@ -1,6 +1,6 @@
From 617d236f005538be4a53b4a4cb88aac0ad6bf14b Mon Sep 17 00:00:00 2001
From 60004e16cda0599e5789dc79e95d006f0c0a95b5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20D=C3=ADaz=20Gonz=C3=A1lez?= <dgonzalez@suse.de>
Date: Mon, 13 Jun 2022 20:05:21 +0100
Date: Mon, 28 Apr 2025 20:42:49 +0530
Subject: [PATCH] Load custom CSS
In order to override Cockpit's default styling, another CSS file is
@@ -14,39 +14,40 @@ now, it fulfills the requirements of [3].
[2] https://github.com/cockpit-project/cockpit/issues/16359
[3] https://en.opensuse.org/openSUSE:ALP/Workgroups/SysMngmnt
---
pkg/apps/index.html | 1 +
pkg/kdump/index.html | 1 +
pkg/metrics/index.html | 1 +
pkg/networkmanager/firewall.html | 1 +
pkg/networkmanager/index.html | 1 +
pkg/packagekit/index.html | 1 +
pkg/playground/index.html | 1 +
pkg/playground/journal.html | 1 +
pkg/playground/metrics.html | 1 +
pkg/playground/plot.html | 1 +
pkg/playground/react-patterns.html | 1 +
pkg/playground/speed.html | 1 +
pkg/playground/test.html | 1 +
pkg/selinux/setroubleshoot.html | 1 +
pkg/shell/index.html | 1 +
pkg/shell/shell.html | 1 +
pkg/sosreport/index.html | 1 +
pkg/storaged/index.html | 1 +
pkg/systemd/hwinfo.html | 1 +
pkg/systemd/index.html | 1 +
pkg/systemd/logs.html | 1 +
pkg/systemd/services.html | 1 +
pkg/systemd/terminal.html | 1 +
pkg/users/index.html | 1 +
src/branding/default/css-overrides.css | 12 ++++++++++++
25 files changed, 36 insertions(+)
create mode 100644 src/branding/default/css-overrides.css
pkg/apps/index.html | 1 +
pkg/kdump/index.html | 1 +
pkg/metrics/index.html | 1 +
pkg/networkmanager/firewall.html | 1 +
pkg/networkmanager/index.html | 1 +
pkg/packagekit/index.html | 1 +
pkg/playground/index.html | 1 +
pkg/playground/journal.html | 1 +
pkg/playground/metrics.html | 1 +
pkg/playground/plot.html | 1 +
pkg/playground/react-patterns.html | 1 +
pkg/playground/speed.html | 1 +
pkg/playground/test.html | 1 +
pkg/shell/index.html | 1 +
pkg/shell/shell.html | 1 +
pkg/sosreport/index.html | 1 +
pkg/static/css-overrides.css | 12 ++++++++++++
pkg/systemd/hwinfo.html | 1 +
pkg/systemd/index.html | 1 +
pkg/systemd/logs.html | 1 +
pkg/systemd/services.html | 1 +
pkg/systemd/terminal.html | 1 +
pkg/users/index.html | 1 +
pkg/storaged/index.html | 1 +
pkg/static/login.html | 1 +
pkg/selinux/index.html | 1 +
23 files changed, 34 insertions(+)
create mode 100644 pkg/static/css-overrides.css
Index: cockpit/pkg/apps/index.html
===================================================================
--- cockpit.orig/pkg/apps/index.html
+++ cockpit/pkg/apps/index.html
@@ -23,6 +23,7 @@ along with Cockpit; If not, see <http://
diff --git a/pkg/apps/index.html b/pkg/apps/index.html
index fd17d5131..9aac50800 100644
--- a/pkg/apps/index.html
+++ b/pkg/apps/index.html
@@ -23,6 +23,7 @@ along with Cockpit; If not, see <https://www.gnu.org/licenses/>.
<title translate="yes">Applications</title>
<meta charset="utf-8" />
<link href="apps.css" type="text/css" rel="stylesheet" />
@@ -54,11 +55,11 @@ Index: cockpit/pkg/apps/index.html
<script type="text/javascript" src="../base1/cockpit.js"></script>
<script type="text/javascript" src="../base1/po.js"></script>
<script type="text/javascript" src="po.js"></script>
Index: cockpit/pkg/kdump/index.html
===================================================================
--- cockpit.orig/pkg/kdump/index.html
+++ cockpit/pkg/kdump/index.html
@@ -25,6 +25,7 @@ along with Cockpit; If not, see <http://
diff --git a/pkg/kdump/index.html b/pkg/kdump/index.html
index 8138f050f..619416dd4 100644
--- a/pkg/kdump/index.html
+++ b/pkg/kdump/index.html
@@ -25,6 +25,7 @@ along with Cockpit; If not, see <https://www.gnu.org/licenses/>.
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="kdump.css" />
@@ -66,11 +67,11 @@ Index: cockpit/pkg/kdump/index.html
<script type="text/javascript" src="kdump.js"></script>
<script type="text/javascript" src="../base1/po.js"></script>
Index: cockpit/pkg/metrics/index.html
===================================================================
--- cockpit.orig/pkg/metrics/index.html
+++ cockpit/pkg/metrics/index.html
@@ -23,6 +23,7 @@ along with this package; If not, see <ht
diff --git a/pkg/metrics/index.html b/pkg/metrics/index.html
index cbb82dccc..b17bd1a76 100644
--- a/pkg/metrics/index.html
+++ b/pkg/metrics/index.html
@@ -23,6 +23,7 @@ along with this package; If not, see <https://www.gnu.org/licenses/>.
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="index.css" />
@@ -78,11 +79,11 @@ Index: cockpit/pkg/metrics/index.html
<script type="text/javascript" src="../base1/cockpit.js"></script>
<script type="text/javascript" src="../manifests.js"></script>
Index: cockpit/pkg/networkmanager/firewall.html
===================================================================
--- cockpit.orig/pkg/networkmanager/firewall.html
+++ cockpit/pkg/networkmanager/firewall.html
@@ -23,6 +23,7 @@ along with Cockpit; If not, see <http://
diff --git a/pkg/networkmanager/firewall.html b/pkg/networkmanager/firewall.html
index e5ea58276..6bc5327f5 100644
--- a/pkg/networkmanager/firewall.html
+++ b/pkg/networkmanager/firewall.html
@@ -23,6 +23,7 @@ along with Cockpit; If not, see <https://www.gnu.org/licenses/>.
<meta charset="utf-8" />
<link href="firewall.css" type="text/css" rel="stylesheet" />
@@ -90,10 +91,10 @@ Index: cockpit/pkg/networkmanager/firewall.html
<script src="../base1/cockpit.js"></script>
<script src="../base1/po.js"></script>
Index: cockpit/pkg/networkmanager/index.html
===================================================================
--- cockpit.orig/pkg/networkmanager/index.html
+++ cockpit/pkg/networkmanager/index.html
diff --git a/pkg/networkmanager/index.html b/pkg/networkmanager/index.html
index fc9cb5aff..3aceef1b2 100644
--- a/pkg/networkmanager/index.html
+++ b/pkg/networkmanager/index.html
@@ -24,6 +24,7 @@
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
@@ -102,11 +103,11 @@ Index: cockpit/pkg/networkmanager/index.html
<script src="../base1/cockpit.js"></script>
<script src="../manifests.js"></script>
<script src="../base1/po.js"></script>
Index: cockpit/pkg/packagekit/index.html
===================================================================
--- cockpit.orig/pkg/packagekit/index.html
+++ cockpit/pkg/packagekit/index.html
@@ -24,6 +24,7 @@ along with Cockpit; If not, see <http://
diff --git a/pkg/packagekit/index.html b/pkg/packagekit/index.html
index c95dfd263..f4f3baab6 100644
--- a/pkg/packagekit/index.html
+++ b/pkg/packagekit/index.html
@@ -24,6 +24,7 @@ along with Cockpit; If not, see <https://www.gnu.org/licenses/>.
<meta charset="utf-8" />
<link href="updates.css" rel="stylesheet" />
@@ -114,10 +115,10 @@ Index: cockpit/pkg/packagekit/index.html
<script src="../base1/cockpit.js"></script>
<script src="../base1/po.js"></script>
Index: cockpit/pkg/playground/index.html
===================================================================
--- cockpit.orig/pkg/playground/index.html
+++ cockpit/pkg/playground/index.html
diff --git a/pkg/playground/index.html b/pkg/playground/index.html
index 4f2bce82d..6f87bc642 100644
--- a/pkg/playground/index.html
+++ b/pkg/playground/index.html
@@ -5,6 +5,7 @@
<title>Cockpit Development Playground</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
@@ -126,10 +127,10 @@ Index: cockpit/pkg/playground/index.html
<script src="../base1/cockpit.js"></script>
<script src="../manifests.js"></script>
<script src="index.js"></script>
Index: cockpit/pkg/playground/journal.html
===================================================================
--- cockpit.orig/pkg/playground/journal.html
+++ cockpit/pkg/playground/journal.html
diff --git a/pkg/playground/journal.html b/pkg/playground/journal.html
index 473537cb8..c1f10201f 100644
--- a/pkg/playground/journal.html
+++ b/pkg/playground/journal.html
@@ -5,6 +5,7 @@
<title>Cockpit Journal Box</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
@@ -138,10 +139,10 @@ Index: cockpit/pkg/playground/journal.html
<script src="../base1/cockpit.js"></script>
<script src="journal.js"></script>
</head>
Index: cockpit/pkg/playground/metrics.html
===================================================================
--- cockpit.orig/pkg/playground/metrics.html
+++ cockpit/pkg/playground/metrics.html
diff --git a/pkg/playground/metrics.html b/pkg/playground/metrics.html
index d3485c344..bab3b4eb1 100644
--- a/pkg/playground/metrics.html
+++ b/pkg/playground/metrics.html
@@ -5,6 +5,7 @@
<title>Cockpit Monitoring</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
@@ -150,10 +151,10 @@ Index: cockpit/pkg/playground/metrics.html
<script src="../base1/cockpit.js"></script>
<script src="metrics.js"></script>
</head>
Index: cockpit/pkg/playground/plot.html
===================================================================
--- cockpit.orig/pkg/playground/plot.html
+++ cockpit/pkg/playground/plot.html
diff --git a/pkg/playground/plot.html b/pkg/playground/plot.html
index dae84c4b7..e1e8fa7dc 100644
--- a/pkg/playground/plot.html
+++ b/pkg/playground/plot.html
@@ -5,6 +5,7 @@
<title>Cockpit Plots</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
@@ -162,10 +163,10 @@ Index: cockpit/pkg/playground/plot.html
<script src="../base1/cockpit.js"></script>
<script src="plot.js"></script>
</head>
Index: cockpit/pkg/playground/react-patterns.html
===================================================================
--- cockpit.orig/pkg/playground/react-patterns.html
+++ cockpit/pkg/playground/react-patterns.html
diff --git a/pkg/playground/react-patterns.html b/pkg/playground/react-patterns.html
index a220e0a51..437bd2e39 100644
--- a/pkg/playground/react-patterns.html
+++ b/pkg/playground/react-patterns.html
@@ -5,6 +5,7 @@
<title>Cockpit React Patterns Usage</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
@@ -174,10 +175,10 @@ Index: cockpit/pkg/playground/react-patterns.html
<script src="../base1/cockpit.js"></script>
<script src="react-patterns.js"></script>
</head>
Index: cockpit/pkg/playground/speed.html
===================================================================
--- cockpit.orig/pkg/playground/speed.html
+++ cockpit/pkg/playground/speed.html
diff --git a/pkg/playground/speed.html b/pkg/playground/speed.html
index 603c7341a..e89d111de 100644
--- a/pkg/playground/speed.html
+++ b/pkg/playground/speed.html
@@ -5,6 +5,7 @@
<title>Cockpit Speed Tests</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
@@ -186,10 +187,10 @@ Index: cockpit/pkg/playground/speed.html
<script src="../base1/cockpit.js"></script>
<script src="speed.js"></script>
</head>
Index: cockpit/pkg/playground/test.html
===================================================================
--- cockpit.orig/pkg/playground/test.html
+++ cockpit/pkg/playground/test.html
diff --git a/pkg/playground/test.html b/pkg/playground/test.html
index 97a74791f..a2519cfd2 100644
--- a/pkg/playground/test.html
+++ b/pkg/playground/test.html
@@ -5,6 +5,7 @@
<title>Cockpit playground</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
@@ -198,35 +199,35 @@ Index: cockpit/pkg/playground/test.html
<script src="../base1/cockpit.js"></script>
<script src="test.js"></script>
</head>
Index: cockpit/pkg/shell/index.html
===================================================================
--- cockpit.orig/pkg/shell/index.html
+++ cockpit/pkg/shell/index.html
@@ -6,6 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
diff --git a/pkg/shell/index.html b/pkg/shell/index.html
index 6dd5ad1ac..1c6f3512c 100644
--- a/pkg/shell/index.html
+++ b/pkg/shell/index.html
@@ -7,6 +7,7 @@
<link rel="icon" href="../../static/favicon.ico" />
<link href="shell.css" rel="stylesheet" />
<link href="../../static/branding.css" rel="stylesheet" />
+ <link href="../../static/css-overrides.css" type="text/css" rel="stylesheet" />
<script src="../base1/cockpit.js"></script>
<script src="../manifests.js"></script>
<!-- HACK: C bridge loads translations via glob and Python via manifest.js -->
Index: cockpit/pkg/shell/shell.html
===================================================================
--- cockpit.orig/pkg/shell/shell.html
+++ cockpit/pkg/shell/shell.html
<script src="../manifests-i18n.js"></script>
<script src="po.js"></script>
diff --git a/pkg/shell/shell.html b/pkg/shell/shell.html
index c9adf7ae2..97f088f7c 100644
--- a/pkg/shell/shell.html
+++ b/pkg/shell/shell.html
@@ -5,6 +5,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="index.css" />
+ <link href="../../static/css-overrides.css" type="text/css" rel="stylesheet" />
</head>
<body class="pf-v5-m-tabular-nums">
<body class="pf-v6-m-tabular-nums">
<div class="curtains-ct">
Index: cockpit/pkg/sosreport/index.html
===================================================================
--- cockpit.orig/pkg/sosreport/index.html
+++ cockpit/pkg/sosreport/index.html
@@ -22,6 +22,7 @@ along with Cockpit; If not, see <http://
diff --git a/pkg/sosreport/index.html b/pkg/sosreport/index.html
index e673383ad..224b42463 100644
--- a/pkg/sosreport/index.html
+++ b/pkg/sosreport/index.html
@@ -22,6 +22,7 @@ along with Cockpit; If not, see <https://www.gnu.org/licenses/>.
<title translate="yes">Diagnostic reports</title>
<meta charset="utf-8" />
<link href="sosreport.css" rel="stylesheet" />
@@ -234,82 +235,11 @@ Index: cockpit/pkg/sosreport/index.html
<script type="text/javascript" src="../base1/cockpit.js"></script>
<script type="text/javascript" src="../base1/po.js"></script>
<script type="text/javascript" src="po.js"></script>
Index: cockpit/pkg/systemd/hwinfo.html
===================================================================
--- cockpit.orig/pkg/systemd/hwinfo.html
+++ cockpit/pkg/systemd/hwinfo.html
@@ -4,6 +4,7 @@
<title translate="yes">Hardware information</title>
<meta charset="utf-8" />
<link href="hwinfo.css" type="text/css" rel="stylesheet" />
+ <link href="../../static/css-overrides.css" type="text/css" rel="stylesheet" />
<script src="../base1/cockpit.js"></script>
<script src="../base1/po.js"></script>
<script src="po.js"></script>
Index: cockpit/pkg/systemd/index.html
===================================================================
--- cockpit.orig/pkg/systemd/index.html
+++ cockpit/pkg/systemd/index.html
@@ -6,6 +6,7 @@
<meta name="description" content="" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="overview.css" />
+ <link href="../../static/css-overrides.css" type="text/css" rel="stylesheet"/>
<script type="text/javascript" src="../base1/cockpit.js"></script>
<script type="text/javascript" src="../base1/po.js"></script>
<script type="text/javascript" src="overview.js"></script>
Index: cockpit/pkg/systemd/logs.html
===================================================================
--- cockpit.orig/pkg/systemd/logs.html
+++ cockpit/pkg/systemd/logs.html
@@ -23,6 +23,7 @@ along with Cockpit; If not, see <http://
<title translate="yes">Journal</title>
<meta charset="utf-8" />
<link href="logs.css" rel="stylesheet" />
+ <link href="../../static/css-overrides.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="../base1/cockpit.js"></script>
<script src="../base1/po.js"></script>
<script src="po.js"></script>
Index: cockpit/pkg/systemd/services.html
===================================================================
--- cockpit.orig/pkg/systemd/services.html
+++ cockpit/pkg/systemd/services.html
@@ -5,6 +5,7 @@
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link href="services.css" type="text/css" rel="stylesheet" />
+ <link href="../../static/css-overrides.css" type="text/css" rel="stylesheet" />
<script src="../base1/cockpit.js"></script>
<script src="../base1/po.js"></script>
<script src="services.js"></script>
Index: cockpit/pkg/systemd/terminal.html
===================================================================
--- cockpit.orig/pkg/systemd/terminal.html
+++ cockpit/pkg/systemd/terminal.html
@@ -5,6 +5,7 @@
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link href="terminal.css" type="text/css" rel="stylesheet" />
+ <link href="../../static/css-overrides.css" type="text/css" rel="stylesheet" />
<script src="../base1/cockpit.js"></script>
<script src="../base1/po.js"></script>
<script src="po.js"></script>
Index: cockpit/pkg/users/index.html
===================================================================
--- cockpit.orig/pkg/users/index.html
+++ cockpit/pkg/users/index.html
@@ -24,6 +24,7 @@
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link href="users.css" type="text/css" rel="stylesheet" />
+ <link href="../../static/css-overrides.css" type="text/css" rel="stylesheet" />
<script src="../base1/cockpit.js"></script>
<script src="../base1/po.js"></script>
<script src="po.js"></script>
Index: cockpit/pkg/static/css-overrides.css
===================================================================
diff --git a/pkg/static/css-overrides.css b/pkg/static/css-overrides.css
new file mode 100644
index 000000000..7481f7ecf
--- /dev/null
+++ cockpit/pkg/static/css-overrides.css
+++ b/pkg/static/css-overrides.css
@@ -0,0 +1,12 @@
+/**
+ * PLEASE, DO NOT CHANGE THIS FILE.
@@ -323,3 +253,114 @@ Index: cockpit/pkg/static/css-overrides.css
+ * - https://github.com/cockpit-project/cockpit/pull/17437
+ * - https://github.com/cockpit-project/cockpit/issues/16359
+ */
diff --git a/pkg/systemd/hwinfo.html b/pkg/systemd/hwinfo.html
index a3413faca..549b80298 100644
--- a/pkg/systemd/hwinfo.html
+++ b/pkg/systemd/hwinfo.html
@@ -4,6 +4,7 @@
<title translate="yes">Hardware information</title>
<meta charset="utf-8" />
<link href="hwinfo.css" type="text/css" rel="stylesheet" />
+ <link href="../../static/css-overrides.css" type="text/css" rel="stylesheet" />
<script src="../base1/cockpit.js"></script>
<script src="../base1/po.js"></script>
<script src="po.js"></script>
diff --git a/pkg/systemd/index.html b/pkg/systemd/index.html
index 91a268a4a..ee125fe65 100644
--- a/pkg/systemd/index.html
+++ b/pkg/systemd/index.html
@@ -6,6 +6,7 @@
<meta name="description" content="" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="overview.css" />
+ <link href="../../static/css-overrides.css" type="text/css" rel="stylesheet"/>
<script type="text/javascript" src="../base1/cockpit.js"></script>
<script type="text/javascript" src="../base1/po.js"></script>
<script type="text/javascript" src="overview.js"></script>
diff --git a/pkg/systemd/logs.html b/pkg/systemd/logs.html
index f89f1fa47..5086ce1f6 100644
--- a/pkg/systemd/logs.html
+++ b/pkg/systemd/logs.html
@@ -23,6 +23,7 @@ along with Cockpit; If not, see <https://www.gnu.org/licenses/>.
<title translate="yes">Journal</title>
<meta charset="utf-8" />
<link href="logs.css" rel="stylesheet" />
+ <link href="../../static/css-overrides.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="../base1/cockpit.js"></script>
<script src="../base1/po.js"></script>
<script src="po.js"></script>
diff --git a/pkg/systemd/services.html b/pkg/systemd/services.html
index 74fa456d4..e9c7047ee 100644
--- a/pkg/systemd/services.html
+++ b/pkg/systemd/services.html
@@ -5,6 +5,7 @@
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link href="services.css" type="text/css" rel="stylesheet" />
+ <link href="../../static/css-overrides.css" type="text/css" rel="stylesheet" />
<script src="../base1/cockpit.js"></script>
<script src="../base1/po.js"></script>
<script src="services.js"></script>
diff --git a/pkg/systemd/terminal.html b/pkg/systemd/terminal.html
index ce7216e4e..63547f9d3 100644
--- a/pkg/systemd/terminal.html
+++ b/pkg/systemd/terminal.html
@@ -5,6 +5,7 @@
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link href="terminal.css" type="text/css" rel="stylesheet" />
+ <link href="../../static/css-overrides.css" type="text/css" rel="stylesheet" />
<script src="../base1/cockpit.js"></script>
<script src="../base1/po.js"></script>
<script src="po.js"></script>
diff --git a/pkg/users/index.html b/pkg/users/index.html
index d26cf4781..b0c6ebf87 100644
--- a/pkg/users/index.html
+++ b/pkg/users/index.html
@@ -24,6 +24,7 @@
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link href="users.css" type="text/css" rel="stylesheet" />
+ <link href="../../static/css-overrides.css" type="text/css" rel="stylesheet" />
<script src="../base1/cockpit.js"></script>
<script src="../base1/po.js"></script>
<script src="po.js"></script>
diff --git a/pkg/storaged/index.html b/pkg/storaged/index.html
index 6893e4909..b6677bb56 100644
--- a/pkg/storaged/index.html
+++ b/pkg/storaged/index.html
@@ -24,6 +24,7 @@
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link href="storaged.css" type="text/css" rel="stylesheet" />
+ <link href="../../static/css-overrides.css" type="text/css" rel="stylesheet">
<script src="../base1/cockpit.js"></script>
<script src="../base1/po.js"></script>
<script src="../manifests.js"></script>
diff --git a/pkg/static/login.html b/pkg/static/login.html
index 6a8fa4f44..9019499a5 100644
--- a/pkg/static/login.html
+++ b/pkg/static/login.html
@@ -11,6 +11,7 @@
<script type="text/javascript" src="cockpit/static/login.js"></script>
<link href="cockpit/static/login.css" type="text/css" rel="stylesheet" />
<link href="cockpit/static/branding.css" type="text/css" rel="stylesheet" />
+ <link href="cockpit/static/css-overrides.css" type="text/css" rel="stylesheet" />
</head>
<body class="login-pf">
diff --git a/pkg/selinux/index.html b/pkg/selinux/index.html
index cc3825a25..e1c814c6d 100644
--- a/pkg/selinux/index.html
+++ b/pkg/selinux/index.html
@@ -25,6 +25,7 @@ along with Cockpit; If not, see <https://www.gnu.org/licenses/>.
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="selinux.css" />
+ <link href="../../static/css-overrides.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="../base1/cockpit.js"></script>
<script type="text/javascript" src="../base1/po.js"></script>
--
2.49.0

View File

@@ -2,11 +2,33 @@ Index: cockpit/pkg/metrics/metrics.jsx
===================================================================
--- cockpit.orig/pkg/metrics/metrics.jsx
+++ cockpit/pkg/metrics/metrics.jsx
@@ -1551,6 +1551,7 @@ const PCPConfig = ({ buttonVariant, fire
@@ -1565,6 +1565,7 @@ const PCPConfig = ({ buttonVariant, firewalldRequest, needsLogout, setNeedsLogou
return (
<Button variant={buttonVariant} icon={<CogIcon />}
+ className="pf-u-display-none"
isDisabled={ invalidService(s_pmlogger) || invalidService(s_pmproxy) || invalidService(s_redis) || invalidService(s_redis_server) }
isDisabled={ invalidService(s_pmlogger) || invalidService(s_pmproxy) ||
invalidService(s_redis) || invalidService(s_redis_server) || invalidService(s_valkey) }
onClick={show_dialog}>
{ _("Metrics settings") }
Index: cockpit-309/pkg/metrics/metrics.jsx
===================================================================
--- cockpit-309.orig/pkg/metrics/metrics.jsx
+++ cockpit-309/pkg/metrics/metrics.jsx
@@ -1824,7 +1825,8 @@ class MetricsHistory extends React.Component {
// on a single machine, cockpit-pcp depends on pcp; but this may not be the case in the beiboot scenario,
// so additionally check if pcp is available on the logged in target machine
if ((cockpit.manifests && !cockpit.manifests.pcp) || this.pmlogger_service.exists === false)
- return <EmptyStatePanel
+ return <EmptyStatePanel />
+/* return <EmptyStatePanel
icon={ExclamationCircleIcon}
title={_("Package cockpit-pcp is missing for metrics history")}
action={this.state.isBeibootBridge === true
@@ -1834,6 +1834,7 @@ class MetricsHistory extends React.Component {
? <Text>{ _("Installation not supported without installed cockpit package") }</Text>
: this.state.packagekitExists && <Button onClick={this.handleInstall}>{_("Install cockpit-pcp")}</Button>}
/>;
+*/
if (!this.state.metricsAvailable) {
let action;

153
kdump-nfs-fixes.patch Normal file
View File

@@ -0,0 +1,153 @@
From d1ffed4a006bc9f8aeb0e8f63e8d2a160720b4f6 Mon Sep 17 00:00:00 2001
From: Alice Brooks <alice.brooks@suse.com>
Date: Thu, 12 Jun 2025 08:48:16 +0100
Subject: [PATCH] kdump: Remove nfs directory when using sysconfig
configuration style
This is because the sysconfig style only has the KDUMP_SAVEDIR field
so we can't work with two path fields as it's impossible to extract
them again
---
pkg/kdump/kdump-client.js | 4 ++++
pkg/kdump/kdump-view.jsx | 24 +++++++++++++++---------
pkg/kdump/kdump.js | 6 ++++++
4 files changed, 26 insertions(+), 20 deletions(-)
diff --git a/pkg/kdump/kdump-client.js b/pkg/kdump/kdump-client.js
index d4c3d989a42d..35add2554a39 100644
--- a/pkg/kdump/kdump-client.js
+++ b/pkg/kdump/kdump-client.js
@@ -48,6 +48,7 @@ export class KdumpClient {
state: undefined,
config: undefined,
target: undefined,
+ sysconfig: undefined,
};
cockpit.event_target(this);
@@ -62,6 +63,7 @@ export class KdumpClient {
// watch the config file
this.configClient = new ConfigFile("/etc/kdump.conf", true);
+ this.state.sysconfig = false;
this._watchConfigChanges();
this.configClient.wait().then(() => {
@@ -69,6 +71,8 @@ export class KdumpClient {
if (this.configClient.settings === null) {
this.configClient.close();
this.configClient = new ConfigFileSUSE("/etc/sysconfig/kdump", true);
+ this.state.sysconfig = true;
+ this.dispatchEvent("kdumpSysconfigChanged", true);
this._watchConfigChanges();
}
});
diff --git a/pkg/kdump/kdump-view.jsx b/pkg/kdump/kdump-view.jsx
index c6cc1e0d6bc6..8b5d74707e39 100644
--- a/pkg/kdump/kdump-view.jsx
+++ b/pkg/kdump/kdump-view.jsx
@@ -115,12 +115,15 @@ const exportAnsibleTask = (settings, os_release) => {
return ansible;
};
-function getLocation(target) {
+function getLocation(target, sysconfig) {
let path = target.path || DEFAULT_KDUMP_PATH;
if (target.type === "ssh") {
path = `${target.server}:${path}`;
} else if (target.type == "nfs") {
+ if (sysconfig) {
+ path = '';
+ }
path = path[0] !== '/' ? '/' + path : path;
path = `${target.server}:${target.export + path}`;
}
@@ -128,7 +131,7 @@ function getLocation(target) {
return path;
}
-const KdumpSettingsModal = ({ settings, initialTarget, handleSave }) => {
+const KdumpSettingsModal = ({ settings, initialTarget, handleSave, sysconfig }) => {
const Dialogs = useDialogs();
const compressionAllowed = settings.compression?.allowed;
const [isSaving, setIsSaving] = useState(false);
@@ -276,13 +279,15 @@ const KdumpSettingsModal = ({ settings, initialTarget, handleSave }) => {
placeholder="/export/cores" value={exportPath}
onChange={(_event, value) => setExportPath(value)} isRequired />
</FormGroup>
+ {sysconfig === false &&
<FormGroup fieldId="kdump-settings-nfs-directory" label={_("Directory")} isRequired>
<TextInput id="kdump-settings-nfs-directory" key="directory"
- placeholder={DEFAULT_KDUMP_PATH} value={directory}
- data-stored={directory}
- onChange={(_event, value) => setDirectory(value)}
- isRequired />
+ placeholder={DEFAULT_KDUMP_PATH} value={directory}
+ data-stored={directory}
+ onChange={(_event, value) => setDirectory(value)}
+ isRequired />
</FormGroup>
+ }
</>
}
@@ -353,7 +358,7 @@ export class KdumpPage extends React.Component {
const target = this.props.kdumpStatus.target;
let verifyMessage;
if (!target.multipleTargets) {
- const path = getLocation(target);
+ const path = getLocation(target, this.props.sysconfig);
if (target.type === "local") {
verifyMessage = fmt_to_fragments(
' ' + _("Results of the crash will be stored in $0 as $1, if kdump is properly configured."),
@@ -403,7 +408,8 @@ export class KdumpPage extends React.Component {
const Dialogs = this.context;
Dialogs.show(<KdumpSettingsModal settings={this.props.kdumpStatus.config}
initialTarget={this.props.kdumpStatus.target}
- handleSave={this.props.onSaveSettings} />);
+ handleSave={this.props.onSaveSettings}
+ sysconfig={this.props.sysconfig} />);
}
handleAutomationClick() {
@@ -459,7 +465,7 @@ ${enableCrashKernel}
if (target.multipleTargets) {
kdumpLocation = _("invalid: multiple targets defined");
} else {
- const locationPath = getLocation(target);
+ const locationPath = getLocation(target, this.props.sysconfig);
if (target.type == "local") {
kdumpLocation = cockpit.format(_("Local, $0"), locationPath);
targetCanChange = true;
diff --git a/pkg/kdump/kdump.js b/pkg/kdump/kdump.js
index 1a143defef15..b0f75e88c220 100644
--- a/pkg/kdump/kdump.js
+++ b/pkg/kdump/kdump.js
@@ -41,6 +41,7 @@ const initStore = function(rootElement) {
dataStore.domRootElement = rootElement;
dataStore.kdumpClient = new kdumpClient.KdumpClient();
+ dataStore.sysconfig = dataStore.kdumpClient.state.sysconfig;
dataStore.saveSettings = settings =>
dataStore.kdumpClient.validateSettings(settings)
@@ -74,6 +75,7 @@ const initStore = function(rootElement) {
reservedMemory: dataStore.kdumpMemory,
kdumpStatus: dataStore.kdumpStatus,
kdumpCmdlineEnabled: dataStore.crashkernel || false,
+ sysconfig: dataStore.sysconfig,
onSaveSettings: dataStore.saveSettings,
onCrashKernel: dataStore.kdumpClient.crashKernel,
exportConfig: dataStore.exportConfig,
@@ -117,6 +119,10 @@ const initStore = function(rootElement) {
dataStore.kdumpStatus = status;
render();
});
+ dataStore.kdumpClient.addEventListener('kdumpSysconfigChanged', function(event, sysconfig) {
+ dataStore.sysconfig = sysconfig;
+ render();
+ });
// render once
render();

BIN
node_modules.obscpio (Stored with Git LFS)

Binary file not shown.

View File

@@ -1,454 +1,528 @@
Source1000: https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz#/@babel-code-frame-7.24.7.tgz
Source1001: https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#/@babel-helper-validator-identifier-7.24.7.tgz
Source1002: https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz#/@babel-highlight-7.24.7.tgz
Source1003: https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-1.10.0.tgz#/@bufbuild-protobuf-1.10.0.tgz
Source1004: https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz#/@csstools-css-parser-algorithms-2.7.1.tgz
Source1005: https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.4.1.tgz#/@csstools-css-tokenizer-2.4.1.tgz
Source1006: https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.13.tgz#/@csstools-media-query-list-parser-2.1.13.tgz
Source1007: https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz#/@csstools-selector-specificity-3.1.1.tgz
Source1008: https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz#/@dual-bundle-import-meta-resolve-4.1.0.tgz
Source1009: https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.0.tgz#/@esbuild-linux-x64-0.23.0.tgz
Source1010: https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#/@eslint-community-eslint-utils-4.4.0.tgz
Source1011: https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#/@eslint-community-regexpp-4.11.0.tgz
Source1012: https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#/@eslint-eslintrc-2.1.4.tgz
Source1013: https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz#/@eslint-js-8.57.0.tgz
Source1014: https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#/@humanwhocodes-config-array-0.11.14.tgz
Source1015: https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#/@humanwhocodes-module-importer-1.0.1.tgz
Source1016: https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#/@humanwhocodes-object-schema-2.0.3.tgz
Source1017: https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#/@nodelib-fs.scandir-2.1.5.tgz
Source1018: https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#/@nodelib-fs.stat-2.0.5.tgz
Source1019: https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#/@nodelib-fs.walk-1.2.8.tgz
Source1020: https://registry.npmjs.org/@patternfly/patternfly/-/patternfly-5.3.1.tgz#/@patternfly-patternfly-5.3.1.tgz
Source1021: https://registry.npmjs.org/@patternfly/react-core/-/react-core-5.3.3.tgz#/@patternfly-react-core-5.3.3.tgz
Source1022: https://registry.npmjs.org/@patternfly/react-icons/-/react-icons-5.3.2.tgz#/@patternfly-react-icons-5.3.2.tgz
Source1023: https://registry.npmjs.org/@patternfly/react-styles/-/react-styles-5.3.1.tgz#/@patternfly-react-styles-5.3.1.tgz
Source1024: https://registry.npmjs.org/@patternfly/react-table/-/react-table-5.3.3.tgz#/@patternfly-react-table-5.3.3.tgz
Source1025: https://registry.npmjs.org/@patternfly/react-tokens/-/react-tokens-5.3.1.tgz#/@patternfly-react-tokens-5.3.1.tgz
Source1026: https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz#/@types-json5-0.0.29.tgz
Source1027: https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz#/@types-prop-types-15.7.12.tgz
Source1028: https://registry.npmjs.org/@types/qunit/-/qunit-2.19.10.tgz#/@types-qunit-2.19.10.tgz
Source1029: https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz#/@types-react-18.3.3.tgz
Source1030: https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz#/@types-react-dom-18.3.0.tgz
Source1031: https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.15.0.tgz#/@typescript-eslint-eslint-plugin-7.15.0.tgz
Source1032: https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.16.0.tgz#/@typescript-eslint-parser-7.16.0.tgz
Source1033: https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.15.0.tgz#/@typescript-eslint-scope-manager-7.15.0.tgz
Source1034: https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.16.0.tgz#/@typescript-eslint-scope-manager-7.16.0.tgz
Source1035: https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.15.0.tgz#/@typescript-eslint-type-utils-7.15.0.tgz
Source1036: https://registry.npmjs.org/@typescript-eslint/types/-/types-7.15.0.tgz#/@typescript-eslint-types-7.15.0.tgz
Source1037: https://registry.npmjs.org/@typescript-eslint/types/-/types-7.16.0.tgz#/@typescript-eslint-types-7.16.0.tgz
Source1038: https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.15.0.tgz#/@typescript-eslint-typescript-estree-7.15.0.tgz
Source1039: https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.16.0.tgz#/@typescript-eslint-typescript-estree-7.16.0.tgz
Source1040: https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.15.0.tgz#/@typescript-eslint-utils-7.15.0.tgz
Source1041: https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.15.0.tgz#/@typescript-eslint-visitor-keys-7.15.0.tgz
Source1042: https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.16.0.tgz#/@typescript-eslint-visitor-keys-7.16.0.tgz
Source1043: https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#/@ungap-structured-clone-1.2.0.tgz
Source1044: https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz#/abort-controller-3.0.0.tgz
Source1045: https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz#/acorn-8.12.1.tgz
Source1046: https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#/acorn-jsx-5.3.2.tgz
Source1047: https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz#/ajv-6.12.6.tgz
Source1048: https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz#/ajv-8.16.0.tgz
Source1049: https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz#/ansi-escapes-6.2.1.tgz
Source1050: https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz#/ansi-regex-5.0.1.tgz
Source1051: https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz#/ansi-regex-6.0.1.tgz
Source1052: https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#/ansi-styles-3.2.1.tgz
Source1053: https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz#/ansi-styles-4.3.0.tgz
Source1054: https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz#/anymatch-3.1.3.tgz
Source1055: https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz#/argparse-1.0.10.tgz
Source1056: https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz#/argparse-2.0.1.tgz
Source1057: https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz#/aria-query-5.1.3.tgz
Source1058: https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#/array-buffer-byte-length-1.0.1.tgz
Source1059: https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz#/array-includes-3.1.8.tgz
Source1060: https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz#/array-union-2.1.0.tgz
Source1061: https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz#/array.prototype.findlast-1.2.5.tgz
Source1062: https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#/array.prototype.findlastindex-1.2.5.tgz
Source1063: https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#/array.prototype.flat-1.3.2.tgz
Source1064: https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#/array.prototype.flatmap-1.3.2.tgz
Source1065: https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz#/array.prototype.toreversed-1.1.2.tgz
Source1066: https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz#/array.prototype.tosorted-1.1.4.tgz
Source1067: https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#/arraybuffer.prototype.slice-1.0.3.tgz
Source1068: https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz#/ast-types-flow-0.0.8.tgz
Source1069: https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz#/astral-regex-2.0.0.tgz
Source1070: https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz#/attr-accept-2.2.2.tgz
Source1071: https://registry.npmjs.org/autolinker/-/autolinker-3.16.2.tgz#/autolinker-3.16.2.tgz
Source1072: https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#/available-typed-arrays-1.0.7.tgz
Source1073: https://registry.npmjs.org/axe-core/-/axe-core-4.9.1.tgz#/axe-core-4.9.1.tgz
Source1074: https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz#/axobject-query-3.1.1.tgz
Source1075: https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz#/balanced-match-1.0.2.tgz
Source1076: https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz#/balanced-match-2.0.0.tgz
Source1077: https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz#/base64-js-1.5.1.tgz
Source1078: https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz#/binary-extensions-2.3.0.tgz
Source1079: https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#/brace-expansion-1.1.11.tgz
Source1080: https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz#/brace-expansion-2.0.1.tgz
Source1081: https://registry.npmjs.org/braces/-/braces-3.0.3.tgz#/braces-3.0.3.tgz
Source1082: https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz#/buffer-6.0.3.tgz
Source1083: https://registry.npmjs.org/buffer-builder/-/buffer-builder-0.2.0.tgz#/buffer-builder-0.2.0.tgz
Source1084: https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz#/builtin-modules-3.3.0.tgz
Source1085: https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz#/builtins-5.1.0.tgz
Source1086: https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz#/call-bind-1.0.7.tgz
Source1087: https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz#/callsites-3.1.0.tgz
Source1088: https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#/chalk-2.4.2.tgz
Source1089: https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz#/chalk-4.1.2.tgz
Source1090: https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz#/chalk-5.3.0.tgz
Source1091: https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz#/chokidar-3.6.0.tgz
Source1092: https://registry.npmjs.org/chrome-remote-interface/-/chrome-remote-interface-0.33.0.tgz#/chrome-remote-interface-0.33.0.tgz
Source1093: https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#/color-convert-1.9.3.tgz
Source1094: https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz#/color-convert-2.0.1.tgz
Source1095: https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#/color-name-1.1.3.tgz
Source1096: https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#/color-name-1.1.4.tgz
Source1097: https://registry.npmjs.org/colord/-/colord-2.9.3.tgz#/colord-2.9.3.tgz
Source1098: https://registry.npmjs.org/commander/-/commander-2.11.0.tgz#/commander-2.11.0.tgz
Source1099: https://registry.npmjs.org/commander/-/commander-7.2.0.tgz#/commander-7.2.0.tgz
Source1100: https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#/concat-map-0.0.1.tgz
Source1101: https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz#/content-type-1.0.5.tgz
Source1102: https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz#/cosmiconfig-9.0.0.tgz
Source1103: https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz#/cross-spawn-7.0.3.tgz
Source1104: https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.2.tgz#/css-functions-list-3.2.2.tgz
Source1105: https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz#/css-tree-2.3.1.tgz
Source1106: https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz#/cssesc-3.0.0.tgz
Source1107: https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz#/csstype-3.1.3.tgz
Source1108: https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#/damerau-levenshtein-1.0.8.tgz
Source1109: https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz#/data-view-buffer-1.0.1.tgz
Source1110: https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#/data-view-byte-length-1.0.1.tgz
Source1111: https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#/data-view-byte-offset-1.0.0.tgz
Source1112: https://registry.npmjs.org/debug/-/debug-3.2.7.tgz#/debug-3.2.7.tgz
Source1113: https://registry.npmjs.org/debug/-/debug-4.3.5.tgz#/debug-4.3.5.tgz
Source1114: https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz#/deep-equal-2.2.3.tgz
Source1115: https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz#/deep-is-0.1.4.tgz
Source1116: https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz#/define-data-property-1.1.4.tgz
Source1117: https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz#/define-properties-1.2.1.tgz
Source1118: https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz#/dequal-2.0.3.tgz
Source1119: https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz#/dir-glob-3.0.1.tgz
Source1120: https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz#/doctrine-2.1.0.tgz
Source1121: https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz#/doctrine-3.0.0.tgz
Source1122: https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz#/emoji-regex-10.3.0.tgz
Source1123: https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz#/emoji-regex-8.0.0.tgz
Source1124: https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz#/emoji-regex-9.2.2.tgz
Source1125: https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz#/encoding-0.1.13.tgz
Source1126: https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz#/env-paths-2.2.1.tgz
Source1127: https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz#/error-ex-1.3.2.tgz
Source1128: https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz#/es-abstract-1.23.3.tgz
Source1129: https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz#/es-define-property-1.0.0.tgz
Source1130: https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz#/es-errors-1.3.0.tgz
Source1131: https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz#/es-get-iterator-1.1.3.tgz
Source1132: https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz#/es-iterator-helpers-1.0.19.tgz
Source1133: https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz#/es-object-atoms-1.0.0.tgz
Source1134: https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#/es-set-tostringtag-2.0.3.tgz
Source1135: https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#/es-shim-unscopables-1.0.2.tgz
Source1136: https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz#/es-to-primitive-1.2.1.tgz
Source1137: https://registry.npmjs.org/esbuild/-/esbuild-0.23.0.tgz#/esbuild-0.23.0.tgz
Source1138: https://registry.npmjs.org/esbuild-plugin-copy/-/esbuild-plugin-copy-2.1.1.tgz#/esbuild-plugin-copy-2.1.1.tgz
Source1139: https://registry.npmjs.org/esbuild-plugin-replace/-/esbuild-plugin-replace-1.4.0.tgz#/esbuild-plugin-replace-1.4.0.tgz
Source1140: https://registry.npmjs.org/esbuild-sass-plugin/-/esbuild-sass-plugin-3.3.1.tgz#/esbuild-sass-plugin-3.3.1.tgz
Source1141: https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.23.0.tgz#/esbuild-wasm-0.23.0.tgz
Source1142: https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#/escape-string-regexp-1.0.5.tgz
Source1143: https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#/escape-string-regexp-4.0.0.tgz
Source1144: https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz#/eslint-8.57.0.tgz
Source1145: https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz#/eslint-compat-utils-0.5.1.tgz
Source1146: https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz#/eslint-config-standard-17.1.0.tgz
Source1147: https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-11.0.0.tgz#/eslint-config-standard-jsx-11.0.0.tgz
Source1148: https://registry.npmjs.org/eslint-config-standard-react/-/eslint-config-standard-react-13.0.0.tgz#/eslint-config-standard-react-13.0.0.tgz
Source1149: https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#/eslint-import-resolver-node-0.3.9.tgz
Source1150: https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz#/eslint-module-utils-2.8.1.tgz
Source1151: https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#/eslint-plugin-es-3.0.1.tgz
Source1152: https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz#/eslint-plugin-es-x-7.8.0.tgz
Source1153: https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#/eslint-plugin-import-2.29.1.tgz
Source1154: https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.9.0.tgz#/eslint-plugin-jsx-a11y-6.9.0.tgz
Source1155: https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz#/eslint-plugin-n-16.6.2.tgz
Source1156: https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#/eslint-plugin-node-11.1.0.tgz
Source1157: https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.4.0.tgz#/eslint-plugin-promise-6.4.0.tgz
Source1158: https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.3.tgz#/eslint-plugin-react-7.34.3.tgz
Source1159: https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#/eslint-plugin-react-hooks-4.6.2.tgz
Source1160: https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz#/eslint-scope-7.2.2.tgz
Source1161: https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz#/eslint-utils-2.1.0.tgz
Source1162: https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#/eslint-visitor-keys-1.3.0.tgz
Source1163: https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#/eslint-visitor-keys-3.4.3.tgz
Source1164: https://registry.npmjs.org/espree/-/espree-9.6.1.tgz#/espree-9.6.1.tgz
Source1165: https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz#/esquery-1.6.0.tgz
Source1166: https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz#/esrecurse-4.3.0.tgz
Source1167: https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz#/estraverse-5.3.0.tgz
Source1168: https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz#/esutils-2.0.3.tgz
Source1169: https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz#/event-target-shim-5.0.1.tgz
Source1170: https://registry.npmjs.org/events/-/events-3.3.0.tgz#/events-3.3.0.tgz
Source1171: https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#/fast-deep-equal-3.1.3.tgz
Source1172: https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz#/fast-glob-3.3.2.tgz
Source1173: https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#/fast-json-stable-stringify-2.1.0.tgz
Source1174: https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#/fast-levenshtein-2.0.6.tgz
Source1175: https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#/fastest-levenshtein-1.0.16.tgz
Source1176: https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz#/fastq-1.17.1.tgz
Source1177: https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz#/file-entry-cache-6.0.1.tgz
Source1178: https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.0.0.tgz#/file-entry-cache-9.0.0.tgz
Source1179: https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz#/file-selector-0.6.0.tgz
Source1180: https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz#/fill-range-7.1.1.tgz
Source1181: https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz#/find-up-5.0.0.tgz
Source1182: https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz#/flat-cache-3.2.0.tgz
Source1183: https://registry.npmjs.org/flat-cache/-/flat-cache-5.0.0.tgz#/flat-cache-5.0.0.tgz
Source1184: https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz#/flatted-3.3.1.tgz
Source1185: https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.2.tgz#/focus-trap-7.5.2.tgz
Source1186: https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz#/for-each-0.3.3.tgz
Source1187: https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz#/fs-extra-10.1.0.tgz
Source1188: https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#/fs.realpath-1.0.0.tgz
Source1189: https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz#/function-bind-1.1.2.tgz
Source1190: https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz#/function.prototype.name-1.1.6.tgz
Source1191: https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz#/functions-have-names-1.2.3.tgz
Source1192: https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz#/get-east-asian-width-1.2.0.tgz
Source1193: https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz#/get-intrinsic-1.2.4.tgz
Source1194: https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz#/get-symbol-description-1.0.2.tgz
Source1195: https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.5.tgz#/get-tsconfig-4.7.5.tgz
Source1196: https://registry.npmjs.org/gettext-parser/-/gettext-parser-8.0.0.tgz#/gettext-parser-8.0.0.tgz
Source1197: https://registry.npmjs.org/glob/-/glob-7.2.3.tgz#/glob-7.2.3.tgz
Source1198: https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#/glob-parent-5.1.2.tgz
Source1199: https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz#/glob-parent-6.0.2.tgz
Source1200: https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz#/global-modules-2.0.0.tgz
Source1201: https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz#/global-prefix-3.0.0.tgz
Source1202: https://registry.npmjs.org/globals/-/globals-13.24.0.tgz#/globals-13.24.0.tgz
Source1203: https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz#/globalthis-1.0.4.tgz
Source1204: https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz#/globalyzer-0.1.0.tgz
Source1205: https://registry.npmjs.org/globby/-/globby-11.1.0.tgz#/globby-11.1.0.tgz
Source1206: https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz#/globjoin-0.1.4.tgz
Source1207: https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz#/globrex-0.1.2.tgz
Source1208: https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz#/gopd-1.0.1.tgz
Source1209: https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz#/graceful-fs-4.2.11.tgz
Source1210: https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz#/graphemer-1.4.0.tgz
Source1211: https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz#/has-bigints-1.0.2.tgz
Source1212: https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz#/has-flag-3.0.0.tgz
Source1213: https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#/has-flag-4.0.0.tgz
Source1214: https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#/has-property-descriptors-1.0.2.tgz
Source1215: https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz#/has-proto-1.0.3.tgz
Source1216: https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz#/has-symbols-1.0.3.tgz
Source1217: https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz#/has-tostringtag-1.0.2.tgz
Source1218: https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz#/hasown-2.0.2.tgz
Source1219: https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz#/html-tags-3.3.1.tgz
Source1220: https://registry.npmjs.org/htmlparser/-/htmlparser-1.7.7.tgz#/htmlparser-1.7.7.tgz
Source1221: https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz#/iconv-lite-0.6.3.tgz
Source1222: https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz#/ieee754-1.2.1.tgz
Source1223: https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz#/ignore-5.3.1.tgz
Source1224: https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz#/immutable-4.3.6.tgz
Source1225: https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz#/import-fresh-3.3.0.tgz
Source1226: https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz#/imurmurhash-0.1.4.tgz
Source1227: https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#/inflight-1.0.6.tgz
Source1228: https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#/inherits-2.0.4.tgz
Source1229: https://registry.npmjs.org/ini/-/ini-1.3.8.tgz#/ini-1.3.8.tgz
Source1230: https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz#/internal-slot-1.0.7.tgz
Source1231: https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz#/irregular-plurals-3.5.0.tgz
Source1232: https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz#/is-arguments-1.1.1.tgz
Source1233: https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz#/is-array-buffer-3.0.4.tgz
Source1234: https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz#/is-arrayish-0.2.1.tgz
Source1235: https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz#/is-async-function-2.0.0.tgz
Source1236: https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz#/is-bigint-1.0.4.tgz
Source1237: https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz#/is-binary-path-2.1.0.tgz
Source1238: https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz#/is-boolean-object-1.1.2.tgz
Source1239: https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz#/is-builtin-module-3.2.1.tgz
Source1240: https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz#/is-callable-1.2.7.tgz
Source1241: https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz#/is-core-module-2.14.0.tgz
Source1242: https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz#/is-data-view-1.0.1.tgz
Source1243: https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz#/is-date-object-1.0.5.tgz
Source1244: https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz#/is-extglob-2.1.1.tgz
Source1245: https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#/is-finalizationregistry-1.0.2.tgz
Source1246: https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#/is-fullwidth-code-point-3.0.0.tgz
Source1247: https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz#/is-generator-function-1.0.10.tgz
Source1248: https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz#/is-glob-4.0.3.tgz
Source1249: https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz#/is-map-2.0.3.tgz
Source1250: https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz#/is-negative-zero-2.0.3.tgz
Source1251: https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz#/is-number-7.0.0.tgz
Source1252: https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz#/is-number-object-1.0.7.tgz
Source1253: https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz#/is-path-inside-3.0.3.tgz
Source1254: https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz#/is-plain-object-5.0.0.tgz
Source1255: https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz#/is-regex-1.1.4.tgz
Source1256: https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz#/is-set-2.0.3.tgz
Source1257: https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#/is-shared-array-buffer-1.0.3.tgz
Source1258: https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz#/is-string-1.0.7.tgz
Source1259: https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz#/is-symbol-1.0.4.tgz
Source1260: https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz#/is-typed-array-1.1.13.tgz
Source1261: https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz#/is-unicode-supported-1.3.0.tgz
Source1262: https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz#/is-weakmap-2.0.2.tgz
Source1263: https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz#/is-weakref-1.0.2.tgz
Source1264: https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz#/is-weakset-2.0.3.tgz
Source1265: https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz#/isarray-2.0.5.tgz
Source1266: https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#/isexe-2.0.0.tgz
Source1267: https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz#/iterator.prototype-1.1.2.tgz
Source1268: https://registry.npmjs.org/jed/-/jed-1.1.1.tgz#/jed-1.1.1.tgz
Source1269: https://registry.npmjs.org/js-sha1/-/js-sha1-0.7.0.tgz#/js-sha1-0.7.0.tgz
Source1270: https://registry.npmjs.org/js-sha256/-/js-sha256-0.11.0.tgz#/js-sha256-0.11.0.tgz
Source1271: https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#/js-tokens-4.0.0.tgz
Source1272: https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz#/js-yaml-4.1.0.tgz
Source1273: https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz#/json-buffer-3.0.1.tgz
Source1274: https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#/json-parse-even-better-errors-2.3.1.tgz
Source1275: https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#/json-schema-traverse-0.4.1.tgz
Source1276: https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#/json-schema-traverse-1.0.0.tgz
Source1277: https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#/json-stable-stringify-without-jsonify-1.0.1.tgz
Source1278: https://registry.npmjs.org/json5/-/json5-1.0.2.tgz#/json5-1.0.2.tgz
Source1279: https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz#/jsonfile-6.1.0.tgz
Source1280: https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#/jsx-ast-utils-3.3.5.tgz
Source1281: https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz#/keyv-4.5.4.tgz
Source1282: https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz#/kind-of-6.0.3.tgz
Source1283: https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.31.0.tgz#/known-css-properties-0.31.0.tgz
Source1284: https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.34.0.tgz#/known-css-properties-0.34.0.tgz
Source1285: https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz#/language-subtag-registry-0.3.23.tgz
Source1286: https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz#/language-tags-1.0.9.tgz
Source1287: https://registry.npmjs.org/levn/-/levn-0.4.1.tgz#/levn-0.4.1.tgz
Source1288: https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#/lines-and-columns-1.2.4.tgz
Source1289: https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz#/locate-path-6.0.0.tgz
Source1290: https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz#/lodash-4.17.21.tgz
Source1291: https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz#/lodash.merge-4.6.2.tgz
Source1292: https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz#/lodash.truncate-4.4.2.tgz
Source1293: https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz#/log-symbols-6.0.0.tgz
Source1294: https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz#/loose-envify-1.4.0.tgz
Source1295: https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz#/magic-string-0.25.9.tgz
Source1296: https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#/mathml-tag-names-2.1.3.tgz
Source1297: https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz#/mdn-data-2.0.30.tgz
Source1298: https://registry.npmjs.org/meow/-/meow-13.2.0.tgz#/meow-13.2.0.tgz
Source1299: https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz#/merge2-1.4.1.tgz
Source1300: https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz#/micromatch-4.0.7.tgz
Source1301: https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz#/minimatch-3.1.2.tgz
Source1302: https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz#/minimatch-9.0.5.tgz
Source1303: https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz#/minimist-1.2.8.tgz
Source1304: https://registry.npmjs.org/ms/-/ms-2.1.2.tgz#/ms-2.1.2.tgz
Source1305: https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz#/nanoid-3.3.7.tgz
Source1306: https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#/natural-compare-1.4.0.tgz
Source1307: https://registry.npmjs.org/node-watch/-/node-watch-0.7.3.tgz#/node-watch-0.7.3.tgz
Source1308: https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#/normalize-path-3.0.0.tgz
Source1309: https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#/object-assign-4.1.1.tgz
Source1310: https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz#/object-inspect-1.13.2.tgz
Source1311: https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz#/object-is-1.1.6.tgz
Source1312: https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz#/object-keys-1.1.1.tgz
Source1313: https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz#/object.assign-4.1.5.tgz
Source1314: https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz#/object.entries-1.1.8.tgz
Source1315: https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz#/object.fromentries-2.0.8.tgz
Source1316: https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz#/object.groupby-1.0.3.tgz
Source1317: https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz#/object.hasown-1.1.4.tgz
Source1318: https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz#/object.values-1.2.0.tgz
Source1319: https://registry.npmjs.org/once/-/once-1.4.0.tgz#/once-1.4.0.tgz
Source1320: https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz#/optionator-0.9.4.tgz
Source1321: https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz#/p-limit-3.1.0.tgz
Source1322: https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz#/p-locate-5.0.0.tgz
Source1323: https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz#/parent-module-1.0.1.tgz
Source1324: https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz#/parse-json-5.2.0.tgz
Source1325: https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz#/path-exists-4.0.0.tgz
Source1326: https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#/path-is-absolute-1.0.1.tgz
Source1327: https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz#/path-key-3.1.1.tgz
Source1328: https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz#/path-parse-1.0.7.tgz
Source1329: https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz#/path-type-4.0.0.tgz
Source1330: https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz#/picocolors-1.0.1.tgz
Source1331: https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz#/picomatch-2.3.1.tgz
Source1332: https://registry.npmjs.org/plur/-/plur-5.1.0.tgz#/plur-5.1.0.tgz
Source1333: https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#/possible-typed-array-names-1.0.0.tgz
Source1334: https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz#/postcss-8.4.39.tgz
Source1335: https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#/postcss-media-query-parser-0.2.3.tgz
Source1336: https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz#/postcss-resolve-nested-selector-0.1.1.tgz
Source1337: https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.0.tgz#/postcss-safe-parser-7.0.0.tgz
Source1338: https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz#/postcss-scss-4.0.9.tgz
Source1339: https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz#/postcss-selector-parser-6.1.0.tgz
Source1340: https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#/postcss-value-parser-4.2.0.tgz
Source1341: https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz#/prelude-ls-1.2.1.tgz
Source1342: https://registry.npmjs.org/process/-/process-0.11.10.tgz#/process-0.11.10.tgz
Source1343: https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz#/prop-types-15.8.1.tgz
Source1344: https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz#/punycode-2.3.1.tgz
Source1345: https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz#/queue-microtask-1.2.3.tgz
Source1346: https://registry.npmjs.org/qunit/-/qunit-2.21.0.tgz#/qunit-2.21.0.tgz
Source1347: https://registry.npmjs.org/qunit-tap/-/qunit-tap-1.5.1.tgz#/qunit-tap-1.5.1.tgz
Source1348: https://registry.npmjs.org/react/-/react-18.3.1.tgz#/react-18.3.1.tgz
Source1349: https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz#/react-dom-18.3.1.tgz
Source1350: https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz#/react-dropzone-14.2.3.tgz
Source1351: https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz#/react-is-16.13.1.tgz
Source1352: https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz#/readable-stream-4.5.2.tgz
Source1353: https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz#/readdirp-3.6.0.tgz
Source1354: https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz#/reflect.getprototypeof-1.0.6.tgz
Source1355: https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#/regexp.prototype.flags-1.5.2.tgz
Source1356: https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz#/regexpp-3.2.0.tgz
Source1357: https://registry.npmjs.org/remarkable/-/remarkable-2.0.1.tgz#/remarkable-2.0.1.tgz
Source1358: https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz#/require-from-string-2.0.2.tgz
Source1359: https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz#/resolve-1.22.8.tgz
Source1360: https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz#/resolve-2.0.0-next.5.tgz
Source1361: https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz#/resolve-from-4.0.0.tgz
Source1362: https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz#/resolve-from-5.0.0.tgz
Source1363: https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#/resolve-pkg-maps-1.0.0.tgz
Source1364: https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz#/reusify-1.0.4.tgz
Source1365: https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#/rimraf-3.0.2.tgz
Source1366: https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz#/run-parallel-1.2.0.tgz
Source1367: https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz#/rxjs-7.8.1.tgz
Source1368: https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz#/safe-array-concat-1.1.2.tgz
Source1369: https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz#/safe-buffer-5.2.1.tgz
Source1370: https://registry.npmjs.org/safe-identifier/-/safe-identifier-0.4.2.tgz#/safe-identifier-0.4.2.tgz
Source1371: https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz#/safe-regex-test-1.0.3.tgz
Source1372: https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#/safer-buffer-2.1.2.tgz
Source1373: https://registry.npmjs.org/sass/-/sass-1.77.6.tgz#/sass-1.77.6.tgz
Source1374: https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.77.5.tgz#/sass-embedded-1.77.5.tgz
Source1375: https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.77.5.tgz#/sass-embedded-linux-musl-x64-1.77.5.tgz
Source1376: https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.77.5.tgz#/sass-embedded-linux-x64-1.77.5.tgz
Source1377: https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz#/scheduler-0.23.2.tgz
Source1378: https://registry.npmjs.org/semver/-/semver-6.3.1.tgz#/semver-6.3.1.tgz
Source1379: https://registry.npmjs.org/semver/-/semver-7.6.2.tgz#/semver-7.6.2.tgz
Source1380: https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz#/set-function-length-1.2.2.tgz
Source1381: https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz#/set-function-name-2.0.2.tgz
Source1382: https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz#/shebang-command-2.0.0.tgz
Source1383: https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz#/shebang-regex-3.0.0.tgz
Source1384: https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz#/side-channel-1.0.6.tgz
Source1385: https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz#/signal-exit-4.1.0.tgz
Source1386: https://registry.npmjs.org/sizzle/-/sizzle-2.3.10.tgz#/sizzle-2.3.10.tgz
Source1387: https://registry.npmjs.org/slash/-/slash-3.0.0.tgz#/slash-3.0.0.tgz
Source1388: https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz#/slice-ansi-4.0.0.tgz
Source1389: https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz#/source-map-js-1.2.0.tgz
Source1390: https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#/sourcemap-codec-1.4.8.tgz
Source1391: https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz#/sprintf-js-1.0.3.tgz
Source1392: https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#/stop-iteration-iterator-1.0.0.tgz
Source1393: https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#/string-width-4.2.3.tgz
Source1394: https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz#/string-width-7.2.0.tgz
Source1395: https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz#/string.prototype.includes-2.0.0.tgz
Source1396: https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz#/string.prototype.matchall-4.0.11.tgz
Source1397: https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#/string.prototype.trim-1.2.9.tgz
Source1398: https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#/string.prototype.trimend-1.0.8.tgz
Source1399: https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#/string.prototype.trimstart-1.0.8.tgz
Source1400: https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz#/string_decoder-1.3.0.tgz
Source1401: https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#/strip-ansi-6.0.1.tgz
Source1402: https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz#/strip-ansi-7.1.0.tgz
Source1403: https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz#/strip-bom-3.0.0.tgz
Source1404: https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz#/strip-json-comments-3.1.1.tgz
Source1405: https://registry.npmjs.org/stylelint/-/stylelint-16.6.1.tgz#/stylelint-16.6.1.tgz
Source1406: https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-14.0.1.tgz#/stylelint-config-recommended-14.0.1.tgz
Source1407: https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-14.0.0.tgz#/stylelint-config-recommended-scss-14.0.0.tgz
Source1408: https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-36.0.0.tgz#/stylelint-config-standard-36.0.0.tgz
Source1409: https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-13.1.0.tgz#/stylelint-config-standard-scss-13.1.0.tgz
Source1410: https://registry.npmjs.org/stylelint-formatter-pretty/-/stylelint-formatter-pretty-4.0.0.tgz#/stylelint-formatter-pretty-4.0.0.tgz
Source1411: https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.4.0.tgz#/stylelint-scss-6.4.0.tgz
Source1412: https://registry.npmjs.org/stylelint-use-logical-spec/-/stylelint-use-logical-spec-5.0.1.tgz#/stylelint-use-logical-spec-5.0.1.tgz
Source1413: https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#/supports-color-5.5.0.tgz
Source1414: https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz#/supports-color-7.2.0.tgz
Source1415: https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz#/supports-color-8.1.1.tgz
Source1416: https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz#/supports-hyperlinks-3.0.0.tgz
Source1417: https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#/supports-preserve-symlinks-flag-1.0.0.tgz
Source1418: https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz#/svg-tags-1.0.0.tgz
Source1419: https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz#/tabbable-6.2.0.tgz
Source1420: https://registry.npmjs.org/table/-/table-6.8.2.tgz#/table-6.8.2.tgz
Source1421: https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz#/text-table-0.2.0.tgz
Source1422: https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-5.0.2.tgz#/throttle-debounce-5.0.2.tgz
Source1423: https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz#/tiny-glob-0.2.9.tgz
Source1424: https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz#/to-regex-range-5.0.1.tgz
Source1425: https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz#/ts-api-utils-1.3.0.tgz
Source1426: https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#/tsconfig-paths-3.15.0.tgz
Source1427: https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz#/tslib-2.6.3.tgz
Source1428: https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz#/type-check-0.4.0.tgz
Source1429: https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz#/type-fest-0.20.2.tgz
Source1430: https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#/typed-array-buffer-1.0.2.tgz
Source1431: https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#/typed-array-byte-length-1.0.1.tgz
Source1432: https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#/typed-array-byte-offset-1.0.2.tgz
Source1433: https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz#/typed-array-length-1.0.6.tgz
Source1434: https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz#/typescript-5.5.3.tgz
Source1435: https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz#/unbox-primitive-1.0.2.tgz
Source1436: https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz#/universalify-2.0.1.tgz
Source1437: https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz#/uri-js-4.4.1.tgz
Source1438: https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#/util-deprecate-1.0.2.tgz
Source1439: https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz#/uuid-9.0.1.tgz
Source1440: https://registry.npmjs.org/varint/-/varint-6.0.0.tgz#/varint-6.0.0.tgz
Source1441: https://registry.npmjs.org/which/-/which-1.3.1.tgz#/which-1.3.1.tgz
Source1442: https://registry.npmjs.org/which/-/which-2.0.2.tgz#/which-2.0.2.tgz
Source1443: https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#/which-boxed-primitive-1.0.2.tgz
Source1444: https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz#/which-builtin-type-1.1.3.tgz
Source1445: https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz#/which-collection-1.0.2.tgz
Source1446: https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz#/which-typed-array-1.1.15.tgz
Source1447: https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz#/word-wrap-1.2.5.tgz
Source1448: https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#/wrappy-1.0.2.tgz
Source1449: https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz#/write-file-atomic-5.0.1.tgz
Source1450: https://registry.npmjs.org/ws/-/ws-7.5.10.tgz#/ws-7.5.10.tgz
Source1451: https://registry.npmjs.org/xterm/-/xterm-5.3.0.tgz#/xterm-5.3.0.tgz
Source1452: https://registry.npmjs.org/xterm-addon-canvas/-/xterm-addon-canvas-0.5.0.tgz#/xterm-addon-canvas-0.5.0.tgz
Source1453: https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#/yocto-queue-0.1.0.tgz
Source1000: https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz#/@babel-code-frame-7.27.1.tgz
Source1001: https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#/@babel-helper-validator-identifier-7.27.1.tgz
Source1002: https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.5.1.tgz#/@bufbuild-protobuf-2.5.1.tgz
Source1003: https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz#/@csstools-css-parser-algorithms-3.0.5.tgz
Source1004: https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz#/@csstools-css-tokenizer-3.0.4.tgz
Source1005: https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz#/@csstools-media-query-list-parser-4.0.3.tgz
Source1006: https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz#/@csstools-selector-specificity-5.0.0.tgz
Source1007: https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz#/@dual-bundle-import-meta-resolve-4.1.0.tgz
Source1008: https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz#/@esbuild-aix-ppc64-0.25.5.tgz
Source1009: https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz#/@esbuild-android-arm-0.25.5.tgz
Source1010: https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz#/@esbuild-android-arm64-0.25.5.tgz
Source1011: https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz#/@esbuild-android-x64-0.25.5.tgz
Source1012: https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz#/@esbuild-darwin-arm64-0.25.5.tgz
Source1013: https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz#/@esbuild-darwin-x64-0.25.5.tgz
Source1014: https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz#/@esbuild-freebsd-arm64-0.25.5.tgz
Source1015: https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz#/@esbuild-freebsd-x64-0.25.5.tgz
Source1016: https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz#/@esbuild-linux-arm-0.25.5.tgz
Source1017: https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz#/@esbuild-linux-arm64-0.25.5.tgz
Source1018: https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz#/@esbuild-linux-ia32-0.25.5.tgz
Source1019: https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz#/@esbuild-linux-loong64-0.25.5.tgz
Source1020: https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz#/@esbuild-linux-mips64el-0.25.5.tgz
Source1021: https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz#/@esbuild-linux-ppc64-0.25.5.tgz
Source1022: https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz#/@esbuild-linux-riscv64-0.25.5.tgz
Source1023: https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz#/@esbuild-linux-s390x-0.25.5.tgz
Source1024: https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz#/@esbuild-linux-x64-0.25.5.tgz
Source1025: https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz#/@esbuild-netbsd-arm64-0.25.5.tgz
Source1026: https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz#/@esbuild-netbsd-x64-0.25.5.tgz
Source1027: https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz#/@esbuild-openbsd-arm64-0.25.5.tgz
Source1028: https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz#/@esbuild-openbsd-x64-0.25.5.tgz
Source1029: https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz#/@esbuild-sunos-x64-0.25.5.tgz
Source1030: https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz#/@esbuild-win32-arm64-0.25.5.tgz
Source1031: https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz#/@esbuild-win32-ia32-0.25.5.tgz
Source1032: https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz#/@esbuild-win32-x64-0.25.5.tgz
Source1033: https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz#/@eslint-community-eslint-utils-4.7.0.tgz
Source1034: https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#/@eslint-community-regexpp-4.12.1.tgz
Source1035: https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#/@eslint-eslintrc-2.1.4.tgz
Source1036: https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz#/@eslint-js-8.57.1.tgz
Source1037: https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#/@humanwhocodes-config-array-0.13.0.tgz
Source1038: https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#/@humanwhocodes-module-importer-1.0.1.tgz
Source1039: https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#/@humanwhocodes-object-schema-2.0.3.tgz
Source1040: https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz#/@isaacs-cliui-8.0.2.tgz
Source1041: https://registry.npmjs.org/@keyv/serialize/-/serialize-1.0.3.tgz#/@keyv-serialize-1.0.3.tgz
Source1042: https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#/@nodelib-fs.scandir-2.1.5.tgz
Source1043: https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#/@nodelib-fs.stat-2.0.5.tgz
Source1044: https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#/@nodelib-fs.walk-1.2.8.tgz
Source1045: https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz#/@parcel-watcher-2.5.1.tgz
Source1046: https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz#/@parcel-watcher-android-arm64-2.5.1.tgz
Source1047: https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz#/@parcel-watcher-darwin-arm64-2.5.1.tgz
Source1048: https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz#/@parcel-watcher-darwin-x64-2.5.1.tgz
Source1049: https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz#/@parcel-watcher-freebsd-x64-2.5.1.tgz
Source1050: https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz#/@parcel-watcher-linux-arm-glibc-2.5.1.tgz
Source1051: https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz#/@parcel-watcher-linux-arm-musl-2.5.1.tgz
Source1052: https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz#/@parcel-watcher-linux-arm64-glibc-2.5.1.tgz
Source1053: https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz#/@parcel-watcher-linux-arm64-musl-2.5.1.tgz
Source1054: https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz#/@parcel-watcher-linux-x64-glibc-2.5.1.tgz
Source1055: https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz#/@parcel-watcher-linux-x64-musl-2.5.1.tgz
Source1056: https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz#/@parcel-watcher-win32-arm64-2.5.1.tgz
Source1057: https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz#/@parcel-watcher-win32-ia32-2.5.1.tgz
Source1058: https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz#/@parcel-watcher-win32-x64-2.5.1.tgz
Source1059: https://registry.npmjs.org/@patternfly/patternfly/-/patternfly-6.2.3.tgz#/@patternfly-patternfly-6.2.3.tgz
Source1060: https://registry.npmjs.org/@patternfly/react-core/-/react-core-6.2.2.tgz#/@patternfly-react-core-6.2.2.tgz
Source1061: https://registry.npmjs.org/@patternfly/react-icons/-/react-icons-6.2.2.tgz#/@patternfly-react-icons-6.2.2.tgz
Source1062: https://registry.npmjs.org/@patternfly/react-styles/-/react-styles-6.2.2.tgz#/@patternfly-react-styles-6.2.2.tgz
Source1063: https://registry.npmjs.org/@patternfly/react-table/-/react-table-6.2.2.tgz#/@patternfly-react-table-6.2.2.tgz
Source1064: https://registry.npmjs.org/@patternfly/react-tokens/-/react-tokens-6.2.2.tgz#/@patternfly-react-tokens-6.2.2.tgz
Source1065: https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz#/@rtsao-scc-1.1.0.tgz
Source1066: https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz#/@types-json5-0.0.29.tgz
Source1067: https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz#/@types-prop-types-15.7.14.tgz
Source1068: https://registry.npmjs.org/@types/qunit/-/qunit-2.19.12.tgz#/@types-qunit-2.19.12.tgz
Source1069: https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz#/@types-react-18.3.12.tgz
Source1070: https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.1.tgz#/@types-react-dom-18.3.1.tgz
Source1071: https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.33.0.tgz#/@typescript-eslint-eslint-plugin-8.33.0.tgz
Source1072: https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.33.0.tgz#/@typescript-eslint-parser-8.33.0.tgz
Source1073: https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.33.0.tgz#/@typescript-eslint-project-service-8.33.0.tgz
Source1074: https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.33.0.tgz#/@typescript-eslint-scope-manager-8.33.0.tgz
Source1075: https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.33.0.tgz#/@typescript-eslint-tsconfig-utils-8.33.0.tgz
Source1076: https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.33.0.tgz#/@typescript-eslint-type-utils-8.33.0.tgz
Source1077: https://registry.npmjs.org/@typescript-eslint/types/-/types-8.33.0.tgz#/@typescript-eslint-types-8.33.0.tgz
Source1078: https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.33.0.tgz#/@typescript-eslint-typescript-estree-8.33.0.tgz
Source1079: https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.33.0.tgz#/@typescript-eslint-utils-8.33.0.tgz
Source1080: https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.33.0.tgz#/@typescript-eslint-visitor-keys-8.33.0.tgz
Source1081: https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#/@ungap-structured-clone-1.3.0.tgz
Source1082: https://registry.npmjs.org/@xterm/addon-canvas/-/addon-canvas-0.7.0.tgz#/@xterm-addon-canvas-0.7.0.tgz
Source1083: https://registry.npmjs.org/@xterm/xterm/-/xterm-5.5.0.tgz#/@xterm-xterm-5.5.0.tgz
Source1084: https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz#/abort-controller-3.0.0.tgz
Source1085: https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz#/acorn-8.14.1.tgz
Source1086: https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#/acorn-jsx-5.3.2.tgz
Source1087: https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz#/ajv-6.12.6.tgz
Source1088: https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz#/ajv-8.17.1.tgz
Source1089: https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz#/ansi-escapes-7.0.0.tgz
Source1090: https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz#/ansi-regex-5.0.1.tgz
Source1091: https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz#/ansi-regex-6.1.0.tgz
Source1092: https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz#/ansi-styles-4.3.0.tgz
Source1093: https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz#/ansi-styles-6.2.1.tgz
Source1094: https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz#/anymatch-3.1.3.tgz
Source1095: https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz#/argparse-1.0.10.tgz
Source1096: https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz#/argparse-2.0.1.tgz
Source1097: https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz#/aria-query-5.3.2.tgz
Source1098: https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz#/array-buffer-byte-length-1.0.2.tgz
Source1099: https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz#/array-includes-3.1.9.tgz
Source1100: https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz#/array-union-2.1.0.tgz
Source1101: https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz#/array.prototype.findlast-1.2.5.tgz
Source1102: https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz#/array.prototype.findlastindex-1.2.6.tgz
Source1103: https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz#/array.prototype.flat-1.3.3.tgz
Source1104: https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz#/array.prototype.flatmap-1.3.3.tgz
Source1105: https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz#/array.prototype.tosorted-1.1.4.tgz
Source1106: https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz#/arraybuffer.prototype.slice-1.0.4.tgz
Source1107: https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz#/ast-types-flow-0.0.8.tgz
Source1108: https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz#/astral-regex-2.0.0.tgz
Source1109: https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz#/async-function-1.0.0.tgz
Source1110: https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.5.tgz#/attr-accept-2.2.5.tgz
Source1111: https://registry.npmjs.org/autolinker/-/autolinker-3.16.2.tgz#/autolinker-3.16.2.tgz
Source1112: https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#/available-typed-arrays-1.0.7.tgz
Source1113: https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz#/axe-core-4.10.3.tgz
Source1114: https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz#/axobject-query-4.1.0.tgz
Source1115: https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz#/balanced-match-1.0.2.tgz
Source1116: https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz#/balanced-match-2.0.0.tgz
Source1117: https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz#/base64-js-1.5.1.tgz
Source1118: https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz#/binary-extensions-2.3.0.tgz
Source1119: https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#/brace-expansion-1.1.11.tgz
Source1120: https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz#/brace-expansion-2.0.1.tgz
Source1121: https://registry.npmjs.org/braces/-/braces-3.0.3.tgz#/braces-3.0.3.tgz
Source1122: https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz#/buffer-6.0.3.tgz
Source1123: https://registry.npmjs.org/buffer-builder/-/buffer-builder-0.2.0.tgz#/buffer-builder-0.2.0.tgz
Source1124: https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz#/builtin-modules-3.3.0.tgz
Source1125: https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz#/builtins-5.1.0.tgz
Source1126: https://registry.npmjs.org/cacheable/-/cacheable-1.9.0.tgz#/cacheable-1.9.0.tgz
Source1127: https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz#/call-bind-1.0.8.tgz
Source1128: https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#/call-bind-apply-helpers-1.0.2.tgz
Source1129: https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz#/call-bound-1.0.4.tgz
Source1130: https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz#/callsites-3.1.0.tgz
Source1131: https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz#/chalk-4.1.2.tgz
Source1132: https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz#/chokidar-3.6.0.tgz
Source1133: https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz#/chokidar-4.0.3.tgz
Source1134: https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz#/color-convert-2.0.1.tgz
Source1135: https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#/color-name-1.1.4.tgz
Source1136: https://registry.npmjs.org/colord/-/colord-2.9.3.tgz#/colord-2.9.3.tgz
Source1137: https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.2.tgz#/colorjs.io-0.5.2.tgz
Source1138: https://registry.npmjs.org/commander/-/commander-7.2.0.tgz#/commander-7.2.0.tgz
Source1139: https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#/concat-map-0.0.1.tgz
Source1140: https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz#/content-type-1.0.5.tgz
Source1141: https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz#/cosmiconfig-9.0.0.tgz
Source1142: https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz#/cross-spawn-7.0.6.tgz
Source1143: https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz#/css-functions-list-3.2.3.tgz
Source1144: https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz#/css-tree-3.1.0.tgz
Source1145: https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz#/cssesc-3.0.0.tgz
Source1146: https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz#/csstype-3.1.3.tgz
Source1147: https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#/damerau-levenshtein-1.0.8.tgz
Source1148: https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz#/data-view-buffer-1.0.2.tgz
Source1149: https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz#/data-view-byte-length-1.0.2.tgz
Source1150: https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz#/data-view-byte-offset-1.0.1.tgz
Source1151: https://registry.npmjs.org/debug/-/debug-3.2.7.tgz#/debug-3.2.7.tgz
Source1152: https://registry.npmjs.org/debug/-/debug-4.4.1.tgz#/debug-4.4.1.tgz
Source1153: https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz#/deep-is-0.1.4.tgz
Source1154: https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz#/define-data-property-1.1.4.tgz
Source1155: https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz#/define-properties-1.2.1.tgz
Source1156: https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz#/dequal-2.0.3.tgz
Source1157: https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz#/detect-libc-1.0.3.tgz
Source1158: https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz#/dir-glob-3.0.1.tgz
Source1159: https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz#/doctrine-2.1.0.tgz
Source1160: https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz#/doctrine-3.0.0.tgz
Source1161: https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz#/dunder-proto-1.0.1.tgz
Source1162: https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz#/eastasianwidth-0.2.0.tgz
Source1163: https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz#/emoji-regex-10.4.0.tgz
Source1164: https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz#/emoji-regex-8.0.0.tgz
Source1165: https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz#/emoji-regex-9.2.2.tgz
Source1166: https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz#/encoding-0.1.13.tgz
Source1167: https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz#/env-paths-2.2.1.tgz
Source1168: https://registry.npmjs.org/environment/-/environment-1.1.0.tgz#/environment-1.1.0.tgz
Source1169: https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz#/error-ex-1.3.2.tgz
Source1170: https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz#/es-abstract-1.24.0.tgz
Source1171: https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz#/es-define-property-1.0.1.tgz
Source1172: https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz#/es-errors-1.3.0.tgz
Source1173: https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz#/es-iterator-helpers-1.2.1.tgz
Source1174: https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz#/es-object-atoms-1.1.1.tgz
Source1175: https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#/es-set-tostringtag-2.1.0.tgz
Source1176: https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz#/es-shim-unscopables-1.1.0.tgz
Source1177: https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz#/es-to-primitive-1.3.0.tgz
Source1178: https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz#/esbuild-0.25.5.tgz
Source1179: https://registry.npmjs.org/esbuild-plugin-copy/-/esbuild-plugin-copy-2.1.1.tgz#/esbuild-plugin-copy-2.1.1.tgz
Source1180: https://registry.npmjs.org/esbuild-plugin-replace/-/esbuild-plugin-replace-1.4.0.tgz#/esbuild-plugin-replace-1.4.0.tgz
Source1181: https://registry.npmjs.org/esbuild-sass-plugin/-/esbuild-sass-plugin-3.3.1.tgz#/esbuild-sass-plugin-3.3.1.tgz
Source1182: https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.25.5.tgz#/esbuild-wasm-0.25.5.tgz
Source1183: https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#/escape-string-regexp-4.0.0.tgz
Source1184: https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz#/eslint-8.57.1.tgz
Source1185: https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz#/eslint-compat-utils-0.5.1.tgz
Source1186: https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz#/eslint-config-standard-17.1.0.tgz
Source1187: https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-11.0.0.tgz#/eslint-config-standard-jsx-11.0.0.tgz
Source1188: https://registry.npmjs.org/eslint-config-standard-react/-/eslint-config-standard-react-13.0.0.tgz#/eslint-config-standard-react-13.0.0.tgz
Source1189: https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#/eslint-import-resolver-node-0.3.9.tgz
Source1190: https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz#/eslint-module-utils-2.12.0.tgz
Source1191: https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#/eslint-plugin-es-3.0.1.tgz
Source1192: https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz#/eslint-plugin-es-x-7.8.0.tgz
Source1193: https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz#/eslint-plugin-import-2.31.0.tgz
Source1194: https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz#/eslint-plugin-jsx-a11y-6.10.2.tgz
Source1195: https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz#/eslint-plugin-n-16.6.2.tgz
Source1196: https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#/eslint-plugin-node-11.1.0.tgz
Source1197: https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz#/eslint-plugin-promise-6.6.0.tgz
Source1198: https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz#/eslint-plugin-react-7.37.5.tgz
Source1199: https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#/eslint-plugin-react-hooks-4.6.2.tgz
Source1200: https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz#/eslint-scope-7.2.2.tgz
Source1201: https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz#/eslint-utils-2.1.0.tgz
Source1202: https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#/eslint-visitor-keys-1.3.0.tgz
Source1203: https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#/eslint-visitor-keys-3.4.3.tgz
Source1204: https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#/eslint-visitor-keys-4.2.0.tgz
Source1205: https://registry.npmjs.org/espree/-/espree-9.6.1.tgz#/espree-9.6.1.tgz
Source1206: https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz#/esquery-1.6.0.tgz
Source1207: https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz#/esrecurse-4.3.0.tgz
Source1208: https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz#/estraverse-5.3.0.tgz
Source1209: https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz#/esutils-2.0.3.tgz
Source1210: https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz#/event-target-shim-5.0.1.tgz
Source1211: https://registry.npmjs.org/events/-/events-3.3.0.tgz#/events-3.3.0.tgz
Source1212: https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#/fast-deep-equal-3.1.3.tgz
Source1213: https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz#/fast-glob-3.3.3.tgz
Source1214: https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#/fast-json-stable-stringify-2.1.0.tgz
Source1215: https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#/fast-levenshtein-2.0.6.tgz
Source1216: https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz#/fast-uri-3.0.6.tgz
Source1217: https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#/fastest-levenshtein-1.0.16.tgz
Source1218: https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz#/fastq-1.19.1.tgz
Source1219: https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-10.1.0.tgz#/file-entry-cache-10.1.0.tgz
Source1220: https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz#/file-entry-cache-6.0.1.tgz
Source1221: https://registry.npmjs.org/file-selector/-/file-selector-2.1.2.tgz#/file-selector-2.1.2.tgz
Source1222: https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz#/fill-range-7.1.1.tgz
Source1223: https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz#/find-up-5.0.0.tgz
Source1224: https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz#/flat-cache-3.2.0.tgz
Source1225: https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.9.tgz#/flat-cache-6.1.9.tgz
Source1226: https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz#/flatted-3.3.3.tgz
Source1227: https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.4.tgz#/focus-trap-7.6.4.tgz
Source1228: https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz#/for-each-0.3.5.tgz
Source1229: https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz#/foreground-child-3.3.1.tgz
Source1230: https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz#/fs-extra-10.1.0.tgz
Source1231: https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#/fs.realpath-1.0.0.tgz
Source1232: https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz#/fsevents-2.3.3.tgz
Source1233: https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz#/function-bind-1.1.2.tgz
Source1234: https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz#/function.prototype.name-1.1.8.tgz
Source1235: https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz#/functions-have-names-1.2.3.tgz
Source1236: https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz#/get-east-asian-width-1.3.0.tgz
Source1237: https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz#/get-intrinsic-1.3.0.tgz
Source1238: https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz#/get-proto-1.0.1.tgz
Source1239: https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz#/get-symbol-description-1.1.0.tgz
Source1240: https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz#/get-tsconfig-4.10.1.tgz
Source1241: https://registry.npmjs.org/gettext-parser/-/gettext-parser-8.0.0.tgz#/gettext-parser-8.0.0.tgz
Source1242: https://registry.npmjs.org/glob/-/glob-11.0.2.tgz#/glob-11.0.2.tgz
Source1243: https://registry.npmjs.org/glob/-/glob-7.2.3.tgz#/glob-7.2.3.tgz
Source1244: https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#/glob-parent-5.1.2.tgz
Source1245: https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz#/glob-parent-6.0.2.tgz
Source1246: https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz#/global-modules-2.0.0.tgz
Source1247: https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz#/global-prefix-3.0.0.tgz
Source1248: https://registry.npmjs.org/globals/-/globals-13.24.0.tgz#/globals-13.24.0.tgz
Source1249: https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz#/globalthis-1.0.4.tgz
Source1250: https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz#/globalyzer-0.1.0.tgz
Source1251: https://registry.npmjs.org/globby/-/globby-11.1.0.tgz#/globby-11.1.0.tgz
Source1252: https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz#/globjoin-0.1.4.tgz
Source1253: https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz#/globrex-0.1.2.tgz
Source1254: https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz#/gopd-1.2.0.tgz
Source1255: https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz#/graceful-fs-4.2.11.tgz
Source1256: https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz#/graphemer-1.4.0.tgz
Source1257: https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz#/has-bigints-1.1.0.tgz
Source1258: https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#/has-flag-4.0.0.tgz
Source1259: https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#/has-property-descriptors-1.0.2.tgz
Source1260: https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz#/has-proto-1.2.0.tgz
Source1261: https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz#/has-symbols-1.1.0.tgz
Source1262: https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz#/has-tostringtag-1.0.2.tgz
Source1263: https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz#/hasown-2.0.2.tgz
Source1264: https://registry.npmjs.org/hookified/-/hookified-1.9.1.tgz#/hookified-1.9.1.tgz
Source1265: https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz#/html-tags-3.3.1.tgz
Source1266: https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz#/iconv-lite-0.6.3.tgz
Source1267: https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz#/ieee754-1.2.1.tgz
Source1268: https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz#/ignore-5.3.2.tgz
Source1269: https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz#/ignore-7.0.5.tgz
Source1270: https://registry.npmjs.org/immutable/-/immutable-5.1.2.tgz#/immutable-5.1.2.tgz
Source1271: https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz#/import-fresh-3.3.1.tgz
Source1272: https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz#/imurmurhash-0.1.4.tgz
Source1273: https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#/inflight-1.0.6.tgz
Source1274: https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#/inherits-2.0.4.tgz
Source1275: https://registry.npmjs.org/ini/-/ini-1.3.8.tgz#/ini-1.3.8.tgz
Source1276: https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz#/internal-slot-1.1.0.tgz
Source1277: https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz#/irregular-plurals-3.5.0.tgz
Source1278: https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz#/is-array-buffer-3.0.5.tgz
Source1279: https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz#/is-arrayish-0.2.1.tgz
Source1280: https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz#/is-async-function-2.1.1.tgz
Source1281: https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz#/is-bigint-1.1.0.tgz
Source1282: https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz#/is-binary-path-2.1.0.tgz
Source1283: https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz#/is-boolean-object-1.2.2.tgz
Source1284: https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz#/is-builtin-module-3.2.1.tgz
Source1285: https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz#/is-callable-1.2.7.tgz
Source1286: https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz#/is-core-module-2.16.1.tgz
Source1287: https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz#/is-data-view-1.0.2.tgz
Source1288: https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz#/is-date-object-1.1.0.tgz
Source1289: https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz#/is-extglob-2.1.1.tgz
Source1290: https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz#/is-finalizationregistry-1.1.1.tgz
Source1291: https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#/is-fullwidth-code-point-3.0.0.tgz
Source1292: https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz#/is-generator-function-1.1.0.tgz
Source1293: https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz#/is-glob-4.0.3.tgz
Source1294: https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz#/is-map-2.0.3.tgz
Source1295: https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz#/is-negative-zero-2.0.3.tgz
Source1296: https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz#/is-number-7.0.0.tgz
Source1297: https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz#/is-number-object-1.1.1.tgz
Source1298: https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz#/is-path-inside-3.0.3.tgz
Source1299: https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz#/is-plain-object-5.0.0.tgz
Source1300: https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz#/is-regex-1.2.1.tgz
Source1301: https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz#/is-set-2.0.3.tgz
Source1302: https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz#/is-shared-array-buffer-1.0.4.tgz
Source1303: https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz#/is-string-1.1.1.tgz
Source1304: https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz#/is-symbol-1.1.1.tgz
Source1305: https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz#/is-typed-array-1.1.15.tgz
Source1306: https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz#/is-unicode-supported-2.1.0.tgz
Source1307: https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz#/is-weakmap-2.0.2.tgz
Source1308: https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz#/is-weakref-1.1.1.tgz
Source1309: https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz#/is-weakset-2.0.4.tgz
Source1310: https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz#/isarray-2.0.5.tgz
Source1311: https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#/isexe-2.0.0.tgz
Source1312: https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz#/iterator.prototype-1.1.5.tgz
Source1313: https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz#/jackspeak-4.1.1.tgz
Source1314: https://registry.npmjs.org/jed/-/jed-1.1.1.tgz#/jed-1.1.1.tgz
Source1315: https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#/js-tokens-4.0.0.tgz
Source1316: https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz#/js-yaml-4.1.0.tgz
Source1317: https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz#/json-buffer-3.0.1.tgz
Source1318: https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#/json-parse-even-better-errors-2.3.1.tgz
Source1319: https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#/json-schema-traverse-0.4.1.tgz
Source1320: https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#/json-schema-traverse-1.0.0.tgz
Source1321: https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#/json-stable-stringify-without-jsonify-1.0.1.tgz
Source1322: https://registry.npmjs.org/json5/-/json5-1.0.2.tgz#/json5-1.0.2.tgz
Source1323: https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz#/jsonfile-6.1.0.tgz
Source1324: https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#/jsx-ast-utils-3.3.5.tgz
Source1325: https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz#/keyv-4.5.4.tgz
Source1326: https://registry.npmjs.org/keyv/-/keyv-5.3.3.tgz#/keyv-5.3.3.tgz
Source1327: https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz#/kind-of-6.0.3.tgz
Source1328: https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.36.0.tgz#/known-css-properties-0.36.0.tgz
Source1329: https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz#/language-subtag-registry-0.3.23.tgz
Source1330: https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz#/language-tags-1.0.9.tgz
Source1331: https://registry.npmjs.org/levn/-/levn-0.4.1.tgz#/levn-0.4.1.tgz
Source1332: https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#/lines-and-columns-1.2.4.tgz
Source1333: https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz#/locate-path-6.0.0.tgz
Source1334: https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz#/lodash-4.17.21.tgz
Source1335: https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz#/lodash.merge-4.6.2.tgz
Source1336: https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz#/lodash.truncate-4.4.2.tgz
Source1337: https://registry.npmjs.org/log-symbols/-/log-symbols-7.0.1.tgz#/log-symbols-7.0.1.tgz
Source1338: https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz#/loose-envify-1.4.0.tgz
Source1339: https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz#/lru-cache-11.1.0.tgz
Source1340: https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz#/magic-string-0.25.9.tgz
Source1341: https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz#/math-intrinsics-1.1.0.tgz
Source1342: https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#/mathml-tag-names-2.1.3.tgz
Source1343: https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz#/mdn-data-2.12.2.tgz
Source1344: https://registry.npmjs.org/mdn-data/-/mdn-data-2.21.0.tgz#/mdn-data-2.21.0.tgz
Source1345: https://registry.npmjs.org/meow/-/meow-13.2.0.tgz#/meow-13.2.0.tgz
Source1346: https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz#/merge2-1.4.1.tgz
Source1347: https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz#/micromatch-4.0.8.tgz
Source1348: https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz#/minimatch-10.0.1.tgz
Source1349: https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz#/minimatch-3.1.2.tgz
Source1350: https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz#/minimatch-9.0.5.tgz
Source1351: https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz#/minimist-1.2.8.tgz
Source1352: https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz#/minipass-7.1.2.tgz
Source1353: https://registry.npmjs.org/ms/-/ms-2.1.3.tgz#/ms-2.1.3.tgz
Source1354: https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz#/nanoid-3.3.11.tgz
Source1355: https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#/natural-compare-1.4.0.tgz
Source1356: https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz#/node-addon-api-7.1.1.tgz
Source1357: https://registry.npmjs.org/node-watch/-/node-watch-0.7.3.tgz#/node-watch-0.7.3.tgz
Source1358: https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#/normalize-path-3.0.0.tgz
Source1359: https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#/object-assign-4.1.1.tgz
Source1360: https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz#/object-inspect-1.13.4.tgz
Source1361: https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz#/object-keys-1.1.1.tgz
Source1362: https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz#/object.assign-4.1.7.tgz
Source1363: https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz#/object.entries-1.1.9.tgz
Source1364: https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz#/object.fromentries-2.0.8.tgz
Source1365: https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz#/object.groupby-1.0.3.tgz
Source1366: https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz#/object.values-1.2.1.tgz
Source1367: https://registry.npmjs.org/once/-/once-1.4.0.tgz#/once-1.4.0.tgz
Source1368: https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz#/optionator-0.9.4.tgz
Source1369: https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz#/own-keys-1.0.1.tgz
Source1370: https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz#/p-limit-3.1.0.tgz
Source1371: https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz#/p-locate-5.0.0.tgz
Source1372: https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#/package-json-from-dist-1.0.1.tgz
Source1373: https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz#/parent-module-1.0.1.tgz
Source1374: https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz#/parse-json-5.2.0.tgz
Source1375: https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz#/path-exists-4.0.0.tgz
Source1376: https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#/path-is-absolute-1.0.1.tgz
Source1377: https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz#/path-key-3.1.1.tgz
Source1378: https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz#/path-parse-1.0.7.tgz
Source1379: https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz#/path-scurry-2.0.0.tgz
Source1380: https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz#/path-type-4.0.0.tgz
Source1381: https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz#/picocolors-1.1.1.tgz
Source1382: https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz#/picomatch-2.3.1.tgz
Source1383: https://registry.npmjs.org/plur/-/plur-5.1.0.tgz#/plur-5.1.0.tgz
Source1384: https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz#/possible-typed-array-names-1.1.0.tgz
Source1385: https://registry.npmjs.org/postcss/-/postcss-8.5.4.tgz#/postcss-8.5.4.tgz
Source1386: https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#/postcss-media-query-parser-0.2.3.tgz
Source1387: https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz#/postcss-resolve-nested-selector-0.1.6.tgz
Source1388: https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz#/postcss-safe-parser-7.0.1.tgz
Source1389: https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz#/postcss-scss-4.0.9.tgz
Source1390: https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz#/postcss-selector-parser-7.1.0.tgz
Source1391: https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#/postcss-value-parser-4.2.0.tgz
Source1392: https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz#/prelude-ls-1.2.1.tgz
Source1393: https://registry.npmjs.org/process/-/process-0.11.10.tgz#/process-0.11.10.tgz
Source1394: https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz#/prop-types-15.8.1.tgz
Source1395: https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz#/punycode-2.3.1.tgz
Source1396: https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz#/queue-microtask-1.2.3.tgz
Source1397: https://registry.npmjs.org/qunit/-/qunit-2.24.1.tgz#/qunit-2.24.1.tgz
Source1398: https://registry.npmjs.org/qunit-tap/-/qunit-tap-1.5.1.tgz#/qunit-tap-1.5.1.tgz
Source1399: https://registry.npmjs.org/react/-/react-18.3.1.tgz#/react-18.3.1.tgz
Source1400: https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz#/react-dom-18.3.1.tgz
Source1401: https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.3.8.tgz#/react-dropzone-14.3.8.tgz
Source1402: https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz#/react-is-16.13.1.tgz
Source1403: https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz#/readable-stream-4.7.0.tgz
Source1404: https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz#/readdirp-3.6.0.tgz
Source1405: https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz#/readdirp-4.1.2.tgz
Source1406: https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz#/reflect.getprototypeof-1.0.10.tgz
Source1407: https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz#/regexp.prototype.flags-1.5.4.tgz
Source1408: https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz#/regexpp-3.2.0.tgz
Source1409: https://registry.npmjs.org/remarkable/-/remarkable-2.0.1.tgz#/remarkable-2.0.1.tgz
Source1410: https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz#/require-from-string-2.0.2.tgz
Source1411: https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz#/resolve-1.22.10.tgz
Source1412: https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz#/resolve-2.0.0-next.5.tgz
Source1413: https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz#/resolve-from-4.0.0.tgz
Source1414: https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz#/resolve-from-5.0.0.tgz
Source1415: https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#/resolve-pkg-maps-1.0.0.tgz
Source1416: https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz#/reusify-1.1.0.tgz
Source1417: https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#/rimraf-3.0.2.tgz
Source1418: https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz#/run-parallel-1.2.0.tgz
Source1419: https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz#/rxjs-7.8.2.tgz
Source1420: https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz#/safe-array-concat-1.1.3.tgz
Source1421: https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz#/safe-buffer-5.2.1.tgz
Source1422: https://registry.npmjs.org/safe-identifier/-/safe-identifier-0.4.2.tgz#/safe-identifier-0.4.2.tgz
Source1423: https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz#/safe-push-apply-1.0.0.tgz
Source1424: https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz#/safe-regex-test-1.1.0.tgz
Source1425: https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#/safer-buffer-2.1.2.tgz
Source1426: https://registry.npmjs.org/sass/-/sass-1.89.0.tgz#/sass-1.89.0.tgz
Source1427: https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.89.1.tgz#/sass-embedded-1.89.1.tgz
Source1428: https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.89.1.tgz#/sass-embedded-android-arm-1.89.1.tgz
Source1429: https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.89.1.tgz#/sass-embedded-android-arm64-1.89.1.tgz
Source1430: https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.89.1.tgz#/sass-embedded-android-riscv64-1.89.1.tgz
Source1431: https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.89.1.tgz#/sass-embedded-android-x64-1.89.1.tgz
Source1432: https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.89.1.tgz#/sass-embedded-darwin-arm64-1.89.1.tgz
Source1433: https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.89.1.tgz#/sass-embedded-darwin-x64-1.89.1.tgz
Source1434: https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.89.1.tgz#/sass-embedded-linux-arm-1.89.1.tgz
Source1435: https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.89.1.tgz#/sass-embedded-linux-arm64-1.89.1.tgz
Source1436: https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.89.1.tgz#/sass-embedded-linux-musl-arm-1.89.1.tgz
Source1437: https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.89.1.tgz#/sass-embedded-linux-musl-arm64-1.89.1.tgz
Source1438: https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.89.1.tgz#/sass-embedded-linux-musl-riscv64-1.89.1.tgz
Source1439: https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.89.1.tgz#/sass-embedded-linux-musl-x64-1.89.1.tgz
Source1440: https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.89.1.tgz#/sass-embedded-linux-riscv64-1.89.1.tgz
Source1441: https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.89.1.tgz#/sass-embedded-linux-x64-1.89.1.tgz
Source1442: https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.89.1.tgz#/sass-embedded-win32-arm64-1.89.1.tgz
Source1443: https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.89.1.tgz#/sass-embedded-win32-x64-1.89.1.tgz
Source1444: https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz#/scheduler-0.23.2.tgz
Source1445: https://registry.npmjs.org/semver/-/semver-6.3.1.tgz#/semver-6.3.1.tgz
Source1446: https://registry.npmjs.org/semver/-/semver-7.7.2.tgz#/semver-7.7.2.tgz
Source1447: https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz#/set-function-length-1.2.2.tgz
Source1448: https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz#/set-function-name-2.0.2.tgz
Source1449: https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz#/set-proto-1.0.0.tgz
Source1450: https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz#/shebang-command-2.0.0.tgz
Source1451: https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz#/shebang-regex-3.0.0.tgz
Source1452: https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz#/side-channel-1.1.0.tgz
Source1453: https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz#/side-channel-list-1.0.0.tgz
Source1454: https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz#/side-channel-map-1.0.1.tgz
Source1455: https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#/side-channel-weakmap-1.0.2.tgz
Source1456: https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz#/signal-exit-4.1.0.tgz
Source1457: https://registry.npmjs.org/sizzle/-/sizzle-2.3.10.tgz#/sizzle-2.3.10.tgz
Source1458: https://registry.npmjs.org/slash/-/slash-3.0.0.tgz#/slash-3.0.0.tgz
Source1459: https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz#/slice-ansi-4.0.0.tgz
Source1460: https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz#/source-map-js-1.2.1.tgz
Source1461: https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#/sourcemap-codec-1.4.8.tgz
Source1462: https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz#/sprintf-js-1.0.3.tgz
Source1463: https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz#/stop-iteration-iterator-1.1.0.tgz
Source1464: https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#/string-width-4.2.3.tgz
Source1465: https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz#/string-width-5.1.2.tgz
Source1466: https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz#/string-width-7.2.0.tgz
Source1467: https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz#/string.prototype.includes-2.0.1.tgz
Source1468: https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz#/string.prototype.matchall-4.0.12.tgz
Source1469: https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz#/string.prototype.repeat-1.0.0.tgz
Source1470: https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz#/string.prototype.trim-1.2.10.tgz
Source1471: https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz#/string.prototype.trimend-1.0.9.tgz
Source1472: https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#/string.prototype.trimstart-1.0.8.tgz
Source1473: https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz#/string_decoder-1.3.0.tgz
Source1474: https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#/strip-ansi-6.0.1.tgz
Source1475: https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz#/strip-ansi-7.1.0.tgz
Source1476: https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz#/strip-bom-3.0.0.tgz
Source1477: https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz#/strip-json-comments-3.1.1.tgz
Source1478: https://registry.npmjs.org/stylelint/-/stylelint-16.20.0.tgz#/stylelint-16.20.0.tgz
Source1479: https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-16.0.0.tgz#/stylelint-config-recommended-16.0.0.tgz
Source1480: https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-15.0.1.tgz#/stylelint-config-recommended-scss-15.0.1.tgz
Source1481: https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-38.0.0.tgz#/stylelint-config-standard-38.0.0.tgz
Source1482: https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-15.0.1.tgz#/stylelint-config-standard-scss-15.0.1.tgz
Source1483: https://registry.npmjs.org/stylelint-formatter-pretty/-/stylelint-formatter-pretty-4.0.1.tgz#/stylelint-formatter-pretty-4.0.1.tgz
Source1484: https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.12.0.tgz#/stylelint-scss-6.12.0.tgz
Source1485: https://registry.npmjs.org/stylelint-use-logical-spec/-/stylelint-use-logical-spec-5.0.1.tgz#/stylelint-use-logical-spec-5.0.1.tgz
Source1486: https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz#/supports-color-7.2.0.tgz
Source1487: https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz#/supports-color-8.1.1.tgz
Source1488: https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz#/supports-hyperlinks-3.2.0.tgz
Source1489: https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#/supports-preserve-symlinks-flag-1.0.0.tgz
Source1490: https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz#/svg-tags-1.0.0.tgz
Source1491: https://registry.npmjs.org/sync-child-process/-/sync-child-process-1.0.2.tgz#/sync-child-process-1.0.2.tgz
Source1492: https://registry.npmjs.org/sync-message-port/-/sync-message-port-1.1.3.tgz#/sync-message-port-1.1.3.tgz
Source1493: https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz#/tabbable-6.2.0.tgz
Source1494: https://registry.npmjs.org/table/-/table-6.9.0.tgz#/table-6.9.0.tgz
Source1495: https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz#/text-table-0.2.0.tgz
Source1496: https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-5.0.2.tgz#/throttle-debounce-5.0.2.tgz
Source1497: https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz#/tiny-glob-0.2.9.tgz
Source1498: https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz#/to-regex-range-5.0.1.tgz
Source1499: https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz#/ts-api-utils-2.1.0.tgz
Source1500: https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#/tsconfig-paths-3.15.0.tgz
Source1501: https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz#/tslib-2.8.1.tgz
Source1502: https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz#/type-check-0.4.0.tgz
Source1503: https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz#/type-fest-0.20.2.tgz
Source1504: https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#/typed-array-buffer-1.0.3.tgz
Source1505: https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz#/typed-array-byte-length-1.0.3.tgz
Source1506: https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz#/typed-array-byte-offset-1.0.4.tgz
Source1507: https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz#/typed-array-length-1.0.7.tgz
Source1508: https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz#/typescript-5.8.3.tgz
Source1509: https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz#/unbox-primitive-1.1.0.tgz
Source1510: https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz#/universalify-2.0.1.tgz
Source1511: https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz#/uri-js-4.4.1.tgz
Source1512: https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#/util-deprecate-1.0.2.tgz
Source1513: https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz#/uuid-11.1.0.tgz
Source1514: https://registry.npmjs.org/varint/-/varint-6.0.0.tgz#/varint-6.0.0.tgz
Source1515: https://registry.npmjs.org/which/-/which-1.3.1.tgz#/which-1.3.1.tgz
Source1516: https://registry.npmjs.org/which/-/which-2.0.2.tgz#/which-2.0.2.tgz
Source1517: https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz#/which-boxed-primitive-1.1.1.tgz
Source1518: https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz#/which-builtin-type-1.2.1.tgz
Source1519: https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz#/which-collection-1.0.2.tgz
Source1520: https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz#/which-typed-array-1.1.19.tgz
Source1521: https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz#/word-wrap-1.2.5.tgz
Source1522: https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#/wrap-ansi-7.0.0.tgz
Source1523: https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz#/wrap-ansi-8.1.0.tgz
Source1524: https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#/wrappy-1.0.2.tgz
Source1525: https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz#/write-file-atomic-5.0.1.tgz
Source1526: https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#/yocto-queue-0.1.0.tgz
Source1527: https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz#/yoctocolors-2.1.1.tgz

4391
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,373 @@
From b03b7eaab34890d197d8e3f536f15390dd123064 Mon Sep 17 00:00:00 2001
From: Miika Alikirri <miika.alikirri@suse.com>
Date: Mon, 28 Apr 2025 20:50:17 +0530
Subject: pkg/pacagekit: Update individual packages
Ability to select individual packages allows more control for updates.
The exact behavior is distrobution specific. For example, on tumbleweed
packagekit backend will ignore the list of packages and run "zypper dup"
instead.
The selection of individual packages is implemented by using a context
provider and a reducer to make the UI updates snappy. A more naive
approach that requires rendering the whole list of packages will freeze
up the UI for multiple seconds when there's hundreds of packages. And
tens of seconds when there are thousands of packages.
---
pkg/packagekit/updates.jsx | 239 ++++++++++++++++++++++++++++++++----
pkg/packagekit/updates.scss | 6 +-
2 files changed, 220 insertions(+), 25 deletions(-)
diff --git a/pkg/packagekit/updates.jsx b/pkg/packagekit/updates.jsx
index 80a16dda7..4fe94432a 100644
--- a/pkg/packagekit/updates.jsx
+++ b/pkg/packagekit/updates.jsx
@@ -80,6 +80,7 @@ import { debug } from './utils';
import callTracerScript from './callTracer.py';
import "./updates.scss";
+import { Checkbox } from '@patternfly/react-core';
const _ = cockpit.gettext;
@@ -93,6 +94,7 @@ const UPDATES = {
ALL: 0,
SECURITY: 1,
KPATCHES: 2,
+ SELECTED: 3,
};
function init() {
@@ -117,6 +119,196 @@ function init() {
PK_STATUS_LOG_STRINGS[PK.Enum.STATUS_SIGCHECK] = _("Verified");
}
+/**
+ * @typedef SelecetedState
+ * @type {object}
+ * @property {boolean} allSelected - Are all items selected
+ * @property {Object.<string, boolean>} selected - (Un)selected items.
+ * If allSelected is set, this refers to unselecetd
+ */
+
+/**
+ * @typedef SelecetedAction
+ * @type {object}
+ * @property {"ADD" | "REMOVE" | "ALL" | "NONE"} type - Type of reducer action
+ * @property {string=} id - Added removed item, only used by "ADD" and "REMOVE"
+ */
+
+const SelectedContext = React.createContext({selected: {}, allSelected: true});
+
+const SelectedStore = props => {
+
+ /**
+ * @argument {SelecetedState} state
+ * @argument {SelecetedAction} action
+ */
+ const reducer = (state, action) => {
+ switch (action.type) {
+ case "ADD":
+ if (action.id) {
+ if (state.allSelected)
+ delete state.selected[action.id];
+ else
+ state.selected[action.id] = true;
+ }
+ break;
+ case "REMOVE":
+ if (action.id) {
+ if (state.allSelected)
+ state.selected[action.id] = true;
+ else
+ delete state.selected[action.id];
+ }
+ break;
+ case "ALL":
+ state.allSelected = true;
+ state.selected = {};
+ break;
+ case "NONE":
+ state.allSelected = false;
+ state.selected = {};
+ break;
+ default:
+ break;
+ }
+
+ return {...state};
+ }
+
+ const [state, dispatch] = React.useReducer(reducer, {selected: {}, allSelected: true});
+
+ return <SelectedContext.Provider value={{ state, dispatch }} {...props} />;
+};
+
+/**
+ * @returns {{state: SelecetedState, dispatch: (arg: SelecetedAction) => void}}
+ */
+export const useSelected = () => React.useContext(SelectedContext);
+
+/**
+ * @param {{
+ * onClick: (state: SelecetedState) => void
+ * updates: string[],
+ * num_updates: number
+ * }} props;
+ */
+const SelectedButton = (props) => {
+ const { state, dispatch } = useSelected();
+ const {
+ onClick,
+ updates,
+ num_updates,
+ } = props;
+
+
+ const buttonText = () => {
+ if (state.allSelected && Object.keys(state.selected).length == 0 ||
+ !state.allSelected && Object.keys(state.selected).length == num_updates)
+ return _("Install all updates");
+
+ const selectLen = calculateSelected(updates, state).length;
+ return `${_("Install selected updates")} (${selectLen})`;
+ }
+
+ return (
+ <Button isDisabled={calculateSelected(updates, state).length === 0} id="install-all" variant="primary" onClick={ () => {onClick(state); dispatch({type: "ALL"})} }>
+ {buttonText()}
+ </Button>
+ );
+}
+
+const SelectedAllButton = (props) => {
+ const { state, dispatch } = useSelected();
+
+ const dispatchSelect = () => {
+ if (state.allSelected) {
+ dispatch({type: "NONE"});
+ } else {
+ dispatch({type: "ALL"});
+ }
+ }
+
+ return (
+ <Button id="install-selected" variant="secondary" onClick={ () => dispatchSelect() }>
+ {state.allSelected ? _("Unselect all") : _("Select all") }
+ </Button>
+ );
+}
+
+const SelectedSwitch = (props) => {
+ const { state, dispatch } = useSelected();
+
+ const dispatchChecked = checked => {
+ if (checked) {
+ dispatch({type: "ADD", id: props.id});
+ } else {
+ dispatch({type: "REMOVE", id: props.id});
+ }
+ }
+
+ const isChecked = () => {
+ if (state.allSelected) {
+ return !!!state.selected[props.id];
+ } else {
+ return !!state.selected[props.id];
+ }
+ }
+
+ return (
+ <Checkbox aria-label="select-update-checkbox" isChecked={isChecked()} id={`selectable-${props.id}`} onChange={(_event, checked) => dispatchChecked(checked)} />
+ );
+}
+
+/**
+ * @param {{
+* updates: string[],
+* }} props;
+*/
+const WebConsoleRestartWarn = (props) => {
+ const { state } = useSelected();
+
+ if (calculateSelected(props.updates, state).findIndex((value) => value.includes("cockpit-ws")) === -1)
+ return null;
+
+ return (
+ <Flex flex={{ default: 'inlineFlex' }} className="cockpit-update-warning">
+ <FlexItem>
+ <ExclamationTriangleIcon className="ct-icon-exclamation-triangle cockpit-update-warning-icon" />
+ <strong className="cockpit-update-warning-text">
+ <span className="pf-screen-reader">{_("Danger alert:")}</span>
+ {_("Web Console will restart")}
+ </strong>
+ </FlexItem>
+ <FlexItem>
+ <Popover aria-label="More information popover"
+ bodyContent={_("When the Web Console is restarted, you will no longer see progress information. However, the update process will continue in the background. Reconnect to continue watching the update process.")}>
+ <Button variant="link" isInline>{_("More info...")}</Button>
+ </Popover>
+ </FlexItem>
+ </Flex>
+ );
+}
+
+/**
+ * @param {string[]} allIds
+ * @param {SelecetedState} state
+ * @returns {string[]}
+ */
+function calculateSelected(allIds, state) {
+ const selected = Object.keys(state.selected);
+
+ if (!state.allSelected) {
+ return selected;
+ }
+
+ if (selected.length === 0) {
+ return allIds;
+ }
+
+ return allIds.filter((id) => !!!state.selected[id]);
+}
+
+
// parse CVEs from an arbitrary text (changelog) and return URL array
function parseCVEs(text) {
if (!text)
@@ -401,6 +593,7 @@ function updateItem(remarkable, info, pkgNames, key) {
{ title: <TableText wrapModifier="truncate">{info.version}</TableText>, props: { className: "version" } },
{ title: <TableText wrapModifier="nowrap">{type}</TableText>, props: { className: "type" } },
{ title: descriptionFirstLine, props: { className: "changelog" } },
+ { title: <SelectedSwitch id={ key }/>, props: { className: "select-update" } },
],
props: {
key,
@@ -451,6 +644,7 @@ const UpdatesList = ({ updates }) => {
{ title: _("Version"), props: { width: 15 } },
{ title: _("Severity"), props: { width: 15 } },
{ title: _("Details"), props: { width: 30 } },
+ { title: _("Select update") },
]}
rows={update_ids.map(id => updateItem(remarkable, updates[id], packageNames[id].sort((a, b) => a.name > b.name), id))} />
);
@@ -932,25 +1126,12 @@ class CardsPage extends React.Component {
id: "available-updates",
title: _("Available updates"),
actions: (<div className="pk-updates--header--actions">
- {this.props.cockpitUpdate &&
- <Flex flex={{ default: 'inlineFlex' }} className="cockpit-update-warning">
- <FlexItem>
- <ExclamationTriangleIcon className="ct-icon-exclamation-triangle cockpit-update-warning-icon" />
- <strong className="cockpit-update-warning-text">
- <span className="pf-screen-reader">{_("Danger alert:")}</span>
- {_("Web Console will restart")}
- </strong>
- </FlexItem>
- <FlexItem>
- <Popover aria-label="More information popover"
- bodyContent={_("When the Web Console is restarted, you will no longer see progress information. However, the update process will continue in the background. Reconnect to continue watching the update process.")}>
- <Button variant="link" isInline>{_("More info...")}</Button>
- </Popover>
- </FlexItem>
- </Flex>}
+ <WebConsoleRestartWarn updates={Object.keys(this.props.updates)} />
{this.props.applyKpatches}
{this.props.applySecurity}
{this.props.applyAll}
+ {this.props.applySelected}
+ {this.props.applySelectAll}
</div>),
containsList: true,
body: <UpdatesList updates={this.props.updates} />
@@ -1397,13 +1578,19 @@ class OsUpdates extends React.Component {
});
}
- applyUpdates(type) {
+ /**
+ * @param {SelecetedState=} selected
+ */
+ applyUpdates(type, selected) {
let ids = Object.keys(this.state.updates);
if (type === UPDATES.SECURITY)
ids = ids.filter(id => this.state.updates[id].severity === PK.Enum.INFO_SECURITY);
if (type === UPDATES.KPATCHES) {
ids = ids.filter(id => isKpatchPackage(this.state.updates[id].name));
}
+ if (type === UPDATES.SELECTED && selected) {
+ ids = calculateSelected(ids, selected);
+ }
PK.transaction()
.then(transactionPath => {
@@ -1429,6 +1616,8 @@ class OsUpdates extends React.Component {
let applySecurity;
let applyKpatches;
let applyAll;
+ let applySelected;
+ let applySelectAll;
/* On unregistered RHEL systems we need some heuristics: If the "main" OS repos (which provide coreutils) require
* a subscription, then point this out and don't show available updates, even if there are some auxiliary
@@ -1483,12 +1672,8 @@ class OsUpdates extends React.Component {
const num_kpatches = count_kpatch_updates(this.state.updates);
const highest_severity = find_highest_severity(this.state.updates);
- applyAll = (
- <Button id={num_updates == num_security_updates ? "install-security" : "install-all"} variant="primary" onClick={ () => this.applyUpdates(UPDATES.ALL) }>
- { num_updates == num_security_updates
- ? _("Install security updates")
- : _("Install all updates") }
- </Button>);
+ applySelected = <SelectedButton updates={Object.keys(this.state.updates)} num_updates={num_updates} onClick={ (items) => this.applyUpdates(UPDATES.SELECTED, items) }/>;
+ applySelectAll = <SelectedAllButton />;
if (num_security_updates > 0 && num_updates > num_security_updates) {
applySecurity = (
@@ -1529,6 +1714,8 @@ class OsUpdates extends React.Component {
<CardsPage handleRefresh={this.handleRefresh}
applySecurity={applySecurity}
applyAll={applyAll}
+ applySelected={applySelected}
+ applySelectAll={applySelectAll}
applyKpatches={applyKpatches}
highestSeverity={highest_severity}
onValueChanged={this.onValueChanged}
@@ -1717,5 +1904,9 @@ document.addEventListener("DOMContentLoaded", () => {
document.title = cockpit.gettext(document.title);
init();
const root = createRoot(document.getElementById('app'));
- root.render(<OsUpdates />);
+ root.render(
+ <SelectedStore>
+ <OsUpdates />
+ </SelectedStore>
+ );
});
diff --git a/pkg/packagekit/updates.scss b/pkg/packagekit/updates.scss
index 05494fe85..6b2c80035 100644
--- a/pkg/packagekit/updates.scss
+++ b/pkg/packagekit/updates.scss
@@ -68,7 +68,7 @@
}
&, p {
- max-inline-size: 60vw;
+ max-inline-size: 54vw;
margin-block-end: 0; // counter-act <Markdown>
overflow: hidden;
text-overflow: ellipsis;
@@ -272,3 +272,7 @@ table.header-buttons {
.ct-info-circle {
color: var(--pf-t--global--icon--color--status--info--default);
}
+
+td.select-update {
+ min-width: 8vw;
+}
\ No newline at end of file
--
2.49.0

108
remove_rh_links.patch Normal file
View File

@@ -0,0 +1,108 @@
diff --git a/pkg/networkmanager/bond.jsx b/pkg/networkmanager/bond.jsx
index b54b1db..062cd1d 100644
--- a/pkg/networkmanager/bond.jsx
+++ b/pkg/networkmanager/bond.jsx
@@ -151,16 +151,6 @@ export const BondDialog = ({ connection, dev, settings }) => {
{_("A network bond combines multiple network interfaces into one logical interface with higher throughput or redundancy.")}
</div>
}
- footerContent={
- <Button component='a'
- rel="noopener noreferrer" target="_blank"
- variant='link'
- isInline
- icon={<ExternalLinkSquareAltIcon />} iconPosition="right"
- href="https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/configuring_and_managing_networking/configuring-network-bonding_configuring-and-managing-networking#proc_configuring-a-network-bond-by-using-the-rhel-web-console_configuring-network-bonding">
- {_("Learn more")}
- </Button>
- }
>
<Button id="bond-help-popup-button" variant="plain" aria-label="Help">
<HelpIcon />
diff --git a/pkg/systemd/hwinfo.jsx b/pkg/systemd/hwinfo.jsx
index d2d2d9b..af0bedc 100644
--- a/pkg/systemd/hwinfo.jsx
+++ b/pkg/systemd/hwinfo.jsx
@@ -205,11 +205,6 @@ const CPUSecurityMitigationsDialog = () => {
<DataListCell key="primary content">
<span>
<div className='nosmt-heading'>{ _("Disable simultaneous multithreading") } (nosmt)</div>
- <small className='nosmt-read-more-link'>
- <a href="https://access.redhat.com/security/vulnerabilities/L1TF" target="_blank" rel="noopener noreferrer">
- <ExternalLinkAltIcon /> { _("Read more...") }
- </a>
- </small>
</span>
</DataListCell>,
]}
diff --git a/pkg/systemd/overview-cards/cryptoPolicies.jsx b/pkg/systemd/overview-cards/cryptoPolicies.jsx
index fa57de9..d4dd3be 100644
--- a/pkg/systemd/overview-cards/cryptoPolicies.jsx
+++ b/pkg/systemd/overview-cards/cryptoPolicies.jsx
@@ -143,7 +143,7 @@ const CryptoPolicyDialog = ({
variant='link'
isInline
icon={<ExternalLinkSquareAltIcon />} iconPosition="right"
- href="https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/security_hardening/using-the-system-wide-cryptographic-policies_security-hardening">
+ href="https://documentation.suse.com/sle-micro/6.0/html/Micro-selinux/selinux-article.html">
{_("Learn more")}
</Button>
</Flex>),
@@ -184,16 +184,6 @@ const CryptoPolicyDialog = ({
{_("Cryptographic Policies is a system component that configures the core cryptographic subsystems, covering the TLS, IPSec, SSH, DNSSec, and Kerberos protocols.")}
</div>
}
- footerContent={
- <Button component='a'
- rel="noopener noreferrer" target="_blank"
- variant='link'
- isInline
- icon={<ExternalLinkSquareAltIcon />} iconPosition="right"
- href="https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/security_hardening/using-the-system-wide-cryptographic-policies_security-hardening">
- {_("Learn more")}
- </Button>
- }
>
<Button variant="plain" aria-label={_("Help")}>
<HelpIcon />
diff --git a/pkg/systemd/overview-cards/tuned-dialog.jsx b/pkg/systemd/overview-cards/tuned-dialog.jsx
index 38420ca..cd7e2a3 100644
--- a/pkg/systemd/overview-cards/tuned-dialog.jsx
+++ b/pkg/systemd/overview-cards/tuned-dialog.jsx
@@ -278,36 +278,10 @@ const TunedDialog = ({
};
}, [tunedService]);
- const help = (
- <Popover
- id="tuned-help"
- bodyContent={
- <div>
- {_("Tuned is a service that monitors your system and optimizes the performance under certain workloads. The core of Tuned are profiles, which tune your system for different use cases.")}
- </div>
- }
- footerContent={
- <Button component='a'
- rel="noopener noreferrer" target="_blank"
- variant='link'
- isInline
- icon={<ExternalLinkSquareAltIcon />} iconPosition="right"
- href="https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/monitoring_and_managing_system_status_and_performance/index">
- {_("Learn more")}
- </Button>
- }
- >
- <Button variant="plain" aria-label={_("Help")}>
- <HelpIcon />
- </Button>
- </Popover>
- );
-
return (
<Modal position="top" variant="medium"
className="ct-m-stretch-body"
isOpen
- help={help}
onClose={() => dialogResult.resolve()}
title={_("Change performance profile")}
footer={

View File

@@ -1,6 +1,8 @@
--- selinux_bak/cockpit.fc 2024-02-28 13:34:16.748028079 +0100
+++ selinux/cockpit.fc 2024-02-28 13:35:10.425549063 +0100
@@ -2,11 +2,24 @@
diff --git a/selinux/cockpit.fc b/selinux/cockpit.fc
index 9fd56a0..17f420f 100644
--- a/selinux/cockpit.fc
+++ b/selinux/cockpit.fc
@@ -2,10 +2,21 @@
/etc/systemd/system/cockpit.* -- gen_context(system_u:object_r:cockpit_unit_file_t,s0)
/usr/libexec/cockpit-ws -- gen_context(system_u:object_r:cockpit_ws_exec_t,s0)
@@ -10,18 +12,15 @@
/usr/libexec/cockpit-wsinstance-factory -- gen_context(system_u:object_r:cockpit_ws_exec_t,s0)
+/usr/lib/cockpit-wsinstance-factory -- gen_context(system_u:object_r:cockpit_ws_exec_t,s0)
+
+# missing libexec transition on SLE Micro
+/usr/lib/cockpit-askpass -- gen_context(system_u:object_r:bin_t,s0)
+/usr/lib/cockpit-certificate-ensure -- gen_context(system_u:object_r:bin_t,s0)
+/usr/lib/cockpit-certificate-helper -- gen_context(system_u:object_r:bin_t,s0)
+/usr/lib/cockpit-client -- gen_context(system_u:object_r:bin_t,s0)
+/usr/lib/cockpit-desktop -- gen_context(system_u:object_r:bin_t,s0)
+/usr/lib/cockpit-pcp -- gen_context(system_u:object_r:bin_t,s0)
+# missing libexec transition on SLE Micro
+/usr/lib/cockpit-askpass -- gen_context(system_u:object_r:bin_t,s0)
+/usr/lib/cockpit-certificate-ensure -- gen_context(system_u:object_r:bin_t,s0)
+/usr/lib/cockpit-certificate-helper -- gen_context(system_u:object_r:bin_t,s0)
+/usr/lib/cockpit-client -- gen_context(system_u:object_r:bin_t,s0)
+/usr/lib/cockpit-desktop -- gen_context(system_u:object_r:bin_t,s0)
/usr/libexec/cockpit-session -- gen_context(system_u:object_r:cockpit_session_exec_t,s0)
+/usr/lib/cockpit-session -- gen_context(system_u:object_r:cockpit_session_exec_t,s0)
/usr/libexec/cockpit-ssh -- gen_context(system_u:object_r:cockpit_session_exec_t,s0)
+/usr/lib/cockpit-ssh -- gen_context(system_u:object_r:cockpit_session_exec_t,s0)
/usr/share/cockpit/motd/update-motd -- gen_context(system_u:object_r:cockpit_ws_exec_t,s0)
/usr/share/cockpit/issue/update-issue -- gen_context(system_u:object_r:shell_exec_t,s0)

View File

@@ -1,40 +1,38 @@
From b95f55365f3b221be032b1008bb8032856e31a12 Mon Sep 17 00:00:00 2001
From 29264680d65a0661d81eb5c973bdef3cd5eccc0b Mon Sep 17 00:00:00 2001
From: Jacek Tomasiak <jacek.tomasiak@gmail.com>
Date: Tue, 15 Mar 2022 23:57:12 +0100
Date: Mon, 28 Apr 2025 20:33:01 +0530
Subject: [PATCH] Add branding for SLE Micro
This change requires distribution-logos-SLE and wallpaper-branding-SLE
to be available during build and installed on the target system to work
properly.
---
Makefile.am | 1 +
src/branding/sle-micro/Makefile.am | 11 ++++
src/branding/sle-micro/branding.css | 87 ++++++++++++++++++++++++++
Makefile.am | 1 +
src/branding/suse/Makefile.am | 11 +++++
src/branding/suse/branding.css | 87 ++++++++++++++++++++++++++++++++++
3 files changed, 99 insertions(+)
create mode 100644 src/branding/sle-micro/Makefile.am
create mode 100644 src/branding/sle-micro/branding.css
create mode 100644 src/branding/suse/Makefile.am
create mode 100644 src/branding/suse/branding.css
Index: cockpit-309/Makefile.am
===================================================================
--- cockpit-309.orig/Makefile.am
+++ cockpit-309/Makefile.am
@@ -175,6 +175,7 @@ include src/branding/default/Makefile.am
diff --git a/Makefile.am b/Makefile.am
index 83f1ee7a7..1198d191e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -167,6 +167,7 @@ include src/branding/debian/Makefile.am
include src/branding/default/Makefile.am
include src/branding/fedora/Makefile.am
include src/branding/kubernetes/Makefile.am
include src/branding/opensuse/Makefile.am
+include src/branding/sle-micro/Makefile.am
include src/branding/registry/Makefile.am
+include src/branding/suse/Makefile.am
include src/branding/rhel/Makefile.am
include src/branding/scientific/Makefile.am
Index: cockpit-309/src/branding/sle-micro/Makefile.am
===================================================================
include src/branding/ubuntu/Makefile.am
include src/client/Makefile.am
diff --git a/src/branding/suse/Makefile.am b/src/branding/suse/Makefile.am
new file mode 100644
index 000000000..4a1e7ab72
--- /dev/null
+++ cockpit-309/src/branding/sle-micro/Makefile.am
+++ b/src/branding/suse/Makefile.am
@@ -0,0 +1,11 @@
+slemicrobrandingdir = $(datadir)/cockpit/branding/sle-micro
+slemicrobrandingdir = $(datadir)/cockpit/branding/suse
+
+dist_slemicrobranding_DATA = \
+ src/branding/sle-micro/branding.css \
+ src/branding/suse/branding.css \
+ $(NULL)
+
+install-data-hook::
@@ -42,11 +40,13 @@ Index: cockpit-309/src/branding/sle-micro/Makefile.am
+ ln -sf /usr/share/pixmaps/distribution-logos/square-hicolor.svg $(DESTDIR)$(slemicrobrandingdir)/square-hicolor.svg
+ ln -sf /usr/share/pixmaps/distribution-logos/favicon.ico $(DESTDIR)$(slemicrobrandingdir)/favicon.ico
+ ln -sf /usr/share/pixmaps/distribution-logos/apple-touch-icon.png $(DESTDIR)$(slemicrobrandingdir)/apple-touch-icon.png
Index: cockpit-309/src/branding/sle-micro/branding.css
===================================================================
\ No newline at end of file
diff --git a/src/branding/suse/branding.css b/src/branding/suse/branding.css
new file mode 100644
index 000000000..baea6f560
--- /dev/null
+++ cockpit-309/src/branding/sle-micro/branding.css
@@ -0,0 +1,87 @@
+++ b/src/branding/suse/branding.css
@@ -0,0 +1,82 @@
+/* Extra overrides */
+:root {
+ --eos-bc-green-500: #30ba78;
@@ -61,21 +61,17 @@ Index: cockpit-309/src/branding/sle-micro/branding.css
+ content: "${PRETTY_NAME}";
+}
+
+.login-pf .container {
+ background-color: rgba(255, 255, 255);
+}
+
+#option-group svg polygon {
+ fill: var(--eos-bc-text);
+}
+
+/* Nav & sidebar overwrites */
+.navbar-pf {
+ background: var(--eos-bc-pine-500);
+ background: var(--eos-bc-pine-500);
+}
+
+.navbar-pf-vertical {
+ border-top: none;
+ border-top: none;
+}
+
+
@@ -88,18 +84,18 @@ Index: cockpit-309/src/branding/sle-micro/branding.css
+
+body.login-pf {
+ background-color: var(--eos-bc-pine-500);
+ color: var(--eos-bc-text);
+}
+
+/* Only use background image on desktops */
+@media(min-width: 1024px) {
+ body.login-pf {
+ background-image: url("default-1920x1200.png");
+ background-image: url("default-1920x1200.png") !important;
+ background-repeat: no-repeat;
+ background-position: 100% 0 !important;
+ background-size: cover;
+ }
+}
+
+/* Hide badge on desktops (already included in background) */
+@media(max-width: 1023px) {
+ #badge {
@@ -118,6 +114,7 @@ Index: cockpit-309/src/branding/sle-micro/branding.css
+ font-size: 2em;
+ white-space: nowrap;
+}
+
+/* Switch to small font faster to not clip long name */
+@media(max-width: 560px) {
+ #brand {
@@ -132,5 +129,6 @@ Index: cockpit-309/src/branding/sle-micro/branding.css
+#index-brand:before {
+ content: "${PRETTY_NAME}";
+}
+
+
--
2.49.0

View File

@@ -1,21 +1,22 @@
From adadbac839dc6d549a3a9b75ae1f8c422e82fa7c Mon Sep 17 00:00:00 2001
From: Luna <luna.dragon@suse.com>
Date: Thu, 25 Jan 2024 10:06:03 +0530
Subject: [PATCH] replace with suse docs and move docs with out eqiv to docs-rh
From 3b062b0dcab55b3ab224ab8873dfdcfe79d68f49 Mon Sep 17 00:00:00 2001
From: Luna D Dragon <luna.dragon@suse.com>
Date: Mon, 25 Nov 2024 11:22:03 +0530
Subject: [PATCH] replace with suse docs and move docs without eqiv to docs-rh
---
node_modules | 2 +-
pkg/kdump/manifest.json | 2 +-
pkg/networkmanager/manifest.json | 19 +++++++++++--------
pkg/shell/manifest.json | 4 ++--
pkg/storaged/manifest.json | 12 +++++++-----
pkg/packagekit/manifest.json | 2 +-
pkg/shell/manifest.json | 2 +-
pkg/storaged/manifest.json | 10 ++++++----
pkg/systemd/manifest.json | 6 +++---
pkg/users/manifest.json | 2 +-
6 files changed, 25 insertions(+), 20 deletions(-)
7 files changed, 24 insertions(+), 19 deletions(-)
Index: cockpit/pkg/kdump/manifest.json
===================================================================
--- cockpit.orig/pkg/kdump/manifest.json
+++ cockpit/pkg/kdump/manifest.json
diff --git a/pkg/kdump/manifest.json b/pkg/kdump/manifest.json
index 323d6ebc9..7d625b1f7 100644
--- a/pkg/kdump/manifest.json
+++ b/pkg/kdump/manifest.json
@@ -5,7 +5,7 @@
"tools": {
"index": {
@@ -24,43 +25,52 @@ Index: cockpit/pkg/kdump/manifest.json
+ "docs-rh": [
{
"label": "Configuring kdump",
"url": "https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/managing_systems_using_the_rhel_9_web_console/configuring-kdump-in-the-web-console_system-management-using-the-rhel-9-web-console"
Index: cockpit/pkg/networkmanager/manifest.json
===================================================================
--- cockpit.orig/pkg/networkmanager/manifest.json
+++ cockpit/pkg/networkmanager/manifest.json
@@ -10,23 +10,19 @@
"url": "https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/managing_monitoring_and_updating_the_kernel/configuring-kdump-in-the-web-console_managing-monitoring-and-updating-the-kernel"
diff --git a/pkg/networkmanager/manifest.json b/pkg/networkmanager/manifest.json
index fa9b2799c..cfa237c2b 100644
--- a/pkg/networkmanager/manifest.json
+++ b/pkg/networkmanager/manifest.json
@@ -10,25 +10,28 @@
"docs": [
{
"label": "Managing networking bonds",
- "url": "https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/managing_systems_using_the_rhel_9_web_console/configuring-network-bonds-using-the-web-console_system-management-using-the-rhel-9-web-console"
- "url": "https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/configuring_and_managing_networking/configuring-network-bonding_configuring-and-managing-networking#proc_configuring-a-network-bond-by-using-the-rhel-web-console_configuring-network-bonding"
- },
- {
- "label": "Managing networking teams",
- "url": "https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/managing_systems_using_the_rhel_9_web_console/configuring-network-teams-using-the-web-console_system-management-using-the-rhel-9-web-console"
+ "url": "https://documentation.suse.com/smart/systems-management/html/cockpit-slemicro/index.html#cockpit-managing-bonds"
- "url": "https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/configuring_and_managing_networking/configuring-network-teaming_configuring-and-managing-networking#proc_configuring-a-network-team-by-using-the-rhel-web-console_configuring-network-teaming"
+ "url": "https://documentation.suse.com/sle-micro/6.0/html/Micro-6.0-cockpit/index.html#cockpit-managing-bonds"
},
+
{
"label": "Managing networking bridges",
- "url": "https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/managing_systems_using_the_rhel_9_web_console/configuring-network-bridges-in-the-web-console_system-management-using-the-rhel-9-web-console"
+ "url": "https://documentation.suse.com/smart/systems-management/html/cockpit-slemicro/index.html#task-managing-bridges"
- "url": "https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/configuring_and_managing_networking/configuring-a-network-bridge_configuring-and-managing-networking#proc_configuring-a-network-bridge-by-using-the-rhel-web-console_configuring-a-network-bridge"
+ "url": "https://documentation.suse.com/sle-micro/6.0/html/Micro-6.0-cockpit/index.html#task-managing-bridges"
},
{
"label": "Managing VLANs",
- "url": "https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/managing_systems_using_the_rhel_9_web_console/configuring-vlans-in-the-web-console_system-management-using-the-rhel-9-web-console"
+ "url": "https://documentation.suse.com/smart/systems-management/html/cockpit-slemicro/index.html#task-managing-vlans"
- "url": "https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/configuring_and_managing_networking/configuring-vlan-tagging_configuring-and-managing-networking#proc_configuring-vlan-tagging-by-using-the-rhel-web-console_configuring-vlan-tagging"
+ "url": "https://documentation.suse.com/sle-micro/6.0/html/Micro-6.0-cockpit/index.html#task-managing-vlans"
},
{
"label": "Managing firewall",
- "url": "https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/managing_systems_using_the_rhel_9_web_console/managing_firewall_using_the_web_console"
+ "url": "https://documentation.suse.com/smart/systems-management/html/cockpit-slemicro/index.html#task-managing-firewall-cockpit"
- "url": "https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/configuring_firewalls_and_packet_filters/using-and-configuring-firewalld_firewall-packet-filters#enabling-services-on-firewall-using-the-web-console_controlling-network-traffic-using-firewalld"
+ "url": "https://documentation.suse.com/sle-micro/6.0/html/Micro-6.0-cockpit/index.html#task-managing-firewall-cockpit"
}
],
+ "docs-rh": [
+ {
+ "label": "Managing networking teams",
+ "url": "https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/configuring_and_managing_networking/configuring-network-teaming_configuring-and-managing-networking#proc_configuring-a-network-team-by-using-the-rhel-web-console_configuring-network-teaming"
+ }
+ ],
"keywords": [
Index: cockpit/pkg/packagekit/manifest.json
===================================================================
--- cockpit.orig/pkg/packagekit/manifest.json
+++ cockpit/pkg/packagekit/manifest.json
{
"matches": ["network", "interface", "bridge", "vlan", "bond", "team", "port", "mac", "ipv4", "ipv6"]
diff --git a/pkg/packagekit/manifest.json b/pkg/packagekit/manifest.json
index 911380a8a..1a2de58cc 100644
--- a/pkg/packagekit/manifest.json
+++ b/pkg/packagekit/manifest.json
@@ -9,7 +9,7 @@
"tools": {
"index": {
@@ -69,49 +79,62 @@ Index: cockpit/pkg/packagekit/manifest.json
+ "docs-rh": [
{
"label": "Managing software updates",
"url": "https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/managing_systems_using_the_rhel_9_web_console/managing-software-updates-in-the-web-console_system-management-using-the-rhel-9-web-console"
Index: cockpit/pkg/storaged/manifest.json
===================================================================
--- cockpit.orig/pkg/storaged/manifest.json
+++ cockpit/pkg/storaged/manifest.json
"url": "https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/managing_systems_using_the_rhel_9_web_console/managing-software-updates-in-the-web-console_system-management-using-the-rhel-9-web-console"
diff --git a/pkg/shell/manifest.json b/pkg/shell/manifest.json
index 9160c2773..29082412d 100644
--- a/pkg/shell/manifest.json
+++ b/pkg/shell/manifest.json
@@ -26,7 +26,7 @@
"zh-cn": "中文(中国)",
"zh-tw": "中文(台灣)"
},
- "docs": [
+ "docs-rh": [
{
"label": "Web Console",
"url": "https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/managing_systems_using_the_rhel_9_web_console/index"
diff --git a/pkg/storaged/manifest.json b/pkg/storaged/manifest.json
index fac446117..27977253d 100644
--- a/pkg/storaged/manifest.json
+++ b/pkg/storaged/manifest.json
@@ -14,20 +14,22 @@
"docs": [
{
"label": "Managing partitions",
- "url": "https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/managing_systems_using_the_rhel_9_web_console/managing-partitions-using-the-web-console_system-management-using-the-rhel-9-web-console"
+ "url": "https://documentation.suse.com/smart/systems-management/html/cockpit-slemicro/index.html#glue-cockpit-managing-filesystems"
- "url": "https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/managing_file_systems/managing-partitions-using-the-web-console_managing-file-systems"
+ "url": "https://documentation.suse.com/sle-micro/6.0/html/Micro-6.0-cockpit/index.html#glue-cockpit-managing-filesystems"
},
{
"label": "Managing NFS mounts",
- "url": "https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/managing_systems_using_the_rhel_9_web_console/managing-nfs-mounts-in-the-web-console_system-management-using-the-rhel-9-web-console"
+ "url": "https://documentation.suse.com/smart/systems-management/html/cockpit-slemicro/index.html#task-managing-NFS-mounts"
- "url": "https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/managing_file_systems/mounting-nfs-shares_managing-file-systems#connecting-nfs-mounts-in-the-web-console_mounting-nfs-shares"
+ "url": "https://documentation.suse.com/sle-micro/6.0/html/Micro-6.0-cockpit/index.html#task-managing-NFS-mounts"
},
{
"label": "Managing RAIDs",
- "url": "https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/managing_systems_using_the_rhel_9_web_console/managing-redundant-arrays-of-independent-disks-in-the-web-console_system-management-using-the-rhel-9-web-console"
+ "url": "https://documentation.suse.com/smart/systems-management/html/cockpit-slemicro/index.html#id-1.7.6"
- "url": "https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/managing_storage_devices/managing-raid_managing-storage-devices#creating-raid-in-the-web-console_managing-raid"
+ "url": "https://documentation.suse.com/sle-micro/6.0/html/Micro-6.0-cockpit/index.html#id-1.7.6"
},
{
"label": "Managing LVMs",
- "url": "https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/managing_systems_using_the_rhel_9_web_console/using-the-web-console-for-configuring-lvm-logical-volumes_system-management-using-the-rhel-8-web-console"
- "url": "https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/configuring_and_managing_logical_volumes/index"
- },
+ "url": "https://documentation.suse.com/smart/systems-management/html/cockpit-slemicro/index.html#id-1.7.7"
+ "url": "https://documentation.suse.com/sle-micro/6.0/html/Micro-6.0-cockpit/index.html#id-1.7.7"
+ }
+ ],
+ "docs-rh": [
+ ],
+ "docs-rh": [
{
"label": "Managing physical drives",
"url": "https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/managing_systems_using_the_rhel_9_web_console/using-the-web-console-for-changing-physical-drives-in-volume-groups_system-management-using-the-rhel-8-web-console"
Index: cockpit/pkg/systemd/manifest.json
===================================================================
--- cockpit.orig/pkg/systemd/manifest.json
+++ cockpit/pkg/systemd/manifest.json
"url": "https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/managing_storage_devices/index"
diff --git a/pkg/systemd/manifest.json b/pkg/systemd/manifest.json
index d4b59ab0d..4bcf70e65 100644
--- a/pkg/systemd/manifest.json
+++ b/pkg/systemd/manifest.json
@@ -12,7 +12,7 @@
"docs": [
{
"label": "Configuring system settings",
- "url": "https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/managing_systems_using_the_rhel_9_web_console/getting-started-with-the-rhel-9-web-console_system-management-using-the-rhel-9-web-console"
+ "url": "https://documentation.suse.com/smart/systems-management/html/cockpit-slemicro/index.html#cockpit-configuring-servers"
- "url": "https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/managing_systems_using_the_rhel_9_web_console/index"
+ "url": "https://documentation.suse.com/sle-micro/6.0/html/Micro-6.0-cockpit/index.html#cockpit-configuring-servers"
}
],
"keywords": [
@@ -119,8 +142,8 @@ Index: cockpit/pkg/systemd/manifest.json
"docs": [
{
"label": "Managing services",
- "url": "https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/managing_systems_using_the_rhel_9_web_console/managing-services-in-the-web-console_system-management-using-the-rhel-9-web-console"
+ "url": "https://documentation.suse.com/smart/systems-management/html/cockpit-slemicro/index.html#glue-services-management"
- "url": "https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/managing_systems_using_the_rhel_9_web_console/index"
+ "url": "https://documentation.suse.com/sle-micro/6.0/html/Micro-6.0-cockpit/index.html#glue-services-management"
}
],
"keywords": [
@@ -128,41 +151,24 @@ Index: cockpit/pkg/systemd/manifest.json
"docs": [
{
"label": "Reviewing logs",
- "url": "https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/managing_systems_using_the_rhel_9_web_console/reviewing-logs_system-management-using-the-rhel-9-web-console"
+ "url": "https://documentation.suse.com/smart/systems-management/html/cockpit-slemicro/index.html#cockpit-filtering-logs"
- "url": "https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/configuring_basic_system_settings/assembly_troubleshooting-problems-using-log-files_configuring-basic-system-settings#reviewing-logs-in-the-web-console_reviewing-logs"
+ "url": "https://documentation.suse.com/sle-micro/6.0/html/Micro-6.0-cockpit/index.html#cockpit-filtering-logs"
}
],
"keywords": [
Index: cockpit/pkg/users/manifest.json
===================================================================
--- cockpit.orig/pkg/users/manifest.json
+++ cockpit/pkg/users/manifest.json
diff --git a/pkg/users/manifest.json b/pkg/users/manifest.json
index 1f181afc5..b176b14d0 100644
--- a/pkg/users/manifest.json
+++ b/pkg/users/manifest.json
@@ -6,7 +6,7 @@
"docs": [
{
"label": "Managing user accounts",
- "url": "https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/managing_systems_using_the_rhel_9_web_console/managing-user-accounts-in-the-web-console_system-management-using-the-rhel-9-web-console"
+ "url": "https://documentation.suse.com/smart/systems-management/html/cockpit-slemicro/index.html#glue-managing-users"
- "url": "https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/configuring_basic_system_settings/managing-users-and-groups_configuring-basic-system-settings#managing-user-accounts-in-the-web-console_managing-users-and-groups"
+ "url": "https://documentation.suse.com/sle-micro/6.0/html/Micro-6.0-cockpit/index.html#glue-managing-users"
}
],
"keywords": [
Index: cockpit/pkg/shell/manifest.json
===================================================================
--- cockpit.orig/pkg/shell/manifest.json
+++ cockpit/pkg/shell/manifest.json
@@ -25,7 +25,7 @@
"uk-ua": "Українська",
"zh-cn": "中文(中国)"
},
- "docs": [
+ "docs-rh": [
{
"label": "Web Console",
"url": "https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/managing_systems_using_the_rhel_9_web_console/index"
@@ -55,4 +55,4 @@
]
}
]
-}
+}
\ No newline at end of file
--
2.47.0