From 32fcfe45052ad55ac069635886adc083f03ba799 Mon Sep 17 00:00:00 2001 From: John Kleinschmidt Date: Tue, 25 Nov 2025 14:49:33 -0500 Subject: [PATCH] test: fixup test failures on linux (#49068) * test: fixup spec runner to properly fail on linux when tests fail * test: fixup dbus tests * test: disable context menu spellcheck tests on linux https://github.com/electron/electron/pull/48657 broke those tests (cherry picked from commit cc3c999148f2204f5f0515418bd0a9d500ddb955) * test:rebuild native modules (cherry picked from commit bb8e2a924be149583327f5deff44bcf928663400) * fix: wait for devtools blur event in focus test to avoid race condition (cherry picked from commit 6fd2575cbcff712632aaa7a4210dc582c6c70d01) * fix: wait for devtools blur event in focus test to avoid race condition (cherry picked from commit ea830139afcbd99c883358a8988d3ad4232d77f8) --------- Co-authored-by: Alice Zhao --- .../pipeline-segment-electron-test.yml | 4 +- package.json | 8 + script/spec-runner.js | 15 +- spec/ambient.d.ts | 2 + spec/api-notification-dbus-spec.ts | 7 +- spec/api-power-monitor-spec.ts | 7 +- spec/api-web-contents-spec.ts | 6 +- spec/package.json | 3 +- spec/spellchecker-spec.ts | 4 +- yarn.lock | 211 +++++++++++++----- 10 files changed, 203 insertions(+), 64 deletions(-) diff --git a/.github/workflows/pipeline-segment-electron-test.yml b/.github/workflows/pipeline-segment-electron-test.yml index 1ee6ad3b7b..19e86cec7e 100644 --- a/.github/workflows/pipeline-segment-electron-test.yml +++ b/.github/workflows/pipeline-segment-electron-test.yml @@ -228,9 +228,9 @@ jobs: runuser -u builduser -- xvfb-run script/actions/run-tests.sh script/yarn.js test --runners=main --trace-uncaught --enable-logging --files $tests_files | $ASAN_SYMBOLIZE else if [ "${{ inputs.target-arch }}" = "arm" ]; then - runuser -u builduser -- xvfb-run script/actions/run-tests.sh script/yarn.js test --skipYarnInstall --runners=main --trace-uncaught --enable-logging --files $tests_files + runuser -u builduser -- xvfb-run script/actions/run-tests.sh script/yarn.js test --skipYarnInstall --runners=main --enableRerun=3 --trace-uncaught --enable-logging --files $tests_files else - runuser -u builduser -- xvfb-run script/actions/run-tests.sh script/yarn.js test --runners=main --trace-uncaught --enable-logging --files $tests_files + runuser -u builduser -- xvfb-run script/actions/run-tests.sh script/yarn.js test --runners=main --enableRerun=3 --trace-uncaught --enable-logging --files $tests_files fi fi diff --git a/package.json b/package.json index 3b08ba6341..6ad82f368a 100644 --- a/package.json +++ b/package.json @@ -135,12 +135,20 @@ "node script/gen-libc++-filenames.js" ] }, + "resolutions": { + "dbus-native/xml2js": "0.5.0", + "abstract-socket": "github:deepak1556/node-abstractsocket#928cc591decd12aff7dad96449da8afc29832c19", + "minimist@npm:~0.0.1": "0.2.4" + }, "packageManager": "yarn@4.11.0", "workspaces": [ "spec", "spec/fixtures/native-addon/*" ], "dependenciesMeta": { + "abstract-socket": { + "built": true + }, "dugite": { "built": true } diff --git a/script/spec-runner.js b/script/spec-runner.js index e816cfbe18..e526c0d708 100755 --- a/script/spec-runner.js +++ b/script/spec-runner.js @@ -375,7 +375,7 @@ async function runTestUsingElectron (specDir, testName, shouldRerun, additionalA if (shouldRerun) { await rerunFailedTests(specDir, testName); } else { - return false; + process.exit(1); } } console.log(`${pass} Electron ${testName} process tests passed.`); @@ -430,6 +430,19 @@ async function installSpecModules (dir) { console.log(`${fail} Failed to yarn install in '${dir}'`); process.exit(1); } + + if (process.platform === 'linux') { + const { status: rebuildStatus } = childProcess.spawnSync('npm', ['rebuild', 'abstract-socket'], { + env, + cwd: dir, + stdio: 'inherit', + shell: process.platform === 'win32' + }); + if (rebuildStatus !== 0) { + console.log(`${fail} Failed to rebuild abstract-socket native module`); + process.exit(1); + } + } } function getSpecHash () { diff --git a/spec/ambient.d.ts b/spec/ambient.d.ts index c9fa27eb30..97fda55407 100644 --- a/spec/ambient.d.ts +++ b/spec/ambient.d.ts @@ -1,2 +1,4 @@ declare let standardScheme: string; declare let serviceWorkerScheme: string; + +declare module 'dbus-native'; diff --git a/spec/api-notification-dbus-spec.ts b/spec/api-notification-dbus-spec.ts index a66043e9e4..a601296536 100644 --- a/spec/api-notification-dbus-spec.ts +++ b/spec/api-notification-dbus-spec.ts @@ -10,7 +10,7 @@ import { nativeImage } from 'electron/common'; import { app } from 'electron/main'; import { expect } from 'chai'; -import * as dbus from 'dbus-ts'; +import * as dbus from 'dbus-native'; import * as path from 'node:path'; import { promisify } from 'node:util'; @@ -40,9 +40,10 @@ ifdescribe(!skip)('Notification module (dbus)', () => { const path = '/org/freedesktop/Notifications'; const iface = 'org.freedesktop.DBus.Mock'; console.log(`session bus: ${process.env.DBUS_SESSION_BUS_ADDRESS}`); - const bus = await dbus.sessionBus(); + const bus = dbus.sessionBus(); const service = bus.getService(serviceName); - mock = await service.getInterface(path, iface); + const getInterface = promisify(service.getInterface.bind(service)); + mock = await getInterface(path, iface); getCalls = promisify(mock.GetCalls.bind(mock)); reset = promisify(mock.Reset.bind(mock)); }); diff --git a/spec/api-power-monitor-spec.ts b/spec/api-power-monitor-spec.ts index e3b5e9c73c..47a2e6cdab 100644 --- a/spec/api-power-monitor-spec.ts +++ b/spec/api-power-monitor-spec.ts @@ -7,7 +7,7 @@ // See https://pypi.python.org/pypi/python-dbusmock for more information about // python-dbusmock. import { expect } from 'chai'; -import * as dbus from 'dbus-ts'; +import * as dbus from 'dbus-native'; import { once } from 'node:events'; import { setTimeout } from 'node:timers/promises'; @@ -20,9 +20,10 @@ describe('powerMonitor', () => { ifdescribe(process.platform === 'linux' && process.env.DBUS_SYSTEM_BUS_ADDRESS != null)('when powerMonitor module is loaded with dbus mock', () => { before(async () => { - const systemBus = await dbus.systemBus(); + const systemBus = dbus.systemBus(); const loginService = systemBus.getService('org.freedesktop.login1'); - logindMock = await loginService.getInterface('/org/freedesktop/login1', 'org.freedesktop.DBus.Mock'); + const getInterface = promisify(loginService.getInterface.bind(loginService)); + logindMock = await getInterface('/org/freedesktop/login1', 'org.freedesktop.DBus.Mock'); getCalls = promisify(logindMock.GetCalls.bind(logindMock)); emitSignal = promisify(logindMock.EmitSignal.bind(logindMock)); reset = promisify(logindMock.Reset.bind(logindMock)); diff --git a/spec/api-web-contents-spec.ts b/spec/api-web-contents-spec.ts index d6b86250f5..008dc1961d 100644 --- a/spec/api-web-contents-spec.ts +++ b/spec/api-web-contents-spec.ts @@ -1019,13 +1019,15 @@ describe('webContents module', () => { assert(devToolsWebContents !== null); const windowFocused = once(window, 'focus'); + const devToolsBlurred = once(devToolsWebContents, 'blur'); window.focus(); - await windowFocused; + await Promise.all([windowFocused, devToolsBlurred]); expect(devToolsWebContents.isFocused()).to.be.false(); const devToolsWebContentsFocused = once(devToolsWebContents, 'focus'); + const windowBlurred = once(window, 'blur'); window.webContents.inspectElement(100, 100); - await devToolsWebContentsFocused; + await Promise.all([devToolsWebContentsFocused, windowBlurred]); expect(devToolsWebContents.isFocused()).to.be.true(); expect(window.isFocused()).to.be.false(); diff --git a/spec/package.json b/spec/package.json index 6538ac6178..545e704362 100644 --- a/spec/package.json +++ b/spec/package.json @@ -27,12 +27,13 @@ "@types/uuid": "^3.4.6", "@types/w3c-web-serial": "^1.0.7", "@types/ws": "^7.2.0", + "abstract-socket": "github:deepak1556/node-abstractsocket#928cc591decd12aff7dad96449da8afc29832c19", "basic-auth": "^2.0.1", "busboy": "^1.6.0", "chai": "^4.2.0", "chai-as-promised": "^7.1.1", "coffeescript": "^2.4.1", - "dbus-ts": "^0.0.7", + "dbus-native": "github:nornagon/dbus-native#master", "dirty-chai": "^2.0.1", "express": "^4.20.0", "graceful-fs": "^4.1.15", diff --git a/spec/spellchecker-spec.ts b/spec/spellchecker-spec.ts index 25341e4bdd..3a36f3e9c8 100644 --- a/spec/spellchecker-spec.ts +++ b/spec/spellchecker-spec.ts @@ -88,8 +88,8 @@ ifdescribe(features.isBuiltinSpellCheckerEnabled())('spellchecker', function () await closeWindow(w); }); - // Context menu test can not run on Windows. - const shouldRun = process.platform !== 'win32'; + // Context menu test can not run on Windows or Linux (https://github.com/electron/electron/pull/48657 broke linux). + const shouldRun = process.platform !== 'win32' && process.platform !== 'linux'; ifit(shouldRun)('should detect correctly spelled words as correct', async () => { await w.webContents.executeJavaScript('document.body.querySelector("textarea").value = "typography"'); diff --git a/yarn.lock b/yarn.lock index aaf53ed71b..5e9bba8a53 100644 --- a/yarn.lock +++ b/yarn.lock @@ -412,13 +412,6 @@ __metadata: languageName: node linkType: hard -"@dbus-types/dbus@npm:^0.0.4": - version: 0.0.4 - resolution: "@dbus-types/dbus@npm:0.0.4" - checksum: 10c0/7d3e2f6f5da72d42ad29e8bbc41c296846795d5685f672e85e71bf5e4c3f6b3b0dc17459cad62683b93b7fd48395c2e19e30a79d6c45e3b7b53f833e21caa29f - languageName: node - linkType: hard - "@discoveryjs/json-ext@npm:^0.5.0": version: 0.5.7 resolution: "@discoveryjs/json-ext@npm:0.5.7" @@ -788,20 +781,6 @@ __metadata: languageName: node linkType: hard -"@homebridge/long@npm:^5.2.1": - version: 5.2.1 - resolution: "@homebridge/long@npm:5.2.1" - checksum: 10c0/b8a5aa8a515152d6ad6f19d9ade41c56fadf01b14d717c62ba208a838fd69716cfcc44a8448b0ebf5a8a106f37ef517fc0a65c46da022ab8bc22dc027162d426 - languageName: node - linkType: hard - -"@homebridge/put@npm:^0.0.8": - version: 0.0.8 - resolution: "@homebridge/put@npm:0.0.8" - checksum: 10c0/ac61ce4f2df9fee9e2c6a7b1e959468129f8f307a5a9320710e8f5da2e5b5a467d02c07937777084676d61aa40b221ca399e51f02182ba8bc8a02031bfb92d7a - languageName: node - linkType: hard - "@humanwhocodes/config-array@npm:^0.13.0": version: 0.13.0 resolution: "@humanwhocodes/config-array@npm:0.13.0" @@ -1002,6 +981,13 @@ __metadata: languageName: node linkType: hard +"@nornagon/put@npm:0.0.8": + version: 0.0.8 + resolution: "@nornagon/put@npm:0.0.8" + checksum: 10c0/855f9cee72d76570c76cdded2c3727ae7c3caa08208066ba77561675a43173bc62c8ee6dce6f4b64d65c5b465d20b4f9d986975ef3f2a6413e6f6c97bb5e1627 + languageName: node + linkType: hard + "@npmcli/agent@npm:^3.0.0": version: 3.0.0 resolution: "@npmcli/agent@npm:3.0.0" @@ -1914,11 +1900,11 @@ __metadata: linkType: hard "@types/node@npm:^22.7.7": - version: 22.19.0 - resolution: "@types/node@npm:22.19.0" + version: 22.19.1 + resolution: "@types/node@npm:22.19.1" dependencies: undici-types: "npm:~6.21.0" - checksum: 10c0/66b98fcd38efb4ae58c628d61fed2b8f17c830eb665d8bceabc4174cae1dd81b8e4caac4c70d7dc929f9f76a3dc46cb21f480e904d0b898297bd12c0a2d1571a + checksum: 10c0/6edd93aea86da740cb7872626839cd6f4a67a049d3a3a6639cb592c620ec591408a30989ab7410008d1a0b2d4985ce50f1e488e79c033e4476d3bec6833b0a2f languageName: node linkType: hard @@ -2547,6 +2533,16 @@ __metadata: languageName: node linkType: hard +"abstract-socket@github:deepak1556/node-abstractsocket#928cc591decd12aff7dad96449da8afc29832c19": + version: 2.1.1 + resolution: "abstract-socket@https://github.com/deepak1556/node-abstractsocket.git#commit=928cc591decd12aff7dad96449da8afc29832c19" + dependencies: + bindings: "npm:^1.2.1" + node-addon-api: "npm:8.0.0" + checksum: 10c0/b2117ef92456f0c8fedbac9cf9a6cdec2b957bd320943e01eeff396ebfc2ca50eb2a67cef4461ce5326e4b97d6d2fd16777037131518a1f0b7aa7a5b6ef4f207 + languageName: node + linkType: hard + "accepts@npm:~1.3.8": version: 1.3.8 resolution: "accepts@npm:1.3.8" @@ -3159,6 +3155,15 @@ __metadata: languageName: node linkType: hard +"bindings@npm:^1.2.1": + version: 1.5.0 + resolution: "bindings@npm:1.5.0" + dependencies: + file-uri-to-path: "npm:1.0.0" + checksum: 10c0/3dab2491b4bb24124252a91e656803eac24292473e56554e35bbfe3cc1875332cfa77600c3bac7564049dc95075bf6fcc63a4609920ff2d64d0fe405fcf0d4ba + languageName: node + linkType: hard + "bl@npm:^4.1.0": version: 4.1.0 resolution: "bl@npm:4.1.0" @@ -4147,15 +4152,24 @@ __metadata: languageName: node linkType: hard -"dbus-ts@npm:^0.0.7": - version: 0.0.7 - resolution: "dbus-ts@npm:0.0.7" +"dbus-native@github:nornagon/dbus-native#master": + version: 0.4.0 + resolution: "dbus-native@https://github.com/nornagon/dbus-native.git#commit=b90ed62d0b5cb93909173c3e0551d9bff0602a90" dependencies: - "@dbus-types/dbus": "npm:^0.0.4" - "@homebridge/long": "npm:^5.2.1" - "@homebridge/put": "npm:^0.0.8" - xml2js: "npm:^0.4.23" - checksum: 10c0/195b65ba2e87f584c83cd7805d5ad8d83890b1f9b1a2ba779393b43c64a1a66fd4e9e87944bf9b0f49e7e22091296b213490120111fc014e68167a6e1e83b3fe + "@nornagon/put": "npm:0.0.8" + abstract-socket: "npm:^2.0.0" + event-stream: "npm:^4.0.0" + hexy: "npm:^0.2.10" + long: "npm:^4.0.0" + optimist: "npm:^0.6.1" + safe-buffer: "npm:^5.1.1" + xml2js: "npm:^0.4.17" + dependenciesMeta: + abstract-socket: + optional: true + bin: + dbus2js: ./bin/dbus2js.js + checksum: 10c0/4467ae4f9f1e9d5f7fc4d12f227a7cf5e45f77c89743646ccef7a1f89e5f37fbe671b47488cf78d6557fd6d4f2c3719f5c5a1de70078843e6b0f317d12aa55b1 languageName: node linkType: hard @@ -4492,6 +4506,13 @@ __metadata: languageName: node linkType: hard +"duplexer@npm:^0.1.1": + version: 0.1.2 + resolution: "duplexer@npm:0.1.2" + checksum: 10c0/c57bcd4bdf7e623abab2df43a7b5b23d18152154529d166c1e0da6bee341d84c432d157d7e97b32fecb1bf3a8b8857dd85ed81a915789f550637ed25b8e64fc2 + languageName: node + linkType: hard + "duplexer@npm:~0.1.1": version: 0.1.1 resolution: "duplexer@npm:0.1.1" @@ -4556,12 +4577,13 @@ __metadata: "@types/uuid": "npm:^3.4.6" "@types/w3c-web-serial": "npm:^1.0.7" "@types/ws": "npm:^7.2.0" + abstract-socket: "github:deepak1556/node-abstractsocket#928cc591decd12aff7dad96449da8afc29832c19" basic-auth: "npm:^2.0.1" busboy: "npm:^1.6.0" chai: "npm:^4.2.0" chai-as-promised: "npm:^7.1.1" coffeescript: "npm:^2.4.1" - dbus-ts: "npm:^0.0.7" + dbus-native: "github:nornagon/dbus-native#master" dirty-chai: "npm:^2.0.1" express: "npm:^4.20.0" graceful-fs: "npm:^4.1.15" @@ -4649,6 +4671,8 @@ __metadata: webpack-cli: "npm:^5.1.4" wrapper-webpack-plugin: "npm:^2.2.0" dependenciesMeta: + abstract-socket: + built: true dugite: built: true languageName: unknown @@ -5644,6 +5668,21 @@ __metadata: languageName: node linkType: hard +"event-stream@npm:^4.0.0": + version: 4.0.1 + resolution: "event-stream@npm:4.0.1" + dependencies: + duplexer: "npm:^0.1.1" + from: "npm:^0.1.7" + map-stream: "npm:0.0.7" + pause-stream: "npm:^0.0.11" + split: "npm:^1.0.1" + stream-combiner: "npm:^0.2.2" + through: "npm:^2.3.8" + checksum: 10c0/cedb3f7ffda81f1524b66c284b4a41bb8407246bd7fe461b89a07807d28753460596e430f1346c135a64c5ba88d2a5d0711d072379b39c2266756125877aebd5 + languageName: node + linkType: hard + "eventemitter3@npm:^5.0.1": version: 5.0.1 resolution: "eventemitter3@npm:5.0.1" @@ -5882,6 +5921,13 @@ __metadata: languageName: node linkType: hard +"file-uri-to-path@npm:1.0.0": + version: 1.0.0 + resolution: "file-uri-to-path@npm:1.0.0" + checksum: 10c0/3b545e3a341d322d368e880e1c204ef55f1d45cdea65f7efc6c6ce9e0c4d22d802d5629320eb779d006fe59624ac17b0e848d83cc5af7cd101f206cb704f5519 + languageName: node + linkType: hard + "filename-reserved-regex@npm:^2.0.0": version: 2.0.0 resolution: "filename-reserved-regex@npm:2.0.0" @@ -6074,6 +6120,13 @@ __metadata: languageName: node linkType: hard +"from@npm:^0.1.7": + version: 0.1.7 + resolution: "from@npm:0.1.7" + checksum: 10c0/3aab5aea8fe8e1f12a5dee7f390d46a93431ce691b6222dcd5701c5d34378e51ca59b44967da1105a0f90fcdf5d7629d963d51e7ccd79827d19693bdcfb688d4 + languageName: node + linkType: hard + "fs-extra@npm:^10.0.0, fs-extra@npm:^10.1.0": version: 10.1.0 resolution: "fs-extra@npm:10.1.0" @@ -6817,6 +6870,15 @@ __metadata: languageName: node linkType: hard +"hexy@npm:^0.2.10": + version: 0.2.11 + resolution: "hexy@npm:0.2.11" + bin: + hexy: ./bin/hexy_cmd.js + checksum: 10c0/469fb0f9e4fb491cb60660bfecd6ddfc5be3cc4a9edd938eabcde449b6fc5215a1ca3a9e7285dd352fe7f0e2b94a259dc141d8a9cee4097989c60e24e0f8e590 + languageName: node + linkType: hard + "hosted-git-info@npm:^2.1.4": version: 2.8.9 resolution: "hosted-git-info@npm:2.8.9" @@ -8303,6 +8365,13 @@ __metadata: languageName: node linkType: hard +"long@npm:^4.0.0": + version: 4.0.0 + resolution: "long@npm:4.0.0" + checksum: 10c0/50a6417d15b06104dbe4e3d4a667c39b137f130a9108ea8752b352a4cfae047531a3ac351c181792f3f8768fe17cca6b0f406674a541a86fb638aaac560d83ed + languageName: node + linkType: hard + "longest-streak@npm:^3.0.0": version: 3.0.0 resolution: "longest-streak@npm:3.0.0" @@ -8418,6 +8487,13 @@ __metadata: languageName: node linkType: hard +"map-stream@npm:0.0.7": + version: 0.0.7 + resolution: "map-stream@npm:0.0.7" + checksum: 10c0/77da244656dad5013bd147b0eef6f0343a212f14761332b97364fe348d4d70f0b8a0903457d6fc88772ec7c3d4d048b24f8db3aa5c0f77a8ce8bf2391473b8ec + languageName: node + linkType: hard + "markdown-extensions@npm:^2.0.0": version: 2.0.0 resolution: "markdown-extensions@npm:2.0.0" @@ -9155,14 +9231,14 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.0.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6, minimist@npm:~1.2.0": - version: 1.2.6 - resolution: "minimist@npm:1.2.6" - checksum: 10c0/d0b566204044481c4401abbd24cc75814e753b37268e7fe7ccc78612bf3e37bf1e45a6c43fb0b119445ea1c413c000bde013f320b7211974f2f49bcbec1d0dbf +"minimist@npm:0.2.4": + version: 0.2.4 + resolution: "minimist@npm:0.2.4" + checksum: 10c0/6a8e8f4afa4a60d578b3eddabef1e3a40f3aa308290b17a55e060bbacfba7a575fd77f310969dd6b514c24251438a43039aafa0d6c9a3471ac2b5b45027d3369 languageName: node linkType: hard -"minimist@npm:^1.2.0, minimist@npm:^1.2.8": +"minimist@npm:^1.0.0, minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6, minimist@npm:^1.2.8, minimist@npm:~1.2.0": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 @@ -9457,6 +9533,15 @@ __metadata: languageName: node linkType: hard +"node-addon-api@npm:8.0.0": + version: 8.0.0 + resolution: "node-addon-api@npm:8.0.0" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/20eb231362cc07c62d9839164473744d985be5d82685214f3750d990d9f61ef366e0ba112a766c925d640ed29b2a500b83568e895dc2444dcd5db01e615aac2b + languageName: node + linkType: hard + "node-fetch@npm:^2.6.1": version: 2.6.8 resolution: "node-fetch@npm:2.6.8" @@ -9833,6 +9918,16 @@ __metadata: languageName: node linkType: hard +"optimist@npm:^0.6.1": + version: 0.6.1 + resolution: "optimist@npm:0.6.1" + dependencies: + minimist: "npm:~0.0.1" + wordwrap: "npm:~0.0.2" + checksum: 10c0/8cb417328121e732dbfb4d94d53bb39b1406446b55323ed4ce787decc52394927e051ba879eb3ffa3171fe22a35ce13b460114b60effcead77443ee87c2f9b0f + languageName: node + linkType: hard + "optionator@npm:^0.9.3": version: 0.9.4 resolution: "optionator@npm:0.9.4" @@ -10266,6 +10361,15 @@ __metadata: languageName: node linkType: hard +"pause-stream@npm:^0.0.11": + version: 0.0.11 + resolution: "pause-stream@npm:0.0.11" + dependencies: + through: "npm:~2.3" + checksum: 10c0/86f12c64cdaaa8e45ebaca4e39a478e1442db8b4beabc280b545bfaf79c0e2f33c51efb554aace5c069cc441c7b924ba484837b345eaa4ba6fc940d62f826802 + languageName: node + linkType: hard + "pdfjs-dist@npm:4.2.67": version: 4.2.67 resolution: "pdfjs-dist@npm:4.2.67" @@ -11797,7 +11901,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 @@ -12480,6 +12584,16 @@ __metadata: languageName: node linkType: hard +"stream-combiner@npm:^0.2.2": + version: 0.2.2 + resolution: "stream-combiner@npm:0.2.2" + dependencies: + duplexer: "npm:~0.1.1" + through: "npm:~2.3.4" + checksum: 10c0/b5d2782fbfa9251c88e01af1b1f54bc183673a776989dce2842b345be7fc3ce7eb2eade363b3c198ba0e5153a20a96e0014d0d0e884153f885d7ee919f22b639 + languageName: node + linkType: hard + "stream-json@npm:^1.8.0": version: 1.9.1 resolution: "stream-json@npm:1.9.1" @@ -12976,7 +13090,7 @@ __metadata: languageName: node linkType: hard -"through@npm:2, through@npm:^2.3.6": +"through@npm:2, through@npm:^2.3.6, through@npm:^2.3.8, through@npm:~2.3, through@npm:~2.3.4": version: 2.3.8 resolution: "through@npm:2.3.8" checksum: 10c0/4b09f3774099de0d4df26d95c5821a62faee32c7e96fb1f4ebd54a2d7c11c57fe88b0a0d49cf375de5fee5ae6bf4eb56dbbf29d07366864e2ee805349970d3cc @@ -14199,6 +14313,13 @@ __metadata: languageName: node linkType: hard +"wordwrap@npm:~0.0.2": + version: 0.0.3 + resolution: "wordwrap@npm:0.0.3" + checksum: 10c0/b3b212f8b2167091f59bc60929ada2166eb157abb6c8c82e2a705fe5aa5876440c3966ab39eb6c7bcb2ff0ac0c8d9fba726a9c2057b83bd65cdc1858f9d816ce + languageName: node + linkType: hard + "workerpool@npm:^6.5.1": version: 6.5.1 resolution: "workerpool@npm:6.5.1" @@ -14308,16 +14429,6 @@ __metadata: languageName: node linkType: hard -"xml2js@npm:^0.4.23": - version: 0.4.23 - resolution: "xml2js@npm:0.4.23" - dependencies: - sax: "npm:>=0.6.0" - xmlbuilder: "npm:~11.0.0" - checksum: 10c0/a3f41c9afc46d5bd0bea4070e5108777b605fd5ce2ebb978a68fd4c75513978ad5939f8135664ffea6f1adb342f391b1ba1584ed7955123b036e9ab8a1d26566 - languageName: node - linkType: hard - "xml@npm:^1.0.0": version: 1.0.1 resolution: "xml@npm:1.0.1"