├── .DS_Store
├── .github
└── ISSUE_TEMPLATE
│ ├── bug_report.md
│ ├── feature_request.md
│ └── question.md
├── .gitignore
├── .prettierrc
├── LICENSE
├── README.md
├── _config.yml
├── build-production.js
├── config.json
├── icons
├── large.png
├── mac
│ └── icon.icns
├── tray.png
└── win
│ └── icon.ico
├── main.js
├── package.json
├── static
├── configure.html
├── css
│ ├── configure.css
│ ├── libraryConfiguration.css
│ └── theming.css
├── js
│ ├── configure.js
│ ├── libraryConfiguration.js
│ └── themes.js
└── libraryConfiguration.html
├── utils
├── MBClient.js
├── connectAPI.js
├── helpers.js
├── logger.js
├── serverDiscoveryClient.js
├── startupHandler.js
└── updateChecker.js
└── yarn.lock
/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oonqt/MBCord/c7bf4bccfd55abb00a5ea1a35af66f3f21a82d07/.DS_Store
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ''
5 | labels: bug
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe the bug**
11 | A clear and concise description of what the bug is. Explain the steps that you took leading up to the bug to help aid in recreating it.
12 |
13 | **Expected behavior**
14 | A clear and concise description of what you expected to happen.
15 |
16 | **Screenshots**
17 | If applicable, add screenshots to help explain your problem.
18 |
19 | **Error**
20 | * Attach the most recent log. Logs can be found by right clicking the tray application and clicking "Show Logs". Although it does its best to remove any, it's a good idea to give the logs a quick scrub to ensure there aren't any credentials/addresses
21 |
22 | **Desktop (please complete the following information):**
23 | - OS: [e.g. Windows]
24 | - Server Type: [e.g. Jellyfin]
25 | - Version [e.g. 1.0.9]
26 |
27 | **Additional context**
28 | Add any other context about the problem here.
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: feature
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe the feature/change you'd like**
11 | A clear and concise description of what you want to see.
12 |
13 | **Additional context**
14 | Add any other context or screenshots about the feature request here.
15 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/question.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Question
3 | about: Ask anything that you have concerns about
4 | title: ''
5 | labels: question
6 | assignees: ''
7 |
8 | ---
9 | ** Replace [] with [x] to signify you've completed the following
10 |
11 | ** [] I have read over the setup guide (https://github.com/oonqt/MBCord/wiki/Initial-Setup)
12 |
13 | ** [] I have read over the commonly asked questions (https://github.com/oonqt/MBCord/wiki/Commonly-Asked-Issues-Questions)
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | build/
3 | todos.txt
4 | .DS_STORE
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "useTabs": true,
3 | "singleQuote": true,
4 | "bracketSpacing": true,
5 | "jsxSingleQuote": true,
6 | "arrowParens": "always",
7 | "trailingComma": "none"
8 | }
9 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright 2020 Luke C
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # MBCord
2 |
3 |      
4 |
5 | MBCord project has been abandoned. If anyone would like to maintain, please create an issue or contact me.
6 |
--------------------------------------------------------------------------------
/_config.yml:
--------------------------------------------------------------------------------
1 | theme: jekyll-theme-cayman
--------------------------------------------------------------------------------
/build-production.js:
--------------------------------------------------------------------------------
1 | const zip = require("electron-installer-zip");
2 | const rimraf = require("rimraf");
3 | const path = require("path");
4 | const fs = require("fs");
5 | const { promisify } = require("util");
6 | const { execSync } = require("child_process");
7 | const { prodBuilds } = require("./package.json");
8 |
9 | const zipAsync = promisify(zip);
10 |
11 | (async () => {
12 | console.log("\nPackaging all platforms... \n");
13 |
14 | for(const build of prodBuilds) {
15 | console.log(`Packaging ${build}`)
16 | execSync(`npm run build:${build}`, { stdio: "ignore" });
17 | }
18 |
19 | console.log("\nCompressing... \n");
20 |
21 | let packedBuilds = fs.readdirSync(path.join(__dirname, "build"));
22 |
23 | for(const build of packedBuilds) {
24 | console.log(`Compressing ${build}`);
25 |
26 | const buildPath = path.join("build", build);
27 |
28 | // problem code
29 | await zipAsync({
30 | dir: buildPath,
31 | out: `${buildPath}.zip`
32 | });
33 |
34 | rimraf.sync(buildPath);
35 | }
36 | })();
--------------------------------------------------------------------------------
/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "clientIds": {
3 | "emby": "843293609960275968",
4 | "jellyfin": "843294504420769823"
5 | },
6 | "updateCheckInterval": 900000,
7 | "maxLogFileSizeMB": 50,
8 | "discordConnectRetryMS": 30000,
9 | "MBConnectRetryMS": 30000,
10 | "presenceUpdateIntervalMS": 15000,
11 | "maximumSessionInactivity": 300,
12 | "iconUrl": "https://user-images.githubusercontent.com/36819562/73629369-c0b4a100-4607-11ea-84c8-ff6c73d5deba.png",
13 | "logRetentionCount": 10
14 | }
--------------------------------------------------------------------------------
/icons/large.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oonqt/MBCord/c7bf4bccfd55abb00a5ea1a35af66f3f21a82d07/icons/large.png
--------------------------------------------------------------------------------
/icons/mac/icon.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oonqt/MBCord/c7bf4bccfd55abb00a5ea1a35af66f3f21a82d07/icons/mac/icon.icns
--------------------------------------------------------------------------------
/icons/tray.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oonqt/MBCord/c7bf4bccfd55abb00a5ea1a35af66f3f21a82d07/icons/tray.png
--------------------------------------------------------------------------------
/icons/win/icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oonqt/MBCord/c7bf4bccfd55abb00a5ea1a35af66f3f21a82d07/icons/win/icon.ico
--------------------------------------------------------------------------------
/main.js:
--------------------------------------------------------------------------------
1 | const {
2 | app,
3 | BrowserWindow,
4 | ipcMain,
5 | Tray,
6 | Menu,
7 | shell,
8 | dialog,
9 | Notification
10 | } = require('electron');
11 | const crypto = require('crypto');
12 | const dedent = require('dedent-js');
13 | const fs = require('fs');
14 | const os = require('os');
15 | const unhandled = require('electron-unhandled');
16 | const contextMenu = require('electron-context-menu');
17 | const { is, chromeVersion, electronVersion, openNewGitHubIssue } = require('electron-util');
18 | const path = require('path');
19 | const { v4 } = require('uuid');
20 | const Store = require('electron-store');
21 | const keytar = require('keytar');
22 | const StartupHandler = require('./utils/startupHandler');
23 | const MBClient = require('./utils/MBClient');
24 | const DiscordRPC = require('discord-rpc');
25 | const UpdateChecker = require('./utils/updateChecker');
26 | const Logger = require('./utils/logger');
27 | const serverDiscoveryClient = require('./utils/serverDiscoveryClient');
28 | const { scrubObject, booleanToYN } = require('./utils/helpers');
29 | const { version, name, author, homepage } = require('./package.json');
30 | const {
31 | clientIds,
32 | iconUrl,
33 | updateCheckInterval,
34 | logRetentionCount,
35 | discordConnectRetryMS,
36 | MBConnectRetryMS,
37 | presenceUpdateIntervalMS,
38 | maximumSessionInactivity,
39 | maxLogFileSizeMB
40 | } = require('./config.json');
41 |
42 | /**
43 | * @type {BrowserWindow}
44 | */
45 | let mainWindow;
46 |
47 | /**
48 | * @type {Tray}
49 | */
50 | let tray;
51 |
52 | /**
53 | * @type {MBClient}
54 | */
55 | let mbc;
56 |
57 | /**
58 | * @type {DiscordRPC.Client}
59 | */
60 | let rpc;
61 |
62 | let presenceUpdate;
63 | let connectRPCTimeout;
64 | let updateChecker;
65 |
66 | (async () => {
67 | const oldConfigFile = path.join(app.getPath('userData'), 'config.json');
68 | if (fs.existsSync(oldConfigFile)) fs.unlinkSync(oldConfigFile); // For security reasons we will delete the old config file as the new one will be encrypted, this one may contain sensitive information
69 |
70 | let encryptionKey = await keytar.getPassword(name, 'dpkey');
71 | if (!encryptionKey) {
72 | encryptionKey = crypto.randomBytes(32).toString('hex');
73 | await keytar.setPassword(name, 'dpkey', encryptionKey);
74 | }
75 |
76 | const store = new Store({
77 | encryptionKey,
78 | name: 'settings',
79 | schema: {
80 | enableDebugLogging: {
81 | type: 'boolean',
82 | default: false
83 | },
84 | isConfigured: {
85 | type: 'boolean',
86 | default: false
87 | },
88 | useTimeElapsed: {
89 | type: 'boolean',
90 | default: false
91 | },
92 | UUID: {
93 | type: 'string',
94 | default: v4()
95 | },
96 | doDisplayStatus: {
97 | type: 'boolean',
98 | default: true
99 | },
100 | servers: {
101 | type: 'array',
102 | default: []
103 | }
104 | }
105 | });
106 | const logger = new Logger(
107 | is.development ? 'console' : 'file',
108 | path.join(app.getPath('userData'), 'logs'),
109 | logRetentionCount,
110 | name,
111 | maxLogFileSizeMB,
112 | store.get('enableDebugLogging')
113 | );
114 | const startupHandler = new StartupHandler(app, name);
115 | const checker = new UpdateChecker(author, name, version);
116 |
117 | const debugInfo = () => {
118 | return dedent`DEBUG INFO:
119 | Development Mode: ${is.development}
120 | Platform: ${process.platform} (Version ${os.release()})
121 | Architecture: ${process.arch}
122 | MBCord version: ${version}
123 | Node version: ${process.versions.node}
124 | Electron version: ${electronVersion}
125 | Chrome version: ${chromeVersion}
126 | `;
127 | }
128 |
129 | logger.info('Starting app...');
130 | logger.info(debugInfo());
131 |
132 | contextMenu({
133 | showLookUpSelection: false,
134 | showSearchWithGoogle: false
135 | });
136 |
137 | unhandled({
138 | logger: error => logger.error(error),
139 | showDialog: true,
140 | reportButton: error => {
141 | openNewGitHubIssue({
142 | user: author,
143 | repo: name,
144 | labels: ['bug'],
145 | body: `\`\`\`\n${error.stack}\n\`\`\`\n\n---\n\n${debugInfo()}`
146 | })
147 | }
148 | });
149 |
150 | const startApp = () => {
151 | mainWindow = new BrowserWindow({
152 | width: 480,
153 | height: 310,
154 | minimizable: false,
155 | maximizable: false,
156 | webPreferences: {
157 | nodeIntegration: true,
158 | contextIsolation: false,
159 | enableRemoteModule: true
160 | },
161 | resizable: false,
162 | title: name,
163 | show: false
164 | });
165 |
166 | // only allow one instance
167 | const lockedInstance = app.requestSingleInstanceLock();
168 | if (!lockedInstance) return app.quit();
169 |
170 | // in development mode we allow resizing
171 | if (is.development) {
172 | mainWindow.resizable = true;
173 | mainWindow.maximizable = true;
174 | mainWindow.minimizable = true;
175 | } else {
176 | mainWindow.setMenu(null);
177 | }
178 |
179 | app.setAppUserModelId(name);
180 |
181 | if (store.get('isConfigured')) {
182 | startPresenceUpdater();
183 | moveToTray();
184 | } else {
185 | loadWindow('configure', { x: 600, y: 300 }, false);
186 | }
187 |
188 | checkForUpdates();
189 | updateChecker = setInterval(checkForUpdates, updateCheckInterval);
190 | };
191 |
192 | const getSelectedServer = () => store.get('servers').find((server) => server.isSelected);
193 |
194 | const resetApp = () => {
195 | store.clear();
196 |
197 | stopPresenceUpdater();
198 |
199 | tray.destroy();
200 |
201 | loadWindow('configure', { x: 600, y: 300 }, false);
202 | };
203 |
204 | const toggleDisplay = async () => {
205 | store.set('doDisplayStatus', !store.get('doDisplayStatus'));
206 |
207 | const doDisplay = store.get('doDisplayStatus');
208 |
209 | logger.debug(`doDisplayStatus: ${doDisplay}`);
210 | if (!doDisplay && rpc) await rpc.clearActivity();
211 | };
212 |
213 | const appBarHide = (doHide) => {
214 | if (doHide) {
215 | mainWindow.hide();
216 | if (process.platform === 'darwin') app.dock.hide();
217 | } else {
218 | mainWindow.show();
219 | if (process.platform === 'darwin') app.dock.show();
220 | }
221 |
222 | mainWindow.setSkipTaskbar(doHide);
223 | };
224 |
225 | const loadWindow = (pageName, size, preventAppQuitOnClose = true) => {
226 | mainWindow.setSize(size.x, size.y);
227 | mainWindow.loadFile(path.join(__dirname, 'static', `${pageName}.html`));
228 |
229 | if(preventAppQuitOnClose) {
230 | mainWindow.addListener('close', (closeNoExit = (e) => {
231 | e.preventDefault(); // prevent app close
232 | mainWindow.hide(); // hide window
233 | appBarHide(true);
234 | mainWindow.removeListener('close', closeNoExit); // remove listener
235 | }));
236 | }
237 |
238 | appBarHide(false);
239 | }
240 |
241 | const stopPresenceUpdater = async () => {
242 | if (mbc) {
243 | await mbc.logout();
244 | mbc = null;
245 | }
246 | clearInterval(presenceUpdate);
247 | presenceUpdate = null;
248 | };
249 |
250 | const addServer = (server) => {
251 | if (!tray) return logger.warn('Attempted to add server without tray');
252 |
253 | const servers = store.get('servers');
254 | servers.push(server);
255 |
256 | store.set('servers', servers);
257 |
258 | tray.setContextMenu(buildTrayMenu(servers));
259 | };
260 |
261 | const selectServer = async (server) => {
262 | if (!tray) return logger.warn('Attempted to select server without tray');
263 |
264 | const savedServers = store.get('servers');
265 | const savedServer = savedServers.find(server => server.isSelected);
266 | if (savedServer && (server.serverId === savedServer.serverId)) return logger.debug('Tried to select server that\'s already selected');
267 |
268 | const servers = savedServers.map((savedServer) => {
269 | return savedServer.serverId === server.serverId
270 | ? { ...savedServer, isSelected: true }
271 | : { ...savedServer, isSelected: false };
272 | });
273 |
274 | store.set('servers', servers);
275 |
276 | tray.setContextMenu(buildTrayMenu(servers));
277 |
278 | mainWindow.webContents.send('RECEIVE_TYPE', server.serverType);
279 |
280 | await stopPresenceUpdater();
281 | startPresenceUpdater();
282 | };
283 |
284 | const removeServer = (serverToRemove) => {
285 | if (!tray) return logger.warn('Attempted to remove server without tray');
286 |
287 | let wasSelected = false;
288 | const servers = store
289 | .get('servers')
290 | .filter((server) => {
291 | if (server.serverId !== serverToRemove.serverId) {
292 | return true;
293 | } else {
294 | if (server.isSelected) wasSelected = true;
295 | return false;
296 | }
297 | });
298 |
299 | store.set('servers', servers);
300 |
301 | tray.setContextMenu(buildTrayMenu(servers));
302 |
303 | dialog.showMessageBox({
304 | title: name,
305 | type: 'info',
306 | detail: `Successfully removed server from the server list. ${wasSelected ? 'Since this was the currently selected server, your presence will no longer be displayed.' : ''}`
307 | });
308 | };
309 |
310 | const buildTrayMenu = (servers) => {
311 | const serverSelectionSubmenu = [];
312 |
313 | for (const server of servers) {
314 | serverSelectionSubmenu.push({
315 | label: `${server.address} (${server.serverName})`,
316 | submenu: [
317 | {
318 | type: 'normal',
319 | label: `Selected Server: ${booleanToYN(server.isSelected)}`,
320 | enabled: false
321 | },
322 | {
323 | label: 'Remove Server',
324 | click: () => removeServer(server)
325 | },
326 | {
327 | label: 'Select Server',
328 | click: () => selectServer(server)
329 | }
330 | ]
331 | });
332 | }
333 |
334 | const contextMenu = Menu.buildFromTemplate([
335 | {
336 | type: 'checkbox',
337 | label: 'Run at Startup',
338 | click: () => startupHandler.toggle(),
339 | checked: startupHandler.isEnabled
340 | },
341 | {
342 | type: 'checkbox',
343 | label: 'Display as Status',
344 | click: () => toggleDisplay(),
345 | checked: store.get('doDisplayStatus')
346 | },
347 | {
348 | label: 'Use Time Elapsed',
349 | type: 'checkbox',
350 | checked: store.get('useTimeElapsed'),
351 | click: () => {
352 | const isUsing = store.get('useTimeElapsed');
353 |
354 | store.set({ useTimeElapsed: !isUsing });
355 | }
356 | },
357 | {
358 | type: 'separator'
359 | },
360 | {
361 | label: 'Add Server',
362 | click: () => loadWindow('configure', { x: 600, y: 300 })
363 | },
364 | {
365 | label: 'Select Server',
366 | submenu: serverSelectionSubmenu
367 | },
368 | {
369 | label: 'Set Ignored Libraries',
370 | click: () => loadWindow('libraryConfiguration', { x: 450, y: 500 })
371 | },
372 | {
373 | type: 'separator'
374 | },
375 | {
376 | label: 'Check for Updates',
377 | click: () => checkForUpdates(true)
378 | },
379 | {
380 | label: 'Enable Debug Logging',
381 | type: 'checkbox',
382 | checked: store.get('enableDebugLogging'),
383 | click: () => {
384 | const isEnabled = store.get('enableDebugLogging');
385 |
386 | logger.enableDebugLogging = !isEnabled;
387 | store.set({ enableDebugLogging: !isEnabled });
388 | }
389 | },
390 | {
391 | label: 'Show Logs',
392 | click: () => shell.openPath(logger.logPath)
393 | },
394 | {
395 | label: 'Reset App',
396 | click: () => resetApp()
397 | },
398 | {
399 | type: 'separator'
400 | },
401 | {
402 | label: 'Restart App',
403 | click: () => {
404 | app.quit();
405 | app.relaunch();
406 | }
407 | },
408 | {
409 | label: 'Quit',
410 | role: 'quit'
411 | },
412 | {
413 | type: 'separator'
414 | },
415 | {
416 | type: 'normal',
417 | label: `${name} v${version}`,
418 | enabled: false
419 | }
420 | ]);
421 |
422 | return contextMenu;
423 | };
424 |
425 | const moveToTray = () => {
426 | tray = new Tray(path.join(__dirname, 'icons', 'tray.png'));
427 |
428 | const servers = store.get('servers');
429 | const contextMenu = buildTrayMenu(servers);
430 |
431 | tray.setToolTip(name);
432 | tray.setContextMenu(contextMenu);
433 |
434 | if (!is.development) new Notification({
435 | title: `${name} ${version}`,
436 | icon: path.join(__dirname, 'icons', 'large.png'),
437 | body: `${name} has been minimized to the tray`
438 | }).show();
439 |
440 | appBarHide(true);
441 | };
442 |
443 | const checkForUpdates = (calledFromTray) => {
444 | checker.checkForUpdate((err, data) => {
445 | if (err) {
446 | if (calledFromTray) {
447 | dialog.showErrorBox(name, 'Failed to check for updates');
448 | }
449 | logger.error(err);
450 | return;
451 | }
452 |
453 | if (data.pending) {
454 | if (!calledFromTray) clearInterval(updateChecker);
455 |
456 | dialog.showMessageBox(
457 | {
458 | type: 'info',
459 | buttons: ['Okay', 'Get Latest Version'],
460 | message: 'A new version is available!',
461 | detail: `Your version is ${version}. The latest version currently available is ${data.version}`
462 | },
463 | (index) => {
464 | if (index === 1) {
465 | shell.openExternal(`${homepage}/releases/latest`);
466 | }
467 | }
468 | );
469 | } else if (calledFromTray) {
470 | dialog.showMessageBox({
471 | title: name,
472 | type: 'info',
473 | message: 'There are no new versions available to download'
474 | });
475 | }
476 | });
477 | };
478 |
479 | const disconnectRPC = async () => {
480 | if (rpc) {
481 | logger.info('Disconnecting from Discord');
482 | clearTimeout(connectRPCTimeout);
483 | rpc.transport.removeAllListeners('close');
484 | await rpc.clearActivity();
485 | await rpc.destroy();
486 | rpc = null;
487 | }
488 | };
489 |
490 | const connectRPC = () => {
491 | return new Promise((resolve) => {
492 | if (rpc) return logger.warn('Attempted to connect to RPC pipe while already connected');
493 |
494 | const server = getSelectedServer();
495 | if (!server) return logger.warn('No selected server');
496 |
497 | rpc = new DiscordRPC.Client({ transport: 'ipc' });
498 | rpc
499 | .login({ clientId: clientIds[server.serverType] })
500 | .then(resolve)
501 | .catch(() => {
502 | logger.error(
503 | `Failed to connect to Discord. Attempting to reconnect in ${
504 | discordConnectRetryMS / 1000
505 | } seconds`
506 | );
507 | });
508 |
509 | rpc.transport.once('close', () => {
510 | disconnectRPC();
511 |
512 | logger.warn(
513 | `Discord RPC connection closed. Attempting to reconnect in ${
514 | discordConnectRetryMS / 1000
515 | } seconds`
516 | );
517 |
518 | connectRPCTimeout = setTimeout(connectRPC, discordConnectRetryMS);
519 | });
520 |
521 | rpc.transport.once('open', () => {
522 | logger.info(`Connected to Discord (Server type: ${server.serverType})`);
523 | });
524 | });
525 | };
526 |
527 | const startPresenceUpdater = async () => {
528 | const data = getSelectedServer();
529 | if (!data) return logger.warn('No selected server');
530 |
531 | mbc = new MBClient(data, {
532 | deviceName: name,
533 | deviceId: store.get('UUID'),
534 | deviceVersion: version,
535 | iconUrl: iconUrl
536 | });
537 |
538 | logger.debug('Attempting to log into server');
539 | logger.debug(scrubObject(data, 'username', 'password', 'address'));
540 |
541 | await disconnectRPC();
542 | await connectRPC();
543 |
544 | try {
545 | await mbc.login();
546 | } catch (err) {
547 | logger.error('Failed to authenticate. Retrying in 30 seconds.');
548 | logger.error(err);
549 | setTimeout(startPresenceUpdater, MBConnectRetryMS);
550 | return;
551 | }
552 |
553 | setPresence();
554 | if(!presenceUpdate) presenceUpdate = setInterval(setPresence, presenceUpdateIntervalMS);
555 | };
556 |
557 | const setPresence = async () => {
558 | if (!store.get('doDisplayStatus')) return logger.debug('doDisplayStatus disabled, not setting status');
559 |
560 | const data = store.get();
561 | const server = getSelectedServer();
562 | if (!server) return logger.warn('No selected server');
563 |
564 | try {
565 | let sessions;
566 |
567 | try {
568 | sessions = await mbc.getSessions(maximumSessionInactivity);
569 | } catch (err) {
570 | return logger.error(`Failed to get sessions: ${err}`);
571 | }
572 |
573 | const session = sessions.find(
574 | (session) =>
575 | session.NowPlayingItem !== undefined &&
576 | session.UserName &&
577 | session.UserName.toLowerCase() === server.username.toLowerCase()
578 | );
579 |
580 | if (session) {
581 | const NPItem = session.NowPlayingItem;
582 |
583 | const NPItemLibraryID = await mbc.getItemInternalLibraryId(NPItem.Id);
584 | // convert
585 | if (server.ignoredViews.includes(NPItemLibraryID)) {
586 | // prettier-ignore
587 | logger.debug(`${NPItem.Name} is in library with ID ${NPItemLibraryID} which is on the ignored library list, will not set status`);
588 | if (rpc) await rpc.clearActivity();
589 | return;
590 | }
591 |
592 | // remove client IP addresses (hopefully this takes care of all of them)
593 | logger.debug(scrubObject(session, 'RemoteEndPoint'));
594 |
595 | const currentEpochSeconds = new Date().getTime() / 1000;
596 | const startTimestamp = Math.round(
597 | currentEpochSeconds -
598 | Math.round(session.PlayState.PositionTicks / 10000 / 1000)
599 | );
600 | const endTimestamp = Math.round(
601 | currentEpochSeconds +
602 | Math.round(
603 | (session.NowPlayingItem.RunTimeTicks -
604 | session.PlayState.PositionTicks) /
605 | 10000 /
606 | 1000
607 | )
608 | );
609 |
610 | logger.debug(
611 | `Time until media end: ${
612 | endTimestamp - currentEpochSeconds
613 | }, been playing since: ${startTimestamp}`
614 | );
615 |
616 | setTimeout(
617 | setPresence,
618 | (endTimestamp - currentEpochSeconds) * 1000 + 1500
619 | );
620 |
621 | const defaultProperties = {
622 | largeImageKey: 'large',
623 | largeImageText: `${
624 | NPItem.Type === 'Audio' ? 'Listening' : 'Watching'
625 | } on ${session.Client}`,
626 | smallImageKey: session.PlayState.IsPaused ? 'pause' : 'play',
627 | smallImageText: session.PlayState.IsPaused ? 'Paused' : 'Playing',
628 | instance: false
629 | };
630 |
631 | if (!session.PlayState.IsPaused) {
632 | data.useTimeElapsed
633 | ? (defaultProperties.startTimestamp = startTimestamp)
634 | : (defaultProperties.endTimestamp = endTimestamp);
635 | }
636 |
637 | switch (NPItem.Type) {
638 | case 'Episode': {
639 | // prettier-ignore
640 | const seasonNum = NPItem.ParentIndexNumber
641 | // prettier-ignore
642 | const episodeNum = NPItem.IndexNumber;
643 |
644 | rpc.setActivity({
645 | details: `Watching ${NPItem.SeriesName} ${
646 | NPItem.ProductionYear ? `(${NPItem.ProductionYear})` : ''
647 | }`,
648 | state: `${
649 | seasonNum ? `S${seasonNum.toString().padStart(2, '0')}` : ''
650 | }${
651 | episodeNum ? `E${episodeNum.toString().padStart(2, '0')}: ` : ''
652 | }${NPItem.Name}`,
653 | ...defaultProperties
654 | });
655 | break;
656 | }
657 | case 'Movie': {
658 | rpc.setActivity({
659 | details: 'Watching a Movie',
660 | state: `${NPItem.Name} ${
661 | NPItem.ProductionYear ? `(${NPItem.ProductionYear})` : ''
662 | }`,
663 | ...defaultProperties
664 | });
665 | break;
666 | }
667 | case 'MusicVideo': {
668 | const artists = NPItem.Artists.splice(0, 3); // we only want 3 artists
669 |
670 | rpc.setActivity({
671 | details: `Watching ${NPItem.Name} ${
672 | NPItem.ProductionYear ? `(${NPItem.ProductionYear})` : ''
673 | }`,
674 | state: `By ${
675 | artists.length ? artists.join(', ') : 'Unknown Artist'
676 | }`,
677 | ...defaultProperties
678 | });
679 | break;
680 | }
681 | case 'Audio': {
682 | const artists = NPItem.Artists.splice(0, 3);
683 | const albumArtists = NPItem.AlbumArtists.map(
684 | (ArtistInfo) => ArtistInfo.Name
685 | ).splice(0, 3);
686 |
687 | rpc.setActivity({
688 | details: `Listening to ${NPItem.Name} ${
689 | NPItem.ProductionYear ? `(${NPItem.ProductionYear})` : ''
690 | }`,
691 | state: `By ${
692 | artists.length
693 | ? artists.join(', ')
694 | : albumArtists.length
695 | ? albumArtists.join(', ')
696 | : 'Unknown Artist'
697 | }`,
698 | ...defaultProperties
699 | });
700 | break;
701 | }
702 | default:
703 | rpc.setActivity({
704 | details: 'Watching Other Content',
705 | state: NPItem.Name,
706 | ...defaultProperties
707 | });
708 | }
709 | } else {
710 | logger.debug('No session, clearing activity');
711 | if (rpc) await rpc.clearActivity();
712 | }
713 | } catch (error) {
714 | logger.error(`Failed to set activity: ${error}`);
715 | }
716 | };
717 |
718 | ipcMain.on('RECEIVE_INFO', async (event) => {
719 | let jellyfinServers = [];
720 | let embyServers = [];
721 |
722 | try {
723 | jellyfinServers = await serverDiscoveryClient.find(1750, 'jellyfin');
724 | } catch (err) {
725 | jellyfinServers = [];
726 | logger.error('Failed to get Jellyfin servers');
727 | logger.error(err);
728 | }
729 |
730 | try {
731 | embyServers = await serverDiscoveryClient.find(1750, 'emby');
732 | } catch (err) {
733 | embyServers = [];
734 | logger.error('Failed to get Emby servers');
735 | logger.error(err);
736 | }
737 |
738 | // TODO: filter out servers that are already saved from showing in autodetect
739 | const servers = [
740 | // prettier-ignore
741 | ...embyServers,
742 | ...jellyfinServers
743 | ];
744 |
745 | logger.debug(`Server discovery result: ${JSON.stringify(servers)}`);
746 |
747 | event.reply('RECEIVE_INFO', servers);
748 | });
749 |
750 | ipcMain.on('VIEW_SAVE', (_, data) => {
751 | // CONVERT
752 | const servers = store.get('servers');
753 | const selectedServer = getSelectedServer();
754 | const ignoredViews = selectedServer.ignoredViews;
755 |
756 | if (ignoredViews.includes(data)) {
757 | ignoredViews.splice(ignoredViews.indexOf(data), 1);
758 | } else {
759 | ignoredViews.push(data);
760 | }
761 |
762 | store.set({
763 | servers: servers.map((server) =>
764 | server.isSelected ? { ...server, ignoredViews } : server
765 | )
766 | });
767 | });
768 |
769 | ipcMain.on('TYPE_CHANGE', (_, data) => {
770 | // CONVERT
771 | switch (data) {
772 | case 'jellyfin':
773 | store.set({ serverType: 'jellyfin' });
774 | break;
775 | case 'emby':
776 | store.set({ serverType: 'emby' });
777 | break;
778 | }
779 | });
780 |
781 | ipcMain.on('RECEIVE_VIEWS', async (event) => {
782 | let userViews;
783 |
784 | if (!mbc.isAuthenticated) {
785 | // Not authed yet
786 | logger.info('Attempting to authenticate');
787 | try {
788 | await mbc.login();
789 | } catch (err) {
790 | event.reply('FETCH_FAILED');
791 | dialog.showErrorBox(
792 | name,
793 | 'Failed to fetch libraries for your user. Please try the reload button.'
794 | );
795 |
796 | logger.error('Failed to authenticate');
797 | logger.error(err);
798 | }
799 | }
800 |
801 | try {
802 | userViews = await mbc.getUserViews();
803 | } catch (err) {
804 | event.reply('FETCH_FAILED');
805 | dialog.showErrorBox(
806 | name,
807 | 'Failed to fetch libraries for your user. Please try the reload button.'
808 | );
809 | logger.error(err);
810 |
811 | return;
812 | }
813 |
814 | // convert
815 | const viewData = {
816 | availableViews: userViews,
817 | ignoredViews: getSelectedServer().ignoredViews
818 | };
819 |
820 | logger.debug('Sending view data to renderer');
821 | logger.debug(viewData);
822 |
823 | event.reply('RECEIVE_VIEWS', viewData);
824 | });
825 |
826 |
827 | // FUTURE RELEASE, UNDECIDED..
828 | // ipcMain.on('RECEIVE_CONNECT_SERVERS', async (event, data) => {
829 | // logger.debug(`Receive connect servers data: ${JSON.stringify(data)}`);
830 |
831 | // let connectUser;
832 | // try {
833 | // connectUser = await connectAPI.getConnectUser(data.nameOrEmail, data.password);
834 | // } catch (err) {
835 | // logger.error(err);
836 |
837 | // let errorMessage;
838 |
839 | // if (err.status && err.status === 401) {
840 | // errorMessage = 'Failed to authenticate with connect, no user with that email/name exists';
841 | // } else if (err.status && err.status === 401) {
842 | // errorMessage = 'Failed to authenticate with connect, invalid password provided';
843 | // } else {
844 | // errorMessage = 'Failed to authenticate with connect, an unknown error occured.';
845 | // }
846 |
847 | // dialog.showMessageBox(mainWindow, {
848 | // type: 'error',
849 | // title: name,
850 | // detail: errorMessage
851 | // });
852 |
853 | // return event.reply('CONNECT_ERROR');
854 | // }
855 |
856 | // let connectServers;
857 | // try {
858 | // connectServers = await connectAPI.getConnectServers(connectUser.AccessToken, connectUser.User.Id);
859 | // } catch (err) {
860 | // logger.error(err);
861 |
862 | // dialog.showMessageBox(mainWindow, {
863 | // type: 'error',
864 | // title: name,
865 | // detail: 'An error occured and we failed to fetch the connect servers linked to your account, please try again later.'
866 | // });
867 |
868 | // return event.reply('CONNECT_ERROR');
869 | // }
870 |
871 | // event.reply('RECEIVE_CONNECT_SERVERS', connectServers);
872 | // });
873 |
874 | ipcMain.on('ADD_SERVER', async (event, data) => {
875 | logger.debug('Is first setup: ' + !store.get('isConfigured'));
876 |
877 | const emptyFields = Object.entries(data)
878 | .filter((entry) => !entry[1] && entry[0] !== 'password') // where entry[1] is the value, and if the field password is ignore it (emby and jelly dont require you to have a pw, even though you should even on local network)
879 | .map((field) => field[0]); // we map empty fields by their names
880 |
881 | if (emptyFields.length) {
882 | mainWindow.webContents.send('VALIDATION_ERROR', emptyFields);
883 | dialog.showMessageBox(mainWindow, {
884 | title: name,
885 | type: 'error',
886 | detail: 'Please make sure that all the fields are filled in!'
887 | });
888 | return;
889 | }
890 |
891 | let client = new MBClient(data, {
892 | deviceName: name,
893 | deviceId: store.get('UUID'),
894 | deviceVersion: version,
895 | iconUrl: iconUrl
896 | });
897 |
898 | logger.debug('Attempting to log into server');
899 | logger.debug(scrubObject(data, 'username', 'password', 'address'));
900 |
901 | let serverInfo;
902 | try {
903 | await client.login();
904 | serverInfo = await client.getSystemInfo();
905 | } catch (error) {
906 | logger.error(error);
907 | dialog.showMessageBox(mainWindow, {
908 | type: 'error',
909 | title: name,
910 | detail: 'Invalid server address or login credentials'
911 | });
912 | event.reply('RESET');
913 | return;
914 | }
915 |
916 | if (!store.get('isConfigured')) {
917 | // convert
918 | store.set({
919 | servers: [
920 | {
921 | ...data,
922 | isSelected: true,
923 | ignoredViews: [],
924 | serverId: serverInfo.Id,
925 | serverName: serverInfo.ServerName
926 | }
927 | ],
928 | isConfigured: true,
929 | doDisplayStatus: true
930 | });
931 |
932 | moveToTray();
933 | startPresenceUpdater();
934 | } else {
935 | logger.debug(store.get('servers'));
936 |
937 | const configuredServers = store.get('servers');
938 |
939 | if (
940 | configuredServers.some(
941 | (configuredServer) =>
942 | configuredServer.serverId === serverInfo.Id
943 | )
944 | ) {
945 | dialog.showMessageBox(mainWindow, {
946 | type: 'error',
947 | title: name,
948 | detail:
949 | 'You already configured this server, you can enable it from the tray.'
950 | });
951 |
952 | event.reply('RESET', true);
953 | } else {
954 | const newServer = {
955 | ...data,
956 | isSelected: false,
957 | ignoredViews: [],
958 | serverId: serverInfo.Id,
959 | serverName: serverInfo.ServerName
960 | };
961 |
962 | mainWindow.hide();
963 |
964 | addServer(newServer);
965 |
966 | if (getSelectedServer()) {
967 | const res = await dialog.showMessageBox({
968 | type: 'info',
969 | title: name,
970 | message:
971 | 'Your server has been successfully added. Would you like to select it automatically?',
972 | buttons: ['Yes', 'No']
973 | });
974 |
975 | if (res.response === 0) {
976 | selectServer(newServer);
977 | }
978 | } else {
979 | dialog.showMessageBox({
980 | type: 'info',
981 | title: name,
982 | message:
983 | 'Your server has been successfully added and has been automatically selected.'
984 | });
985 |
986 | selectServer(newServer);
987 | }
988 |
989 | appBarHide(true);
990 | }
991 | }
992 | });
993 |
994 | ipcMain.on('RECEIVE_TYPE', (event) => {
995 | const selectedServer = getSelectedServer();
996 | event.reply(
997 | 'RECEIVE_TYPE',
998 | selectedServer ? selectedServer.serverType : 'emby'
999 | );
1000 | });
1001 |
1002 | if (app.isReady()) {
1003 | startApp();
1004 | } else {
1005 | app.once('ready', startApp);
1006 | }
1007 | })();
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "MBCord",
3 | "version": "3.0.0",
4 | "description": "An Emby/Jellyfin rich presence client for Discord",
5 | "main": "main.js",
6 | "scripts": {
7 | "start": "electron .",
8 | "build": "node build-production.js",
9 | "build:mac": "electron-packager . MBCord --out=build --overwrite --asar --icon=icons/mac/icon.icns --platform=darwin --arch=x64",
10 | "build:win64": "electron-packager . MBCord --out=build --overwrite --asar --icon=icons/win/icon.ico --platform=win32 --arch=x64",
11 | "build:linux64": "electron-packager . MBCord --out=build --overwrite --asar --icon=icons/win/icon.ico --platform=linux --arch=x64",
12 | "build:linux32": "electron-packager . MBCord --out=build --overwrite --asar --icon=icons/win/icon.ico --platform=linux --arch=ia32",
13 | "build:win32": "electron-packager . MBCord --out=build --overwrite --asar --icon=icons/win/icon.ico --platform=win32 --arch=ia32",
14 | "build:armv7l": "electron-packager . MBCord --out=build --overwrite --asar --icon=icons/win/icon.ico --platform=linux --arch=armv7l",
15 | "build:arm64": "electron-packager . MBCord --out=build --overwrite --asar --icon=icons/win/icon.ico --platform=linux --arch=arm64"
16 | },
17 | "prodBuilds": [
18 | "mac",
19 | "win64",
20 | "win32",
21 | "linux64",
22 | "linux32"
23 | ],
24 | "author": "oonqt",
25 | "license": "MIT",
26 | "devDependencies": {
27 | "electron": "^13.3.0",
28 | "electron-installer-zip": "^0.1.2",
29 | "electron-packager": "^15.2.0",
30 | "rimraf": "^3.0.2",
31 | "yarn-upgrade-all": "^0.5.4"
32 | },
33 | "dependencies": {
34 | "colors": "^1.4.0",
35 | "dedent-js": "^1.0.1",
36 | "deep-cleaner": "^1.2.1",
37 | "discord-rpc": "^3.2.0",
38 | "electron-context-menu": "^3.1.1",
39 | "electron-store": "^8.0.0",
40 | "electron-unhandled": "^3.0.2",
41 | "electron-util": "^0.16.0",
42 | "json-stringify-safe": "^5.0.1",
43 | "keytar": "^7.7.0",
44 | "material-icons": "^0.7.2",
45 | "materialize-css": "^1.0.0",
46 | "mkdirp": "^1.0.4",
47 | "request": "^2.88.2",
48 | "semver": "^7.3.5",
49 | "untildify": "^4.0.0",
50 | "uuid": "^8.3.2"
51 | },
52 | "homepage": "https://github.com/oonqt/MBCord"
53 | }
54 |
--------------------------------------------------------------------------------
/static/configure.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
27 |
28 |
Attempting to autodetect servers...
29 |
30 |
31 |
32 |
33 |
34 |
35 |
We've auto-detected some servers
36 |
49 |
50 |
51 |
52 |
53 |
Let's get you set up
54 |
55 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
114 |
115 |
116 |
--------------------------------------------------------------------------------
/static/css/configure.css:
--------------------------------------------------------------------------------
1 | * {
2 | user-select: none;
3 | }
4 |
5 | .container {
6 | text-align: center;
7 | }
8 |
9 | .content {
10 | display: none;
11 | }
12 |
13 | .splashScreen {
14 | margin-top: 25px;
15 | }
16 |
17 | .row {
18 | margin: 0;
19 | }
20 |
21 | .btn {
22 | width: 100%;
23 | }
24 |
25 | .modal-title {
26 | margin-top: 0 !important;
27 | font-weight: 500;
28 | }
29 |
30 | .modal {
31 | height: 100%;
32 | width: 90%;
33 | }
34 |
35 | .button-row {
36 | margin-top: 14px;
37 | }
38 |
39 | .left-button {
40 | padding-left: 0 !important;
41 | }
42 |
43 | .right-button {
44 | padding-right: 0 !important;
45 | }
46 |
47 | .modal-content {
48 | text-align: center;
49 | }
50 |
51 | #closeModal:hover {
52 | text-decoration: underline;
53 | }
54 |
55 | #msg {
56 | color: red;
57 | display: block;
58 | margin-top: 5px;
59 | }
--------------------------------------------------------------------------------
/static/css/libraryConfiguration.css:
--------------------------------------------------------------------------------
1 | * {
2 | user-select: none;
3 | }
4 |
5 | .lever {
6 | margin-bottom: 5px;
7 | }
8 |
9 | #retry {
10 | display: none;
11 | width: 100%;
12 | margin-top: 15px;
13 | }
14 |
15 | .viewsContainer {
16 | display: none;
17 | }
18 |
19 | .switch {
20 | float: right;
21 | }
22 |
23 | .container {
24 | text-align: center;
25 | }
26 |
27 | .title {
28 | margin-bottom: 15px;
29 | }
30 |
31 | span.viewName {
32 | white-space: nowrap;
33 | overflow: hidden;
34 | text-overflow: ellipsis;
35 | display: inline-block;
36 | width: calc(60%);
37 | }
38 |
39 | #reload:hover {
40 | background-color: transparent !important;
41 | }
--------------------------------------------------------------------------------
/static/css/theming.css:
--------------------------------------------------------------------------------
1 | .switch label input[type='checkbox']:checked + .lever:after {
2 | background-color: var(--color);
3 | }
4 |
5 | .switch label input[type='checkbox']:checked + .lever {
6 | background-color: var(--color-accent);
7 | }
8 |
9 | .switch label .lever:before {
10 | background-color: var(--color-accent);
11 | }
12 |
13 | .btn,
14 | .btn:hover,
15 | .btn:focus {
16 | background-color: var(--color);
17 | }
18 |
19 | .progress .indeterminate {
20 | background-color: var(--color) !important;
21 | }
22 |
23 | .progress {
24 | background-color: var(--color-accent);
25 | }
26 |
27 | #reload > i {
28 | color: var(--color);
29 | }
30 |
31 | .input-field input:focus + label {
32 | color: var(--color) !important;
33 | }
34 |
35 | input:focus {
36 | border-bottom: 1px solid var(--color) !important;
37 | box-shadow: 0 1px 0 0 var(--color) !important;
38 | }
39 |
40 | li > span {
41 | color: var(--color) !important;
42 | }
43 |
44 | .tabs .tab a:hover, .tabs .tab a.active {
45 | color: var(--color) !important;
46 | }
47 |
48 | .tabs .indicator {
49 | background-color: var(--color) !important;
50 | }
51 |
52 | .tabs .tab a:focus, .tabs .tab a:focus.active {
53 | background-color: var(--color-accent) !important;
54 | }
55 |
56 | .tabs .tab a {
57 | color: var(--color) !important;
58 | }
59 |
60 | [type="checkbox"].filled-in:checked+span:not(.lever):after {
61 | border: 2px solid var(--color) !important;
62 | background-color: var(--color) !important;
63 | }
--------------------------------------------------------------------------------
/static/js/configure.js:
--------------------------------------------------------------------------------
1 | const { ipcRenderer } = require('electron');
2 |
3 | const submitButton = document.getElementById('submitButton');
4 |
5 | document.getElementById('configuration').addEventListener('submit', (e) => {
6 | submitButton.disabled = true;
7 |
8 | e.preventDefault();
9 |
10 | const invalidFields = document.querySelectorAll('.invalid');
11 | invalidFields.forEach((field) => field.classList.remove('invalid'));
12 |
13 | let address = document.getElementById('serverAddress').value;
14 | let username = document.getElementById('username').value;
15 | let password = document.getElementById('password').value;
16 | let protocol = document.getElementById('protocol').value;
17 | let port = document.getElementById('port').value;
18 | let serverType = document.getElementById('serverType').value;
19 |
20 | ipcRenderer.send(
21 | 'ADD_SERVER',
22 | {
23 | address,
24 | username,
25 | password,
26 | port,
27 | protocol,
28 | serverType
29 | }
30 | );
31 | });
32 |
33 | document.getElementById('serverType').addEventListener('change', function () {
34 | const root = document.documentElement;
35 | const current = getComputedStyle(root).getPropertyValue('--color');
36 |
37 | setTheme(current === colors.embyTheme.solid ? 'jellyfin' : 'emby');
38 | });
39 |
40 | ipcRenderer.on('CONNECT_ERROR', () => {
41 |
42 | });
43 |
44 | ipcRenderer.on('RESET', (_, resetFields) => {
45 | submitButton.disabled = false;
46 |
47 | if (resetFields) {
48 | document.getElementById('serverAddress').value = '';
49 | document.getElementById('username').value = '';
50 | document.getElementById('password').value = '';
51 | document.getElementById('port').value = '';
52 | }
53 | });
54 |
55 | ipcRenderer.on('VALIDATION_ERROR', (_, data) => {
56 | submitButton.disabled = false;
57 |
58 | data.forEach((fieldName) => {
59 | const field = document.getElementById(fieldName);
60 |
61 | field.classList.add('invalid');
62 | });
63 | });
64 |
65 | ipcRenderer.on('RECEIVE_INFO', (_, data) => {
66 | document.querySelector('.splashScreen').style.display = 'none';
67 | document.querySelector('.content').style.display = 'block';
68 |
69 | if (data.length) {
70 | // prettier-ignore
71 | const serverDiscoveryModal = document.getElementById('serverDiscoveryModal');
72 |
73 | const modalInstance = M.Modal.getInstance(serverDiscoveryModal);
74 | modalInstance.open();
75 |
76 | // set the theme to the default selected item server type
77 | setTheme(data[0].type);
78 |
79 | const serverList = serverDiscoveryModal.querySelector('#servers');
80 | serverList.innerHTML = data
81 | .map(
82 | (server) =>
83 | ``
89 | )
90 | .join('');
91 | M.FormSelect.init(serverList);
92 |
93 | serverList.addEventListener('change', function () {
94 | const server = data.find((server) => server.id === this.value);
95 |
96 | setTheme(server.type);
97 | });
98 |
99 | serverDiscoveryModal
100 | .querySelector('#notFound')
101 | .addEventListener('click', () => {
102 | modalInstance.close();
103 | });
104 |
105 | serverDiscoveryModal
106 | .querySelector('form')
107 | .addEventListener('submit', (e) => {
108 | e.preventDefault();
109 |
110 | const serverId = serverDiscoveryModal
111 | .querySelector('#servers')
112 | .value.split(':')[0];
113 | const server = data.find((server) => server.id === serverId);
114 |
115 | document.getElementById('serverAddress').value = server.address;
116 | document.getElementById('port').value = server.port;
117 |
118 | modalInstance.close();
119 | });
120 | }
121 | });
122 |
123 | function setTheme(themeName) {
124 | const serverType = document.getElementById('serverType');
125 |
126 | switch (themeName) {
127 | case 'emby':
128 | document.documentElement.style.setProperty(
129 | '--color',
130 | colors.embyTheme.solid
131 | );
132 | serverType.value = themeName;
133 | break;
134 | case 'jellyfin':
135 | document.documentElement.style.setProperty(
136 | '--color',
137 | colors.jellyfinTheme.solid
138 | );
139 | serverType.value = themeName;
140 | break;
141 | }
142 | }
143 |
144 | setTheme('emby');
145 | ipcRenderer.send('RECEIVE_INFO');
146 |
--------------------------------------------------------------------------------
/static/js/libraryConfiguration.js:
--------------------------------------------------------------------------------
1 | const { ipcRenderer } = require('electron');
2 |
3 | ipcRenderer.on('FETCH_FAILED', () => {
4 | document.querySelector('progress').style.display = 'none';
5 |
6 | const retry = document.getElementById('retry');
7 |
8 | retry.style.display = 'block';
9 | });
10 |
11 | retry.addEventListener('click', () => {
12 | document.querySelector('.progress').style.display = 'block';
13 | retry.style.display = 'none';
14 | ipcRenderer.send('RECEIVE_VIEWS');
15 | });
16 |
17 | const reload = document.getElementById('reload');
18 |
19 | reload.addEventListener('click', () => {
20 | document.querySelector('.progress').style.display = 'block';
21 | document.querySelector('.viewsContainer').style.display = 'none';
22 | ipcRenderer.send('RECEIVE_VIEWS');
23 | });
24 |
25 | ipcRenderer.on('RECEIVE_VIEWS', (_, views) => {
26 | document.querySelector('.progress').style.display = 'none';
27 | document.querySelector('.viewsContainer').style.display = 'block';
28 |
29 | document.getElementById('userViewsList').innerHTML = views.availableViews
30 | .map(
31 | // prettier-ignore
32 | (view) => `
33 |
34 | ${view.name}
35 |
36 |
37 |
51 |
52 | `
53 | )
54 | .join('');
55 |
56 | document.querySelectorAll('.viewDisableToggle').forEach((view) => {
57 | view.addEventListener('change', function () {
58 | if (this.checked) {
59 | view.parentElement.querySelector('span').textContent = 'Ignored';
60 | } else {
61 | view.parentElement.querySelector('span').textContent = 'Watching';
62 | }
63 |
64 | ipcRenderer.send('VIEW_SAVE', this.id);
65 | });
66 | });
67 | });
68 |
69 | ipcRenderer.send('RECEIVE_VIEWS');
70 |
--------------------------------------------------------------------------------
/static/js/themes.js:
--------------------------------------------------------------------------------
1 | const ipc = require('electron').ipcRenderer;
2 |
3 | const colors = {
4 | embyTheme: {
5 | solid: "#4caf50",
6 | accent: "rgba(76, 175, 80, 0.15)"
7 | },
8 | jellyfinTheme: {
9 | solid: "#7289da",
10 | accent: "rgba(114, 137, 218, 0.15)"
11 | }
12 | }
13 |
14 | ipc.on('RECEIVE_TYPE', (_, data) => {
15 | switch (data) {
16 | case 'emby':
17 | document.documentElement.style.setProperty(
18 | '--color',
19 | colors.embyTheme.solid
20 | );
21 | document.documentElement.style.setProperty(
22 | '--color-accent',
23 | colors.embyTheme.accent
24 | );
25 | break;
26 | case 'jellyfin':
27 | document.documentElement.style.setProperty(
28 | '--color',
29 | colors.jellyfinTheme.solid
30 | );
31 | document.documentElement.style.setProperty(
32 | '--color-accent',
33 | colors.jellyfinTheme.accent
34 | );
35 | break;
36 | }
37 | });
38 |
39 | ipc.send('RECEIVE_TYPE');
--------------------------------------------------------------------------------
/static/libraryConfiguration.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
17 |
18 |
22 |
23 |
24 |
25 | Ignored Libraries
26 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/utils/MBClient.js:
--------------------------------------------------------------------------------
1 | const request = require('request');
2 |
3 | class MBClient {
4 | /**
5 | * @param {Object} serverCredentials
6 | * @param {string} serverCredentials.address
7 | * @param {number} serverCredentials.port
8 | * @param {string} serverCredentials.protocol HTTP or HTTPS
9 | * @param {string} serverCredentials.username
10 | * @param {string} serverCredentials.password
11 | *
12 | * @param {Object} deviceInfo
13 | * @param {string} deviceInfo.deviceName
14 | * @param {string} deviceInfo.deviceId
15 | * @param {string} deviceInfo.deviceVersion,
16 | * @param {string|undefined} deviceInfo.iconUrl URL to the icon displayed under the devices page
17 | */
18 | constructor(serverCredentials, deviceInfo, cacheExpSecs = 900) {
19 | Object.assign(this, serverCredentials);
20 | Object.assign(this, deviceInfo);
21 |
22 | this.userId;
23 | this.accessToken;
24 | this.cacheExpSecs = cacheExpSecs;
25 | this.libraryIDCache = {};
26 | this.itemLibraryIDCache = {};
27 | }
28 |
29 | get serverAddress() {
30 | const url = new URL(`${this.protocol}://${this.address}`);
31 | url.port = this.port;
32 | return url.toString().replace(/\/+$/, '');
33 | }
34 |
35 | get isAuthenticated() {
36 | return this.accessToken !== undefined;
37 | }
38 |
39 | get headers() {
40 | const headers = {};
41 |
42 | headers['User-Agent'] = `${this.deviceName}/${this.deviceVersion}`;
43 | if(this.accessToken) headers['X-Emby-Token'] = this.accessToken;
44 |
45 | return headers;
46 | }
47 |
48 | static exchangeConnectToken(url, connectUserToken, connectUserId) {
49 | return new Promise((resolve, reject) => {
50 | request({
51 | url: url + `?format=json&ConnectUserId=${connectUserId}`,
52 | headers: {
53 | 'x-emby-token': connectUserToken
54 | },
55 | json: true
56 | }, (err, res, body) => {
57 | if (err) return reject(err);
58 | if (res.statusCode !== 200)
59 | return reject(`Status: ${res.statusCode} Response: ${JSON.stringify(body)}`);
60 |
61 | resolve(body);
62 | });
63 | });
64 | }
65 |
66 | /**
67 | * @returns {Promise>} the sessions
68 | */
69 | getSessions(activeWithinSeconds) {
70 | return new Promise((resolve, reject) => {
71 | request(
72 | `${this.serverAddress}/Sessions${activeWithinSeconds ? `?ActiveWithinSeconds=${activeWithinSeconds}` : ''}`,
73 | {
74 | headers: this.headers,
75 | json: true
76 | },
77 | (err, res, body) => {
78 | if (err) return reject(err);
79 | if (res.statusCode !== 200)
80 | return reject(`Status: ${res.statusCode} Response: ${JSON.stringify(body)}`);
81 |
82 | resolve(body);
83 | }
84 | );
85 | });
86 | }
87 |
88 | /**
89 | * @returns {Promise}
90 | */
91 | assignDeviceCapabilities() {
92 | return new Promise((resolve, reject) => {
93 | request.post(
94 | `${this.serverAddress}/Sessions/Capabilities/Full`,
95 | {
96 | headers: this.headers,
97 | body: {
98 | IconUrl: this.iconUrl
99 | },
100 | json: true
101 | },
102 | (err, res) => {
103 | if (err) return reject(err);
104 | if (res.statusCode !== 204)
105 | return reject(`Status: ${res.statusCode} Reason: ${JSON.stringify(body)}`);
106 |
107 | resolve();
108 | }
109 | );
110 | });
111 | }
112 |
113 | /**
114 | * @param {string} libraryId Library GUID
115 | * @returns {Promise} Internal ID
116 | */
117 | getLibraryInternalId(libraryId) {
118 | // we have to do all this fucking bullshit just to get the library ID
119 | return new Promise((resolve, reject) => {
120 | const cacheResult = this.libraryIDCache[libraryId];
121 | if (cacheResult && cacheResult.expires > new Date().getTime()) {
122 | resolve(cacheResult.value);
123 | }
124 |
125 | request(
126 | `${this.serverAddress}/Users/${this.userId}/Items?Limit=1&ParentId=${libraryId}&Fields=ParentId`,
127 | {
128 | headers: this.headers,
129 | json: true
130 | },
131 | async (err, res, body) => {
132 | if (err) return reject(err);
133 | if (res.statusCode !== 200)
134 | return reject(`Status: ${res.statusCode} Response: ${JSON.stringify(body)}`);
135 |
136 | // some libraries might have no items
137 | if (!body.Items[0]) return resolve(null);
138 |
139 | try {
140 | // prettier-ignore
141 | const LibraryInternalID = await this.getItemInternalLibraryId(body.Items[0].Id);
142 | this.libraryIDCache[libraryId] = { value: LibraryInternalID, expires: new Date().getTime() + this.cacheExpSecs * 1000 };
143 | resolve(LibraryInternalID);
144 | } catch (error) {
145 | reject(`Failed to get library ID: ${error}`);
146 | }
147 | }
148 | );
149 | });
150 | }
151 |
152 | getSystemInfo() {
153 | return new Promise((resolve, reject) => {
154 | request(
155 | `${this.serverAddress}/System/Info`,
156 | {
157 | headers: this.headers,
158 | json: true
159 | },
160 | (err, res, body) => {
161 | if (err) return reject(err);
162 | if (res.statusCode !== 200)
163 | return reject(`Status: ${res.statusCode} Response: ${JSON.stringify(body)}`);
164 |
165 | resolve(body);
166 | }
167 | );
168 | });
169 | }
170 |
171 | /**
172 | * @param {string} itemId ID of the item
173 | * @returns {Promise}
174 | */
175 | getItemInternalLibraryId(itemId) {
176 | return new Promise((resolve, reject) => {
177 | const cacheResult = this.itemLibraryIDCache[itemId];
178 | if (cacheResult && cacheResult.expires > new Date().getTime()) {
179 | resolve(cacheResult.value);
180 | }
181 |
182 | request(
183 | `${this.serverAddress}/Items/${itemId}/Ancestors`,
184 | {
185 | headers: this.headers,
186 | json: true
187 | },
188 | (err, res, body) => {
189 | if (err) return reject(err);
190 | if (res.statusCode !== 200)
191 | return reject(`Status: ${res.statusCode} Response: ${JSON.stringify(body)}`);
192 |
193 | // second ancestor is always the library
194 | const libraryID = body.splice(body.length - 2, 1)[0].Id;
195 | this.itemLibraryIDCache[itemId] = { value: libraryID, expires: new Date().getTime() + this.cacheExpSecs * 1000 };
196 | resolve(libraryID);
197 | }
198 | );
199 | });
200 | }
201 |
202 | /**
203 | * @returns {Promise>}
204 | */
205 | getUserViews() {
206 | return new Promise((resolve, reject) => {
207 | request(
208 | `${this.serverAddress}/Users/${this.userId}/views`,
209 | {
210 | headers: this.headers,
211 | json: true
212 | },
213 | async (err, res, body) => {
214 | if (err) return reject(err);
215 | if (res.statusCode !== 200)
216 | return reject(`Status: ${res.statusCode} Response: ${JSON.stringify(body)}`);
217 |
218 | // undefined is for mixedcontent libraries (which dont have a collection type property for some reason?)
219 | // we dont want people to select libraries like playlist and collections since those are virtual libraries and not actual libraries
220 | const allowedLibraries = body.Items.filter(
221 | (view) =>
222 | view.CollectionType === undefined ||
223 | [
224 | 'tvshows',
225 | 'movies',
226 | 'homevideos',
227 | 'music',
228 | 'musicvideos',
229 | 'audiobooks'
230 | ].includes(view.CollectionType)
231 | );
232 |
233 | const mappedLibraries = [];
234 |
235 | for (const library of allowedLibraries) {
236 | try {
237 | const internalId = await this.getLibraryInternalId(library.Id);
238 |
239 | // incase the library had no items and we couldnt figure out the ID
240 | if (internalId) {
241 | mappedLibraries.push({
242 | name: library.Name,
243 | id: internalId
244 | });
245 | }
246 | } catch (error) {
247 | reject(
248 | `Interal ID fetch failure: ${error} at library ${library.Name}`
249 | );
250 | }
251 | }
252 |
253 | resolve(mappedLibraries);
254 | }
255 | );
256 | });
257 | }
258 |
259 | /**
260 | * @returns {Promise}
261 | */
262 | login() {
263 | return new Promise((resolve, reject) => {
264 | if (this.accessToken) resolve();
265 |
266 | request.post(
267 | `${this.serverAddress}/Users/AuthenticateByName`,
268 | {
269 | headers: {
270 | Authorization: `Emby Client=Other, Device=${this.deviceName}, DeviceId=${this.deviceId}, Version=${this.deviceVersion}`
271 | },
272 | body: {
273 | Username: this.username,
274 | Pw: this.password
275 | },
276 | json: true
277 | },
278 | async (err, res, body) => {
279 | if (err) return reject(err);
280 | if (res.statusCode !== 200)
281 | return reject(`Status: ${res.statusCode} Response: ${JSON.stringify(body)}`);
282 |
283 | this.accessToken = body.AccessToken;
284 | this.userId = body.User.Id;
285 |
286 | if (this.iconUrl) {
287 | try {
288 | await this.assignDeviceCapabilities();
289 | } catch (error) {
290 | return reject(`Failed to set device icon: ${error}`);
291 | }
292 | }
293 |
294 | resolve(body);
295 | }
296 | );
297 | });
298 | }
299 |
300 | /**
301 | * @returns {Promise}
302 | */
303 | logout() {
304 | return new Promise((resolve) => {
305 | this.userId = null;
306 | this.itemLibraryIDCache = {};
307 | this.libraryIDCache = {};
308 |
309 | if (this.accessToken) {
310 | request.post(
311 | `${this.serverAddress}/Sessions/Logout`,
312 | {
313 | headers: this.headers
314 | },
315 | () => {
316 | // i dont give a FUCK if it doesnt succeed, if it does, it does, if not, fuck it
317 |
318 | this.accessToken = null;
319 | resolve();
320 | }
321 | );
322 | } else {
323 | resolve();
324 | }
325 | });
326 | }
327 | }
328 |
329 | module.exports = MBClient;
330 |
--------------------------------------------------------------------------------
/utils/connectAPI.js:
--------------------------------------------------------------------------------
1 | const request = require('request');
2 |
3 | class ConnectAPI {
4 | constructor(appName, appVersion) {
5 | this.appName = appName;
6 | this.appVersion = appVersion;
7 | }
8 |
9 | getConnectUser(nameOrEmail, password) {
10 | return new Promise((resolve, reject) => {
11 | request({
12 | url: 'https://connect.emby.media/service/user/authenticate',
13 | method: 'POST',
14 | headers: {
15 | 'X-Application': `${name}/${version}`
16 | },
17 | body: {
18 | nameOrEmail,
19 | rawpw: password
20 | },
21 | json: true
22 | }, (err, res, body) => {
23 | if (err) return reject(err);
24 | if (res.statusCode !== 200) return reject({ status: res.statusCode, data: body });
25 |
26 | resolve(body);
27 | });
28 | });
29 | }
30 |
31 | getConnectServers(connectUserToken, connectUserId) {
32 | return new Promise((resolve, reject) => {
33 | request({
34 | url: `https://connect.emby.media/service/servers?userId=${connectUserId}`,
35 | headers: {
36 | 'X-Application': `${this.appName}/${this.appVersion}`,
37 | 'X-Connect-UserToken': connectUserToken
38 | },
39 | json: true
40 | }, (err, res, body) => {
41 | if (err) return reject(err);
42 | if (res.statusCode !== 200) return reject({ status: res.statusCode, data: body });
43 |
44 | resolve(body);
45 | });
46 | });
47 | }
48 | }
49 |
50 | module.exports = ConnectAPI;
--------------------------------------------------------------------------------
/utils/helpers.js:
--------------------------------------------------------------------------------
1 | const clean = require('deep-cleaner');
2 |
3 | /**
4 | *
5 | * @param {Object} object the object to scrum
6 | * @param {string} keys the keys to filter from the object
7 | */
8 | exports.scrubObject = (object, ...keys) => {
9 | const scrubbedObject = {};
10 |
11 | Object.assign(scrubbedObject, object);
12 |
13 | clean(scrubbedObject, keys)
14 |
15 | return scrubbedObject;
16 | }
17 |
18 | exports.booleanToYN = (bool) => bool ? 'Yes' : 'No';
--------------------------------------------------------------------------------
/utils/logger.js:
--------------------------------------------------------------------------------
1 | const fs = require('fs');
2 | const path = require('path');
3 | const stringify = require('json-stringify-safe');
4 |
5 | require('colors');
6 |
7 | class Logger {
8 | /**
9 | *
10 | * @param {string} logType Type of log, DB or FILE
11 | * @param {string} logPath Path to log directory
12 | * @param {number} logRetentionCount Amount of logs to keep before removing old logs
13 | * @param {string} loggerName Name of the log file & entries
14 | */
15 | constructor(logType, logPath, logRetentionCount, loggerName, maxLogFileSizeMB, enableDebugLogging = false) {
16 | this.logType = logType;
17 | this.path = logPath;
18 | this.loggerName = loggerName;
19 | this.logRetentionCount = logRetentionCount;
20 | this.maxLogFileSizeMB = maxLogFileSizeMB;
21 | this.timestamp = new Date();
22 |
23 | /**
24 | * @private
25 | */
26 | this.enableDebugLogging = enableDebugLogging;
27 |
28 | this.file = this.getLogFilePath();
29 | }
30 |
31 | /**
32 | * @returns {string} Log path
33 | */
34 | get logPath() {
35 | this.createDirIfDoesntExist();
36 | return this.path;
37 | }
38 |
39 | info(msg) {
40 | this.write(msg, 'info');
41 | }
42 |
43 | error(msg) {
44 | this.write(msg, 'error');
45 | }
46 |
47 | debug(msg) {
48 | this.write(msg, 'debug');
49 | }
50 |
51 | warn(msg) {
52 | this.write(msg, 'warn');
53 | }
54 |
55 | /**
56 | * Create the log dir if it is not presence
57 | * @private
58 | * @returns {void}
59 | */
60 | createDirIfDoesntExist() {
61 | if (!fs.existsSync(path.join(this.path))) {
62 | fs.mkdirSync(path.join(this.path));
63 | }
64 | }
65 |
66 | getLogFilePath() {
67 | return path.join(
68 | this.path,
69 | `${this.loggerName}-${(this.timestamp.getTime() / 1000) | 0}.txt`
70 | );
71 | }
72 |
73 | static formatMessage(message, level) {
74 | return `[${Date().toLocaleString()}] ${level}: ${message}\n`;
75 | }
76 |
77 | /**
78 | *
79 | * @private
80 | * @param {string} message Message to log
81 | * @param {string} level Level of the log
82 | * @returns {void}
83 | */
84 | write(messageContent, level) {
85 | if (level === 'debug' && !this.enableDebugLogging) return;
86 |
87 | const message = typeof messageContent === 'object' || Array.isArray(messageContent) ? messageContent.message ? messageContent.message : stringify(messageContent, null, ' ') : String(messageContent);
88 |
89 | if (this.logType === 'console') {
90 | switch (level) {
91 | case 'info':
92 | console.log('Info: '.blue + message);
93 | break;
94 | case 'warn':
95 | console.warn('Warn: '.yellow + message);
96 | break;
97 | case 'error':
98 | console.error('Error: '.red + message);
99 | break;
100 | case 'debug':
101 | console.debug('Debug: '.green + message);
102 | }
103 | } else if (this.logType === 'file') {
104 | this.createDirIfDoesntExist();
105 |
106 | if (!fs.existsSync(this.file)) {
107 | fs.writeFileSync(this.file, this.constructor.formatMessage(message, level));
108 | } else {
109 | const fileSize = fs.statSync(this.file).size / (1024 * 1024);
110 |
111 | if (fileSize > this.maxLogFileSizeMB) {
112 | this.file = this.getLogFilePath();
113 |
114 | fs.writeFileSync(this.file, this.constructor.formatMessage(message, level));
115 | } else {
116 | fs.appendFileSync(this.file, this.constructor.formatMessage(message, level));
117 | }
118 | }
119 |
120 | let files = fs.readdirSync(this.path);
121 |
122 | if (files.length > this.logRetentionCount) {
123 | fs.unlinkSync(path.join(this.path, files[0]));
124 | }
125 | }
126 | }
127 | }
128 |
129 | module.exports = Logger;
130 |
--------------------------------------------------------------------------------
/utils/serverDiscoveryClient.js:
--------------------------------------------------------------------------------
1 | const dgram = require('dgram');
2 | const crypto = require('crypto');
3 | const { rejects } = require('assert');
4 |
5 | /**
6 | * @returns {Object} the servers found
7 | */
8 | exports.find = (timeoutMs, serverType) =>
9 | new Promise((resolve, reject) => {
10 | const servers = [];
11 | const client = dgram.createSocket({ type: 'udp4', reuseAddr: true });
12 |
13 | client.bind(); // not to be confused with function.bind(this, etcetcsfuck)
14 |
15 | client.on('listening', () => {
16 | const message = Buffer.from(`who is ${serverType}Server?`);
17 |
18 | client.setBroadcast(true);
19 | client.send(
20 | message,
21 | 0,
22 | message.length,
23 | 7359,
24 | '255.255.255.255',
25 | (err) => {
26 | if (err) reject(err);
27 | }
28 | );
29 | });
30 |
31 | client.on('message', (message, info) => {
32 | if (info) {
33 | // message is a buffer
34 | const response = JSON.parse(message.toString());
35 | const addressData = response.Address.split(':');
36 |
37 | const server = {
38 | fullAddress: response.Address,
39 | address: addressData[1].slice(2, addressData[1].length),
40 | port: addressData[2],
41 | protocol: addressData[0],
42 | name: response.Name,
43 | id: crypto.randomBytes(15).toString("hex"),
44 | type: serverType
45 | }
46 |
47 | servers.push(server);
48 | }
49 | });
50 |
51 | setTimeout(() => {
52 | resolve(servers);
53 | client.close();
54 | }, timeoutMs);
55 | });
--------------------------------------------------------------------------------
/utils/startupHandler.js:
--------------------------------------------------------------------------------
1 | const mkdirp = require('mkdirp');
2 | const fs = require('fs');
3 | const path = require('path');
4 | const untildify = require('untildify');
5 |
6 | // Electron provides a wonderful startup API for windows and mac. Linux? Not so much.
7 |
8 | class startupHandler {
9 | /**
10 | *
11 | * @param {import("electron").App} app
12 | */
13 | constructor(app, name) {
14 | this.app = app;
15 | this.name = name;
16 | }
17 |
18 | /**
19 | * @private
20 | */
21 | get directory() {
22 | return untildify(`~/.config/autostart/`);
23 | }
24 |
25 | /**
26 | * @private
27 | */
28 | get filePath() {
29 | return path.join(this.directory, `${this.name}.desktop`);
30 | }
31 |
32 | /**
33 | * @returns {boolean} Is the app configured to open at login
34 | */
35 | get isEnabled() {
36 | if (process.platform === 'linux') {
37 | return fs.existsSync(this.filePath);
38 | } else {
39 | return this.app.getLoginItemSettings().openAtLogin;
40 | }
41 | }
42 |
43 | /**
44 | * @returns {void}
45 | */
46 | enable() {
47 | if(process.platform === 'linux') {
48 | const data = `
49 | [Desktop Entry]
50 | Type=Application
51 | Version=1.0
52 | Name=${this.name}
53 | Exec=${process.execPath}
54 | StartupNotify=false
55 | Terminal=false
56 | `
57 |
58 | mkdirp.sync(this.directory);
59 | fs.writeFileSync(this.filePath, data);
60 | } else {
61 | this.app.setLoginItemSettings({
62 | openAtLogin: true
63 | });
64 | }
65 | }
66 |
67 | /**
68 | * @returns {void}
69 | */
70 | disable() {
71 | if(process.platform === 'linux') {
72 | const exists = fs.existsSync(this.filePath);
73 |
74 | if(exists) {
75 | fs.unlinkSync(this.filePath);
76 | }
77 | } else {
78 | this.app.setLoginItemSettings({
79 | openAtLogin: false
80 | });
81 | }
82 | }
83 |
84 | /**
85 | * @returns {void}
86 | */
87 | toggle() {
88 | if (this.isEnabled) {
89 | this.disable();
90 | } else {
91 | this.enable();
92 | }
93 | }
94 | }
95 |
96 | module.exports = startupHandler;
97 |
--------------------------------------------------------------------------------
/utils/updateChecker.js:
--------------------------------------------------------------------------------
1 | const request = require('request');
2 | const semver = require('semver');
3 |
4 | class GithubClient {
5 | /**
6 | *
7 | * @param {string} author Name of the author or organization of the repo
8 | * @param {string} repoName Name of the repo
9 | * @param {string} version Version as a string (EX: 4.2.0)
10 | */
11 | constructor(author, repoName, version) {
12 | this.author = author;
13 | this.repoName = repoName;
14 | this.version = version;
15 | }
16 |
17 | /**
18 | * @typedef UpdateResponse
19 | * @property {boolean} pending - is an update pending
20 | * @property {string} version - the latest available version on GitHub
21 | */
22 |
23 | /**
24 | * @callback checkFullfilled
25 | * @param {Error} Error
26 | * @param {UpdateResponse} response Response object
27 | */
28 |
29 | /**
30 | *
31 | * @param {checkFullfilled} cb callback
32 | */
33 |
34 | checkForUpdate(cb) {
35 | request(
36 | `https://api.github.com/repos/${this.author}/${this.repoName}/releases/latest`,
37 | {
38 | headers: {
39 | 'User-Agent': `${this.repoName}/${this.version}`
40 | },
41 | json: true
42 | },
43 | (err, res, body) => {
44 | if (err) return cb(err, null);
45 | if (res.statusCode !== 200)
46 | return cb(`Status: ${res.statusCode} Body: ${body}`);
47 |
48 | // prettier-ignore
49 | // const currentVersion = this.constructor.extractVersionAsInt(this.version);
50 | // // prettier-ignore
51 | // const latestVersion = this.constructor.extractVersionAsInt(body.tag_name);
52 |
53 | if (semver.lte(this.version, body.tag_name)) {
54 | cb(null, {
55 | pending: true,
56 | version: body.tag_name
57 | });
58 | } else {
59 | cb(null, {
60 | pending: false,
61 | version: body.tag_name
62 | });
63 | }
64 | }
65 | );
66 | }
67 | }
68 |
69 | module.exports = GithubClient;
70 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@electron/get@^1.0.1", "@electron/get@^1.6.0":
6 | version "1.12.4"
7 | resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.12.4.tgz#a5971113fc1bf8fa12a8789dc20152a7359f06ab"
8 | integrity sha512-6nr9DbJPUR9Xujw6zD3y+rS95TyItEVM0NVjt1EehY2vUWfIgPiIPVHxCvaTS0xr2B+DRxovYVKbuOWqC35kjg==
9 | dependencies:
10 | debug "^4.1.1"
11 | env-paths "^2.2.0"
12 | fs-extra "^8.1.0"
13 | got "^9.6.0"
14 | progress "^2.0.3"
15 | semver "^6.2.0"
16 | sumchecker "^3.0.1"
17 | optionalDependencies:
18 | global-agent "^2.0.2"
19 | global-tunnel-ng "^2.7.1"
20 |
21 | "@sindresorhus/is@^0.14.0":
22 | version "0.14.0"
23 | resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea"
24 | integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==
25 |
26 | "@szmarczak/http-timer@^1.1.2":
27 | version "1.1.2"
28 | resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421"
29 | integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==
30 | dependencies:
31 | defer-to-connect "^1.0.1"
32 |
33 | "@types/glob@^7.1.1":
34 | version "7.1.3"
35 | resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183"
36 | integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==
37 | dependencies:
38 | "@types/minimatch" "*"
39 | "@types/node" "*"
40 |
41 | "@types/minimatch@*":
42 | version "3.0.4"
43 | resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.4.tgz#f0ec25dbf2f0e4b18647313ac031134ca5b24b21"
44 | integrity sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==
45 |
46 | "@types/node@*":
47 | version "15.6.1"
48 | resolved "https://registry.yarnpkg.com/@types/node/-/node-15.6.1.tgz#32d43390d5c62c5b6ec486a9bc9c59544de39a08"
49 | integrity sha512-7EIraBEyRHEe7CH+Fm1XvgqU6uwZN8Q7jppJGcqjROMT29qhAuuOxYB1uEY5UMYQKEmA5D+5tBnhdaPXSsLONA==
50 |
51 | "@types/node@^14.6.2":
52 | version "14.17.1"
53 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.17.1.tgz#5e07e0cb2ff793aa7a1b41deae76221e6166049f"
54 | integrity sha512-/tpUyFD7meeooTRwl3sYlihx2BrJE7q9XF71EguPFIySj9B7qgnRtHsHTho+0AUm4m1SvWGm6uSncrR94q6Vtw==
55 |
56 | "@types/yauzl@^2.9.1":
57 | version "2.9.1"
58 | resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.1.tgz#d10f69f9f522eef3cf98e30afb684a1e1ec923af"
59 | integrity sha512-A1b8SU4D10uoPjwb0lnHmmu8wZhR9d+9o2PKBQT2jU5YPTKsxac6M2qGAdY7VcL+dHHhARVUDmeg0rOrcd9EjA==
60 | dependencies:
61 | "@types/node" "*"
62 |
63 | ajv-formats@^2.0.2:
64 | version "2.1.0"
65 | resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.0.tgz#96eaf83e38d32108b66d82a9cb0cfa24886cdfeb"
66 | integrity sha512-USH2jBb+C/hIpwD2iRjp0pe0k+MvzG0mlSn/FIdCgQhUb9ALPRjt2KIQdfZDS9r0ZIeUAg7gOu9KL0PFqGqr5Q==
67 | dependencies:
68 | ajv "^8.0.0"
69 |
70 | ajv@^6.12.3:
71 | version "6.12.6"
72 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
73 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
74 | dependencies:
75 | fast-deep-equal "^3.1.1"
76 | fast-json-stable-stringify "^2.0.0"
77 | json-schema-traverse "^0.4.1"
78 | uri-js "^4.2.2"
79 |
80 | ajv@^8.0.0, ajv@^8.1.0:
81 | version "8.5.0"
82 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.5.0.tgz#695528274bcb5afc865446aa275484049a18ae4b"
83 | integrity sha512-Y2l399Tt1AguU3BPRP9Fn4eN+Or+StUGWCUpbnFyXSo8NZ9S4uj+AG2pjs5apK+ZMOwYOz1+a+VKvKH7CudXgQ==
84 | dependencies:
85 | fast-deep-equal "^3.1.1"
86 | json-schema-traverse "^1.0.0"
87 | require-from-string "^2.0.2"
88 | uri-js "^4.2.2"
89 |
90 | ansi-regex@^2.0.0:
91 | version "2.1.1"
92 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
93 | integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
94 |
95 | ansi-regex@^3.0.0:
96 | version "3.0.0"
97 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
98 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
99 |
100 | ansi-regex@^5.0.0:
101 | version "5.0.0"
102 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
103 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==
104 |
105 | ansi-styles@^2.2.1:
106 | version "2.2.1"
107 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
108 | integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
109 |
110 | ansi-styles@^4.0.0, ansi-styles@^4.1.0:
111 | version "4.3.0"
112 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
113 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
114 | dependencies:
115 | color-convert "^2.0.1"
116 |
117 | aproba@^1.0.3:
118 | version "1.2.0"
119 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
120 | integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
121 |
122 | archiver-utils@~0.3.0:
123 | version "0.3.0"
124 | resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-0.3.0.tgz#9d85340892fe9e7c6c1b1b6af3c33692cf595b70"
125 | integrity sha1-nYU0CJL+nnxsGxtq88M2ks9ZW3A=
126 | dependencies:
127 | glob "~6.0.0"
128 | lazystream "~0.1.0"
129 | lodash "~3.10.0"
130 | normalize-path "~2.0.0"
131 | readable-stream "~2.0.0"
132 |
133 | archiver@^0.11.0:
134 | version "0.11.0"
135 | resolved "https://registry.yarnpkg.com/archiver/-/archiver-0.11.0.tgz#98177da7a6c0192b7f2798f30cd6eab8abd76690"
136 | integrity sha1-mBd9p6bAGSt/J5jzDNbquKvXZpA=
137 | dependencies:
138 | async "~0.9.0"
139 | buffer-crc32 "~0.2.1"
140 | glob "~3.2.6"
141 | lazystream "~0.1.0"
142 | lodash "~2.4.1"
143 | readable-stream "~1.0.26"
144 | tar-stream "~0.4.0"
145 | zip-stream "~0.4.0"
146 |
147 | archiver@^0.21.0:
148 | version "0.21.0"
149 | resolved "https://registry.yarnpkg.com/archiver/-/archiver-0.21.0.tgz#129da0c8eae1a9bf08a012d8a4e2043a1e2909ce"
150 | integrity sha1-Ep2gyOrhqb8IoBLYpOIEOh4pCc4=
151 | dependencies:
152 | archiver-utils "~0.3.0"
153 | async "~1.5.0"
154 | buffer-crc32 "~0.2.1"
155 | glob "~6.0.0"
156 | lodash "~3.10.0"
157 | readable-stream "~2.0.0"
158 | tar-stream "~1.3.1"
159 | zip-stream "~0.8.0"
160 |
161 | are-we-there-yet@~1.1.2:
162 | version "1.1.5"
163 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
164 | integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==
165 | dependencies:
166 | delegates "^1.0.0"
167 | readable-stream "^2.0.6"
168 |
169 | asar@^3.0.0:
170 | version "3.0.3"
171 | resolved "https://registry.yarnpkg.com/asar/-/asar-3.0.3.tgz#1fef03c2d6d2de0cbad138788e4f7ae03b129c7b"
172 | integrity sha512-k7zd+KoR+n8pl71PvgElcoKHrVNiSXtw7odKbyNpmgKe7EGRF9Pnu3uLOukD37EvavKwVFxOUpqXTIZC5B5Pmw==
173 | dependencies:
174 | chromium-pickle-js "^0.2.0"
175 | commander "^5.0.0"
176 | glob "^7.1.6"
177 | minimatch "^3.0.4"
178 | optionalDependencies:
179 | "@types/glob" "^7.1.1"
180 |
181 | asn1@~0.2.3:
182 | version "0.2.4"
183 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
184 | integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==
185 | dependencies:
186 | safer-buffer "~2.1.0"
187 |
188 | assert-plus@1.0.0, assert-plus@^1.0.0:
189 | version "1.0.0"
190 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
191 | integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
192 |
193 | astral-regex@^2.0.0:
194 | version "2.0.0"
195 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
196 | integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==
197 |
198 | async@^1.5.2, async@~1.5.0:
199 | version "1.5.2"
200 | resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
201 | integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=
202 |
203 | async@~0.9.0:
204 | version "0.9.2"
205 | resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d"
206 | integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=
207 |
208 | asynckit@^0.4.0:
209 | version "0.4.0"
210 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
211 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
212 |
213 | at-least-node@^1.0.0:
214 | version "1.0.0"
215 | resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
216 | integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
217 |
218 | atomically@^1.7.0:
219 | version "1.7.0"
220 | resolved "https://registry.yarnpkg.com/atomically/-/atomically-1.7.0.tgz#c07a0458432ea6dbc9a3506fffa424b48bccaafe"
221 | integrity sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==
222 |
223 | author-regex@^1.0.0:
224 | version "1.0.0"
225 | resolved "https://registry.yarnpkg.com/author-regex/-/author-regex-1.0.0.tgz#d08885be6b9bbf9439fe087c76287245f0a81450"
226 | integrity sha1-0IiFvmubv5Q5/gh8dihyRfCoFFA=
227 |
228 | aws-sign2@~0.7.0:
229 | version "0.7.0"
230 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
231 | integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
232 |
233 | aws4@^1.8.0:
234 | version "1.11.0"
235 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59"
236 | integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==
237 |
238 | balanced-match@^1.0.0:
239 | version "1.0.0"
240 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
241 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
242 |
243 | base64-js@^1.3.1, base64-js@^1.5.1:
244 | version "1.5.1"
245 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
246 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
247 |
248 | bcrypt-pbkdf@^1.0.0:
249 | version "1.0.2"
250 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
251 | integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=
252 | dependencies:
253 | tweetnacl "^0.14.3"
254 |
255 | bl@^0.9.0:
256 | version "0.9.5"
257 | resolved "https://registry.yarnpkg.com/bl/-/bl-0.9.5.tgz#c06b797af085ea00bc527afc8efcf11de2232054"
258 | integrity sha1-wGt5evCF6gC8Unr8jvzxHeIjIFQ=
259 | dependencies:
260 | readable-stream "~1.0.26"
261 |
262 | bl@^1.0.0:
263 | version "1.2.3"
264 | resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7"
265 | integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==
266 | dependencies:
267 | readable-stream "^2.3.5"
268 | safe-buffer "^5.1.1"
269 |
270 | bl@^4.0.3:
271 | version "4.1.0"
272 | resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a"
273 | integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==
274 | dependencies:
275 | buffer "^5.5.0"
276 | inherits "^2.0.4"
277 | readable-stream "^3.4.0"
278 |
279 | bluebird@^3.1.1, bluebird@^3.5.0:
280 | version "3.7.2"
281 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
282 | integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
283 |
284 | boolean@^3.0.1:
285 | version "3.0.2"
286 | resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.0.2.tgz#df1baa18b6a2b0e70840475e1d93ec8fe75b2570"
287 | integrity sha512-RwywHlpCRc3/Wh81MiCKun4ydaIFyW5Ea6JbL6sRCVx5q5irDw7pMXBUFYF/jArQ6YrG36q0kpovc9P/Kd3I4g==
288 |
289 | brace-expansion@^1.1.7:
290 | version "1.1.11"
291 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
292 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
293 | dependencies:
294 | balanced-match "^1.0.0"
295 | concat-map "0.0.1"
296 |
297 | buffer-alloc-unsafe@^1.1.0:
298 | version "1.1.0"
299 | resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0"
300 | integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==
301 |
302 | buffer-alloc@^1.2.0:
303 | version "1.2.0"
304 | resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec"
305 | integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==
306 | dependencies:
307 | buffer-alloc-unsafe "^1.1.0"
308 | buffer-fill "^1.0.0"
309 |
310 | buffer-crc32@~0.2.1, buffer-crc32@~0.2.3:
311 | version "0.2.13"
312 | resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
313 | integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=
314 |
315 | buffer-fill@^1.0.0:
316 | version "1.0.0"
317 | resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
318 | integrity sha1-+PeLdniYiO858gXNY39o5wISKyw=
319 |
320 | buffer-from@^1.0.0:
321 | version "1.1.1"
322 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
323 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
324 |
325 | buffer@^5.5.0:
326 | version "5.7.1"
327 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
328 | integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
329 | dependencies:
330 | base64-js "^1.3.1"
331 | ieee754 "^1.1.13"
332 |
333 | cacheable-request@^6.0.0:
334 | version "6.1.0"
335 | resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912"
336 | integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==
337 | dependencies:
338 | clone-response "^1.0.2"
339 | get-stream "^5.1.0"
340 | http-cache-semantics "^4.0.0"
341 | keyv "^3.0.0"
342 | lowercase-keys "^2.0.0"
343 | normalize-url "^4.1.0"
344 | responselike "^1.0.2"
345 |
346 | camelcase@^3.0.0:
347 | version "3.0.0"
348 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
349 | integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo=
350 |
351 | caseless@~0.12.0:
352 | version "0.12.0"
353 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
354 | integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
355 |
356 | chalk@^1.1.1:
357 | version "1.1.3"
358 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
359 | integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
360 | dependencies:
361 | ansi-styles "^2.2.1"
362 | escape-string-regexp "^1.0.2"
363 | has-ansi "^2.0.0"
364 | strip-ansi "^3.0.0"
365 | supports-color "^2.0.0"
366 |
367 | chalk@^4.1.0:
368 | version "4.1.1"
369 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad"
370 | integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==
371 | dependencies:
372 | ansi-styles "^4.1.0"
373 | supports-color "^7.1.0"
374 |
375 | chownr@^1.1.1:
376 | version "1.1.4"
377 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
378 | integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
379 |
380 | chromium-pickle-js@^0.2.0:
381 | version "0.2.0"
382 | resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205"
383 | integrity sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=
384 |
385 | clean-stack@^2.1.0:
386 | version "2.2.0"
387 | resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
388 | integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
389 |
390 | cli-color@0.3.2:
391 | version "0.3.2"
392 | resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-0.3.2.tgz#75fa5f728c308cc4ac594b05e06cc5d80daccd86"
393 | integrity sha1-dfpfcowwjMSsWUsF4GzF2A2szYY=
394 | dependencies:
395 | d "~0.1.1"
396 | es5-ext "~0.10.2"
397 | memoizee "0.3.x"
398 | timers-ext "0.1.x"
399 |
400 | cli-truncate@^2.1.0:
401 | version "2.1.0"
402 | resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7"
403 | integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==
404 | dependencies:
405 | slice-ansi "^3.0.0"
406 | string-width "^4.2.0"
407 |
408 | cliui@^3.2.0:
409 | version "3.2.0"
410 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
411 | integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=
412 | dependencies:
413 | string-width "^1.0.1"
414 | strip-ansi "^3.0.1"
415 | wrap-ansi "^2.0.0"
416 |
417 | clone-response@^1.0.2:
418 | version "1.0.2"
419 | resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b"
420 | integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=
421 | dependencies:
422 | mimic-response "^1.0.0"
423 |
424 | clui@^0.3.1:
425 | version "0.3.6"
426 | resolved "https://registry.yarnpkg.com/clui/-/clui-0.3.6.tgz#8e1e5cea7332a6e54083f59da0ccbe1d6f2fa787"
427 | integrity sha512-Z4UbgZILlIAjkEkZiDOa2aoYjohKx7fa6DxIh6cE9A6WNWZ61iXfQc6CmdC9SKdS5nO0P0UyQ+WfoXfB65e3HQ==
428 | dependencies:
429 | cli-color "0.3.2"
430 |
431 | code-point-at@^1.0.0:
432 | version "1.1.0"
433 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
434 | integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
435 |
436 | color-convert@^2.0.1:
437 | version "2.0.1"
438 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
439 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
440 | dependencies:
441 | color-name "~1.1.4"
442 |
443 | color-name@~1.1.4:
444 | version "1.1.4"
445 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
446 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
447 |
448 | colors@^1.4.0:
449 | version "1.4.0"
450 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
451 | integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
452 |
453 | combined-stream@^1.0.6, combined-stream@~1.0.6:
454 | version "1.0.8"
455 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
456 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
457 | dependencies:
458 | delayed-stream "~1.0.0"
459 |
460 | commander@^5.0.0, commander@^5.1.0:
461 | version "5.1.0"
462 | resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae"
463 | integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==
464 |
465 | compare-version@^0.1.2:
466 | version "0.1.2"
467 | resolved "https://registry.yarnpkg.com/compare-version/-/compare-version-0.1.2.tgz#0162ec2d9351f5ddd59a9202cba935366a725080"
468 | integrity sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA=
469 |
470 | compress-commons@~0.1.0:
471 | version "0.1.6"
472 | resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-0.1.6.tgz#0c740870fde58cba516f0ac0c822e33a0b85dfa3"
473 | integrity sha1-DHQIcP3ljLpRbwrAyCLjOguF36M=
474 | dependencies:
475 | buffer-crc32 "~0.2.1"
476 | crc32-stream "~0.3.1"
477 | readable-stream "~1.0.26"
478 |
479 | compress-commons@~0.4.0:
480 | version "0.4.2"
481 | resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-0.4.2.tgz#1a0847489f0d713d0dd76343c0c2d055dc9cd892"
482 | integrity sha1-GghHSJ8NcT0N12NDwMLQVdyc2JI=
483 | dependencies:
484 | buffer-crc32 "~0.2.1"
485 | crc32-stream "~0.4.0"
486 | node-int64 "~0.4.0"
487 | normalize-path "~2.0.0"
488 | readable-stream "~2.0.0"
489 |
490 | concat-map@0.0.1:
491 | version "0.0.1"
492 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
493 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
494 |
495 | concat-stream@^1.6.2:
496 | version "1.6.2"
497 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
498 | integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
499 | dependencies:
500 | buffer-from "^1.0.0"
501 | inherits "^2.0.3"
502 | readable-stream "^2.2.2"
503 | typedarray "^0.0.6"
504 |
505 | conf@^10.0.0:
506 | version "10.0.1"
507 | resolved "https://registry.yarnpkg.com/conf/-/conf-10.0.1.tgz#038093e5cbddc0e59bc14f63382c4ce732a4781d"
508 | integrity sha512-QClEoNcruwBL84QgMEPHibL3ERxWIrRKhbjJKG1VsFBadm5QpS0jsu4QjY/maxUvhyAKXeyrs+ws+lC6PajnEg==
509 | dependencies:
510 | ajv "^8.1.0"
511 | ajv-formats "^2.0.2"
512 | atomically "^1.7.0"
513 | debounce-fn "^4.0.0"
514 | dot-prop "^6.0.1"
515 | env-paths "^2.2.1"
516 | json-schema-typed "^7.0.3"
517 | onetime "^5.1.2"
518 | pkg-up "^3.1.0"
519 | semver "^7.3.5"
520 |
521 | config-chain@^1.1.11:
522 | version "1.1.12"
523 | resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa"
524 | integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==
525 | dependencies:
526 | ini "^1.3.4"
527 | proto-list "~1.2.1"
528 |
529 | console-control-strings@^1.0.0, console-control-strings@~1.1.0:
530 | version "1.1.0"
531 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
532 | integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
533 |
534 | core-js@^3.6.5:
535 | version "3.8.3"
536 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.8.3.tgz#c21906e1f14f3689f93abcc6e26883550dd92dd0"
537 | integrity sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==
538 |
539 | core-util-is@1.0.2, core-util-is@~1.0.0:
540 | version "1.0.2"
541 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
542 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
543 |
544 | crc32-stream@~0.3.1:
545 | version "0.3.4"
546 | resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-0.3.4.tgz#73bc25b45fac1db6632231a7bfce8927e9f06552"
547 | integrity sha1-c7wltF+sHbZjIjGnv86JJ+nwZVI=
548 | dependencies:
549 | buffer-crc32 "~0.2.1"
550 | readable-stream "~1.0.24"
551 |
552 | crc32-stream@~0.4.0:
553 | version "0.4.0"
554 | resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-0.4.0.tgz#b54d4c6eefd35b53e653d062b306edc6316ae26d"
555 | integrity sha1-tU1Mbu/TW1PmU9BiswbtxjFq4m0=
556 | dependencies:
557 | buffer-crc32 "~0.2.1"
558 | readable-stream "~2.0.0"
559 |
560 | d@1, d@^1.0.1:
561 | version "1.0.1"
562 | resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a"
563 | integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==
564 | dependencies:
565 | es5-ext "^0.10.50"
566 | type "^1.0.1"
567 |
568 | d@~0.1.1:
569 | version "0.1.1"
570 | resolved "https://registry.yarnpkg.com/d/-/d-0.1.1.tgz#da184c535d18d8ee7ba2aa229b914009fae11309"
571 | integrity sha1-2hhMU10Y2O57oqoim5FACfrhEwk=
572 | dependencies:
573 | es5-ext "~0.10.2"
574 |
575 | dashdash@^1.12.0:
576 | version "1.14.1"
577 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
578 | integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
579 | dependencies:
580 | assert-plus "^1.0.0"
581 |
582 | debounce-fn@^4.0.0:
583 | version "4.0.0"
584 | resolved "https://registry.yarnpkg.com/debounce-fn/-/debounce-fn-4.0.0.tgz#ed76d206d8a50e60de0dd66d494d82835ffe61c7"
585 | integrity sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==
586 | dependencies:
587 | mimic-fn "^3.0.0"
588 |
589 | debug@^2.2.0, debug@^2.6.8, debug@^2.6.9:
590 | version "2.6.9"
591 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
592 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
593 | dependencies:
594 | ms "2.0.0"
595 |
596 | debug@^3.1.0:
597 | version "3.2.7"
598 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
599 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
600 | dependencies:
601 | ms "^2.1.1"
602 |
603 | debug@^4.0.1, debug@^4.1.0, debug@^4.1.1:
604 | version "4.3.1"
605 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
606 | integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
607 | dependencies:
608 | ms "2.1.2"
609 |
610 | decamelize@^1.1.1:
611 | version "1.2.0"
612 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
613 | integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
614 |
615 | decompress-response@^3.3.0:
616 | version "3.3.0"
617 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3"
618 | integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=
619 | dependencies:
620 | mimic-response "^1.0.0"
621 |
622 | decompress-response@^4.2.0:
623 | version "4.2.1"
624 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-4.2.1.tgz#414023cc7a302da25ce2ec82d0d5238ccafd8986"
625 | integrity sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==
626 | dependencies:
627 | mimic-response "^2.0.0"
628 |
629 | dedent-js@^1.0.1:
630 | version "1.0.1"
631 | resolved "https://registry.yarnpkg.com/dedent-js/-/dedent-js-1.0.1.tgz#bee5fb7c9e727d85dffa24590d10ec1ab1255305"
632 | integrity sha1-vuX7fJ5yfYXf+iRZDRDsGrElUwU=
633 |
634 | deep-cleaner@^1.2.1:
635 | version "1.2.1"
636 | resolved "https://registry.yarnpkg.com/deep-cleaner/-/deep-cleaner-1.2.1.tgz#abc30c05bbf79a43abaf449da50e41d89ba47890"
637 | integrity sha512-/WLL2O+GnNA/t9DRagOBT7ckJnfz5wV/8TqLo5bHykcBlXPH0+PeUzd0/s2MzOQ3IiRRIFpcWVe016rCqQIhMA==
638 |
639 | deep-extend@^0.6.0:
640 | version "0.6.0"
641 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
642 | integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
643 |
644 | defer-to-connect@^1.0.1:
645 | version "1.1.3"
646 | resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591"
647 | integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==
648 |
649 | define-properties@^1.1.3:
650 | version "1.1.3"
651 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
652 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
653 | dependencies:
654 | object-keys "^1.0.12"
655 |
656 | delayed-stream@~1.0.0:
657 | version "1.0.0"
658 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
659 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
660 |
661 | delegates@^1.0.0:
662 | version "1.0.0"
663 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
664 | integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
665 |
666 | detect-libc@^1.0.3:
667 | version "1.0.3"
668 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
669 | integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
670 |
671 | detect-node@^2.0.4:
672 | version "2.0.4"
673 | resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c"
674 | integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==
675 |
676 | discord-rpc@^3.2.0:
677 | version "3.2.0"
678 | resolved "https://registry.yarnpkg.com/discord-rpc/-/discord-rpc-3.2.0.tgz#8da4e01654fce38e959d70b58708c46ae1d6c8fa"
679 | integrity sha512-KJv0EVbGMlr04HoG6f5b3wD7X9kSHzQ2Ed2qfHSDvYJ1MkE8RbCQmMcQQrSvAxpfsqZgUjB/bsfi/mjyicCH+A==
680 | dependencies:
681 | node-fetch "^2.6.1"
682 | ws "^7.3.1"
683 |
684 | dot-prop@^6.0.1:
685 | version "6.0.1"
686 | resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083"
687 | integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==
688 | dependencies:
689 | is-obj "^2.0.0"
690 |
691 | duplexer3@^0.1.4:
692 | version "0.1.4"
693 | resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
694 | integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=
695 |
696 | ecc-jsbn@~0.1.1:
697 | version "0.1.2"
698 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
699 | integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=
700 | dependencies:
701 | jsbn "~0.1.0"
702 | safer-buffer "^2.1.0"
703 |
704 | electron-context-menu@^3.1.1:
705 | version "3.1.1"
706 | resolved "https://registry.yarnpkg.com/electron-context-menu/-/electron-context-menu-3.1.1.tgz#109884e79df293f7e85effcbdbbe45d362987d94"
707 | integrity sha512-LJhwaKf6XHwk2LQ5SdwoGNODoA8lRwks9bbEeAqqMf4e3hsrT7pZtX6MaHKYNFZKxF14JjI/VR+VRjGvxmaQoA==
708 | dependencies:
709 | cli-truncate "^2.1.0"
710 | electron-dl "^3.2.1"
711 | electron-is-dev "^2.0.0"
712 |
713 | electron-dl@^3.2.1:
714 | version "3.2.1"
715 | resolved "https://registry.yarnpkg.com/electron-dl/-/electron-dl-3.2.1.tgz#244a1316c663691f70e8aa4515cd1a401b4b5690"
716 | integrity sha512-k5DFjocJlXbrjshO1zeWe/Gz7HkGwCgnehHPemiyzN2B/LfLlnbIX7sCj5F+huTwZ2l+nQehTI4IR37xvCn6FQ==
717 | dependencies:
718 | ext-name "^5.0.0"
719 | pupa "^2.0.1"
720 | unused-filename "^2.1.0"
721 |
722 | electron-installer-run@^0.1.2:
723 | version "0.1.2"
724 | resolved "https://registry.yarnpkg.com/electron-installer-run/-/electron-installer-run-0.1.2.tgz#9993d351f5fb711bd4c867e0da087cbbd22d446f"
725 | integrity sha1-mZPTUfX7cRvUyGfg2gh8u9ItRG8=
726 | dependencies:
727 | debug "^2.2.0"
728 | which "^1.2.0"
729 |
730 | electron-installer-zip@^0.1.2:
731 | version "0.1.2"
732 | resolved "https://registry.yarnpkg.com/electron-installer-zip/-/electron-installer-zip-0.1.2.tgz#e529b70ad26107a1211cfb93d6951d50cb52f096"
733 | integrity sha1-5Sm3CtJhB6EhHPuT1pUdUMtS8JY=
734 | dependencies:
735 | archiver "^0.21.0"
736 | async "^1.5.2"
737 | debug "^2.2.0"
738 | electron-installer-run "^0.1.2"
739 | fs-extra "^0.26.7"
740 | mongodb-js-cli "0.0.2"
741 | zip-folder "^1.0.0"
742 |
743 | electron-is-dev@^1.0.1, electron-is-dev@^1.1.0:
744 | version "1.2.0"
745 | resolved "https://registry.yarnpkg.com/electron-is-dev/-/electron-is-dev-1.2.0.tgz#2e5cea0a1b3ccf1c86f577cee77363ef55deb05e"
746 | integrity sha512-R1oD5gMBPS7PVU8gJwH6CtT0e6VSoD0+SzSnYpNm+dBkcijgA+K7VAMHDfnRq/lkKPZArpzplTW6jfiMYosdzw==
747 |
748 | electron-is-dev@^2.0.0:
749 | version "2.0.0"
750 | resolved "https://registry.yarnpkg.com/electron-is-dev/-/electron-is-dev-2.0.0.tgz#833487a069b8dad21425c67a19847d9064ab19bd"
751 | integrity sha512-3X99K852Yoqu9AcW50qz3ibYBWY79/pBhlMCab8ToEWS48R0T9tyxRiQhwylE7zQdXrMnx2JKqUJyMPmt5FBqA==
752 |
753 | electron-notarize@^1.0.0:
754 | version "1.0.0"
755 | resolved "https://registry.yarnpkg.com/electron-notarize/-/electron-notarize-1.0.0.tgz#bc925b1ccc3f79e58e029e8c4706572b01a9fd8f"
756 | integrity sha512-dsib1IAquMn0onCrNMJ6gtEIZn/azG8hZMCYOuZIMVMUeRMgBYHK1s5TK9P8xAcrAjh/2aN5WYHzgVSWX314og==
757 | dependencies:
758 | debug "^4.1.1"
759 | fs-extra "^9.0.1"
760 |
761 | electron-osx-sign@^0.5.0:
762 | version "0.5.0"
763 | resolved "https://registry.yarnpkg.com/electron-osx-sign/-/electron-osx-sign-0.5.0.tgz#fc258c5e896859904bbe3d01da06902c04b51c3a"
764 | integrity sha512-icoRLHzFz/qxzDh/N4Pi2z4yVHurlsCAYQvsCSG7fCedJ4UJXBS6PoQyGH71IfcqKupcKeK7HX/NkyfG+v6vlQ==
765 | dependencies:
766 | bluebird "^3.5.0"
767 | compare-version "^0.1.2"
768 | debug "^2.6.8"
769 | isbinaryfile "^3.0.2"
770 | minimist "^1.2.0"
771 | plist "^3.0.1"
772 |
773 | electron-packager@^15.2.0:
774 | version "15.2.0"
775 | resolved "https://registry.yarnpkg.com/electron-packager/-/electron-packager-15.2.0.tgz#c93de19d75e7c03d159a56295384d371cb625ad4"
776 | integrity sha512-BaklTBRQy1JTijR3hi8XxHf/uo76rHbDCNM/eQHSblzE9C0NoNfOe86nPxB7y1u2jwlqoEJ4zFiHpTFioKGGRA==
777 | dependencies:
778 | "@electron/get" "^1.6.0"
779 | asar "^3.0.0"
780 | debug "^4.0.1"
781 | electron-notarize "^1.0.0"
782 | electron-osx-sign "^0.5.0"
783 | extract-zip "^2.0.0"
784 | filenamify "^4.1.0"
785 | fs-extra "^9.0.0"
786 | galactus "^0.2.1"
787 | get-package-info "^1.0.0"
788 | junk "^3.1.0"
789 | parse-author "^2.0.0"
790 | plist "^3.0.0"
791 | rcedit "^2.0.0"
792 | resolve "^1.1.6"
793 | semver "^7.1.3"
794 | yargs-parser "^20.0.0"
795 |
796 | electron-store@^8.0.0:
797 | version "8.0.0"
798 | resolved "https://registry.yarnpkg.com/electron-store/-/electron-store-8.0.0.tgz#81a4e687958e2dae1c5c84cc099a8148be776337"
799 | integrity sha512-ZgRPUZkfrrjWSqxZeaxu7lEvmYf6tgl49dLMqxXGnEmliSiwv3u4rJPG+mH3fBQP9PBqgSh4TCuxHZImMMUgWg==
800 | dependencies:
801 | conf "^10.0.0"
802 | type-fest "^1.0.2"
803 |
804 | electron-unhandled@^3.0.2:
805 | version "3.0.2"
806 | resolved "https://registry.yarnpkg.com/electron-unhandled/-/electron-unhandled-3.0.2.tgz#e14a19c830ccf7b6e755191c8e78d23094d25112"
807 | integrity sha512-IIqXnM5eNgV7k5sDA/GZ39ygJbpfF3WTArNGQ1TB4AI6ajQuuVztA0M6Mq9uEpmTh5gz4nR+YsTNWYsHLoM5rw==
808 | dependencies:
809 | clean-stack "^2.1.0"
810 | electron-is-dev "^1.0.1"
811 | ensure-error "^2.0.0"
812 | lodash.debounce "^4.0.8"
813 |
814 | electron-util@^0.16.0:
815 | version "0.16.0"
816 | resolved "https://registry.yarnpkg.com/electron-util/-/electron-util-0.16.0.tgz#00ef60b23aa5a47b454c07fb353bc4d203d3ceb1"
817 | integrity sha512-r13cauuQ8p8d++ZVdeMDtQ2VlpblJBcpKnK7sf2tGnN8CCWyRGYerS2K5f3FiblFIQkyS0rE4tFVG0IOEc2F3A==
818 | dependencies:
819 | electron-is-dev "^1.1.0"
820 | new-github-issue-url "^0.2.1"
821 |
822 | electron@^13.3.0:
823 | version "13.3.0"
824 | resolved "https://registry.yarnpkg.com/electron/-/electron-13.3.0.tgz#5f4f245723dd50fcd2c3d386a1d66fe748af404f"
825 | integrity sha512-d/BvOLDjI4i7yf9tqCuLL2fFGA2TrM/D9PyRpua+rJolG0qrwp/FohP02L0m+44kmPpofIo4l3NPwLmzyKKimA==
826 | dependencies:
827 | "@electron/get" "^1.0.1"
828 | "@types/node" "^14.6.2"
829 | extract-zip "^1.0.3"
830 |
831 | emoji-regex@^8.0.0:
832 | version "8.0.0"
833 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
834 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
835 |
836 | encodeurl@^1.0.2:
837 | version "1.0.2"
838 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
839 | integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
840 |
841 | end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1:
842 | version "1.4.4"
843 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
844 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
845 | dependencies:
846 | once "^1.4.0"
847 |
848 | ensure-error@^2.0.0:
849 | version "2.1.0"
850 | resolved "https://registry.yarnpkg.com/ensure-error/-/ensure-error-2.1.0.tgz#f11fbe383c0cf4a54850ac77acceb7bc06e0f99d"
851 | integrity sha512-+BMSJHw9gxiJAAp2ZR1E0TNcL09dD3lOvkl7WVm4+Y6xnes/pMetP/TzCHiDduh8ihNDjbGfuYxl7l4PA1xZ8A==
852 |
853 | env-paths@^2.2.0:
854 | version "2.2.0"
855 | resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43"
856 | integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==
857 |
858 | env-paths@^2.2.1:
859 | version "2.2.1"
860 | resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2"
861 | integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==
862 |
863 | error-ex@^1.2.0:
864 | version "1.3.2"
865 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
866 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
867 | dependencies:
868 | is-arrayish "^0.2.1"
869 |
870 | es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@~0.10.11, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46, es5-ext@~0.10.5, es5-ext@~0.10.6:
871 | version "0.10.53"
872 | resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1"
873 | integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==
874 | dependencies:
875 | es6-iterator "~2.0.3"
876 | es6-symbol "~3.1.3"
877 | next-tick "~1.0.0"
878 |
879 | es6-error@^4.1.1:
880 | version "4.1.1"
881 | resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d"
882 | integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==
883 |
884 | es6-iterator@~0.1.3:
885 | version "0.1.3"
886 | resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-0.1.3.tgz#d6f58b8c4fc413c249b4baa19768f8e4d7c8944e"
887 | integrity sha1-1vWLjE/EE8JJtLqhl2j45NfIlE4=
888 | dependencies:
889 | d "~0.1.1"
890 | es5-ext "~0.10.5"
891 | es6-symbol "~2.0.1"
892 |
893 | es6-iterator@~2.0.3:
894 | version "2.0.3"
895 | resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"
896 | integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c=
897 | dependencies:
898 | d "1"
899 | es5-ext "^0.10.35"
900 | es6-symbol "^3.1.1"
901 |
902 | es6-symbol@^3.1.1, es6-symbol@~3.1.3:
903 | version "3.1.3"
904 | resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18"
905 | integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==
906 | dependencies:
907 | d "^1.0.1"
908 | ext "^1.1.2"
909 |
910 | es6-symbol@~2.0.1:
911 | version "2.0.1"
912 | resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-2.0.1.tgz#761b5c67cfd4f1d18afb234f691d678682cb3bf3"
913 | integrity sha1-dhtcZ8/U8dGK+yNPaR1nhoLLO/M=
914 | dependencies:
915 | d "~0.1.1"
916 | es5-ext "~0.10.5"
917 |
918 | es6-weak-map@~0.1.4:
919 | version "0.1.4"
920 | resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-0.1.4.tgz#706cef9e99aa236ba7766c239c8b9e286ea7d228"
921 | integrity sha1-cGzvnpmqI2undmwjnIueKG6n0ig=
922 | dependencies:
923 | d "~0.1.1"
924 | es5-ext "~0.10.6"
925 | es6-iterator "~0.1.3"
926 | es6-symbol "~2.0.1"
927 |
928 | escape-goat@^2.0.0:
929 | version "2.1.1"
930 | resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675"
931 | integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==
932 |
933 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
934 | version "1.0.5"
935 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
936 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
937 |
938 | escape-string-regexp@^4.0.0:
939 | version "4.0.0"
940 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
941 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
942 |
943 | event-emitter@~0.3.4:
944 | version "0.3.5"
945 | resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
946 | integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=
947 | dependencies:
948 | d "1"
949 | es5-ext "~0.10.14"
950 |
951 | expand-template@^2.0.3:
952 | version "2.0.3"
953 | resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c"
954 | integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==
955 |
956 | ext-list@^2.0.0:
957 | version "2.2.2"
958 | resolved "https://registry.yarnpkg.com/ext-list/-/ext-list-2.2.2.tgz#0b98e64ed82f5acf0f2931babf69212ef52ddd37"
959 | integrity sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==
960 | dependencies:
961 | mime-db "^1.28.0"
962 |
963 | ext-name@^5.0.0:
964 | version "5.0.0"
965 | resolved "https://registry.yarnpkg.com/ext-name/-/ext-name-5.0.0.tgz#70781981d183ee15d13993c8822045c506c8f0a6"
966 | integrity sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==
967 | dependencies:
968 | ext-list "^2.0.0"
969 | sort-keys-length "^1.0.0"
970 |
971 | ext@^1.1.2:
972 | version "1.4.0"
973 | resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244"
974 | integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==
975 | dependencies:
976 | type "^2.0.0"
977 |
978 | extend@~3.0.2:
979 | version "3.0.2"
980 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
981 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
982 |
983 | extract-zip@^1.0.3:
984 | version "1.7.0"
985 | resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927"
986 | integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==
987 | dependencies:
988 | concat-stream "^1.6.2"
989 | debug "^2.6.9"
990 | mkdirp "^0.5.4"
991 | yauzl "^2.10.0"
992 |
993 | extract-zip@^2.0.0:
994 | version "2.0.1"
995 | resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a"
996 | integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==
997 | dependencies:
998 | debug "^4.1.1"
999 | get-stream "^5.1.0"
1000 | yauzl "^2.10.0"
1001 | optionalDependencies:
1002 | "@types/yauzl" "^2.9.1"
1003 |
1004 | extsprintf@1.3.0:
1005 | version "1.3.0"
1006 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
1007 | integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
1008 |
1009 | extsprintf@^1.2.0:
1010 | version "1.4.0"
1011 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
1012 | integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
1013 |
1014 | fast-deep-equal@^3.1.1:
1015 | version "3.1.3"
1016 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
1017 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
1018 |
1019 | fast-json-stable-stringify@^2.0.0:
1020 | version "2.1.0"
1021 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
1022 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
1023 |
1024 | fd-slicer@~1.1.0:
1025 | version "1.1.0"
1026 | resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e"
1027 | integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=
1028 | dependencies:
1029 | pend "~1.2.0"
1030 |
1031 | figures@^1.4.0:
1032 | version "1.7.0"
1033 | resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
1034 | integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=
1035 | dependencies:
1036 | escape-string-regexp "^1.0.5"
1037 | object-assign "^4.1.0"
1038 |
1039 | filename-reserved-regex@^2.0.0:
1040 | version "2.0.0"
1041 | resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz#abf73dfab735d045440abfea2d91f389ebbfa229"
1042 | integrity sha1-q/c9+rc10EVECr/qLZHzieu/oik=
1043 |
1044 | filenamify@^4.1.0:
1045 | version "4.3.0"
1046 | resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-4.3.0.tgz#62391cb58f02b09971c9d4f9d63b3cf9aba03106"
1047 | integrity sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==
1048 | dependencies:
1049 | filename-reserved-regex "^2.0.0"
1050 | strip-outer "^1.0.1"
1051 | trim-repeated "^1.0.0"
1052 |
1053 | find-up@^1.0.0:
1054 | version "1.1.2"
1055 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
1056 | integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=
1057 | dependencies:
1058 | path-exists "^2.0.0"
1059 | pinkie-promise "^2.0.0"
1060 |
1061 | find-up@^2.0.0:
1062 | version "2.1.0"
1063 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
1064 | integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c=
1065 | dependencies:
1066 | locate-path "^2.0.0"
1067 |
1068 | find-up@^3.0.0:
1069 | version "3.0.0"
1070 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
1071 | integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
1072 | dependencies:
1073 | locate-path "^3.0.0"
1074 |
1075 | flora-colossus@^1.0.0:
1076 | version "1.0.1"
1077 | resolved "https://registry.yarnpkg.com/flora-colossus/-/flora-colossus-1.0.1.tgz#aba198425a8185341e64f9d2a6a96fd9a3cbdb93"
1078 | integrity sha512-d+9na7t9FyH8gBJoNDSi28mE4NgQVGGvxQ4aHtFRetjyh5SXjuus+V5EZaxFmFdXVemSOrx0lsgEl/ZMjnOWJA==
1079 | dependencies:
1080 | debug "^4.1.1"
1081 | fs-extra "^7.0.0"
1082 |
1083 | forever-agent@~0.6.1:
1084 | version "0.6.1"
1085 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
1086 | integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
1087 |
1088 | form-data@~2.3.2:
1089 | version "2.3.3"
1090 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
1091 | integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
1092 | dependencies:
1093 | asynckit "^0.4.0"
1094 | combined-stream "^1.0.6"
1095 | mime-types "^2.1.12"
1096 |
1097 | fs-constants@^1.0.0:
1098 | version "1.0.0"
1099 | resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
1100 | integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
1101 |
1102 | fs-extra@^0.26.7:
1103 | version "0.26.7"
1104 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.26.7.tgz#9ae1fdd94897798edab76d0918cf42d0c3184fa9"
1105 | integrity sha1-muH92UiXeY7at20JGM9C0MMYT6k=
1106 | dependencies:
1107 | graceful-fs "^4.1.2"
1108 | jsonfile "^2.1.0"
1109 | klaw "^1.0.0"
1110 | path-is-absolute "^1.0.0"
1111 | rimraf "^2.2.8"
1112 |
1113 | fs-extra@^4.0.0:
1114 | version "4.0.3"
1115 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94"
1116 | integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==
1117 | dependencies:
1118 | graceful-fs "^4.1.2"
1119 | jsonfile "^4.0.0"
1120 | universalify "^0.1.0"
1121 |
1122 | fs-extra@^7.0.0:
1123 | version "7.0.1"
1124 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
1125 | integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==
1126 | dependencies:
1127 | graceful-fs "^4.1.2"
1128 | jsonfile "^4.0.0"
1129 | universalify "^0.1.0"
1130 |
1131 | fs-extra@^8.1.0:
1132 | version "8.1.0"
1133 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
1134 | integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==
1135 | dependencies:
1136 | graceful-fs "^4.2.0"
1137 | jsonfile "^4.0.0"
1138 | universalify "^0.1.0"
1139 |
1140 | fs-extra@^9.0.0, fs-extra@^9.0.1:
1141 | version "9.1.0"
1142 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d"
1143 | integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==
1144 | dependencies:
1145 | at-least-node "^1.0.0"
1146 | graceful-fs "^4.2.0"
1147 | jsonfile "^6.0.1"
1148 | universalify "^2.0.0"
1149 |
1150 | fs.realpath@^1.0.0:
1151 | version "1.0.0"
1152 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
1153 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
1154 |
1155 | function-bind@^1.1.1:
1156 | version "1.1.1"
1157 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
1158 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
1159 |
1160 | galactus@^0.2.1:
1161 | version "0.2.1"
1162 | resolved "https://registry.yarnpkg.com/galactus/-/galactus-0.2.1.tgz#cbed2d20a40c1f5679a35908e2b9415733e78db9"
1163 | integrity sha1-y+0tIKQMH1Z5o1kI4rlBVzPnjbk=
1164 | dependencies:
1165 | debug "^3.1.0"
1166 | flora-colossus "^1.0.0"
1167 | fs-extra "^4.0.0"
1168 |
1169 | gauge@~2.7.3:
1170 | version "2.7.4"
1171 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
1172 | integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=
1173 | dependencies:
1174 | aproba "^1.0.3"
1175 | console-control-strings "^1.0.0"
1176 | has-unicode "^2.0.0"
1177 | object-assign "^4.1.0"
1178 | signal-exit "^3.0.0"
1179 | string-width "^1.0.1"
1180 | strip-ansi "^3.0.1"
1181 | wide-align "^1.1.0"
1182 |
1183 | get-caller-file@^1.0.1:
1184 | version "1.0.3"
1185 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
1186 | integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==
1187 |
1188 | get-package-info@^1.0.0:
1189 | version "1.0.0"
1190 | resolved "https://registry.yarnpkg.com/get-package-info/-/get-package-info-1.0.0.tgz#6432796563e28113cd9474dbbd00052985a4999c"
1191 | integrity sha1-ZDJ5ZWPigRPNlHTbvQAFKYWkmZw=
1192 | dependencies:
1193 | bluebird "^3.1.1"
1194 | debug "^2.2.0"
1195 | lodash.get "^4.0.0"
1196 | read-pkg-up "^2.0.0"
1197 |
1198 | get-stream@^4.1.0:
1199 | version "4.1.0"
1200 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
1201 | integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
1202 | dependencies:
1203 | pump "^3.0.0"
1204 |
1205 | get-stream@^5.1.0:
1206 | version "5.2.0"
1207 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
1208 | integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
1209 | dependencies:
1210 | pump "^3.0.0"
1211 |
1212 | getpass@^0.1.1:
1213 | version "0.1.7"
1214 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
1215 | integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=
1216 | dependencies:
1217 | assert-plus "^1.0.0"
1218 |
1219 | github-from-package@0.0.0:
1220 | version "0.0.0"
1221 | resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce"
1222 | integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=
1223 |
1224 | glob@^7.1.3:
1225 | version "7.1.6"
1226 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
1227 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
1228 | dependencies:
1229 | fs.realpath "^1.0.0"
1230 | inflight "^1.0.4"
1231 | inherits "2"
1232 | minimatch "^3.0.4"
1233 | once "^1.3.0"
1234 | path-is-absolute "^1.0.0"
1235 |
1236 | glob@^7.1.6:
1237 | version "7.1.7"
1238 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90"
1239 | integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==
1240 | dependencies:
1241 | fs.realpath "^1.0.0"
1242 | inflight "^1.0.4"
1243 | inherits "2"
1244 | minimatch "^3.0.4"
1245 | once "^1.3.0"
1246 | path-is-absolute "^1.0.0"
1247 |
1248 | glob@~3.2.6:
1249 | version "3.2.11"
1250 | resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz#4a973f635b9190f715d10987d5c00fd2815ebe3d"
1251 | integrity sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=
1252 | dependencies:
1253 | inherits "2"
1254 | minimatch "0.3"
1255 |
1256 | glob@~6.0.0:
1257 | version "6.0.4"
1258 | resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22"
1259 | integrity sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=
1260 | dependencies:
1261 | inflight "^1.0.4"
1262 | inherits "2"
1263 | minimatch "2 || 3"
1264 | once "^1.3.0"
1265 | path-is-absolute "^1.0.0"
1266 |
1267 | global-agent@^2.0.2:
1268 | version "2.1.12"
1269 | resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-2.1.12.tgz#e4ae3812b731a9e81cbf825f9377ef450a8e4195"
1270 | integrity sha512-caAljRMS/qcDo69X9BfkgrihGUgGx44Fb4QQToNQjsiWh+YlQ66uqYVAdA8Olqit+5Ng0nkz09je3ZzANMZcjg==
1271 | dependencies:
1272 | boolean "^3.0.1"
1273 | core-js "^3.6.5"
1274 | es6-error "^4.1.1"
1275 | matcher "^3.0.0"
1276 | roarr "^2.15.3"
1277 | semver "^7.3.2"
1278 | serialize-error "^7.0.1"
1279 |
1280 | global-tunnel-ng@^2.7.1:
1281 | version "2.7.1"
1282 | resolved "https://registry.yarnpkg.com/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz#d03b5102dfde3a69914f5ee7d86761ca35d57d8f"
1283 | integrity sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==
1284 | dependencies:
1285 | encodeurl "^1.0.2"
1286 | lodash "^4.17.10"
1287 | npm-conf "^1.1.3"
1288 | tunnel "^0.0.6"
1289 |
1290 | globalthis@^1.0.1:
1291 | version "1.0.1"
1292 | resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.1.tgz#40116f5d9c071f9e8fb0037654df1ab3a83b7ef9"
1293 | integrity sha512-mJPRTc/P39NH/iNG4mXa9aIhNymaQikTrnspeCa2ZuJ+mH2QN/rXwtX3XwKrHqWgUQFbNZKtHM105aHzJalElw==
1294 | dependencies:
1295 | define-properties "^1.1.3"
1296 |
1297 | got@^9.6.0:
1298 | version "9.6.0"
1299 | resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85"
1300 | integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==
1301 | dependencies:
1302 | "@sindresorhus/is" "^0.14.0"
1303 | "@szmarczak/http-timer" "^1.1.2"
1304 | cacheable-request "^6.0.0"
1305 | decompress-response "^3.3.0"
1306 | duplexer3 "^0.1.4"
1307 | get-stream "^4.1.0"
1308 | lowercase-keys "^1.0.1"
1309 | mimic-response "^1.0.1"
1310 | p-cancelable "^1.0.0"
1311 | to-readable-stream "^1.0.0"
1312 | url-parse-lax "^3.0.0"
1313 |
1314 | graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0:
1315 | version "4.2.4"
1316 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
1317 | integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==
1318 |
1319 | graceful-fs@^4.1.9:
1320 | version "4.2.6"
1321 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee"
1322 | integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==
1323 |
1324 | har-schema@^2.0.0:
1325 | version "2.0.0"
1326 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
1327 | integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
1328 |
1329 | har-validator@~5.1.3:
1330 | version "5.1.5"
1331 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd"
1332 | integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==
1333 | dependencies:
1334 | ajv "^6.12.3"
1335 | har-schema "^2.0.0"
1336 |
1337 | has-ansi@^2.0.0:
1338 | version "2.0.0"
1339 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
1340 | integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
1341 | dependencies:
1342 | ansi-regex "^2.0.0"
1343 |
1344 | has-flag@^4.0.0:
1345 | version "4.0.0"
1346 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
1347 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
1348 |
1349 | has-unicode@^2.0.0:
1350 | version "2.0.1"
1351 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
1352 | integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
1353 |
1354 | has@^1.0.3:
1355 | version "1.0.3"
1356 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
1357 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
1358 | dependencies:
1359 | function-bind "^1.1.1"
1360 |
1361 | hosted-git-info@^2.1.4:
1362 | version "2.8.8"
1363 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488"
1364 | integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==
1365 |
1366 | http-cache-semantics@^4.0.0:
1367 | version "4.1.0"
1368 | resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390"
1369 | integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==
1370 |
1371 | http-signature@~1.2.0:
1372 | version "1.2.0"
1373 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
1374 | integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=
1375 | dependencies:
1376 | assert-plus "^1.0.0"
1377 | jsprim "^1.2.2"
1378 | sshpk "^1.7.0"
1379 |
1380 | ieee754@^1.1.13:
1381 | version "1.2.1"
1382 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
1383 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
1384 |
1385 | inflight@^1.0.4:
1386 | version "1.0.6"
1387 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
1388 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
1389 | dependencies:
1390 | once "^1.3.0"
1391 | wrappy "1"
1392 |
1393 | inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3:
1394 | version "2.0.4"
1395 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
1396 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
1397 |
1398 | ini@^1.3.4, ini@~1.3.0:
1399 | version "1.3.8"
1400 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
1401 | integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
1402 |
1403 | invert-kv@^1.0.0:
1404 | version "1.0.0"
1405 | resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
1406 | integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY=
1407 |
1408 | is-arrayish@^0.2.1:
1409 | version "0.2.1"
1410 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
1411 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
1412 |
1413 | is-core-module@^2.1.0:
1414 | version "2.2.0"
1415 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a"
1416 | integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==
1417 | dependencies:
1418 | has "^1.0.3"
1419 |
1420 | is-core-module@^2.2.0:
1421 | version "2.4.0"
1422 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1"
1423 | integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==
1424 | dependencies:
1425 | has "^1.0.3"
1426 |
1427 | is-fullwidth-code-point@^1.0.0:
1428 | version "1.0.0"
1429 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
1430 | integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
1431 | dependencies:
1432 | number-is-nan "^1.0.0"
1433 |
1434 | is-fullwidth-code-point@^2.0.0:
1435 | version "2.0.0"
1436 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
1437 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
1438 |
1439 | is-fullwidth-code-point@^3.0.0:
1440 | version "3.0.0"
1441 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
1442 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
1443 |
1444 | is-obj@^2.0.0:
1445 | version "2.0.0"
1446 | resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982"
1447 | integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==
1448 |
1449 | is-plain-obj@^1.0.0:
1450 | version "1.1.0"
1451 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
1452 | integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4=
1453 |
1454 | is-typedarray@~1.0.0:
1455 | version "1.0.0"
1456 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
1457 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
1458 |
1459 | is-utf8@^0.2.0:
1460 | version "0.2.1"
1461 | resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
1462 | integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
1463 |
1464 | isarray@0.0.1:
1465 | version "0.0.1"
1466 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
1467 | integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
1468 |
1469 | isarray@~1.0.0:
1470 | version "1.0.0"
1471 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
1472 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
1473 |
1474 | isbinaryfile@^3.0.2:
1475 | version "3.0.3"
1476 | resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80"
1477 | integrity sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==
1478 | dependencies:
1479 | buffer-alloc "^1.2.0"
1480 |
1481 | isexe@^2.0.0:
1482 | version "2.0.0"
1483 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
1484 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
1485 |
1486 | isstream@~0.1.2:
1487 | version "0.1.2"
1488 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
1489 | integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
1490 |
1491 | jsbn@~0.1.0:
1492 | version "0.1.1"
1493 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
1494 | integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
1495 |
1496 | json-buffer@3.0.0:
1497 | version "3.0.0"
1498 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898"
1499 | integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=
1500 |
1501 | json-schema-traverse@^0.4.1:
1502 | version "0.4.1"
1503 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
1504 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
1505 |
1506 | json-schema-traverse@^1.0.0:
1507 | version "1.0.0"
1508 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
1509 | integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
1510 |
1511 | json-schema-typed@^7.0.3:
1512 | version "7.0.3"
1513 | resolved "https://registry.yarnpkg.com/json-schema-typed/-/json-schema-typed-7.0.3.tgz#23ff481b8b4eebcd2ca123b4fa0409e66469a2d9"
1514 | integrity sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==
1515 |
1516 | json-schema@0.2.3:
1517 | version "0.2.3"
1518 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
1519 | integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
1520 |
1521 | json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1:
1522 | version "5.0.1"
1523 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
1524 | integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
1525 |
1526 | jsonfile@^2.1.0:
1527 | version "2.4.0"
1528 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8"
1529 | integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug=
1530 | optionalDependencies:
1531 | graceful-fs "^4.1.6"
1532 |
1533 | jsonfile@^4.0.0:
1534 | version "4.0.0"
1535 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
1536 | integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
1537 | optionalDependencies:
1538 | graceful-fs "^4.1.6"
1539 |
1540 | jsonfile@^6.0.1:
1541 | version "6.1.0"
1542 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
1543 | integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
1544 | dependencies:
1545 | universalify "^2.0.0"
1546 | optionalDependencies:
1547 | graceful-fs "^4.1.6"
1548 |
1549 | jsprim@^1.2.2:
1550 | version "1.4.1"
1551 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
1552 | integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=
1553 | dependencies:
1554 | assert-plus "1.0.0"
1555 | extsprintf "1.3.0"
1556 | json-schema "0.2.3"
1557 | verror "1.10.0"
1558 |
1559 | junk@^3.1.0:
1560 | version "3.1.0"
1561 | resolved "https://registry.yarnpkg.com/junk/-/junk-3.1.0.tgz#31499098d902b7e98c5d9b9c80f43457a88abfa1"
1562 | integrity sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==
1563 |
1564 | keytar@^7.7.0:
1565 | version "7.7.0"
1566 | resolved "https://registry.yarnpkg.com/keytar/-/keytar-7.7.0.tgz#3002b106c01631aa79b1aa9ee0493b94179bbbd2"
1567 | integrity sha512-YEY9HWqThQc5q5xbXbRwsZTh2PJ36OSYRjSv3NN2xf5s5dpLTjEZnC2YikR29OaVybf9nQ0dJ/80i40RS97t/A==
1568 | dependencies:
1569 | node-addon-api "^3.0.0"
1570 | prebuild-install "^6.0.0"
1571 |
1572 | keyv@^3.0.0:
1573 | version "3.1.0"
1574 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9"
1575 | integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==
1576 | dependencies:
1577 | json-buffer "3.0.0"
1578 |
1579 | klaw@^1.0.0:
1580 | version "1.3.1"
1581 | resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439"
1582 | integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk=
1583 | optionalDependencies:
1584 | graceful-fs "^4.1.9"
1585 |
1586 | lazystream@~0.1.0:
1587 | version "0.1.0"
1588 | resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-0.1.0.tgz#1b25d63c772a4c20f0a5ed0a9d77f484b6e16920"
1589 | integrity sha1-GyXWPHcqTCDwpe0KnXf0hLbhaSA=
1590 | dependencies:
1591 | readable-stream "~1.0.2"
1592 |
1593 | lcid@^1.0.0:
1594 | version "1.0.0"
1595 | resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
1596 | integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=
1597 | dependencies:
1598 | invert-kv "^1.0.0"
1599 |
1600 | load-json-file@^1.0.0:
1601 | version "1.1.0"
1602 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
1603 | integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=
1604 | dependencies:
1605 | graceful-fs "^4.1.2"
1606 | parse-json "^2.2.0"
1607 | pify "^2.0.0"
1608 | pinkie-promise "^2.0.0"
1609 | strip-bom "^2.0.0"
1610 |
1611 | load-json-file@^2.0.0:
1612 | version "2.0.0"
1613 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
1614 | integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=
1615 | dependencies:
1616 | graceful-fs "^4.1.2"
1617 | parse-json "^2.2.0"
1618 | pify "^2.0.0"
1619 | strip-bom "^3.0.0"
1620 |
1621 | locate-path@^2.0.0:
1622 | version "2.0.0"
1623 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
1624 | integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=
1625 | dependencies:
1626 | p-locate "^2.0.0"
1627 | path-exists "^3.0.0"
1628 |
1629 | locate-path@^3.0.0:
1630 | version "3.0.0"
1631 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
1632 | integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
1633 | dependencies:
1634 | p-locate "^3.0.0"
1635 | path-exists "^3.0.0"
1636 |
1637 | lodash.assign@^4.0.3, lodash.assign@^4.0.6:
1638 | version "4.2.0"
1639 | resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7"
1640 | integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=
1641 |
1642 | lodash.debounce@^4.0.8:
1643 | version "4.0.8"
1644 | resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
1645 | integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168=
1646 |
1647 | lodash.get@^4.0.0:
1648 | version "4.4.2"
1649 | resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
1650 | integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=
1651 |
1652 | lodash@^4.17.10:
1653 | version "4.17.20"
1654 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
1655 | integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
1656 |
1657 | lodash@~2.4.1:
1658 | version "2.4.2"
1659 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-2.4.2.tgz#fadd834b9683073da179b3eae6d9c0d15053f73e"
1660 | integrity sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=
1661 |
1662 | lodash@~3.10.0, lodash@~3.10.1:
1663 | version "3.10.1"
1664 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6"
1665 | integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=
1666 |
1667 | lowercase-keys@^1.0.0, lowercase-keys@^1.0.1:
1668 | version "1.0.1"
1669 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f"
1670 | integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==
1671 |
1672 | lowercase-keys@^2.0.0:
1673 | version "2.0.0"
1674 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479"
1675 | integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==
1676 |
1677 | lru-cache@2:
1678 | version "2.7.3"
1679 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952"
1680 | integrity sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=
1681 |
1682 | lru-cache@^6.0.0:
1683 | version "6.0.0"
1684 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
1685 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
1686 | dependencies:
1687 | yallist "^4.0.0"
1688 |
1689 | lru-queue@0.1:
1690 | version "0.1.0"
1691 | resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3"
1692 | integrity sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=
1693 | dependencies:
1694 | es5-ext "~0.10.2"
1695 |
1696 | matcher@^3.0.0:
1697 | version "3.0.0"
1698 | resolved "https://registry.yarnpkg.com/matcher/-/matcher-3.0.0.tgz#bd9060f4c5b70aa8041ccc6f80368760994f30ca"
1699 | integrity sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==
1700 | dependencies:
1701 | escape-string-regexp "^4.0.0"
1702 |
1703 | material-icons@^0.7.2:
1704 | version "0.7.2"
1705 | resolved "https://registry.yarnpkg.com/material-icons/-/material-icons-0.7.2.tgz#cfcb9b8247c624df4fca59661e914b81ad4deceb"
1706 | integrity sha512-IrMBh/aFr2YRDHmM/gUoGB9Kq0DzmEkn/qcKcc/B4lG1FGQzG1Zs+kQyR5b5EXjAVEnTsi0fs+s7iDsiX3Indg==
1707 |
1708 | materialize-css@^1.0.0:
1709 | version "1.0.0"
1710 | resolved "https://registry.yarnpkg.com/materialize-css/-/materialize-css-1.0.0.tgz#8d5db1c4a81c6d65f3b2e2ca83a8e08daa24d1be"
1711 | integrity sha512-4/oecXl8y/1i8RDZvyvwAICyqwNoKU4or5uf8uoAd74k76KzZ0Llym4zhJ5lLNUskcqjO0AuMcvNyDkpz8Z6zw==
1712 |
1713 | memoizee@0.3.x:
1714 | version "0.3.10"
1715 | resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.3.10.tgz#4eca0d8aed39ec9d017f4c5c2f2f6432f42e5c8f"
1716 | integrity sha1-TsoNiu057J0Bf0xcLy9kMvQuXI8=
1717 | dependencies:
1718 | d "~0.1.1"
1719 | es5-ext "~0.10.11"
1720 | es6-weak-map "~0.1.4"
1721 | event-emitter "~0.3.4"
1722 | lru-queue "0.1"
1723 | next-tick "~0.2.2"
1724 | timers-ext "0.1"
1725 |
1726 | mime-db@1.47.0:
1727 | version "1.47.0"
1728 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c"
1729 | integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==
1730 |
1731 | mime-db@^1.28.0:
1732 | version "1.48.0"
1733 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.48.0.tgz#e35b31045dd7eada3aaad537ed88a33afbef2d1d"
1734 | integrity sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==
1735 |
1736 | mime-types@^2.1.12, mime-types@~2.1.19:
1737 | version "2.1.30"
1738 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d"
1739 | integrity sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==
1740 | dependencies:
1741 | mime-db "1.47.0"
1742 |
1743 | mimic-fn@^2.1.0:
1744 | version "2.1.0"
1745 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
1746 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
1747 |
1748 | mimic-fn@^3.0.0:
1749 | version "3.1.0"
1750 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-3.1.0.tgz#65755145bbf3e36954b949c16450427451d5ca74"
1751 | integrity sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==
1752 |
1753 | mimic-response@^1.0.0, mimic-response@^1.0.1:
1754 | version "1.0.1"
1755 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
1756 | integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
1757 |
1758 | mimic-response@^2.0.0:
1759 | version "2.1.0"
1760 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.1.0.tgz#d13763d35f613d09ec37ebb30bac0469c0ee8f43"
1761 | integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==
1762 |
1763 | minimatch@0.3:
1764 | version "0.3.0"
1765 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd"
1766 | integrity sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=
1767 | dependencies:
1768 | lru-cache "2"
1769 | sigmund "~1.0.0"
1770 |
1771 | "minimatch@2 || 3", minimatch@^3.0.4:
1772 | version "3.0.4"
1773 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
1774 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
1775 | dependencies:
1776 | brace-expansion "^1.1.7"
1777 |
1778 | minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5:
1779 | version "1.2.5"
1780 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
1781 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
1782 |
1783 | mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3:
1784 | version "0.5.3"
1785 | resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113"
1786 | integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
1787 |
1788 | mkdirp@^0.5.4:
1789 | version "0.5.5"
1790 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
1791 | integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
1792 | dependencies:
1793 | minimist "^1.2.5"
1794 |
1795 | mkdirp@^1.0.4:
1796 | version "1.0.4"
1797 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
1798 | integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
1799 |
1800 | modify-filename@^1.1.0:
1801 | version "1.1.0"
1802 | resolved "https://registry.yarnpkg.com/modify-filename/-/modify-filename-1.1.0.tgz#9a2dec83806fbb2d975f22beec859ca26b393aa1"
1803 | integrity sha1-mi3sg4Bvuy2XXyK+7IWcoms5OqE=
1804 |
1805 | mongodb-js-cli@0.0.2:
1806 | version "0.0.2"
1807 | resolved "https://registry.yarnpkg.com/mongodb-js-cli/-/mongodb-js-cli-0.0.2.tgz#97e474eb8cb2d2061a7f9b44b638d4d58397427d"
1808 | integrity sha1-l+R064yy0gYaf5tEtjjU1YOXQn0=
1809 | dependencies:
1810 | chalk "^1.1.1"
1811 | clui "^0.3.1"
1812 | debug "^2.2.0"
1813 | figures "^1.4.0"
1814 | yargs "^4.2.0"
1815 |
1816 | ms@2.0.0:
1817 | version "2.0.0"
1818 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
1819 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
1820 |
1821 | ms@2.1.2:
1822 | version "2.1.2"
1823 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
1824 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
1825 |
1826 | ms@^2.1.1:
1827 | version "2.1.3"
1828 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
1829 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
1830 |
1831 | napi-build-utils@^1.0.1:
1832 | version "1.0.2"
1833 | resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806"
1834 | integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==
1835 |
1836 | new-github-issue-url@^0.2.1:
1837 | version "0.2.1"
1838 | resolved "https://registry.yarnpkg.com/new-github-issue-url/-/new-github-issue-url-0.2.1.tgz#e17be1f665a92de465926603e44b9f8685630c1d"
1839 | integrity sha512-md4cGoxuT4T4d/HDOXbrUHkTKrp/vp+m3aOA7XXVYwNsUNMK49g3SQicTSeV5GIz/5QVGAeYRAOlyp9OvlgsYA==
1840 |
1841 | next-tick@1:
1842 | version "1.1.0"
1843 | resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb"
1844 | integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==
1845 |
1846 | next-tick@~0.2.2:
1847 | version "0.2.2"
1848 | resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-0.2.2.tgz#75da4a927ee5887e39065880065b7336413b310d"
1849 | integrity sha1-ddpKkn7liH45BliABltzNkE7MQ0=
1850 |
1851 | next-tick@~1.0.0:
1852 | version "1.0.0"
1853 | resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"
1854 | integrity sha1-yobR/ogoFpsBICCOPchCS524NCw=
1855 |
1856 | node-abi@^2.21.0:
1857 | version "2.30.0"
1858 | resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.30.0.tgz#8be53bf3e7945a34eea10e0fc9a5982776cf550b"
1859 | integrity sha512-g6bZh3YCKQRdwuO/tSZZYJAw622SjsRfJ2X0Iy4sSOHZ34/sPPdVBn8fev2tj7njzLwuqPw9uMtGsGkO5kIQvg==
1860 | dependencies:
1861 | semver "^5.4.1"
1862 |
1863 | node-addon-api@^3.0.0:
1864 | version "3.2.0"
1865 | resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.0.tgz#7028b56a7eb572b73873aed731a7f9c9365f5ee4"
1866 | integrity sha512-kcwSAWhPi4+QzAtsL2+2s/awvDo2GKLsvMCwNRxb5BUshteXU8U97NCyvQDsGKs/m0He9WcG4YWew/BnuLx++w==
1867 |
1868 | node-fetch@^2.6.1:
1869 | version "2.6.1"
1870 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052"
1871 | integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==
1872 |
1873 | node-int64@~0.4.0:
1874 | version "0.4.0"
1875 | resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
1876 | integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=
1877 |
1878 | noop-logger@^0.1.1:
1879 | version "0.1.1"
1880 | resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2"
1881 | integrity sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=
1882 |
1883 | normalize-package-data@^2.3.2:
1884 | version "2.5.0"
1885 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
1886 | integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
1887 | dependencies:
1888 | hosted-git-info "^2.1.4"
1889 | resolve "^1.10.0"
1890 | semver "2 || 3 || 4 || 5"
1891 | validate-npm-package-license "^3.0.1"
1892 |
1893 | normalize-path@~2.0.0:
1894 | version "2.0.1"
1895 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a"
1896 | integrity sha1-R4hqwWYnYNQmG32XnSQXCdPOP3o=
1897 |
1898 | normalize-url@^4.1.0:
1899 | version "4.5.0"
1900 | resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129"
1901 | integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==
1902 |
1903 | npm-conf@^1.1.3:
1904 | version "1.1.3"
1905 | resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9"
1906 | integrity sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==
1907 | dependencies:
1908 | config-chain "^1.1.11"
1909 | pify "^3.0.0"
1910 |
1911 | npmlog@^4.0.1:
1912 | version "4.1.2"
1913 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
1914 | integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
1915 | dependencies:
1916 | are-we-there-yet "~1.1.2"
1917 | console-control-strings "~1.1.0"
1918 | gauge "~2.7.3"
1919 | set-blocking "~2.0.0"
1920 |
1921 | number-is-nan@^1.0.0:
1922 | version "1.0.1"
1923 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
1924 | integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
1925 |
1926 | oauth-sign@~0.9.0:
1927 | version "0.9.0"
1928 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
1929 | integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
1930 |
1931 | object-assign@^4.1.0:
1932 | version "4.1.1"
1933 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
1934 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
1935 |
1936 | object-keys@^1.0.12:
1937 | version "1.1.1"
1938 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
1939 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
1940 |
1941 | once@^1.3.0, once@^1.3.1, once@^1.4.0:
1942 | version "1.4.0"
1943 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
1944 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
1945 | dependencies:
1946 | wrappy "1"
1947 |
1948 | onetime@^5.1.2:
1949 | version "5.1.2"
1950 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
1951 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
1952 | dependencies:
1953 | mimic-fn "^2.1.0"
1954 |
1955 | os-locale@^1.4.0:
1956 | version "1.4.0"
1957 | resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9"
1958 | integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=
1959 | dependencies:
1960 | lcid "^1.0.0"
1961 |
1962 | p-cancelable@^1.0.0:
1963 | version "1.1.0"
1964 | resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc"
1965 | integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==
1966 |
1967 | p-limit@^1.1.0:
1968 | version "1.3.0"
1969 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
1970 | integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==
1971 | dependencies:
1972 | p-try "^1.0.0"
1973 |
1974 | p-limit@^2.0.0:
1975 | version "2.3.0"
1976 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
1977 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
1978 | dependencies:
1979 | p-try "^2.0.0"
1980 |
1981 | p-locate@^2.0.0:
1982 | version "2.0.0"
1983 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
1984 | integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=
1985 | dependencies:
1986 | p-limit "^1.1.0"
1987 |
1988 | p-locate@^3.0.0:
1989 | version "3.0.0"
1990 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
1991 | integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
1992 | dependencies:
1993 | p-limit "^2.0.0"
1994 |
1995 | p-try@^1.0.0:
1996 | version "1.0.0"
1997 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
1998 | integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=
1999 |
2000 | p-try@^2.0.0:
2001 | version "2.2.0"
2002 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
2003 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
2004 |
2005 | parse-author@^2.0.0:
2006 | version "2.0.0"
2007 | resolved "https://registry.yarnpkg.com/parse-author/-/parse-author-2.0.0.tgz#d3460bf1ddd0dfaeed42da754242e65fb684a81f"
2008 | integrity sha1-00YL8d3Q367tQtp1QkLmX7aEqB8=
2009 | dependencies:
2010 | author-regex "^1.0.0"
2011 |
2012 | parse-json@^2.2.0:
2013 | version "2.2.0"
2014 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
2015 | integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
2016 | dependencies:
2017 | error-ex "^1.2.0"
2018 |
2019 | path-exists@^2.0.0:
2020 | version "2.1.0"
2021 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
2022 | integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=
2023 | dependencies:
2024 | pinkie-promise "^2.0.0"
2025 |
2026 | path-exists@^3.0.0:
2027 | version "3.0.0"
2028 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
2029 | integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
2030 |
2031 | path-exists@^4.0.0:
2032 | version "4.0.0"
2033 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
2034 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
2035 |
2036 | path-is-absolute@^1.0.0:
2037 | version "1.0.1"
2038 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
2039 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
2040 |
2041 | path-parse@^1.0.6:
2042 | version "1.0.6"
2043 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
2044 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
2045 |
2046 | path-type@^1.0.0:
2047 | version "1.1.0"
2048 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
2049 | integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=
2050 | dependencies:
2051 | graceful-fs "^4.1.2"
2052 | pify "^2.0.0"
2053 | pinkie-promise "^2.0.0"
2054 |
2055 | path-type@^2.0.0:
2056 | version "2.0.0"
2057 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73"
2058 | integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=
2059 | dependencies:
2060 | pify "^2.0.0"
2061 |
2062 | pend@~1.2.0:
2063 | version "1.2.0"
2064 | resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
2065 | integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA=
2066 |
2067 | performance-now@^2.1.0:
2068 | version "2.1.0"
2069 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
2070 | integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
2071 |
2072 | pify@^2.0.0:
2073 | version "2.3.0"
2074 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
2075 | integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
2076 |
2077 | pify@^3.0.0:
2078 | version "3.0.0"
2079 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
2080 | integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
2081 |
2082 | pinkie-promise@^2.0.0:
2083 | version "2.0.1"
2084 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
2085 | integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
2086 | dependencies:
2087 | pinkie "^2.0.0"
2088 |
2089 | pinkie@^2.0.0:
2090 | version "2.0.4"
2091 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
2092 | integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
2093 |
2094 | pkg-up@^3.1.0:
2095 | version "3.1.0"
2096 | resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5"
2097 | integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==
2098 | dependencies:
2099 | find-up "^3.0.0"
2100 |
2101 | plist@^3.0.0, plist@^3.0.1:
2102 | version "3.0.2"
2103 | resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.2.tgz#74bbf011124b90421c22d15779cee60060ba95bc"
2104 | integrity sha512-MSrkwZBdQ6YapHy87/8hDU8MnIcyxBKjeF+McXnr5A9MtffPewTs7G3hlpodT5TacyfIyFTaJEhh3GGcmasTgQ==
2105 | dependencies:
2106 | base64-js "^1.5.1"
2107 | xmlbuilder "^9.0.7"
2108 | xmldom "^0.5.0"
2109 |
2110 | prebuild-install@^6.0.0:
2111 | version "6.1.2"
2112 | resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-6.1.2.tgz#6ce5fc5978feba5d3cbffedca0682b136a0b5bff"
2113 | integrity sha512-PzYWIKZeP+967WuKYXlTOhYBgGOvTRSfaKI89XnfJ0ansRAH7hDU45X+K+FZeI1Wb/7p/NnuctPH3g0IqKUuSQ==
2114 | dependencies:
2115 | detect-libc "^1.0.3"
2116 | expand-template "^2.0.3"
2117 | github-from-package "0.0.0"
2118 | minimist "^1.2.3"
2119 | mkdirp-classic "^0.5.3"
2120 | napi-build-utils "^1.0.1"
2121 | node-abi "^2.21.0"
2122 | noop-logger "^0.1.1"
2123 | npmlog "^4.0.1"
2124 | pump "^3.0.0"
2125 | rc "^1.2.7"
2126 | simple-get "^3.0.3"
2127 | tar-fs "^2.0.0"
2128 | tunnel-agent "^0.6.0"
2129 |
2130 | prepend-http@^2.0.0:
2131 | version "2.0.0"
2132 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
2133 | integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=
2134 |
2135 | process-nextick-args@~1.0.6:
2136 | version "1.0.7"
2137 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
2138 | integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=
2139 |
2140 | process-nextick-args@~2.0.0:
2141 | version "2.0.1"
2142 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
2143 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
2144 |
2145 | progress@^2.0.3:
2146 | version "2.0.3"
2147 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
2148 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
2149 |
2150 | proto-list@~1.2.1:
2151 | version "1.2.4"
2152 | resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"
2153 | integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=
2154 |
2155 | psl@^1.1.28:
2156 | version "1.8.0"
2157 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
2158 | integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
2159 |
2160 | pump@^3.0.0:
2161 | version "3.0.0"
2162 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
2163 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
2164 | dependencies:
2165 | end-of-stream "^1.1.0"
2166 | once "^1.3.1"
2167 |
2168 | punycode@^2.1.0, punycode@^2.1.1:
2169 | version "2.1.1"
2170 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
2171 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
2172 |
2173 | pupa@^2.0.1:
2174 | version "2.1.1"
2175 | resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62"
2176 | integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==
2177 | dependencies:
2178 | escape-goat "^2.0.0"
2179 |
2180 | qs@~6.5.2:
2181 | version "6.5.2"
2182 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
2183 | integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
2184 |
2185 | rc@^1.2.7:
2186 | version "1.2.8"
2187 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
2188 | integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
2189 | dependencies:
2190 | deep-extend "^0.6.0"
2191 | ini "~1.3.0"
2192 | minimist "^1.2.0"
2193 | strip-json-comments "~2.0.1"
2194 |
2195 | rcedit@^2.0.0:
2196 | version "2.3.0"
2197 | resolved "https://registry.yarnpkg.com/rcedit/-/rcedit-2.3.0.tgz#951685a079db98a4cc8c21ebab75e374d5a0b108"
2198 | integrity sha512-h1gNEl9Oai1oijwyJ1WYqYSXTStHnOcv1KYljg/8WM4NAg3H1KBK3azIaKkQ1WQl+d7PoJpcBMscPfLXVKgCLQ==
2199 |
2200 | read-pkg-up@^1.0.1:
2201 | version "1.0.1"
2202 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
2203 | integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=
2204 | dependencies:
2205 | find-up "^1.0.0"
2206 | read-pkg "^1.0.0"
2207 |
2208 | read-pkg-up@^2.0.0:
2209 | version "2.0.0"
2210 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be"
2211 | integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=
2212 | dependencies:
2213 | find-up "^2.0.0"
2214 | read-pkg "^2.0.0"
2215 |
2216 | read-pkg@^1.0.0:
2217 | version "1.1.0"
2218 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
2219 | integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=
2220 | dependencies:
2221 | load-json-file "^1.0.0"
2222 | normalize-package-data "^2.3.2"
2223 | path-type "^1.0.0"
2224 |
2225 | read-pkg@^2.0.0:
2226 | version "2.0.0"
2227 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8"
2228 | integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=
2229 | dependencies:
2230 | load-json-file "^2.0.0"
2231 | normalize-package-data "^2.3.2"
2232 | path-type "^2.0.0"
2233 |
2234 | readable-stream@^1.0.27-1:
2235 | version "1.1.14"
2236 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
2237 | integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk=
2238 | dependencies:
2239 | core-util-is "~1.0.0"
2240 | inherits "~2.0.1"
2241 | isarray "0.0.1"
2242 | string_decoder "~0.10.x"
2243 |
2244 | readable-stream@^2.0.0, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.3.5:
2245 | version "2.3.7"
2246 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
2247 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
2248 | dependencies:
2249 | core-util-is "~1.0.0"
2250 | inherits "~2.0.3"
2251 | isarray "~1.0.0"
2252 | process-nextick-args "~2.0.0"
2253 | safe-buffer "~5.1.1"
2254 | string_decoder "~1.1.1"
2255 | util-deprecate "~1.0.1"
2256 |
2257 | readable-stream@^3.1.1, readable-stream@^3.4.0:
2258 | version "3.6.0"
2259 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
2260 | integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
2261 | dependencies:
2262 | inherits "^2.0.3"
2263 | string_decoder "^1.1.1"
2264 | util-deprecate "^1.0.1"
2265 |
2266 | readable-stream@~1.0.2, readable-stream@~1.0.24, readable-stream@~1.0.26:
2267 | version "1.0.34"
2268 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c"
2269 | integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=
2270 | dependencies:
2271 | core-util-is "~1.0.0"
2272 | inherits "~2.0.1"
2273 | isarray "0.0.1"
2274 | string_decoder "~0.10.x"
2275 |
2276 | readable-stream@~2.0.0:
2277 | version "2.0.6"
2278 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e"
2279 | integrity sha1-j5A0HmilPMySh4jaz80Rs265t44=
2280 | dependencies:
2281 | core-util-is "~1.0.0"
2282 | inherits "~2.0.1"
2283 | isarray "~1.0.0"
2284 | process-nextick-args "~1.0.6"
2285 | string_decoder "~0.10.x"
2286 | util-deprecate "~1.0.1"
2287 |
2288 | request@^2.88.2:
2289 | version "2.88.2"
2290 | resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
2291 | integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
2292 | dependencies:
2293 | aws-sign2 "~0.7.0"
2294 | aws4 "^1.8.0"
2295 | caseless "~0.12.0"
2296 | combined-stream "~1.0.6"
2297 | extend "~3.0.2"
2298 | forever-agent "~0.6.1"
2299 | form-data "~2.3.2"
2300 | har-validator "~5.1.3"
2301 | http-signature "~1.2.0"
2302 | is-typedarray "~1.0.0"
2303 | isstream "~0.1.2"
2304 | json-stringify-safe "~5.0.1"
2305 | mime-types "~2.1.19"
2306 | oauth-sign "~0.9.0"
2307 | performance-now "^2.1.0"
2308 | qs "~6.5.2"
2309 | safe-buffer "^5.1.2"
2310 | tough-cookie "~2.5.0"
2311 | tunnel-agent "^0.6.0"
2312 | uuid "^3.3.2"
2313 |
2314 | require-directory@^2.1.1:
2315 | version "2.1.1"
2316 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
2317 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
2318 |
2319 | require-from-string@^2.0.2:
2320 | version "2.0.2"
2321 | resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
2322 | integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
2323 |
2324 | require-main-filename@^1.0.1:
2325 | version "1.0.1"
2326 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
2327 | integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=
2328 |
2329 | resolve@^1.1.6:
2330 | version "1.20.0"
2331 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
2332 | integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
2333 | dependencies:
2334 | is-core-module "^2.2.0"
2335 | path-parse "^1.0.6"
2336 |
2337 | resolve@^1.10.0:
2338 | version "1.19.0"
2339 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c"
2340 | integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==
2341 | dependencies:
2342 | is-core-module "^2.1.0"
2343 | path-parse "^1.0.6"
2344 |
2345 | responselike@^1.0.2:
2346 | version "1.0.2"
2347 | resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7"
2348 | integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=
2349 | dependencies:
2350 | lowercase-keys "^1.0.0"
2351 |
2352 | rimraf@^2.2.8:
2353 | version "2.7.1"
2354 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
2355 | integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
2356 | dependencies:
2357 | glob "^7.1.3"
2358 |
2359 | rimraf@^3.0.2:
2360 | version "3.0.2"
2361 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
2362 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
2363 | dependencies:
2364 | glob "^7.1.3"
2365 |
2366 | roarr@^2.15.3:
2367 | version "2.15.4"
2368 | resolved "https://registry.yarnpkg.com/roarr/-/roarr-2.15.4.tgz#f5fe795b7b838ccfe35dc608e0282b9eba2e7afd"
2369 | integrity sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==
2370 | dependencies:
2371 | boolean "^3.0.1"
2372 | detect-node "^2.0.4"
2373 | globalthis "^1.0.1"
2374 | json-stringify-safe "^5.0.1"
2375 | semver-compare "^1.0.0"
2376 | sprintf-js "^1.1.2"
2377 |
2378 | safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0:
2379 | version "5.2.1"
2380 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
2381 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
2382 |
2383 | safe-buffer@~5.1.0, safe-buffer@~5.1.1:
2384 | version "5.1.2"
2385 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
2386 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
2387 |
2388 | safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
2389 | version "2.1.2"
2390 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
2391 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
2392 |
2393 | semver-compare@^1.0.0:
2394 | version "1.0.0"
2395 | resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"
2396 | integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w=
2397 |
2398 | "semver@2 || 3 || 4 || 5", semver@^5.4.1:
2399 | version "5.7.1"
2400 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
2401 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
2402 |
2403 | semver@^6.2.0:
2404 | version "6.3.0"
2405 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
2406 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
2407 |
2408 | semver@^7.1.3, semver@^7.3.5:
2409 | version "7.3.5"
2410 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
2411 | integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
2412 | dependencies:
2413 | lru-cache "^6.0.0"
2414 |
2415 | semver@^7.3.2:
2416 | version "7.3.4"
2417 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97"
2418 | integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==
2419 | dependencies:
2420 | lru-cache "^6.0.0"
2421 |
2422 | serialize-error@^7.0.1:
2423 | version "7.0.1"
2424 | resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-7.0.1.tgz#f1360b0447f61ffb483ec4157c737fab7d778e18"
2425 | integrity sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==
2426 | dependencies:
2427 | type-fest "^0.13.1"
2428 |
2429 | set-blocking@^2.0.0, set-blocking@~2.0.0:
2430 | version "2.0.0"
2431 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
2432 | integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
2433 |
2434 | sigmund@~1.0.0:
2435 | version "1.0.1"
2436 | resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590"
2437 | integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=
2438 |
2439 | signal-exit@^3.0.0:
2440 | version "3.0.3"
2441 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
2442 | integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
2443 |
2444 | simple-concat@^1.0.0:
2445 | version "1.0.1"
2446 | resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f"
2447 | integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==
2448 |
2449 | simple-get@^3.0.3:
2450 | version "3.1.0"
2451 | resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.0.tgz#b45be062435e50d159540b576202ceec40b9c6b3"
2452 | integrity sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==
2453 | dependencies:
2454 | decompress-response "^4.2.0"
2455 | once "^1.3.1"
2456 | simple-concat "^1.0.0"
2457 |
2458 | slice-ansi@^3.0.0:
2459 | version "3.0.0"
2460 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787"
2461 | integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==
2462 | dependencies:
2463 | ansi-styles "^4.0.0"
2464 | astral-regex "^2.0.0"
2465 | is-fullwidth-code-point "^3.0.0"
2466 |
2467 | sort-keys-length@^1.0.0:
2468 | version "1.0.1"
2469 | resolved "https://registry.yarnpkg.com/sort-keys-length/-/sort-keys-length-1.0.1.tgz#9cb6f4f4e9e48155a6aa0671edd336ff1479a188"
2470 | integrity sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=
2471 | dependencies:
2472 | sort-keys "^1.0.0"
2473 |
2474 | sort-keys@^1.0.0:
2475 | version "1.1.2"
2476 | resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad"
2477 | integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0=
2478 | dependencies:
2479 | is-plain-obj "^1.0.0"
2480 |
2481 | spdx-correct@^3.0.0:
2482 | version "3.1.1"
2483 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9"
2484 | integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==
2485 | dependencies:
2486 | spdx-expression-parse "^3.0.0"
2487 | spdx-license-ids "^3.0.0"
2488 |
2489 | spdx-exceptions@^2.1.0:
2490 | version "2.3.0"
2491 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d"
2492 | integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==
2493 |
2494 | spdx-expression-parse@^3.0.0:
2495 | version "3.0.1"
2496 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679"
2497 | integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==
2498 | dependencies:
2499 | spdx-exceptions "^2.1.0"
2500 | spdx-license-ids "^3.0.0"
2501 |
2502 | spdx-license-ids@^3.0.0:
2503 | version "3.0.7"
2504 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65"
2505 | integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==
2506 |
2507 | sprintf-js@^1.1.2:
2508 | version "1.1.2"
2509 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673"
2510 | integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==
2511 |
2512 | sshpk@^1.7.0:
2513 | version "1.16.1"
2514 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877"
2515 | integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==
2516 | dependencies:
2517 | asn1 "~0.2.3"
2518 | assert-plus "^1.0.0"
2519 | bcrypt-pbkdf "^1.0.0"
2520 | dashdash "^1.12.0"
2521 | ecc-jsbn "~0.1.1"
2522 | getpass "^0.1.1"
2523 | jsbn "~0.1.0"
2524 | safer-buffer "^2.0.2"
2525 | tweetnacl "~0.14.0"
2526 |
2527 | string-width@^1.0.1:
2528 | version "1.0.2"
2529 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
2530 | integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
2531 | dependencies:
2532 | code-point-at "^1.0.0"
2533 | is-fullwidth-code-point "^1.0.0"
2534 | strip-ansi "^3.0.0"
2535 |
2536 | "string-width@^1.0.2 || 2":
2537 | version "2.1.1"
2538 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
2539 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
2540 | dependencies:
2541 | is-fullwidth-code-point "^2.0.0"
2542 | strip-ansi "^4.0.0"
2543 |
2544 | string-width@^4.2.0:
2545 | version "4.2.2"
2546 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5"
2547 | integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==
2548 | dependencies:
2549 | emoji-regex "^8.0.0"
2550 | is-fullwidth-code-point "^3.0.0"
2551 | strip-ansi "^6.0.0"
2552 |
2553 | string_decoder@^1.1.1:
2554 | version "1.3.0"
2555 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
2556 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
2557 | dependencies:
2558 | safe-buffer "~5.2.0"
2559 |
2560 | string_decoder@~0.10.x:
2561 | version "0.10.31"
2562 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
2563 | integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
2564 |
2565 | string_decoder@~1.1.1:
2566 | version "1.1.1"
2567 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
2568 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
2569 | dependencies:
2570 | safe-buffer "~5.1.0"
2571 |
2572 | strip-ansi@^3.0.0, strip-ansi@^3.0.1:
2573 | version "3.0.1"
2574 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
2575 | integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
2576 | dependencies:
2577 | ansi-regex "^2.0.0"
2578 |
2579 | strip-ansi@^4.0.0:
2580 | version "4.0.0"
2581 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
2582 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
2583 | dependencies:
2584 | ansi-regex "^3.0.0"
2585 |
2586 | strip-ansi@^6.0.0:
2587 | version "6.0.0"
2588 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
2589 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==
2590 | dependencies:
2591 | ansi-regex "^5.0.0"
2592 |
2593 | strip-bom@^2.0.0:
2594 | version "2.0.0"
2595 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
2596 | integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=
2597 | dependencies:
2598 | is-utf8 "^0.2.0"
2599 |
2600 | strip-bom@^3.0.0:
2601 | version "3.0.0"
2602 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
2603 | integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
2604 |
2605 | strip-json-comments@~2.0.1:
2606 | version "2.0.1"
2607 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
2608 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
2609 |
2610 | strip-outer@^1.0.1:
2611 | version "1.0.1"
2612 | resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.1.tgz#b2fd2abf6604b9d1e6013057195df836b8a9d631"
2613 | integrity sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==
2614 | dependencies:
2615 | escape-string-regexp "^1.0.2"
2616 |
2617 | sumchecker@^3.0.1:
2618 | version "3.0.1"
2619 | resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-3.0.1.tgz#6377e996795abb0b6d348e9b3e1dfb24345a8e42"
2620 | integrity sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==
2621 | dependencies:
2622 | debug "^4.1.0"
2623 |
2624 | supports-color@^2.0.0:
2625 | version "2.0.0"
2626 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
2627 | integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
2628 |
2629 | supports-color@^7.1.0:
2630 | version "7.2.0"
2631 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
2632 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
2633 | dependencies:
2634 | has-flag "^4.0.0"
2635 |
2636 | tar-fs@^2.0.0:
2637 | version "2.1.1"
2638 | resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784"
2639 | integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==
2640 | dependencies:
2641 | chownr "^1.1.1"
2642 | mkdirp-classic "^0.5.2"
2643 | pump "^3.0.0"
2644 | tar-stream "^2.1.4"
2645 |
2646 | tar-stream@^2.1.4:
2647 | version "2.2.0"
2648 | resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287"
2649 | integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==
2650 | dependencies:
2651 | bl "^4.0.3"
2652 | end-of-stream "^1.4.1"
2653 | fs-constants "^1.0.0"
2654 | inherits "^2.0.3"
2655 | readable-stream "^3.1.1"
2656 |
2657 | tar-stream@~0.4.0:
2658 | version "0.4.7"
2659 | resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-0.4.7.tgz#1f1d2ce9ebc7b42765243ca0e8f1b7bfda0aadcd"
2660 | integrity sha1-Hx0s6evHtCdlJDyg6PG3v9oKrc0=
2661 | dependencies:
2662 | bl "^0.9.0"
2663 | end-of-stream "^1.0.0"
2664 | readable-stream "^1.0.27-1"
2665 | xtend "^4.0.0"
2666 |
2667 | tar-stream@~1.3.1:
2668 | version "1.3.2"
2669 | resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.3.2.tgz#724d1ab4801c9b3149cdea765fe8c90ea71f6606"
2670 | integrity sha1-ck0atIAcmzFJzep2X+jJDqcfZgY=
2671 | dependencies:
2672 | bl "^1.0.0"
2673 | end-of-stream "^1.0.0"
2674 | readable-stream "^2.0.0"
2675 | xtend "^4.0.0"
2676 |
2677 | timers-ext@0.1, timers-ext@0.1.x:
2678 | version "0.1.7"
2679 | resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6"
2680 | integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==
2681 | dependencies:
2682 | es5-ext "~0.10.46"
2683 | next-tick "1"
2684 |
2685 | to-readable-stream@^1.0.0:
2686 | version "1.0.0"
2687 | resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771"
2688 | integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==
2689 |
2690 | tough-cookie@~2.5.0:
2691 | version "2.5.0"
2692 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
2693 | integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
2694 | dependencies:
2695 | psl "^1.1.28"
2696 | punycode "^2.1.1"
2697 |
2698 | trim-repeated@^1.0.0:
2699 | version "1.0.0"
2700 | resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21"
2701 | integrity sha1-42RqLqTokTEr9+rObPsFOAvAHCE=
2702 | dependencies:
2703 | escape-string-regexp "^1.0.2"
2704 |
2705 | tunnel-agent@^0.6.0:
2706 | version "0.6.0"
2707 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
2708 | integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
2709 | dependencies:
2710 | safe-buffer "^5.0.1"
2711 |
2712 | tunnel@^0.0.6:
2713 | version "0.0.6"
2714 | resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c"
2715 | integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==
2716 |
2717 | tweetnacl@^0.14.3, tweetnacl@~0.14.0:
2718 | version "0.14.5"
2719 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
2720 | integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
2721 |
2722 | type-fest@^0.13.1:
2723 | version "0.13.1"
2724 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934"
2725 | integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==
2726 |
2727 | type-fest@^1.0.2:
2728 | version "1.1.3"
2729 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.1.3.tgz#ea1a602e98e5a968a56a289886a52f04c686fc81"
2730 | integrity sha512-CsiQeFMR1jZEq8R+H59qe+bBevnjoV5N2WZTTdlyqxeoODQOOepN2+msQOywcieDq5sBjabKzTn3U+sfHZlMdw==
2731 |
2732 | type@^1.0.1:
2733 | version "1.2.0"
2734 | resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0"
2735 | integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==
2736 |
2737 | type@^2.0.0:
2738 | version "2.5.0"
2739 | resolved "https://registry.yarnpkg.com/type/-/type-2.5.0.tgz#0a2e78c2e77907b252abe5f298c1b01c63f0db3d"
2740 | integrity sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==
2741 |
2742 | typedarray@^0.0.6:
2743 | version "0.0.6"
2744 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
2745 | integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
2746 |
2747 | universalify@^0.1.0:
2748 | version "0.1.2"
2749 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
2750 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
2751 |
2752 | universalify@^2.0.0:
2753 | version "2.0.0"
2754 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
2755 | integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
2756 |
2757 | untildify@^4.0.0:
2758 | version "4.0.0"
2759 | resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b"
2760 | integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==
2761 |
2762 | unused-filename@^2.1.0:
2763 | version "2.1.0"
2764 | resolved "https://registry.yarnpkg.com/unused-filename/-/unused-filename-2.1.0.tgz#33719c4e8d9644f32d2dec1bc8525c6aaeb4ba51"
2765 | integrity sha512-BMiNwJbuWmqCpAM1FqxCTD7lXF97AvfQC8Kr/DIeA6VtvhJaMDupZ82+inbjl5yVP44PcxOuCSxye1QMS0wZyg==
2766 | dependencies:
2767 | modify-filename "^1.1.0"
2768 | path-exists "^4.0.0"
2769 |
2770 | uri-js@^4.2.2:
2771 | version "4.4.1"
2772 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
2773 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
2774 | dependencies:
2775 | punycode "^2.1.0"
2776 |
2777 | url-parse-lax@^3.0.0:
2778 | version "3.0.0"
2779 | resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c"
2780 | integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=
2781 | dependencies:
2782 | prepend-http "^2.0.0"
2783 |
2784 | util-deprecate@^1.0.1, util-deprecate@~1.0.1:
2785 | version "1.0.2"
2786 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
2787 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
2788 |
2789 | uuid@^3.3.2:
2790 | version "3.4.0"
2791 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
2792 | integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
2793 |
2794 | uuid@^8.3.2:
2795 | version "8.3.2"
2796 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
2797 | integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
2798 |
2799 | validate-npm-package-license@^3.0.1:
2800 | version "3.0.4"
2801 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
2802 | integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
2803 | dependencies:
2804 | spdx-correct "^3.0.0"
2805 | spdx-expression-parse "^3.0.0"
2806 |
2807 | verror@1.10.0:
2808 | version "1.10.0"
2809 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
2810 | integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=
2811 | dependencies:
2812 | assert-plus "^1.0.0"
2813 | core-util-is "1.0.2"
2814 | extsprintf "^1.2.0"
2815 |
2816 | which-module@^1.0.0:
2817 | version "1.0.0"
2818 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f"
2819 | integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=
2820 |
2821 | which@^1.2.0:
2822 | version "1.3.1"
2823 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
2824 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
2825 | dependencies:
2826 | isexe "^2.0.0"
2827 |
2828 | wide-align@^1.1.0:
2829 | version "1.1.3"
2830 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
2831 | integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
2832 | dependencies:
2833 | string-width "^1.0.2 || 2"
2834 |
2835 | window-size@^0.2.0:
2836 | version "0.2.0"
2837 | resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075"
2838 | integrity sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=
2839 |
2840 | wrap-ansi@^2.0.0:
2841 | version "2.1.0"
2842 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
2843 | integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=
2844 | dependencies:
2845 | string-width "^1.0.1"
2846 | strip-ansi "^3.0.1"
2847 |
2848 | wrappy@1:
2849 | version "1.0.2"
2850 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
2851 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
2852 |
2853 | ws@^7.3.1:
2854 | version "7.4.6"
2855 | resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c"
2856 | integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==
2857 |
2858 | xmlbuilder@^9.0.7:
2859 | version "9.0.7"
2860 | resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d"
2861 | integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=
2862 |
2863 | xmldom@^0.5.0:
2864 | version "0.5.0"
2865 | resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.5.0.tgz#193cb96b84aa3486127ea6272c4596354cb4962e"
2866 | integrity sha512-Foaj5FXVzgn7xFzsKeNIde9g6aFBxTPi37iwsno8QvApmtg7KYrr+OPyRHcJF7dud2a5nGRBXK3n0dL62Gf7PA==
2867 |
2868 | xtend@^4.0.0:
2869 | version "4.0.2"
2870 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
2871 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
2872 |
2873 | y18n@^3.2.1:
2874 | version "3.2.2"
2875 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.2.tgz#85c901bd6470ce71fc4bb723ad209b70f7f28696"
2876 | integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==
2877 |
2878 | yallist@^4.0.0:
2879 | version "4.0.0"
2880 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
2881 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
2882 |
2883 | yargs-parser@^2.4.1:
2884 | version "2.4.1"
2885 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4"
2886 | integrity sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=
2887 | dependencies:
2888 | camelcase "^3.0.0"
2889 | lodash.assign "^4.0.6"
2890 |
2891 | yargs-parser@^20.0.0:
2892 | version "20.2.7"
2893 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a"
2894 | integrity sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==
2895 |
2896 | yargs@^4.2.0:
2897 | version "4.8.1"
2898 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0"
2899 | integrity sha1-wMQpJMpKqmsObaFznfshZDn53cA=
2900 | dependencies:
2901 | cliui "^3.2.0"
2902 | decamelize "^1.1.1"
2903 | get-caller-file "^1.0.1"
2904 | lodash.assign "^4.0.3"
2905 | os-locale "^1.4.0"
2906 | read-pkg-up "^1.0.1"
2907 | require-directory "^2.1.1"
2908 | require-main-filename "^1.0.1"
2909 | set-blocking "^2.0.0"
2910 | string-width "^1.0.1"
2911 | which-module "^1.0.0"
2912 | window-size "^0.2.0"
2913 | y18n "^3.2.1"
2914 | yargs-parser "^2.4.1"
2915 |
2916 | yarn-upgrade-all@^0.5.4:
2917 | version "0.5.4"
2918 | resolved "https://registry.yarnpkg.com/yarn-upgrade-all/-/yarn-upgrade-all-0.5.4.tgz#3c00677957739187a30a4ee4824c46f43996c173"
2919 | integrity sha512-XaFO3Yv6cXEBizancbRxJT3fdgHfiESNJoV/czWzXRXN2CZBk61IQIFbmeMRE6HhXcBGd+rVmnUg5Csw4axdDA==
2920 | dependencies:
2921 | chalk "^4.1.0"
2922 | commander "^5.1.0"
2923 |
2924 | yauzl@^2.10.0:
2925 | version "2.10.0"
2926 | resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
2927 | integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=
2928 | dependencies:
2929 | buffer-crc32 "~0.2.3"
2930 | fd-slicer "~1.1.0"
2931 |
2932 | zip-folder@^1.0.0:
2933 | version "1.0.0"
2934 | resolved "https://registry.yarnpkg.com/zip-folder/-/zip-folder-1.0.0.tgz#70a7744fd1789a2feb41ad3419b32e9fd87957b2"
2935 | integrity sha1-cKd0T9F4mi/rQa00GbMun9h5V7I=
2936 | dependencies:
2937 | archiver "^0.11.0"
2938 |
2939 | zip-stream@~0.4.0:
2940 | version "0.4.1"
2941 | resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-0.4.1.tgz#4ea795a8ce19e9fab49a31d1d0877214159f03a3"
2942 | integrity sha1-TqeVqM4Z6fq0mjHR0IdyFBWfA6M=
2943 | dependencies:
2944 | compress-commons "~0.1.0"
2945 | lodash "~2.4.1"
2946 | readable-stream "~1.0.26"
2947 |
2948 | zip-stream@~0.8.0:
2949 | version "0.8.0"
2950 | resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-0.8.0.tgz#236b2fe25823cb4f48e8336f5bfa743aa5ae9dbd"
2951 | integrity sha1-I2sv4lgjy09I6DNvW/p0OqWunb0=
2952 | dependencies:
2953 | archiver-utils "~0.3.0"
2954 | compress-commons "~0.4.0"
2955 | lodash "~3.10.1"
2956 | readable-stream "~2.0.0"
2957 |
--------------------------------------------------------------------------------