Compare commits

...

9 Commits

Author SHA1 Message Date
David Sanders
efb3fd98c6 build: lint commits on Chromium roller branches (#49655)
* build: lint commits on Chromium roller branches

Assisted-By: Claude Opus 4.5

* chore: add ability to skip linting CLs by adding #nolint

* chore: only exit with non-zero exit code in CI
2026-02-18 20:45:44 -08:00
Shelley Vohr
9ca9311b73 docs: note required windows in 'new-window-for-tab' event (#49851)
docs: note required windows in new-window-for-tab
2026-02-18 19:30:43 -08:00
Samuel Attard
8b05717661 docs: clarify ASAR integrity is supported in MAS builds (#49852)
* docs: clarify ASAR integrity is supported in MAS builds

Add a note to the ASAR integrity documentation explicitly stating
that this feature is fully supported and recommended in Mac App
Store builds. While MAS-installed apps have system-level protections,
ASAR integrity provides an additional security layer and is important
for MAS builds distributed outside the Mac App Store.

Slack thread: https://electronhq.slack.com/archives/CB6CG54DB/p1771449093872419?thread_ts=1771446183.473289&cid=CB6CG54DB

https://claude.ai/code/session_01A97nfiqHUVxLNaQyHVXS7j

* docs: clarify ASAR integrity support for MAS builds

Updates the ASAR integrity documentation to explicitly mention that
it is supported and recommended in Mac App Store builds. Clarifies
that while MAS-installed apps have system-level protections (Resources
folder owned by root), ASAR integrity is especially important when
distributing MAS builds through other channels like direct download,
since those installations won't have the read-only protections.

https://claude.ai/code/session_012mBNZQW34h91NRcdFaLxNh

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-02-18 14:14:00 -08:00
John Kleinschmidt
be45b5f8e7 ci: fixup build stats upload on Windows (#49845) 2026-02-18 15:00:30 -05:00
dependabot[bot]
87597a99de build(deps-dev): bump webpack from 5.95.0 to 5.104.1 in the npm_and_yarn group across 1 directory (#49779)
build(deps-dev): bump webpack

Bumps the npm_and_yarn group with 1 update in the / directory: [webpack](https://github.com/webpack/webpack).


Updates `webpack` from 5.95.0 to 5.104.1
- [Release notes](https://github.com/webpack/webpack/releases)
- [Changelog](https://github.com/webpack/webpack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack/compare/v5.95.0...v5.104.1)

---
updated-dependencies:
- dependency-name: webpack
  dependency-version: 5.104.1
  dependency-type: direct:development
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-18 14:22:25 -05:00
Shelley Vohr
3ed52a3ded build: roll sysroots (#49844) 2026-02-18 13:24:29 -05:00
Shelley Vohr
dfdf04976e fix: draggable region position with docked DevTools (#49822) 2026-02-18 11:49:18 -05:00
Shelley Vohr
f4ba25a3da fix: frameless window resize in MAS builds (#49780) 2026-02-18 10:35:10 -05:00
Robo
05061544ab feat: enable WASM trap handlers in all Node.js processes (#48983)
fix: enable WASM trap handlers in all Node.js processes

```
Original reason for revert:

Some apps started throwing exception on startup
https://github.com/electron/electron/issues/48956
```

We now move the trap handler registeration before
any user script execution. Add a fuse to support
disabling the feature is application needs to run
in memory constrained environments.
2026-02-18 12:08:03 +09:00
22 changed files with 762 additions and 306 deletions

View File

@@ -98,7 +98,7 @@ runs:
# Upload build stats to Datadog
if ($env:DD_API_KEY) {
try {
npx node electron\script\build-stats.mjs out\Default\siso.exe.INFO --upload-stats
npx node electron\script\build-stats.mjs out\Default\siso.exe.INFO --upload-stats ; $LASTEXITCODE = 0
} catch {
Write-Host "Build stats upload failed, continuing..."
}

View File

@@ -9,5 +9,6 @@
"embedded_asar_integrity_validation": "0",
"only_load_app_from_asar": "0",
"load_browser_process_specific_v8_snapshot": "0",
"grant_file_protocol_extra_privileges": "1"
"grant_file_protocol_extra_privileges": "1",
"wasm_trap_handlers": "1"
}

View File

@@ -250,7 +250,9 @@ Returns:
Emitted when the user clicks the native macOS new tab button. The new
tab button is only visible if the current `BrowserWindow` has a
`tabbingIdentifier`
`tabbingIdentifier`.
You must create a window in this handler in order for macOS tabbing to work as expected.
### Event: 'browser-window-blur'

View File

@@ -351,7 +351,11 @@ Emitted when the window has closed a sheet.
#### Event: 'new-window-for-tab' _macOS_
Emitted when the native new tab button is clicked.
Emitted when the user clicks the native macOS new tab button. The new
tab button is only visible if the current `BrowserWindow` has a
`tabbingIdentifier`.
You must create a window in this handler in order for macOS tabbing to work as expected.
#### Event: 'system-context-menu' _Windows_ _Linux_

View File

@@ -435,7 +435,11 @@ Emitted when the window has closed a sheet.
#### Event: 'new-window-for-tab' _macOS_
Emitted when the native new tab button is clicked.
Emitted when the user clicks the native macOS new tab button. The new
tab button is only visible if the current `BrowserWindow` has a
`tabbingIdentifier`.
You must create a window in this handler in order for macOS tabbing to work as expected.
#### Event: 'system-context-menu' _Windows_ _Linux_

View File

@@ -15,6 +15,14 @@ Currently, ASAR integrity checking is supported on:
* macOS as of `electron>=16.0.0`
* Windows as of `electron>=30.0.0`
> [!NOTE]
> ASAR integrity is fully supported in Mac App Store (MAS) builds and is recommended
> as a best practice. While MAS-installed applications have their `Resources/` folder
> protected by the system (owned by root), ASAR integrity still provides an additional
> layer of security. It is especially important if you use Electron's MAS build but
> distribute your app through channels other than the Mac App Store (such as direct
> download), since those installations won't have the system-level read-only protections.
In order to enable ASAR integrity checking, you also need to ensure that your `app.asar` file
was generated by a version of the `@electron/asar` npm package that supports ASAR integrity.

View File

@@ -137,6 +137,33 @@ The extra privileges granted to the `file://` protocol by this fuse are incomple
* `file://` protocol pages have universal access granted to child frames also running on `file://`
protocols regardless of sandbox settings
### `wasmTrapHandlers`
**Default:** Enabled
**@electron/fuses:** `FuseV1Options.WasmTrapHandlers`
The `wasmTrapHandlers` fuse controls whether V8 will use signal handlers to trap Out of Bounds memory
access from WebAssembly. The feature works by surrounding the WebAssembly memory with large guard regions
and then installing a signal handler that traps attempt to access memory in the guard region. The feature
is only supported on the following 64-bit systems.
Linux. MacOS, Windows - x86_64
Linux, MacOS - aarch64
| Guard Pages | WASM heap | Guard Pages |
|-----8GB-----| |-----8GB-----|
When the fuse is disabled V8 will use explicit bound checks in the generated WebAssembly code to ensure
memory safety. However, this method has some downsides
* The compiler generates extra nodes for each memory reference, leading to longer compile times due to the
additional processing time needed for these nodes.
* In turn, these extra nodes lead to lots of extra code being generated, making WebAssembly modules bigger
than they ideally should be.
* This extra code, particularly the compare and branch before every memory reference,
incurs a significant runtime cost.
## How do I flip fuses?
### The easy way

View File

@@ -56,7 +56,7 @@
"ts-node": "6.2.0",
"typescript": "^5.8.3",
"url": "^0.11.4",
"webpack": "^5.95.0",
"webpack": "^5.104.1",
"webpack-cli": "^6.0.1",
"wrapper-webpack-plugin": "^2.2.0",
"yaml": "^2.8.1"
@@ -65,7 +65,7 @@
"scripts": {
"asar": "asar",
"generate-version-json": "node script/generate-version-json.js",
"lint": "node ./script/lint.js && npm run lint:docs",
"lint": "node ./script/lint.js && npm run lint:docs && npm run lint:chromium-roller",
"lint:js": "node ./script/lint.js --js",
"lint:clang-format": "python3 script/run-clang-format.py -r -c shell/ || (echo \"\\nCode not formatted correctly.\" && exit 1)",
"lint:clang-tidy": "ts-node ./script/run-clang-tidy.ts",
@@ -80,6 +80,7 @@
"lint:ts-check-js-in-markdown": "lint-roller-markdown-ts-check --root docs \"**/*.md\" --ignore \"breaking-changes.md\"",
"lint:js-in-markdown": "lint-roller-markdown-standard --root docs \"**/*.md\"",
"lint:api-history": "lint-roller-markdown-api-history --root \"./docs/api/\" --schema \"./docs/api-history.schema.json\" --breaking-changes-file \"./docs/breaking-changes.md\" --check-placement --check-strings \"*.md\"",
"lint:chromium-roller": "node ./script/lint-roller-chromium-changes.mjs",
"create-api-json": "node script/create-api-json.mjs",
"create-typescript-definitions": "npm run create-api-json && electron-typescript-definitions --api=electron-api.json && node spec/ts-smoke/runner.js",
"gn-typescript-definitions": "npm run create-typescript-definitions && node script/cp.mjs electron.d.ts",
@@ -103,6 +104,9 @@
"electron"
],
"lint-staged": {
"*": [
"npm run lint:chromium-roller"
],
"*.{js,ts}": [
"node script/lint.js --js --fix --only --"
],

View File

@@ -23,10 +23,10 @@ additional headless changes from breaking macOS window behavior.
https://chromium-review.googlesource.com/c/chromium/src/+/7487666
diff --git a/components/remote_cocoa/app_shim/native_widget_mac_nswindow.mm b/components/remote_cocoa/app_shim/native_widget_mac_nswindow.mm
index 2a195724de141fd4f0f06c03314e6096a0d0ed3f..2532ae21d9244b2ec9747ef7d9916668dcad145c 100644
index 94bd32ce1ddd3f8b4315cd06be59d7550b591891..ad005e0a19a7763da089fccc659d93c8815dc860 100644
--- a/components/remote_cocoa/app_shim/native_widget_mac_nswindow.mm
+++ b/components/remote_cocoa/app_shim/native_widget_mac_nswindow.mm
@@ -218,6 +218,7 @@ @implementation NativeWidgetMacNSWindow {
@@ -231,6 +231,7 @@ @implementation NativeWidgetMacNSWindow {
BOOL _isEnforcingNeverMadeVisible;
BOOL _activationIndependence;
BOOL _isTooltip;
@@ -34,7 +34,7 @@ index 2a195724de141fd4f0f06c03314e6096a0d0ed3f..2532ae21d9244b2ec9747ef7d9916668
BOOL _isShufflingForOrdering;
BOOL _miniaturizationInProgress;
std::unique_ptr<NativeWidgetMacNSWindowHeadlessInfo> _headless_info;
@@ -225,6 +226,7 @@ @implementation NativeWidgetMacNSWindow {
@@ -238,6 +239,7 @@ @implementation NativeWidgetMacNSWindow {
@synthesize bridgedNativeWidgetId = _bridgedNativeWidgetId;
@synthesize bridge = _bridge;
@synthesize isTooltip = _isTooltip;
@@ -42,7 +42,7 @@ index 2a195724de141fd4f0f06c03314e6096a0d0ed3f..2532ae21d9244b2ec9747ef7d9916668
@synthesize isShufflingForOrdering = _isShufflingForOrdering;
@synthesize preventKeyWindow = _preventKeyWindow;
@synthesize childWindowAddedHandler = _childWindowAddedHandler;
@@ -246,23 +248,6 @@ - (instancetype)initWithContentRect:(NSRect)contentRect
@@ -259,23 +261,6 @@ - (instancetype)initWithContentRect:(NSRect)contentRect
return self;
}

View File

@@ -640,7 +640,7 @@ index 48f47bf3eeb8464d1c3925f0f73f62c790cac2f0..b7b2b7c1b7e99927012ce1676cc753b2
// The NSWindow used by BridgedNativeWidget. Provides hooks into AppKit that
// can only be accomplished by overriding methods.
diff --git a/components/remote_cocoa/app_shim/native_widget_mac_nswindow.mm b/components/remote_cocoa/app_shim/native_widget_mac_nswindow.mm
index a5fc9193711a7cc2eee45171178c070321177ca2..2a195724de141fd4f0f06c03314e6096a0d0ed3f 100644
index a5fc9193711a7cc2eee45171178c070321177ca2..94bd32ce1ddd3f8b4315cd06be59d7550b591891 100644
--- a/components/remote_cocoa/app_shim/native_widget_mac_nswindow.mm
+++ b/components/remote_cocoa/app_shim/native_widget_mac_nswindow.mm
@@ -22,6 +22,7 @@
@@ -677,7 +677,7 @@ index a5fc9193711a7cc2eee45171178c070321177ca2..2a195724de141fd4f0f06c03314e6096
@end
struct NSEdgeAndCornerThicknesses {
@@ -159,13 +164,17 @@ - (void)cr_mouseDownOnFrameView:(NSEvent*)event;
@@ -159,13 +164,30 @@ - (void)cr_mouseDownOnFrameView:(NSEvent*)event;
@implementation NSView (CRFrameViewAdditions)
// If a mouseDown: falls through to the frame view, turn it into a window drag.
- (void)cr_mouseDownOnFrameView:(NSEvent*)event {
@@ -685,6 +685,19 @@ index a5fc9193711a7cc2eee45171178c070321177ca2..2a195724de141fd4f0f06c03314e6096
if ([self.window _resizeDirectionForMouseLocation:event.locationInWindow] !=
-1)
return;
+#else
+ // For MAS builds, approximate the resize direction check.
+ if (self.window.styleMask & NSWindowStyleMaskResizable) {
+ constexpr CGFloat kResizeThreshold = 5.0;
+ NSPoint location = event.locationInWindow;
+ NSRect frame = self.window.frame;
+ CGFloat width = NSWidth(frame);
+ CGFloat height = NSHeight(frame);
+ if (location.x < kResizeThreshold || location.x > width - kResizeThreshold ||
+ location.y < kResizeThreshold || location.y > height - kResizeThreshold) {
+ return;
+ }
+ }
+#endif
[self.window performWindowDragWithEvent:event];
}
@@ -695,7 +708,7 @@ index a5fc9193711a7cc2eee45171178c070321177ca2..2a195724de141fd4f0f06c03314e6096
@implementation NativeWidgetMacNSWindowTitledFrame
- (void)mouseDown:(NSEvent*)event {
if (self.window.isMovable)
@@ -193,6 +202,8 @@ - (BOOL)usesCustomDrawing {
@@ -193,6 +215,8 @@ - (BOOL)usesCustomDrawing {
}
@end
@@ -704,7 +717,7 @@ index a5fc9193711a7cc2eee45171178c070321177ca2..2a195724de141fd4f0f06c03314e6096
@implementation NativeWidgetMacNSWindow {
@private
CommandDispatcher* __strong _commandDispatcher;
@@ -268,6 +279,7 @@ - (BOOL)invokeOriginalIsVisibleForTesting {
@@ -268,6 +292,7 @@ - (BOOL)invokeOriginalIsVisibleForTesting {
// bubbles and the find bar, but these should not be movable.
// Instead, let's push this up to the parent window which should be
// the browser.
@@ -712,7 +725,7 @@ index a5fc9193711a7cc2eee45171178c070321177ca2..2a195724de141fd4f0f06c03314e6096
- (void)_zoomToScreenEdge:(NSUInteger)edge {
if (self.parentWindow) {
[self.parentWindow _zoomToScreenEdge:edge];
@@ -275,6 +287,7 @@ - (void)_zoomToScreenEdge:(NSUInteger)edge {
@@ -275,6 +300,7 @@ - (void)_zoomToScreenEdge:(NSUInteger)edge {
[super _zoomToScreenEdge:edge];
}
}
@@ -720,7 +733,7 @@ index a5fc9193711a7cc2eee45171178c070321177ca2..2a195724de141fd4f0f06c03314e6096
// This override helps diagnose lifetime issues in crash stacktraces by
// inserting a symbol on NativeWidgetMacNSWindow and should be kept even if it
@@ -407,6 +420,8 @@ - (NSAccessibilityRole)accessibilityRole {
@@ -407,6 +433,8 @@ - (NSAccessibilityRole)accessibilityRole {
// NSWindow overrides.
@@ -729,7 +742,7 @@ index a5fc9193711a7cc2eee45171178c070321177ca2..2a195724de141fd4f0f06c03314e6096
+ (Class)frameViewClassForStyleMask:(NSWindowStyleMask)windowStyle {
if (windowStyle & NSWindowStyleMaskTitled) {
if (Class customFrame = [NativeWidgetMacNSWindowTitledFrame class])
@@ -418,6 +433,8 @@ + (Class)frameViewClassForStyleMask:(NSWindowStyleMask)windowStyle {
@@ -418,6 +446,8 @@ + (Class)frameViewClassForStyleMask:(NSWindowStyleMask)windowStyle {
return [super frameViewClassForStyleMask:windowStyle];
}
@@ -738,7 +751,7 @@ index a5fc9193711a7cc2eee45171178c070321177ca2..2a195724de141fd4f0f06c03314e6096
- (NSRect)constrainFrameRect:(NSRect)frameRect toScreen:(NSScreen*)screen {
if (self.isHeadless || self.parentWindow) {
// AppKit's default implementation moves child windows down to avoid
@@ -455,12 +472,14 @@ - (BOOL)_usesCustomDrawing {
@@ -455,12 +485,14 @@ - (BOOL)_usesCustomDrawing {
// if it were valid to set that style for windows, setting the window style
// recalculates and re-caches a bunch of stuff, so a surgical override is the
// cleanest approach.
@@ -753,7 +766,7 @@ index a5fc9193711a7cc2eee45171178c070321177ca2..2a195724de141fd4f0f06c03314e6096
+ (void)_getExteriorResizeEdgeThicknesses:
(NSEdgeAndCornerThicknesses*)outThicknesses
@@ -714,9 +733,11 @@ - (id)archiver:(NSKeyedArchiver*)archiver willEncodeObject:(id)object {
@@ -714,9 +746,11 @@ - (id)archiver:(NSKeyedArchiver*)archiver willEncodeObject:(id)object {
}
- (void)saveRestorableState {
@@ -765,7 +778,7 @@ index a5fc9193711a7cc2eee45171178c070321177ca2..2a195724de141fd4f0f06c03314e6096
// Certain conditions, such as in the Speedometer 3 benchmark, can trigger a
// rapid succession of calls to saveRestorableState. If there's no pending
@@ -783,6 +804,7 @@ - (void)reallySaveRestorableState {
@@ -783,6 +817,7 @@ - (void)reallySaveRestorableState {
// affects its restorable state changes.
- (void)invalidateRestorableState {
[super invalidateRestorableState];
@@ -773,7 +786,7 @@ index a5fc9193711a7cc2eee45171178c070321177ca2..2a195724de141fd4f0f06c03314e6096
if ([self _isConsideredOpenForPersistentState]) {
if (_willUpdateRestorableState)
return;
@@ -795,6 +817,7 @@ - (void)invalidateRestorableState {
@@ -795,6 +830,7 @@ - (void)invalidateRestorableState {
_willUpdateRestorableState = NO;
[NSObject cancelPreviousPerformRequestsWithTarget:self];
}
@@ -781,7 +794,7 @@ index a5fc9193711a7cc2eee45171178c070321177ca2..2a195724de141fd4f0f06c03314e6096
}
// On newer SDKs, _canMiniaturize respects NSWindowStyleMaskMiniaturizable in
@@ -971,6 +994,7 @@ - (void)maybeRemoveTreeFromOrderingGroups {
@@ -971,6 +1007,7 @@ - (void)maybeRemoveTreeFromOrderingGroups {
// Since _removeFromGroups: is not documented it could go away in newer
// versions of macOS. If the selector does not exist, DumpWithoutCrashing() so
// we hear about the change.
@@ -789,7 +802,7 @@ index a5fc9193711a7cc2eee45171178c070321177ca2..2a195724de141fd4f0f06c03314e6096
if (![NSWindow instancesRespondToSelector:@selector(_removeFromGroups:)]) {
base::debug::DumpWithoutCrashing();
return;
@@ -988,6 +1012,7 @@ - (void)maybeRemoveTreeFromOrderingGroups {
@@ -988,6 +1025,7 @@ - (void)maybeRemoveTreeFromOrderingGroups {
[currentWindow _removeFromGroups:child];
}
}

View File

@@ -142,8 +142,29 @@ async function findMatchingFiles (top, test) {
});
}
function compareVersions (v1, v2) {
const [split1, split2] = [v1.split('.'), v2.split('.')];
if (split1.length !== split2.length) {
throw new Error(
`Expected version strings to have same number of sections: ${split1} and ${split2}`
);
}
for (let i = 0; i < split1.length; i++) {
const p1 = parseInt(split1[i], 10);
const p2 = parseInt(split2[i], 10);
if (p1 > p2) return 1;
else if (p1 < p2) return -1;
// Continue checking the value if this portion is equal
}
return 0;
}
module.exports = {
chunkFilenames,
compareVersions,
findMatchingFiles,
getCurrentBranch,
getElectronExec,

View File

@@ -0,0 +1,287 @@
#!/usr/bin/env node
import { execSync } from 'node:child_process';
import * as fs from 'node:fs/promises';
import { dirname, resolve } from 'node:path';
import { fileURLToPath } from 'node:url';
import { compareVersions } from './lib/utils.js';
const __dirname = dirname(fileURLToPath(import.meta.url));
const ELECTRON_DIR = resolve(__dirname, '..');
const DEPS_REGEX = /chromium_version':\n +'(.+?)',/m;
const CL_REGEX = /https:\/\/chromium-review\.googlesource\.com\/c\/(?:chromium\/src|v8\/v8)\/\+\/(\d+)(#\S+)?/g;
const ROLLER_BRANCH_PATTERN = /^roller\/chromium\/(.+)$/;
function getCommitsSinceMergeBase (mergeBase) {
try {
const output = execSync(`git log --format=%H%n%B%n---COMMIT_END--- ${mergeBase}..HEAD`, {
cwd: ELECTRON_DIR,
encoding: 'utf8'
});
const commits = [];
const parts = output.split('---COMMIT_END---');
for (const part of parts) {
const trimmed = part.trim();
if (!trimmed) continue;
const lines = trimmed.split('\n');
const sha = lines[0];
const message = lines.slice(1).join('\n');
if (sha && message) {
commits.push({ sha, message });
}
}
return commits;
} catch {
return [];
}
}
async function fetchChromiumDashCommit (commitSha, repo) {
const url = `https://chromiumdash.appspot.com/fetch_commit?commit=${commitSha}&repo=${repo}`;
const response = await fetch(url);
if (!response.ok) {
return null;
}
try {
return await response.json();
} catch {
return null;
}
}
async function getGerritPatchDetails (clUrl) {
const parsedUrl = new URL(clUrl);
const match = /^\/c\/(.+?)\/\+\/(\d+)/.exec(parsedUrl.pathname);
if (!match) {
return null;
}
const [, repo, number] = match;
const changeId = `${repo}~${number}`;
const url = `https://chromium-review.googlesource.com/changes/${encodeURIComponent(changeId)}?o=CURRENT_REVISION`;
const response = await fetch(url);
if (!response.ok) {
return null;
}
try {
// Gerrit returns JSON with a magic prefix
const text = await response.text();
const jsonText = text.startsWith(")]}'") ? text.substring(4) : text;
const data = JSON.parse(jsonText);
// Get the current revision's commit SHA
const currentRevision = data.current_revision;
return {
commitSha: currentRevision,
project: data.project
};
} catch {
return null;
}
}
async function main () {
let currentBranch;
try {
currentBranch = execSync('git rev-parse --abbrev-ref HEAD', {
cwd: ELECTRON_DIR,
encoding: 'utf8'
}).trim();
} catch {
console.error('Could not determine current git branch');
process.exit(1);
}
// Check if we're on a roller/chromium/* branch
const branchMatch = ROLLER_BRANCH_PATTERN.exec(currentBranch);
if (!branchMatch) {
console.log(`Not on a roller/chromium/* branch (current: ${currentBranch}), skipping lint.`);
process.exit(0);
}
const targetBranch = branchMatch[1];
console.log(`Linting roller branch: ${currentBranch} (target: ${targetBranch})`);
// Get the merge base with the target branch
let mergeBase;
try {
mergeBase = execSync(`git merge-base ${currentBranch} origin/${targetBranch}`, {
cwd: ELECTRON_DIR,
encoding: 'utf8'
}).trim();
} catch {
console.error(`Could not determine merge base with origin/${targetBranch}`);
process.exit(1);
}
// Get version range
let baseVersion = null;
try {
const baseDepsContent = execSync(`git show ${mergeBase}:DEPS`, {
cwd: ELECTRON_DIR,
encoding: 'utf8'
});
baseVersion = DEPS_REGEX.exec(baseDepsContent)?.[1] ?? null;
} catch {
// baseVersion remains null
}
const depsContent = await fs.readFile(resolve(ELECTRON_DIR, 'DEPS'), 'utf8');
const newVersion = DEPS_REGEX.exec(depsContent)?.[1] ?? null;
if (!baseVersion || !newVersion) {
console.error('Could not determine Chromium version range');
console.error(` Base version: ${baseVersion ?? 'unknown'}`);
console.error(` New version: ${newVersion ?? 'unknown'}`);
process.exit(1);
}
console.log(`Chromium version range: ${baseVersion} -> ${newVersion}`);
// Get all commits since merge base
const commits = getCommitsSinceMergeBase(mergeBase);
console.log(`Found ${commits.length} commits to check`);
let hasErrors = false;
const checkedCLs = new Map(); // Cache CL check results
for (const commit of commits) {
const shortSha = commit.sha.substring(0, 7);
const firstLine = commit.message.split('\n')[0];
// Check for Skip-Lint trailer
const skipLintMatch = /^Skip-Lint:\s*(.+)$/m.exec(commit.message);
if (skipLintMatch) {
console.log(`\nSkipping commit ${shortSha}: ${firstLine}`);
console.log(` ⏭️ Reason: ${skipLintMatch[1]}`);
continue;
}
const cls = [...commit.message.matchAll(CL_REGEX)].map((match) => ({
url: match[0],
clNumber: match[1],
fragment: match[2] ?? null
}));
if (cls.length === 0) {
// No CLs in this commit, skip
continue;
}
console.log(`\nChecking commit ${shortSha}: ${firstLine}`);
for (const cl of cls) {
// Skip CLs annotated with #nolint
if (cl.fragment === '#nolint') {
console.log(` ⏭️ CL ${cl.clNumber}: skipped (#nolint)`);
continue;
}
// Check cache first (use URL as key to distinguish same CL number across repos)
if (checkedCLs.has(cl.url)) {
const cached = checkedCLs.get(cl.url);
if (cached.valid) {
console.log(` ✅ CL ${cl.clNumber}: (already validated)`);
} else {
console.error(` ❌ CL ${cl.clNumber}: ${cached.error}`);
hasErrors = true;
}
continue;
}
// Determine repo from URL
const isV8 = cl.url.startsWith('https://chromium-review.googlesource.com/c/v8/v8/');
const repo = isV8 ? 'v8' : 'chromium';
// Fetch Gerrit details to get commit SHA
const gerritDetails = await getGerritPatchDetails(cl.url);
if (!gerritDetails) {
const error = 'Could not fetch CL details from Gerrit';
checkedCLs.set(cl.url, { valid: false, error });
console.error(` ❌ CL ${cl.clNumber}: ${error}`);
hasErrors = true;
continue;
}
// Fetch from Chromium Dash to get the earliest version
const dashDetails = await fetchChromiumDashCommit(gerritDetails.commitSha, repo);
if (!dashDetails) {
const error = 'Could not fetch commit details from Chromium Dash';
checkedCLs.set(cl.url, { valid: false, error });
console.error(` ❌ CL ${cl.clNumber}: ${error}`);
hasErrors = true;
continue;
}
const clEarliestVersion = dashDetails.earliest;
if (!clEarliestVersion) {
const error = 'CL has no earliest version (may not be merged yet)';
checkedCLs.set(cl.url, { valid: false, error });
console.error(` ❌ CL ${cl.clNumber}: ${error}`);
hasErrors = true;
continue;
}
// For V8 CLs, we need to find the corresponding Chromium commit
let chromiumVersion = clEarliestVersion;
if (isV8 && dashDetails.relations) {
const chromiumRelation = dashDetails.relations.find(
(rel) => rel.from_commit === gerritDetails.commitSha
);
if (chromiumRelation) {
const chromiumDash = await fetchChromiumDashCommit(chromiumRelation.to_commit, 'chromium');
if (chromiumDash?.earliest) {
chromiumVersion = chromiumDash.earliest;
}
}
}
// CL should have landed after the base version and at or before the new version
const isInRange =
compareVersions(chromiumVersion, baseVersion) > 0 &&
compareVersions(chromiumVersion, newVersion) <= 0;
if (!isInRange) {
const error = `CL earliest version ${chromiumVersion} is outside roller range (${baseVersion} -> ${newVersion})`;
checkedCLs.set(cl.url, { valid: false, error });
console.error(` ❌ CL ${cl.clNumber}: ${error}`);
hasErrors = true;
continue;
}
checkedCLs.set(cl.url, { valid: true });
console.log(` ✅ CL ${cl.clNumber}: version ${chromiumVersion} is within range`);
}
}
console.log(hasErrors ? '\n❌ Lint failed' : '\n✅ Lint passed');
if (hasErrors) {
console.log(' NOTE: Add "Skip-Lint: <reason>" to a commit message to skip linting that commit.');
}
process.exit(hasErrors && process.env.CI ? 1 : 0);
}
if ((await fs.realpath(process.argv[1])) === fileURLToPath(import.meta.url)) {
main()
.then(() => {
process.exit(0);
})
.catch((err) => {
console.error(`ERROR: ${err.message}`);
process.exit(1);
});
}

View File

@@ -6,7 +6,7 @@ import { spawnSync } from 'node:child_process';
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
import { resolve as _resolve } from 'node:path';
import { ELECTRON_DIR } from '../../lib/utils';
import { compareVersions, ELECTRON_DIR } from '../../lib/utils';
import { createGitHubTokenStrategy } from '../github-token';
import { ELECTRON_ORG, ELECTRON_REPO } from '../types';
@@ -612,26 +612,6 @@ const getNotes = async (fromRef: string, toRef: string, newVersion: string) => {
return notes;
};
const compareVersions = (v1: string, v2: string) => {
const [split1, split2] = [v1.split('.'), v2.split('.')];
if (split1.length !== split2.length) {
throw new Error(
`Expected version strings to have same number of sections: ${split1} and ${split2}`
);
}
for (let i = 0; i < split1.length; i++) {
const p1 = parseInt(split1[i], 10);
const p2 = parseInt(split2[i], 10);
if (p1 > p2) return 1;
else if (p1 < p2) return -1;
// Continue checking the value if this portion is equal
}
return 0;
};
const removeSupercededStackUpdates = (commits: Commit[]) => {
const updateRegex = /^Updated ([a-zA-Z.]+) to v?([\d.]+)/;
const notupdates = [];

View File

@@ -1,14 +1,14 @@
{
"bullseye_amd64": {
"Key": "20250129T203412Z-2",
"Sha256Sum": "986ffe8f444b650c38de1786a930516bf9447ec7003a6c367de4aade8ebdb186",
"Sha256Sum": "f2e052b0cdab9b6f9bfe311c5269264d5f4e38a018bbc27ba2314b73ac8f7053",
"SysrootDir": "debian_bullseye_amd64-sysroot",
"Tarball": "debian_bullseye_amd64_sysroot.tar.xz",
"URL": "https://dev-cdn.electronjs.org/linux-sysroots"
},
"bullseye_arm64": {
"Key": "20250129T203412Z-2",
"Sha256Sum": "6be0900393d73e69518f0996807dbc542c0d47cab1c4903c9d188347f945114a",
"Sha256Sum": "f4f680a60e314418f95513ac63e9942ad565005ebbd36b660b20cd605d11a664",
"SysrootDir": "debian_bullseye_arm64-sysroot",
"Tarball": "debian_bullseye_arm64_sysroot.tar.xz",
"URL": "https://dev-cdn.electronjs.org/linux-sysroots"
@@ -22,44 +22,44 @@
},
"bullseye_armhf": {
"Key": "20250129T203412Z-2",
"Sha256Sum": "060631cd0583b5204c646d41a5fbbe6080fd7a822feefba01900bd8e41a67b13",
"Sha256Sum": "f99ef848d2f6046437d3277da4442f82dafba040cafdf7f461c9726298e45653",
"SysrootDir": "debian_bullseye_armhf-sysroot",
"Tarball": "debian_bullseye_armhf_sysroot.tar.xz",
"URL": "https://dev-cdn.electronjs.org/linux-sysroots"
},
"bullseye_i386": {
"Key": "20250129T203412Z-2",
"Sha256Sum": "a6b63543ac2a57f477a6ea54b1e36dc8bfeb2f19c963866f79b1b2a93ed43a6e",
"Sha256Sum": "4c35cf12fc7f53def4f0b105ba7a09e4a5ef5671aa5a898ab19be09e1e8d16b9",
"SysrootDir": "debian_bullseye_i386-sysroot",
"Tarball": "debian_bullseye_i386_sysroot.tar.xz",
"URL": "https://dev-cdn.electronjs.org/linux-sysroots"
},
"bullseye_mips64el": {
"Key": "20250129T203412Z-2",
"Sha256Sum": "814ccd5d9524020b23a16a5a581644ca8ba2f1e3515a1ddcbb62e938d4f4e0b0",
"Sha256Sum": "a84374ea0966f1026088fdbe34521ff56760878aa93f9af21160caf4155659fc",
"SysrootDir": "debian_bullseye_mips64el-sysroot",
"Tarball": "debian_bullseye_mips64el_sysroot.tar.xz",
"URL": "https://dev-cdn.electronjs.org/linux-sysroots"
},
"bullseye_mipsel": {
"Key": "20250129T203412Z-2",
"Sha256Sum": "7f3218966b7bc636409a0f3d5104d9046b03faf660847f9026df9ce2c9775d53",
"Sha256Sum": "f7f06a49f92ee8c9a1d16c424b668c6dfed33006f2ef015124c660143bb89ee8",
"SysrootDir": "debian_bullseye_mipsel-sysroot",
"Tarball": "debian_bullseye_mipsel_sysroot.tar.xz",
"URL": "https://dev-cdn.electronjs.org/linux-sysroots"
},
"bullseye_ppc64el": {
"Key": "20250129T203412Z-2",
"Sha256Sum": "bdab0a372cf5bfdc154226cc5ed72d417096c725085d193509d1f12e0debec66",
"Sha256Sum": "9e3c152f17c292c3e9be31b3fe63666eebac3e13d2e0d83f8de0acaa77417ac2",
"SysrootDir": "debian_bullseye_ppc64el-sysroot",
"Tarball": "debian_bullseye_ppc64el_sysroot.tar.xz",
"URL": "https://dev-cdn.electronjs.org/linux-sysroots"
},
"trixie_riscv64": {
"Key": "20250129T203412Z-2",
"Sha256Sum": "2183652af753225da2371d7bccddcb0269ee388e4508ed1fdeb810cb05cba898",
"Sha256Sum": "d997eaa308ce148c4a429549ca360bf3f58b5861fe7f5f1d826ccf0a8eccbe48",
"SysrootDir": "debian_trixie_riscv64-sysroot",
"Tarball": "debian_trixie_riscv64_sysroot.tar.xz",
"URL": "https://dev-cdn.electronjs.org/linux-sysroots"
}
}
}

View File

@@ -83,8 +83,16 @@ void WebContentsView::ApplyBorderRadius() {
int WebContentsView::NonClientHitTest(const gfx::Point& point) {
if (api_web_contents_) {
// Convert the point to the contents view's coordinate space rather than
// the InspectableWebContentsView's coordinate space, because the draggable
// region is relative to the web content area. When DevTools is docked
// (e.g. to the left), the contents view is offset within the parent,
// so we need to account for that offset.
auto* inspectable_view =
api_web_contents_->inspectable_web_contents()->GetView();
auto* contents_view = inspectable_view->GetContentsView();
gfx::Point local_point(point);
views::View::ConvertPointFromWidget(view(), &local_point);
views::View::ConvertPointFromWidget(contents_view, &local_point);
SkRegion* region = api_web_contents_->draggable_region();
if (region && region->contains(local_point.x(), local_point.y()))
return HTCAPTION;

View File

@@ -41,6 +41,7 @@
#include "content/public/common/process_type.h"
#include "content/public/common/result_codes.h"
#include "electron/buildflags/buildflags.h"
#include "electron/fuses.h"
#include "media/base/localized_strings.h"
#include "services/network/public/cpp/features.h"
#include "services/tracing/public/cpp/stack_sampling/tracing_sampler_profiler.h"
@@ -62,6 +63,7 @@
#include "shell/common/logging.h"
#include "shell/common/node_bindings.h"
#include "shell/common/node_includes.h"
#include "shell/common/v8_util.h"
#include "ui/base/idle/idle.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/ui_base_switches.h"
@@ -238,6 +240,15 @@ void ElectronBrowserMainParts::PostEarlyInitialization() {
v8::Isolate* const isolate = js_env_->isolate();
v8::HandleScope scope(isolate);
// Enable trap handlers before user script execution.
#if ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)) && \
defined(ARCH_CPU_X86_64)) || \
((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)) && defined(ARCH_CPU_ARM64))
if (electron::fuses::IsWasmTrapHandlersEnabled()) {
electron::SetUpWebAssemblyTrapHandler();
}
#endif
node_bindings_->Initialize(isolate, isolate->GetCurrentContext());
// Create the global environment.
node_env_ = node_bindings_->CreateEnvironment(

View File

@@ -62,9 +62,9 @@ class InspectableWebContentsView : public views::View {
// views::View:
void Layout(PassKey) override;
private:
views::View* GetContentsView() const;
private:
// Owns us.
raw_ptr<InspectableWebContents> inspectable_web_contents_;

View File

@@ -8,6 +8,7 @@
#include <utility>
#include <vector>
#include "base/base_switches.h"
#include "base/memory/raw_ptr.h"
#include "gin/converter.h"
#include "shell/common/api/electron_api_native_image.h"
@@ -17,6 +18,15 @@
#include "ui/gfx/image/image_skia.h"
#include "v8/include/v8.h"
#if BUILDFLAG(IS_LINUX) && (defined(ARCH_CPU_X86_64) || defined(ARCH_CPU_ARM64))
#define ENABLE_WEB_ASSEMBLY_TRAP_HANDLER_LINUX
#include "base/command_line.h"
#include "base/debug/stack_trace.h"
#include "components/crash/core/app/crashpad.h" // nogncheck
#include "content/public/common/content_switches.h"
#include "v8/include/v8-wasm-trap-handler-posix.h"
#endif
namespace electron {
namespace {
@@ -240,6 +250,51 @@ v8::Local<v8::Value> DeserializeV8Value(v8::Isolate* isolate,
return V8Deserializer(isolate, data).Deserialize();
}
void SetUpWebAssemblyTrapHandler() {
#if BUILDFLAG(IS_WIN)
// On Windows we use the default trap handler provided by V8.
v8::V8::EnableWebAssemblyTrapHandler(true);
#elif BUILDFLAG(IS_MAC)
// On macOS, Crashpad uses exception ports to handle signals in a
// different process. As we cannot just pass a callback to this other
// process, we ask V8 to install its own signal handler to deal with
// WebAssembly traps.
v8::V8::EnableWebAssemblyTrapHandler(true);
#elif defined(ENABLE_WEB_ASSEMBLY_TRAP_HANDLER_LINUX)
const bool crash_reporter_enabled =
crash_reporter::GetHandlerSocket(nullptr, nullptr);
if (crash_reporter_enabled) {
// If either --enable-crash-reporter or --enable-crash-reporter-for-testing
// is enabled it should take care of signal handling for us, use the default
// implementation which doesn't register an additional handler.
v8::V8::EnableWebAssemblyTrapHandler(false);
return;
}
const bool use_v8_default_handler =
base::CommandLine::ForCurrentProcess()->HasSwitch(
::switches::kDisableInProcessStackTraces);
if (use_v8_default_handler) {
// There is no signal handler yet, but it's okay if v8 registers one.
v8::V8::EnableWebAssemblyTrapHandler(/*use_v8_signal_handler=*/true);
return;
}
if (base::debug::SetStackDumpFirstChanceCallback(
v8::TryHandleWebAssemblyTrapPosix)) {
// Crashpad and Breakpad are disabled, but the in-process stack dump
// handlers are enabled, so set the callback on the stack dump handlers.
v8::V8::EnableWebAssemblyTrapHandler(/*use_v8_signal_handler=*/false);
return;
}
// As the registration of the callback failed, we don't enable trap
// handlers.
#endif
}
namespace util {
/**

View File

@@ -30,6 +30,8 @@ v8::Local<v8::Value> DeserializeV8Value(v8::Isolate* isolate,
v8::Local<v8::Value> DeserializeV8Value(v8::Isolate* isolate,
base::span<const uint8_t> data);
void SetUpWebAssemblyTrapHandler();
namespace util {
[[nodiscard]] base::span<uint8_t> as_byte_span(

View File

@@ -6,10 +6,9 @@
#include <algorithm>
#include "base/base_switches.h"
#include "base/command_line.h"
#include "base/debug/stack_trace.h"
#include "content/public/renderer/render_frame.h"
#include "electron/fuses.h"
#include "net/http/http_request_headers.h"
#include "shell/common/api/electron_bindings.h"
#include "shell/common/gin_helper/dictionary.h"
@@ -18,6 +17,7 @@
#include "shell/common/node_includes.h"
#include "shell/common/node_util.h"
#include "shell/common/options_switches.h"
#include "shell/common/v8_util.h"
#include "shell/renderer/electron_render_frame_observer.h"
#include "shell/renderer/web_worker_observer.h"
#include "third_party/blink/public/common/web_preferences/web_preferences.h"
@@ -26,13 +26,6 @@
#include "third_party/blink/renderer/core/execution_context/execution_context.h" // nogncheck
#include "third_party/blink/renderer/core/frame/web_local_frame_impl.h" // nogncheck
#if BUILDFLAG(IS_LINUX) && (defined(ARCH_CPU_X86_64) || defined(ARCH_CPU_ARM64))
#define ENABLE_WEB_ASSEMBLY_TRAP_HANDLER_LINUX
#include "components/crash/core/app/crashpad.h" // nogncheck
#include "content/public/common/content_switches.h"
#include "v8/include/v8-wasm-trap-handler-posix.h"
#endif
namespace electron {
ElectronRendererClient::ElectronRendererClient()
@@ -247,45 +240,13 @@ void ElectronRendererClient::WillDestroyWorkerContextOnWorkerThread(
}
void ElectronRendererClient::SetUpWebAssemblyTrapHandler() {
// See CL:5372409 - copied from ShellContentRendererClient.
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
// Mac and Windows use the default implementation (where the default v8 trap
// handler gets set up).
ContentRendererClient::SetUpWebAssemblyTrapHandler();
return;
#elif defined(ENABLE_WEB_ASSEMBLY_TRAP_HANDLER_LINUX)
const bool crash_reporter_enabled =
crash_reporter::GetHandlerSocket(nullptr, nullptr);
if (crash_reporter_enabled) {
// If either --enable-crash-reporter or --enable-crash-reporter-for-testing
// is enabled it should take care of signal handling for us, use the default
// implementation which doesn't register an additional handler.
ContentRendererClient::SetUpWebAssemblyTrapHandler();
return;
#if ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)) && \
defined(ARCH_CPU_X86_64)) || \
((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)) && defined(ARCH_CPU_ARM64))
if (electron::fuses::IsWasmTrapHandlersEnabled()) {
electron::SetUpWebAssemblyTrapHandler();
}
const bool use_v8_default_handler =
base::CommandLine::ForCurrentProcess()->HasSwitch(
::switches::kDisableInProcessStackTraces);
if (use_v8_default_handler) {
// There is no signal handler yet, but it's okay if v8 registers one.
v8::V8::EnableWebAssemblyTrapHandler(/*use_v8_signal_handler=*/true);
return;
}
if (base::debug::SetStackDumpFirstChanceCallback(
v8::TryHandleWebAssemblyTrapPosix)) {
// Crashpad and Breakpad are disabled, but the in-process stack dump
// handlers are enabled, so set the callback on the stack dump handlers.
v8::V8::EnableWebAssemblyTrapHandler(/*use_v8_signal_handler=*/false);
return;
}
// As the registration of the callback failed, we don't enable trap
// handlers.
#endif // defined(ENABLE_WEB_ASSEMBLY_TRAP_HANDLER_LINUX)
#endif
}
node::Environment* ElectronRendererClient::GetEnvironment(

View File

@@ -11,6 +11,7 @@
#include "base/no_destructor.h"
#include "base/process/process.h"
#include "base/strings/utf_string_conversions.h"
#include "electron/fuses.h"
#include "electron/mas.h"
#include "net/base/network_change_notifier.h"
#include "services/network/public/cpp/wrapper_shared_url_loader_factory.h"
@@ -22,6 +23,7 @@
#include "shell/common/gin_helper/dictionary.h"
#include "shell/common/node_bindings.h"
#include "shell/common/node_includes.h"
#include "shell/common/v8_util.h"
#include "shell/services/node/parent_port.h"
#if !IS_MAS_BUILD()
@@ -130,6 +132,15 @@ void NodeService::Initialize(
v8::Isolate* const isolate = js_env_->isolate();
v8::HandleScope scope{isolate};
// Enable trap handlers before user script execution.
#if ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)) && \
defined(ARCH_CPU_X86_64)) || \
((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)) && defined(ARCH_CPU_ARM64))
if (electron::fuses::IsWasmTrapHandlersEnabled()) {
electron::SetUpWebAssemblyTrapHandler();
}
#endif
node_bindings_->Initialize(isolate, isolate->GetCurrentContext());
network_change_notifier_ = net::NetworkChangeNotifier::CreateIfNeeded(

463
yarn.lock
View File

@@ -638,7 +638,7 @@ __metadata:
ts-node: "npm:6.2.0"
typescript: "npm:^5.8.3"
url: "npm:^0.11.4"
webpack: "npm:^5.95.0"
webpack: "npm:^5.104.1"
webpack-cli: "npm:^6.0.1"
wrapper-webpack-plugin: "npm:^2.2.0"
yaml: "npm:^2.8.1"
@@ -1206,7 +1206,7 @@ __metadata:
languageName: node
linkType: hard
"@jridgewell/trace-mapping@npm:^0.3.20, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25":
"@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25":
version: 0.3.25
resolution: "@jridgewell/trace-mapping@npm:0.3.25"
dependencies:
@@ -1978,6 +1978,26 @@ __metadata:
languageName: node
linkType: hard
"@types/eslint-scope@npm:^3.7.7":
version: 3.7.7
resolution: "@types/eslint-scope@npm:3.7.7"
dependencies:
"@types/eslint": "npm:*"
"@types/estree": "npm:*"
checksum: 10c0/a0ecbdf2f03912679440550817ff77ef39a30fa8bfdacaf6372b88b1f931828aec392f52283240f0d648cf3055c5ddc564544a626bcf245f3d09fcb099ebe3cc
languageName: node
linkType: hard
"@types/eslint@npm:*":
version: 9.6.1
resolution: "@types/eslint@npm:9.6.1"
dependencies:
"@types/estree": "npm:*"
"@types/json-schema": "npm:*"
checksum: 10c0/69ba24fee600d1e4c5abe0df086c1a4d798abf13792d8cfab912d76817fe1a894359a1518557d21237fbaf6eda93c5ab9309143dee4c59ef54336d1b3570420e
languageName: node
linkType: hard
"@types/estree-jsx@npm:^1.0.0":
version: 1.0.5
resolution: "@types/estree-jsx@npm:1.0.5"
@@ -1987,20 +2007,13 @@ __metadata:
languageName: node
linkType: hard
"@types/estree@npm:*":
"@types/estree@npm:*, @types/estree@npm:^1.0.8":
version: 1.0.8
resolution: "@types/estree@npm:1.0.8"
checksum: 10c0/39d34d1afaa338ab9763f37ad6066e3f349444f9052b9676a7cc0252ef9485a41c6d81c9c4e0d26e9077993354edf25efc853f3224dd4b447175ef62bdcc86a5
languageName: node
linkType: hard
"@types/estree@npm:^1.0.5":
version: 1.0.5
resolution: "@types/estree@npm:1.0.5"
checksum: 10c0/b3b0e334288ddb407c7b3357ca67dbee75ee22db242ca7c56fe27db4e1a31989cb8af48a84dd401deb787fe10cc6b2ab1ee82dc4783be87ededbe3d53c79c70d
languageName: node
linkType: hard
"@types/express-serve-static-core@npm:^4.17.33":
version: 4.19.7
resolution: "@types/express-serve-static-core@npm:4.19.7"
@@ -2079,6 +2092,13 @@ __metadata:
languageName: node
linkType: hard
"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.15, @types/json-schema@npm:^7.0.9":
version: 7.0.15
resolution: "@types/json-schema@npm:7.0.15"
checksum: 10c0/a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db
languageName: node
linkType: hard
"@types/json-schema@npm:^7.0.8":
version: 7.0.11
resolution: "@types/json-schema@npm:7.0.11"
@@ -2593,154 +2613,154 @@ __metadata:
languageName: node
linkType: hard
"@webassemblyjs/ast@npm:1.12.1, @webassemblyjs/ast@npm:^1.12.1":
version: 1.12.1
resolution: "@webassemblyjs/ast@npm:1.12.1"
"@webassemblyjs/ast@npm:1.14.1, @webassemblyjs/ast@npm:^1.14.1":
version: 1.14.1
resolution: "@webassemblyjs/ast@npm:1.14.1"
dependencies:
"@webassemblyjs/helper-numbers": "npm:1.11.6"
"@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6"
checksum: 10c0/ba7f2b96c6e67e249df6156d02c69eb5f1bd18d5005303cdc42accb053bebbbde673826e54db0437c9748e97abd218366a1d13fa46859b23cde611b6b409998c
"@webassemblyjs/helper-numbers": "npm:1.13.2"
"@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2"
checksum: 10c0/67a59be8ed50ddd33fbb2e09daa5193ac215bf7f40a9371be9a0d9797a114d0d1196316d2f3943efdb923a3d809175e1563a3cb80c814fb8edccd1e77494972b
languageName: node
linkType: hard
"@webassemblyjs/floating-point-hex-parser@npm:1.11.6":
version: 1.11.6
resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.6"
checksum: 10c0/37fe26f89e18e4ca0e7d89cfe3b9f17cfa327d7daf906ae01400416dbb2e33c8a125b4dc55ad7ff405e5fcfb6cf0d764074c9bc532b9a31a71e762be57d2ea0a
"@webassemblyjs/floating-point-hex-parser@npm:1.13.2":
version: 1.13.2
resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.13.2"
checksum: 10c0/0e88bdb8b50507d9938be64df0867f00396b55eba9df7d3546eb5dc0ca64d62e06f8d881ec4a6153f2127d0f4c11d102b6e7d17aec2f26bb5ff95a5e60652412
languageName: node
linkType: hard
"@webassemblyjs/helper-api-error@npm:1.11.6":
version: 1.11.6
resolution: "@webassemblyjs/helper-api-error@npm:1.11.6"
checksum: 10c0/a681ed51863e4ff18cf38d223429f414894e5f7496856854d9a886eeddcee32d7c9f66290f2919c9bb6d2fc2b2fae3f989b6a1e02a81e829359738ea0c4d371a
"@webassemblyjs/helper-api-error@npm:1.13.2":
version: 1.13.2
resolution: "@webassemblyjs/helper-api-error@npm:1.13.2"
checksum: 10c0/31be497f996ed30aae4c08cac3cce50c8dcd5b29660383c0155fce1753804fc55d47fcba74e10141c7dd2899033164e117b3bcfcda23a6b043e4ded4f1003dfb
languageName: node
linkType: hard
"@webassemblyjs/helper-buffer@npm:1.12.1":
version: 1.12.1
resolution: "@webassemblyjs/helper-buffer@npm:1.12.1"
checksum: 10c0/0270724afb4601237410f7fd845ab58ccda1d5456a8783aadfb16eaaf3f2c9610c28e4a5bcb6ad880cde5183c82f7f116d5ccfc2310502439d33f14b6888b48a
"@webassemblyjs/helper-buffer@npm:1.14.1":
version: 1.14.1
resolution: "@webassemblyjs/helper-buffer@npm:1.14.1"
checksum: 10c0/0d54105dc373c0fe6287f1091e41e3a02e36cdc05e8cf8533cdc16c59ff05a646355415893449d3768cda588af451c274f13263300a251dc11a575bc4c9bd210
languageName: node
linkType: hard
"@webassemblyjs/helper-numbers@npm:1.11.6":
version: 1.11.6
resolution: "@webassemblyjs/helper-numbers@npm:1.11.6"
"@webassemblyjs/helper-numbers@npm:1.13.2":
version: 1.13.2
resolution: "@webassemblyjs/helper-numbers@npm:1.13.2"
dependencies:
"@webassemblyjs/floating-point-hex-parser": "npm:1.11.6"
"@webassemblyjs/helper-api-error": "npm:1.11.6"
"@webassemblyjs/floating-point-hex-parser": "npm:1.13.2"
"@webassemblyjs/helper-api-error": "npm:1.13.2"
"@xtuc/long": "npm:4.2.2"
checksum: 10c0/c7d5afc0ff3bd748339b466d8d2f27b908208bf3ff26b2e8e72c39814479d486e0dca6f3d4d776fd9027c1efe05b5c0716c57a23041eb34473892b2731c33af3
checksum: 10c0/9c46852f31b234a8fb5a5a9d3f027bc542392a0d4de32f1a9c0075d5e8684aa073cb5929b56df565500b3f9cc0a2ab983b650314295b9bf208d1a1651bfc825a
languageName: node
linkType: hard
"@webassemblyjs/helper-wasm-bytecode@npm:1.11.6":
version: 1.11.6
resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6"
checksum: 10c0/79d2bebdd11383d142745efa32781249745213af8e022651847382685ca76709f83e1d97adc5f0d3c2b8546bf02864f8b43a531fdf5ca0748cb9e4e0ef2acaa5
"@webassemblyjs/helper-wasm-bytecode@npm:1.13.2":
version: 1.13.2
resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.13.2"
checksum: 10c0/c4355d14f369b30cf3cbdd3acfafc7d0488e086be6d578e3c9780bd1b512932352246be96e034e2a7fcfba4f540ec813352f312bfcbbfe5bcfbf694f82ccc682
languageName: node
linkType: hard
"@webassemblyjs/helper-wasm-section@npm:1.12.1":
version: 1.12.1
resolution: "@webassemblyjs/helper-wasm-section@npm:1.12.1"
"@webassemblyjs/helper-wasm-section@npm:1.14.1":
version: 1.14.1
resolution: "@webassemblyjs/helper-wasm-section@npm:1.14.1"
dependencies:
"@webassemblyjs/ast": "npm:1.12.1"
"@webassemblyjs/helper-buffer": "npm:1.12.1"
"@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6"
"@webassemblyjs/wasm-gen": "npm:1.12.1"
checksum: 10c0/0546350724d285ae3c26e6fc444be4c3b5fb824f3be0ec8ceb474179dc3f4430336dd2e36a44b3e3a1a6815960e5eec98cd9b3a8ec66dc53d86daedd3296a6a2
"@webassemblyjs/ast": "npm:1.14.1"
"@webassemblyjs/helper-buffer": "npm:1.14.1"
"@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2"
"@webassemblyjs/wasm-gen": "npm:1.14.1"
checksum: 10c0/1f9b33731c3c6dbac3a9c483269562fa00d1b6a4e7133217f40e83e975e636fd0f8736e53abd9a47b06b66082ecc976c7384391ab0a68e12d509ea4e4b948d64
languageName: node
linkType: hard
"@webassemblyjs/ieee754@npm:1.11.6":
version: 1.11.6
resolution: "@webassemblyjs/ieee754@npm:1.11.6"
"@webassemblyjs/ieee754@npm:1.13.2":
version: 1.13.2
resolution: "@webassemblyjs/ieee754@npm:1.13.2"
dependencies:
"@xtuc/ieee754": "npm:^1.2.0"
checksum: 10c0/59de0365da450322c958deadade5ec2d300c70f75e17ae55de3c9ce564deff5b429e757d107c7ec69bd0ba169c6b6cc2ff66293ab7264a7053c829b50ffa732f
checksum: 10c0/2e732ca78c6fbae3c9b112f4915d85caecdab285c0b337954b180460290ccd0fb00d2b1dc4bb69df3504abead5191e0d28d0d17dfd6c9d2f30acac8c4961c8a7
languageName: node
linkType: hard
"@webassemblyjs/leb128@npm:1.11.6":
version: 1.11.6
resolution: "@webassemblyjs/leb128@npm:1.11.6"
"@webassemblyjs/leb128@npm:1.13.2":
version: 1.13.2
resolution: "@webassemblyjs/leb128@npm:1.13.2"
dependencies:
"@xtuc/long": "npm:4.2.2"
checksum: 10c0/cb344fc04f1968209804de4da018679c5d4708a03b472a33e0fa75657bb024978f570d3ccf9263b7f341f77ecaa75d0e051b9cd4b7bb17a339032cfd1c37f96e
checksum: 10c0/dad5ef9e383c8ab523ce432dfd80098384bf01c45f70eb179d594f85ce5db2f80fa8c9cba03adafd85684e6d6310f0d3969a882538975989919329ac4c984659
languageName: node
linkType: hard
"@webassemblyjs/utf8@npm:1.11.6":
version: 1.11.6
resolution: "@webassemblyjs/utf8@npm:1.11.6"
checksum: 10c0/14d6c24751a89ad9d801180b0d770f30a853c39f035a15fbc96266d6ac46355227abd27a3fd2eeaa97b4294ced2440a6b012750ae17bafe1a7633029a87b6bee
"@webassemblyjs/utf8@npm:1.13.2":
version: 1.13.2
resolution: "@webassemblyjs/utf8@npm:1.13.2"
checksum: 10c0/d3fac9130b0e3e5a1a7f2886124a278e9323827c87a2b971e6d0da22a2ba1278ac9f66a4f2e363ecd9fac8da42e6941b22df061a119e5c0335f81006de9ee799
languageName: node
linkType: hard
"@webassemblyjs/wasm-edit@npm:^1.12.1":
version: 1.12.1
resolution: "@webassemblyjs/wasm-edit@npm:1.12.1"
"@webassemblyjs/wasm-edit@npm:^1.14.1":
version: 1.14.1
resolution: "@webassemblyjs/wasm-edit@npm:1.14.1"
dependencies:
"@webassemblyjs/ast": "npm:1.12.1"
"@webassemblyjs/helper-buffer": "npm:1.12.1"
"@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6"
"@webassemblyjs/helper-wasm-section": "npm:1.12.1"
"@webassemblyjs/wasm-gen": "npm:1.12.1"
"@webassemblyjs/wasm-opt": "npm:1.12.1"
"@webassemblyjs/wasm-parser": "npm:1.12.1"
"@webassemblyjs/wast-printer": "npm:1.12.1"
checksum: 10c0/972f5e6c522890743999e0ed45260aae728098801c6128856b310dd21f1ee63435fc7b518e30e0ba1cdafd0d1e38275829c1e4451c3536a1d9e726e07a5bba0b
"@webassemblyjs/ast": "npm:1.14.1"
"@webassemblyjs/helper-buffer": "npm:1.14.1"
"@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2"
"@webassemblyjs/helper-wasm-section": "npm:1.14.1"
"@webassemblyjs/wasm-gen": "npm:1.14.1"
"@webassemblyjs/wasm-opt": "npm:1.14.1"
"@webassemblyjs/wasm-parser": "npm:1.14.1"
"@webassemblyjs/wast-printer": "npm:1.14.1"
checksum: 10c0/5ac4781086a2ca4b320bdbfd965a209655fe8a208ca38d89197148f8597e587c9a2c94fb6bd6f1a7dbd4527c49c6844fcdc2af981f8d793a97bf63a016aa86d2
languageName: node
linkType: hard
"@webassemblyjs/wasm-gen@npm:1.12.1":
version: 1.12.1
resolution: "@webassemblyjs/wasm-gen@npm:1.12.1"
"@webassemblyjs/wasm-gen@npm:1.14.1":
version: 1.14.1
resolution: "@webassemblyjs/wasm-gen@npm:1.14.1"
dependencies:
"@webassemblyjs/ast": "npm:1.12.1"
"@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6"
"@webassemblyjs/ieee754": "npm:1.11.6"
"@webassemblyjs/leb128": "npm:1.11.6"
"@webassemblyjs/utf8": "npm:1.11.6"
checksum: 10c0/1e257288177af9fa34c69cab94f4d9036ebed611f77f3897c988874e75182eeeec759c79b89a7a49dd24624fc2d3d48d5580b62b67c4a1c9bfbdcd266b281c16
"@webassemblyjs/ast": "npm:1.14.1"
"@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2"
"@webassemblyjs/ieee754": "npm:1.13.2"
"@webassemblyjs/leb128": "npm:1.13.2"
"@webassemblyjs/utf8": "npm:1.13.2"
checksum: 10c0/d678810d7f3f8fecb2e2bdadfb9afad2ec1d2bc79f59e4711ab49c81cec578371e22732d4966f59067abe5fba8e9c54923b57060a729d28d408e608beef67b10
languageName: node
linkType: hard
"@webassemblyjs/wasm-opt@npm:1.12.1":
version: 1.12.1
resolution: "@webassemblyjs/wasm-opt@npm:1.12.1"
"@webassemblyjs/wasm-opt@npm:1.14.1":
version: 1.14.1
resolution: "@webassemblyjs/wasm-opt@npm:1.14.1"
dependencies:
"@webassemblyjs/ast": "npm:1.12.1"
"@webassemblyjs/helper-buffer": "npm:1.12.1"
"@webassemblyjs/wasm-gen": "npm:1.12.1"
"@webassemblyjs/wasm-parser": "npm:1.12.1"
checksum: 10c0/992a45e1f1871033c36987459436ab4e6430642ca49328e6e32a13de9106fe69ae6c0ac27d7050efd76851e502d11cd1ac0e06b55655dfa889ad82f11a2712fb
"@webassemblyjs/ast": "npm:1.14.1"
"@webassemblyjs/helper-buffer": "npm:1.14.1"
"@webassemblyjs/wasm-gen": "npm:1.14.1"
"@webassemblyjs/wasm-parser": "npm:1.14.1"
checksum: 10c0/515bfb15277ee99ba6b11d2232ddbf22aed32aad6d0956fe8a0a0a004a1b5a3a277a71d9a3a38365d0538ac40d1b7b7243b1a244ad6cd6dece1c1bb2eb5de7ee
languageName: node
linkType: hard
"@webassemblyjs/wasm-parser@npm:1.12.1, @webassemblyjs/wasm-parser@npm:^1.12.1":
version: 1.12.1
resolution: "@webassemblyjs/wasm-parser@npm:1.12.1"
"@webassemblyjs/wasm-parser@npm:1.14.1, @webassemblyjs/wasm-parser@npm:^1.14.1":
version: 1.14.1
resolution: "@webassemblyjs/wasm-parser@npm:1.14.1"
dependencies:
"@webassemblyjs/ast": "npm:1.12.1"
"@webassemblyjs/helper-api-error": "npm:1.11.6"
"@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6"
"@webassemblyjs/ieee754": "npm:1.11.6"
"@webassemblyjs/leb128": "npm:1.11.6"
"@webassemblyjs/utf8": "npm:1.11.6"
checksum: 10c0/e85cec1acad07e5eb65b92d37c8e6ca09c6ca50d7ca58803a1532b452c7321050a0328c49810c337cc2dfd100c5326a54d5ebd1aa5c339ebe6ef10c250323a0e
"@webassemblyjs/ast": "npm:1.14.1"
"@webassemblyjs/helper-api-error": "npm:1.13.2"
"@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2"
"@webassemblyjs/ieee754": "npm:1.13.2"
"@webassemblyjs/leb128": "npm:1.13.2"
"@webassemblyjs/utf8": "npm:1.13.2"
checksum: 10c0/95427b9e5addbd0f647939bd28e3e06b8deefdbdadcf892385b5edc70091bf9b92fa5faac3fce8333554437c5d85835afef8c8a7d9d27ab6ba01ffab954db8c6
languageName: node
linkType: hard
"@webassemblyjs/wast-printer@npm:1.12.1":
version: 1.12.1
resolution: "@webassemblyjs/wast-printer@npm:1.12.1"
"@webassemblyjs/wast-printer@npm:1.14.1":
version: 1.14.1
resolution: "@webassemblyjs/wast-printer@npm:1.14.1"
dependencies:
"@webassemblyjs/ast": "npm:1.12.1"
"@webassemblyjs/ast": "npm:1.14.1"
"@xtuc/long": "npm:4.2.2"
checksum: 10c0/39bf746eb7a79aa69953f194943bbc43bebae98bd7cadd4d8bc8c0df470ca6bf9d2b789effaa180e900fab4e2691983c1f7d41571458bd2a26267f2f0c73705a
checksum: 10c0/8d7768608996a052545251e896eac079c98e0401842af8dd4de78fba8d90bd505efb6c537e909cd6dae96e09db3fa2e765a6f26492553a675da56e2db51f9d24
languageName: node
linkType: hard
@@ -2848,12 +2868,12 @@ __metadata:
languageName: node
linkType: hard
"acorn-import-attributes@npm:^1.9.5":
version: 1.9.5
resolution: "acorn-import-attributes@npm:1.9.5"
"acorn-import-phases@npm:^1.0.3":
version: 1.0.4
resolution: "acorn-import-phases@npm:1.0.4"
peerDependencies:
acorn: ^8
checksum: 10c0/5926eaaead2326d5a86f322ff1b617b0f698aa61dc719a5baa0e9d955c9885cc71febac3fb5bacff71bbf2c4f9c12db2056883c68c53eb962c048b952e1e013d
acorn: ^8.14.0
checksum: 10c0/338eb46fc1aed5544f628344cb9af189450b401d152ceadbf1f5746901a5d923016cd0e7740d5606062d374fdf6941c29bb515d2bd133c4f4242d5d4cd73a3c7
languageName: node
linkType: hard
@@ -2866,7 +2886,16 @@ __metadata:
languageName: node
linkType: hard
"acorn@npm:^8.7.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0":
"acorn@npm:^8.15.0":
version: 8.15.0
resolution: "acorn@npm:8.15.0"
bin:
acorn: bin/acorn
checksum: 10c0/dec73ff59b7d6628a01eebaece7f2bdb8bb62b9b5926dcad0f8931f2b8b79c2be21f6c68ac095592adb5adb15831a3635d9343e6a91d028bbe85d564875ec3ec
languageName: node
linkType: hard
"acorn@npm:^8.9.0":
version: 8.12.1
resolution: "acorn@npm:8.12.1"
bin:
@@ -2923,6 +2952,17 @@ __metadata:
languageName: node
linkType: hard
"ajv-keywords@npm:^5.1.0":
version: 5.1.0
resolution: "ajv-keywords@npm:5.1.0"
dependencies:
fast-deep-equal: "npm:^3.1.3"
peerDependencies:
ajv: ^8.8.2
checksum: 10c0/18bec51f0171b83123ba1d8883c126e60c6f420cef885250898bf77a8d3e65e3bfb9e8564f497e30bdbe762a83e0d144a36931328616a973ee669dc74d4a9590
languageName: node
linkType: hard
"ajv@npm:^6.12.4, ajv@npm:^6.12.5":
version: 6.12.6
resolution: "ajv@npm:6.12.6"
@@ -2935,7 +2975,7 @@ __metadata:
languageName: node
linkType: hard
"ajv@npm:^8.0.0, ajv@npm:^8.12.0, ajv@npm:^8.16.0":
"ajv@npm:^8.0.0, ajv@npm:^8.12.0, ajv@npm:^8.16.0, ajv@npm:^8.9.0":
version: 8.17.1
resolution: "ajv@npm:8.17.1"
dependencies:
@@ -3397,6 +3437,15 @@ __metadata:
languageName: node
linkType: hard
"baseline-browser-mapping@npm:^2.9.0":
version: 2.9.19
resolution: "baseline-browser-mapping@npm:2.9.19"
bin:
baseline-browser-mapping: dist/cli.js
checksum: 10c0/569928db78bcd081953d7db79e4243a59a579a34b4ae1806b9b42d3b7f84e5bc40e6e82ae4fa06e7bef8291bf747b33b3f9ef5d3c6e1e420cb129d9295536129
languageName: node
linkType: hard
"basic-auth@npm:^2.0.1":
version: 2.0.1
resolution: "basic-auth@npm:2.0.1"
@@ -3553,17 +3602,18 @@ __metadata:
languageName: node
linkType: hard
"browserslist@npm:^4.21.10":
version: 4.23.3
resolution: "browserslist@npm:4.23.3"
"browserslist@npm:^4.28.1":
version: 4.28.1
resolution: "browserslist@npm:4.28.1"
dependencies:
caniuse-lite: "npm:^1.0.30001646"
electron-to-chromium: "npm:^1.5.4"
node-releases: "npm:^2.0.18"
update-browserslist-db: "npm:^1.1.0"
baseline-browser-mapping: "npm:^2.9.0"
caniuse-lite: "npm:^1.0.30001759"
electron-to-chromium: "npm:^1.5.263"
node-releases: "npm:^2.0.27"
update-browserslist-db: "npm:^1.2.0"
bin:
browserslist: cli.js
checksum: 10c0/3063bfdf812815346447f4796c8f04601bf5d62003374305fd323c2a463e42776475bcc5309264e39bcf9a8605851e53560695991a623be988138b3ff8c66642
checksum: 10c0/545a5fa9d7234e3777a7177ec1e9134bb2ba60a69e6b95683f6982b1473aad347c77c1264ccf2ac5dea609a9731fbfbda6b85782bdca70f80f86e28a402504bd
languageName: node
linkType: hard
@@ -3787,10 +3837,10 @@ __metadata:
languageName: node
linkType: hard
"caniuse-lite@npm:^1.0.30001646":
version: 1.0.30001659
resolution: "caniuse-lite@npm:1.0.30001659"
checksum: 10c0/11dc1c0795505d5c629cdf02361d7d60249646a49ed2868997144c3d9c6b0c3e18d87f6ea2b48b6deed593c483271003cebca7dd805fbda96607a9b83899eeaa
"caniuse-lite@npm:^1.0.30001759":
version: 1.0.30001768
resolution: "caniuse-lite@npm:1.0.30001768"
checksum: 10c0/16808cb39f9563098deab6d45bcd0642a79fc5ace8dbcea8106b008b179820353e3ec089ed7e54f1f3c8bb84f2c2835b451f308212d8f36c2b7942f879e91955
languageName: node
linkType: hard
@@ -4956,10 +5006,10 @@ __metadata:
languageName: unknown
linkType: soft
"electron-to-chromium@npm:^1.5.4":
version: 1.5.18
resolution: "electron-to-chromium@npm:1.5.18"
checksum: 10c0/2c553c4e7618e887398af0fb7ddd8055beb69d37a810ad73fcea0f3e9027f1fc879ef280151fb6bae8e5b961f5597452eafc1ae5a0adca5bd49211545a34afe7
"electron-to-chromium@npm:^1.5.263":
version: 1.5.286
resolution: "electron-to-chromium@npm:1.5.286"
checksum: 10c0/5384510f9682d7e46f98fa48b874c3901d9639de96e9e387afce1fe010fbac31376df0534524edc15f66e9902bfacee54037a5e598004e9c6a617884e379926d
languageName: node
linkType: hard
@@ -5034,13 +5084,13 @@ __metadata:
languageName: node
linkType: hard
"enhanced-resolve@npm:^5.17.1":
version: 5.17.1
resolution: "enhanced-resolve@npm:5.17.1"
"enhanced-resolve@npm:^5.19.0":
version: 5.19.0
resolution: "enhanced-resolve@npm:5.19.0"
dependencies:
graceful-fs: "npm:^4.2.4"
tapable: "npm:^2.2.0"
checksum: 10c0/81a0515675eca17efdba2cf5bad87abc91a528fc1191aad50e275e74f045b41506167d420099022da7181c8d787170ea41e4a11a0b10b7a16f6237daecb15370
tapable: "npm:^2.3.0"
checksum: 10c0/966b1dffb82d5f6a4d6a86e904e812104a999066aa29f9223040aaa751e7c453b462a3f5ef91f8bd4408131ff6f7f90651dd1c804bdcb7944e2099a9c2e45ee2
languageName: node
linkType: hard
@@ -5305,10 +5355,10 @@ __metadata:
languageName: node
linkType: hard
"es-module-lexer@npm:^1.2.1":
version: 1.5.4
resolution: "es-module-lexer@npm:1.5.4"
checksum: 10c0/300a469488c2f22081df1e4c8398c78db92358496e639b0df7f89ac6455462aaf5d8893939087c1a1cbcbf20eed4610c70e0bcb8f3e4b0d80a5d2611c539408c
"es-module-lexer@npm:^2.0.0":
version: 2.0.0
resolution: "es-module-lexer@npm:2.0.0"
checksum: 10c0/ae78dbbd43035a4b972c46cfb6877e374ea290adfc62bc2f5a083fea242c0b2baaab25c5886af86be55f092f4a326741cb94334cd3c478c383fdc8a9ec5ff817
languageName: node
linkType: hard
@@ -5420,7 +5470,7 @@ __metadata:
languageName: node
linkType: hard
"escalade@npm:^3.1.1, escalade@npm:^3.1.2":
"escalade@npm:^3.1.1, escalade@npm:^3.2.0":
version: 3.2.0
resolution: "escalade@npm:3.2.0"
checksum: 10c0/ced4dd3a78e15897ed3be74e635110bbf3b08877b0a41be50dcb325ee0e0b5f65fc2d50e9845194d7c4633f327e2e1c6cce00a71b617c5673df0374201d67f65
@@ -8609,10 +8659,10 @@ __metadata:
languageName: node
linkType: hard
"loader-runner@npm:^4.2.0":
version: 4.3.0
resolution: "loader-runner@npm:4.3.0"
checksum: 10c0/a44d78aae0907a72f73966fe8b82d1439c8c485238bd5a864b1b9a2a3257832effa858790241e6b37876b5446a78889adf2fcc8dd897ce54c089ecc0a0ce0bf0
"loader-runner@npm:^4.3.1":
version: 4.3.1
resolution: "loader-runner@npm:4.3.1"
checksum: 10c0/a523b6329f114e0a98317158e30a7dfce044b731521be5399464010472a93a15ece44757d1eaed1d8845019869c5390218bc1c7c3110f4eeaef5157394486eac
languageName: node
linkType: hard
@@ -10064,10 +10114,10 @@ __metadata:
languageName: node
linkType: hard
"node-releases@npm:^2.0.18":
version: 2.0.18
resolution: "node-releases@npm:2.0.18"
checksum: 10c0/786ac9db9d7226339e1dc84bbb42007cb054a346bd9257e6aa154d294f01bc6a6cddb1348fa099f079be6580acbb470e3c048effd5f719325abd0179e566fd27
"node-releases@npm:^2.0.27":
version: 2.0.27
resolution: "node-releases@npm:2.0.27"
checksum: 10c0/f1e6583b7833ea81880627748d28a3a7ff5703d5409328c216ae57befbced10ce2c991bea86434e8ec39003bd017f70481e2e5f8c1f7e0a7663241f81d6e00e2
languageName: node
linkType: hard
@@ -10906,20 +10956,13 @@ __metadata:
languageName: node
linkType: hard
"picocolors@npm:^1.0.0":
"picocolors@npm:^1.0.0, picocolors@npm:^1.1.1":
version: 1.1.1
resolution: "picocolors@npm:1.1.1"
checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58
languageName: node
linkType: hard
"picocolors@npm:^1.0.1":
version: 1.1.0
resolution: "picocolors@npm:1.1.0"
checksum: 10c0/86946f6032148801ef09c051c6fb13b5cf942eaf147e30ea79edb91dd32d700934edebe782a1078ff859fb2b816792e97ef4dab03d7f0b804f6b01a0df35e023
languageName: node
linkType: hard
"picomatch@npm:^2.0.4":
version: 2.0.7
resolution: "picomatch@npm:2.0.7"
@@ -12543,7 +12586,7 @@ __metadata:
languageName: node
linkType: hard
"schema-utils@npm:^3.0.0, schema-utils@npm:^3.1.1, schema-utils@npm:^3.2.0":
"schema-utils@npm:^3.0.0":
version: 3.3.0
resolution: "schema-utils@npm:3.3.0"
dependencies:
@@ -12554,6 +12597,18 @@ __metadata:
languageName: node
linkType: hard
"schema-utils@npm:^4.3.0, schema-utils@npm:^4.3.3":
version: 4.3.3
resolution: "schema-utils@npm:4.3.3"
dependencies:
"@types/json-schema": "npm:^7.0.9"
ajv: "npm:^8.9.0"
ajv-formats: "npm:^2.1.1"
ajv-keywords: "npm:^5.1.0"
checksum: 10c0/1c8d2c480a026d7c02ab2ecbe5919133a096d6a721a3f201fa50663e4f30f6d6ba020dfddd93cb828b66b922e76b342e103edd19a62c95c8f60e9079cc403202
languageName: node
linkType: hard
"semver-compare@npm:^1.0.0":
version: 1.0.0
resolution: "semver-compare@npm:1.0.0"
@@ -12659,7 +12714,7 @@ __metadata:
languageName: node
linkType: hard
"serialize-javascript@npm:^6.0.1, serialize-javascript@npm:^6.0.2":
"serialize-javascript@npm:^6.0.2":
version: 6.0.2
resolution: "serialize-javascript@npm:6.0.2"
dependencies:
@@ -13564,10 +13619,10 @@ __metadata:
languageName: node
linkType: hard
"tapable@npm:^2.1.1, tapable@npm:^2.2.0":
version: 2.2.1
resolution: "tapable@npm:2.2.1"
checksum: 10c0/bc40e6efe1e554d075469cedaba69a30eeb373552aaf41caeaaa45bf56ffacc2674261b106245bd566b35d8f3329b52d838e851ee0a852120acae26e622925c9
"tapable@npm:^2.3.0":
version: 2.3.0
resolution: "tapable@npm:2.3.0"
checksum: 10c0/cb9d67cc2c6a74dedc812ef3085d9d681edd2c1fa18e4aef57a3c0605fdbe44e6b8ea00bd9ef21bc74dd45314e39d31227aa031ebf2f5e38164df514136f2681
languageName: node
linkType: hard
@@ -13618,15 +13673,15 @@ __metadata:
languageName: node
linkType: hard
"terser-webpack-plugin@npm:^5.3.10":
version: 5.3.10
resolution: "terser-webpack-plugin@npm:5.3.10"
"terser-webpack-plugin@npm:^5.3.16":
version: 5.3.16
resolution: "terser-webpack-plugin@npm:5.3.16"
dependencies:
"@jridgewell/trace-mapping": "npm:^0.3.20"
"@jridgewell/trace-mapping": "npm:^0.3.25"
jest-worker: "npm:^27.4.5"
schema-utils: "npm:^3.1.1"
serialize-javascript: "npm:^6.0.1"
terser: "npm:^5.26.0"
schema-utils: "npm:^4.3.0"
serialize-javascript: "npm:^6.0.2"
terser: "npm:^5.31.1"
peerDependencies:
webpack: ^5.1.0
peerDependenciesMeta:
@@ -13636,21 +13691,21 @@ __metadata:
optional: true
uglify-js:
optional: true
checksum: 10c0/66d1ed3174542560911cf96f4716aeea8d60e7caab212291705d50072b6ba844c7391442541b13c848684044042bea9ec87512b8506528c12854943da05faf91
checksum: 10c0/39e37c5b3015c1a5354a3633f77235677bfa06eac2608ce26d258b1d1a74070a99910319a6f2f2c437eb61dc321f66434febe01d78e73fa96b4d4393b813f4cf
languageName: node
linkType: hard
"terser@npm:^5.26.0":
version: 5.32.0
resolution: "terser@npm:5.32.0"
"terser@npm:^5.31.1":
version: 5.46.0
resolution: "terser@npm:5.46.0"
dependencies:
"@jridgewell/source-map": "npm:^0.3.3"
acorn: "npm:^8.8.2"
acorn: "npm:^8.15.0"
commander: "npm:^2.20.0"
source-map-support: "npm:~0.5.20"
bin:
terser: bin/terser
checksum: 10c0/94daae4881258eb7d09abd46378e23d11ee46caa507b2fb26c5595c7e490914be734e0de38c50041dc38fae5fca24de11badf042dfbbfc1d336ed117335c420a
checksum: 10c0/93ad468f13187c4f66b609bbfc00a6aee752007779ca3157f2c1ee063697815748d6010fd449a16c30be33213748431d5f54cc0224ba6a3fbbf5acd3582a4356
languageName: node
linkType: hard
@@ -14395,17 +14450,17 @@ __metadata:
languageName: node
linkType: hard
"update-browserslist-db@npm:^1.1.0":
version: 1.1.0
resolution: "update-browserslist-db@npm:1.1.0"
"update-browserslist-db@npm:^1.2.0":
version: 1.2.3
resolution: "update-browserslist-db@npm:1.2.3"
dependencies:
escalade: "npm:^3.1.2"
picocolors: "npm:^1.0.1"
escalade: "npm:^3.2.0"
picocolors: "npm:^1.1.1"
peerDependencies:
browserslist: ">= 4.21.0"
bin:
update-browserslist-db: cli.js
checksum: 10c0/a7452de47785842736fb71547651c5bbe5b4dc1e3722ccf48a704b7b34e4dcf633991eaa8e4a6a517ffb738b3252eede3773bef673ef9021baa26b056d63a5b9
checksum: 10c0/13a00355ea822388f68af57410ce3255941d5fb9b7c49342c4709a07c9f230bbef7f7499ae0ca7e0de532e79a82cc0c4edbd125f1a323a1845bf914efddf8bec
languageName: node
linkType: hard
@@ -14633,13 +14688,13 @@ __metadata:
languageName: node
linkType: hard
"watchpack@npm:^2.4.1":
version: 2.4.2
resolution: "watchpack@npm:2.4.2"
"watchpack@npm:^2.5.1":
version: 2.5.1
resolution: "watchpack@npm:2.5.1"
dependencies:
glob-to-regexp: "npm:^0.4.1"
graceful-fs: "npm:^4.1.2"
checksum: 10c0/ec60a5f0e9efaeca0102fd9126346b3b2d523e01c34030d3fddf5813a7125765121ebdc2552981136dcd2c852deb1af0b39340f2fcc235f292db5399d0283577
checksum: 10c0/dffbb483d1f61be90dc570630a1eb308581e2227d507d783b1d94a57ac7b705ecd9a1a4b73d73c15eab596d39874e5276a3d9cb88bbb698bafc3f8d08c34cf17
languageName: node
linkType: hard
@@ -14707,46 +14762,48 @@ __metadata:
languageName: node
linkType: hard
"webpack-sources@npm:^3.2.3":
version: 3.2.3
resolution: "webpack-sources@npm:3.2.3"
checksum: 10c0/2ef63d77c4fad39de4a6db17323d75eb92897b32674e97d76f0a1e87c003882fc038571266ad0ef581ac734cbe20952912aaa26155f1905e96ce251adbb1eb4e
"webpack-sources@npm:^3.3.3":
version: 3.3.3
resolution: "webpack-sources@npm:3.3.3"
checksum: 10c0/ab732f6933b513ba4d505130418995ddef6df988421fccf3289e53583c6a39e205c4a0739cee98950964552d3006604912679c736031337fb4a9d78d8576ed40
languageName: node
linkType: hard
"webpack@npm:^5.95.0":
version: 5.95.0
resolution: "webpack@npm:5.95.0"
"webpack@npm:^5.104.1":
version: 5.105.0
resolution: "webpack@npm:5.105.0"
dependencies:
"@types/estree": "npm:^1.0.5"
"@webassemblyjs/ast": "npm:^1.12.1"
"@webassemblyjs/wasm-edit": "npm:^1.12.1"
"@webassemblyjs/wasm-parser": "npm:^1.12.1"
acorn: "npm:^8.7.1"
acorn-import-attributes: "npm:^1.9.5"
browserslist: "npm:^4.21.10"
"@types/eslint-scope": "npm:^3.7.7"
"@types/estree": "npm:^1.0.8"
"@types/json-schema": "npm:^7.0.15"
"@webassemblyjs/ast": "npm:^1.14.1"
"@webassemblyjs/wasm-edit": "npm:^1.14.1"
"@webassemblyjs/wasm-parser": "npm:^1.14.1"
acorn: "npm:^8.15.0"
acorn-import-phases: "npm:^1.0.3"
browserslist: "npm:^4.28.1"
chrome-trace-event: "npm:^1.0.2"
enhanced-resolve: "npm:^5.17.1"
es-module-lexer: "npm:^1.2.1"
enhanced-resolve: "npm:^5.19.0"
es-module-lexer: "npm:^2.0.0"
eslint-scope: "npm:5.1.1"
events: "npm:^3.2.0"
glob-to-regexp: "npm:^0.4.1"
graceful-fs: "npm:^4.2.11"
json-parse-even-better-errors: "npm:^2.3.1"
loader-runner: "npm:^4.2.0"
loader-runner: "npm:^4.3.1"
mime-types: "npm:^2.1.27"
neo-async: "npm:^2.6.2"
schema-utils: "npm:^3.2.0"
tapable: "npm:^2.1.1"
terser-webpack-plugin: "npm:^5.3.10"
watchpack: "npm:^2.4.1"
webpack-sources: "npm:^3.2.3"
schema-utils: "npm:^4.3.3"
tapable: "npm:^2.3.0"
terser-webpack-plugin: "npm:^5.3.16"
watchpack: "npm:^2.5.1"
webpack-sources: "npm:^3.3.3"
peerDependenciesMeta:
webpack-cli:
optional: true
bin:
webpack: bin/webpack.js
checksum: 10c0/b9e6d0f8ebcbf0632494ac0b90fe4acb8f4a9b83f7ace4a67a15545a36fe58599c912ab58e625e1bf58ab3b0916c75fe99da6196d412ee0cab0b5065edd84238
checksum: 10c0/4aea6b976485b5364e122f301c08f48efa84ddb2c0cb5d09f27445d1f2da0b9875cd889e41b58cac3ff05618a9c965be716df52586d151b5f52a7bbed7662174
languageName: node
linkType: hard