build: update some build dependencies (#44069)

* build: update some build dependencies (#43882)

* build: update some build dependencies

* build: fix eslint issues after updating

* build: disable ts check on busted js example

* build: update internal types for stricter event handling

* restore url.parse behavior

* fix typing issues

* sigh

* build: update easy deps

* build: skip woa engines check

* build: s/colors/chalk
This commit is contained in:
Samuel Attard 2024-10-01 11:09:28 -07:00 committed by GitHub
parent ac10ddaa48
commit 8af5c6d130
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
49 changed files with 2311 additions and 1338 deletions

View file

@ -19,7 +19,7 @@
"prefer-const": ["error", { "prefer-const": ["error", {
"destructuring": "all" "destructuring": "all"
}], }],
"standard/no-callback-literal": "off" "n/no-callback-literal": "off"
}, },
"parserOptions": { "parserOptions": {
"ecmaVersion": 6, "ecmaVersion": 6,

View file

@ -70,8 +70,9 @@ for:
- job_name: Build Arm on X64 Windows - job_name: Build Arm on X64 Windows
build_script: build_script:
# TODO: Remove --ignore-engines once WOA image is up to node 20
- ps: | - ps: |
node script/yarn.js install --frozen-lockfile node script/yarn.js install --frozen-lockfile --ignore-engines
node script/doc-only-change.js --prNumber=$env:APPVEYOR_PULL_REQUEST_NUMBER node script/doc-only-change.js --prNumber=$env:APPVEYOR_PULL_REQUEST_NUMBER
$env:SHOULD_SKIP_ARTIFACT_VALIDATION = "false" $env:SHOULD_SKIP_ARTIFACT_VALIDATION = "false"
if ($LASTEXITCODE -eq 0) { if ($LASTEXITCODE -eq 0) {
@ -264,7 +265,7 @@ for:
build_script: build_script:
- ps: | - ps: |
node script/yarn.js install --frozen-lockfile node script/yarn.js install --frozen-lockfile --ignore-engines
node script/doc-only-change.js --prNumber=$env:APPVEYOR_PULL_REQUEST_NUMBER node script/doc-only-change.js --prNumber=$env:APPVEYOR_PULL_REQUEST_NUMBER
if ($LASTEXITCODE -eq 0) { if ($LASTEXITCODE -eq 0) {
Write-warning "Skipping build for doc only change" Write-warning "Skipping build for doc only change"

View file

@ -255,6 +255,7 @@ async function startRepl () {
// start the default app. // start the default app.
if (option.file && !option.webdriver) { if (option.file && !option.webdriver) {
const file = option.file; const file = option.file;
// eslint-disable-next-line n/no-deprecated-api
const protocol = url.parse(file).protocol; const protocol = url.parse(file).protocol;
const extension = path.extname(file); const extension = path.extname(file);
if (protocol === 'http:' || protocol === 'https:' || protocol === 'file:' || protocol === 'chrome:') { if (protocol === 'http:' || protocol === 'https:' || protocol === 'file:' || protocol === 'chrome:') {

View file

@ -126,10 +126,18 @@ or session log off.
#### Event: 'blur' #### Event: 'blur'
Returns:
* `event` Event
Emitted when the window loses focus. Emitted when the window loses focus.
#### Event: 'focus' #### Event: 'focus'
Returns:
* `event` Event
Emitted when the window gains focus. Emitted when the window gains focus.
#### Event: 'show' #### Event: 'show'

View file

@ -53,7 +53,7 @@ following properties:
[`request.followRedirect`](#requestfollowredirect) is invoked synchronously [`request.followRedirect`](#requestfollowredirect) is invoked synchronously
during the [`redirect`](#event-redirect) event. Defaults to `follow`. during the [`redirect`](#event-redirect) event. Defaults to `follow`.
* `origin` string (optional) - The origin URL of the request. * `origin` string (optional) - The origin URL of the request.
* `referrerPolicy` string (optional) - can be `""`, `no-referrer`, * `referrerPolicy` string (optional) - can be "", `no-referrer`,
`no-referrer-when-downgrade`, `origin`, `origin-when-cross-origin`, `no-referrer-when-downgrade`, `origin`, `origin-when-cross-origin`,
`unsafe-url`, `same-origin`, `strict-origin`, or `unsafe-url`, `same-origin`, `strict-origin`, or
`strict-origin-when-cross-origin`. Defaults to `strict-origin-when-cross-origin`. Defaults to

View file

@ -31,7 +31,7 @@ Emitted when a request has been canceled during an ongoing HTTP transaction.
Returns: Returns:
`error` Error - Typically holds an error string identifying failure root cause. * `error` Error - Typically holds an error string identifying failure root cause.
Emitted when an error was encountered while streaming response data events. For Emitted when an error was encountered while streaming response data events. For
instance, if the server closes the underlying while the response is still instance, if the server closes the underlying while the response is still

View file

@ -495,7 +495,7 @@ app.whenReady().then(() => {
}) })
``` ```
```js ```js @ts-nocheck
// Renderer Process // Renderer Process
const portConnect = async () => { const portConnect = async () => {

View file

@ -251,33 +251,35 @@ export const roleList: Record<RoleId, Role> = {
{ role: 'cut' }, { role: 'cut' },
{ role: 'copy' }, { role: 'copy' },
{ role: 'paste' }, { role: 'paste' },
...(isMac ? [ ...(isMac
{ role: 'pasteAndMatchStyle' }, ? [
{ role: 'delete' }, { role: 'pasteAndMatchStyle' },
{ role: 'selectAll' }, { role: 'delete' },
{ type: 'separator' }, { role: 'selectAll' },
{ { type: 'separator' },
label: 'Substitutions', {
submenu: [ label: 'Substitutions',
{ role: 'showSubstitutions' }, submenu: [
{ type: 'separator' }, { role: 'showSubstitutions' },
{ role: 'toggleSmartQuotes' }, { type: 'separator' },
{ role: 'toggleSmartDashes' }, { role: 'toggleSmartQuotes' },
{ role: 'toggleTextReplacement' } { role: 'toggleSmartDashes' },
] { role: 'toggleTextReplacement' }
}, ]
{ },
label: 'Speech', {
submenu: [ label: 'Speech',
{ role: 'startSpeaking' }, submenu: [
{ role: 'stopSpeaking' } { role: 'startSpeaking' },
] { role: 'stopSpeaking' }
} ]
] as MenuItemConstructorOptions[] : [ }
{ role: 'delete' }, ] as MenuItemConstructorOptions[]
{ type: 'separator' }, : [
{ role: 'selectAll' } { role: 'delete' },
] as MenuItemConstructorOptions[]) { type: 'separator' },
{ role: 'selectAll' }
] as MenuItemConstructorOptions[])
] ]
}, },
// View submenu // View submenu
@ -301,12 +303,14 @@ export const roleList: Record<RoleId, Role> = {
submenu: [ submenu: [
{ role: 'minimize' }, { role: 'minimize' },
{ role: 'zoom' }, { role: 'zoom' },
...(isMac ? [ ...(isMac
{ type: 'separator' }, ? [
{ role: 'front' } { type: 'separator' },
] as MenuItemConstructorOptions[] : [ { role: 'front' }
{ role: 'close' } ] as MenuItemConstructorOptions[]
] as MenuItemConstructorOptions[]) : [
{ role: 'close' }
] as MenuItemConstructorOptions[])
] ]
}, },
// Share submenu // Share submenu

View file

@ -117,10 +117,12 @@ class TouchBarColorPicker extends TouchBarItem<Electron.TouchBarColorPickerConst
@LiveProperty<TouchBarColorPicker>(config => config.selectedColor) @LiveProperty<TouchBarColorPicker>(config => config.selectedColor)
selectedColor!: string; selectedColor!: string;
@ImmutableProperty<TouchBarColorPicker>(({ change: onChange }, setInternalProp) => typeof onChange === 'function' ? (details: { color: string }) => { @ImmutableProperty<TouchBarColorPicker>(({ change: onChange }, setInternalProp) => typeof onChange === 'function'
setInternalProp('selectedColor', details.color); ? (details: { color: string }) => {
onChange(details.color); setInternalProp('selectedColor', details.color);
} : null) onChange(details.color);
}
: null)
onInteraction!: Function | null; onInteraction!: Function | null;
} }
@ -203,10 +205,12 @@ class TouchBarSlider extends TouchBarItem<Electron.TouchBarSliderConstructorOpti
@LiveProperty<TouchBarSlider>(config => config.value) @LiveProperty<TouchBarSlider>(config => config.value)
value!: number; value!: number;
@ImmutableProperty<TouchBarSlider>(({ change: onChange }, setInternalProp) => typeof onChange === 'function' ? (details: { value: number }) => { @ImmutableProperty<TouchBarSlider>(({ change: onChange }, setInternalProp) => typeof onChange === 'function'
setInternalProp('value', details.value); ? (details: { value: number }) => {
onChange(details.value); setInternalProp('value', details.value);
} : null) onChange(details.value);
}
: null)
onInteraction!: Function | null; onInteraction!: Function | null;
} }
@ -236,10 +240,12 @@ class TouchBarSegmentedControl extends TouchBarItem<Electron.TouchBarSegmentedCo
@LiveProperty<TouchBarSegmentedControl>(config => config.mode) @LiveProperty<TouchBarSegmentedControl>(config => config.mode)
mode!: Electron.TouchBarSegmentedControl['mode']; mode!: Electron.TouchBarSegmentedControl['mode'];
@ImmutableProperty<TouchBarSegmentedControl>(({ change: onChange }, setInternalProp) => typeof onChange === 'function' ? (details: { selectedIndex: number, isSelected: boolean }) => { @ImmutableProperty<TouchBarSegmentedControl>(({ change: onChange }, setInternalProp) => typeof onChange === 'function'
setInternalProp('selectedIndex', details.selectedIndex); ? (details: { selectedIndex: number, isSelected: boolean }) => {
onChange(details.selectedIndex, details.isSelected); setInternalProp('selectedIndex', details.selectedIndex);
} : null) onChange(details.selectedIndex, details.isSelected);
}
: null)
onInteraction!: Function | null; onInteraction!: Function | null;
} }
@ -265,13 +271,15 @@ class TouchBarScrubber extends TouchBarItem<Electron.TouchBarScrubberConstructor
@LiveProperty<TouchBarScrubber>(config => typeof config.continuous === 'undefined' ? true : config.continuous) @LiveProperty<TouchBarScrubber>(config => typeof config.continuous === 'undefined' ? true : config.continuous)
continuous!: boolean; continuous!: boolean;
@ImmutableProperty<TouchBarScrubber>(({ select: onSelect, highlight: onHighlight }) => typeof onSelect === 'function' || typeof onHighlight === 'function' ? (details: { type: 'select'; selectedIndex: number } | { type: 'highlight'; highlightedIndex: number }) => { @ImmutableProperty<TouchBarScrubber>(({ select: onSelect, highlight: onHighlight }) => typeof onSelect === 'function' || typeof onHighlight === 'function'
if (details.type === 'select') { ? (details: { type: 'select'; selectedIndex: number } | { type: 'highlight'; highlightedIndex: number }) => {
if (onSelect) onSelect(details.selectedIndex); if (details.type === 'select') {
} else { if (onSelect) onSelect(details.selectedIndex);
if (onHighlight) onHighlight(details.highlightedIndex); } else {
} if (onHighlight) onHighlight(details.highlightedIndex);
} : null) }
}
: null)
onInteraction!: Function | null; onInteraction!: Function | null;
} }

View file

@ -1,5 +1,5 @@
import { app, ipcMain, session, webFrameMain, dialog } from 'electron/main'; import { app, ipcMain, session, webFrameMain, dialog } from 'electron/main';
import type { BrowserWindowConstructorOptions, LoadURLOptions, MessageBoxOptions, WebFrameMain } from 'electron/main'; import type { BrowserWindowConstructorOptions, MessageBoxOptions } from 'electron/main';
import * as url from 'url'; import * as url from 'url';
import * as path from 'path'; import * as path from 'path';
@ -24,8 +24,6 @@ const getNextId = function () {
return ++nextId; return ++nextId;
}; };
type PostData = LoadURLOptions['postData']
// Stock page sizes // Stock page sizes
const PDFPageSizes: Record<string, ElectronInternal.MediaSize> = { const PDFPageSizes: Record<string, ElectronInternal.MediaSize> = {
Letter: { Letter: {
@ -403,7 +401,7 @@ WebContents.prototype.loadURL = function (url, options) {
// the only one is with a bad scheme, perhaps ERR_INVALID_ARGUMENT // the only one is with a bad scheme, perhaps ERR_INVALID_ARGUMENT
// would be more appropriate. // would be more appropriate.
if (!error) { if (!error) {
error = { errorCode: -2, errorDescription: 'ERR_FAILED', url: url }; error = { errorCode: -2, errorDescription: 'ERR_FAILED', url };
} }
finishListener(); finishListener();
}; };
@ -604,7 +602,7 @@ WebContents.prototype._init = function () {
}); });
// Dispatch IPC messages to the ipc module. // Dispatch IPC messages to the ipc module.
this.on('-ipc-message' as any, function (this: Electron.WebContents, event: Electron.IpcMainEvent, internal: boolean, channel: string, args: any[]) { this.on('-ipc-message', function (this: Electron.WebContents, event, internal, channel, args) {
addSenderToEvent(event, this); addSenderToEvent(event, this);
if (internal) { if (internal) {
ipcMainInternal.emit(channel, event, ...args); ipcMainInternal.emit(channel, event, ...args);
@ -618,7 +616,7 @@ WebContents.prototype._init = function () {
} }
}); });
this.on('-ipc-invoke' as any, async function (this: Electron.WebContents, event: Electron.IpcMainInvokeEvent, internal: boolean, channel: string, args: any[]) { this.on('-ipc-invoke', async function (this: Electron.WebContents, event, internal, channel, args) {
addSenderToEvent(event, this); addSenderToEvent(event, this);
const replyWithResult = (result: any) => event._replyChannel.sendReply({ result }); const replyWithResult = (result: any) => event._replyChannel.sendReply({ result });
const replyWithError = (error: Error) => { const replyWithError = (error: Error) => {
@ -640,7 +638,7 @@ WebContents.prototype._init = function () {
} }
}); });
this.on('-ipc-message-sync' as any, function (this: Electron.WebContents, event: Electron.IpcMainEvent, internal: boolean, channel: string, args: any[]) { this.on('-ipc-message-sync', function (this: Electron.WebContents, event, internal, channel, args) {
addSenderToEvent(event, this); addSenderToEvent(event, this);
addReturnValueToEvent(event); addReturnValueToEvent(event);
if (internal) { if (internal) {
@ -658,7 +656,7 @@ WebContents.prototype._init = function () {
} }
}); });
this.on('-ipc-ports' as any, function (this: Electron.WebContents, event: Electron.IpcMainEvent, internal: boolean, channel: string, message: any, ports: any[]) { this.on('-ipc-ports', function (this: Electron.WebContents, event: Electron.IpcMainEvent, internal: boolean, channel: string, message: any, ports: any[]) {
addSenderToEvent(event, this); addSenderToEvent(event, this);
event.ports = ports.map(p => new MessagePortMain(p)); event.ports = ports.map(p => new MessagePortMain(p));
const maybeWebFrame = getWebFrameForEvent(event); const maybeWebFrame = getWebFrameForEvent(event);
@ -676,7 +674,7 @@ WebContents.prototype._init = function () {
} }
}); });
this.on('-before-unload-fired' as any, function (this: Electron.WebContents, event: Electron.Event, proceed: boolean) { this.on('-before-unload-fired', function (this: Electron.WebContents, event, proceed) {
const type = this.getType(); const type = this.getType();
// These are the "interactive" types, i.e. ones a user might be looking at. // These are the "interactive" types, i.e. ones a user might be looking at.
// All other types should ignore the "proceed" signal and unload // All other types should ignore the "proceed" signal and unload
@ -693,12 +691,13 @@ WebContents.prototype._init = function () {
if (this.getType() !== 'remote') { if (this.getType() !== 'remote') {
// Make new windows requested by links behave like "window.open". // Make new windows requested by links behave like "window.open".
this.on('-new-window' as any, (event: Electron.Event, url: string, frameName: string, disposition: Electron.HandlerDetails['disposition'], this.on('-new-window', (event, url, frameName, disposition, rawFeatures, referrer, postData) => {
rawFeatures: string, referrer: Electron.Referrer, postData: PostData) => { const postBody = postData
const postBody = postData ? { ? {
data: postData, data: postData,
...parseContentTypeFormat(postData) ...parseContentTypeFormat(postData)
} : undefined; }
: undefined;
const details: Electron.HandlerDetails = { const details: Electron.HandlerDetails = {
url, url,
frameName, frameName,
@ -735,11 +734,13 @@ WebContents.prototype._init = function () {
let windowOpenOutlivesOpenerOption: boolean = false; let windowOpenOutlivesOpenerOption: boolean = false;
let createWindow: Electron.CreateWindowFunction | undefined; let createWindow: Electron.CreateWindowFunction | undefined;
this.on('-will-add-new-contents' as any, (event: Electron.Event, url: string, frameName: string, rawFeatures: string, disposition: Electron.HandlerDetails['disposition'], referrer: Electron.Referrer, postData: PostData) => { this.on('-will-add-new-contents', (event, url, frameName, rawFeatures, disposition, referrer, postData) => {
const postBody = postData ? { const postBody = postData
data: postData, ? {
...parseContentTypeFormat(postData) data: postData,
} : undefined; ...parseContentTypeFormat(postData)
}
: undefined;
const details: Electron.HandlerDetails = { const details: Electron.HandlerDetails = {
url, url,
frameName, frameName,
@ -761,14 +762,16 @@ WebContents.prototype._init = function () {
windowOpenOverriddenOptions = result.browserWindowConstructorOptions; windowOpenOverriddenOptions = result.browserWindowConstructorOptions;
createWindow = result.createWindow; createWindow = result.createWindow;
if (!event.defaultPrevented) { if (!event.defaultPrevented) {
const secureOverrideWebPreferences = windowOpenOverriddenOptions ? { const secureOverrideWebPreferences = windowOpenOverriddenOptions
// Allow setting of backgroundColor as a webPreference even though ? {
// it's technically a BrowserWindowConstructorOptions option because // Allow setting of backgroundColor as a webPreference even though
// we need to access it in the renderer at init time. // it's technically a BrowserWindowConstructorOptions option because
backgroundColor: windowOpenOverriddenOptions.backgroundColor, // we need to access it in the renderer at init time.
transparent: windowOpenOverriddenOptions.transparent, backgroundColor: windowOpenOverriddenOptions.backgroundColor,
...windowOpenOverriddenOptions.webPreferences transparent: windowOpenOverriddenOptions.transparent,
} : undefined; ...windowOpenOverriddenOptions.webPreferences
}
: undefined;
const { webPreferences: parsedWebPreferences } = parseFeatures(rawFeatures); const { webPreferences: parsedWebPreferences } = parseFeatures(rawFeatures);
const webPreferences = makeWebPreferences({ const webPreferences = makeWebPreferences({
embedder: this, embedder: this,
@ -784,9 +787,7 @@ WebContents.prototype._init = function () {
}); });
// Create a new browser window for "window.open" // Create a new browser window for "window.open"
this.on('-add-new-contents' as any, (event: Electron.Event, webContents: Electron.WebContents, disposition: string, this.on('-add-new-contents', (event, webContents, disposition, _userGesture, _left, _top, _width, _height, url, frameName, referrer, rawFeatures, postData) => {
_userGesture: boolean, _left: number, _top: number, _width: number, _height: number, url: string, frameName: string,
referrer: Electron.Referrer, rawFeatures: string, postData: PostData) => {
const overriddenOptions = windowOpenOverriddenOptions || undefined; const overriddenOptions = windowOpenOverriddenOptions || undefined;
const outlivesOpener = windowOpenOutlivesOpenerOption; const outlivesOpener = windowOpenOutlivesOpenerOption;
const windowOpenFunction = createWindow; const windowOpenFunction = createWindow;
@ -824,7 +825,7 @@ WebContents.prototype._init = function () {
app.emit('login', event, this, ...args); app.emit('login', event, this, ...args);
}); });
this.on('ready-to-show' as any, () => { this.on('ready-to-show', () => {
const owner = this.getOwnerBrowserWindow(); const owner = this.getOwnerBrowserWindow();
if (owner && !owner.isDestroyed()) { if (owner && !owner.isDestroyed()) {
process.nextTick(() => { process.nextTick(() => {
@ -843,7 +844,7 @@ WebContents.prototype._init = function () {
const originCounts = new Map<string, number>(); const originCounts = new Map<string, number>();
const openDialogs = new Set<AbortController>(); const openDialogs = new Set<AbortController>();
this.on('-run-dialog' as any, async (info: {frame: WebFrameMain, dialogType: 'prompt' | 'confirm' | 'alert', messageText: string, defaultPromptText: string}, callback: (success: boolean, user_input: string) => void) => { this.on('-run-dialog', async (info, callback) => {
const originUrl = new URL(info.frame.url); const originUrl = new URL(info.frame.url);
const origin = originUrl.protocol === 'file:' ? originUrl.href : originUrl.origin; const origin = originUrl.protocol === 'file:' ? originUrl.href : originUrl.origin;
if ((originCounts.get(origin) ?? 0) < 0) return callback(false, ''); if ((originCounts.get(origin) ?? 0) < 0) return callback(false, '');
@ -864,15 +865,17 @@ WebContents.prototype._init = function () {
message: info.messageText, message: info.messageText,
checkboxLabel: checkbox, checkboxLabel: checkbox,
signal: abortController.signal, signal: abortController.signal,
...(info.dialogType === 'confirm') ? { ...(info.dialogType === 'confirm')
buttons: ['OK', 'Cancel'], ? {
defaultId: 0, buttons: ['OK', 'Cancel'],
cancelId: 1 defaultId: 0,
} : { cancelId: 1
buttons: ['OK'], }
defaultId: -1, // No default button : {
cancelId: 0 buttons: ['OK'],
} defaultId: -1, // No default button
cancelId: 0
}
}; };
openDialogs.add(abortController); openDialogs.add(abortController);
const promise = parent && !prefs.offscreen ? dialog.showMessageBox(parent, options) : dialog.showMessageBox(options); const promise = parent && !prefs.offscreen ? dialog.showMessageBox(parent, options) : dialog.showMessageBox(options);
@ -886,7 +889,7 @@ WebContents.prototype._init = function () {
} }
}); });
this.on('-cancel-dialogs' as any, () => { this.on('-cancel-dialogs', () => {
for (const controller of openDialogs) { controller.abort(); } for (const controller of openDialogs) { controller.abort(); }
openDialogs.clear(); openDialogs.clear();
}); });

View file

@ -14,33 +14,35 @@ export const setDefaultApplicationMenu = () => {
const helpMenu: Electron.MenuItemConstructorOptions = { const helpMenu: Electron.MenuItemConstructorOptions = {
role: 'help', role: 'help',
submenu: app.isPackaged ? [] : [ submenu: app.isPackaged
{ ? []
label: 'Learn More', : [
click: async () => { {
await shell.openExternal('https://electronjs.org'); label: 'Learn More',
} click: async () => {
}, await shell.openExternal('https://electronjs.org');
{ }
label: 'Documentation', },
click: async () => { {
const version = process.versions.electron; label: 'Documentation',
await shell.openExternal(`https://github.com/electron/electron/tree/v${version}/docs#readme`); click: async () => {
} const version = process.versions.electron;
}, await shell.openExternal(`https://github.com/electron/electron/tree/v${version}/docs#readme`);
{ }
label: 'Community Discussions', },
click: async () => { {
await shell.openExternal('https://discord.gg/electronjs'); label: 'Community Discussions',
} click: async () => {
}, await shell.openExternal('https://discord.gg/electronjs');
{ }
label: 'Search Issues', },
click: async () => { {
await shell.openExternal('https://github.com/electron/electron/issues'); label: 'Search Issues',
} click: async () => {
} await shell.openExternal('https://github.com/electron/electron/issues');
] }
}
]
}; };
const macAppMenu: Electron.MenuItemConstructorOptions = { role: 'appMenu' }; const macAppMenu: Electron.MenuItemConstructorOptions = { role: 'appMenu' };

View file

@ -7,23 +7,29 @@ import { IPC_MESSAGES } from '@electron/internal//common/ipc-messages';
const convertToMenuTemplate = function (items: ContextMenuItem[], handler: (id: number) => void) { const convertToMenuTemplate = function (items: ContextMenuItem[], handler: (id: number) => void) {
return items.map(function (item) { return items.map(function (item) {
const transformed: Electron.MenuItemConstructorOptions = item.type === 'subMenu' ? { const transformed: Electron.MenuItemConstructorOptions = item.type === 'subMenu'
type: 'submenu', ? {
label: item.label, type: 'submenu',
enabled: item.enabled, label: item.label,
submenu: convertToMenuTemplate(item.subItems, handler) enabled: item.enabled,
} : item.type === 'separator' ? { submenu: convertToMenuTemplate(item.subItems, handler)
type: 'separator' }
} : item.type === 'checkbox' ? { : item.type === 'separator'
type: 'checkbox', ? {
label: item.label, type: 'separator'
enabled: item.enabled, }
checked: item.checked : item.type === 'checkbox'
} : { ? {
type: 'normal', type: 'checkbox',
label: item.label, label: item.label,
enabled: item.enabled enabled: item.enabled,
}; checked: item.checked
}
: {
type: 'normal',
label: item.label,
enabled: item.enabled
};
if (item.id != null) { if (item.id != null) {
transformed.click = () => handler(item.id); transformed.click = () => handler(item.id);

View file

@ -237,7 +237,7 @@ const watchEmbedder = function (embedder: Electron.WebContents) {
} }
} }
}; };
embedder.on('-window-visibility-change' as any, onVisibilityChange); embedder.on('-window-visibility-change', onVisibilityChange);
embedder.once('will-destroy' as any, () => { embedder.once('will-destroy' as any, () => {
// Usually the guestInstances is cleared when guest is destroyed, but it // Usually the guestInstances is cleared when guest is destroyed, but it
@ -249,7 +249,7 @@ const watchEmbedder = function (embedder: Electron.WebContents) {
} }
} }
// Clear the listeners. // Clear the listeners.
embedder.removeListener('-window-visibility-change' as any, onVisibilityChange); embedder.removeListener('-window-visibility-change', onVisibilityChange);
watchedEmbedders.delete(embedder); watchedEmbedders.delete(embedder);
}); });
}; };

View file

@ -226,7 +226,7 @@ function validateHeader (name: any, value: any): void {
} }
function parseOptions (optionsIn: ClientRequestConstructorOptions | string): NodeJS.CreateURLLoaderOptions & ExtraURLLoaderOptions { function parseOptions (optionsIn: ClientRequestConstructorOptions | string): NodeJS.CreateURLLoaderOptions & ExtraURLLoaderOptions {
// eslint-disable-next-line node/no-deprecated-api // eslint-disable-next-line n/no-deprecated-api
const options: any = typeof optionsIn === 'string' ? url.parse(optionsIn) : { ...optionsIn }; const options: any = typeof optionsIn === 'string' ? url.parse(optionsIn) : { ...optionsIn };
let urlStr: string = options.url; let urlStr: string = options.url;
@ -259,7 +259,7 @@ function parseOptions (optionsIn: ClientRequestConstructorOptions | string): Nod
// an invalid request. // an invalid request.
throw new TypeError('Request path contains unescaped characters'); throw new TypeError('Request path contains unescaped characters');
} }
// eslint-disable-next-line node/no-deprecated-api // eslint-disable-next-line n/no-deprecated-api
const pathObj = url.parse(options.path || '/'); const pathObj = url.parse(options.path || '/');
urlObj.pathname = pathObj.pathname; urlObj.pathname = pathObj.pathname;
urlObj.search = pathObj.search; urlObj.search = pathObj.search;

View file

@ -59,7 +59,7 @@ function isInstalled () {
if (fs.readFileSync(path.join(__dirname, 'path.txt'), 'utf-8') !== platformPath) { if (fs.readFileSync(path.join(__dirname, 'path.txt'), 'utf-8') !== platformPath) {
return false; return false;
} }
} catch (ignored) { } catch {
return false; return false;
} }

View file

@ -4,73 +4,63 @@
"repository": "https://github.com/electron/electron", "repository": "https://github.com/electron/electron",
"description": "Build cross platform desktop apps with JavaScript, HTML, and CSS", "description": "Build cross platform desktop apps with JavaScript, HTML, and CSS",
"devDependencies": { "devDependencies": {
"@azure/storage-blob": "^12.9.0", "@azure/storage-blob": "^12.25.0",
"@electron/asar": "^3.2.1", "@electron/asar": "^3.2.13",
"@electron/docs-parser": "^1.2.1", "@electron/docs-parser": "^1.2.3",
"@electron/fiddle-core": "^1.0.4", "@electron/fiddle-core": "^1.3.4",
"@electron/github-app-auth": "^2.0.0", "@electron/github-app-auth": "^2.2.1",
"@electron/lint-roller": "^2.3.0", "@electron/lint-roller": "^2.4.0",
"@electron/typescript-definitions": "^8.15.2", "@electron/typescript-definitions": "^8.15.8",
"@octokit/rest": "^20.0.2", "@octokit/rest": "^20.0.2",
"@primer/octicons": "^10.0.0", "@primer/octicons": "^10.0.0",
"@types/basic-auth": "^1.1.3", "@types/minimist": "^1.2.5",
"@types/busboy": "^1.5.0",
"@types/chai": "^4.2.12",
"@types/chai-as-promised": "^7.1.3",
"@types/dirty-chai": "^2.0.2",
"@types/express": "^4.17.13",
"@types/minimist": "^1.2.0",
"@types/mocha": "^7.0.2",
"@types/node": "^20.9.0", "@types/node": "^20.9.0",
"@types/semver": "^7.3.3", "@types/semver": "^7.5.8",
"@types/send": "^0.14.5", "@types/stream-json": "^1.7.7",
"@types/split": "^1.0.0", "@types/temp": "^0.9.4",
"@types/stream-json": "^1.5.1", "@types/webpack": "^5.28.5",
"@types/temp": "^0.8.34", "@types/webpack-env": "^1.18.5",
"@types/uuid": "^3.4.6", "@typescript-eslint/eslint-plugin": "^8.7.0",
"@types/w3c-web-serial": "^1.0.3", "@typescript-eslint/parser": "^8.7.0",
"@types/webpack": "^5.28.0",
"@types/webpack-env": "^1.17.0",
"@typescript-eslint/eslint-plugin": "^5.59.7",
"@typescript-eslint/parser": "^5.59.7",
"buffer": "^6.0.3", "buffer": "^6.0.3",
"chalk": "^4.1.0",
"check-for-leaks": "^1.2.1", "check-for-leaks": "^1.2.1",
"colors": "1.4.0", "dotenv-safe": "^4.0.4",
"dugite": "^2.3.0", "dugite": "^2.7.1",
"eslint": "^8.41.0", "eslint": "^8.57.1",
"eslint-config-standard": "^14.1.1", "eslint-config-standard": "^17.1.0",
"eslint-plugin-import": "^2.26.0", "eslint-plugin-import": "^2.30.0",
"eslint-plugin-mocha": "^7.0.1", "eslint-plugin-mocha": "^10.5.0",
"eslint-plugin-n": "^16.6.2",
"eslint-plugin-node": "^11.1.0", "eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^4.2.1", "eslint-plugin-promise": "^6.6.0",
"eslint-plugin-standard": "^4.0.1", "eslint-plugin-standard": "^5.0.0",
"eslint-plugin-unicorn": "^46.0.1", "eslint-plugin-unicorn": "^55.0.0",
"events": "^3.2.0", "events": "^3.2.0",
"express": "^4.19.2",
"folder-hash": "^2.1.1", "folder-hash": "^2.1.1",
"got": "^11.8.5", "got": "^11.8.5",
"husky": "^8.0.1", "husky": "^8.0.1",
"lint": "^1.1.2", "lint": "^1.1.2",
"lint-staged": "^10.2.11", "lint-staged": "^10.2.11",
"markdownlint-cli2": "^0.13.0", "markdownlint-cli2": "^0.13.0",
"minimist": "^1.2.6", "minimist": "^1.2.8",
"null-loader": "^4.0.0", "null-loader": "^4.0.1",
"pre-flight": "^1.1.0", "pre-flight": "^2.0.0",
"process": "^0.11.10", "process": "^0.11.10",
"remark-cli": "^10.0.0", "remark-cli": "^10.0.0",
"remark-preset-lint-markdown-style-guide": "^4.0.0", "remark-preset-lint-markdown-style-guide": "^4.0.0",
"semver": "^7.5.2", "semver": "^7.6.3",
"shx": "^0.3.2", "shx": "^0.3.4",
"stream-json": "^1.7.1", "stream-json": "^1.8.0",
"tap-xunit": "^2.4.1", "tap-xunit": "^2.4.1",
"temp": "^0.8.3", "temp": "^0.9.4",
"timers-browserify": "1.4.2", "timers-browserify": "1.4.2",
"ts-loader": "^8.0.2", "ts-loader": "^8.0.2",
"ts-node": "6.2.0", "ts-node": "6.2.0",
"typescript": "^5.6.2", "typescript": "^5.6.2",
"url": "^0.11.0", "url": "^0.11.4",
"webpack": "^5.76.0", "webpack": "^5.94.0",
"webpack-cli": "^4.10.0", "webpack-cli": "^5.1.4",
"wrapper-webpack-plugin": "^2.2.0" "wrapper-webpack-plugin": "^2.2.0"
}, },
"private": true, "private": true,

View file

@ -26,6 +26,7 @@ async function checkIfDocOnlyChange () {
const nonDocChange = filesChanged.length === 0 || filesChanged.find(({ filename }) => { const nonDocChange = filesChanged.length === 0 || filesChanged.find(({ filename }) => {
const fileDirs = filename.split('/'); const fileDirs = filename.split('/');
if (fileDirs[0] !== 'docs') return true; if (fileDirs[0] !== 'docs') return true;
return false;
}); });
process.exit(nonDocChange ? 1 : 0); process.exit(nonDocChange ? 1 : 0);

View file

@ -15,7 +15,7 @@ module.exports.getElectronVersion = () => {
if (match) { if (match) {
return match[1]; return match[1];
} }
} catch (error) { } catch {
// Error may happen when trying to get version before running gn, which is a // Error may happen when trying to get version before running gn, which is a
// valid case and error will be ignored. // valid case and error will be ignored.
} }

View file

@ -1,3 +1,4 @@
const chalk = require('chalk');
const { GitProcess } = require('dugite'); const { GitProcess } = require('dugite');
const fs = require('node:fs'); const fs = require('node:fs');
const os = require('node:os'); const os = require('node:os');
@ -6,10 +7,9 @@ const path = require('node:path');
const ELECTRON_DIR = path.resolve(__dirname, '..', '..'); const ELECTRON_DIR = path.resolve(__dirname, '..', '..');
const SRC_DIR = path.resolve(ELECTRON_DIR, '..'); const SRC_DIR = path.resolve(ELECTRON_DIR, '..');
require('colors');
// eslint-disable-next-line @typescript-eslint/no-unused-vars // eslint-disable-next-line @typescript-eslint/no-unused-vars
const pass = '✓'.green; const pass = chalk.green('✓');
const fail = '✗'.red; const fail = chalk.red('✗');
function getElectronExec () { function getElectronExec () {
const OUT_DIR = getOutDir(); const OUT_DIR = getOutDir();

View file

@ -144,7 +144,6 @@ const LINTERS = [{
cacheLocation: `node_modules/.eslintcache.${crypto.createHash('md5').update(fs.readFileSync(__filename)).digest('hex')}`, cacheLocation: `node_modules/.eslintcache.${crypto.createHash('md5').update(fs.readFileSync(__filename)).digest('hex')}`,
extensions: ['.js', '.ts'], extensions: ['.js', '.ts'],
fix: opts.fix, fix: opts.fix,
overrideConfigFile: path.join(ELECTRON_ROOT, '.eslintrc.json'),
resolvePluginsRelativeTo: ELECTRON_ROOT resolvePluginsRelativeTo: ELECTRON_ROOT
}); });
const formatter = await eslint.loadFormatter(); const formatter = await eslint.loadFormatter();

View file

@ -1,6 +1,7 @@
#!/usr/bin/env node #!/usr/bin/env node
import { Octokit } from '@octokit/rest'; import { Octokit } from '@octokit/rest';
import * as chalk from 'chalk';
import { GitProcess } from 'dugite'; import { GitProcess } from 'dugite';
import { execSync } from 'node:child_process'; import { execSync } from 'node:child_process';
import { join } from 'node:path'; import { join } from 'node:path';
@ -45,9 +46,8 @@ const octokit = new Octokit({
authStrategy: createGitHubTokenStrategy(getRepo()) authStrategy: createGitHubTokenStrategy(getRepo())
}); });
require('colors'); const pass = chalk.green('✓');
const pass = '✓'.green; const fail = chalk.red('✗');
const fail = '✗'.red;
if (!bumpType && !notesOnly) { if (!bumpType && !notesOnly) {
console.log('Usage: prepare-release [stable | minor | beta | alpha | nightly]' + console.log('Usage: prepare-release [stable | minor | beta | alpha | nightly]' +
@ -218,7 +218,7 @@ async function promptForVersion (version: string) {
input: process.stdin, input: process.stdin,
output: process.stdout output: process.stdout
}); });
rl.question(`Do you want to create the release ${version.green} (y/N)? `, (answer) => { rl.question(`Do you want to create the release ${chalk.green(version)} (y/N)? `, (answer) => {
rl.close(); rl.close();
resolve(answer); resolve(answer);
}); });

View file

@ -1,6 +1,7 @@
#!/usr/bin/env node #!/usr/bin/env node
import { Octokit } from '@octokit/rest'; import { Octokit } from '@octokit/rest';
import * as chalk from 'chalk';
import { parseArgs } from 'node:util'; import { parseArgs } from 'node:util';
import { createGitHubTokenStrategy } from './github-token'; import { createGitHubTokenStrategy } from './github-token';
@ -25,9 +26,8 @@ if (!_tag) {
const tag = _tag; const tag = _tag;
require('colors'); const pass = chalk.green('✓');
const pass = '✓'.green; const fail = chalk.red('✗');
const fail = '✗'.red;
async function deleteDraft (releaseId: string, targetRepo: ElectronReleaseRepo) { async function deleteDraft (releaseId: string, targetRepo: ElectronReleaseRepo) {
const octokit = new Octokit({ const octokit = new Octokit({

View file

@ -2,6 +2,7 @@
import { BlobServiceClient } from '@azure/storage-blob'; import { BlobServiceClient } from '@azure/storage-blob';
import { Octokit } from '@octokit/rest'; import { Octokit } from '@octokit/rest';
import * as chalk from 'chalk';
import got from 'got'; import got from 'got';
import { execSync, ExecSyncOptions } from 'node:child_process'; import { execSync, ExecSyncOptions } from 'node:child_process';
import { statSync, createReadStream, writeFileSync, close } from 'node:fs'; import { statSync, createReadStream, writeFileSync, close } from 'node:fs';
@ -18,9 +19,8 @@ import { parseArgs } from 'node:util';
const temp = trackTemp(); const temp = trackTemp();
require('colors'); const pass = chalk.green('✓');
const pass = '✓'.green; const fail = chalk.red('✗');
const fail = '✗'.red;
const pkgVersion = `v${getElectronVersion()}`; const pkgVersion = `v${getElectronVersion()}`;

View file

@ -1,6 +1,7 @@
#!/usr/bin/env node #!/usr/bin/env node
const { ElectronVersions, Installer } = require('@electron/fiddle-core'); const { ElectronVersions, Installer } = require('@electron/fiddle-core');
const chalk = require('chalk');
const childProcess = require('node:child_process'); const childProcess = require('node:child_process');
const crypto = require('node:crypto'); const crypto = require('node:crypto');
const fs = require('node:fs'); const fs = require('node:fs');
@ -9,9 +10,8 @@ const os = require('node:os');
const path = require('node:path'); const path = require('node:path');
const unknownFlags = []; const unknownFlags = [];
require('colors'); const pass = chalk.green('✓');
const pass = '✓'.green; const fail = chalk.red('✗');
const fail = '✗'.red;
const args = require('minimist')(process.argv, { const args = require('minimist')(process.argv, {
string: ['runners', 'target', 'electronVersion'], string: ['runners', 'target', 'electronVersion'],
@ -80,7 +80,7 @@ async function main () {
} }
const versionString = `v${args.electronVersion}`; const versionString = `v${args.electronVersion}`;
console.log(`Running against Electron ${versionString.green}`); console.log(`Running against Electron ${chalk.green(versionString)}`);
} }
const [lastSpecHash, lastSpecInstallHash] = loadLastSpecHash(); const [lastSpecHash, lastSpecInstallHash] = loadLastSpecHash();

View file

@ -328,7 +328,7 @@ describe('BrowserWindow module', () => {
}, },
{ {
type: 'file', type: 'file',
filePath: filePath, filePath,
offset: 0, offset: 0,
length: fileStats.size, length: fileStats.size,
modificationTime: fileStats.mtime.getTime() / 1000 modificationTime: fileStats.mtime.getTime() / 1000
@ -1677,7 +1677,7 @@ describe('BrowserWindow module', () => {
const backgroundColor = '#BBAAFF'; const backgroundColor = '#BBAAFF';
w.destroy(); w.destroy();
w = new BrowserWindow({ w = new BrowserWindow({
backgroundColor: backgroundColor backgroundColor
}); });
expect(w.getBackgroundColor()).to.equal(backgroundColor); expect(w.getBackgroundColor()).to.equal(backgroundColor);
}); });

View file

@ -67,7 +67,9 @@ describe('contextBridge', () => {
describe(`with sandbox=${useSandbox}`, () => { describe(`with sandbox=${useSandbox}`, () => {
const makeBindingWindow = async (bindingCreator: Function, worldId: number = 0) => { const makeBindingWindow = async (bindingCreator: Function, worldId: number = 0) => {
const preloadContentForMainWorld = `const renderer_1 = require('electron'); const preloadContentForMainWorld = `const renderer_1 = require('electron');
${useSandbox ? '' : `require('node:v8').setFlagsFromString('--expose_gc'); ${useSandbox
? ''
: `require('node:v8').setFlagsFromString('--expose_gc');
const gc=require('node:vm').runInNewContext('gc'); const gc=require('node:vm').runInNewContext('gc');
renderer_1.contextBridge.exposeInMainWorld('GCRunner', { renderer_1.contextBridge.exposeInMainWorld('GCRunner', {
run: () => gc() run: () => gc()
@ -75,7 +77,9 @@ describe('contextBridge', () => {
(${bindingCreator.toString()})();`; (${bindingCreator.toString()})();`;
const preloadContentForIsolatedWorld = `const renderer_1 = require('electron'); const preloadContentForIsolatedWorld = `const renderer_1 = require('electron');
${useSandbox ? '' : `require('node:v8').setFlagsFromString('--expose_gc'); ${useSandbox
? ''
: `require('node:v8').setFlagsFromString('--expose_gc');
const gc=require('node:vm').runInNewContext('gc'); const gc=require('node:vm').runInNewContext('gc');
renderer_1.webFrame.setIsolatedWorldInfo(${worldId}, { renderer_1.webFrame.setIsolatedWorldInfo(${worldId}, {
name: "Isolated World" name: "Isolated World"

View file

@ -530,7 +530,8 @@ ifdescribe(!isLinuxOnArm && !process.mas && !process.env.DISABLE_CRASH_REPORTER_
} }
} }
const processList = process.platform === 'linux' ? ['main', 'renderer', 'sandboxed-renderer'] const processList = process.platform === 'linux'
? ['main', 'renderer', 'sandboxed-renderer']
: ['main', 'renderer', 'sandboxed-renderer', 'node']; : ['main', 'renderer', 'sandboxed-renderer', 'node'];
for (const crashingProcess of processList) { for (const crashingProcess of processList) {
describe(`when ${crashingProcess} crashes`, () => { describe(`when ${crashingProcess} crashes`, () => {

View file

@ -88,8 +88,8 @@ describe('ipcRenderer module', () => {
}`); }`);
const child = { hello: 'world' }; const child = { hello: 'world' };
const foo = { name: 'foo', child: child }; const foo = { name: 'foo', child };
const bar = { name: 'bar', child: child }; const bar = { name: 'bar', child };
const array = [foo, bar]; const array = [foo, bar];
const [, arrayValue, fooValue, barValue, childValue] = await once(ipcMain, 'message'); const [, arrayValue, fooValue, barValue, childValue] = await once(ipcMain, 'message');

View file

@ -2,7 +2,6 @@ import { expect } from 'chai';
import { net, ClientRequest, ClientRequestConstructorOptions, utilityProcess } from 'electron/main'; import { net, ClientRequest, ClientRequestConstructorOptions, utilityProcess } from 'electron/main';
import * as http from 'node:http'; import * as http from 'node:http';
import * as path from 'node:path'; import * as path from 'node:path';
import * as url from 'node:url';
import { once } from 'node:events'; import { once } from 'node:events';
import { setTimeout } from 'node:timers/promises'; import { setTimeout } from 'node:timers/promises';
import { collectStreamBody, collectStreamBodyBuffer, getResponse, kOneKiloByte, kOneMegaByte, randomBuffer, randomString, respondNTimes, respondOnce } from './lib/net-helpers'; import { collectStreamBody, collectStreamBodyBuffer, getResponse, kOneKiloByte, kOneMegaByte, randomBuffer, randomString, respondNTimes, respondOnce } from './lib/net-helpers';
@ -934,7 +933,7 @@ describe('net module', () => {
response.statusMessage = 'OK'; response.statusMessage = 'OK';
response.end(); response.end();
}); });
const serverUrl = url.parse(serverUrlUnparsed); const serverUrl = new URL(serverUrlUnparsed);
const urlRequest = net.request({ const urlRequest = net.request({
port: serverUrl.port ? parseInt(serverUrl.port, 10) : undefined, port: serverUrl.port ? parseInt(serverUrl.port, 10) : undefined,
hostname: '127.0.0.1', hostname: '127.0.0.1',
@ -1307,10 +1306,10 @@ describe('net module', () => {
]); ]);
const netRequest = net.request(netServerUrl); const netRequest = net.request(netServerUrl);
const netResponse = await getResponse(netRequest); const netResponse = await getResponse(netRequest);
const serverUrl = url.parse(nodeServerUrl); const serverUrl = new URL(nodeServerUrl);
const nodeOptions = { const nodeOptions = {
method: 'POST', method: 'POST',
path: serverUrl.path, path: serverUrl.pathname,
port: serverUrl.port port: serverUrl.port
}; };
const nodeRequest = http.request(nodeOptions); const nodeRequest = http.request(nodeOptions);

View file

@ -649,7 +649,7 @@ describe('protocol module', () => {
const { url } = await listen(server); const { url } = await listen(server);
interceptHttpProtocol('http', (request, callback) => { interceptHttpProtocol('http', (request, callback) => {
const data: Electron.ProtocolResponse = { const data: Electron.ProtocolResponse = {
url: url, url,
method: 'POST', method: 'POST',
uploadData: { uploadData: {
contentType: 'application/x-www-form-urlencoded', contentType: 'application/x-www-form-urlencoded',
@ -910,7 +910,7 @@ describe('protocol module', () => {
}); });
it('allows CORS requests by default', async () => { it('allows CORS requests by default', async () => {
await allowsCORSRequests('cors', 200, new RegExp(''), () => { await allowsCORSRequests('cors', 200, /(?:)/, () => {
const { ipcRenderer } = require('electron'); const { ipcRenderer } = require('electron');
fetch('cors://myhost').then(function (response) { fetch('cors://myhost').then(function (response) {
ipcRenderer.send('response', response.status); ipcRenderer.send('response', response.status);
@ -1695,7 +1695,7 @@ describe('protocol module', () => {
const filePath = path.join(fixturesPath, 'pages', 'form-with-data.html'); const filePath = path.join(fixturesPath, 'pages', 'form-with-data.html');
await contents.loadFile(filePath); await contents.loadFile(filePath);
const loadPromise = new Promise((resolve, reject) => { const loadPromise = new Promise<void>((resolve, reject) => {
contents.once('did-finish-load', resolve); contents.once('did-finish-load', resolve);
contents.once('did-fail-load', (_, errorCode, errorDescription) => contents.once('did-fail-load', (_, errorCode, errorDescription) =>
reject(new Error(`did-fail-load: ${errorCode} ${errorDescription}. See AssertionError for details.`)) reject(new Error(`did-fail-load: ${errorCode} ${errorDescription}. See AssertionError for details.`))

View file

@ -2825,15 +2825,17 @@ describe('webContents module', () => {
expect({ expect({
width: w.getBounds().width, width: w.getBounds().width,
height: w.getBounds().height height: w.getBounds().height
}).to.deep.equal(process.platform === 'win32' ? { }).to.deep.equal(process.platform === 'win32'
// The width is reported as being larger on Windows? I'm not sure why ? {
// this is. // The width is reported as being larger on Windows? I'm not sure why
width: 136, // this is.
height: 100 width: 136,
} : { height: 100
width: 100, }
height: 100 : {
}); width: 100,
height: 100
});
}); });
it('does not change window bounds if cancelled', async () => { it('does not change window bounds if cancelled', async () => {

View file

@ -20,7 +20,7 @@ describe('webFrameMain module', () => {
/** Creates an HTTP server whose handler embeds the given iframe src. */ /** Creates an HTTP server whose handler embeds the given iframe src. */
const createServer = async () => { const createServer = async () => {
const server = http.createServer((req, res) => { const server = http.createServer((req, res) => {
const params = new URLSearchParams(url.parse(req.url || '').search || ''); const params = new URLSearchParams(new URL(req.url || '', `http://${req.headers.host}`).search || '');
if (params.has('frameSrc')) { if (params.has('frameSrc')) {
res.end(`<iframe src="${params.get('frameSrc')}"></iframe>`); res.end(`<iframe src="${params.get('frameSrc')}"></iframe>`);
} else { } else {

View file

@ -295,7 +295,7 @@ describe('webRequest module', () => {
ses.webRequest.onBeforeSendHeaders((details, callback) => { ses.webRequest.onBeforeSendHeaders((details, callback) => {
const requestHeaders = details.requestHeaders; const requestHeaders = details.requestHeaders;
requestHeaders.Accept = '*/*;test/header'; requestHeaders.Accept = '*/*;test/header';
callback({ requestHeaders: requestHeaders }); callback({ requestHeaders });
}); });
const { data } = await ajax(defaultURL); const { data } = await ajax(defaultURL);
expect(data).to.equal('/header/received'); expect(data).to.equal('/header/received');
@ -362,7 +362,7 @@ describe('webRequest module', () => {
Test: 'header' Test: 'header'
}; };
ses.webRequest.onBeforeSendHeaders((details, callback) => { ses.webRequest.onBeforeSendHeaders((details, callback) => {
callback({ requestHeaders: requestHeaders }); callback({ requestHeaders });
}); });
ses.webRequest.onSendHeaders((details) => { ses.webRequest.onSendHeaders((details) => {
expect(details.requestHeaders).to.deep.equal(requestHeaders); expect(details.requestHeaders).to.deep.equal(requestHeaders);
@ -388,7 +388,7 @@ describe('webRequest module', () => {
}; };
let onSendHeadersCalled = false; let onSendHeadersCalled = false;
ses.webRequest.onBeforeSendHeaders((details, callback) => { ses.webRequest.onBeforeSendHeaders((details, callback) => {
callback({ requestHeaders: requestHeaders }); callback({ requestHeaders });
}); });
ses.webRequest.onSendHeaders((details) => { ses.webRequest.onSendHeaders((details) => {
expect(details.requestHeaders).to.deep.equal(requestHeaders); expect(details.requestHeaders).to.deep.equal(requestHeaders);
@ -437,7 +437,7 @@ describe('webRequest module', () => {
ses.webRequest.onHeadersReceived((details, callback) => { ses.webRequest.onHeadersReceived((details, callback) => {
const responseHeaders = details.responseHeaders!; const responseHeaders = details.responseHeaders!;
responseHeaders.Custom = ['Changed'] as any; responseHeaders.Custom = ['Changed'] as any;
callback({ responseHeaders: responseHeaders }); callback({ responseHeaders });
}); });
const { headers } = await ajax(defaultURL); const { headers } = await ajax(defaultURL);
expect(headers).to.to.have.property('custom', 'Changed'); expect(headers).to.to.have.property('custom', 'Changed');
@ -447,7 +447,7 @@ describe('webRequest module', () => {
ses.webRequest.onHeadersReceived((details, callback) => { ses.webRequest.onHeadersReceived((details, callback) => {
const responseHeaders = details.responseHeaders!; const responseHeaders = details.responseHeaders!;
responseHeaders['access-control-allow-origin'] = ['http://new-origin'] as any; responseHeaders['access-control-allow-origin'] = ['http://new-origin'] as any;
callback({ responseHeaders: responseHeaders }); callback({ responseHeaders });
}); });
const { headers } = await ajax(defaultURL); const { headers } = await ajax(defaultURL);
expect(headers).to.to.have.property('access-control-allow-origin', 'http://new-origin'); expect(headers).to.to.have.property('access-control-allow-origin', 'http://new-origin');
@ -457,7 +457,7 @@ describe('webRequest module', () => {
ses.webRequest.onHeadersReceived((details, callback) => { ses.webRequest.onHeadersReceived((details, callback) => {
const responseHeaders = details.responseHeaders!; const responseHeaders = details.responseHeaders!;
responseHeaders.Custom = ['Changed'] as any; responseHeaders.Custom = ['Changed'] as any;
callback({ responseHeaders: responseHeaders }); callback({ responseHeaders });
}); });
const { headers } = await ajax('cors://host'); const { headers } = await ajax('cors://host');
expect(headers).to.to.have.property('custom', 'Changed'); expect(headers).to.to.have.property('custom', 'Changed');
@ -486,7 +486,7 @@ describe('webRequest module', () => {
it('follows server redirect', async () => { it('follows server redirect', async () => {
ses.webRequest.onHeadersReceived((details, callback) => { ses.webRequest.onHeadersReceived((details, callback) => {
const responseHeaders = details.responseHeaders; const responseHeaders = details.responseHeaders;
callback({ responseHeaders: responseHeaders }); callback({ responseHeaders });
}); });
const { headers } = await ajax(defaultURL + 'serverRedirect'); const { headers } = await ajax(defaultURL + 'serverRedirect');
expect(headers).to.to.have.property('custom', 'Header'); expect(headers).to.to.have.property('custom', 'Header');
@ -496,7 +496,7 @@ describe('webRequest module', () => {
ses.webRequest.onHeadersReceived((details, callback) => { ses.webRequest.onHeadersReceived((details, callback) => {
const responseHeaders = details.responseHeaders; const responseHeaders = details.responseHeaders;
callback({ callback({
responseHeaders: responseHeaders, responseHeaders,
statusLine: 'HTTP/1.1 404 Not Found' statusLine: 'HTTP/1.1 404 Not Found'
}); });
}); });
@ -533,7 +533,7 @@ describe('webRequest module', () => {
const redirectURL = defaultURL + 'redirect'; const redirectURL = defaultURL + 'redirect';
ses.webRequest.onBeforeRequest((details, callback) => { ses.webRequest.onBeforeRequest((details, callback) => {
if (details.url === defaultURL) { if (details.url === defaultURL) {
callback({ redirectURL: redirectURL }); callback({ redirectURL });
} else { } else {
callback({}); callback({});
} }
@ -600,7 +600,7 @@ describe('webRequest module', () => {
}); });
}); });
server.on('upgrade', function upgrade (request, socket, head) { server.on('upgrade', function upgrade (request, socket, head) {
const pathname = require('node:url').parse(request.url).pathname; const pathname = new URL(request.url!, `http://${request.headers.host}`).pathname;
if (pathname === '/websocket') { if (pathname === '/websocket') {
reqHeaders[request.url!] = request.headers; reqHeaders[request.url!] = request.headers;
wss.handleUpgrade(request, socket as Socket, head, function done (ws) { wss.handleUpgrade(request, socket as Socket, head, function done (ws) {
@ -622,7 +622,7 @@ describe('webRequest module', () => {
callback({ requestHeaders: details.requestHeaders }); callback({ requestHeaders: details.requestHeaders });
}); });
ses.webRequest.onHeadersReceived((details, callback) => { ses.webRequest.onHeadersReceived((details, callback) => {
const pathname = require('node:url').parse(details.url).pathname; const pathname = new URL(details.url).pathname;
receivedHeaders[pathname] = details.responseHeaders; receivedHeaders[pathname] = details.responseHeaders;
callback({ cancel: false }); callback({ cancel: false });
}); });

View file

@ -709,7 +709,7 @@ describe('chromium features', () => {
it('should register for intercepted file scheme', (done) => { it('should register for intercepted file scheme', (done) => {
const customSession = session.fromPartition('intercept-file'); const customSession = session.fromPartition('intercept-file');
customSession.protocol.interceptBufferProtocol('file', (request, callback) => { customSession.protocol.interceptBufferProtocol('file', (request, callback) => {
let file = url.parse(request.url).pathname!; let file = new URL(request.url).pathname!;
if (file[0] === '/' && process.platform === 'win32') file = file.slice(1); if (file[0] === '/' && process.platform === 'win32') file = file.slice(1);
const content = fs.readFileSync(path.normalize(file)); const content = fs.readFileSync(path.normalize(file));
@ -750,7 +750,7 @@ describe('chromium features', () => {
it('should register for custom scheme', (done) => { it('should register for custom scheme', (done) => {
const customSession = session.fromPartition('custom-scheme'); const customSession = session.fromPartition('custom-scheme');
customSession.protocol.registerFileProtocol(serviceWorkerScheme, (request, callback) => { customSession.protocol.registerFileProtocol(serviceWorkerScheme, (request, callback) => {
let file = url.parse(request.url).pathname!; let file = new URL(request.url).pathname!;
if (file[0] === '/' && process.platform === 'win32') file = file.slice(1); if (file[0] === '/' && process.platform === 'win32') file = file.slice(1);
callback({ path: path.normalize(file) } as any); callback({ path: path.normalize(file) } as any);
@ -2004,7 +2004,7 @@ describe('chromium features', () => {
let contents: WebContents; let contents: WebContents;
before(() => { before(() => {
protocol.registerFileProtocol(protocolName, (request, callback) => { protocol.registerFileProtocol(protocolName, (request, callback) => {
const parsedUrl = url.parse(request.url); const parsedUrl = new URL(request.url);
let filename; let filename;
switch (parsedUrl.pathname) { switch (parsedUrl.pathname) {
case '/localStorage' : filename = 'local_storage.html'; break; case '/localStorage' : filename = 'local_storage.html'; break;
@ -2459,7 +2459,7 @@ describe('chromium features', () => {
it('has user agent', async () => { it('has user agent', async () => {
const server = http.createServer(); const server = http.createServer();
const { port } = await listen(server); const { port } = await listen(server);
const wss = new ws.Server({ server: server }); const wss = new ws.Server({ server });
const finished = new Promise<string | undefined>((resolve, reject) => { const finished = new Promise<string | undefined>((resolve, reject) => {
wss.on('error', reject); wss.on('error', reject);
wss.on('connection', (ws, upgradeReq) => { wss.on('connection', (ws, upgradeReq) => {
@ -3444,6 +3444,7 @@ describe('navigator.hid', () => {
haveDevices = true; haveDevices = true;
return true; return true;
} }
return false;
}); });
if (foundDevice) { if (foundDevice) {
callback(foundDevice.deviceId); callback(foundDevice.deviceId);
@ -3491,6 +3492,7 @@ describe('navigator.hid', () => {
return true; return true;
} }
} }
return false;
}); });
} }
callback(); callback();
@ -3670,6 +3672,7 @@ describe('navigator.usb', () => {
haveDevices = true; haveDevices = true;
return true; return true;
} }
return false;
}); });
if (foundDevice) { if (foundDevice) {
callback(foundDevice.deviceId); callback(foundDevice.deviceId);

View file

@ -603,7 +603,7 @@ describe('chrome extensions', () => {
const addExtension = (name: string) => session.defaultSession.loadExtension(path.resolve(extensionPath, name)); const addExtension = (name: string) => session.defaultSession.loadExtension(path.resolve(extensionPath, name));
const removeAllExtensions = () => { const removeAllExtensions = () => {
Object.keys(session.defaultSession.getAllExtensions()).map(extName => { Object.keys(session.defaultSession.getAllExtensions()).forEach(extName => {
session.defaultSession.removeExtension(extName); session.defaultSession.removeExtension(extName);
}); });
}; };

View file

@ -19,7 +19,7 @@ try {
['--require', path.join(fixtures, 'module', 'noop.js')], ['--require', path.join(fixtures, 'module', 'noop.js')],
{ env, stdio: 'inherit' }); { env, stdio: 'inherit' });
process.exit(0); process.exit(0);
} catch (error) { } catch {
console.log('NODE_OPTIONS passed to child'); console.log('NODE_OPTIONS passed to child');
process.exit(1); process.exit(1);
} }

View file

@ -23,7 +23,8 @@ if (app.commandLine.hasSwitch('data-content')) {
} }
const gotTheLock = sendAdditionalData const gotTheLock = sendAdditionalData
? app.requestSingleInstanceLock(obj) : app.requestSingleInstanceLock(); ? app.requestSingleInstanceLock(obj)
: app.requestSingleInstanceLock();
app.on('second-instance', (event, args, workingDirectory, data) => { app.on('second-instance', (event, args, workingDirectory, data) => {
setImmediate(() => { setImmediate(() => {

View file

@ -19,9 +19,9 @@ if (configurableArg === '--omit-credentials') {
if (request) { if (request) {
if (configurableArg === '--use-net-login-event') { if (configurableArg === '--use-net-login-event') {
request.on('login', (authInfo, cb) => { request.on('login', (authInfo, provideCredentials) => {
process.parentPort.postMessage(authInfo); process.parentPort.postMessage(authInfo);
cb('user', 'pass'); provideCredentials('user', 'pass');
}); });
} }
request.on('response', (response) => { request.on('response', (response) => {

View file

@ -1,13 +1,14 @@
const path = require('node:path');
const testLoadLibrary = require('./build/Release/test_module'); const testLoadLibrary = require('./build/Release/test_module');
const lib = (() => { const lib = (() => {
switch (process.platform) { switch (process.platform) {
case 'linux': case 'linux':
return `${__dirname}/build/Release/foo.so`; return path.resolve(__dirname, 'build/Release/foo.so');
case 'darwin': case 'darwin':
return `${__dirname}/build/Release/foo.dylib`; return path.resolve(__dirname, 'build/Release/foo.dylib');
case 'win32': case 'win32':
return `${__dirname}/build/Release/libfoo.dll`; return path.resolve(__dirname, 'build/Release/libfoo.dll');
default: default:
throw new Error('unsupported os'); throw new Error('unsupported os');
} }

View file

@ -259,9 +259,9 @@ function checkFrames (frames) {
duration += frames[i].duration; duration += frames[i].duration;
} }
return { return {
duration: duration, duration,
width: width, width,
height: height height
}; };
} }
@ -399,7 +399,7 @@ function parseWebP (riff) {
horizontalScale, horizontalScale,
verticalScale, verticalScale,
data: VP8, data: VP8,
riff: riff riff
}; };
} }

View file

@ -7,6 +7,18 @@
"node-gyp-install": "node-gyp install" "node-gyp-install": "node-gyp install"
}, },
"devDependencies": { "devDependencies": {
"@types/basic-auth": "^1.1.8",
"@types/busboy": "^1.5.4",
"@types/chai": "^4.3.19",
"@types/chai-as-promised": "^7.1.3",
"@types/dirty-chai": "^2.0.5",
"@types/express": "^4.17.13",
"@types/mocha": "^7.0.2",
"@types/send": "^0.14.5",
"@types/split": "^1.0.5",
"@types/uuid": "^3.4.6",
"@types/w3c-web-serial": "^1.0.7",
"express": "^4.20.0",
"@electron-ci/echo": "file:./fixtures/native-addon/echo", "@electron-ci/echo": "file:./fixtures/native-addon/echo",
"@electron-ci/is-valid-window": "file:./is-valid-window", "@electron-ci/is-valid-window": "file:./is-valid-window",
"@electron-ci/uv-dlopen": "file:./fixtures/native-addon/uv-dlopen/", "@electron-ci/uv-dlopen": "file:./fixtures/native-addon/uv-dlopen/",
@ -34,7 +46,6 @@
"send": "^0.16.2", "send": "^0.16.2",
"sinon": "^9.0.1", "sinon": "^9.0.1",
"split": "^1.0.1", "split": "^1.0.1",
"temp": "^0.9.0",
"uuid": "^3.3.3", "uuid": "^3.3.3",
"winreg": "1.2.4", "winreg": "1.2.4",
"ws": "^7.4.6", "ws": "^7.4.6",

View file

@ -2,7 +2,6 @@ import { expect } from 'chai';
import * as http from 'node:http'; import * as http from 'node:http';
import * as fs from 'node:fs/promises'; import * as fs from 'node:fs/promises';
import * as path from 'node:path'; import * as path from 'node:path';
import * as url from 'node:url';
import { BrowserWindow, WebPreferences } from 'electron/main'; import { BrowserWindow, WebPreferences } from 'electron/main';
@ -28,7 +27,7 @@ describe('security warnings', () => {
before(async () => { before(async () => {
// Create HTTP Server // Create HTTP Server
server = http.createServer(async (request, response) => { server = http.createServer(async (request, response) => {
const uri = url.parse(request.url!).pathname!; const uri = new URL(request.url!, `http://${request.headers.host}`).pathname!;
let filename = path.join(__dirname, 'fixtures', 'pages', uri); let filename = path.join(__dirname, 'fixtures', 'pages', uri);
try { try {

View file

@ -1,3 +1,5 @@
/* eslint-disable */
import { import {
app, app,
autoUpdater, autoUpdater,

View file

@ -1,3 +1,4 @@
/* eslint-disable */
import { ipcRenderer, webFrame } from 'electron/renderer'; import { ipcRenderer, webFrame } from 'electron/renderer';
import { clipboard, crashReporter, shell } from 'electron/common'; import { clipboard, crashReporter, shell } from 'electron/common';

View file

@ -326,8 +326,8 @@ describe('<webview> tag', function () {
before(() => { before(() => {
const protocol = webviewSession.protocol; const protocol = webviewSession.protocol;
protocol.registerStringProtocol(zoomScheme, (request, callback) => { protocol.registerStringProtocol(zoomScheme, (request, respond) => {
callback('hello'); respond('hello');
}); });
}); });
@ -838,13 +838,13 @@ describe('<webview> tag', function () {
function setUpRequestHandler (webContentsId: number, requestedPermission: string) { function setUpRequestHandler (webContentsId: number, requestedPermission: string) {
return new Promise<void>((resolve, reject) => { return new Promise<void>((resolve, reject) => {
session.fromPartition(partition).setPermissionRequestHandler(function (webContents, permission, callback) { session.fromPartition(partition).setPermissionRequestHandler(function (webContents, permission, allow) {
if (webContents.id === webContentsId) { if (webContents.id === webContentsId) {
// All midi permission requests are blocked or allowed as midiSysex permissions // All midi permission requests are blocked or allowed as midiSysex permissions
// since https://chromium-review.googlesource.com/c/chromium/src/+/5154368 // since https://chromium-review.googlesource.com/c/chromium/src/+/5154368
if (permission === 'midiSysex') { if (permission === 'midiSysex') {
const allowed = requestedPermission === 'midi' || requestedPermission === 'midiSysex'; const allowed = requestedPermission === 'midi' || requestedPermission === 'midiSysex';
return callback(!allowed); return allow(!allowed);
} }
try { try {
@ -852,7 +852,7 @@ describe('<webview> tag', function () {
} catch (e) { } catch (e) {
return reject(e); return reject(e);
} }
callback(false); allow(false);
resolve(); resolve();
} }
}); });

View file

@ -178,6 +178,28 @@
dependencies: dependencies:
defer-to-connect "^2.0.0" defer-to-connect "^2.0.0"
"@types/basic-auth@^1.1.8":
version "1.1.8"
resolved "https://registry.yarnpkg.com/@types/basic-auth/-/basic-auth-1.1.8.tgz#ea235203c89e233faae66b99e03665747576e9e9"
integrity sha512-dKcUeixGuZn8pBjcUrf1N7x5K6lWuKuwHHitM2IZ4vwZUDWEhhNtwCWiba8jTA9zn0GQQ+fTFkWpKx8pOU/enw==
dependencies:
"@types/node" "*"
"@types/body-parser@*":
version "1.19.5"
resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4"
integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==
dependencies:
"@types/connect" "*"
"@types/node" "*"
"@types/busboy@^1.5.4":
version "1.5.4"
resolved "https://registry.yarnpkg.com/@types/busboy/-/busboy-1.5.4.tgz#0038c31102ca90f2a7f0d8bc27ee5ebf1088e230"
integrity sha512-kG7WrUuAKK0NoyxfQHsVE6j1m01s6kMma64E+OZenQABMQyTJop1DumUWcLwAQ2JzpefU7PDYoRDKl8uZosFjw==
dependencies:
"@types/node" "*"
"@types/cacheable-request@^6.0.1": "@types/cacheable-request@^6.0.1":
version "6.0.3" version "6.0.3"
resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183"
@ -188,11 +210,63 @@
"@types/node" "*" "@types/node" "*"
"@types/responselike" "^1.0.0" "@types/responselike" "^1.0.0"
"@types/chai-as-promised@^7", "@types/chai-as-promised@^7.1.3":
version "7.1.8"
resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz#f2b3d82d53c59626b5d6bbc087667ccb4b677fe9"
integrity sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==
dependencies:
"@types/chai" "*"
"@types/chai@*", "@types/chai@^4.3.19":
version "4.3.19"
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.19.tgz#14519f437361d41e84102ed3fbc922ddace3e228"
integrity sha512-2hHHvQBVE2FiSK4eN0Br6snX9MtolHaTo/batnLjlGRhoQzlCL61iVpxoqO7SfFyOw+P/pwv+0zNHzKoGWz9Cw==
"@types/connect@*":
version "3.4.38"
resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858"
integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==
dependencies:
"@types/node" "*"
"@types/dirty-chai@^2.0.5":
version "2.0.5"
resolved "https://registry.yarnpkg.com/@types/dirty-chai/-/dirty-chai-2.0.5.tgz#f743c5735ba0453e2ec8036610356b1aee5f522b"
integrity sha512-7plNsOhNtFn/4eD47et+3CRFNX4tgUrbJRutGhBFqQrWWIyRAV1XP7BYZY0YTOr49t/ZwM/lOW6sxnEXqwVdKg==
dependencies:
"@types/chai" "*"
"@types/chai-as-promised" "^7"
"@types/express-serve-static-core@^4.17.33":
version "4.19.5"
resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz#218064e321126fcf9048d1ca25dd2465da55d9c6"
integrity sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==
dependencies:
"@types/node" "*"
"@types/qs" "*"
"@types/range-parser" "*"
"@types/send" "*"
"@types/express@^4.17.13":
version "4.17.21"
resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d"
integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==
dependencies:
"@types/body-parser" "*"
"@types/express-serve-static-core" "^4.17.33"
"@types/qs" "*"
"@types/serve-static" "*"
"@types/http-cache-semantics@*": "@types/http-cache-semantics@*":
version "4.0.4" version "4.0.4"
resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4" resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4"
integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA== integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==
"@types/http-errors@*":
version "2.0.4"
resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f"
integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==
"@types/keyv@^3.1.4": "@types/keyv@^3.1.4":
version "3.1.4" version "3.1.4"
resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6"
@ -200,6 +274,16 @@
dependencies: dependencies:
"@types/node" "*" "@types/node" "*"
"@types/mime@^1":
version "1.3.5"
resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690"
integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==
"@types/mocha@^7.0.2":
version "7.0.2"
resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-7.0.2.tgz#b17f16cf933597e10d6d78eae3251e692ce8b0ce"
integrity sha512-ZvO2tAcjmMi8V/5Z3JsyofMe3hasRcaw88cto5etSVMwVQfeivGAlEYmaQgceUSVYFofVjT+ioHsATjdWcFt1w==
"@types/node@*": "@types/node@*":
version "20.12.7" version "20.12.7"
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.7.tgz#04080362fa3dd6c5822061aa3124f5c152cff384" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.7.tgz#04080362fa3dd6c5822061aa3124f5c152cff384"
@ -207,6 +291,16 @@
dependencies: dependencies:
undici-types "~5.26.4" undici-types "~5.26.4"
"@types/qs@*":
version "6.9.16"
resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.16.tgz#52bba125a07c0482d26747d5d4947a64daf8f794"
integrity sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==
"@types/range-parser@*":
version "1.2.7"
resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb"
integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==
"@types/responselike@^1.0.0": "@types/responselike@^1.0.0":
version "1.0.3" version "1.0.3"
resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.3.tgz#cc29706f0a397cfe6df89debfe4bf5cea159db50" resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.3.tgz#cc29706f0a397cfe6df89debfe4bf5cea159db50"
@ -214,6 +308,31 @@
dependencies: dependencies:
"@types/node" "*" "@types/node" "*"
"@types/send@*":
version "0.17.4"
resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a"
integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==
dependencies:
"@types/mime" "^1"
"@types/node" "*"
"@types/send@^0.14.5":
version "0.14.7"
resolved "https://registry.yarnpkg.com/@types/send/-/send-0.14.7.tgz#ee6224edd5a593d7f553235f350569accb56a4af"
integrity sha512-WCUMbzWW1sTEZX31cRMcBxflUXX/JmAYejhjxXtrLGn+vd/yyFjHh/F9FIigAEjE2LauhfH94BT7NJj9Ru2Wlg==
dependencies:
"@types/mime" "^1"
"@types/node" "*"
"@types/serve-static@*":
version "1.15.7"
resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714"
integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==
dependencies:
"@types/http-errors" "*"
"@types/node" "*"
"@types/send" "*"
"@types/sinon@^9.0.4": "@types/sinon@^9.0.4":
version "9.0.11" version "9.0.11"
resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-9.0.11.tgz#7af202dda5253a847b511c929d8b6dda170562eb" resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-9.0.11.tgz#7af202dda5253a847b511c929d8b6dda170562eb"
@ -226,6 +345,31 @@
resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz#5fd3592ff10c1e9695d377020c033116cc2889f2" resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz#5fd3592ff10c1e9695d377020c033116cc2889f2"
integrity sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ== integrity sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==
"@types/split@^1.0.5":
version "1.0.5"
resolved "https://registry.yarnpkg.com/@types/split/-/split-1.0.5.tgz#4bd47164b81d6381db37978d5344b374b6825f6c"
integrity sha512-gMiDr4vA6YofTpAkPQtP+5pvStIf3CMYphf32YAG/3RwogNL8ii1CQKDc+sxN62KuxPoRaJXcf2zDCDkEBH4FA==
dependencies:
"@types/node" "*"
"@types/through" "*"
"@types/through@*":
version "0.0.33"
resolved "https://registry.yarnpkg.com/@types/through/-/through-0.0.33.tgz#14ebf599320e1c7851e7d598149af183c6b9ea56"
integrity sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==
dependencies:
"@types/node" "*"
"@types/uuid@^3.4.6":
version "3.4.13"
resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-3.4.13.tgz#fe890e517fb840620be284ee213e81d702b1f76b"
integrity sha512-pAeZeUbLE4Z9Vi9wsWV2bYPTweEHeJJy0G4pEjOA/FSvy1Ad5U5Km8iDV6TKre1mjBiVNfAdVHKruP8bAh4Q5A==
"@types/w3c-web-serial@^1.0.7":
version "1.0.7"
resolved "https://registry.yarnpkg.com/@types/w3c-web-serial/-/w3c-web-serial-1.0.7.tgz#44416509af271e5196833ff5e1337c7c256991c6"
integrity sha512-jzcwm//EZ0Z306L1/O1GXC3GthRd//9eaNB4/Yagm98UjEQViTzDS8bYvL+y+rTk1r9OFt9Yhp5pprUQFzSiiQ==
"@types/ws@^7.2.0": "@types/ws@^7.2.0":
version "7.4.7" version "7.4.7"
resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702"
@ -245,13 +389,21 @@
resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz#a1337ca426aa61cef9fe15b5b28e340a72f6fa99" resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz#a1337ca426aa61cef9fe15b5b28e340a72f6fa99"
integrity sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw== integrity sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==
"abstract-socket@github:deepak1556/node-abstractsocket#928cc591decd12aff7dad96449da8afc29832c19", "abstract-socket@github:saghul/node-abstractsocket#35b1b1491fabc04899bde5be3428abf5cf9cd528": abstract-socket@^2.0.0, "abstract-socket@github:deepak1556/node-abstractsocket#928cc591decd12aff7dad96449da8afc29832c19":
version "2.1.1" version "2.1.1"
resolved "https://codeload.github.com/deepak1556/node-abstractsocket/tar.gz/928cc591decd12aff7dad96449da8afc29832c19" resolved "https://codeload.github.com/deepak1556/node-abstractsocket/tar.gz/928cc591decd12aff7dad96449da8afc29832c19"
dependencies: dependencies:
bindings "^1.2.1" bindings "^1.2.1"
node-addon-api "8.0.0" node-addon-api "8.0.0"
accepts@~1.3.8:
version "1.3.8"
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
dependencies:
mime-types "~2.1.34"
negotiator "0.6.3"
ansi-colors@4.1.1: ansi-colors@4.1.1:
version "4.1.1" version "4.1.1"
resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
@ -287,6 +439,11 @@ argparse@^2.0.1:
resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
array-flatten@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==
assertion-error@^1.1.0: assertion-error@^1.1.0:
version "1.1.0" version "1.1.0"
resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b"
@ -336,6 +493,24 @@ bluebird@^3.1.1:
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
body-parser@1.20.3:
version "1.20.3"
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6"
integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==
dependencies:
bytes "3.1.2"
content-type "~1.0.5"
debug "2.6.9"
depd "2.0.0"
destroy "1.2.0"
http-errors "2.0.0"
iconv-lite "0.4.24"
on-finished "2.4.1"
qs "6.13.0"
raw-body "2.5.2"
type-is "~1.6.18"
unpipe "1.0.0"
boolean@^3.0.1: boolean@^3.0.1:
version "3.2.0" version "3.2.0"
resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b" resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b"
@ -380,6 +555,11 @@ busboy@^1.6.0:
dependencies: dependencies:
streamsearch "^1.1.0" streamsearch "^1.1.0"
bytes@3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
cacheable-lookup@^5.0.3: cacheable-lookup@^5.0.3:
version "5.0.4" version "5.0.4"
resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005"
@ -398,6 +578,17 @@ cacheable-request@^7.0.2:
normalize-url "^6.0.1" normalize-url "^6.0.1"
responselike "^2.0.0" responselike "^2.0.0"
call-bind@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9"
integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==
dependencies:
es-define-property "^1.0.0"
es-errors "^1.3.0"
function-bind "^1.1.2"
get-intrinsic "^1.2.4"
set-function-length "^1.2.1"
camelcase@^6.0.0: camelcase@^6.0.0:
version "6.3.0" version "6.3.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
@ -511,6 +702,28 @@ concat-map@0.0.1:
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
content-disposition@0.5.4:
version "0.5.4"
resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe"
integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==
dependencies:
safe-buffer "5.2.1"
content-type@~1.0.4, content-type@~1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918"
integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
cookie-signature@1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==
cookie@0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051"
integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==
cross-dirname@^0.1.0: cross-dirname@^0.1.0:
version "0.1.0" version "0.1.0"
resolved "https://registry.yarnpkg.com/cross-dirname/-/cross-dirname-0.1.0.tgz#b899599f30a5389f59e78c150e19f957ad16a37c" resolved "https://registry.yarnpkg.com/cross-dirname/-/cross-dirname-0.1.0.tgz#b899599f30a5389f59e78c150e19f957ad16a37c"
@ -542,7 +755,7 @@ crypt@0.0.2:
safe-buffer "^5.1.1" safe-buffer "^5.1.1"
xml2js "^0.4.17" xml2js "^0.4.17"
optionalDependencies: optionalDependencies:
abstract-socket "github:saghul/node-abstractsocket#35b1b1491fabc04899bde5be3428abf5cf9cd528" abstract-socket "^2.0.0"
debug@2.6.9, debug@^2.2.0: debug@2.6.9, debug@^2.2.0:
version "2.6.9" version "2.6.9"
@ -582,7 +795,7 @@ defer-to-connect@^2.0.0:
resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587"
integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==
define-data-property@^1.0.1: define-data-property@^1.0.1, define-data-property@^1.1.4:
version "1.1.4" version "1.1.4"
resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e"
integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
@ -600,11 +813,21 @@ define-properties@^1.2.1:
has-property-descriptors "^1.0.0" has-property-descriptors "^1.0.0"
object-keys "^1.1.1" object-keys "^1.1.1"
depd@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
depd@~1.1.2: depd@~1.1.2:
version "1.1.2" version "1.1.2"
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==
destroy@1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
destroy@~1.0.4: destroy@~1.0.4:
version "1.0.4" version "1.0.4"
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
@ -663,6 +886,11 @@ encodeurl@~1.0.2:
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
encodeurl@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58"
integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==
end-of-stream@^1.1.0: end-of-stream@^1.1.0:
version "1.4.4" version "1.4.4"
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
@ -742,6 +970,43 @@ event-stream@^4.0.0:
stream-combiner "^0.2.2" stream-combiner "^0.2.2"
through "^2.3.8" through "^2.3.8"
express@^4.20.0:
version "4.21.0"
resolved "https://registry.yarnpkg.com/express/-/express-4.21.0.tgz#d57cb706d49623d4ac27833f1cbc466b668eb915"
integrity sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==
dependencies:
accepts "~1.3.8"
array-flatten "1.1.1"
body-parser "1.20.3"
content-disposition "0.5.4"
content-type "~1.0.4"
cookie "0.6.0"
cookie-signature "1.0.6"
debug "2.6.9"
depd "2.0.0"
encodeurl "~2.0.0"
escape-html "~1.0.3"
etag "~1.8.1"
finalhandler "1.3.1"
fresh "0.5.2"
http-errors "2.0.0"
merge-descriptors "1.0.3"
methods "~1.1.2"
on-finished "2.4.1"
parseurl "~1.3.3"
path-to-regexp "0.1.10"
proxy-addr "~2.0.7"
qs "6.13.0"
range-parser "~1.2.1"
safe-buffer "5.2.1"
send "0.19.0"
serve-static "1.16.2"
setprototypeof "1.2.0"
statuses "2.0.1"
type-is "~1.6.18"
utils-merge "1.0.1"
vary "~1.1.2"
extract-zip@^2.0.0: extract-zip@^2.0.0:
version "2.0.1" version "2.0.1"
resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a"
@ -786,6 +1051,19 @@ fill-range@^7.0.1:
dependencies: dependencies:
to-regex-range "^5.0.1" to-regex-range "^5.0.1"
finalhandler@1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019"
integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==
dependencies:
debug "2.6.9"
encodeurl "~2.0.0"
escape-html "~1.0.3"
on-finished "2.4.1"
parseurl "~1.3.3"
statuses "2.0.1"
unpipe "~1.0.0"
find-up@5.0.0: find-up@5.0.0:
version "5.0.0" version "5.0.0"
resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
@ -814,6 +1092,11 @@ flora-colossus@^2.0.0:
debug "^4.3.4" debug "^4.3.4"
fs-extra "^10.1.0" fs-extra "^10.1.0"
forwarded@0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
fresh@0.5.2: fresh@0.5.2:
version "0.5.2" version "0.5.2"
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
@ -941,7 +1224,7 @@ glob@8.1.0:
minimatch "^5.0.1" minimatch "^5.0.1"
once "^1.3.0" once "^1.3.0"
glob@^7.1.3, glob@^7.1.6: glob@^7.1.6:
version "7.2.3" version "7.2.3"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
@ -1007,7 +1290,7 @@ has-flag@^4.0.0:
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
has-property-descriptors@^1.0.0: has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854"
integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
@ -1051,6 +1334,17 @@ http-cache-semantics@^4.0.0:
resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a"
integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==
http-errors@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
dependencies:
depd "2.0.0"
inherits "2.0.4"
setprototypeof "1.2.0"
statuses "2.0.1"
toidentifier "1.0.1"
http-errors@~1.6.2: http-errors@~1.6.2:
version "1.6.3" version "1.6.3"
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
@ -1069,6 +1363,13 @@ http2-wrapper@^1.0.0-beta.5.2:
quick-lru "^5.1.1" quick-lru "^5.1.1"
resolve-alpn "^1.0.0" resolve-alpn "^1.0.0"
iconv-lite@0.4.24:
version "0.4.24"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
dependencies:
safer-buffer ">= 2.1.2 < 3"
inflight@^1.0.4: inflight@^1.0.4:
version "1.0.6" version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
@ -1077,7 +1378,7 @@ inflight@^1.0.4:
once "^1.3.0" once "^1.3.0"
wrappy "1" wrappy "1"
inherits@2: inherits@2, inherits@2.0.4:
version "2.0.4" version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@ -1087,6 +1388,11 @@ inherits@2.0.3:
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==
ipaddr.js@1.9.1:
version "1.9.1"
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
is-arrayish@^0.2.1: is-arrayish@^0.2.1:
version "0.2.1" version "0.2.1"
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
@ -1289,6 +1595,33 @@ md5@^2.1.0:
crypt "0.0.2" crypt "0.0.2"
is-buffer "~1.1.6" is-buffer "~1.1.6"
media-typer@0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==
merge-descriptors@1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5"
integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==
methods@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
mime-db@1.52.0:
version "1.52.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
mime-types@~2.1.24, mime-types@~2.1.34:
version "2.1.35"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
dependencies:
mime-db "1.52.0"
mime@1.4.1: mime@1.4.1:
version "1.4.1" version "1.4.1"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
@ -1412,6 +1745,11 @@ ms@2.1.3:
nan@2.x, "nan@file:../../third_party/nan": nan@2.x, "nan@file:../../third_party/nan":
version "2.18.0" version "2.18.0"
negotiator@0.6.3:
version "0.6.3"
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
nise@^4.0.4: nise@^4.0.4:
version "4.1.0" version "4.1.0"
resolved "https://registry.yarnpkg.com/nise/-/nise-4.1.0.tgz#8fb75a26e90b99202fa1e63f448f58efbcdedaf6" resolved "https://registry.yarnpkg.com/nise/-/nise-4.1.0.tgz#8fb75a26e90b99202fa1e63f448f58efbcdedaf6"
@ -1448,11 +1786,23 @@ normalize-url@^6.0.1:
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a"
integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==
object-inspect@^1.13.1:
version "1.13.2"
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff"
integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==
object-keys@^1.1.1: object-keys@^1.1.1:
version "1.1.1" version "1.1.1"
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
on-finished@2.4.1:
version "2.4.1"
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f"
integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
dependencies:
ee-first "1.1.1"
on-finished@~2.3.0: on-finished@~2.3.0:
version "2.3.0" version "2.3.0"
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
@ -1527,6 +1877,11 @@ parse-json@^2.2.0:
dependencies: dependencies:
error-ex "^1.2.0" error-ex "^1.2.0"
parseurl@~1.3.3:
version "1.3.3"
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
path-exists@^3.0.0: path-exists@^3.0.0:
version "3.0.0" version "3.0.0"
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
@ -1552,6 +1907,11 @@ path-parse@^1.0.7:
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
path-to-regexp@0.1.10:
version "0.1.10"
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.10.tgz#67e9108c5c0551b9e5326064387de4763c4d5f8b"
integrity sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==
path-to-regexp@^1.7.0: path-to-regexp@^1.7.0:
version "1.8.0" version "1.8.0"
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a"
@ -1635,6 +1995,14 @@ promise-retry@^2.0.1:
err-code "^2.0.2" err-code "^2.0.2"
retry "^0.12.0" retry "^0.12.0"
proxy-addr@~2.0.7:
version "2.0.7"
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==
dependencies:
forwarded "0.2.0"
ipaddr.js "1.9.1"
ps-list@^7.0.0: ps-list@^7.0.0:
version "7.2.0" version "7.2.0"
resolved "https://registry.yarnpkg.com/ps-list/-/ps-list-7.2.0.tgz#3d110e1de8249a4b178c9b1cf2a215d1e4e42fc0" resolved "https://registry.yarnpkg.com/ps-list/-/ps-list-7.2.0.tgz#3d110e1de8249a4b178c9b1cf2a215d1e4e42fc0"
@ -1653,6 +2021,13 @@ q@^1.5.1:
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==
qs@6.13.0:
version "6.13.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906"
integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==
dependencies:
side-channel "^1.0.6"
quick-lru@^5.1.1: quick-lru@^5.1.1:
version "5.1.1" version "5.1.1"
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932"
@ -1665,11 +2040,21 @@ randombytes@^2.1.0:
dependencies: dependencies:
safe-buffer "^5.1.0" safe-buffer "^5.1.0"
range-parser@~1.2.0: range-parser@~1.2.0, range-parser@~1.2.1:
version "1.2.1" version "1.2.1"
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
raw-body@2.5.2:
version "2.5.2"
resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a"
integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==
dependencies:
bytes "3.1.2"
http-errors "2.0.0"
iconv-lite "0.4.24"
unpipe "1.0.0"
read-pkg-up@^2.0.0: read-pkg-up@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be"
@ -1732,13 +2117,6 @@ retry@^0.12.0:
resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==
rimraf@~2.6.2:
version "2.6.3"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
dependencies:
glob "^7.1.3"
roarr@^2.15.3: roarr@^2.15.3:
version "2.15.4" version "2.15.4"
resolved "https://registry.yarnpkg.com/roarr/-/roarr-2.15.4.tgz#f5fe795b7b838ccfe35dc608e0282b9eba2e7afd" resolved "https://registry.yarnpkg.com/roarr/-/roarr-2.15.4.tgz#f5fe795b7b838ccfe35dc608e0282b9eba2e7afd"
@ -1756,11 +2134,16 @@ safe-buffer@5.1.2:
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
safe-buffer@^5.1.0, safe-buffer@^5.1.1: safe-buffer@5.2.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1:
version "5.2.1" version "5.2.1"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
"safer-buffer@>= 2.1.2 < 3":
version "2.1.2"
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
sax@>=0.6.0: sax@>=0.6.0:
version "1.3.0" version "1.3.0"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0" resolved "https://registry.yarnpkg.com/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0"
@ -1786,6 +2169,25 @@ semver@^7.1.3, semver@^7.3.2:
resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13"
integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==
send@0.19.0:
version "0.19.0"
resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8"
integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==
dependencies:
debug "2.6.9"
depd "2.0.0"
destroy "1.2.0"
encodeurl "~1.0.2"
escape-html "~1.0.3"
etag "~1.8.1"
fresh "0.5.2"
http-errors "2.0.0"
mime "1.6.0"
ms "2.1.3"
on-finished "2.4.1"
range-parser "~1.2.1"
statuses "2.0.1"
send@^0.16.2: send@^0.16.2:
version "0.16.2" version "0.16.2"
resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1"
@ -1819,11 +2221,38 @@ serialize-javascript@6.0.0:
dependencies: dependencies:
randombytes "^2.1.0" randombytes "^2.1.0"
serve-static@1.16.2:
version "1.16.2"
resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296"
integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==
dependencies:
encodeurl "~2.0.0"
escape-html "~1.0.3"
parseurl "~1.3.3"
send "0.19.0"
set-function-length@^1.2.1:
version "1.2.2"
resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449"
integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==
dependencies:
define-data-property "^1.1.4"
es-errors "^1.3.0"
function-bind "^1.1.2"
get-intrinsic "^1.2.4"
gopd "^1.0.1"
has-property-descriptors "^1.0.2"
setprototypeof@1.1.0: setprototypeof@1.1.0:
version "1.1.0" version "1.1.0"
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
setprototypeof@1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
shebang-command@^2.0.0: shebang-command@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
@ -1836,6 +2265,16 @@ shebang-regex@^3.0.0:
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
side-channel@^1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2"
integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==
dependencies:
call-bind "^1.0.7"
es-errors "^1.3.0"
get-intrinsic "^1.2.4"
object-inspect "^1.13.1"
sinon@^9.0.1: sinon@^9.0.1:
version "9.2.4" version "9.2.4"
resolved "https://registry.yarnpkg.com/sinon/-/sinon-9.2.4.tgz#e55af4d3b174a4443a8762fa8421c2976683752b" resolved "https://registry.yarnpkg.com/sinon/-/sinon-9.2.4.tgz#e55af4d3b174a4443a8762fa8421c2976683752b"
@ -1886,6 +2325,11 @@ sprintf-js@^1.1.2:
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a"
integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==
statuses@2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
"statuses@>= 1.4.0 < 2": "statuses@>= 1.4.0 < 2":
version "1.5.0" version "1.5.0"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
@ -1975,14 +2419,6 @@ supports-preserve-symlinks-flag@^1.0.0:
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
temp@^0.9.0:
version "0.9.4"
resolved "https://registry.yarnpkg.com/temp/-/temp-0.9.4.tgz#cd20a8580cb63635d0e4e9d4bd989d44286e7620"
integrity sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==
dependencies:
mkdirp "^0.5.1"
rimraf "~2.6.2"
through@2, through@^2.3.8, through@~2.3, through@~2.3.4: through@2, through@^2.3.8, through@~2.3, through@~2.3.4:
version "2.3.8" version "2.3.8"
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
@ -1995,6 +2431,11 @@ to-regex-range@^5.0.1:
dependencies: dependencies:
is-number "^7.0.0" is-number "^7.0.0"
toidentifier@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
trim-repeated@^1.0.0: trim-repeated@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21" resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21"
@ -2012,6 +2453,14 @@ type-fest@^0.13.1:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934"
integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==
type-is@~1.6.18:
version "1.6.18"
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
dependencies:
media-typer "0.3.0"
mime-types "~2.1.24"
undici-types@~5.26.4: undici-types@~5.26.4:
version "5.26.5" version "5.26.5"
resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
@ -2027,6 +2476,16 @@ universalify@^2.0.0:
resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d"
integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==
unpipe@1.0.0, unpipe@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
utils-merge@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==
uuid@^3.3.3: uuid@^3.3.3:
version "3.4.0" version "3.4.0"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
@ -2040,6 +2499,11 @@ validate-npm-package-license@^3.0.1:
spdx-correct "^3.0.0" spdx-correct "^3.0.0"
spdx-expression-parse "^3.0.0" spdx-expression-parse "^3.0.0"
vary@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==
web-streams-polyfill@^3.2.1: web-streams-polyfill@^3.2.1:
version "3.3.3" version "3.3.3"
resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b" resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b"

View file

@ -14,7 +14,7 @@
"allowJs": true, "allowJs": true,
"noUnusedLocals": true, "noUnusedLocals": true,
"outDir": "ts-gen", "outDir": "ts-gen",
"typeRoots" : ["./node_modules/@types"], "typeRoots" : ["./node_modules/@types", "./spec/node_modules/@types"],
"paths": { "paths": {
"@electron/internal/*": ["lib/*"] "@electron/internal/*": ["lib/*"]
} }

View file

@ -203,6 +203,28 @@ declare namespace Electron {
registerProtocol(scheme: string, handler: any): boolean; registerProtocol(scheme: string, handler: any): boolean;
interceptProtocol(scheme: string, handler: any): boolean; interceptProtocol(scheme: string, handler: any): boolean;
} }
interface WebContents {
on(event: '-new-window', listener: (event: Electron.Event, url: string, frameName: string, disposition: Electron.HandlerDetails['disposition'],
rawFeatures: string, referrer: Electron.Referrer, postData: LoadURLOptions['postData']) => void): this;
on(event: '-add-new-contents', listener: (event: Event, webContents: Electron.WebContents, disposition: string,
_userGesture: boolean, _left: number, _top: number, _width: number, _height: number, url: string, frameName: string,
referrer: Electron.Referrer, rawFeatures: string, postData: LoadURLOptions['postData']) => void): this;
on(event: '-will-add-new-contents', listener: (event: Electron.Event, url: string, frameName: string, rawFeatures: string, disposition: Electron.HandlerDetails['disposition'], referrer: Electron.Referrer, postData: LoadURLOptions['postData']) => void): this;
on(event: '-ipc-message', listener: (event: Electron.IpcMainEvent, internal: boolean, channel: string, args: any[]) => void): this;
on(event: '-ipc-message-sync', listener: (event: Electron.IpcMainEvent, internal: boolean, channel: string, args: any[]) => void): this;
on(event: '-ipc-invoke', listener: (event: Electron.IpcMainInvokeEvent, internal: boolean, channel: string, args: any[]) => void): this;
on(event: '-ipc-ports', listener: (event: Electron.IpcMainEvent, internal: boolean, channel: string, message: any, ports: any[]) => void): this;
on(event: '-run-dialog', listener: (info: {frame: WebFrameMain, dialogType: 'prompt' | 'confirm' | 'alert', messageText: string, defaultPromptText: string}, callback: (success: boolean, user_input: string) => void) => void): this;
on(event: '-cancel-dialogs', listener: () => void): this;
on(event: 'ready-to-show', listener: () => void): this;
on(event: '-before-unload-fired', listener: (event: Electron.Event, proceed: boolean) => void): this;
on(event: '-window-visibility-change', listener: (visibilityState: 'hidden' | 'visible') => void): this;
removeListener(event: '-window-visibility-change', listener: (visibilityState: 'hidden' | 'visible') => void): this;
once(event: 'destroyed', listener: (event: Electron.Event) => void): this;
}
} }
declare namespace ElectronInternal { declare namespace ElectronInternal {

2520
yarn.lock

File diff suppressed because it is too large Load diff