mirror of
https://gh-proxy.org/https://github.com/klinsmaya/multica.git
synced 2026-11-08 01:16:45 +08:00
MUL-8149: patch Node 22.23.4 in web image, Electron 39→44 (#9416)
* fix(web): pin Dockerfile.web to node:22.23.4-alpine for Oct 2026 Node security release (MUL-8149) Co-authored-by: multica-agent <[email protected]> * fix(desktop): upgrade Electron 39 (EOL) to 44.9.3 (MUL-8149) Electron 39 is end-of-life and will not receive the 2026-10-21 Node.js security fixes. 44.x is a supported line (Node 24.22.0, Chromium 152). clipboard.writeText now returns a Promise in Electron 44; handle the rejection in the context menu so it can't become an unhandled rejection. Co-authored-by: multica-agent <[email protected]> * fix(desktop): skip auto-update on macOS 12 and older (MUL-8149) Electron 44 requires macOS 13 (Darwin 22), but electron-builder does not publish minimumSystemVersion in latest-mac.yml, so electron-updater would download and install a build that cannot launch on macOS 12, replacing a working app. Disable background checks/downloads on those hosts and make a manual check report the OS requirement instead. Co-authored-by: multica-agent <[email protected]> * fix(desktop): publish macOS update floor in update metadata (MUL-8149) Review feedback: installed macOS 12 clients run their old updater code, so a runtime check in the new build can never stop them from downloading an Electron 44 build that cannot launch. The guard has to live in the published latest-mac.yml / latest-x64-mac.yml. - beforePack hook (scripts/mac-update-floor.cjs) adds minimumSystemVersion: 22.0.0 (Darwin kernel, = macOS 13) to the mac releaseInfo that electron-builder spreads into update info. The config schema rejects the key, so it is set on the packager after validation; the hook throws if those internals move. - mac.minimumSystemVersion: 13.0.0 for every mac bundle; drop the stale Intel-only 12.0.0 override in package.mjs. - Regression test runs electron-updater 6.8.3's real checkIfUpdateSupported against the published shape: Darwin 21 skips, 22/25 update; no floor or a 13.0.0 floor would let Darwin 21 through. - Revert the in-app updater.ts guard: it is unreachable on macOS 12. Co-authored-by: multica-agent <[email protected]> --------- Co-authored-by: Multica Eve <[email protected]> Co-authored-by: multica-agent <[email protected]>
This commit is contained in:
co-authored by
multica-agent
Multica Eve
parent
ce5a2ba472
commit
ef2d2b3e48
+8
-4
@@ -1,5 +1,9 @@
|
||||
# --- Dependencies ---
|
||||
FROM node:22-alpine AS deps
|
||||
# Node is pinned to an exact patch so a stale cached `node:22-alpine` layer can
|
||||
# never ship a runtime missing a security release. 22.23.4 fixes the
|
||||
# 2026-10-21 Node.js security release (CVE-2026-111497, CVE-2026-106069,
|
||||
# CVE-2026-105482, ...). Bump all three stages together.
|
||||
FROM node:22.23.4-alpine AS deps
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
@@ -22,7 +26,7 @@ RUN corepack enable && \
|
||||
RUN pnpm install --frozen-lockfile
|
||||
|
||||
# --- Build ---
|
||||
FROM node:22-alpine AS builder
|
||||
FROM node:22.23.4-alpine AS builder
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
@@ -52,13 +56,13 @@ ENV STANDALONE=true
|
||||
RUN pnpm --filter @multica/web build
|
||||
|
||||
# --- Runtime ---
|
||||
FROM node:22-alpine AS runner
|
||||
FROM node:22.23.4-alpine AS runner
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Alpine openssl security fixes (CVE-2026-63073, CVE-2026-75803).
|
||||
# Floor pins the fix so the build fails instead of silently shipping the CVEs.
|
||||
# Remove once node:22-alpine includes libssl3 >= 3.5.8-r0.
|
||||
# Remove once the pinned node image includes libssl3 >= 3.5.8-r0.
|
||||
RUN apk add --no-cache "libcrypto3>=3.5.8-r0" "libssl3>=3.5.8-r0"
|
||||
|
||||
ENV NODE_ENV=production
|
||||
|
||||
@@ -35,7 +35,13 @@ protocols:
|
||||
- multica
|
||||
asarUnpack:
|
||||
- resources/**
|
||||
# Publishes `minimumSystemVersion` (Darwin kernel floor) into latest-mac.yml /
|
||||
# latest-x64-mac.yml so installed macOS 12 clients skip updates they cannot
|
||||
# launch. See scripts/mac-update-floor.cjs for why this can't be plain config.
|
||||
beforePack: ./scripts/mac-update-floor.cjs
|
||||
mac:
|
||||
# Electron 44 requires macOS 13 Ventura; declare it on every mac bundle.
|
||||
minimumSystemVersion: "13.0.0"
|
||||
entitlementsInherit: build/entitlements.mac.plist
|
||||
target:
|
||||
- dmg
|
||||
|
||||
@@ -5,7 +5,7 @@ export default [
|
||||
...reactConfig,
|
||||
{ ignores: ["out/", "dist/"] },
|
||||
{
|
||||
files: ["scripts/**/*.{mjs,js}"],
|
||||
files: ["scripts/**/*.{mjs,js,cjs}"],
|
||||
languageOptions: {
|
||||
globals: { ...globals.node },
|
||||
},
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
"@types/react": "catalog:",
|
||||
"@types/react-dom": "catalog:",
|
||||
"@vitejs/plugin-react": "^5.1.1",
|
||||
"electron": "^39.2.6",
|
||||
"electron": "^44.9.3",
|
||||
"electron-builder": "^26.0.12",
|
||||
"electron-vite": "^5.0.0",
|
||||
"globals": "^16.0.0",
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
// electron-builder `beforePack` hook: publish a macOS floor in the update
|
||||
// metadata (latest-mac.yml / latest-x64-mac.yml).
|
||||
//
|
||||
// Why this exists: Electron 44+ cannot launch on macOS 12. Installed clients
|
||||
// decide whether to download an update with the code they ALREADY run, so a
|
||||
// runtime check inside the new app can never protect a macOS 12 user — only
|
||||
// the published metadata can. electron-updater skips an update when
|
||||
// `os.release()` (the Darwin kernel version, not the marketing version) is
|
||||
// below `minimumSystemVersion`, but electron-builder 26 never writes that field
|
||||
// and its config schema rejects it under `mac.releaseInfo`.
|
||||
//
|
||||
// electron-builder spreads `packager.platformSpecificBuildOptions.releaseInfo`
|
||||
// into every update-info file it generates for that platform, and reads it
|
||||
// after config validation. Setting it here, before packing, puts the floor
|
||||
// into both macOS channels before anything is uploaded.
|
||||
//
|
||||
// Darwin 22 = macOS 13 Ventura. Do NOT write "13.0.0": it is compared against
|
||||
// the kernel version, so Darwin 21 (macOS 12) would pass a 13.0.0 floor.
|
||||
const MAC_UPDATE_MIN_DARWIN_VERSION = "22.0.0";
|
||||
|
||||
function applyMacUpdateFloor(context) {
|
||||
if (context.electronPlatformName !== "darwin") return;
|
||||
const options = context.packager && context.packager.platformSpecificBuildOptions;
|
||||
if (options == null || typeof options !== "object") {
|
||||
// Fail the build rather than silently publishing metadata without the floor.
|
||||
throw new Error(
|
||||
"[mac-update-floor] packager.platformSpecificBuildOptions is unavailable; " +
|
||||
"electron-builder internals changed — cannot publish minimumSystemVersion",
|
||||
);
|
||||
}
|
||||
options.releaseInfo = {
|
||||
...(options.releaseInfo || {}),
|
||||
minimumSystemVersion: MAC_UPDATE_MIN_DARWIN_VERSION,
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = applyMacUpdateFloor;
|
||||
module.exports.default = applyMacUpdateFloor;
|
||||
module.exports.applyMacUpdateFloor = applyMacUpdateFloor;
|
||||
module.exports.MAC_UPDATE_MIN_DARWIN_VERSION = MAC_UPDATE_MIN_DARWIN_VERSION;
|
||||
@@ -0,0 +1,116 @@
|
||||
// @vitest-environment node
|
||||
import { createRequire } from "node:module";
|
||||
import { readFileSync } from "node:fs";
|
||||
import { resolve } from "node:path";
|
||||
import { afterEach, describe, expect, it, vi } from "vitest";
|
||||
|
||||
const require = createRequire(import.meta.url);
|
||||
const desktopRoot = resolve(import.meta.dirname, "..");
|
||||
const {
|
||||
applyMacUpdateFloor,
|
||||
MAC_UPDATE_MIN_DARWIN_VERSION,
|
||||
} = require("./mac-update-floor.cjs");
|
||||
// Parse with the same YAML library electron-updater uses (not a direct dep).
|
||||
const yaml = createRequire(require.resolve("electron-updater"))("js-yaml");
|
||||
// The same module object electron-updater reads `release()` from.
|
||||
const os = require("node:os");
|
||||
// Real decision logic shipped in installed clients (v0.6.5 bundles
|
||||
// electron-updater 6.8.3). Deep import: the package has no `exports` map.
|
||||
const { AppUpdater } = require("electron-updater/out/AppUpdater");
|
||||
|
||||
function macContext(releaseInfo) {
|
||||
return {
|
||||
electronPlatformName: "darwin",
|
||||
packager: { platformSpecificBuildOptions: { releaseInfo } },
|
||||
};
|
||||
}
|
||||
|
||||
// Shape electron-builder's createUpdateInfo() produces:
|
||||
// { version, files, path, sha512, ...platformSpecificBuildOptions.releaseInfo }
|
||||
function publishedUpdateInfo(context) {
|
||||
return {
|
||||
version: "0.7.0",
|
||||
files: [{ url: "multica-desktop-0.7.0-mac-arm64.zip", sha512: "x" }],
|
||||
path: "multica-desktop-0.7.0-mac-arm64.zip",
|
||||
sha512: "x",
|
||||
...context.packager.platformSpecificBuildOptions.releaseInfo,
|
||||
};
|
||||
}
|
||||
|
||||
// What an installed client decides after fetching latest-mac.yml.
|
||||
function installedClientAcceptsUpdate(ymlText, darwinRelease) {
|
||||
vi.spyOn(os, "release").mockReturnValue(darwinRelease);
|
||||
const updateInfo = yaml.load(ymlText);
|
||||
const fakeUpdater = { _logger: { info() {}, warn() {} } };
|
||||
return AppUpdater.prototype.checkIfUpdateSupported.call(fakeUpdater, updateInfo);
|
||||
}
|
||||
|
||||
afterEach(() => {
|
||||
vi.restoreAllMocks();
|
||||
});
|
||||
|
||||
describe("mac-update-floor beforePack hook", () => {
|
||||
it("adds a Darwin kernel floor (not a macOS marketing version)", () => {
|
||||
expect(MAC_UPDATE_MIN_DARWIN_VERSION).toBe("22.0.0");
|
||||
const ctx = macContext({ releaseNotes: "notes" });
|
||||
|
||||
applyMacUpdateFloor(ctx);
|
||||
|
||||
expect(ctx.packager.platformSpecificBuildOptions.releaseInfo).toEqual({
|
||||
releaseNotes: "notes",
|
||||
minimumSystemVersion: "22.0.0",
|
||||
});
|
||||
});
|
||||
|
||||
it("leaves Windows and Linux metadata untouched", () => {
|
||||
for (const platform of ["win32", "linux"]) {
|
||||
const ctx = macContext(undefined);
|
||||
ctx.electronPlatformName = platform;
|
||||
|
||||
applyMacUpdateFloor(ctx);
|
||||
|
||||
expect(ctx.packager.platformSpecificBuildOptions.releaseInfo).toBeUndefined();
|
||||
}
|
||||
});
|
||||
|
||||
it("fails the build instead of silently publishing metadata without the floor", () => {
|
||||
expect(() =>
|
||||
applyMacUpdateFloor({ electronPlatformName: "darwin", packager: {} }),
|
||||
).toThrow(/minimumSystemVersion/);
|
||||
});
|
||||
|
||||
it("is wired into electron-builder.yml together with the macOS 13 bundle floor", () => {
|
||||
const config = yaml.load(
|
||||
readFileSync(resolve(desktopRoot, "electron-builder.yml"), "utf8"),
|
||||
);
|
||||
expect(config.beforePack).toBe("./scripts/mac-update-floor.cjs");
|
||||
expect(config.mac.minimumSystemVersion).toBe("13.0.0");
|
||||
});
|
||||
});
|
||||
|
||||
describe("installed clients (electron-updater 6.8.3) consuming the new metadata", () => {
|
||||
const ctx = macContext(undefined);
|
||||
applyMacUpdateFloor(ctx);
|
||||
const yml = yaml.dump(publishedUpdateInfo(ctx));
|
||||
|
||||
it("macOS 12 and older skip the update", () => {
|
||||
expect(installedClientAcceptsUpdate(yml, "21.6.0")).toBe(false); // macOS 12
|
||||
expect(installedClientAcceptsUpdate(yml, "20.6.0")).toBe(false); // macOS 11
|
||||
});
|
||||
|
||||
it("macOS 13+ still update", () => {
|
||||
expect(installedClientAcceptsUpdate(yml, "22.1.0")).toBe(true); // macOS 13
|
||||
expect(installedClientAcceptsUpdate(yml, "25.0.0")).toBe(true);
|
||||
});
|
||||
|
||||
it("documents the traps: no floor, or a marketing-version floor, lets macOS 12 download", () => {
|
||||
const base = publishedUpdateInfo(macContext(undefined));
|
||||
expect(installedClientAcceptsUpdate(yaml.dump(base), "21.6.0")).toBe(true);
|
||||
expect(
|
||||
installedClientAcceptsUpdate(
|
||||
yaml.dump({ ...base, minimumSystemVersion: "13.0.0" }),
|
||||
"21.6.0",
|
||||
),
|
||||
).toBe(true);
|
||||
});
|
||||
});
|
||||
@@ -350,9 +350,6 @@ export function builderArgsForTarget(
|
||||
builderArgs.push("-c.publish.channel=latest-arm64");
|
||||
}
|
||||
if (target.platform === "mac" && target.arch === "x64") {
|
||||
// Scope the Electron 39 platform floor to the new Intel package so this
|
||||
// change does not rewrite established Apple Silicon bundle metadata.
|
||||
builderArgs.push("-c.mac.minimumSystemVersion=12.0.0");
|
||||
builderArgs.push("-c.publish.channel=latest-x64");
|
||||
}
|
||||
return builderArgs;
|
||||
|
||||
@@ -343,7 +343,6 @@ describe("builderArgsForTarget", () => {
|
||||
"--publish",
|
||||
"always",
|
||||
"-c.directories.output=dist/mac-x64",
|
||||
"-c.mac.minimumSystemVersion=12.0.0",
|
||||
"-c.publish.channel=latest-x64",
|
||||
]);
|
||||
});
|
||||
|
||||
@@ -16,7 +16,7 @@ const ctx = vi.hoisted(() => ({
|
||||
capturedItems: [] as CapturedMenuItem[][],
|
||||
browserWindowFromWebContents: vi.fn(),
|
||||
popupSpy: vi.fn(),
|
||||
clipboardWriteText: vi.fn(),
|
||||
clipboardWriteText: vi.fn().mockResolvedValue(undefined),
|
||||
openExternalSpy: vi.fn().mockResolvedValue(undefined),
|
||||
preferredLanguagesRef: { current: ["en-US"] as string[] },
|
||||
}));
|
||||
|
||||
@@ -84,7 +84,12 @@ export function installContextMenu(webContents: WebContents): void {
|
||||
new MenuItem({
|
||||
label: labels.copyLinkAddress,
|
||||
click: () => {
|
||||
clipboard.writeText(linkURL);
|
||||
// Electron 44 made clipboard writes async (W3C Clipboard API
|
||||
// alignment); catch so a failed write can't surface as an
|
||||
// unhandled rejection in the main process.
|
||||
clipboard.writeText(linkURL).catch((err: unknown) => {
|
||||
console.warn("[context-menu] copy link address failed", err);
|
||||
});
|
||||
},
|
||||
}),
|
||||
);
|
||||
|
||||
Generated
+53
-128
@@ -172,10 +172,10 @@ importers:
|
||||
version: 3.2.2([email protected])
|
||||
'@electron-toolkit/preload':
|
||||
specifier: ^3.0.2
|
||||
version: 3.0.2(electron@39.8.7)
|
||||
version: 3.0.2(electron@44.9.3)
|
||||
'@electron-toolkit/utils':
|
||||
specifier: ^4.0.0
|
||||
version: 4.0.0(electron@39.8.7)
|
||||
version: 4.0.0(electron@44.9.3)
|
||||
'@fontsource-variable/geist-mono':
|
||||
specifier: ^5.3.0
|
||||
version: 5.3.0
|
||||
@@ -262,8 +262,8 @@ importers:
|
||||
specifier: ^5.1.1
|
||||
version: 5.2.0([email protected](@emnapi/[email protected])(@emnapi/[email protected])(@types/[email protected])([email protected])([email protected])([email protected]))
|
||||
electron:
|
||||
specifier: ^39.2.6
|
||||
version: 39.8.7
|
||||
specifier: ^44.9.3
|
||||
version: 44.9.3
|
||||
electron-builder:
|
||||
specifier: ^26.0.12
|
||||
version: 26.8.1([email protected])
|
||||
@@ -284,7 +284,7 @@ importers:
|
||||
version: 5.9.3
|
||||
vitest:
|
||||
specifier: 'catalog:'
|
||||
version: 4.1.0(@opentelemetry/[email protected])(@types/[email protected])([email protected](@noble/[email protected]))([email protected](@types/[email protected])([email protected]))([email protected](@emnapi/[email protected])(@emnapi/[email protected])(@types/[email protected])([email protected])([email protected])([email protected]))
|
||||
version: 4.1.0(@opentelemetry/[email protected])(@types/[email protected])([email protected](@noble/[email protected]))([email protected](@types/[email protected])([email protected]))([email protected](@emnapi/[email protected])(@emnapi/[email protected])(@types/[email protected])([email protected])([email protected])([email protected])([email protected]))
|
||||
|
||||
apps/docs:
|
||||
dependencies:
|
||||
@@ -336,7 +336,7 @@ importers:
|
||||
version: 5.9.3
|
||||
vitest:
|
||||
specifier: 'catalog:'
|
||||
version: 4.1.0(@opentelemetry/[email protected])(@types/[email protected])([email protected](@noble/[email protected]))([email protected](@types/[email protected])([email protected]))([email protected](@emnapi/[email protected])(@emnapi/[email protected])(@types/[email protected])([email protected])([email protected])([email protected]))
|
||||
version: 4.1.0(@opentelemetry/[email protected])(@types/[email protected])([email protected](@noble/[email protected]))([email protected](@types/[email protected])([email protected]))([email protected](@emnapi/[email protected])(@emnapi/[email protected])(@types/[email protected])([email protected])([email protected])([email protected])([email protected]))
|
||||
|
||||
apps/mobile:
|
||||
dependencies:
|
||||
@@ -635,7 +635,7 @@ importers:
|
||||
version: 8.0.1(@emnapi/[email protected])(@emnapi/[email protected])(@types/[email protected])([email protected])([email protected])([email protected])([email protected])
|
||||
vitest:
|
||||
specifier: 'catalog:'
|
||||
version: 4.1.0(@opentelemetry/[email protected])(@types/[email protected])([email protected](@noble/[email protected]))([email protected](@types/[email protected])([email protected]))([email protected](@emnapi/[email protected])(@emnapi/[email protected])(@types/[email protected])([email protected])([email protected])([email protected]))
|
||||
version: 4.1.0(@opentelemetry/[email protected])(@types/[email protected])([email protected](@noble/[email protected]))([email protected](@types/[email protected])([email protected]))([email protected](@emnapi/[email protected])(@emnapi/[email protected])(@types/[email protected])([email protected])([email protected])([email protected])([email protected]))
|
||||
|
||||
apps/web:
|
||||
dependencies:
|
||||
@@ -705,7 +705,7 @@ importers:
|
||||
version: 19.2.3(@types/[email protected])
|
||||
'@vitejs/plugin-react':
|
||||
specifier: 'catalog:'
|
||||
version: 6.0.1([email protected])([email protected](@emnapi/[email protected])(@emnapi/[email protected])(@types/[email protected])([email protected])([email protected])([email protected])([email protected]))
|
||||
version: 6.0.1([email protected])([email protected](@emnapi/[email protected])(@emnapi/[email protected])(@types/[email protected])([email protected])([email protected])([email protected]))
|
||||
jsdom:
|
||||
specifier: 'catalog:'
|
||||
version: 29.0.1(@noble/[email protected])
|
||||
@@ -720,7 +720,7 @@ importers:
|
||||
version: 5.9.3
|
||||
vitest:
|
||||
specifier: 'catalog:'
|
||||
version: 4.1.0(@opentelemetry/[email protected])(@types/[email protected])([email protected](@noble/[email protected]))([email protected](@types/[email protected])([email protected]))([email protected](@emnapi/[email protected])(@emnapi/[email protected])(@types/[email protected])([email protected])([email protected])([email protected])([email protected]))
|
||||
version: 4.1.0(@opentelemetry/[email protected])(@types/[email protected])([email protected](@noble/[email protected]))([email protected](@types/[email protected])([email protected]))([email protected](@emnapi/[email protected])(@emnapi/[email protected])(@types/[email protected])([email protected])([email protected])([email protected]))
|
||||
|
||||
packages/core:
|
||||
dependencies:
|
||||
@@ -775,7 +775,7 @@ importers:
|
||||
version: 5.9.3
|
||||
vitest:
|
||||
specifier: 'catalog:'
|
||||
version: 4.1.0(@opentelemetry/[email protected])(@types/[email protected])([email protected](@noble/[email protected]))([email protected](@types/[email protected])([email protected]))([email protected](@emnapi/[email protected])(@emnapi/[email protected])(@types/[email protected])([email protected])([email protected])([email protected]))
|
||||
version: 4.1.0(@opentelemetry/[email protected])(@types/[email protected])([email protected](@noble/[email protected]))([email protected](@types/[email protected])([email protected]))([email protected](@emnapi/[email protected])(@emnapi/[email protected])(@types/[email protected])([email protected])([email protected])([email protected])([email protected]))
|
||||
|
||||
packages/eslint-config:
|
||||
dependencies:
|
||||
@@ -1202,7 +1202,7 @@ importers:
|
||||
version: 5.9.3
|
||||
vitest:
|
||||
specifier: 'catalog:'
|
||||
version: 4.1.0(@opentelemetry/[email protected])(@types/[email protected])([email protected](@noble/[email protected]))([email protected](@types/[email protected])([email protected]))([email protected](@emnapi/[email protected])(@emnapi/[email protected])(@types/[email protected])([email protected])([email protected])([email protected]))
|
||||
version: 4.1.0(@opentelemetry/[email protected])(@types/[email protected])([email protected](@noble/[email protected]))([email protected](@types/[email protected])([email protected]))([email protected](@emnapi/[email protected])(@emnapi/[email protected])(@types/[email protected])([email protected])([email protected])([email protected])([email protected]))
|
||||
|
||||
packages:
|
||||
|
||||
@@ -1743,6 +1743,10 @@ packages:
|
||||
resolution: {integrity: sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==}
|
||||
engines: {node: '>=0.8.0'}
|
||||
|
||||
'@electron-internal/[email protected]':
|
||||
resolution: {integrity: sha512-+bqFCP98pLI0Tt0XQo1TmlXtwjWchISndDOxCkEcIuUgXWpBnLyRI+2DU+mesvnMMX6L1XDqYNA0lXNDHd/yiA==}
|
||||
engines: {node: '>=22.12.0'}
|
||||
|
||||
'@electron-toolkit/[email protected]':
|
||||
resolution: {integrity: sha512-TWWPToXd8qPRfSXwzf5KVhpXMfONaUuRAZJHsKthKgZR/+LqX1dZVSSClQ8OTAEduvLGdecljCsoT2jSshfoUg==}
|
||||
peerDependencies:
|
||||
@@ -1767,14 +1771,14 @@ packages:
|
||||
resolution: {integrity: sha512-zx0EIq78WlY/lBb1uXlziZmDZI4ubcCXIMJ4uGjXzZW0nS19TjSPeXPAjzzTmKQlJUZm0SbmZhPKP7tuQ1SsEw==}
|
||||
hasBin: true
|
||||
|
||||
'@electron/[email protected]':
|
||||
resolution: {integrity: sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
'@electron/[email protected]':
|
||||
resolution: {integrity: sha512-F+nKc0xW+kVbBRhFzaMgPy3KwmuNTYX1fx6+FxxoSnNgwYX6LD7AKBTWkU0MQ6IBoe7dz069CNkR673sPAgkCQ==}
|
||||
engines: {node: '>=14'}
|
||||
|
||||
'@electron/[email protected]':
|
||||
resolution: {integrity: sha512-3kSBtG8ObcTVfXanm5vVJ6UnBLEVmVsRk1M+vGqCuMBV+XLCbJYuWQful+yIy0GQDsSlK0kHEriEHn7SPk4EnA==}
|
||||
engines: {node: '>=22.12.0'}
|
||||
|
||||
'@electron/[email protected]':
|
||||
resolution: {integrity: sha512-jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A==}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
@@ -4717,8 +4721,8 @@ packages:
|
||||
'@types/[email protected]':
|
||||
resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
|
||||
|
||||
'@types/node@22.19.17':
|
||||
resolution: {integrity: sha512-wGdMcf+vPYM6jikpS/qhg6WiqSV/OhG+jeeHT/KlVqxYfD40iYJf9/AE1uQxVWFvU7MipKRkRv8NSHiCGgPr8Q==}
|
||||
'@types/node@24.19.2':
|
||||
resolution: {integrity: sha512-93d49wCWJkCyN87MxLpNN6KXPCwFw7bVUg79mGUV1OS40JGWwVCr8n61DXCSqz7CV6/VfPkb7xec7uP2M+QHWQ==}
|
||||
|
||||
'@types/[email protected]':
|
||||
resolution: {integrity: sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==}
|
||||
@@ -4770,9 +4774,6 @@ packages:
|
||||
'@types/[email protected]':
|
||||
resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==}
|
||||
|
||||
'@types/[email protected]':
|
||||
resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==}
|
||||
|
||||
'@typescript-eslint/[email protected]':
|
||||
resolution: {integrity: sha512-eSkwoemjo76bdXl2MYqtxg51HNwUSkWfODUOQ3PaTLZGh9uIWWFZIjyjaJnex7wXDu+TRx+ATsnSxdN9YWfRTQ==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
@@ -5323,9 +5324,6 @@ packages:
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
|
||||
|
||||
@@ -6153,9 +6151,9 @@ packages:
|
||||
resolution: {integrity: sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==}
|
||||
engines: {node: '>=8.0.0'}
|
||||
|
||||
electron@39.8.7:
|
||||
resolution: {integrity: sha512-B3TmzbUEeIvrhJ0QcoFp8/tgnVA3vsm0wkdYWzC22hsk9zTVqkzyrrz40cjd0nMTTIrGWxxfDO2tdQTCMe9Bjw==}
|
||||
engines: {node: '>= 12.20.55'}
|
||||
electron@44.9.3:
|
||||
resolution: {integrity: sha512-Cv9/yMnZxNWsMlIe8T4v//NKHdUvbeyoTJoXE3BIcRxus2meeFaO9h/P3zB5d4cBXum51IgAYrT2QjpIDWKpJA==}
|
||||
engines: {node: '>= 22.12.0'}
|
||||
hasBin: true
|
||||
|
||||
[email protected]:
|
||||
@@ -6200,6 +6198,10 @@ packages:
|
||||
resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==}
|
||||
engines: {node: '>=6'}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==}
|
||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==}
|
||||
|
||||
@@ -6738,11 +6740,6 @@ packages:
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==}
|
||||
engines: {node: '>= 10.17.0'}
|
||||
hasBin: true
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==}
|
||||
engines: {'0': node >=0.6.0}
|
||||
@@ -6791,9 +6788,6 @@ packages:
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ==}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
@@ -8961,9 +8955,6 @@ packages:
|
||||
resolution: {integrity: sha512-eRWB5LBz7PpDu4PUlwT0PhnQfTQJlDDdPa35urV4Osrm0t0AqQFGn+UIkU3klZvwJ8KPO3VbBFsXquA6p6kqZw==}
|
||||
engines: {node: '>=12', npm: '>=6'}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==}
|
||||
|
||||
@@ -10511,12 +10502,12 @@ packages:
|
||||
resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-3IWdCpjgxp15CbJnsi/Y9TCDE7HWVN19j1hmzVhoAkY/+CJx449tVxT5wZc1Gwg8J+P0LWvzlBzxYRnHJ+1i7Q==}
|
||||
engines: {node: '>=20.18.1'}
|
||||
@@ -10981,9 +10972,6 @@ packages:
|
||||
resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
|
||||
engines: {node: '>=10'}
|
||||
@@ -11674,17 +11662,19 @@ snapshots:
|
||||
dependencies:
|
||||
'@types/hammerjs': 2.0.46
|
||||
|
||||
'@electron-toolkit/[email protected]([email protected])':
|
||||
'@electron-internal/[email protected]': {}
|
||||
|
||||
'@electron-toolkit/[email protected]([email protected])':
|
||||
dependencies:
|
||||
electron: 39.8.7
|
||||
electron: 44.9.3
|
||||
|
||||
'@electron-toolkit/[email protected](@types/[email protected])':
|
||||
dependencies:
|
||||
'@types/node': 25.5.0
|
||||
|
||||
'@electron-toolkit/[email protected](electron@39.8.7)':
|
||||
'@electron-toolkit/[email protected](electron@44.9.3)':
|
||||
dependencies:
|
||||
electron: 39.8.7
|
||||
electron: 44.9.3
|
||||
|
||||
'@electron/[email protected]':
|
||||
dependencies:
|
||||
@@ -11698,7 +11688,7 @@ snapshots:
|
||||
fs-extra: 9.1.0
|
||||
minimist: 1.2.8
|
||||
|
||||
'@electron/get@2.0.3':
|
||||
'@electron/get@3.1.0':
|
||||
dependencies:
|
||||
debug: 4.4.3
|
||||
env-paths: 2.2.1
|
||||
@@ -11712,17 +11702,16 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@electron/get@3.1.0':
|
||||
'@electron/get@5.1.0':
|
||||
dependencies:
|
||||
debug: 4.4.3
|
||||
env-paths: 2.2.1
|
||||
fs-extra: 8.1.0
|
||||
got: 11.8.6
|
||||
env-paths: 3.0.0
|
||||
graceful-fs: 4.2.11
|
||||
progress: 2.0.3
|
||||
semver: 6.3.1
|
||||
semver: 7.8.5
|
||||
sumchecker: 3.0.1
|
||||
optionalDependencies:
|
||||
global-agent: 3.0.0
|
||||
undici: 7.24.5
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
@@ -14658,9 +14647,9 @@ snapshots:
|
||||
|
||||
'@types/[email protected]': {}
|
||||
|
||||
'@types/node@22.19.17':
|
||||
'@types/node@24.19.2':
|
||||
dependencies:
|
||||
undici-types: 6.21.0
|
||||
undici-types: 7.24.6
|
||||
|
||||
'@types/[email protected]':
|
||||
dependencies:
|
||||
@@ -14716,11 +14705,6 @@ snapshots:
|
||||
dependencies:
|
||||
'@types/yargs-parser': 21.0.3
|
||||
|
||||
'@types/[email protected]':
|
||||
dependencies:
|
||||
'@types/node': 25.5.0
|
||||
optional: true
|
||||
|
||||
'@typescript-eslint/[email protected](@typescript-eslint/[email protected]([email protected]([email protected]))([email protected]))([email protected]([email protected]))([email protected])':
|
||||
dependencies:
|
||||
'@eslint-community/regexpp': 4.12.2
|
||||
@@ -14987,15 +14971,6 @@ snapshots:
|
||||
msw: 2.12.14(@types/[email protected])([email protected])
|
||||
vite: 8.0.1(@emnapi/[email protected])(@emnapi/[email protected])(@types/[email protected])([email protected])([email protected])([email protected])
|
||||
|
||||
'@vitest/[email protected]([email protected](@types/[email protected])([email protected]))([email protected](@emnapi/[email protected])(@emnapi/[email protected])(@types/[email protected])([email protected])([email protected])([email protected]))':
|
||||
dependencies:
|
||||
'@vitest/spy': 4.1.0
|
||||
estree-walker: 3.0.3
|
||||
magic-string: 0.30.21
|
||||
optionalDependencies:
|
||||
msw: 2.12.14(@types/[email protected])([email protected])
|
||||
vite: 8.0.1(@emnapi/[email protected])(@emnapi/[email protected])(@types/[email protected])([email protected])([email protected])([email protected])([email protected])
|
||||
|
||||
'@vitest/[email protected]':
|
||||
dependencies:
|
||||
tinyrainbow: 3.1.0
|
||||
@@ -15439,8 +15414,6 @@ snapshots:
|
||||
dependencies:
|
||||
node-int64: 0.4.0
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]:
|
||||
@@ -16351,11 +16324,11 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
electron@39.8.7:
|
||||
electron@44.9.3:
|
||||
dependencies:
|
||||
'@electron/get': 2.0.3
|
||||
'@types/node': 22.19.17
|
||||
extract-zip: 2.0.1
|
||||
'@electron-internal/extract-zip': 1.0.5
|
||||
'@electron/get': 5.1.0
|
||||
'@types/node': 24.19.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
@@ -16391,6 +16364,8 @@ snapshots:
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]:
|
||||
@@ -17274,16 +17249,6 @@ snapshots:
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
debug: 4.4.3
|
||||
get-stream: 5.2.0
|
||||
yauzl: 2.10.0
|
||||
optionalDependencies:
|
||||
'@types/yauzl': 2.10.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
[email protected]:
|
||||
optional: true
|
||||
|
||||
@@ -17341,10 +17306,6 @@ snapshots:
|
||||
dependencies:
|
||||
walk-up-path: 4.0.0
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
pend: 1.2.0
|
||||
|
||||
[email protected]([email protected]):
|
||||
optionalDependencies:
|
||||
picomatch: 4.0.3
|
||||
@@ -20220,8 +20181,6 @@ snapshots:
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]:
|
||||
optional: true
|
||||
|
||||
@@ -22135,10 +22094,10 @@ snapshots:
|
||||
has-symbols: 1.1.0
|
||||
which-boxed-primitive: 1.1.1
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]: {}
|
||||
@@ -22432,35 +22391,6 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- msw
|
||||
|
||||
[email protected](@opentelemetry/[email protected])(@types/[email protected])([email protected](@noble/[email protected]))([email protected](@types/[email protected])([email protected]))([email protected](@emnapi/[email protected])(@emnapi/[email protected])(@types/[email protected])([email protected])([email protected])([email protected])):
|
||||
dependencies:
|
||||
'@vitest/expect': 4.1.0
|
||||
'@vitest/mocker': 4.1.0([email protected](@types/[email protected])([email protected]))([email protected](@emnapi/[email protected])(@emnapi/[email protected])(@types/[email protected])([email protected])([email protected])([email protected]))
|
||||
'@vitest/pretty-format': 4.1.0
|
||||
'@vitest/runner': 4.1.0
|
||||
'@vitest/snapshot': 4.1.0
|
||||
'@vitest/spy': 4.1.0
|
||||
'@vitest/utils': 4.1.0
|
||||
es-module-lexer: 2.0.0
|
||||
expect-type: 1.3.0
|
||||
magic-string: 0.30.21
|
||||
obug: 2.1.1
|
||||
pathe: 2.0.3
|
||||
picomatch: 4.0.3
|
||||
std-env: 4.0.0
|
||||
tinybench: 2.9.0
|
||||
tinyexec: 1.0.4
|
||||
tinyglobby: 0.2.15
|
||||
tinyrainbow: 3.1.0
|
||||
vite: 8.0.1(@emnapi/[email protected])(@emnapi/[email protected])(@types/[email protected])([email protected])([email protected])([email protected])([email protected])
|
||||
why-is-node-running: 2.3.0
|
||||
optionalDependencies:
|
||||
'@opentelemetry/api': 1.9.1
|
||||
'@types/node': 25.5.0
|
||||
jsdom: 29.0.1(@noble/[email protected])
|
||||
transitivePeerDependencies:
|
||||
- msw
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]: {}
|
||||
@@ -22660,11 +22590,6 @@ snapshots:
|
||||
y18n: 5.0.8
|
||||
yargs-parser: 21.1.1
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
buffer-crc32: 0.2.13
|
||||
fd-slicer: 1.1.0
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
Reference in New Issue
Block a user