chore: update to latest TypeScript, which has built-in WeakRef declarations (#27425)

This commit is contained in:
Milan Burda 2021-01-22 20:25:47 +01:00 committed by GitHub
parent fcdb7ad21a
commit 70190ec2b1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
27 changed files with 70 additions and 128 deletions

View file

@ -187,7 +187,7 @@ for (const method of webFrameMethods) {
const waitTillCanExecuteJavaScript = async (webContents: Electron.WebContents) => { const waitTillCanExecuteJavaScript = async (webContents: Electron.WebContents) => {
if (webContents.getURL() && !webContents.isLoadingMainFrame()) return; if (webContents.getURL() && !webContents.isLoadingMainFrame()) return;
return new Promise((resolve) => { return new Promise<void>((resolve) => {
webContents.once('did-stop-loading', () => { webContents.once('did-stop-loading', () => {
resolve(); resolve();
}); });

View file

@ -62,7 +62,7 @@ const assertChromeDevTools = function (contents: Electron.WebContents, api: stri
}; };
ipcMainInternal.handle(IPC_MESSAGES.INSPECTOR_CONTEXT_MENU, function (event, items: ContextMenuItem[], isEditMenu: boolean) { ipcMainInternal.handle(IPC_MESSAGES.INSPECTOR_CONTEXT_MENU, function (event, items: ContextMenuItem[], isEditMenu: boolean) {
return new Promise(resolve => { return new Promise<number | void>(resolve => {
assertChromeDevTools(event.sender, 'window.InspectorFrontendHost.showContextMenuAtPoint()'); assertChromeDevTools(event.sender, 'window.InspectorFrontendHost.showContextMenuAtPoint()');
const template = isEditMenu ? getEditMenuItems() : convertToMenuTemplate(items, resolve); const template = isEditMenu ? getEditMenuItems() : convertToMenuTemplate(items, resolve);

View file

@ -15,7 +15,7 @@ const { hasSwitch } = process._linkedBinding('electron_common_command_line');
const callbacksRegistry = new CallbacksRegistry(); const callbacksRegistry = new CallbacksRegistry();
const remoteObjectCache = new Map(); const remoteObjectCache = new Map();
const finalizationRegistry = new (window as any).FinalizationRegistry((id: number) => { const finalizationRegistry = new FinalizationRegistry((id: number) => {
const ref = remoteObjectCache.get(id); const ref = remoteObjectCache.get(id);
if (ref !== undefined && ref.deref() === undefined) { if (ref !== undefined && ref.deref() === undefined) {
remoteObjectCache.delete(id); remoteObjectCache.delete(id);
@ -34,7 +34,7 @@ function getCachedRemoteObject (id: number) {
} }
} }
function setCachedRemoteObject (id: number, value: any) { function setCachedRemoteObject (id: number, value: any) {
const wr = new (window as any).WeakRef(value); const wr = new WeakRef(value);
remoteObjectCache.set(id, wr); remoteObjectCache.set(id, wr);
finalizationRegistry.register(value, id); finalizationRegistry.register(value, id);
return value; return value;

View file

@ -68,7 +68,7 @@
"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": "^4.0.2", "typescript": "^4.1.3",
"webpack": "^4.43.0", "webpack": "^4.43.0",
"webpack-cli": "^3.3.12", "webpack-cli": "^3.3.12",
"wrapper-webpack-plugin": "^2.1.0" "wrapper-webpack-plugin": "^2.1.0"
@ -150,4 +150,4 @@
"@types/temp": "^0.8.34", "@types/temp": "^0.8.34",
"aws-sdk": "^2.727.1" "aws-sdk": "^2.727.1"
} }
} }

View file

@ -60,7 +60,7 @@ const main = async () => {
output += chunk.toString(); output += chunk.toString();
}); });
child.stderr.on('data', chunk => console.error(chunk.toString())); child.stderr.on('data', chunk => console.error(chunk.toString()));
await new Promise((resolve, reject) => child.on('exit', (code) => { await new Promise<void>((resolve, reject) => child.on('exit', (code) => {
if (code !== 0) { if (code !== 0) {
console.error(output); console.error(output);
return reject(new Error(`Failed to list webpack dependencies for entry: ${webpackTarget.name}`)); return reject(new Error(`Failed to list webpack dependencies for entry: ${webpackTarget.name}`));

View file

@ -183,7 +183,7 @@ ifdescribe(process.platform === 'darwin' && process.arch !== 'arm64' && !process
afterEach(async () => { afterEach(async () => {
if (httpServer) { if (httpServer) {
await new Promise(resolve => { await new Promise<void>(resolve => {
httpServer.close(() => { httpServer.close(() => {
httpServer = null as any; httpServer = null as any;
server = null as any; server = null as any;
@ -287,7 +287,7 @@ ifdescribe(process.platform === 'darwin' && process.arch !== 'arm64' && !process
pub_date: (new Date()).toString() pub_date: (new Date()).toString()
}); });
}); });
const relaunchPromise = new Promise((resolve) => { const relaunchPromise = new Promise<void>((resolve) => {
server.get('/update-check/updated/:version', (req, res) => { server.get('/update-check/updated/:version', (req, res) => {
res.status(204).send(); res.status(204).send();
resolve(); resolve();
@ -337,7 +337,7 @@ ifdescribe(process.platform === 'darwin' && process.arch !== 'arm64' && !process
] ]
}); });
}); });
const relaunchPromise = new Promise((resolve) => { const relaunchPromise = new Promise<void>((resolve) => {
server.get('/update-check/updated/:version', (req, res) => { server.get('/update-check/updated/:version', (req, res) => {
res.status(204).send(); res.status(204).send();
resolve(); resolve();

View file

@ -72,7 +72,7 @@ describe('BrowserWindow module', () => {
const w = new BrowserWindow({ show: false }); const w = new BrowserWindow({ show: false });
// Keep a weak reference to the window. // Keep a weak reference to the window.
// eslint-disable-next-line no-undef // eslint-disable-next-line no-undef
const wr = new (globalThis as any).WeakRef(w); const wr = new WeakRef(w);
await delay(); await delay();
// Do garbage collection, since |w| is not referenced in this closure // Do garbage collection, since |w| is not referenced in this closure
// it would be gone after next call if there is no other reference. // it would be gone after next call if there is no other reference.
@ -1445,7 +1445,7 @@ describe('BrowserWindow module', () => {
}); });
server.on('connection', () => { connections++; }); server.on('connection', () => { connections++; });
await new Promise(resolve => server.listen(0, '127.0.0.1', () => resolve())); await new Promise<void>(resolve => server.listen(0, '127.0.0.1', () => resolve()));
url = `http://127.0.0.1:${(server.address() as AddressInfo).port}`; url = `http://127.0.0.1:${(server.address() as AddressInfo).port}`;
}); });
afterEach(async () => { afterEach(async () => {

View file

@ -22,7 +22,7 @@ describe('contextBridge', () => {
res.setHeader('Content-Type', 'text/html'); res.setHeader('Content-Type', 'text/html');
res.end(''); res.end('');
}); });
await new Promise(resolve => server.listen(0, '127.0.0.1', resolve)); await new Promise<void>(resolve => server.listen(0, '127.0.0.1', resolve));
}); });
after(async () => { after(async () => {

View file

@ -89,7 +89,7 @@ const startServer = async () => {
req.pipe(busboy); req.pipe(busboy);
}); });
await new Promise(resolve => { await new Promise<void>(resolve => {
server.listen(0, '127.0.0.1', () => { resolve(); }); server.listen(0, '127.0.0.1', () => { resolve(); });
}); });

View file

@ -33,7 +33,7 @@ describe('ipc module', () => {
expect(arg).to.equal(123); expect(arg).to.equal(123);
return 3; return 3;
}); });
const done = new Promise(resolve => ipcMain.once('result', (e, arg) => { const done = new Promise<void>(resolve => ipcMain.once('result', (e, arg) => {
expect(arg).to.deep.equal({ result: 3 }); expect(arg).to.deep.equal({ result: 3 });
resolve(); resolve();
})); }));
@ -47,7 +47,7 @@ describe('ipc module', () => {
await new Promise(setImmediate); await new Promise(setImmediate);
return 3; return 3;
}); });
const done = new Promise(resolve => ipcMain.once('result', (e, arg) => { const done = new Promise<void>(resolve => ipcMain.once('result', (e, arg) => {
expect(arg).to.deep.equal({ result: 3 }); expect(arg).to.deep.equal({ result: 3 });
resolve(); resolve();
})); }));
@ -59,7 +59,7 @@ describe('ipc module', () => {
ipcMain.handleOnce('test', () => { ipcMain.handleOnce('test', () => {
throw new Error('some error'); throw new Error('some error');
}); });
const done = new Promise(resolve => ipcMain.once('result', (e, arg) => { const done = new Promise<void>(resolve => ipcMain.once('result', (e, arg) => {
expect(arg.error).to.match(/some error/); expect(arg.error).to.match(/some error/);
resolve(); resolve();
})); }));
@ -72,7 +72,7 @@ describe('ipc module', () => {
await new Promise(setImmediate); await new Promise(setImmediate);
throw new Error('some error'); throw new Error('some error');
}); });
const done = new Promise(resolve => ipcMain.once('result', (e, arg) => { const done = new Promise<void>(resolve => ipcMain.once('result', (e, arg) => {
expect(arg.error).to.match(/some error/); expect(arg.error).to.match(/some error/);
resolve(); resolve();
})); }));
@ -81,7 +81,7 @@ describe('ipc module', () => {
}); });
it('throws an error if no handler is registered', async () => { it('throws an error if no handler is registered', async () => {
const done = new Promise(resolve => ipcMain.once('result', (e, arg) => { const done = new Promise<void>(resolve => ipcMain.once('result', (e, arg) => {
expect(arg.error).to.match(/No handler registered/); expect(arg.error).to.match(/No handler registered/);
resolve(); resolve();
})); }));
@ -92,7 +92,7 @@ describe('ipc module', () => {
it('throws an error when invoking a handler that was removed', async () => { it('throws an error when invoking a handler that was removed', async () => {
ipcMain.handle('test', () => {}); ipcMain.handle('test', () => {});
ipcMain.removeHandler('test'); ipcMain.removeHandler('test');
const done = new Promise(resolve => ipcMain.once('result', (e, arg) => { const done = new Promise<void>(resolve => ipcMain.once('result', (e, arg) => {
expect(arg.error).to.match(/No handler registered/); expect(arg.error).to.match(/No handler registered/);
resolve(); resolve();
})); }));
@ -136,7 +136,7 @@ describe('ipc module', () => {
const received: number[] = []; const received: number[] = [];
ipcMain.on('test-async', (e, i) => { received.push(i); }); ipcMain.on('test-async', (e, i) => { received.push(i); });
ipcMain.on('test-sync', (e, i) => { received.push(i); e.returnValue = null; }); ipcMain.on('test-sync', (e, i) => { received.push(i); e.returnValue = null; });
const done = new Promise(resolve => ipcMain.once('done', () => { resolve(); })); const done = new Promise<void>(resolve => ipcMain.once('done', () => { resolve(); }));
function rendererStressTest () { function rendererStressTest () {
const { ipcRenderer } = require('electron'); const { ipcRenderer } = require('electron');
for (let i = 0; i < 1000; i++) { for (let i = 0; i < 1000; i++) {
@ -167,7 +167,7 @@ describe('ipc module', () => {
ipcMain.handle('test-invoke', (e, i) => { received.push(i); }); ipcMain.handle('test-invoke', (e, i) => { received.push(i); });
ipcMain.on('test-async', (e, i) => { received.push(i); }); ipcMain.on('test-async', (e, i) => { received.push(i); });
ipcMain.on('test-sync', (e, i) => { received.push(i); e.returnValue = null; }); ipcMain.on('test-sync', (e, i) => { received.push(i); e.returnValue = null; });
const done = new Promise(resolve => ipcMain.once('done', () => { resolve(); })); const done = new Promise<void>(resolve => ipcMain.once('done', () => { resolve(); }));
function rendererStressTest () { function rendererStressTest () {
const { ipcRenderer } = require('electron'); const { ipcRenderer } = require('electron');
for (let i = 0; i < 1000; i++) { for (let i = 0; i < 1000; i++) {

View file

@ -868,7 +868,7 @@ describe('Menu module', function () {
// Keep a weak reference to the menu. // Keep a weak reference to the menu.
// eslint-disable-next-line no-undef // eslint-disable-next-line no-undef
const wr = new (globalThis as any).WeakRef(menu); const wr = new WeakRef(menu);
await delay(); await delay();
@ -881,7 +881,7 @@ describe('Menu module', function () {
// Try to receive menu from weak reference. // Try to receive menu from weak reference.
if (wr.deref()) { if (wr.deref()) {
wr.deref().closePopup(); wr.deref()!.closePopup();
} else { } else {
throw new Error('Menu is garbage-collected while popuping'); throw new Error('Menu is garbage-collected while popuping');
} }
@ -910,7 +910,7 @@ describe('Menu module', function () {
const appProcess = cp.spawn(process.execPath, [appPath]); const appProcess = cp.spawn(process.execPath, [appPath]);
let output = ''; let output = '';
await new Promise((resolve) => { await new Promise<void>((resolve) => {
appProcess.stdout.on('data', data => { appProcess.stdout.on('data', data => {
output += data; output += data;
if (data.indexOf('Window has') > -1) { if (data.indexOf('Window has') > -1) {

View file

@ -89,7 +89,7 @@ describe('netLog module', () => {
it('should include cookies when requested', async () => { it('should include cookies when requested', async () => {
await testNetLog().startLogging(dumpFileDynamic, { captureMode: 'includeSensitive' }); await testNetLog().startLogging(dumpFileDynamic, { captureMode: 'includeSensitive' });
const unique = require('uuid').v4(); const unique = require('uuid').v4();
await new Promise((resolve) => { await new Promise<void>((resolve) => {
const req = net.request(serverUrl); const req = net.request(serverUrl);
req.setHeader('Cookie', `foo=${unique}`); req.setHeader('Cookie', `foo=${unique}`);
req.on('response', (response) => { req.on('response', (response) => {
@ -107,7 +107,7 @@ describe('netLog module', () => {
it('should include socket bytes when requested', async () => { it('should include socket bytes when requested', async () => {
await testNetLog().startLogging(dumpFileDynamic, { captureMode: 'everything' }); await testNetLog().startLogging(dumpFileDynamic, { captureMode: 'everything' });
const unique = require('uuid').v4(); const unique = require('uuid').v4();
await new Promise((resolve) => { await new Promise<void>((resolve) => {
const req = net.request({ method: 'POST', url: serverUrl }); const req = net.request({ method: 'POST', url: serverUrl });
req.on('response', (response) => { req.on('response', (response) => {
response.on('data', () => {}); // https://github.com/electron/electron/issues/19214 response.on('data', () => {}); // https://github.com/electron/electron/issues/19214

View file

@ -262,7 +262,7 @@ describe('protocol module', () => {
res.end(text); res.end(text);
server.close(); server.close();
}); });
await new Promise(resolve => server.listen(0, '127.0.0.1', resolve)); await new Promise<void>(resolve => server.listen(0, '127.0.0.1', resolve));
const port = (server.address() as AddressInfo).port; const port = (server.address() as AddressInfo).port;
const url = 'http://127.0.0.1:' + port; const url = 'http://127.0.0.1:' + port;
@ -292,7 +292,7 @@ describe('protocol module', () => {
} }
}); });
after(() => server.close()); after(() => server.close());
await new Promise(resolve => server.listen(0, '127.0.0.1', resolve)); await new Promise<void>(resolve => server.listen(0, '127.0.0.1', resolve));
const port = (server.address() as AddressInfo).port; const port = (server.address() as AddressInfo).port;
const url = `${protocolName}://fake-host`; const url = `${protocolName}://fake-host`;
@ -778,7 +778,7 @@ describe('protocol module', () => {
server.close(); server.close();
requestReceived.resolve(); requestReceived.resolve();
}); });
await new Promise(resolve => server.listen(0, '127.0.0.1', resolve)); await new Promise<void>(resolve => server.listen(0, '127.0.0.1', resolve));
const port = (server.address() as AddressInfo).port; const port = (server.address() as AddressInfo).port;
const content = `<script>fetch("http://127.0.0.1:${port}")</script>`; const content = `<script>fetch("http://127.0.0.1:${port}")</script>`;
registerStringProtocol(standardScheme, (request, callback) => callback({ data: content, mimeType: 'text/html' })); registerStringProtocol(standardScheme, (request, callback) => callback({ data: content, mimeType: 'text/html' }));

View file

@ -31,7 +31,7 @@ describe('session.serviceWorkers', () => {
} }
res.end(fs.readFileSync(path.resolve(__dirname, 'fixtures', 'api', 'service-workers', file))); res.end(fs.readFileSync(path.resolve(__dirname, 'fixtures', 'api', 'service-workers', file)));
}); });
await new Promise(resolve => { await new Promise<void>(resolve => {
server.listen(0, '127.0.0.1', () => { server.listen(0, '127.0.0.1', () => {
baseUrl = `http://localhost:${(server.address() as AddressInfo).port}/${uuid}`; baseUrl = `http://localhost:${(server.address() as AddressInfo).port}/${uuid}`;
resolve(); resolve();

View file

@ -51,7 +51,7 @@ describe('session module', () => {
res.end('finished'); res.end('finished');
server.close(); server.close();
}); });
await new Promise(resolve => server.listen(0, '127.0.0.1', resolve)); await new Promise<void>(resolve => server.listen(0, '127.0.0.1', resolve));
const { port } = server.address() as AddressInfo; const { port } = server.address() as AddressInfo;
const w = new BrowserWindow({ show: false }); const w = new BrowserWindow({ show: false });
await w.loadURL(`${url}:${port}`); await w.loadURL(`${url}:${port}`);
@ -274,7 +274,7 @@ describe('session module', () => {
res.end(mockFile); res.end(mockFile);
downloadServer.close(); downloadServer.close();
}); });
await new Promise(resolve => downloadServer.listen(0, '127.0.0.1', resolve)); await new Promise<void>(resolve => downloadServer.listen(0, '127.0.0.1', resolve));
const port = (downloadServer.address() as AddressInfo).port; const port = (downloadServer.address() as AddressInfo).port;
const url = `http://127.0.0.1:${port}/`; const url = `http://127.0.0.1:${port}/`;
@ -290,7 +290,7 @@ describe('session module', () => {
expect(itemUrl).to.equal(url); expect(itemUrl).to.equal(url);
expect(itemFilename).to.equal('mockFile.txt'); expect(itemFilename).to.equal('mockFile.txt');
// Delay till the next tick. // Delay till the next tick.
await new Promise(resolve => setImmediate(() => resolve())); await new Promise<void>(resolve => setImmediate(() => resolve()));
expect(() => item.getURL()).to.throw('DownloadItem used after being destroyed'); expect(() => item.getURL()).to.throw('DownloadItem used after being destroyed');
}); });
}); });
@ -390,7 +390,7 @@ describe('session module', () => {
}); });
res.end(pac); res.end(pac);
}); });
await new Promise(resolve => server.listen(0, '127.0.0.1', resolve)); await new Promise<void>(resolve => server.listen(0, '127.0.0.1', resolve));
{ {
const config = { pacScript: `http://127.0.0.1:${(server.address() as AddressInfo).port}` }; const config = { pacScript: `http://127.0.0.1:${(server.address() as AddressInfo).port}` };
await customSession.setProxy(config); await customSession.setProxy(config);
@ -464,7 +464,7 @@ describe('session module', () => {
}); });
res.end(pac); res.end(pac);
}); });
await new Promise(resolve => server.listen(0, '127.0.0.1', resolve)); await new Promise<void>(resolve => server.listen(0, '127.0.0.1', resolve));
const config = { mode: 'pac_script' as any, pacScript: `http://127.0.0.1:${(server.address() as AddressInfo).port}` }; const config = { mode: 'pac_script' as any, pacScript: `http://127.0.0.1:${(server.address() as AddressInfo).port}` };
await customSession.setProxy(config); await customSession.setProxy(config);
{ {
@ -618,7 +618,7 @@ describe('session module', () => {
setTimeout(() => { setTimeout(() => {
ses2.setCertificateVerifyProc((opts, callback) => callback(0)); ses2.setCertificateVerifyProc((opts, callback) => callback(0));
}); });
await expect(new Promise((resolve, reject) => { await expect(new Promise<void>((resolve, reject) => {
req.on('error', (err) => { req.on('error', (err) => {
reject(err); reject(err);
}); });
@ -642,7 +642,7 @@ describe('session module', () => {
res.end('authenticated'); res.end('authenticated');
} }
}); });
await new Promise(resolve => server.listen(0, '127.0.0.1', resolve)); await new Promise<void>(resolve => server.listen(0, '127.0.0.1', resolve));
const port = (server.address() as AddressInfo).port; const port = (server.address() as AddressInfo).port;
const fetch = (url: string) => new Promise((resolve, reject) => { const fetch = (url: string) => new Promise((resolve, reject) => {
const request = net.request({ url, session: ses }); const request = net.request({ url, session: ses });
@ -694,7 +694,7 @@ describe('session module', () => {
}); });
res.end(mockPDF); res.end(mockPDF);
}); });
await new Promise(resolve => downloadServer.listen(0, '127.0.0.1', resolve)); await new Promise<void>(resolve => downloadServer.listen(0, '127.0.0.1', resolve));
address = downloadServer.address() as AddressInfo; address = downloadServer.address() as AddressInfo;
}); });
after(async () => { after(async () => {
@ -940,7 +940,7 @@ describe('session module', () => {
.on('error', (error: any) => { throw error; }).pipe(res); .on('error', (error: any) => { throw error; }).pipe(res);
}); });
try { try {
await new Promise(resolve => rangeServer.listen(0, '127.0.0.1', resolve)); await new Promise<void>(resolve => rangeServer.listen(0, '127.0.0.1', resolve));
const port = (rangeServer.address() as AddressInfo).port; const port = (rangeServer.address() as AddressInfo).port;
const w = new BrowserWindow({ show: false }); const w = new BrowserWindow({ show: false });
const downloadCancelled: Promise<Electron.DownloadItem> = new Promise((resolve) => { const downloadCancelled: Promise<Electron.DownloadItem> = new Promise((resolve) => {
@ -1072,7 +1072,7 @@ describe('session module', () => {
res.end(); res.end();
server.close(); server.close();
}); });
await new Promise(resolve => server.listen(0, '127.0.0.1', resolve)); await new Promise<void>(resolve => server.listen(0, '127.0.0.1', resolve));
await w.loadURL(`http://127.0.0.1:${(server.address() as AddressInfo).port}`); await w.loadURL(`http://127.0.0.1:${(server.address() as AddressInfo).port}`);
expect(headers!['user-agent']).to.equal(userAgent); expect(headers!['user-agent']).to.equal(userAgent);
expect(headers!['accept-language']).to.equal('en-US,fr;q=0.9,de;q=0.8'); expect(headers!['accept-language']).to.equal('en-US,fr;q=0.9,de;q=0.8');
@ -1106,7 +1106,7 @@ describe('session module', () => {
}, (req, res) => { }, (req, res) => {
res.end('hi'); res.end('hi');
}); });
await new Promise(resolve => server.listen(0, '127.0.0.1', resolve)); await new Promise<void>(resolve => server.listen(0, '127.0.0.1', resolve));
defer(() => server.close()); defer(() => server.close());
const { port } = server.address() as AddressInfo; const { port } = server.address() as AddressInfo;

View file

@ -32,7 +32,7 @@ describe('shell module', () => {
it('opens an external link', async () => { it('opens an external link', async () => {
let url = 'http://127.0.0.1'; let url = 'http://127.0.0.1';
let requestReceived; let requestReceived: Promise<any>;
if (process.platform === 'linux') { if (process.platform === 'linux') {
process.env.BROWSER = '/bin/true'; process.env.BROWSER = '/bin/true';
process.env.DE = 'generic'; process.env.DE = 'generic';
@ -49,12 +49,12 @@ describe('shell module', () => {
const server = http.createServer((req, res) => { const server = http.createServer((req, res) => {
res.end(); res.end();
}); });
await new Promise(resolve => server.listen(0, '127.0.0.1', resolve)); await new Promise<void>(resolve => server.listen(0, '127.0.0.1', resolve));
requestReceived = new Promise(resolve => server.on('connection', () => resolve())); requestReceived = new Promise<void>(resolve => server.on('connection', () => resolve()));
url = `http://127.0.0.1:${(server.address() as AddressInfo).port}`; url = `http://127.0.0.1:${(server.address() as AddressInfo).port}`;
} }
await Promise.all([ await Promise.all<void>([
shell.openExternal(url), shell.openExternal(url),
requestReceived requestReceived
]); ]);

View file

@ -327,7 +327,7 @@ describe('webContents module', () => {
it('rejects if the load is aborted', async () => { it('rejects if the load is aborted', async () => {
const s = http.createServer(() => { /* never complete the request */ }); const s = http.createServer(() => { /* never complete the request */ });
await new Promise(resolve => s.listen(0, '127.0.0.1', resolve)); await new Promise<void>(resolve => s.listen(0, '127.0.0.1', resolve));
const { port } = s.address() as AddressInfo; const { port } = s.address() as AddressInfo;
const p = expect(w.loadURL(`http://127.0.0.1:${port}`)).to.eventually.be.rejectedWith(Error, /ERR_ABORTED/); const p = expect(w.loadURL(`http://127.0.0.1:${port}`)).to.eventually.be.rejectedWith(Error, /ERR_ABORTED/);
// load a different file before the first load completes, causing the // load a different file before the first load completes, causing the
@ -345,9 +345,9 @@ describe('webContents module', () => {
resp = res; resp = res;
// don't end the response yet // don't end the response yet
}); });
await new Promise(resolve => s.listen(0, '127.0.0.1', resolve)); await new Promise<void>(resolve => s.listen(0, '127.0.0.1', resolve));
const { port } = s.address() as AddressInfo; const { port } = s.address() as AddressInfo;
const p = new Promise(resolve => { const p = new Promise<void>(resolve => {
w.webContents.on('did-fail-load', (event, errorCode, errorDescription, validatedURL, isMainFrame) => { w.webContents.on('did-fail-load', (event, errorCode, errorDescription, validatedURL, isMainFrame) => {
if (!isMainFrame) { if (!isMainFrame) {
resolve(); resolve();
@ -369,9 +369,9 @@ describe('webContents module', () => {
resp = res; resp = res;
// don't end the response yet // don't end the response yet
}); });
await new Promise(resolve => s.listen(0, '127.0.0.1', resolve)); await new Promise<void>(resolve => s.listen(0, '127.0.0.1', resolve));
const { port } = s.address() as AddressInfo; const { port } = s.address() as AddressInfo;
const p = new Promise(resolve => { const p = new Promise<void>(resolve => {
w.webContents.on('did-frame-finish-load', (event, isMainFrame) => { w.webContents.on('did-frame-finish-load', (event, isMainFrame) => {
if (!isMainFrame) { if (!isMainFrame) {
resolve(); resolve();
@ -1210,7 +1210,7 @@ describe('webContents module', () => {
const renderViewDeletedHandler = () => { const renderViewDeletedHandler = () => {
currentRenderViewDeletedEmitted = true; currentRenderViewDeletedEmitted = true;
}; };
const childWindowCreated = new Promise((resolve) => { const childWindowCreated = new Promise<void>((resolve) => {
app.once('browser-window-created', (event, window) => { app.once('browser-window-created', (event, window) => {
childWindow = window; childWindow = window;
window.webContents.on('current-render-view-deleted' as any, renderViewDeletedHandler); window.webContents.on('current-render-view-deleted' as any, renderViewDeletedHandler);

View file

@ -452,7 +452,7 @@ describe('webRequest module', () => {
}); });
// Start server. // Start server.
await new Promise(resolve => server.listen(0, '127.0.0.1', resolve)); await new Promise<void>(resolve => server.listen(0, '127.0.0.1', resolve));
const port = String((server.address() as AddressInfo).port); const port = String((server.address() as AddressInfo).port);
// Use a separate session for testing. // Use a separate session for testing.

View file

@ -59,7 +59,7 @@ describe('reporting api', () => {
// "deprecation" report. // "deprecation" report.
res.end('<script>webkitRequestAnimationFrame(() => {})</script>'); res.end('<script>webkitRequestAnimationFrame(() => {})</script>');
}); });
await new Promise(resolve => server.listen(0, '127.0.0.1', resolve)); await new Promise<void>(resolve => server.listen(0, '127.0.0.1', resolve));
const bw = new BrowserWindow({ const bw = new BrowserWindow({
show: false show: false
}); });
@ -220,7 +220,7 @@ describe('web security', () => {
res.setHeader('Content-Type', 'text/html'); res.setHeader('Content-Type', 'text/html');
res.end('<body>'); res.end('<body>');
}); });
await new Promise(resolve => server.listen(0, '127.0.0.1', resolve)); await new Promise<void>(resolve => server.listen(0, '127.0.0.1', resolve));
serverUrl = `http://localhost:${(server.address() as any).port}`; serverUrl = `http://localhost:${(server.address() as any).port}`;
}); });
after(() => { after(() => {
@ -574,7 +574,7 @@ describe('chromium features', () => {
res.end(`body:${body}`); res.end(`body:${body}`);
}); });
}); });
await new Promise(resolve => server.listen(0, '127.0.0.1', resolve)); await new Promise<void>(resolve => server.listen(0, '127.0.0.1', resolve));
serverUrl = `http://localhost:${(server.address() as any).port}`; serverUrl = `http://localhost:${(server.address() as any).port}`;
}); });
after(async () => { after(async () => {

View file

@ -17,7 +17,7 @@ const runFixtureAndEnsureCleanExit = (args: string[]) => {
child.stderr.on('data', (chunk: Buffer) => { child.stderr.on('data', (chunk: Buffer) => {
out += chunk.toString(); out += chunk.toString();
}); });
return new Promise((resolve) => { return new Promise<void>((resolve) => {
child.on('exit', (code, signal) => { child.on('exit', (code, signal) => {
if (code !== 0 || signal !== null) { if (code !== 0 || signal !== null) {
console.error(out); console.error(out);

View file

@ -36,7 +36,7 @@ describe('chrome extensions', () => {
}); });
}); });
await new Promise(resolve => server.listen(0, '127.0.0.1', () => { await new Promise<void>(resolve => server.listen(0, '127.0.0.1', () => {
port = String((server.address() as AddressInfo).port); port = String((server.address() as AddressInfo).port);
url = `http://127.0.0.1:${port}`; url = `http://127.0.0.1:${port}`;
resolve(); resolve();
@ -287,7 +287,7 @@ describe('chrome extensions', () => {
}); });
it('does not take precedence over Electron webRequest - http', async () => { it('does not take precedence over Electron webRequest - http', async () => {
return new Promise((resolve) => { return new Promise<void>((resolve) => {
(async () => { (async () => {
customSession.webRequest.onBeforeRequest((details, callback) => { customSession.webRequest.onBeforeRequest((details, callback) => {
resolve(); resolve();
@ -302,7 +302,7 @@ describe('chrome extensions', () => {
}); });
it('does not take precedence over Electron webRequest - WebSocket', () => { it('does not take precedence over Electron webRequest - WebSocket', () => {
return new Promise((resolve) => { return new Promise<void>((resolve) => {
(async () => { (async () => {
customSession.webRequest.onBeforeSendHeaders(() => { customSession.webRequest.onBeforeSendHeaders(() => {
resolve(); resolve();

View file

@ -58,7 +58,7 @@ describe('modules support', () => {
ifit(features.isRunAsNodeEnabled())('can be required in node binary', async function () { ifit(features.isRunAsNodeEnabled())('can be required in node binary', async function () {
const child = childProcess.fork(path.join(fixtures, 'module', 'uv-dlopen.js')); const child = childProcess.fork(path.join(fixtures, 'module', 'uv-dlopen.js'));
await new Promise(resolve => child.once('exit', (exitCode) => { await new Promise<void>(resolve => child.once('exit', (exitCode) => {
expect(exitCode).to.equal(0); expect(exitCode).to.equal(0);
resolve(); resolve();
})); }));

View file

@ -114,7 +114,7 @@ ifdescribe(process.platform !== 'linux')('document.visibilityState', () => {
const makeOtherWindow = (opts: { x: number; y: number; width: number; height: number; }) => { const makeOtherWindow = (opts: { x: number; y: number; width: number; height: number; }) => {
child = cp.spawn(process.execPath, [path.resolve(__dirname, 'fixtures', 'chromium', 'other-window.js'), `${opts.x}`, `${opts.y}`, `${opts.width}`, `${opts.height}`]); child = cp.spawn(process.execPath, [path.resolve(__dirname, 'fixtures', 'chromium', 'other-window.js'), `${opts.x}`, `${opts.y}`, `${opts.width}`, `${opts.height}`]);
return new Promise(resolve => { return new Promise<void>(resolve => {
child.stdout!.on('data', (chunk) => { child.stdout!.on('data', (chunk) => {
if (chunk.toString().includes('__ready__')) resolve(); if (chunk.toString().includes('__ready__')) resolve();
}); });

View file

@ -255,7 +255,7 @@ describe('<webview> tag', function () {
zoomFactor: 1.2 zoomFactor: 1.2
} }
}); });
const promise = new Promise((resolve) => { const promise = new Promise<void>((resolve) => {
ipcMain.on('webview-zoom-level', (event, zoomLevel, zoomFactor, newHost, final) => { ipcMain.on('webview-zoom-level', (event, zoomLevel, zoomFactor, newHost, final) => {
if (!newHost) { if (!newHost) {
expect(zoomFactor).to.equal(1.44); expect(zoomFactor).to.equal(1.44);
@ -285,7 +285,7 @@ describe('<webview> tag', function () {
zoomFactor: 1.2 zoomFactor: 1.2
} }
}); });
const promise = new Promise((resolve) => { const promise = new Promise<void>((resolve) => {
ipcMain.on('webview-zoom-in-page', (event, zoomLevel, zoomFactor, final) => { ipcMain.on('webview-zoom-in-page', (event, zoomLevel, zoomFactor, final) => {
expect(zoomFactor).to.equal(1.44); expect(zoomFactor).to.equal(1.44);
expect(zoomLevel).to.equal(2.0); expect(zoomLevel).to.equal(2.0);
@ -500,7 +500,7 @@ describe('<webview> tag', function () {
const partition = 'permissionTest'; const partition = 'permissionTest';
function setUpRequestHandler (webContentsId: number, requestedPermission: string) { function setUpRequestHandler (webContentsId: number, requestedPermission: string) {
return new Promise((resolve, reject) => { return new Promise<void>((resolve, reject) => {
session.fromPartition(partition).setPermissionRequestHandler(function (webContents, permission, callback) { session.fromPartition(partition).setPermissionRequestHandler(function (webContents, permission, callback) {
if (webContents.id === webContentsId) { if (webContents.id === webContentsId) {
// requestMIDIAccess with sysex requests both midi and midiSysex so // requestMIDIAccess with sysex requests both midi and midiSysex so

View file

@ -4,6 +4,7 @@
"target": "es2020", "target": "es2020",
"lib": [ "lib": [
"es2019", "es2019",
"esnext.weakref",
"dom", "dom",
"dom.iterable" "dom.iterable"
], ],

View file

@ -232,7 +232,6 @@ declare namespace NodeJS {
_firstFileName?: string; _firstFileName?: string;
helperExecPath: string; helperExecPath: string;
isRemoteModuleEnabled: boolean;
} }
} }
@ -324,61 +323,3 @@ interface ResizeObserverEntry {
*/ */
readonly contentRect: DOMRectReadOnly; readonly contentRect: DOMRectReadOnly;
} }
// https://github.com/microsoft/TypeScript/pull/38232
interface WeakRef<T extends object> {
readonly [Symbol.toStringTag]: 'WeakRef';
/**
* Returns the WeakRef instance's target object, or undefined if the target object has been
* reclaimed.
*/
deref(): T | undefined;
}
interface WeakRefConstructor {
readonly prototype: WeakRef<any>;
/**
* Creates a WeakRef instance for the given target object.
* @param target The target object for the WeakRef instance.
*/
new<T extends object>(target?: T): WeakRef<T>;
}
declare var WeakRef: WeakRefConstructor;
interface FinalizationRegistry {
readonly [Symbol.toStringTag]: 'FinalizationRegistry';
/**
* Registers an object with the registry.
* @param target The target object to register.
* @param heldValue The value to pass to the finalizer for this object. This cannot be the
* target object.
* @param unregisterToken The token to pass to the unregister method to unregister the target
* object. If provided (and not undefined), this must be an object. If not provided, the target
* cannot be unregistered.
*/
register(target: object, heldValue: any, unregisterToken?: object): void;
/**
* Unregisters an object from the registry.
* @param unregisterToken The token that was used as the unregisterToken argument when calling
* register to register the target object.
*/
unregister(unregisterToken: object): void;
}
interface FinalizationRegistryConstructor {
readonly prototype: FinalizationRegistry;
/**
* Creates a finalization registry with an associated cleanup callback
* @param cleanupCallback The callback to call after an object in the registry has been reclaimed.
*/
new(cleanupCallback: (heldValue: any) => void): FinalizationRegistry;
}
declare var FinalizationRegistry: FinalizationRegistryConstructor;

View file

@ -7997,10 +7997,10 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
typescript@^4.0.2: typescript@^4.1.3:
version "4.0.2" version "4.1.3"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.2.tgz#7ea7c88777c723c681e33bf7988be5d008d05ac2" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.3.tgz#519d582bd94cba0cf8934c7d8e8467e473f53bb7"
integrity sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ== integrity sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg==
uc.micro@^1.0.1, uc.micro@^1.0.5: uc.micro@^1.0.1, uc.micro@^1.0.5:
version "1.0.6" version "1.0.6"