diff --git a/apps/cli/src/__tests__/app-request-headers.test.ts b/apps/cli/src/__tests__/app-request-headers.test.ts index b59b05a66c63..6c8f5415b2ee 100644 --- a/apps/cli/src/__tests__/app-request-headers.test.ts +++ b/apps/cli/src/__tests__/app-request-headers.test.ts @@ -25,7 +25,7 @@ describe('CLI App request headers', () => { expect(headers).toMatchObject({ 'user-agent': - 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) OneKeyWallet/6.3.0 Chrome/142.0.7444.265 Electron/39.8.9 Safari/537.36', + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) OneKeyWallet/6.3.0 Chrome/150.0.7871.114 Electron/43.1.1 Safari/537.36', 'x-onekey-hide-asset-details': 'false', 'x-onekey-instance-id': '45304ac0-2271-4b57-b7d8-ba111a627a6d', 'x-onekey-request-build-number': '2026043075', diff --git a/apps/cli/src/infra/app-request-headers.ts b/apps/cli/src/infra/app-request-headers.ts index 1e7da2c73a0c..8dbdc54a9ff1 100644 --- a/apps/cli/src/infra/app-request-headers.ts +++ b/apps/cli/src/infra/app-request-headers.ts @@ -123,7 +123,7 @@ export function buildCliAppUserAgent(): string { return ( `Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) ` + `AppleWebKit/537.36 (KHTML, like Gecko) OneKeyWallet/${version} ` + - `Chrome/142.0.7444.265 Electron/39.8.9 Safari/537.36` + `Chrome/150.0.7871.114 Electron/43.1.1 Safari/537.36` ); } diff --git a/apps/desktop/app/app.ts b/apps/desktop/app/app.ts index 355a436f021c..e1422bcf9782 100644 --- a/apps/desktop/app/app.ts +++ b/apps/desktop/app/app.ts @@ -57,6 +57,7 @@ import { import { ipcMessageKeys } from './config'; import { ElectronTranslations, i18nText, initLocale } from './i18n'; import { scheduleCrashDumpCleanup } from './libs/crashDumpCleanup'; +import { findAllowedDeepLinkArg, isAllowedDeepLinkUrl } from './libs/deepLink'; import { applyDesktopNetworkThrottleToKnownSessions, applyDesktopNetworkThrottleToWebContents, @@ -596,17 +597,9 @@ function handleDeepLinkUrl( isColdStartup?: boolean, ) { // Validate deep link scheme before forwarding to renderer - if (url) { - const allowedSchemes = [ - `${ONEKEY_APP_DEEP_LINK_NAME}:`, - `${WALLET_CONNECT_DEEP_LINK_NAME}:`, - 'ethereum:', - ]; - const isAllowed = allowedSchemes.some((scheme) => url.startsWith(scheme)); - if (!isAllowed) { - logger.warn('[DeepLink] Rejected URL with unknown scheme:', url); - return; - } + if (url && !isAllowedDeepLinkUrl(url)) { + logger.warn('[DeepLink] Rejected URL with unknown scheme:', url); + return; } const eventData: IDesktopOpenUrlEventData = { @@ -913,9 +906,10 @@ async function createMainWindow(opts?: { isSoftRestart?: boolean }) { // original cold-start URL (e.g. a WalletConnect pairing or send screen) after // every bundle update. Only a genuine cold boot should consume argv. if ((isWin || isMac) && !isSoftRestart) { - // Keep only command line / deep linked arguments - const deeplinkingUrl = process.argv[1]; - handleDeepLinkUrl(null, deeplinkingUrl, process.argv, true); + const deeplinkingUrl = findAllowedDeepLinkArg(process.argv); + if (deeplinkingUrl) { + handleDeepLinkUrl(null, deeplinkingUrl, process.argv, true); + } } browserWindow.webContents.on('unresponsive', () => { @@ -1730,7 +1724,7 @@ if (!singleInstance && !process.mas) { // Handle deep link arguments for all platforms // argv: An array of the second instance's (command line / deep linked) arguments - const deeplinkingUrl = argv[1]; + const deeplinkingUrl = findAllowedDeepLinkArg(argv); if (deeplinkingUrl) { // handleDeepLinkUrl internally calls showMainWindow(), so we don't need to call it separately handleDeepLinkUrl(null, deeplinkingUrl, argv, false); // isColdStartup=false for second instance diff --git a/apps/desktop/app/libs/deepLink.test.ts b/apps/desktop/app/libs/deepLink.test.ts new file mode 100644 index 000000000000..7ffd1966fcae --- /dev/null +++ b/apps/desktop/app/libs/deepLink.test.ts @@ -0,0 +1,32 @@ +import { findAllowedDeepLinkArg, isAllowedDeepLinkUrl } from './deepLink'; + +describe('desktop deep link arguments', () => { + test('finds the URL after Electron command-line switches', () => { + expect( + findAllowedDeepLinkArg([ + 'OneKey.exe', + '--allow-file-access-from-files', + 'onekey-wallet://search/list?q=onekey', + ]), + ).toBe('onekey-wallet://search/list?q=onekey'); + }); + + test.each([ + 'onekey-wallet://search/list?q=onekey', + 'wc://pairing', + 'ethereum:0x0000000000000000000000000000000000000000', + ])('allows a registered deep link scheme: %s', (url) => { + expect(isAllowedDeepLinkUrl(url)).toBe(true); + }); + + test('does not treat Electron switches or unregistered URLs as deep links', () => { + expect( + findAllowedDeepLinkArg([ + 'OneKey.exe', + '--allow-file-access-from-files', + 'https://example.com', + ]), + ).toBeUndefined(); + expect(isAllowedDeepLinkUrl('https://example.com')).toBe(false); + }); +}); diff --git a/apps/desktop/app/libs/deepLink.ts b/apps/desktop/app/libs/deepLink.ts new file mode 100644 index 000000000000..0f5f805ca9e9 --- /dev/null +++ b/apps/desktop/app/libs/deepLink.ts @@ -0,0 +1,20 @@ +import { + ONEKEY_APP_DEEP_LINK_NAME, + WALLET_CONNECT_DEEP_LINK_NAME, +} from '@onekeyhq/shared/src/consts/deeplinkConsts'; + +const ALLOWED_DEEP_LINK_SCHEMES = [ + `${ONEKEY_APP_DEEP_LINK_NAME}:`, + `${WALLET_CONNECT_DEEP_LINK_NAME}:`, + 'ethereum:', +] as const; + +export function isAllowedDeepLinkUrl(url: string): boolean { + return ALLOWED_DEEP_LINK_SCHEMES.some((scheme) => url.startsWith(scheme)); +} + +export function findAllowedDeepLinkArg( + argv: readonly string[], +): string | undefined { + return argv.find((arg) => isAllowedDeepLinkUrl(arg)); +} diff --git a/apps/desktop/app/package.json b/apps/desktop/app/package.json index 81cf0c9960ad..e4188ba428db 100644 --- a/apps/desktop/app/package.json +++ b/apps/desktop/app/package.json @@ -20,7 +20,6 @@ "passport-desktop": "0.1.2", "passport-desktop-win32-x64-msvc": "0.1.2", "systeminformation": "5.31.6", - "tr46": "0.0.3", "validator": "13.15.23" }, "resolutions": { diff --git a/apps/desktop/app/process/Bridge.test.ts b/apps/desktop/app/process/Bridge.test.ts index 781bfea5442e..9aaa9b9548b8 100644 --- a/apps/desktop/app/process/Bridge.test.ts +++ b/apps/desktop/app/process/Bridge.test.ts @@ -13,8 +13,6 @@ jest.mock('electron-log/main', () => ({ debug: jest.fn(), })); -jest.mock('node-fetch', () => jest.fn()); - jest.mock('../resoucePath', () => ({ getAppStaticResourcesPath: jest.fn(() => '/mock/resources'), })); @@ -25,6 +23,7 @@ import BridgeProcess, { BRIDGE_SUPPORTED_SYSTEMS } from './Bridge'; const originalPlatform = Object.getOwnPropertyDescriptor(process, 'platform'); const originalArch = Object.getOwnPropertyDescriptor(process, 'arch'); +const originalFetch = globalThis.fetch; type ILoggerMock = { info: jest.Mock; @@ -59,6 +58,7 @@ describe('BridgeProcess', () => { afterEach(() => { jest.clearAllMocks(); restorePlatform(); + globalThis.fetch = originalFetch; }); test('only supports Linux bridge systems', () => { @@ -96,4 +96,25 @@ describe('BridgeProcess', () => { expect(bridge.isCurrentSystemSupported()).toBe(true); }); + + test('checks bridge status with the Node runtime fetch implementation', async () => { + const fetchMock = jest.fn().mockResolvedValue({ + status: 200, + json: jest.fn().mockResolvedValue({ version: '2.0.0' }), + }); + globalThis.fetch = fetchMock as unknown as typeof fetch; + + const bridge = new BridgeProcess(); + + await expect(bridge.getStatus()).resolves.toEqual({ + service: true, + process: true, + }); + expect(fetchMock).toHaveBeenCalledWith('http://127.0.0.1:21320/', { + method: 'POST', + headers: { + Origin: 'https://electron.onekey.so', + }, + }); + }); }); diff --git a/apps/desktop/app/process/Bridge.ts b/apps/desktop/app/process/Bridge.ts index 00e47b51f357..14f21d18d51a 100644 --- a/apps/desktop/app/process/Bridge.ts +++ b/apps/desktop/app/process/Bridge.ts @@ -1,6 +1,5 @@ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ import logger from 'electron-log/main'; -import fetch from 'node-fetch'; import BaseProcess from './BaseProcess'; @@ -27,7 +26,7 @@ class BridgeProcess extends BaseProcess { }); logger.debug(`Checking status (${resp.status})`); if (resp.status === 200) { - const data = await resp.json(); + const data = (await resp.json()) as { version?: unknown }; if (data?.version) { return { service: true, @@ -52,17 +51,18 @@ async function fetchWithTimeout( url: string, options: RequestInit & { timeout: number }, ) { - const { timeout = 3000 } = options; + const { timeout = 3000, ...requestOptions } = options; const controller = new AbortController(); const id = setTimeout(() => controller.abort(), timeout); - // @ts-expect-error - const response = await fetch(url, { - ...options, - signal: controller.signal as any, - }); - clearTimeout(id); - return response; + try { + return await fetch(url, { + ...requestOptions, + signal: controller.signal, + }); + } finally { + clearTimeout(id); + } } export const BridgeHeart = { diff --git a/apps/desktop/app/yarn.lock b/apps/desktop/app/yarn.lock index 51066adb9a48..d31e9800f430 100644 --- a/apps/desktop/app/yarn.lock +++ b/apps/desktop/app/yarn.lock @@ -40,7 +40,6 @@ __metadata: passport-desktop: "npm:0.1.2" passport-desktop-win32-x64-msvc: "npm:0.1.2" systeminformation: "npm:5.31.6" - tr46: "npm:0.0.3" validator: "npm:13.15.23" languageName: unknown linkType: soft @@ -2049,13 +2048,6 @@ __metadata: languageName: node linkType: hard -"tr46@npm:0.0.3": - version: 0.0.3 - resolution: "tr46@npm:0.0.3" - checksum: 10/8f1f5aa6cb232f9e1bdc86f485f916b7aa38caee8a778b378ffec0b70d9307873f253f5cbadbe2955ece2ac5c83d0dc14a77513166ccd0a0c7fe197e21396695 - languageName: node - linkType: hard - "undici-types@npm:~8.3.0": version: 8.3.0 resolution: "undici-types@npm:8.3.0" diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 5a5a68023a74..aacb5a3fe235 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -47,10 +47,9 @@ "electron-check-biometric-auth-changed": "1.0.0", "electron-context-menu": "^3.5.0", "electron-is-dev": "^2.0.0", - "electron-log": "5.2.0", + "electron-log": "5.4.4", "electron-store": "^8.2.0", "electron-updater": "6.8.9", - "node-fetch": "^2.6.7", "passport-desktop": "0.1.2", "passport-desktop-win32-x64-msvc": "0.1.2", "semver": "7.5.4" @@ -60,10 +59,9 @@ "@electron/remote": "^2.0.1", "@types/adm-zip": "^0", "@types/electron-localshortcut": "^3.1.0", - "@types/node-fetch": "^2.6.1", "concurrently": "9.2.1", "cross-env": "7.0.3", - "electron": "39.8.9", + "electron": "43.1.1", "electron-builder": "26.4.0", "esbuild": "0.27.2", "glob": "^7.2.0", diff --git a/apps/desktop/scripts/apply-runtime-patches.js b/apps/desktop/scripts/apply-runtime-patches.js index 4a4ede7e75ed..f6a1b35a9320 100644 --- a/apps/desktop/scripts/apply-runtime-patches.js +++ b/apps/desktop/scripts/apply-runtime-patches.js @@ -4,6 +4,9 @@ const path = require('path'); const { electronUpdaterRuntimePatchFiles, } = require('./electron-updater-runtime-patch-files'); +const { + thirdPartyRuntimePatchPackages, +} = require('./third-party-runtime-patch-files'); function failPatch(message) { process.stderr.write(`${message}\n`); @@ -72,3 +75,55 @@ for (const relativePath of electronUpdaterRuntimePatchFiles) { process.stdout.write( `Applied electron-updater ${runtimePackage.version} runtime patch.\n`, ); + +for (const { packageName, relativePaths } of thirdPartyRuntimePatchPackages) { + const runtimeRoot = path.join( + desktopPackageRoot, + 'app/node_modules', + packageName, + ); + const runtimeJsonPath = path.join(runtimeRoot, 'package.json'); + let workspaceJsonPath; + try { + workspaceJsonPath = path.join( + path.dirname( + require.resolve(packageName, { + paths: [desktopPackageRoot], + }), + ), + 'package.json', + ); + } catch { + failPatch( + `Workspace ${packageName} dependency cannot be resolved from ${desktopPackageRoot}. Run yarn install first.`, + ); + } + const workspaceRoot = path.dirname(workspaceJsonPath); + const workspaceMetadata = readPackageMetadata( + workspaceJsonPath, + `Workspace ${packageName} package metadata`, + ); + const runtimeMetadata = readPackageMetadata( + runtimeJsonPath, + `Runtime ${packageName} package metadata`, + ); + if (runtimeMetadata.version !== workspaceMetadata.version) { + failPatch( + `${packageName} version mismatch: runtime=${runtimeMetadata.version}, workspace=${workspaceMetadata.version}.`, + ); + } + for (const relativePath of relativePaths) { + const sourcePath = path.join(workspaceRoot, relativePath); + const destinationPath = path.join(runtimeRoot, relativePath); + if (!fs.existsSync(sourcePath)) { + failPatch(`Workspace ${packageName} file is missing: ${sourcePath}.`); + } + if (!fs.existsSync(destinationPath)) { + failPatch(`Runtime ${packageName} file is missing: ${destinationPath}.`); + } + fs.copyFileSync(sourcePath, destinationPath); + } + process.stdout.write( + `Applied ${packageName} ${runtimeMetadata.version} runtime patch.\n`, + ); +} diff --git a/apps/desktop/scripts/build.js b/apps/desktop/scripts/build.js index e2ee75ee867d..c70c3db8e551 100644 --- a/apps/desktop/scripts/build.js +++ b/apps/desktop/scripts/build.js @@ -165,15 +165,14 @@ build({ // XML stack, js-yaml) out of app.js parse. 'electron-updater', 'adm-zip', - // Tier 2: large lookup-table deps reached transitively via node-fetch / - // whatwg-url (tr46 IDNA table) and the local HTTP server (mime-db, validator). - // FOOTGUN: these three are *transitive* — no app code imports them directly. + // Tier 2: large lookup-table deps reached transitively via the local HTTP + // server (mime-db, validator). + // FOOTGUN: these are *transitive* — no app code imports them directly. // esbuild leaves a bare `require('')` and only ONE copy ships in the // asar, so the shipped version is whatever is pinned in app/package.json, NOT - // what yarn.lock resolves for the real consumers. When bumping node-fetch / - // whatwg-url / the http stack, re-check that these pins still match the - // resolved transitive versions, or the asar will ship a mismatched copy. - 'tr46', + // what yarn.lock resolves for the real consumers. When bumping the HTTP + // stack, re-check that these pins still match the resolved transitive + // versions, or the asar will ship a mismatched copy. 'mime-db', 'validator', ...Object.keys(pkg.dependencies), diff --git a/apps/desktop/scripts/node-runtime-harness-summary.test.js b/apps/desktop/scripts/node-runtime-harness-summary.test.js index 8d712e8620b6..2831d00eaa8c 100644 --- a/apps/desktop/scripts/node-runtime-harness-summary.test.js +++ b/apps/desktop/scripts/node-runtime-harness-summary.test.js @@ -16,9 +16,9 @@ const createPassingReport = () => ({ driftsAfterAppInit: [], driftsAfterRepair: [], driftsBeforeRepair: [], - electron: '39.8.9', + electron: '43.1.1', isPackaged: true, - node: '22.22.1', + node: '24.18.0', nodeRuntimeCheckNames: ['global.Buffer', 'node:fs.readFile'], platform: 'linux', processType: 'browser', diff --git a/apps/desktop/scripts/third-party-runtime-patch-files.js b/apps/desktop/scripts/third-party-runtime-patch-files.js new file mode 100644 index 000000000000..b5f530bcbfa8 --- /dev/null +++ b/apps/desktop/scripts/third-party-runtime-patch-files.js @@ -0,0 +1,14 @@ +const thirdPartyRuntimePatchPackages = [ + { + packageName: '@sentry/electron', + relativePaths: [ + 'esm/main/integrations/preload-injection.js', + 'main/integrations/preload-injection.js', + ], + requiredMarkers: ['registerPreloadScript'], + }, +]; + +module.exports = { + thirdPartyRuntimePatchPackages, +}; diff --git a/apps/desktop/scripts/verify-runtime-patches.js b/apps/desktop/scripts/verify-runtime-patches.js index ea1bc10d1ab7..b4adbcd02249 100644 --- a/apps/desktop/scripts/verify-runtime-patches.js +++ b/apps/desktop/scripts/verify-runtime-patches.js @@ -4,6 +4,9 @@ const path = require('path'); const { electronUpdaterRuntimePatchFiles, } = require('./electron-updater-runtime-patch-files'); +const { + thirdPartyRuntimePatchPackages, +} = require('./third-party-runtime-patch-files'); function failVerification(message) { process.stderr.write(`${message}\n`); @@ -108,3 +111,68 @@ for (const relativePath of electronUpdaterRuntimePatchFiles) { process.stdout.write( `Verified electron-updater ${runtimePackage.version} runtime patch.\n`, ); + +for (const { + packageName, + relativePaths, + requiredMarkers, +} of thirdPartyRuntimePatchPackages) { + const runtimeRoot = path.join(__dirname, '../app/node_modules', packageName); + const runtimeJsonPath = path.join(runtimeRoot, 'package.json'); + let workspaceJsonPath; + try { + workspaceJsonPath = path.join( + path.dirname( + require.resolve(packageName, { + paths: [desktopPackageRoot], + }), + ), + 'package.json', + ); + } catch { + failVerification( + `Workspace ${packageName} dependency cannot be resolved from ${desktopPackageRoot}. Run yarn install first.`, + ); + } + const workspaceRoot = path.dirname(workspaceJsonPath); + const runtimeMetadata = readPackageMetadata( + runtimeJsonPath, + `Runtime ${packageName} package metadata`, + ); + const workspaceMetadata = readPackageMetadata( + workspaceJsonPath, + `Workspace ${packageName} package metadata`, + ); + if (runtimeMetadata.version !== workspaceMetadata.version) { + failVerification( + `${packageName} version mismatch: runtime=${runtimeMetadata.version}, workspace=${workspaceMetadata.version}.`, + ); + } + for (const relativePath of relativePaths) { + const runtimeFilePath = path.join(runtimeRoot, relativePath); + const workspaceFilePath = path.join(workspaceRoot, relativePath); + const runtimeFileContent = readRequiredFile( + runtimeFilePath, + `Runtime ${packageName} file ${relativePath}`, + ); + const workspaceFileContent = readRequiredFile( + workspaceFilePath, + `Workspace ${packageName} file ${relativePath}`, + ); + for (const marker of requiredMarkers) { + if (!runtimeFileContent.includes(marker)) { + failVerification( + `Runtime ${packageName} patch is missing marker "${marker}" in ${runtimeFilePath}.`, + ); + } + } + if (runtimeFileContent !== workspaceFileContent) { + failVerification( + `Packaged runtime ${packageName} patch differs from the workspace patch: ${relativePath}.`, + ); + } + } + process.stdout.write( + `Verified ${packageName} ${runtimeMetadata.version} runtime patch.\n`, + ); +} diff --git a/package.json b/package.json index c29878b5a828..9973d6512193 100644 --- a/package.json +++ b/package.json @@ -444,7 +444,7 @@ "@metamask/eth-sig-util": "5.1.0", "@polkadot/api": "14.3.1", "@polkadot/util": "13.2.3", - "electron": "39.8.9", + "electron": "43.1.1", "@walletconnect/core": "2.21.9", "@walletconnect/utils": "2.21.9", "@walletconnect/types": "2.21.9", @@ -464,7 +464,7 @@ "sha.js": "2.4.12", "viem": "2.37.6", "tmp": "0.2.4", - "node-abi": "3.80.0", + "node-abi": "3.94.0", "node-forge": "1.3.3", "expo": "54.0.26", "react-native-svg": "15.15.1", diff --git a/packages/kit-bg/src/desktopApis/DesktopApiDev.ts b/packages/kit-bg/src/desktopApis/DesktopApiDev.ts index 967881b3c8b9..20d0a3950e7a 100644 --- a/packages/kit-bg/src/desktopApis/DesktopApiDev.ts +++ b/packages/kit-bg/src/desktopApis/DesktopApiDev.ts @@ -7,7 +7,6 @@ import { pathToFileURL } from 'url'; import AdmZip from 'adm-zip'; import { shell } from 'electron'; import logger from 'electron-log/main'; -import fetch from 'node-fetch'; import { ipcMessageKeys } from '@onekeyhq/desktop/app/config'; import { @@ -235,11 +234,14 @@ class DesktopApiDev { '[client-log-upload] curl command:', curlParts.join(' \\\n '), ); - const response = await fetch(uploadUrl, { + const requestInit: RequestInit & { duplex: 'half' } = { method: 'POST', headers: finalHeaders, - body: fileStream as unknown as any, - }); + body: fileStream as unknown as BodyInit, + // Node's native fetch requires duplex for a streaming request body. + duplex: 'half', + }; + const response = await fetch(uploadUrl, requestInit); const text = await response.text(); // Log only safe metadata. The response body is intentionally NOT // written here — for non-2xx the upstream is often a Cloudflare HTML diff --git a/patches/@sentry+electron+5.8.0.patch b/patches/@sentry+electron+5.8.0.patch new file mode 100644 index 000000000000..30555435c3c6 --- /dev/null +++ b/patches/@sentry+electron+5.8.0.patch @@ -0,0 +1,46 @@ +diff --git a/node_modules/@sentry/electron/esm/main/integrations/preload-injection.js b/node_modules/@sentry/electron/esm/main/integrations/preload-injection.js +index 31c01dd..703f480 100644 +--- a/node_modules/@sentry/electron/esm/main/integrations/preload-injection.js ++++ b/node_modules/@sentry/electron/esm/main/integrations/preload-injection.js +@@ -43,9 +43,15 @@ const preloadInjectionIntegration = defineIntegration(() => { + const path = getPreloadPath(); + if (path && typeof path === 'string' && isAbsolute(path) && existsSync(path)) { + for (const sesh of options.getSessions()) { +- // Fetch any existing preloads so we don't overwrite them +- const existing = sesh.getPreloads(); +- sesh.setPreloads([path, ...existing]); ++ // OneKey patch: Electron 35+ deprecates getPreloads/setPreloads. ++ if (typeof sesh.registerPreloadScript === 'function') { ++ sesh.registerPreloadScript({ type: 'frame', filePath: path }); ++ } ++ else { ++ // Fetch any existing preloads so we don't overwrite them ++ const existing = sesh.getPreloads(); ++ sesh.setPreloads([path, ...existing]); ++ } + } + } + else { +diff --git a/node_modules/@sentry/electron/main/integrations/preload-injection.js b/node_modules/@sentry/electron/main/integrations/preload-injection.js +index a592cd4..6a9fd12 100644 +--- a/node_modules/@sentry/electron/main/integrations/preload-injection.js ++++ b/node_modules/@sentry/electron/main/integrations/preload-injection.js +@@ -44,9 +44,15 @@ const preloadInjectionIntegration = core.defineIntegration(() => { + const path$1 = getPreloadPath(); + if (path$1 && typeof path$1 === 'string' && path.isAbsolute(path$1) && fs.existsSync(path$1)) { + for (const sesh of options.getSessions()) { +- // Fetch any existing preloads so we don't overwrite them +- const existing = sesh.getPreloads(); +- sesh.setPreloads([path$1, ...existing]); ++ // OneKey patch: Electron 35+ deprecates getPreloads/setPreloads. ++ if (typeof sesh.registerPreloadScript === 'function') { ++ sesh.registerPreloadScript({ type: 'frame', filePath: path$1 }); ++ } ++ else { ++ // Fetch any existing preloads so we don't overwrite them ++ const existing = sesh.getPreloads(); ++ sesh.setPreloads([path$1, ...existing]); ++ } + } + } + else { diff --git a/patches/bytebuffer+5.0.1.patch b/patches/bytebuffer+5.0.1.patch new file mode 100644 index 000000000000..d03810614402 --- /dev/null +++ b/patches/bytebuffer+5.0.1.patch @@ -0,0 +1,158 @@ +diff --git a/node_modules/bytebuffer/dist/bytebuffer-node.js b/node_modules/bytebuffer/dist/bytebuffer-node.js +index 1088689..edfa692 100644 +--- a/node_modules/bytebuffer/dist/bytebuffer-node.js ++++ b/node_modules/bytebuffer/dist/bytebuffer-node.js +@@ -60,7 +60,9 @@ module.exports = (function() { + * @type {!Buffer} + * @expose + */ +- this.buffer = capacity === 0 ? EMPTY_BUFFER : new Buffer(capacity); ++ // OneKey patch: preserve legacy uninitialized allocation without Node's deprecated Buffer constructor. ++ // this.buffer = capacity === 0 ? EMPTY_BUFFER : new Buffer(capacity); ++ this.buffer = capacity === 0 ? EMPTY_BUFFER : Buffer.allocUnsafe(capacity); + + /** + * Absolute read/write offset. +@@ -185,7 +187,9 @@ module.exports = (function() { + * @type {!Buffer} + * @inner + */ +- var EMPTY_BUFFER = new Buffer(0); ++ // OneKey patch: avoid Node's deprecated Buffer constructor. ++ // var EMPTY_BUFFER = new Buffer(0); ++ var EMPTY_BUFFER = Buffer.alloc(0); + + /** + * String.fromCharCode reference for compile-time renaming. +@@ -354,7 +358,9 @@ module.exports = (function() { + k = 0, + b; + if (buffer instanceof Uint8Array) { // Extract bytes from Uint8Array +- b = new Buffer(buffer.length); ++ // OneKey patch: preserve legacy uninitialized allocation without Node's deprecated Buffer constructor. ++ // b = new Buffer(buffer.length); ++ b = Buffer.allocUnsafe(buffer.length); + if (memcpy) { // Fast + memcpy(b, 0, buffer.buffer, buffer.byteOffset, buffer.byteOffset + buffer.length); + } else { // Slow +@@ -363,7 +369,9 @@ module.exports = (function() { + } + buffer = b; + } else if (buffer instanceof ArrayBuffer) { // Convert ArrayBuffer to Buffer +- b = new Buffer(buffer.byteLength); ++ // OneKey patch: preserve legacy uninitialized allocation without Node's deprecated Buffer constructor. ++ // b = new Buffer(buffer.byteLength); ++ b = Buffer.allocUnsafe(buffer.byteLength); + if (memcpy) { // Fast + memcpy(b, 0, buffer, 0, buffer.byteLength); + } else { // Slow +@@ -376,7 +384,9 @@ module.exports = (function() { + } else if (!(buffer instanceof Buffer)) { // Create from octets if it is an error, otherwise fail + if (Object.prototype.toString.call(buffer) !== "[object Array]") + throw TypeError("Illegal buffer"); +- buffer = new Buffer(buffer); ++ // OneKey patch: replace Node's deprecated value constructor. ++ // buffer = new Buffer(buffer); ++ buffer = Buffer.from(buffer); + } + bb = new ByteBuffer(0, littleEndian, noAssert); + if (buffer.length > 0) { // Avoid references to more than one EMPTY_BUFFER +@@ -2320,7 +2330,9 @@ module.exports = (function() { + ByteBufferPrototype.clone = function(copy) { + var bb = new ByteBuffer(0, this.littleEndian, this.noAssert); + if (copy) { +- var buffer = new Buffer(this.buffer.length); ++ // OneKey patch: preserve legacy uninitialized allocation without Node's deprecated Buffer constructor. ++ // var buffer = new Buffer(this.buffer.length); ++ var buffer = Buffer.allocUnsafe(this.buffer.length); + this.buffer.copy(buffer); + bb.buffer = buffer; + } else { +@@ -2364,7 +2376,9 @@ module.exports = (function() { + this.limit = 0; + return this; + } +- var buffer = new Buffer(len); ++ // OneKey patch: preserve legacy uninitialized allocation without Node's deprecated Buffer constructor. ++ // var buffer = new Buffer(len); ++ var buffer = Buffer.allocUnsafe(len); + this.buffer.copy(buffer, 0, begin, end); + this.buffer = buffer; + if (this.markedOffset >= 0) this.markedOffset -= begin; +@@ -2603,7 +2617,9 @@ module.exports = (function() { + if (len <= 0) return this; // Nothing to prepend + var diff = len - offset; + if (diff > 0) { // Not enough space before offset, so resize + move +- var buffer = new Buffer(this.buffer.length + diff); ++ // OneKey patch: preserve legacy uninitialized allocation without Node's deprecated Buffer constructor. ++ // var buffer = new Buffer(this.buffer.length + diff); ++ var buffer = Buffer.allocUnsafe(this.buffer.length + diff); + this.buffer.copy(buffer, len, offset, this.buffer.length); + this.buffer = buffer; + this.offset += diff; +@@ -2691,7 +2707,9 @@ module.exports = (function() { + throw RangeError("Illegal capacity: 0 <= "+capacity); + } + if (this.buffer.length < capacity) { +- var buffer = new Buffer(capacity); ++ // OneKey patch: preserve legacy uninitialized allocation without Node's deprecated Buffer constructor. ++ // var buffer = new Buffer(capacity); ++ var buffer = Buffer.allocUnsafe(capacity); + this.buffer.copy(buffer); + this.buffer = buffer; + } +@@ -2790,7 +2808,9 @@ module.exports = (function() { + throw RangeError("Illegal range: 0 <= "+offset+" <= "+limit+" <= "+this.buffer.length); + } + if (forceCopy) { +- var buffer = new Buffer(limit - offset); ++ // OneKey patch: preserve legacy uninitialized allocation without Node's deprecated Buffer constructor. ++ // var buffer = new Buffer(limit - offset); ++ var buffer = Buffer.allocUnsafe(limit - offset); + this.buffer.copy(buffer, 0, offset, limit); + return buffer; + } else { +@@ -2896,7 +2916,9 @@ module.exports = (function() { + * @expose + */ + ByteBuffer.fromBase64 = function(str, littleEndian) { +- return ByteBuffer.wrap(new Buffer(str, "base64"), littleEndian); ++ // OneKey patch: replace Node's deprecated string constructor. ++ // return ByteBuffer.wrap(new Buffer(str, "base64"), littleEndian); ++ return ByteBuffer.wrap(Buffer.from(str, "base64"), littleEndian); + return bb; + }; + +@@ -2952,7 +2974,9 @@ module.exports = (function() { + * @expose + */ + ByteBuffer.fromBinary = function(str, littleEndian) { +- return ByteBuffer.wrap(new Buffer(str, "binary"), littleEndian); ++ // OneKey patch: replace Node's deprecated string constructor. ++ // return ByteBuffer.wrap(new Buffer(str, "binary"), littleEndian); ++ return ByteBuffer.wrap(Buffer.from(str, "binary"), littleEndian); + return bb; + }; + +@@ -3185,7 +3209,9 @@ module.exports = (function() { + throw TypeError("Illegal str: Length not a multiple of 2"); + } + var bb = new ByteBuffer(0, littleEndian, true); +- bb.buffer = new Buffer(str, "hex"); ++ // OneKey patch: replace Node's deprecated string constructor. ++ // bb.buffer = new Buffer(str, "hex"); ++ bb.buffer = Buffer.from(str, "hex"); + bb.limit = bb.buffer.length; + return bb; + }; +@@ -3429,7 +3455,9 @@ module.exports = (function() { + if (typeof str !== 'string') + throw TypeError("Illegal str: Not a string"); + var bb = new ByteBuffer(0, littleEndian, noAssert); +- bb.buffer = new Buffer(str, "utf8"); ++ // OneKey patch: replace Node's deprecated string constructor. ++ // bb.buffer = new Buffer(str, "utf8"); ++ bb.buffer = Buffer.from(str, "utf8"); + bb.limit = bb.buffer.length; + return bb; + }; diff --git a/yarn.lock b/yarn.lock index 326b5f359b5c..b1abc8b39f85 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3586,6 +3586,13 @@ __metadata: languageName: node linkType: hard +"@electron-internal/extract-zip@npm:^1.0.1": + version: 1.0.4 + resolution: "@electron-internal/extract-zip@npm:1.0.4" + checksum: 10/de4f721b3810a8ef6a615e3f1a1eae901f3ad0c528cd4a20fe78efc67250c70c4c8bf91dc76a730bbea970dfc81e9aed18fd5ef465ac46856edd1f34f595b4ad + languageName: node + linkType: hard + "@electron/asar@npm:3.4.1, @electron/asar@npm:^3.3.1": version: 3.4.1 resolution: "@electron/asar@npm:3.4.1" @@ -3612,22 +3619,21 @@ __metadata: languageName: node linkType: hard -"@electron/get@npm:^2.0.0": - version: 2.0.3 - resolution: "@electron/get@npm:2.0.3" +"@electron/get@npm:^5.0.0": + version: 5.0.0 + resolution: "@electron/get@npm:5.0.0" dependencies: debug: "npm:^4.1.1" - env-paths: "npm:^2.2.0" - fs-extra: "npm:^8.1.0" - global-agent: "npm:^3.0.0" - got: "npm:^11.8.5" + env-paths: "npm:^3.0.0" + graceful-fs: "npm:^4.2.11" progress: "npm:^2.0.3" - semver: "npm:^6.2.0" + semver: "npm:^7.6.3" sumchecker: "npm:^3.0.1" + undici: "npm:^7.24.4" dependenciesMeta: - global-agent: + undici: optional: true - checksum: 10/ac736cdeac52513b23038c761ebcb9fd315d443675f12c975805d7bcddcdabe5be492310ce5f6f1915d27013bcdcf19d0dac73c72353120948bbdf01fb3e11bf + checksum: 10/b69a1874c80f2164e99f8fbab1916bd4f4bfd038310b7bcdadaebc5290f4b9cd61347286a71ed01a74863b14fd31d8def1bd3a6f2eac1d2324a6b0268b1bf309 languageName: node linkType: hard @@ -9695,21 +9701,19 @@ __metadata: "@stoprocent/noble": "npm:2.3.16" "@types/adm-zip": "npm:^0" "@types/electron-localshortcut": "npm:^3.1.0" - "@types/node-fetch": "npm:^2.6.1" adm-zip: "npm:0.5.17" concurrently: "npm:9.2.1" cross-env: "npm:7.0.3" - electron: "npm:39.8.9" + electron: "npm:43.1.1" electron-builder: "npm:26.4.0" electron-check-biometric-auth-changed: "npm:1.0.0" electron-context-menu: "npm:^3.5.0" electron-is-dev: "npm:^2.0.0" - electron-log: "npm:5.2.0" + electron-log: "npm:5.4.4" electron-store: "npm:^8.2.0" electron-updater: "npm:6.8.9" esbuild: "npm:0.27.2" glob: "npm:^7.2.0" - node-fetch: "npm:^2.6.7" passport-desktop: "npm:0.1.2" passport-desktop-win32-x64-msvc: "npm:0.1.2" rimraf: "npm:3.0.2" @@ -18579,16 +18583,6 @@ __metadata: languageName: node linkType: hard -"@types/node-fetch@npm:^2.6.1": - version: 2.6.9 - resolution: "@types/node-fetch@npm:2.6.9" - dependencies: - "@types/node": "npm:*" - form-data: "npm:^4.0.0" - checksum: 10/fc46141516191699b5f34fdf3516d3bd67421ad18da9f14785252abd22c1aa7a80ea5bcde835531b33df681f2b0d671786c3e987941547532fb447d77ebb8588 - languageName: node - linkType: hard - "@types/node-fetch@npm:^2.6.12": version: 2.6.12 resolution: "@types/node-fetch@npm:2.6.12" @@ -19091,15 +19085,6 @@ __metadata: languageName: node linkType: hard -"@types/yauzl@npm:^2.9.1": - version: 2.10.3 - resolution: "@types/yauzl@npm:2.10.3" - dependencies: - "@types/node": "npm:*" - checksum: 10/5ee966ea7bd6b2802f31ad4281c92c4c0b6dfa593c378a2582c58541fa113bec3d70eb0696b34ad95e8e6861a884cba6c3e351285816693ed176222f840a8c08 - languageName: node - linkType: hard - "@types/zxcvbn@npm:^4": version: 4.4.5 resolution: "@types/zxcvbn@npm:4.4.5" @@ -22771,13 +22756,6 @@ __metadata: languageName: node linkType: hard -"boolean@npm:^3.0.1": - version: 3.2.0 - resolution: "boolean@npm:3.2.0" - checksum: 10/d28a49dcaeef7fe10cf9fdf488214d3859f07350be8f5caa0c73ec621baf20650e5da6523262e5ce9221909519d4261c16d8430a5bf307fee9ef0e170cdb29f3 - languageName: node - linkType: hard - "borc@npm:3.0.0": version: 3.0.0 resolution: "borc@npm:3.0.0" @@ -23161,13 +23139,6 @@ __metadata: languageName: node linkType: hard -"buffer-crc32@npm:~0.2.3": - version: 0.2.13 - resolution: "buffer-crc32@npm:0.2.13" - checksum: 10/06252347ae6daca3453b94e4b2f1d3754a3b146a111d81c68924c22d91889a40623264e95e67955b1cb4a68cbedf317abeabb5140a9766ed248973096db5ce1c - languageName: node - linkType: hard - "buffer-equals@npm:^1.0.3": version: 1.0.4 resolution: "buffer-equals@npm:1.0.4" @@ -26642,10 +26613,10 @@ __metadata: languageName: node linkType: hard -"electron-log@npm:5.2.0": - version: 5.2.0 - resolution: "electron-log@npm:5.2.0" - checksum: 10/92e454f69f9d625ad7c5daef1e431d6489ab07b048720a39acba2a8cb9798850a41f65b10169a7672c99e2c90e07ed3fc62ab58ce229b8f00f8bf94195b6514c +"electron-log@npm:5.4.4": + version: 5.4.4 + resolution: "electron-log@npm:5.4.4" + checksum: 10/e48c09d517281f6e5b708b4a82a785c5d17865ef4e22141a1efcd6d8692698c39565bd897771173b5e013efce91860e7b95c459c2dfd7dbbac5757264beb1b0a languageName: node linkType: hard @@ -26740,16 +26711,17 @@ __metadata: languageName: node linkType: hard -"electron@npm:39.8.9": - version: 39.8.9 - resolution: "electron@npm:39.8.9" +"electron@npm:43.1.1": + version: 43.1.1 + resolution: "electron@npm:43.1.1" dependencies: - "@electron/get": "npm:^2.0.0" - "@types/node": "npm:^22.7.7" - extract-zip: "npm:^2.0.1" + "@electron-internal/extract-zip": "npm:^1.0.1" + "@electron/get": "npm:^5.0.0" + "@types/node": "npm:^24.9.0" bin: electron: cli.js - checksum: 10/7e6902177a34486595a3db7fd07cdc8b5a705e76fc8520527c15d72d09f0ce205765da02080ee77b5ebdc02d4dde365f80f100a4dc592cc05b75dc351abc8beb + install-electron: install.js + checksum: 10/3d0b4aafd5cc0c3292d87294703aba824d5f104ece6b15f5b1edc2edeb3f1b8ff4a34ce0e349a8da5fef8529a9f28ccc5065c837553e429b1d3b0ac1da8184cf languageName: node linkType: hard @@ -27255,13 +27227,6 @@ __metadata: languageName: node linkType: hard -"es6-error@npm:^4.1.1": - version: 4.1.1 - resolution: "es6-error@npm:4.1.1" - checksum: 10/48483c25701dc5a6376f39bbe2eaf5da0b505607ec5a98cd3ade472c1939242156660636e2e508b33211e48e88b132d245341595c067bd4a95ac79fa7134da06 - languageName: node - linkType: hard - "es6-iterator@npm:^2.0.3": version: 2.0.3 resolution: "es6-iterator@npm:2.0.3" @@ -29287,23 +29252,6 @@ __metadata: languageName: node linkType: hard -"extract-zip@npm:^2.0.1": - version: 2.0.1 - resolution: "extract-zip@npm:2.0.1" - dependencies: - "@types/yauzl": "npm:^2.9.1" - debug: "npm:^4.1.1" - get-stream: "npm:^5.1.0" - yauzl: "npm:^2.10.0" - dependenciesMeta: - "@types/yauzl": - optional: true - bin: - extract-zip: cli.js - checksum: 10/8cbda9debdd6d6980819cc69734d874ddd71051c9fe5bde1ef307ebcedfe949ba57b004894b585f758b7c9eeeea0e3d87f2dda89b7d25320459c2c9643ebb635 - languageName: node - linkType: hard - "extsprintf@npm:^1.2.0": version: 1.4.1 resolution: "extsprintf@npm:1.4.1" @@ -29509,15 +29457,6 @@ __metadata: languageName: node linkType: hard -"fd-slicer@npm:~1.1.0": - version: 1.1.0 - resolution: "fd-slicer@npm:1.1.0" - dependencies: - pend: "npm:~1.2.0" - checksum: 10/db3e34fa483b5873b73f248e818f8a8b59a6427fd8b1436cd439c195fdf11e8659419404826059a642b57d18075c856d06d6a50a1413b714f12f833a9341ead3 - languageName: node - linkType: hard - "fdir@npm:^6.5.0": version: 6.5.0 resolution: "fdir@npm:6.5.0" @@ -30634,20 +30573,6 @@ __metadata: languageName: node linkType: hard -"global-agent@npm:^3.0.0": - version: 3.0.0 - resolution: "global-agent@npm:3.0.0" - dependencies: - boolean: "npm:^3.0.1" - es6-error: "npm:^4.1.1" - matcher: "npm:^3.0.0" - roarr: "npm:^2.15.3" - semver: "npm:^7.3.2" - serialize-error: "npm:^7.0.1" - checksum: 10/a26d96d1d79af57a8ef957f66cef6f3889a8fa55131f0bbd72b8e1bc340a9b7ed7b627b96eaf5eb14aee08a8b4ad44395090e2cf77146e993f1d2df7abaa0a0d - languageName: node - linkType: hard - "global-directory@npm:^4.0.1": version: 4.0.1 resolution: "global-directory@npm:4.0.1" @@ -30716,7 +30641,7 @@ __metadata: languageName: node linkType: hard -"globalthis@npm:^1.0.1, globalthis@npm:^1.0.3": +"globalthis@npm:^1.0.3": version: 1.0.3 resolution: "globalthis@npm:1.0.3" dependencies: @@ -30819,7 +30744,7 @@ __metadata: languageName: node linkType: hard -"got@npm:^11.7.0, got@npm:^11.8.5": +"got@npm:^11.7.0": version: 11.8.6 resolution: "got@npm:11.8.6" dependencies: @@ -35226,15 +35151,6 @@ __metadata: languageName: node linkType: hard -"matcher@npm:^3.0.0": - version: 3.0.0 - resolution: "matcher@npm:3.0.0" - dependencies: - escape-string-regexp: "npm:^4.0.0" - checksum: 10/8bee1a7ab7609c2c21d9c9254b6785fa708eadf289032b556d57a34e98fcd4c537659a004dafee6ce80ab157099e645c199dc52678dff1e7fb0a6684e0da4dbe - languageName: node - linkType: hard - "math-intrinsics@npm:^1.1.0": version: 1.1.0 resolution: "math-intrinsics@npm:1.1.0" @@ -36559,12 +36475,12 @@ __metadata: languageName: node linkType: hard -"node-abi@npm:3.80.0": - version: 3.80.0 - resolution: "node-abi@npm:3.80.0" +"node-abi@npm:3.94.0": + version: 3.94.0 + resolution: "node-abi@npm:3.94.0" dependencies: semver: "npm:^7.3.5" - checksum: 10/f9d1d7cc1a088c0c8c9e4606ad594b860c664f3872aecbb2a735ef9ef7395324597c0ef16dc7952cbb747cac658df633588e98b1c97f0c01b18975a43d954f87 + checksum: 10/2f32c86f81d499e887ca22015f7032880aafb6441b9fe0f90fe61a9fcdaa7b6c25ceb92eee9f9e782bb30a3b49cdb7d9e05686778019b02ee01bb2edb4ef2fd5 languageName: node linkType: hard @@ -38129,13 +38045,6 @@ __metadata: languageName: node linkType: hard -"pend@npm:~1.2.0": - version: 1.2.0 - resolution: "pend@npm:1.2.0" - checksum: 10/6c72f5243303d9c60bd98e6446ba7d30ae29e3d56fdb6fae8767e8ba6386f33ee284c97efe3230a0d0217e2b1723b8ab490b1bbf34fcbb2180dbc8a9de47850d - languageName: node - linkType: hard - "performant-array-to-tree@npm:^1.11.0": version: 1.11.0 resolution: "performant-array-to-tree@npm:1.11.0" @@ -41790,20 +41699,6 @@ __metadata: languageName: node linkType: hard -"roarr@npm:^2.15.3": - version: 2.15.4 - resolution: "roarr@npm:2.15.4" - dependencies: - boolean: "npm:^3.0.1" - detect-node: "npm:^2.0.4" - globalthis: "npm:^1.0.1" - json-stringify-safe: "npm:^5.0.1" - semver-compare: "npm:^1.0.0" - sprintf-js: "npm:^1.1.2" - checksum: 10/baaa5ad91468bf1b7f0263c4132a40865c8638a3d0916b44dd0d42980a77fb53085a3792e3edf16fc4eea9e31c719793c88bd45b1623b760763c4dc59df97619 - languageName: node - linkType: hard - "rollup@npm:^2.79.2": version: 2.79.2 resolution: "rollup@npm:2.79.2" @@ -42255,13 +42150,6 @@ __metadata: languageName: node linkType: hard -"semver-compare@npm:^1.0.0": - version: 1.0.0 - resolution: "semver-compare@npm:1.0.0" - checksum: 10/75f9c7a7786d1756f64b1429017746721e07bd7691bdad6368f7643885d3a98a27586777e9699456564f4844b407e9f186cc1d588a3f9c0be71310e517e942c3 - languageName: node - linkType: hard - "semver@npm:2 || 3 || 4 || 5, semver@npm:^5.4.1, semver@npm:^5.5.0, semver@npm:^5.6.0": version: 5.7.2 resolution: "semver@npm:5.7.2" @@ -42318,7 +42206,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^6.0.0, semver@npm:^6.2.0, semver@npm:^6.3.0, semver@npm:^6.3.1": +"semver@npm:^6.0.0, semver@npm:^6.3.0, semver@npm:^6.3.1": version: 6.3.1 resolution: "semver@npm:6.3.1" bin: @@ -42422,15 +42310,6 @@ __metadata: languageName: node linkType: hard -"serialize-error@npm:^7.0.1": - version: 7.0.1 - resolution: "serialize-error@npm:7.0.1" - dependencies: - type-fest: "npm:^0.13.1" - checksum: 10/e0aba4dca2fc9fe74ae1baf38dbd99190e1945445a241ba646290f2176cdb2032281a76443b02ccf0caf30da5657d510746506368889a593b9835a497fc0732e - languageName: node - linkType: hard - "serialize-error@npm:^8.0.1": version: 8.1.0 resolution: "serialize-error@npm:8.1.0" @@ -43370,13 +43249,6 @@ __metadata: languageName: node linkType: hard -"sprintf-js@npm:^1.1.2": - version: 1.1.3 - resolution: "sprintf-js@npm:1.1.3" - checksum: 10/e7587128c423f7e43cc625fe2f87e6affdf5ca51c1cc468e910d8aaca46bb44a7fbcfa552f787b1d3987f7043aeb4527d1b99559e6621e01b42b3f45e5a24cbb - languageName: node - linkType: hard - "sprintf-js@npm:~1.0.2": version: 1.0.3 resolution: "sprintf-js@npm:1.0.3" @@ -45138,13 +45010,6 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^0.13.1": - version: 0.13.1 - resolution: "type-fest@npm:0.13.1" - checksum: 10/11e9476dc85bf97a71f6844fb67ba8e64a4c7e445724c0f3bd37eb2ddf4bc97c1dc9337bd880b28bce158de1c0cb275c2d03259815a5bf64986727197126ab56 - languageName: node - linkType: hard - "type-fest@npm:^0.16.0": version: 0.16.0 resolution: "type-fest@npm:0.16.0" @@ -45528,6 +45393,13 @@ __metadata: languageName: node linkType: hard +"undici@npm:^7.24.4": + version: 7.28.0 + resolution: "undici@npm:7.28.0" + checksum: 10/154423b280d623278a61decb437f8a7e581fb18b8c95556ef956b32a58cd668eadbb812d28e20678cb2dc545a566f35a3afc0962307ca801da30f4741117986d + languageName: node + linkType: hard + "unenv@npm:^1.7.4": version: 1.8.0 resolution: "unenv@npm:1.8.0" @@ -48122,16 +47994,6 @@ __metadata: languageName: node linkType: hard -"yauzl@npm:^2.10.0": - version: 2.10.0 - resolution: "yauzl@npm:2.10.0" - dependencies: - buffer-crc32: "npm:~0.2.3" - fd-slicer: "npm:~1.1.0" - checksum: 10/1e4c311050dc0cf2ee3dbe8854fe0a6cde50e420b3e561a8d97042526b4cf7a0718d6c8d89e9e526a152f4a9cec55bcea9c3617264115f48bd6704cf12a04445 - languageName: node - linkType: hard - "yocto-queue@npm:^0.1.0": version: 0.1.0 resolution: "yocto-queue@npm:0.1.0"