├── .gitignore
├── LICENSE
├── README.md
├── local.html
├── local.js
├── local_preload.js
├── main.mjs
├── package-lock.json
├── package.json
├── tabbar.html
├── tabbar.js
└── tabbar_preload.js
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 Mamezou Co., LTD.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # electron-example-browserview
2 |
3 | Example of Electron app that registers and switches between multiple WebContentsViews.
4 |
5 | > [!Note]
6 | > This repository was originally meant to show examples using BrowserView, but since BrowserView has been deprecated in favor of WebContentsView as its replacement, it has now become a repository that shows examples using WebContentsView (even though it still has BrowserView in the repository name).
7 |
8 | ## To Use
9 |
10 | You need to install Git and Node.js as prerequisites.
11 |
12 | ```bash
13 | # Clone this repository
14 | git clone https://github.com/mamezou-tech/electron-example-browserview
15 | # Go into the repository
16 | cd electron-example-browserview
17 | # Install dependencies
18 | npm install
19 | # Run the app
20 | npm start
21 | ```
22 |
--------------------------------------------------------------------------------
/local.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
8 |
9 |
10 |
11 |
Local html page
12 |
13 | Switch to electronjs
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/local.js:
--------------------------------------------------------------------------------
1 | onload = () => {
2 | document.querySelector('#button1').addEventListener('click', e => {
3 | console.log("local js event");
4 | console.log(window.localApi.switchPage());
5 | });
6 | }
7 |
--------------------------------------------------------------------------------
/local_preload.js:
--------------------------------------------------------------------------------
1 | const { contextBridge, ipcRenderer } = require('electron');
2 |
3 | contextBridge.exposeInMainWorld(
4 | 'localApi', {
5 | switchPage: async () => {
6 | await ipcRenderer.invoke('switch-to-electronjs', 'switch');
7 | }
8 | }
9 | );
10 |
--------------------------------------------------------------------------------
/main.mjs:
--------------------------------------------------------------------------------
1 | import { app, WebContentsView, BaseWindow, Menu, ipcMain } from 'electron';
2 | import { fileURLToPath } from "node:url";
3 | import path from 'node:path';
4 | import { assert } from 'node:console';
5 |
6 | let mainWindow;
7 |
8 | const __filename = fileURLToPath(import.meta.url);
9 | const __dirname = path.dirname(__filename);
10 |
11 | function createWindow () {
12 | mainWindow = new BaseWindow({
13 | width: 800,
14 | height: 600,
15 | });
16 | const view = new WebContentsView({
17 | webPreferences: {
18 | preload: path.join(__dirname, 'tabbar_preload.js')
19 | }
20 | });
21 | view.webContents.loadFile('tabbar.html');
22 | mainWindow.contentView.addChildView(view);
23 | view.setBounds({ x: 0, y: 0, width: 800, height: 40 });
24 |
25 | view.webContents.on('did-finish-load', () => {
26 | // view.webContents.openDevTools({ mode: 'detach' });
27 | setupView('https://electronjs.org');
28 | setupViewLocal('local.html');
29 | });
30 |
31 | mainWindow.on('resize', () => {
32 | const views = mainWindow.contentView.children;
33 | assert(views.length === 3);
34 | resizeViews(views[1], views[2]);
35 | });
36 |
37 | createMenu();
38 | }
39 |
40 | function setupView(url) {
41 | const view = new WebContentsView();
42 | resizeViews(view);
43 | view.webContents.loadURL(url);
44 | mainWindow.contentView.addChildView(view);
45 | }
46 |
47 | function setupViewLocal(file) {
48 | const view = new WebContentsView({
49 | webPreferences: {
50 | preload: path.join(__dirname, 'local_preload.js')
51 | }
52 | });
53 | resizeViews(view);
54 | view.webContents.loadFile(file);
55 | view.setBackgroundColor('white');
56 | mainWindow.contentView.addChildView(view);
57 | // view.webContents.openDevTools({ mode: 'detach' });
58 | }
59 |
60 | function resizeViews(...views) {
61 | const bound = mainWindow.getBounds();
62 | const height = process.platform !== 'win32' ? 60 : 40
63 | views.forEach(view => view.setBounds({ x: 0, y: height, width: bound.width, height: bound.height - height }));
64 | }
65 |
66 | app.whenReady().then(() => {
67 | createWindow();
68 |
69 | app.on('activate', function () {
70 | if (mainWindow.contentView.children.length === 0) createWindow();
71 | });
72 | });
73 |
74 | app.on('window-all-closed', function () {
75 | if (process.platform !== 'darwin') app.quit();
76 | });
77 |
78 | function createMenu() {
79 | const template = [
80 | {
81 | label: 'View',
82 | submenu: [
83 | {
84 | label: 'open dev tool',
85 | click() {
86 | mainWindow.webContents.openDevTools({ mode: 'detach' });
87 | }
88 | },
89 | { role: 'quit' }
90 | ]
91 | }
92 | ];
93 | if (!app.isPackaged) {
94 | template.unshift({
95 | label: 'Debug',
96 | submenu: [
97 | { role: 'forceReload' }
98 | ]
99 | });
100 | }
101 | const menu = Menu.buildFromTemplate(template);
102 | Menu.setApplicationMenu(menu);
103 | }
104 |
105 | function switchView(url) {
106 | const views = mainWindow.contentView.children.filter(view => view.webContents.getURL().includes(url));
107 | console.assert(views.length === 1);
108 | setTopWebContentsView(views[0]);
109 | }
110 |
111 | function setTopWebContentsView(view) {
112 | mainWindow.contentView.removeChildView(view);
113 | mainWindow.contentView.addChildView(view);
114 | }
115 |
116 | ipcMain.handle('tab1', e => {
117 | console.log('tab1');
118 | switchView('electronjs');
119 | });
120 |
121 | ipcMain.handle('tab2', e => {
122 | console.log('tab2');
123 | switchView('local.html');
124 | });
125 |
126 | ipcMain.handle('switch-to-electronjs', (e, message) => {
127 | console.log('from local.mjs', message);
128 | switchView('electronjs');
129 | });
130 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "electron-example-browserview",
3 | "version": "0.1.0",
4 | "lockfileVersion": 2,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "electron-example-browserview",
9 | "version": "0.1.0",
10 | "license": "MIT",
11 | "devDependencies": {
12 | "electron": "^32.0.1"
13 | }
14 | },
15 | "node_modules/@electron/get": {
16 | "version": "2.0.2",
17 | "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.2.tgz",
18 | "integrity": "sha512-eFZVFoRXb3GFGd7Ak7W4+6jBl9wBtiZ4AaYOse97ej6mKj5tkyO0dUnUChs1IhJZtx1BENo4/p4WUTXpi6vT+g==",
19 | "dev": true,
20 | "dependencies": {
21 | "debug": "^4.1.1",
22 | "env-paths": "^2.2.0",
23 | "fs-extra": "^8.1.0",
24 | "got": "^11.8.5",
25 | "progress": "^2.0.3",
26 | "semver": "^6.2.0",
27 | "sumchecker": "^3.0.1"
28 | },
29 | "engines": {
30 | "node": ">=12"
31 | },
32 | "optionalDependencies": {
33 | "global-agent": "^3.0.0"
34 | }
35 | },
36 | "node_modules/@sindresorhus/is": {
37 | "version": "4.6.0",
38 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz",
39 | "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==",
40 | "dev": true,
41 | "engines": {
42 | "node": ">=10"
43 | },
44 | "funding": {
45 | "url": "https://github.com/sindresorhus/is?sponsor=1"
46 | }
47 | },
48 | "node_modules/@szmarczak/http-timer": {
49 | "version": "4.0.6",
50 | "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz",
51 | "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==",
52 | "dev": true,
53 | "dependencies": {
54 | "defer-to-connect": "^2.0.0"
55 | },
56 | "engines": {
57 | "node": ">=10"
58 | }
59 | },
60 | "node_modules/@types/cacheable-request": {
61 | "version": "6.0.3",
62 | "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz",
63 | "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==",
64 | "dev": true,
65 | "dependencies": {
66 | "@types/http-cache-semantics": "*",
67 | "@types/keyv": "^3.1.4",
68 | "@types/node": "*",
69 | "@types/responselike": "^1.0.0"
70 | }
71 | },
72 | "node_modules/@types/http-cache-semantics": {
73 | "version": "4.0.1",
74 | "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz",
75 | "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==",
76 | "dev": true
77 | },
78 | "node_modules/@types/keyv": {
79 | "version": "3.1.4",
80 | "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz",
81 | "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==",
82 | "dev": true,
83 | "dependencies": {
84 | "@types/node": "*"
85 | }
86 | },
87 | "node_modules/@types/node": {
88 | "version": "20.16.1",
89 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.1.tgz",
90 | "integrity": "sha512-zJDo7wEadFtSyNz5QITDfRcrhqDvQI1xQNQ0VoizPjM/dVAODqqIUWbJPkvsxmTI0MYRGRikcdjMPhOssnPejQ==",
91 | "dev": true,
92 | "license": "MIT",
93 | "dependencies": {
94 | "undici-types": "~6.19.2"
95 | }
96 | },
97 | "node_modules/@types/responselike": {
98 | "version": "1.0.0",
99 | "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz",
100 | "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==",
101 | "dev": true,
102 | "dependencies": {
103 | "@types/node": "*"
104 | }
105 | },
106 | "node_modules/@types/yauzl": {
107 | "version": "2.10.0",
108 | "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz",
109 | "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==",
110 | "dev": true,
111 | "optional": true,
112 | "dependencies": {
113 | "@types/node": "*"
114 | }
115 | },
116 | "node_modules/boolean": {
117 | "version": "3.2.0",
118 | "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz",
119 | "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==",
120 | "dev": true,
121 | "optional": true
122 | },
123 | "node_modules/buffer-crc32": {
124 | "version": "0.2.13",
125 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
126 | "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
127 | "dev": true,
128 | "engines": {
129 | "node": "*"
130 | }
131 | },
132 | "node_modules/cacheable-lookup": {
133 | "version": "5.0.4",
134 | "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz",
135 | "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==",
136 | "dev": true,
137 | "engines": {
138 | "node": ">=10.6.0"
139 | }
140 | },
141 | "node_modules/cacheable-request": {
142 | "version": "7.0.2",
143 | "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz",
144 | "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==",
145 | "dev": true,
146 | "dependencies": {
147 | "clone-response": "^1.0.2",
148 | "get-stream": "^5.1.0",
149 | "http-cache-semantics": "^4.0.0",
150 | "keyv": "^4.0.0",
151 | "lowercase-keys": "^2.0.0",
152 | "normalize-url": "^6.0.1",
153 | "responselike": "^2.0.0"
154 | },
155 | "engines": {
156 | "node": ">=8"
157 | }
158 | },
159 | "node_modules/clone-response": {
160 | "version": "1.0.3",
161 | "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz",
162 | "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==",
163 | "dev": true,
164 | "dependencies": {
165 | "mimic-response": "^1.0.0"
166 | },
167 | "funding": {
168 | "url": "https://github.com/sponsors/sindresorhus"
169 | }
170 | },
171 | "node_modules/debug": {
172 | "version": "4.3.4",
173 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
174 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
175 | "dev": true,
176 | "dependencies": {
177 | "ms": "2.1.2"
178 | },
179 | "engines": {
180 | "node": ">=6.0"
181 | },
182 | "peerDependenciesMeta": {
183 | "supports-color": {
184 | "optional": true
185 | }
186 | }
187 | },
188 | "node_modules/decompress-response": {
189 | "version": "6.0.0",
190 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
191 | "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
192 | "dev": true,
193 | "dependencies": {
194 | "mimic-response": "^3.1.0"
195 | },
196 | "engines": {
197 | "node": ">=10"
198 | },
199 | "funding": {
200 | "url": "https://github.com/sponsors/sindresorhus"
201 | }
202 | },
203 | "node_modules/decompress-response/node_modules/mimic-response": {
204 | "version": "3.1.0",
205 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
206 | "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
207 | "dev": true,
208 | "engines": {
209 | "node": ">=10"
210 | },
211 | "funding": {
212 | "url": "https://github.com/sponsors/sindresorhus"
213 | }
214 | },
215 | "node_modules/defer-to-connect": {
216 | "version": "2.0.1",
217 | "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
218 | "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
219 | "dev": true,
220 | "engines": {
221 | "node": ">=10"
222 | }
223 | },
224 | "node_modules/define-properties": {
225 | "version": "1.2.0",
226 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz",
227 | "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==",
228 | "dev": true,
229 | "optional": true,
230 | "dependencies": {
231 | "has-property-descriptors": "^1.0.0",
232 | "object-keys": "^1.1.1"
233 | },
234 | "engines": {
235 | "node": ">= 0.4"
236 | },
237 | "funding": {
238 | "url": "https://github.com/sponsors/ljharb"
239 | }
240 | },
241 | "node_modules/detect-node": {
242 | "version": "2.1.0",
243 | "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
244 | "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==",
245 | "dev": true,
246 | "optional": true
247 | },
248 | "node_modules/electron": {
249 | "version": "32.0.1",
250 | "resolved": "https://registry.npmjs.org/electron/-/electron-32.0.1.tgz",
251 | "integrity": "sha512-5Hd5Jaf9niYVR2hZxoRd3gOrcxPOxQV1XPV5WaoSfT9jLJHFadhlKtuSDIk3U6rQZke+aC7GqPPAv55nWFCMsA==",
252 | "dev": true,
253 | "hasInstallScript": true,
254 | "license": "MIT",
255 | "dependencies": {
256 | "@electron/get": "^2.0.0",
257 | "@types/node": "^20.9.0",
258 | "extract-zip": "^2.0.1"
259 | },
260 | "bin": {
261 | "electron": "cli.js"
262 | },
263 | "engines": {
264 | "node": ">= 12.20.55"
265 | }
266 | },
267 | "node_modules/end-of-stream": {
268 | "version": "1.4.4",
269 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
270 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
271 | "dev": true,
272 | "dependencies": {
273 | "once": "^1.4.0"
274 | }
275 | },
276 | "node_modules/env-paths": {
277 | "version": "2.2.1",
278 | "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
279 | "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
280 | "dev": true,
281 | "engines": {
282 | "node": ">=6"
283 | }
284 | },
285 | "node_modules/es6-error": {
286 | "version": "4.1.1",
287 | "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
288 | "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==",
289 | "dev": true,
290 | "optional": true
291 | },
292 | "node_modules/escape-string-regexp": {
293 | "version": "4.0.0",
294 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
295 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
296 | "dev": true,
297 | "optional": true,
298 | "engines": {
299 | "node": ">=10"
300 | },
301 | "funding": {
302 | "url": "https://github.com/sponsors/sindresorhus"
303 | }
304 | },
305 | "node_modules/extract-zip": {
306 | "version": "2.0.1",
307 | "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
308 | "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
309 | "dev": true,
310 | "dependencies": {
311 | "debug": "^4.1.1",
312 | "get-stream": "^5.1.0",
313 | "yauzl": "^2.10.0"
314 | },
315 | "bin": {
316 | "extract-zip": "cli.js"
317 | },
318 | "engines": {
319 | "node": ">= 10.17.0"
320 | },
321 | "optionalDependencies": {
322 | "@types/yauzl": "^2.9.1"
323 | }
324 | },
325 | "node_modules/fd-slicer": {
326 | "version": "1.1.0",
327 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
328 | "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
329 | "dev": true,
330 | "dependencies": {
331 | "pend": "~1.2.0"
332 | }
333 | },
334 | "node_modules/fs-extra": {
335 | "version": "8.1.0",
336 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
337 | "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
338 | "dev": true,
339 | "dependencies": {
340 | "graceful-fs": "^4.2.0",
341 | "jsonfile": "^4.0.0",
342 | "universalify": "^0.1.0"
343 | },
344 | "engines": {
345 | "node": ">=6 <7 || >=8"
346 | }
347 | },
348 | "node_modules/function-bind": {
349 | "version": "1.1.1",
350 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
351 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
352 | "dev": true,
353 | "optional": true
354 | },
355 | "node_modules/get-intrinsic": {
356 | "version": "1.2.0",
357 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
358 | "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
359 | "dev": true,
360 | "optional": true,
361 | "dependencies": {
362 | "function-bind": "^1.1.1",
363 | "has": "^1.0.3",
364 | "has-symbols": "^1.0.3"
365 | },
366 | "funding": {
367 | "url": "https://github.com/sponsors/ljharb"
368 | }
369 | },
370 | "node_modules/get-stream": {
371 | "version": "5.2.0",
372 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
373 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
374 | "dev": true,
375 | "dependencies": {
376 | "pump": "^3.0.0"
377 | },
378 | "engines": {
379 | "node": ">=8"
380 | },
381 | "funding": {
382 | "url": "https://github.com/sponsors/sindresorhus"
383 | }
384 | },
385 | "node_modules/global-agent": {
386 | "version": "3.0.0",
387 | "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz",
388 | "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==",
389 | "dev": true,
390 | "optional": true,
391 | "dependencies": {
392 | "boolean": "^3.0.1",
393 | "es6-error": "^4.1.1",
394 | "matcher": "^3.0.0",
395 | "roarr": "^2.15.3",
396 | "semver": "^7.3.2",
397 | "serialize-error": "^7.0.1"
398 | },
399 | "engines": {
400 | "node": ">=10.0"
401 | }
402 | },
403 | "node_modules/global-agent/node_modules/semver": {
404 | "version": "7.3.8",
405 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
406 | "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
407 | "dev": true,
408 | "optional": true,
409 | "dependencies": {
410 | "lru-cache": "^6.0.0"
411 | },
412 | "bin": {
413 | "semver": "bin/semver.js"
414 | },
415 | "engines": {
416 | "node": ">=10"
417 | }
418 | },
419 | "node_modules/globalthis": {
420 | "version": "1.0.3",
421 | "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
422 | "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
423 | "dev": true,
424 | "optional": true,
425 | "dependencies": {
426 | "define-properties": "^1.1.3"
427 | },
428 | "engines": {
429 | "node": ">= 0.4"
430 | },
431 | "funding": {
432 | "url": "https://github.com/sponsors/ljharb"
433 | }
434 | },
435 | "node_modules/got": {
436 | "version": "11.8.6",
437 | "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz",
438 | "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==",
439 | "dev": true,
440 | "dependencies": {
441 | "@sindresorhus/is": "^4.0.0",
442 | "@szmarczak/http-timer": "^4.0.5",
443 | "@types/cacheable-request": "^6.0.1",
444 | "@types/responselike": "^1.0.0",
445 | "cacheable-lookup": "^5.0.3",
446 | "cacheable-request": "^7.0.2",
447 | "decompress-response": "^6.0.0",
448 | "http2-wrapper": "^1.0.0-beta.5.2",
449 | "lowercase-keys": "^2.0.0",
450 | "p-cancelable": "^2.0.0",
451 | "responselike": "^2.0.0"
452 | },
453 | "engines": {
454 | "node": ">=10.19.0"
455 | },
456 | "funding": {
457 | "url": "https://github.com/sindresorhus/got?sponsor=1"
458 | }
459 | },
460 | "node_modules/graceful-fs": {
461 | "version": "4.2.11",
462 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
463 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
464 | "dev": true
465 | },
466 | "node_modules/has": {
467 | "version": "1.0.3",
468 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
469 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
470 | "dev": true,
471 | "optional": true,
472 | "dependencies": {
473 | "function-bind": "^1.1.1"
474 | },
475 | "engines": {
476 | "node": ">= 0.4.0"
477 | }
478 | },
479 | "node_modules/has-property-descriptors": {
480 | "version": "1.0.0",
481 | "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
482 | "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
483 | "dev": true,
484 | "optional": true,
485 | "dependencies": {
486 | "get-intrinsic": "^1.1.1"
487 | },
488 | "funding": {
489 | "url": "https://github.com/sponsors/ljharb"
490 | }
491 | },
492 | "node_modules/has-symbols": {
493 | "version": "1.0.3",
494 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
495 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
496 | "dev": true,
497 | "optional": true,
498 | "engines": {
499 | "node": ">= 0.4"
500 | },
501 | "funding": {
502 | "url": "https://github.com/sponsors/ljharb"
503 | }
504 | },
505 | "node_modules/http-cache-semantics": {
506 | "version": "4.1.1",
507 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
508 | "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==",
509 | "dev": true
510 | },
511 | "node_modules/http2-wrapper": {
512 | "version": "1.0.3",
513 | "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz",
514 | "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==",
515 | "dev": true,
516 | "dependencies": {
517 | "quick-lru": "^5.1.1",
518 | "resolve-alpn": "^1.0.0"
519 | },
520 | "engines": {
521 | "node": ">=10.19.0"
522 | }
523 | },
524 | "node_modules/json-buffer": {
525 | "version": "3.0.1",
526 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
527 | "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
528 | "dev": true
529 | },
530 | "node_modules/json-stringify-safe": {
531 | "version": "5.0.1",
532 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
533 | "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
534 | "dev": true,
535 | "optional": true
536 | },
537 | "node_modules/jsonfile": {
538 | "version": "4.0.0",
539 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
540 | "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
541 | "dev": true,
542 | "optionalDependencies": {
543 | "graceful-fs": "^4.1.6"
544 | }
545 | },
546 | "node_modules/keyv": {
547 | "version": "4.5.2",
548 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz",
549 | "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==",
550 | "dev": true,
551 | "dependencies": {
552 | "json-buffer": "3.0.1"
553 | }
554 | },
555 | "node_modules/lowercase-keys": {
556 | "version": "2.0.0",
557 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
558 | "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
559 | "dev": true,
560 | "engines": {
561 | "node": ">=8"
562 | }
563 | },
564 | "node_modules/lru-cache": {
565 | "version": "6.0.0",
566 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
567 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
568 | "dev": true,
569 | "optional": true,
570 | "dependencies": {
571 | "yallist": "^4.0.0"
572 | },
573 | "engines": {
574 | "node": ">=10"
575 | }
576 | },
577 | "node_modules/matcher": {
578 | "version": "3.0.0",
579 | "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz",
580 | "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==",
581 | "dev": true,
582 | "optional": true,
583 | "dependencies": {
584 | "escape-string-regexp": "^4.0.0"
585 | },
586 | "engines": {
587 | "node": ">=10"
588 | }
589 | },
590 | "node_modules/mimic-response": {
591 | "version": "1.0.1",
592 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
593 | "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
594 | "dev": true,
595 | "engines": {
596 | "node": ">=4"
597 | }
598 | },
599 | "node_modules/ms": {
600 | "version": "2.1.2",
601 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
602 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
603 | "dev": true
604 | },
605 | "node_modules/normalize-url": {
606 | "version": "6.1.0",
607 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
608 | "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
609 | "dev": true,
610 | "engines": {
611 | "node": ">=10"
612 | },
613 | "funding": {
614 | "url": "https://github.com/sponsors/sindresorhus"
615 | }
616 | },
617 | "node_modules/object-keys": {
618 | "version": "1.1.1",
619 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
620 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
621 | "dev": true,
622 | "optional": true,
623 | "engines": {
624 | "node": ">= 0.4"
625 | }
626 | },
627 | "node_modules/once": {
628 | "version": "1.4.0",
629 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
630 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
631 | "dev": true,
632 | "dependencies": {
633 | "wrappy": "1"
634 | }
635 | },
636 | "node_modules/p-cancelable": {
637 | "version": "2.1.1",
638 | "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz",
639 | "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==",
640 | "dev": true,
641 | "engines": {
642 | "node": ">=8"
643 | }
644 | },
645 | "node_modules/pend": {
646 | "version": "1.2.0",
647 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
648 | "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
649 | "dev": true
650 | },
651 | "node_modules/progress": {
652 | "version": "2.0.3",
653 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
654 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
655 | "dev": true,
656 | "engines": {
657 | "node": ">=0.4.0"
658 | }
659 | },
660 | "node_modules/pump": {
661 | "version": "3.0.0",
662 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
663 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
664 | "dev": true,
665 | "dependencies": {
666 | "end-of-stream": "^1.1.0",
667 | "once": "^1.3.1"
668 | }
669 | },
670 | "node_modules/quick-lru": {
671 | "version": "5.1.1",
672 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
673 | "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
674 | "dev": true,
675 | "engines": {
676 | "node": ">=10"
677 | },
678 | "funding": {
679 | "url": "https://github.com/sponsors/sindresorhus"
680 | }
681 | },
682 | "node_modules/resolve-alpn": {
683 | "version": "1.2.1",
684 | "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz",
685 | "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==",
686 | "dev": true
687 | },
688 | "node_modules/responselike": {
689 | "version": "2.0.1",
690 | "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz",
691 | "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==",
692 | "dev": true,
693 | "dependencies": {
694 | "lowercase-keys": "^2.0.0"
695 | },
696 | "funding": {
697 | "url": "https://github.com/sponsors/sindresorhus"
698 | }
699 | },
700 | "node_modules/roarr": {
701 | "version": "2.15.4",
702 | "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz",
703 | "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==",
704 | "dev": true,
705 | "optional": true,
706 | "dependencies": {
707 | "boolean": "^3.0.1",
708 | "detect-node": "^2.0.4",
709 | "globalthis": "^1.0.1",
710 | "json-stringify-safe": "^5.0.1",
711 | "semver-compare": "^1.0.0",
712 | "sprintf-js": "^1.1.2"
713 | },
714 | "engines": {
715 | "node": ">=8.0"
716 | }
717 | },
718 | "node_modules/semver": {
719 | "version": "6.3.0",
720 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
721 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
722 | "dev": true,
723 | "bin": {
724 | "semver": "bin/semver.js"
725 | }
726 | },
727 | "node_modules/semver-compare": {
728 | "version": "1.0.0",
729 | "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
730 | "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==",
731 | "dev": true,
732 | "optional": true
733 | },
734 | "node_modules/serialize-error": {
735 | "version": "7.0.1",
736 | "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz",
737 | "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==",
738 | "dev": true,
739 | "optional": true,
740 | "dependencies": {
741 | "type-fest": "^0.13.1"
742 | },
743 | "engines": {
744 | "node": ">=10"
745 | },
746 | "funding": {
747 | "url": "https://github.com/sponsors/sindresorhus"
748 | }
749 | },
750 | "node_modules/sprintf-js": {
751 | "version": "1.1.2",
752 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
753 | "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==",
754 | "dev": true,
755 | "optional": true
756 | },
757 | "node_modules/sumchecker": {
758 | "version": "3.0.1",
759 | "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz",
760 | "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==",
761 | "dev": true,
762 | "dependencies": {
763 | "debug": "^4.1.0"
764 | },
765 | "engines": {
766 | "node": ">= 8.0"
767 | }
768 | },
769 | "node_modules/type-fest": {
770 | "version": "0.13.1",
771 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz",
772 | "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==",
773 | "dev": true,
774 | "optional": true,
775 | "engines": {
776 | "node": ">=10"
777 | },
778 | "funding": {
779 | "url": "https://github.com/sponsors/sindresorhus"
780 | }
781 | },
782 | "node_modules/undici-types": {
783 | "version": "6.19.8",
784 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
785 | "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
786 | "dev": true,
787 | "license": "MIT"
788 | },
789 | "node_modules/universalify": {
790 | "version": "0.1.2",
791 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
792 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
793 | "dev": true,
794 | "engines": {
795 | "node": ">= 4.0.0"
796 | }
797 | },
798 | "node_modules/wrappy": {
799 | "version": "1.0.2",
800 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
801 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
802 | "dev": true
803 | },
804 | "node_modules/yallist": {
805 | "version": "4.0.0",
806 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
807 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
808 | "dev": true,
809 | "optional": true
810 | },
811 | "node_modules/yauzl": {
812 | "version": "2.10.0",
813 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
814 | "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
815 | "dev": true,
816 | "dependencies": {
817 | "buffer-crc32": "~0.2.3",
818 | "fd-slicer": "~1.1.0"
819 | }
820 | }
821 | },
822 | "dependencies": {
823 | "@electron/get": {
824 | "version": "2.0.2",
825 | "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.2.tgz",
826 | "integrity": "sha512-eFZVFoRXb3GFGd7Ak7W4+6jBl9wBtiZ4AaYOse97ej6mKj5tkyO0dUnUChs1IhJZtx1BENo4/p4WUTXpi6vT+g==",
827 | "dev": true,
828 | "requires": {
829 | "debug": "^4.1.1",
830 | "env-paths": "^2.2.0",
831 | "fs-extra": "^8.1.0",
832 | "global-agent": "^3.0.0",
833 | "got": "^11.8.5",
834 | "progress": "^2.0.3",
835 | "semver": "^6.2.0",
836 | "sumchecker": "^3.0.1"
837 | }
838 | },
839 | "@sindresorhus/is": {
840 | "version": "4.6.0",
841 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz",
842 | "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==",
843 | "dev": true
844 | },
845 | "@szmarczak/http-timer": {
846 | "version": "4.0.6",
847 | "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz",
848 | "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==",
849 | "dev": true,
850 | "requires": {
851 | "defer-to-connect": "^2.0.0"
852 | }
853 | },
854 | "@types/cacheable-request": {
855 | "version": "6.0.3",
856 | "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz",
857 | "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==",
858 | "dev": true,
859 | "requires": {
860 | "@types/http-cache-semantics": "*",
861 | "@types/keyv": "^3.1.4",
862 | "@types/node": "*",
863 | "@types/responselike": "^1.0.0"
864 | }
865 | },
866 | "@types/http-cache-semantics": {
867 | "version": "4.0.1",
868 | "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz",
869 | "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==",
870 | "dev": true
871 | },
872 | "@types/keyv": {
873 | "version": "3.1.4",
874 | "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz",
875 | "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==",
876 | "dev": true,
877 | "requires": {
878 | "@types/node": "*"
879 | }
880 | },
881 | "@types/node": {
882 | "version": "20.16.1",
883 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.1.tgz",
884 | "integrity": "sha512-zJDo7wEadFtSyNz5QITDfRcrhqDvQI1xQNQ0VoizPjM/dVAODqqIUWbJPkvsxmTI0MYRGRikcdjMPhOssnPejQ==",
885 | "dev": true,
886 | "requires": {
887 | "undici-types": "~6.19.2"
888 | }
889 | },
890 | "@types/responselike": {
891 | "version": "1.0.0",
892 | "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz",
893 | "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==",
894 | "dev": true,
895 | "requires": {
896 | "@types/node": "*"
897 | }
898 | },
899 | "@types/yauzl": {
900 | "version": "2.10.0",
901 | "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz",
902 | "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==",
903 | "dev": true,
904 | "optional": true,
905 | "requires": {
906 | "@types/node": "*"
907 | }
908 | },
909 | "boolean": {
910 | "version": "3.2.0",
911 | "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz",
912 | "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==",
913 | "dev": true,
914 | "optional": true
915 | },
916 | "buffer-crc32": {
917 | "version": "0.2.13",
918 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
919 | "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
920 | "dev": true
921 | },
922 | "cacheable-lookup": {
923 | "version": "5.0.4",
924 | "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz",
925 | "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==",
926 | "dev": true
927 | },
928 | "cacheable-request": {
929 | "version": "7.0.2",
930 | "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz",
931 | "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==",
932 | "dev": true,
933 | "requires": {
934 | "clone-response": "^1.0.2",
935 | "get-stream": "^5.1.0",
936 | "http-cache-semantics": "^4.0.0",
937 | "keyv": "^4.0.0",
938 | "lowercase-keys": "^2.0.0",
939 | "normalize-url": "^6.0.1",
940 | "responselike": "^2.0.0"
941 | }
942 | },
943 | "clone-response": {
944 | "version": "1.0.3",
945 | "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz",
946 | "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==",
947 | "dev": true,
948 | "requires": {
949 | "mimic-response": "^1.0.0"
950 | }
951 | },
952 | "debug": {
953 | "version": "4.3.4",
954 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
955 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
956 | "dev": true,
957 | "requires": {
958 | "ms": "2.1.2"
959 | }
960 | },
961 | "decompress-response": {
962 | "version": "6.0.0",
963 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
964 | "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
965 | "dev": true,
966 | "requires": {
967 | "mimic-response": "^3.1.0"
968 | },
969 | "dependencies": {
970 | "mimic-response": {
971 | "version": "3.1.0",
972 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
973 | "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
974 | "dev": true
975 | }
976 | }
977 | },
978 | "defer-to-connect": {
979 | "version": "2.0.1",
980 | "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
981 | "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
982 | "dev": true
983 | },
984 | "define-properties": {
985 | "version": "1.2.0",
986 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz",
987 | "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==",
988 | "dev": true,
989 | "optional": true,
990 | "requires": {
991 | "has-property-descriptors": "^1.0.0",
992 | "object-keys": "^1.1.1"
993 | }
994 | },
995 | "detect-node": {
996 | "version": "2.1.0",
997 | "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
998 | "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==",
999 | "dev": true,
1000 | "optional": true
1001 | },
1002 | "electron": {
1003 | "version": "32.0.1",
1004 | "resolved": "https://registry.npmjs.org/electron/-/electron-32.0.1.tgz",
1005 | "integrity": "sha512-5Hd5Jaf9niYVR2hZxoRd3gOrcxPOxQV1XPV5WaoSfT9jLJHFadhlKtuSDIk3U6rQZke+aC7GqPPAv55nWFCMsA==",
1006 | "dev": true,
1007 | "requires": {
1008 | "@electron/get": "^2.0.0",
1009 | "@types/node": "^20.9.0",
1010 | "extract-zip": "^2.0.1"
1011 | }
1012 | },
1013 | "end-of-stream": {
1014 | "version": "1.4.4",
1015 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
1016 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
1017 | "dev": true,
1018 | "requires": {
1019 | "once": "^1.4.0"
1020 | }
1021 | },
1022 | "env-paths": {
1023 | "version": "2.2.1",
1024 | "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
1025 | "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
1026 | "dev": true
1027 | },
1028 | "es6-error": {
1029 | "version": "4.1.1",
1030 | "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
1031 | "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==",
1032 | "dev": true,
1033 | "optional": true
1034 | },
1035 | "escape-string-regexp": {
1036 | "version": "4.0.0",
1037 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
1038 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
1039 | "dev": true,
1040 | "optional": true
1041 | },
1042 | "extract-zip": {
1043 | "version": "2.0.1",
1044 | "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
1045 | "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
1046 | "dev": true,
1047 | "requires": {
1048 | "@types/yauzl": "^2.9.1",
1049 | "debug": "^4.1.1",
1050 | "get-stream": "^5.1.0",
1051 | "yauzl": "^2.10.0"
1052 | }
1053 | },
1054 | "fd-slicer": {
1055 | "version": "1.1.0",
1056 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
1057 | "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
1058 | "dev": true,
1059 | "requires": {
1060 | "pend": "~1.2.0"
1061 | }
1062 | },
1063 | "fs-extra": {
1064 | "version": "8.1.0",
1065 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
1066 | "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
1067 | "dev": true,
1068 | "requires": {
1069 | "graceful-fs": "^4.2.0",
1070 | "jsonfile": "^4.0.0",
1071 | "universalify": "^0.1.0"
1072 | }
1073 | },
1074 | "function-bind": {
1075 | "version": "1.1.1",
1076 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
1077 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
1078 | "dev": true,
1079 | "optional": true
1080 | },
1081 | "get-intrinsic": {
1082 | "version": "1.2.0",
1083 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
1084 | "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
1085 | "dev": true,
1086 | "optional": true,
1087 | "requires": {
1088 | "function-bind": "^1.1.1",
1089 | "has": "^1.0.3",
1090 | "has-symbols": "^1.0.3"
1091 | }
1092 | },
1093 | "get-stream": {
1094 | "version": "5.2.0",
1095 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
1096 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
1097 | "dev": true,
1098 | "requires": {
1099 | "pump": "^3.0.0"
1100 | }
1101 | },
1102 | "global-agent": {
1103 | "version": "3.0.0",
1104 | "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz",
1105 | "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==",
1106 | "dev": true,
1107 | "optional": true,
1108 | "requires": {
1109 | "boolean": "^3.0.1",
1110 | "es6-error": "^4.1.1",
1111 | "matcher": "^3.0.0",
1112 | "roarr": "^2.15.3",
1113 | "semver": "^7.3.2",
1114 | "serialize-error": "^7.0.1"
1115 | },
1116 | "dependencies": {
1117 | "semver": {
1118 | "version": "7.3.8",
1119 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
1120 | "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
1121 | "dev": true,
1122 | "optional": true,
1123 | "requires": {
1124 | "lru-cache": "^6.0.0"
1125 | }
1126 | }
1127 | }
1128 | },
1129 | "globalthis": {
1130 | "version": "1.0.3",
1131 | "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
1132 | "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
1133 | "dev": true,
1134 | "optional": true,
1135 | "requires": {
1136 | "define-properties": "^1.1.3"
1137 | }
1138 | },
1139 | "got": {
1140 | "version": "11.8.6",
1141 | "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz",
1142 | "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==",
1143 | "dev": true,
1144 | "requires": {
1145 | "@sindresorhus/is": "^4.0.0",
1146 | "@szmarczak/http-timer": "^4.0.5",
1147 | "@types/cacheable-request": "^6.0.1",
1148 | "@types/responselike": "^1.0.0",
1149 | "cacheable-lookup": "^5.0.3",
1150 | "cacheable-request": "^7.0.2",
1151 | "decompress-response": "^6.0.0",
1152 | "http2-wrapper": "^1.0.0-beta.5.2",
1153 | "lowercase-keys": "^2.0.0",
1154 | "p-cancelable": "^2.0.0",
1155 | "responselike": "^2.0.0"
1156 | }
1157 | },
1158 | "graceful-fs": {
1159 | "version": "4.2.11",
1160 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
1161 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
1162 | "dev": true
1163 | },
1164 | "has": {
1165 | "version": "1.0.3",
1166 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
1167 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
1168 | "dev": true,
1169 | "optional": true,
1170 | "requires": {
1171 | "function-bind": "^1.1.1"
1172 | }
1173 | },
1174 | "has-property-descriptors": {
1175 | "version": "1.0.0",
1176 | "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
1177 | "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
1178 | "dev": true,
1179 | "optional": true,
1180 | "requires": {
1181 | "get-intrinsic": "^1.1.1"
1182 | }
1183 | },
1184 | "has-symbols": {
1185 | "version": "1.0.3",
1186 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
1187 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
1188 | "dev": true,
1189 | "optional": true
1190 | },
1191 | "http-cache-semantics": {
1192 | "version": "4.1.1",
1193 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
1194 | "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==",
1195 | "dev": true
1196 | },
1197 | "http2-wrapper": {
1198 | "version": "1.0.3",
1199 | "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz",
1200 | "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==",
1201 | "dev": true,
1202 | "requires": {
1203 | "quick-lru": "^5.1.1",
1204 | "resolve-alpn": "^1.0.0"
1205 | }
1206 | },
1207 | "json-buffer": {
1208 | "version": "3.0.1",
1209 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
1210 | "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
1211 | "dev": true
1212 | },
1213 | "json-stringify-safe": {
1214 | "version": "5.0.1",
1215 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
1216 | "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
1217 | "dev": true,
1218 | "optional": true
1219 | },
1220 | "jsonfile": {
1221 | "version": "4.0.0",
1222 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
1223 | "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
1224 | "dev": true,
1225 | "requires": {
1226 | "graceful-fs": "^4.1.6"
1227 | }
1228 | },
1229 | "keyv": {
1230 | "version": "4.5.2",
1231 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz",
1232 | "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==",
1233 | "dev": true,
1234 | "requires": {
1235 | "json-buffer": "3.0.1"
1236 | }
1237 | },
1238 | "lowercase-keys": {
1239 | "version": "2.0.0",
1240 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
1241 | "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
1242 | "dev": true
1243 | },
1244 | "lru-cache": {
1245 | "version": "6.0.0",
1246 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
1247 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
1248 | "dev": true,
1249 | "optional": true,
1250 | "requires": {
1251 | "yallist": "^4.0.0"
1252 | }
1253 | },
1254 | "matcher": {
1255 | "version": "3.0.0",
1256 | "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz",
1257 | "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==",
1258 | "dev": true,
1259 | "optional": true,
1260 | "requires": {
1261 | "escape-string-regexp": "^4.0.0"
1262 | }
1263 | },
1264 | "mimic-response": {
1265 | "version": "1.0.1",
1266 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
1267 | "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
1268 | "dev": true
1269 | },
1270 | "ms": {
1271 | "version": "2.1.2",
1272 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1273 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
1274 | "dev": true
1275 | },
1276 | "normalize-url": {
1277 | "version": "6.1.0",
1278 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
1279 | "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
1280 | "dev": true
1281 | },
1282 | "object-keys": {
1283 | "version": "1.1.1",
1284 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
1285 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
1286 | "dev": true,
1287 | "optional": true
1288 | },
1289 | "once": {
1290 | "version": "1.4.0",
1291 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1292 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
1293 | "dev": true,
1294 | "requires": {
1295 | "wrappy": "1"
1296 | }
1297 | },
1298 | "p-cancelable": {
1299 | "version": "2.1.1",
1300 | "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz",
1301 | "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==",
1302 | "dev": true
1303 | },
1304 | "pend": {
1305 | "version": "1.2.0",
1306 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
1307 | "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
1308 | "dev": true
1309 | },
1310 | "progress": {
1311 | "version": "2.0.3",
1312 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
1313 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
1314 | "dev": true
1315 | },
1316 | "pump": {
1317 | "version": "3.0.0",
1318 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
1319 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
1320 | "dev": true,
1321 | "requires": {
1322 | "end-of-stream": "^1.1.0",
1323 | "once": "^1.3.1"
1324 | }
1325 | },
1326 | "quick-lru": {
1327 | "version": "5.1.1",
1328 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
1329 | "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
1330 | "dev": true
1331 | },
1332 | "resolve-alpn": {
1333 | "version": "1.2.1",
1334 | "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz",
1335 | "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==",
1336 | "dev": true
1337 | },
1338 | "responselike": {
1339 | "version": "2.0.1",
1340 | "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz",
1341 | "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==",
1342 | "dev": true,
1343 | "requires": {
1344 | "lowercase-keys": "^2.0.0"
1345 | }
1346 | },
1347 | "roarr": {
1348 | "version": "2.15.4",
1349 | "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz",
1350 | "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==",
1351 | "dev": true,
1352 | "optional": true,
1353 | "requires": {
1354 | "boolean": "^3.0.1",
1355 | "detect-node": "^2.0.4",
1356 | "globalthis": "^1.0.1",
1357 | "json-stringify-safe": "^5.0.1",
1358 | "semver-compare": "^1.0.0",
1359 | "sprintf-js": "^1.1.2"
1360 | }
1361 | },
1362 | "semver": {
1363 | "version": "6.3.0",
1364 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
1365 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
1366 | "dev": true
1367 | },
1368 | "semver-compare": {
1369 | "version": "1.0.0",
1370 | "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
1371 | "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==",
1372 | "dev": true,
1373 | "optional": true
1374 | },
1375 | "serialize-error": {
1376 | "version": "7.0.1",
1377 | "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz",
1378 | "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==",
1379 | "dev": true,
1380 | "optional": true,
1381 | "requires": {
1382 | "type-fest": "^0.13.1"
1383 | }
1384 | },
1385 | "sprintf-js": {
1386 | "version": "1.1.2",
1387 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
1388 | "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==",
1389 | "dev": true,
1390 | "optional": true
1391 | },
1392 | "sumchecker": {
1393 | "version": "3.0.1",
1394 | "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz",
1395 | "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==",
1396 | "dev": true,
1397 | "requires": {
1398 | "debug": "^4.1.0"
1399 | }
1400 | },
1401 | "type-fest": {
1402 | "version": "0.13.1",
1403 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz",
1404 | "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==",
1405 | "dev": true,
1406 | "optional": true
1407 | },
1408 | "undici-types": {
1409 | "version": "6.19.8",
1410 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
1411 | "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
1412 | "dev": true
1413 | },
1414 | "universalify": {
1415 | "version": "0.1.2",
1416 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
1417 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
1418 | "dev": true
1419 | },
1420 | "wrappy": {
1421 | "version": "1.0.2",
1422 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1423 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
1424 | "dev": true
1425 | },
1426 | "yallist": {
1427 | "version": "4.0.0",
1428 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
1429 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
1430 | "dev": true,
1431 | "optional": true
1432 | },
1433 | "yauzl": {
1434 | "version": "2.10.0",
1435 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
1436 | "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
1437 | "dev": true,
1438 | "requires": {
1439 | "buffer-crc32": "~0.2.3",
1440 | "fd-slicer": "~1.1.0"
1441 | }
1442 | }
1443 | }
1444 | }
1445 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "electron-example-browserview",
3 | "version": "0.1.0",
4 | "description": "Example of Electron app that registers and switches between multiple BrowserViews.",
5 | "type": "module",
6 | "main": "main.mjs",
7 | "scripts": {
8 | "start": "electron ."
9 | },
10 | "repository": "https://github.com/mamezou-tech/electron-example-browserview",
11 | "author": "kondoumh",
12 | "license": "MIT",
13 | "devDependencies": {
14 | "electron": "^32.0.1"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/tabbar.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
16 |
17 |
18 |
19 |
20 | electronjs.org
21 |
22 |
23 | local.html
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/tabbar.js:
--------------------------------------------------------------------------------
1 | onload = () => {
2 | document.querySelector('#tab1').addEventListener('click', e => {
3 | window.api.tab1();
4 | });
5 | document.querySelector('#tab2').addEventListener('click', e => {
6 | window.api.tab2();
7 | });
8 | }
9 |
--------------------------------------------------------------------------------
/tabbar_preload.js:
--------------------------------------------------------------------------------
1 | const { contextBridge, ipcRenderer } = require('electron');
2 |
3 | contextBridge.exposeInMainWorld(
4 | 'api', {
5 | tab1: async () => await ipcRenderer.invoke('tab1'),
6 | tab2: async () => await ipcRenderer.invoke('tab2')
7 | }
8 | );
9 |
--------------------------------------------------------------------------------