From 1f02b3add11a006660d06d1db93a20492283a3d9 Mon Sep 17 00:00:00 2001 From: Yann Bertrand <5855339+yannbertrand@users.noreply.github.com> Date: Thu, 19 Dec 2024 14:39:43 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A5=20Remove=20deprecated=20screen=20r?= =?UTF-8?q?ecorder=20code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- record/.node-version | 1 - record/dock/autohide-delay/0.5.js | 89 - record/dock/autohide-delay/0.js | 89 - record/dock/autohide-time-modifier/0.5.js | 89 - record/dock/autohide-time-modifier/0.js | 89 - record/dock/autohide-time-modifier/2.js | 89 - record/dock/mineffect/genie.js | 97 - record/dock/mineffect/scale.js | 97 - record/dock/mineffect/suck.js | 97 - record/dock/orientation/bottom.js | 43 - record/dock/orientation/left.js | 39 - record/dock/orientation/right.js | 39 - record/dock/readme.js | 34 - record/dock/show-recents/false.js | 50 - record/dock/show-recents/true.js | 48 - record/dock/tilesize/36.js | 39 - record/dock/tilesize/48.js | 39 - record/finder/AppleShowAllFiles/false.js | 44 - record/finder/AppleShowAllFiles/true.js | 44 - .../FXEnableExtensionChangeWarning/false.js | 79 - .../FXEnableExtensionChangeWarning/true.js | 75 - record/finder/NSTableViewDefaultSizeMode/1.js | 48 - record/finder/NSTableViewDefaultSizeMode/2.js | 48 - record/finder/NSTableViewDefaultSizeMode/3.js | 48 - .../NSToolbarTitleViewRolloverDelay/0.5.js | 77 - .../NSToolbarTitleViewRolloverDelay/0.js | 77 - .../NSToolbarTitleViewRolloverDelay/1.js | 77 - record/finder/ShowPathbar/false.js | 41 - record/finder/ShowPathbar/true.js | 41 - record/finder/_FXSortFoldersFirst/false.js | 50 - record/finder/_FXSortFoldersFirst/true.js | 48 - .../finder/showWindowTitlebarIcons/false.js | 48 - record/finder/showWindowTitlebarIcons/true.js | 48 - record/index.js | 3 - record/mac-runner.js | 233 -- record/menubar/FlashDateSeparators/false.js | 75 - record/menubar/FlashDateSeparators/true.js | 75 - record/package.json | 31 - record/readme.md | 87 - record/record-next.mjs | 22 - record/record.js | 58 - record/screenshots/disable-shadow/false.js | 36 - record/screenshots/disable-shadow/true.js | 36 - record/textedit/RichText/false.js | 62 - record/textedit/RichText/true.js | 65 - record/utils.js | 193 -- record/yarn.lock | 2464 ----------------- 47 files changed, 5401 deletions(-) delete mode 100644 record/.node-version delete mode 100644 record/dock/autohide-delay/0.5.js delete mode 100644 record/dock/autohide-delay/0.js delete mode 100644 record/dock/autohide-time-modifier/0.5.js delete mode 100644 record/dock/autohide-time-modifier/0.js delete mode 100644 record/dock/autohide-time-modifier/2.js delete mode 100644 record/dock/mineffect/genie.js delete mode 100644 record/dock/mineffect/scale.js delete mode 100644 record/dock/mineffect/suck.js delete mode 100644 record/dock/orientation/bottom.js delete mode 100644 record/dock/orientation/left.js delete mode 100644 record/dock/orientation/right.js delete mode 100644 record/dock/readme.js delete mode 100644 record/dock/show-recents/false.js delete mode 100644 record/dock/show-recents/true.js delete mode 100644 record/dock/tilesize/36.js delete mode 100644 record/dock/tilesize/48.js delete mode 100644 record/finder/AppleShowAllFiles/false.js delete mode 100644 record/finder/AppleShowAllFiles/true.js delete mode 100644 record/finder/FXEnableExtensionChangeWarning/false.js delete mode 100644 record/finder/FXEnableExtensionChangeWarning/true.js delete mode 100644 record/finder/NSTableViewDefaultSizeMode/1.js delete mode 100644 record/finder/NSTableViewDefaultSizeMode/2.js delete mode 100644 record/finder/NSTableViewDefaultSizeMode/3.js delete mode 100644 record/finder/NSToolbarTitleViewRolloverDelay/0.5.js delete mode 100644 record/finder/NSToolbarTitleViewRolloverDelay/0.js delete mode 100644 record/finder/NSToolbarTitleViewRolloverDelay/1.js delete mode 100644 record/finder/ShowPathbar/false.js delete mode 100644 record/finder/ShowPathbar/true.js delete mode 100644 record/finder/_FXSortFoldersFirst/false.js delete mode 100644 record/finder/_FXSortFoldersFirst/true.js delete mode 100644 record/finder/showWindowTitlebarIcons/false.js delete mode 100644 record/finder/showWindowTitlebarIcons/true.js delete mode 100644 record/index.js delete mode 100644 record/mac-runner.js delete mode 100644 record/menubar/FlashDateSeparators/false.js delete mode 100644 record/menubar/FlashDateSeparators/true.js delete mode 100644 record/package.json delete mode 100644 record/readme.md delete mode 100644 record/record-next.mjs delete mode 100644 record/record.js delete mode 100644 record/screenshots/disable-shadow/false.js delete mode 100644 record/screenshots/disable-shadow/true.js delete mode 100644 record/textedit/RichText/false.js delete mode 100644 record/textedit/RichText/true.js delete mode 100644 record/utils.js delete mode 100644 record/yarn.lock diff --git a/record/.node-version b/record/.node-version deleted file mode 100644 index 1b497a7..0000000 --- a/record/.node-version +++ /dev/null @@ -1 +0,0 @@ -16.20.2 \ No newline at end of file diff --git a/record/dock/autohide-delay/0.5.js b/record/dock/autohide-delay/0.5.js deleted file mode 100644 index f5f7338..0000000 --- a/record/dock/autohide-delay/0.5.js +++ /dev/null @@ -1,89 +0,0 @@ -const aperture = require('aperture')() -const delay = require('delay') -const robot = require('robotjs') -const util = require('util') -const exec = util.promisify(require('child_process').exec) -const { compressVideo } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log('> Recording dock autohide-delay with param set to 0.5') - - const { stderr: setEnvError } = await exec( - 'defaults write com.apple.dock autohide -bool true && defaults write com.apple.dock autohide-delay -float 0.5 && killall Dock', - ) - if (setEnvError) { - console.error( - 'An error occured while setting up the dock autohide-delay command', - ) - logRollbackInfo() - throw new Error(setEnvError) - } - - // Preparation - await delay(1000) - - const { height } = robot.getScreenSize() - const pos1 = { x: 475, y: height - 100 } - const pos2 = { x: 495, y: height } - const pos3 = { x: 500, y: height - 80 } - const recordWidth = 441 - const recordHeight = 150 - const cropArea = { - x: pos2.x - recordWidth / 2, - y: 0, - width: recordWidth, - height: recordHeight, - } - - robot.moveMouse(pos1.x, pos1.y) - robot.mouseClick() - await delay(500) - robot.moveMouseSmooth(pos1.x, pos2.y) - await delay(500) - robot.moveMouse(pos1.x, pos1.y) - - // Action! - await aperture.startRecording({ highlightClicks: true, cropArea }) - - await delay(200) - robot.moveMouseSmooth(pos2.x, pos2.y, 2) - await delay(1000) - robot.moveMouseSmooth(pos3.x, pos3.y, 5) - await delay(100) - robot.moveMouseSmooth(pos1.x, pos1.y, 10) - await delay(500) - - const fp = await aperture.stopRecording() - // End recording - - try { - await compressVideo(fp, outputPath, '0.5') - } catch (compressVideoError) { - logRollbackInfo() - throw new Error(compressVideoError) - } - - const { stderr: deleteEnvError } = await exec( - 'defaults delete com.apple.dock autohide && defaults delete com.apple.dock autohide-delay && killall Dock', - ) - if (deleteEnvError) { - console.error( - 'An error occured while cleaning the dock autohide-delay environment', - ) - logRollbackInfo() - throw new Error(deleteEnvError) - } - - return { filepath: `${outputPath}/0.5`, isVideo: true } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info( - 'defaults delete com.apple.dock autohide && defaults delete com.apple.dock autohide-delay && killall Dock', - ) -} diff --git a/record/dock/autohide-delay/0.js b/record/dock/autohide-delay/0.js deleted file mode 100644 index b0618a6..0000000 --- a/record/dock/autohide-delay/0.js +++ /dev/null @@ -1,89 +0,0 @@ -const aperture = require('aperture')() -const delay = require('delay') -const robot = require('robotjs') -const util = require('util') -const exec = util.promisify(require('child_process').exec) -const { compressVideo } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log('> Recording dock autohide-delay with param set to 0') - - const { stderr: setEnvError } = await exec( - 'defaults write com.apple.dock autohide -bool true && defaults write com.apple.dock autohide-delay -float 0 && killall Dock', - ) - if (setEnvError) { - console.error( - 'An error occured while setting up the dock autohide-delay command', - ) - logRollbackInfo() - throw new Error(setEnvError) - } - - // Preparation - await delay(1000) - - const { height } = robot.getScreenSize() - const pos1 = { x: 475, y: height - 100 } - const pos2 = { x: 495, y: height } - const pos3 = { x: 500, y: height - 80 } - const recordWidth = 441 - const recordHeight = 150 - const cropArea = { - x: pos2.x - recordWidth / 2, - y: 0, - width: recordWidth, - height: recordHeight, - } - - robot.moveMouse(pos1.x, pos1.y) - robot.mouseClick() - await delay(500) - robot.moveMouseSmooth(pos1.x, pos2.y) - await delay(500) - robot.moveMouse(pos1.x, pos1.y) - - // Action! - await aperture.startRecording({ highlightClicks: true, cropArea }) - - await delay(200) - robot.moveMouseSmooth(pos2.x, pos2.y, 2) - await delay(1000) - robot.moveMouseSmooth(pos3.x, pos3.y, 5) - await delay(100) - robot.moveMouseSmooth(pos1.x, pos1.y, 10) - await delay(500) - - const fp = await aperture.stopRecording() - // End recording - - try { - await compressVideo(fp, outputPath, '0') - } catch (compressVideoError) { - logRollbackInfo() - throw new Error(compressVideoError) - } - - const { stderr: deleteEnvError } = await exec( - 'defaults delete com.apple.dock autohide && defaults delete com.apple.dock autohide-delay && killall Dock', - ) - if (deleteEnvError) { - console.error( - 'An error occured while cleaning the dock autohide-delay environment', - ) - logRollbackInfo() - throw new Error(deleteEnvError) - } - - return { filepath: `${outputPath}/0`, isVideo: true } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info( - 'defaults delete com.apple.dock autohide && defaults delete com.apple.dock autohide-delay && killall Dock', - ) -} diff --git a/record/dock/autohide-time-modifier/0.5.js b/record/dock/autohide-time-modifier/0.5.js deleted file mode 100644 index 2532d34..0000000 --- a/record/dock/autohide-time-modifier/0.5.js +++ /dev/null @@ -1,89 +0,0 @@ -const aperture = require('aperture')() -const delay = require('delay') -const robot = require('robotjs') -const util = require('util') -const exec = util.promisify(require('child_process').exec) -const { compressVideo } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log('> Recording dock autohide-time-modifier with param set to 0.5') - - const { stderr: setEnvError } = await exec( - 'defaults write com.apple.dock autohide -bool true && defaults write com.apple.dock autohide-time-modifier -float 0.5 && killall Dock', - ) - if (setEnvError) { - console.error( - 'An error occured while setting up the dock autohide-time-modifier command', - ) - logRollbackInfo() - throw new Error(setEnvError) - } - - // Preparation - await delay(1000) - - const { height } = robot.getScreenSize() - const pos1 = { x: 475, y: height - 100 } - const pos2 = { x: 495, y: height } - const pos3 = { x: 500, y: height - 80 } - const recordWidth = 441 - const recordHeight = 150 - const cropArea = { - x: pos2.x - recordWidth / 2, - y: 0, - width: recordWidth, - height: recordHeight, - } - - robot.moveMouse(pos1.x, pos1.y) - robot.mouseClick() - await delay(500) - robot.moveMouseSmooth(pos1.x, pos2.y) - await delay(500) - robot.moveMouse(pos1.x, pos1.y) - - // Action! - await aperture.startRecording({ highlightClicks: true, cropArea }) - - await delay(200) - robot.moveMouseSmooth(pos2.x, pos2.y, 2) - await delay(1000) - robot.moveMouseSmooth(pos3.x, pos3.y, 5) - await delay(100) - robot.moveMouseSmooth(pos1.x, pos1.y, 10) - await delay(500) - - const fp = await aperture.stopRecording() - // End recording - - try { - await compressVideo(fp, outputPath, '0.5') - } catch (compressVideoError) { - logRollbackInfo() - throw new Error(compressVideoError) - } - - const { stderr: deleteEnvError } = await exec( - 'defaults delete com.apple.dock autohide && defaults delete com.apple.dock autohide-time-modifier && killall Dock', - ) - if (deleteEnvError) { - console.error( - 'An error occured while cleaning the dock autohide-time-modifier environment', - ) - logRollbackInfo() - throw new Error(deleteEnvError) - } - - return { filepath: `${outputPath}/0.5`, isVideo: true } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info( - 'defaults delete com.apple.dock autohide && defaults delete com.apple.dock autohide-time-modifier && killall Dock', - ) -} diff --git a/record/dock/autohide-time-modifier/0.js b/record/dock/autohide-time-modifier/0.js deleted file mode 100644 index 97c45e0..0000000 --- a/record/dock/autohide-time-modifier/0.js +++ /dev/null @@ -1,89 +0,0 @@ -const aperture = require('aperture')() -const delay = require('delay') -const robot = require('robotjs') -const util = require('util') -const exec = util.promisify(require('child_process').exec) -const { compressVideo } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log('> Recording dock autohide-time-modifier with param set to 0') - - const { stderr: setEnvError } = await exec( - 'defaults write com.apple.dock autohide -bool true && defaults write com.apple.dock autohide-time-modifier -float 0 && killall Dock', - ) - if (setEnvError) { - console.error( - 'An error occured while setting up the dock autohide-time-modifier command', - ) - logRollbackInfo() - throw new Error(setEnvError) - } - - // Preparation - await delay(1000) - - const { height } = robot.getScreenSize() - const pos1 = { x: 475, y: height - 100 } - const pos2 = { x: 495, y: height } - const pos3 = { x: 500, y: height - 80 } - const recordWidth = 441 - const recordHeight = 150 - const cropArea = { - x: pos2.x - recordWidth / 2, - y: 0, - width: recordWidth, - height: recordHeight, - } - - robot.moveMouse(pos1.x, pos1.y) - robot.mouseClick() - await delay(500) - robot.moveMouseSmooth(pos1.x, pos2.y) - await delay(500) - robot.moveMouse(pos1.x, pos1.y) - - // Action! - await aperture.startRecording({ highlightClicks: true, cropArea }) - - await delay(200) - robot.moveMouseSmooth(pos2.x, pos2.y, 2) - await delay(1000) - robot.moveMouseSmooth(pos3.x, pos3.y, 5) - await delay(100) - robot.moveMouseSmooth(pos1.x, pos1.y, 10) - await delay(500) - - const fp = await aperture.stopRecording() - // End recording - - try { - await compressVideo(fp, outputPath, '0') - } catch (compressVideoError) { - logRollbackInfo() - throw new Error(compressVideoError) - } - - const { stderr: deleteEnvError } = await exec( - 'defaults delete com.apple.dock autohide && defaults delete com.apple.dock autohide-time-modifier && killall Dock', - ) - if (deleteEnvError) { - console.error( - 'An error occured while cleaning the dock autohide-time-modifier environment', - ) - logRollbackInfo() - throw new Error(deleteEnvError) - } - - return { filepath: `${outputPath}/0`, isVideo: true } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info( - 'defaults delete com.apple.dock autohide && defaults delete com.apple.dock autohide-time-modifier && killall Dock', - ) -} diff --git a/record/dock/autohide-time-modifier/2.js b/record/dock/autohide-time-modifier/2.js deleted file mode 100644 index a40707a..0000000 --- a/record/dock/autohide-time-modifier/2.js +++ /dev/null @@ -1,89 +0,0 @@ -const aperture = require('aperture')() -const delay = require('delay') -const robot = require('robotjs') -const util = require('util') -const exec = util.promisify(require('child_process').exec) -const { compressVideo } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log('> Recording dock autohide-time-modifier with param set to 2') - - const { stderr: setEnvError } = await exec( - 'defaults write com.apple.dock autohide -bool true && defaults write com.apple.dock autohide-time-modifier -float 2 && killall Dock', - ) - if (setEnvError) { - console.error( - 'An error occured while setting up the dock autohide-time-modifier command', - ) - logRollbackInfo() - throw new Error(setEnvError) - } - - // Preparation - await delay(1000) - - const { height } = robot.getScreenSize() - const pos1 = { x: 475, y: height - 100 } - const pos2 = { x: 495, y: height } - const pos3 = { x: 500, y: height - 80 } - const recordWidth = 441 - const recordHeight = 150 - const cropArea = { - x: pos2.x - recordWidth / 2, - y: 0, - width: recordWidth, - height: recordHeight, - } - - robot.moveMouse(pos1.x, pos1.y) - robot.mouseClick() - await delay(500) - robot.moveMouseSmooth(pos1.x, pos2.y) - await delay(500) - robot.moveMouse(pos1.x, pos1.y) - - // Action! - await aperture.startRecording({ highlightClicks: true, cropArea }) - - await delay(200) - robot.moveMouseSmooth(pos2.x, pos2.y, 2) - await delay(1000) - robot.moveMouseSmooth(pos3.x, pos3.y, 5) - await delay(100) - robot.moveMouseSmooth(pos1.x, pos1.y, 10) - await delay(500) - - const fp = await aperture.stopRecording() - // End recording - - try { - await compressVideo(fp, outputPath, '2') - } catch (compressVideoError) { - logRollbackInfo() - throw new Error(compressVideoError) - } - - const { stderr: deleteEnvError } = await exec( - 'defaults delete com.apple.dock autohide && defaults delete com.apple.dock autohide-time-modifier && killall Dock', - ) - if (deleteEnvError) { - console.error( - 'An error occured while cleaning the dock autohide-time-modifier environment', - ) - logRollbackInfo() - throw new Error(deleteEnvError) - } - - return { filepath: `${outputPath}/2`, isVideo: true } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info( - 'defaults delete com.apple.dock autohide && defaults delete com.apple.dock autohide-time-modifier && killall Dock', - ) -} diff --git a/record/dock/mineffect/genie.js b/record/dock/mineffect/genie.js deleted file mode 100644 index 41e4363..0000000 --- a/record/dock/mineffect/genie.js +++ /dev/null @@ -1,97 +0,0 @@ -const aperture = require('aperture')() -const delay = require('delay') -const robot = require('robotjs') -const util = require('util') -const exec = util.promisify(require('child_process').exec) -const { - makeAppActive, - moveAndResizeApp, - compressVideo, -} = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log('> Recording dock mineffect with param set to genie') - - const { stderr: setEnvError } = await exec( - 'defaults write com.apple.dock mineffect -string genie && killall Dock', - ) - if (setEnvError) { - console.error( - 'An error occured while setting up the dock mineffect command', - ) - logRollbackInfo() - throw new Error(setEnvError) - } - - // Preparation - await makeAppActive('System Preferences') - - const { width, height } = robot.getScreenSize() - const pos1 = { x: width - 932, y: height - 695 } - const pos2 = { x: width - 270, y: height - 50 } - const recordWidth = 1000 - const recordHeight = 750 - const cropArea = { - x: width - recordWidth, - y: 0, - width: recordWidth, - height: recordHeight, - } - const windowCropArea = { - x: cropArea.x + 21, - y: 156, - width: 668, - height: 568, - } - - await moveAndResizeApp('System Preferences', windowCropArea, height) - - robot.moveMouse(pos1.x, pos1.y) - - // Action! - await aperture.startRecording({ highlightClicks: true, cropArea }) - - await delay(500) - robot.mouseClick() - await delay(500) - robot.moveMouseSmooth(pos2.x, pos2.y, 2) - await delay(800) - robot.mouseClick() - await delay(800) - robot.moveMouseSmooth(pos1.x, pos1.y, 2) - await delay(800) - - const fp = await aperture.stopRecording() - // End recording - - robot.keyTap('q', 'command') - - try { - await compressVideo(fp, outputPath, 'genie') - } catch (compressVideoError) { - logRollbackInfo() - throw new Error(compressVideoError) - } - - const { stderr: deleteEnvError } = await exec( - 'defaults delete com.apple.dock mineffect && killall Dock', - ) - if (deleteEnvError) { - console.error( - 'An error occured while cleaning the dock mineffect environment', - ) - logRollbackInfo() - throw new Error(deleteEnvError) - } - - return { filepath: `${outputPath}/genie`, isVideo: true } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info('defaults delete com.apple.dock mineffect && killall Dock') -} diff --git a/record/dock/mineffect/scale.js b/record/dock/mineffect/scale.js deleted file mode 100644 index f7a2729..0000000 --- a/record/dock/mineffect/scale.js +++ /dev/null @@ -1,97 +0,0 @@ -const aperture = require('aperture')() -const delay = require('delay') -const robot = require('robotjs') -const util = require('util') -const exec = util.promisify(require('child_process').exec) -const { - makeAppActive, - moveAndResizeApp, - compressVideo, -} = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log('> Recording dock mineffect with param set to scale') - - const { stderr: setEnvError } = await exec( - 'defaults write com.apple.dock mineffect -string scale && killall Dock', - ) - if (setEnvError) { - console.error( - 'An error occured while setting up the dock mineffect command', - ) - logRollbackInfo() - throw new Error(setEnvError) - } - - // Preparation - await makeAppActive('System Preferences') - - const { width, height } = robot.getScreenSize() - const pos1 = { x: width - 932, y: height - 695 } - const pos2 = { x: width - 270, y: height - 50 } - const recordWidth = 1000 - const recordHeight = 750 - const cropArea = { - x: width - recordWidth, - y: 0, - width: recordWidth, - height: recordHeight, - } - const windowCropArea = { - x: cropArea.x + 21, - y: 156, - width: 668, - height: 568, - } - - await moveAndResizeApp('System Preferences', windowCropArea, height) - - robot.moveMouse(pos1.x, pos1.y) - - // Action! - await aperture.startRecording({ highlightClicks: true, cropArea }) - - await delay(500) - robot.mouseClick() - await delay(500) - robot.moveMouseSmooth(pos2.x, pos2.y, 2) - await delay(800) - robot.mouseClick() - await delay(800) - robot.moveMouseSmooth(pos1.x, pos1.y, 2) - await delay(800) - - const fp = await aperture.stopRecording() - // End recording - - robot.keyTap('q', 'command') - - try { - await compressVideo(fp, outputPath, 'scale') - } catch (compressVideoError) { - logRollbackInfo() - throw new Error(compressVideoError) - } - - const { stderr: deleteEnvError } = await exec( - 'defaults delete com.apple.dock mineffect && killall Dock', - ) - if (deleteEnvError) { - console.error( - 'An error occured while cleaning the dock mineffect environment', - ) - logRollbackInfo() - throw new Error(deleteEnvError) - } - - return { filepath: `${outputPath}/scale`, isVideo: true } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info('defaults delete com.apple.dock mineffect && killall Dock') -} diff --git a/record/dock/mineffect/suck.js b/record/dock/mineffect/suck.js deleted file mode 100644 index 09d14e3..0000000 --- a/record/dock/mineffect/suck.js +++ /dev/null @@ -1,97 +0,0 @@ -const aperture = require('aperture')() -const delay = require('delay') -const robot = require('robotjs') -const util = require('util') -const exec = util.promisify(require('child_process').exec) -const { - makeAppActive, - moveAndResizeApp, - compressVideo, -} = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log('> Recording dock mineffect with param set to suck') - - const { stderr: setEnvError } = await exec( - 'defaults write com.apple.dock mineffect -string suck && killall Dock', - ) - if (setEnvError) { - console.error( - 'An error occured while setting up the dock mineffect command', - ) - logRollbackInfo() - throw new Error(setEnvError) - } - - // Preparation - await makeAppActive('System Preferences') - - const { width, height } = robot.getScreenSize() - const pos1 = { x: width - 932, y: height - 695 } - const pos2 = { x: width - 270, y: height - 50 } - const recordWidth = 1000 - const recordHeight = 750 - const cropArea = { - x: width - recordWidth, - y: 0, - width: recordWidth, - height: recordHeight, - } - const windowCropArea = { - x: cropArea.x + 21, - y: 156, - width: 668, - height: 568, - } - - await moveAndResizeApp('System Preferences', windowCropArea, height) - - robot.moveMouse(pos1.x, pos1.y) - - // Action! - await aperture.startRecording({ highlightClicks: true, cropArea }) - - await delay(500) - robot.mouseClick() - await delay(500) - robot.moveMouseSmooth(pos2.x, pos2.y, 2) - await delay(800) - robot.mouseClick() - await delay(800) - robot.moveMouseSmooth(pos1.x, pos1.y, 2) - await delay(800) - - const fp = await aperture.stopRecording() - // End recording - - robot.keyTap('q', 'command') - - try { - await compressVideo(fp, outputPath, 'suck') - } catch (compressVideoError) { - logRollbackInfo() - throw new Error(compressVideoError) - } - - const { stderr: deleteEnvError } = await exec( - 'defaults delete com.apple.dock mineffect && killall Dock', - ) - if (deleteEnvError) { - console.error( - 'An error occured while cleaning the dock mineffect environment', - ) - logRollbackInfo() - throw new Error(deleteEnvError) - } - - return { filepath: `${outputPath}/suck`, isVideo: true } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info('defaults delete com.apple.dock mineffect && killall Dock') -} diff --git a/record/dock/orientation/bottom.js b/record/dock/orientation/bottom.js deleted file mode 100644 index d49765d..0000000 --- a/record/dock/orientation/bottom.js +++ /dev/null @@ -1,43 +0,0 @@ -const MacRunner = require('../../mac-runner') -const { compressPngImage } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log('> Recording dock orientation with param set to bottom') - - try { - const runner = new MacRunner() - await runner - .setDefault('com.apple.dock', 'orientation', '-string bottom', 'bottom') - .killApp('Dock') - .wait(1000) - .captureScreen(`${outputPath}/bottom-tmp.png`) - .deleteDefault('com.apple.dock', 'orientation') - .killApp('Dock') - .run() - } catch (runnerError) { - logRollbackInfo() - throw new Error(runnerError) - } - - try { - await compressPngImage( - `${outputPath}/bottom-tmp.png`, - outputPath, - 'bottom', - ) - } catch (compressPngImageError) { - logRollbackInfo() - throw new Error(compressPngImageError) - } - - return { filepath: `${outputPath}/bottom` } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info('defaults delete com.apple.dock orientation && killall Dock') -} diff --git a/record/dock/orientation/left.js b/record/dock/orientation/left.js deleted file mode 100644 index ae6b718..0000000 --- a/record/dock/orientation/left.js +++ /dev/null @@ -1,39 +0,0 @@ -const MacRunner = require('../../mac-runner') -const { compressPngImage } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log('> Recording dock orientation with param set to left') - - try { - const runner = new MacRunner() - await runner - .setDefault('com.apple.dock', 'orientation', '-string left', 'left') - .killApp('Dock') - .wait(1000) - .captureScreen(`${outputPath}/left-tmp.png`) - .deleteDefault('com.apple.dock', 'orientation') - .killApp('Dock') - .run() - } catch (runnerError) { - logRollbackInfo() - throw new Error(runnerError) - } - - try { - await compressPngImage(`${outputPath}/left-tmp.png`, outputPath, 'left') - } catch (compressPngImageError) { - logRollbackInfo() - throw new Error(compressPngImageError) - } - - return { filepath: `${outputPath}/left` } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info('defaults delete com.apple.dock orientation && killall Dock') -} diff --git a/record/dock/orientation/right.js b/record/dock/orientation/right.js deleted file mode 100644 index 9c2f5d9..0000000 --- a/record/dock/orientation/right.js +++ /dev/null @@ -1,39 +0,0 @@ -const MacRunner = require('../../mac-runner') -const { compressPngImage } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log('> Recording dock orientation with param set to right') - - try { - const runner = new MacRunner() - await runner - .setDefault('com.apple.dock', 'orientation', '-string right', 'right') - .killApp('Dock') - .wait(1000) - .captureScreen(`${outputPath}/right-tmp.png`) - .deleteDefault('com.apple.dock', 'orientation') - .killApp('Dock') - .run() - } catch (runnerError) { - logRollbackInfo() - throw new Error(runnerError) - } - - try { - await compressPngImage(`${outputPath}/right-tmp.png`, outputPath, 'right') - } catch (compressPngImageError) { - logRollbackInfo() - throw new Error(compressPngImageError) - } - - return { filepath: `${outputPath}/right` } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info('defaults delete com.apple.dock orientation && killall Dock') -} diff --git a/record/dock/readme.js b/record/dock/readme.js deleted file mode 100644 index 29019cc..0000000 --- a/record/dock/readme.js +++ /dev/null @@ -1,34 +0,0 @@ -const MacRunner = require('../mac-runner') -const { compressPngImage } = require('../utils') - -module.exports = { - run: async (outputPath) => { - console.log('> Recording dock readme screenshot') - - try { - const { screenWidth, screenHeight } = MacRunner.getScreenSize() - const dockHeight = MacRunner.getDockHeight() - - const runner = new MacRunner() - await runner - .captureScreenRect( - 0, - screenHeight - dockHeight, - screenWidth, - dockHeight, - `${outputPath}/dock-tmp.png`, - ) - .run() - } catch (runnerError) { - throw new Error(runnerError) - } - - try { - await compressPngImage(`${outputPath}/dock-tmp.png`, outputPath, 'dock') - } catch (compressPngImageError) { - throw new Error(compressPngImageError) - } - - return { filepath: `${outputPath}/dock` } - }, -} diff --git a/record/dock/show-recents/false.js b/record/dock/show-recents/false.js deleted file mode 100644 index c75b92f..0000000 --- a/record/dock/show-recents/false.js +++ /dev/null @@ -1,50 +0,0 @@ -const MacRunner = require('../../mac-runner') -const { compressPngImage } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log('> Recording dock show-recents with param set to false') - - try { - const { screenWidth, screenHeight } = MacRunner.getScreenSize() - - // Dock gets larger when not showing most recent Apps - const dockHeight = MacRunner.getDockHeight() + 4 - - const runner = new MacRunner() - await runner - .setDefault('com.apple.dock', 'show-recents', '-bool false', '0') - .killApp('Dock') - .wait(1000) - .captureScreenRect( - screenWidth - 740, - screenHeight - dockHeight, - 740, - dockHeight, - `${outputPath}/false-tmp.png`, - ) - .deleteDefault('com.apple.dock', 'show-recents') - .killApp('Dock') - .run() - } catch (runnerError) { - logRollbackInfo() - throw new Error(runnerError) - } - - try { - await compressPngImage(`${outputPath}/false-tmp.png`, outputPath, 'false') - } catch (compressPngImageError) { - logRollbackInfo() - throw new Error(compressPngImageError) - } - - return { filepath: `${outputPath}/false` } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info('defaults delete com.apple.dock show-recents && killall Dock') -} diff --git a/record/dock/show-recents/true.js b/record/dock/show-recents/true.js deleted file mode 100644 index c74aefd..0000000 --- a/record/dock/show-recents/true.js +++ /dev/null @@ -1,48 +0,0 @@ -const MacRunner = require('../../mac-runner') -const { compressPngImage } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log('> Recording dock show-recents with param set to true') - - try { - const { screenWidth, screenHeight } = MacRunner.getScreenSize() - const dockHeight = MacRunner.getDockHeight() - - const runner = new MacRunner() - await runner - .setDefault('com.apple.dock', 'show-recents', '-bool true', '1') - .killApp('Dock') - .wait(1000) - .captureScreenRect( - screenWidth - 740, - screenHeight - dockHeight, - 740, - dockHeight, - `${outputPath}/true-tmp.png`, - ) - .deleteDefault('com.apple.dock', 'show-recents') - .killApp('Dock') - .run() - } catch (runnerError) { - logRollbackInfo() - throw new Error(runnerError) - } - - try { - await compressPngImage(`${outputPath}/true-tmp.png`, outputPath, 'true') - } catch (compressPngImageError) { - logRollbackInfo() - throw new Error(compressPngImageError) - } - - return { filepath: `${outputPath}/true` } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info('defaults delete com.apple.dock show-recents && killall Dock') -} diff --git a/record/dock/tilesize/36.js b/record/dock/tilesize/36.js deleted file mode 100644 index 8d51bb3..0000000 --- a/record/dock/tilesize/36.js +++ /dev/null @@ -1,39 +0,0 @@ -const MacRunner = require('../../mac-runner') -const { compressPngImage } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log('> Recording dock icon size with param set to 36') - - try { - const runner = new MacRunner() - await runner - .setDefault('com.apple.dock', 'tilesize', '-int 36', '36') - .killApp('Dock') - .wait(1000) - .captureScreen(`${outputPath}/36-tmp.png`) - .deleteDefault('com.apple.dock', 'tilesize') - .killApp('Dock') - .run() - } catch (runnerError) { - logRollbackInfo() - throw new Error(runnerError) - } - - try { - await compressPngImage(`${outputPath}/36-tmp.png`, outputPath, '36') - } catch (compressPngImageError) { - logRollbackInfo() - throw new Error(compressPngImageError) - } - - return { filepath: `${outputPath}/36` } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info('defaults delete com.apple.dock tilesize && killall Dock') -} diff --git a/record/dock/tilesize/48.js b/record/dock/tilesize/48.js deleted file mode 100644 index 68cd011..0000000 --- a/record/dock/tilesize/48.js +++ /dev/null @@ -1,39 +0,0 @@ -const MacRunner = require('../../mac-runner') -const { compressPngImage } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log('> Recording dock icon size with param set to 48') - - try { - const runner = new MacRunner() - await runner - .setDefault('com.apple.dock', 'tilesize', '-int 48', '48') - .killApp('Dock') - .wait(1000) - .captureScreen(`${outputPath}/48-tmp.png`) - .deleteDefault('com.apple.dock', 'tilesize') - .killApp('Dock') - .run() - } catch (runnerError) { - logRollbackInfo() - throw new Error(runnerError) - } - - try { - await compressPngImage(`${outputPath}/48-tmp.png`, outputPath, '48') - } catch (compressPngImageError) { - logRollbackInfo() - throw new Error(compressPngImageError) - } - - return { filepath: `${outputPath}/48` } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info('defaults delete com.apple.dock tilesize && killall Dock') -} diff --git a/record/finder/AppleShowAllFiles/false.js b/record/finder/AppleShowAllFiles/false.js deleted file mode 100644 index 9f8688d..0000000 --- a/record/finder/AppleShowAllFiles/false.js +++ /dev/null @@ -1,44 +0,0 @@ -const MacRunner = require('../../mac-runner') -const { compressPngImage } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log('> Recording finder show hidden files to false') - - try { - const runner = new MacRunner() - await runner - .setDefault('com.apple.finder', 'AppleShowAllFiles', '-bool false', '0') - .killApp('Finder') - .wait(1000) - .openApp('Finder', '~') - .activateApp('Finder') - .moveAndResizeApp('Finder', 0, 0, 740, 400) - .captureApp('Finder', `${outputPath}/false.png`) - .deleteDefault('com.apple.finder', 'AppleShowAllFiles') - .killApp('Finder') - .run() - } catch (runnerError) { - logRollbackInfo() - throw new Error(runnerError) - } - - try { - await compressPngImage(`${outputPath}/false.png`, outputPath, 'false') - } catch (compressPngImageError) { - logRollbackInfo() - throw new Error(compressPngImageError) - } - - return { filepath: `${outputPath}/false` } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info( - 'defaults delete com.apple.finder AppleShowAllFiles && killall Finder', - ) -} diff --git a/record/finder/AppleShowAllFiles/true.js b/record/finder/AppleShowAllFiles/true.js deleted file mode 100644 index cb45f77..0000000 --- a/record/finder/AppleShowAllFiles/true.js +++ /dev/null @@ -1,44 +0,0 @@ -const MacRunner = require('../../mac-runner') -const { compressPngImage } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log('> Recording finder show hidden files to true') - - try { - const runner = new MacRunner() - await runner - .setDefault('com.apple.finder', 'AppleShowAllFiles', '-bool true', '1') - .killApp('Finder') - .wait(1000) - .openApp('Finder', '~') - .activateApp('Finder') - .moveAndResizeApp('Finder', 0, 0, 740, 400) - .captureApp('Finder', `${outputPath}/true.png`) - .deleteDefault('com.apple.finder', 'AppleShowAllFiles') - .killApp('Finder') - .run() - } catch (runnerError) { - logRollbackInfo() - throw new Error(runnerError) - } - - try { - await compressPngImage(`${outputPath}/true.png`, outputPath, 'true') - } catch (compressPngImageError) { - logRollbackInfo() - throw new Error(compressPngImageError) - } - - return { filepath: `${outputPath}/true` } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info( - 'defaults delete com.apple.finder AppleShowAllFiles && killall Finder', - ) -} diff --git a/record/finder/FXEnableExtensionChangeWarning/false.js b/record/finder/FXEnableExtensionChangeWarning/false.js deleted file mode 100644 index 6dce51e..0000000 --- a/record/finder/FXEnableExtensionChangeWarning/false.js +++ /dev/null @@ -1,79 +0,0 @@ -const robot = require('robotjs') -const MacRunner = require('../../mac-runner') -const delay = require('delay') -const { compressVideo } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log( - '> Recording finder FXEnableExtensionChangeWarning with param set to false', - ) - - const { width, height } = robot.getScreenSize() - const recordWidth = 720 - const recordHeight = 404 - const cropArea = { - x: 0, - y: height - recordHeight - MacRunner.getMenuBarHeight(), - width: recordWidth, - height: recordHeight, - } - - try { - const runner = new MacRunner() - await runner - .setDefault( - 'com.apple.finder', - 'FXEnableExtensionChangeWarning', - '-bool false', - '0', - ) - .killApp('Finder') - .openApp('Finder', '~/macos-defaults') - .activateApp('Finder') - .moveAndResizeApp('Finder', 0, 0, 740, 400) - .register(() => robot.keyTap('right')) - .register(() => delay(100)) - .register(() => robot.keyTap('right')) - .register(() => delay(100)) - .startVideo({ highlightClicks: true, cropArea }) - .register(() => robot.keyTap('enter')) - .register(() => robot.keyTap('right', 'command')) - .register(() => robot.keyTap('left', ['shift', 'alt'])) - .register(() => robot.typeStringDelayed('txt', 300)) - .register(() => robot.keyTap('enter')) - .register(() => delay(800)) - .register(() => robot.keyTap('enter')) - .register(() => robot.keyTap('right', 'command')) - .register(() => robot.keyTap('left', ['shift', 'alt'])) - .register(() => robot.typeStringDelayed('md', 300)) - .register(() => robot.keyTap('enter')) - .register(() => delay(800)) - .stopVideo(`${outputPath}/false.mp4`) - .deleteDefault('com.apple.finder', 'FXEnableExtensionChangeWarning') - .killApp('Finder') - .run() - } catch (runnerError) { - logRollbackInfo() - throw new Error(runnerError) - } - - try { - await compressVideo(`${outputPath}/false.mp4`, outputPath, 'false') - } catch (compressVideoError) { - logRollbackInfo() - throw new Error(compressVideoError) - } - - return { filepath: `${outputPath}/false`, isVideo: true } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info( - 'defaults delete com.apple.finder FXEnableExtensionChangeWarning && killall Finder', - ) -} diff --git a/record/finder/FXEnableExtensionChangeWarning/true.js b/record/finder/FXEnableExtensionChangeWarning/true.js deleted file mode 100644 index f7b1485..0000000 --- a/record/finder/FXEnableExtensionChangeWarning/true.js +++ /dev/null @@ -1,75 +0,0 @@ -const robot = require('robotjs') -const MacRunner = require('../../mac-runner') -const delay = require('delay') -const { compressVideo } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log( - '> Recording finder FXEnableExtensionChangeWarning with param set to true', - ) - - const { width, height } = robot.getScreenSize() - const recordWidth = 720 - const recordHeight = 404 - const cropArea = { - x: width / 2 - recordWidth / 2, - y: height / 2 - recordHeight / 2 + 200, - width: recordWidth, - height: recordHeight, - } - - try { - const runner = new MacRunner() - await runner - .setDefault( - 'com.apple.finder', - 'FXEnableExtensionChangeWarning', - '-bool true', - '1', - ) - .killApp('Finder') - .openApp('Finder', '~/macos-defaults') - .activateApp('Finder') - .moveAndResizeApp('Finder', cropArea.x, cropArea.y - 398, 740, 400) - .register(() => robot.keyTap('right')) - .register(() => delay(100)) - .register(() => robot.keyTap('right')) - .register(() => delay(100)) - .startVideo({ highlightClicks: true, cropArea }) - .register(() => robot.keyTap('enter')) - .register(() => robot.keyTap('right', 'command')) - .register(() => robot.keyTap('left', ['shift', 'alt'])) - .register(() => robot.typeStringDelayed('txt', 300)) - .register(() => robot.keyTap('enter')) - .register(() => delay(800)) - .register(() => robot.keyTap('escape')) - .register(() => delay(800)) - .stopVideo(`${outputPath}/true.mp4`) - .deleteDefault('com.apple.finder', 'FXEnableExtensionChangeWarning') - .killApp('Finder') - .run() - } catch (runnerError) { - logRollbackInfo() - throw new Error(runnerError) - } - - try { - await compressVideo(`${outputPath}/true.mp4`, outputPath, 'true') - } catch (compressVideoError) { - logRollbackInfo() - throw new Error(compressVideoError) - } - - return { filepath: `${outputPath}/true`, isVideo: true } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info( - 'defaults delete com.apple.finder FXEnableExtensionChangeWarning && killall Finder', - ) -} diff --git a/record/finder/NSTableViewDefaultSizeMode/1.js b/record/finder/NSTableViewDefaultSizeMode/1.js deleted file mode 100644 index 1ef495b..0000000 --- a/record/finder/NSTableViewDefaultSizeMode/1.js +++ /dev/null @@ -1,48 +0,0 @@ -const MacRunner = require('../../mac-runner') -const { compressPngImage } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log('> Recording finder NSTableViewDefaultSizeMode to 1') - - try { - const runner = new MacRunner() - await runner - .setDefault( - 'NSGlobalDomain', - 'NSTableViewDefaultSizeMode', - '-int 1', - '1', - ) - .killApp('Finder') - .openApp('Finder', '~/macos-defaults') - .activateApp('Finder') - .moveAndResizeApp('Finder', 0, 0, 740, 400) - .captureApp('Finder', `${outputPath}/1.png`) - .deleteDefault('NSGlobalDomain', 'NSTableViewDefaultSizeMode') - .killApp('Finder') - .run() - } catch (runnerError) { - logRollbackInfo() - throw new Error(runnerError) - } - - try { - await compressPngImage(`${outputPath}/1.png`, outputPath, '1') - } catch (compressPngImageError) { - logRollbackInfo() - throw new Error(compressPngImageError) - } - - return { filepath: `${outputPath}/1` } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info( - 'defaults delete NSGlobalDomain NSTableViewDefaultSizeMode && killall Finder', - ) -} diff --git a/record/finder/NSTableViewDefaultSizeMode/2.js b/record/finder/NSTableViewDefaultSizeMode/2.js deleted file mode 100644 index 4c8b72f..0000000 --- a/record/finder/NSTableViewDefaultSizeMode/2.js +++ /dev/null @@ -1,48 +0,0 @@ -const MacRunner = require('../../mac-runner') -const { compressPngImage } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log('> Recording finder NSTableViewDefaultSizeMode to 2') - - try { - const runner = new MacRunner() - await runner - .setDefault( - 'NSGlobalDomain', - 'NSTableViewDefaultSizeMode', - '-int 2', - '2', - ) - .killApp('Finder') - .openApp('Finder', '~/macos-defaults') - .activateApp('Finder') - .moveAndResizeApp('Finder', 0, 0, 740, 400) - .captureApp('Finder', `${outputPath}/2.png`) - .deleteDefault('NSGlobalDomain', 'NSTableViewDefaultSizeMode') - .killApp('Finder') - .run() - } catch (runnerError) { - logRollbackInfo() - throw new Error(runnerError) - } - - try { - await compressPngImage(`${outputPath}/2.png`, outputPath, '2') - } catch (compressPngImageError) { - logRollbackInfo() - throw new Error(compressPngImageError) - } - - return { filepath: `${outputPath}/2` } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info( - 'defaults delete NSGlobalDomain NSTableViewDefaultSizeMode && killall Finder', - ) -} diff --git a/record/finder/NSTableViewDefaultSizeMode/3.js b/record/finder/NSTableViewDefaultSizeMode/3.js deleted file mode 100644 index 9ea0836..0000000 --- a/record/finder/NSTableViewDefaultSizeMode/3.js +++ /dev/null @@ -1,48 +0,0 @@ -const MacRunner = require('../../mac-runner') -const { compressPngImage } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log('> Recording finder NSTableViewDefaultSizeMode to 3') - - try { - const runner = new MacRunner() - await runner - .setDefault( - 'NSGlobalDomain', - 'NSTableViewDefaultSizeMode', - '-int 3', - '3', - ) - .killApp('Finder') - .openApp('Finder', '~/macos-defaults') - .activateApp('Finder') - .moveAndResizeApp('Finder', 0, 0, 740, 400) - .captureApp('Finder', `${outputPath}/3.png`) - .deleteDefault('NSGlobalDomain', 'NSTableViewDefaultSizeMode') - .killApp('Finder') - .run() - } catch (runnerError) { - logRollbackInfo() - throw new Error(runnerError) - } - - try { - await compressPngImage(`${outputPath}/3.png`, outputPath, '3') - } catch (compressPngImageError) { - logRollbackInfo() - throw new Error(compressPngImageError) - } - - return { filepath: `${outputPath}/3` } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info( - 'defaults delete NSGlobalDomain NSTableViewDefaultSizeMode && killall Finder', - ) -} diff --git a/record/finder/NSToolbarTitleViewRolloverDelay/0.5.js b/record/finder/NSToolbarTitleViewRolloverDelay/0.5.js deleted file mode 100644 index 1d40954..0000000 --- a/record/finder/NSToolbarTitleViewRolloverDelay/0.5.js +++ /dev/null @@ -1,77 +0,0 @@ -const robot = require('robotjs') -const MacRunner = require('../../mac-runner') -const delay = require('delay') -const { compressVideo } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log( - '> Recording finder NSToolbarTitleViewRolloverDelay with param set to 0', - ) - - const { width, height } = robot.getScreenSize() - const recordWidth = 740 - const recordHeight = 404 - const cropArea = { - x: 0, - y: height - recordHeight - MacRunner.getMenuBarHeight(), - width: recordWidth, - height: recordHeight, - } - const pos1 = { - x: cropArea.x + recordWidth / 3 + 20, - y: MacRunner.getMenuBarHeight() + 100, - } - const pos2 = { - x: cropArea.x + recordWidth / 3 + 20, - y: MacRunner.getMenuBarHeight() + 30, - } - - try { - const runner = new MacRunner() - await runner - .setDefault( - 'NSGlobalDomain', - 'NSToolbarTitleViewRolloverDelay', - '-float 0', - '0', - ) - .killApp('Finder') - .openApp('Finder', '~/macos-defaults') - .activateApp('Finder') - .moveAndResizeApp('Finder', 0, 0, 740, 400) - .register(() => robot.moveMouse(pos1.x, pos1.y)) - .startVideo({ highlightClicks: true, cropArea }) - .register(() => delay(300)) - .register(() => robot.moveMouseSmooth(pos2.x, pos2.y)) - .register(() => delay(1500)) - .register(() => robot.moveMouseSmooth(pos1.x, pos1.y)) - .register(() => delay(1000)) - .stopVideo(`${outputPath}/0.mp4`) - .deleteDefault('NSGlobalDomain', 'NSToolbarTitleViewRolloverDelay') - .killApp('Finder') - .run() - } catch (runnerError) { - logRollbackInfo() - throw new Error(runnerError) - } - - try { - await compressVideo(`${outputPath}/0.mp4`, outputPath, '0') - } catch (compressVideoError) { - logRollbackInfo() - throw new Error(compressVideoError) - } - - return { filepath: `${outputPath}/0`, isVideo: true } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info( - 'defaults delete NSGlobalDomain NSToolbarTitleViewRolloverDelay && killall Finder', - ) -} diff --git a/record/finder/NSToolbarTitleViewRolloverDelay/0.js b/record/finder/NSToolbarTitleViewRolloverDelay/0.js deleted file mode 100644 index 1f1dbdc..0000000 --- a/record/finder/NSToolbarTitleViewRolloverDelay/0.js +++ /dev/null @@ -1,77 +0,0 @@ -const robot = require('robotjs') -const MacRunner = require('../../mac-runner') -const delay = require('delay') -const { compressVideo } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log( - '> Recording finder NSToolbarTitleViewRolloverDelay with param set to 0.5', - ) - - const { width, height } = robot.getScreenSize() - const recordWidth = 740 - const recordHeight = 404 - const cropArea = { - x: 0, - y: height - recordHeight - MacRunner.getMenuBarHeight(), - width: recordWidth, - height: recordHeight, - } - const pos1 = { - x: cropArea.x + recordWidth / 3 + 20, - y: MacRunner.getMenuBarHeight() + 100, - } - const pos2 = { - x: cropArea.x + recordWidth / 3 + 20, - y: MacRunner.getMenuBarHeight() + 30, - } - - try { - const runner = new MacRunner() - await runner - .setDefault( - 'NSGlobalDomain', - 'NSToolbarTitleViewRolloverDelay', - '-float 0.5', - '0.5', - ) - .killApp('Finder') - .openApp('Finder', '~/macos-defaults') - .activateApp('Finder') - .moveAndResizeApp('Finder', 0, 0, 740, 400) - .register(() => robot.moveMouse(pos1.x, pos1.y)) - .startVideo({ highlightClicks: true, cropArea }) - .register(() => delay(300)) - .register(() => robot.moveMouseSmooth(pos2.x, pos2.y)) - .register(() => delay(1500)) - .register(() => robot.moveMouseSmooth(pos1.x, pos1.y)) - .register(() => delay(1000)) - .stopVideo(`${outputPath}/0.5.mp4`) - .deleteDefault('NSGlobalDomain', 'NSToolbarTitleViewRolloverDelay') - .killApp('Finder') - .run() - } catch (runnerError) { - logRollbackInfo() - throw new Error(runnerError) - } - - try { - await compressVideo(`${outputPath}/0.5.mp4`, outputPath, '0.5') - } catch (compressVideoError) { - logRollbackInfo() - throw new Error(compressVideoError) - } - - return { filepath: `${outputPath}/0.5`, isVideo: true } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info( - 'defaults delete NSGlobalDomain NSToolbarTitleViewRolloverDelay && killall Finder', - ) -} diff --git a/record/finder/NSToolbarTitleViewRolloverDelay/1.js b/record/finder/NSToolbarTitleViewRolloverDelay/1.js deleted file mode 100644 index 4ec9f18..0000000 --- a/record/finder/NSToolbarTitleViewRolloverDelay/1.js +++ /dev/null @@ -1,77 +0,0 @@ -const robot = require('robotjs') -const MacRunner = require('../../mac-runner') -const delay = require('delay') -const { compressVideo } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log( - '> Recording finder NSToolbarTitleViewRolloverDelay with param set to 1', - ) - - const { width, height } = robot.getScreenSize() - const recordWidth = 740 - const recordHeight = 404 - const cropArea = { - x: 0, - y: height - recordHeight - MacRunner.getMenuBarHeight(), - width: recordWidth, - height: recordHeight, - } - const pos1 = { - x: cropArea.x + recordWidth / 3 + 20, - y: MacRunner.getMenuBarHeight() + 100, - } - const pos2 = { - x: cropArea.x + recordWidth / 3 + 20, - y: MacRunner.getMenuBarHeight() + 30, - } - - try { - const runner = new MacRunner() - await runner - .setDefault( - 'NSGlobalDomain', - 'NSToolbarTitleViewRolloverDelay', - '-float 1', - '1', - ) - .killApp('Finder') - .openApp('Finder', '~/macos-defaults') - .activateApp('Finder') - .moveAndResizeApp('Finder', 0, 0, 740, 400) - .register(() => robot.moveMouse(pos1.x, pos1.y)) - .startVideo({ highlightClicks: true, cropArea }) - .register(() => delay(300)) - .register(() => robot.moveMouseSmooth(pos2.x, pos2.y)) - .register(() => delay(1500)) - .register(() => robot.moveMouseSmooth(pos1.x, pos1.y)) - .register(() => delay(1000)) - .stopVideo(`${outputPath}/1.mp4`) - .deleteDefault('NSGlobalDomain', 'NSToolbarTitleViewRolloverDelay') - .killApp('Finder') - .run() - } catch (runnerError) { - logRollbackInfo() - throw new Error(runnerError) - } - - try { - await compressVideo(`${outputPath}/1.mp4`, outputPath, '1') - } catch (compressVideoError) { - logRollbackInfo() - throw new Error(compressVideoError) - } - - return { filepath: `${outputPath}/1`, isVideo: true } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info( - 'defaults delete NSGlobalDomain NSToolbarTitleViewRolloverDelay && killall Finder', - ) -} diff --git a/record/finder/ShowPathbar/false.js b/record/finder/ShowPathbar/false.js deleted file mode 100644 index 92d5e17..0000000 --- a/record/finder/ShowPathbar/false.js +++ /dev/null @@ -1,41 +0,0 @@ -const MacRunner = require('../../mac-runner') -const { compressPngImage } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log('> Recording finder ShowPathbar to false') - - try { - const runner = new MacRunner() - await runner - .setDefault('com.apple.finder', 'ShowPathbar', '-bool false', '0') - .killApp('Finder') - .openApp('Finder', '~/macos-defaults') - .activateApp('Finder') - .moveAndResizeApp('Finder', 0, 0, 740, 400) - .captureApp('Finder', `${outputPath}/false.png`) - .deleteDefault('com.apple.finder', 'ShowPathbar') - .killApp('Finder') - .run() - } catch (runnerError) { - logRollbackInfo() - throw new Error(runnerError) - } - - try { - await compressPngImage(`${outputPath}/false.png`, outputPath, 'false') - } catch (compressPngImageError) { - logRollbackInfo() - throw new Error(compressPngImageError) - } - - return { filepath: `${outputPath}/false` } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info('defaults delete com.apple.finder ShowPathbar && killall Finder') -} diff --git a/record/finder/ShowPathbar/true.js b/record/finder/ShowPathbar/true.js deleted file mode 100644 index 25baa60..0000000 --- a/record/finder/ShowPathbar/true.js +++ /dev/null @@ -1,41 +0,0 @@ -const MacRunner = require('../../mac-runner') -const { compressPngImage } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log('> Recording finder ShowPathbar to true') - - try { - const runner = new MacRunner() - await runner - .setDefault('com.apple.finder', 'ShowPathbar', '-bool true', '1') - .killApp('Finder') - .openApp('Finder', '~/macos-defaults') - .activateApp('Finder') - .moveAndResizeApp('Finder', 0, 0, 740, 400) - .captureApp('Finder', `${outputPath}/true.png`) - .deleteDefault('com.apple.finder', 'ShowPathbar') - .killApp('Finder') - .run() - } catch (runnerError) { - logRollbackInfo() - throw new Error(runnerError) - } - - try { - await compressPngImage(`${outputPath}/true.png`, outputPath, 'true') - } catch (compressPngImageError) { - logRollbackInfo() - throw new Error(compressPngImageError) - } - - return { filepath: `${outputPath}/true` } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info('defaults delete com.apple.finder ShowPathbar && killall Finder') -} diff --git a/record/finder/_FXSortFoldersFirst/false.js b/record/finder/_FXSortFoldersFirst/false.js deleted file mode 100644 index f455174..0000000 --- a/record/finder/_FXSortFoldersFirst/false.js +++ /dev/null @@ -1,50 +0,0 @@ -const MacRunner = require('../../mac-runner') -const { compressPngImage } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log( - '> Recording finder _FXSortFoldersFirst with param set to false', - ) - - try { - const runner = new MacRunner() - await runner - .setDefault( - 'com.apple.finder', - '_FXSortFoldersFirst', - '-bool false', - '0', - ) - .killApp('Finder') - .openApp('Finder', '~/macos-defaults') - .activateApp('Finder') - .moveAndResizeApp('Finder', 0, 0, 740, 400) - .captureApp('Finder', `${outputPath}/false.png`) - .deleteDefault('com.apple.finder', '_FXSortFoldersFirst') - .killApp('Finder') - .run() - } catch (runnerError) { - logRollbackInfo() - throw new Error(runnerError) - } - - try { - await compressPngImage(`${outputPath}/false.png`, outputPath, 'false') - } catch (compressPngImageError) { - logRollbackInfo() - throw new Error(compressPngImageError) - } - - return { filepath: `${outputPath}/false` } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info( - 'defaults delete com.apple.finder _FXSortFoldersFirst && killall Finder', - ) -} diff --git a/record/finder/_FXSortFoldersFirst/true.js b/record/finder/_FXSortFoldersFirst/true.js deleted file mode 100644 index eaf2cfd..0000000 --- a/record/finder/_FXSortFoldersFirst/true.js +++ /dev/null @@ -1,48 +0,0 @@ -const MacRunner = require('../../mac-runner') -const { compressPngImage } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log('> Recording finder _FXSortFoldersFirst with param set to true') - - try { - const runner = new MacRunner() - await runner - .setDefault( - 'com.apple.finder', - '_FXSortFoldersFirst', - '-bool true', - '1', - ) - .killApp('Finder') - .openApp('Finder', '~/macos-defaults') - .activateApp('Finder') - .moveAndResizeApp('Finder', 0, 0, 740, 400) - .captureApp('Finder', `${outputPath}/true.png`) - .deleteDefault('com.apple.finder', '_FXSortFoldersFirst') - .killApp('Finder') - .run() - } catch (runnerError) { - logRollbackInfo() - throw new Error(runnerError) - } - - try { - await compressPngImage(`${outputPath}/true.png`, outputPath, 'true') - } catch (compressPngImageError) { - logRollbackInfo() - throw new Error(compressPngImageError) - } - - return { filepath: `${outputPath}/true` } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info( - 'defaults delete com.apple.finder _FXSortFoldersFirst && killall Finder', - ) -} diff --git a/record/finder/showWindowTitlebarIcons/false.js b/record/finder/showWindowTitlebarIcons/false.js deleted file mode 100644 index fd28828..0000000 --- a/record/finder/showWindowTitlebarIcons/false.js +++ /dev/null @@ -1,48 +0,0 @@ -const MacRunner = require('../../mac-runner') -const { compressPngImage } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log('> Recording finder show window title bar icons to false') - - try { - const runner = new MacRunner() - await runner - .setDefault( - 'com.apple.universalaccess', - 'showWindowTitlebarIcons', - '-bool false', - '0', - ) - .killApp('Finder') - .openApp('Finder', '~/macos-defaults') - .activateApp('Finder') - .moveAndResizeApp('Finder', 0, 0, 740, 400) - .captureApp('Finder', `${outputPath}/false.png`) - .deleteDefault('com.apple.universalaccess', 'showWindowTitlebarIcons') - .killApp('Finder') - .run() - } catch (runnerError) { - logRollbackInfo() - throw new Error(runnerError) - } - - try { - await compressPngImage(`${outputPath}/false.png`, outputPath, 'false') - } catch (compressPngImageError) { - logRollbackInfo() - throw new Error(compressPngImageError) - } - - return { filepath: `${outputPath}/false` } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info( - 'defaults delete com.apple.universalaccess showWindowTitlebarIcons && killall Finder', - ) -} diff --git a/record/finder/showWindowTitlebarIcons/true.js b/record/finder/showWindowTitlebarIcons/true.js deleted file mode 100644 index 8053901..0000000 --- a/record/finder/showWindowTitlebarIcons/true.js +++ /dev/null @@ -1,48 +0,0 @@ -const MacRunner = require('../../mac-runner') -const { compressPngImage } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log('> Recording finder showWindowTitlebarIcons to true') - - try { - const runner = new MacRunner() - await runner - .setDefault( - 'com.apple.universalaccess', - 'showWindowTitlebarIcons', - '-bool true', - '1', - ) - .killApp('Finder') - .openApp('Finder', '~/macos-defaults') - .activateApp('Finder') - .moveAndResizeApp('Finder', 0, 0, 740, 400) - .captureApp('Finder', `${outputPath}/true.png`) - .deleteDefault('com.apple.universalaccess', 'showWindowTitlebarIcons') - .killApp('Finder') - .run() - } catch (runnerError) { - logRollbackInfo() - throw new Error(runnerError) - } - - try { - await compressPngImage(`${outputPath}/true.png`, outputPath, 'true') - } catch (compressPngImageError) { - logRollbackInfo() - throw new Error(compressPngImageError) - } - - return { filepath: `${outputPath}/true` } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info( - 'defaults delete com.apple.universalaccess showWindowTitlebarIcons && killall Finder', - ) -} diff --git a/record/index.js b/record/index.js deleted file mode 100644 index 2fed340..0000000 --- a/record/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const record = require('./record') - -;(async () => await record(process.argv.slice(2, process.argv.length)))() diff --git a/record/mac-runner.js b/record/mac-runner.js deleted file mode 100644 index 5c0f675..0000000 --- a/record/mac-runner.js +++ /dev/null @@ -1,233 +0,0 @@ -const aperture = require('aperture')() -const robot = require('robotjs') -const wait = require('delay') -const fs = require('fs') -const util = require('util') -const exec = util.promisify(require('child_process').exec) - -class MacRunner { - constructor(commands = []) { - this.commands = commands - } - - /** - * @return {{screenWidth: number, screenHeight: number}} The main screen size - */ - static getScreenSize() { - const { width, height } = robot.getScreenSize() - return { screenWidth: width, screenHeight: height } - } - - /** - * @return {number} The Dock height - */ - static getDockHeight() { - return 100 - } - - /** - * @return {number} The Menu Bar height - */ - static getMenuBarHeight() { - return 23 - } - - /** - * Set MacOS defaults system - * @param {*} domain Application domain - * @param {*} key Default key - * @param {*} params Values for the default - * @param {*} expectedResult Expected defaults read result - */ - setDefault(domain, key, params, expectedResult) { - return this.register(async () => { - const defaultCommand = `defaults write ${domain} ${key} ${params}` - - // Retry command until it works (sometimes it doesn't...) - for (let i = 10; i--; i > 0) { - try { - await execCommand(defaultCommand, 100) - const result = await execCommand(`defaults read ${domain} ${key}`, 0) - if (expectedResult === result.trim()) { - break - } - } catch (error) { - console.error(error) - } - - if (i === 1) { - throw new Error(`[${defaultCommand}] failed (too much trials)`) - } - } - }) - } - - /** - * Read MacOS defaults system - * @param {*} domain Application domain - * @param {*} key Default key - */ - readDefault(domain, key) { - return this.register(async () => { - const defaultCommand = `defaults read ${domain} | grep ${key}` - console.log(await execCommand(defaultCommand, 0)) - }) - } - - /** - * Delete MacOS defaults system - * @param {*} domain Application domain - * @param {*} key Default key - */ - deleteDefault(domain, key) { - return this.register(async () => { - const defaultCommand = `defaults delete ${domain} ${key}` - await execCommand(defaultCommand) - }) - } - - /** - * Open an application from it's name - * @param {*} appName Application name (ex: Finder) - * @param {*} params Application parameters - */ - openApp(appName, params = '') { - return this.register(() => execCommand(`open -a "${appName}" ${params}`)) - } - - /** - * Make active a running application - * @param {*} appName Application name - */ - activateApp(appName) { - return this.register(() => - execCommand(`osascript -e 'tell application "${appName}" to activate'`), - ) - } - - /** - * Kill an application from it's name - * @param {*} appName Application name - */ - killApp(appName) { - return this.register(() => execCommand(`killall ${appName}`)) - } - - /** - * Move and resize an application window - * @param {*} appName Application name - * @param {*} x X coordinate (from the left of the screen) - * @param {*} y Y coordinate (from the top of the screen) - * @param {*} width Width of the app window - * @param {*} height Height of the app window - */ - moveAndResizeApp(appName, x, y, width, height) { - const h = { start: x, end: x + width } - const v = { start: y, end: y + height } - return this.register(() => - execCommand( - `osascript -e 'tell application "${appName}" to set the bounds of the first window to {${h.start}, ${v.start}, ${h.end}, ${v.end}}'`, - ), - ) - } - - /** - * Capture the whole screen into a file - * @param {*} output Output file name (png) - */ - captureScreen(output) { - return this.register(async () => { - await this.wait(2000) - execCommand(`screencapture ${output}`) - }) - } - - /** - * Capture a screen rect into a file - * @param {*} x X coordinate (from the left of the screen) - * @param {*} y Y coordinate (from the top of the screen) - * @param {*} width Width of the capture - * @param {*} height Height of the capture - * @param {*} output Output file name (png) - */ - captureScreenRect(x, y, width, height, output) { - return this.register(() => - execCommand(`screencapture -R${x},${y},${width},${height} ${output}`), - ) - } - - /** - * Capture the app window into a file - * @param {*} appName Application name to capture - * @param {*} output Output file name (png) - * @param {boolean} disableShadow Do not capture the App shadow - */ - captureApp(appName, output, disableShadow = true) { - return this.register(() => - execCommand( - `screencapture ${ - disableShadow ? '-o' : '' - } -l$(osascript -e 'tell app "${appName}" to id of window 1') ${output}`, - ), - ) - } - - /** - * Start the video recording using aperturejs - * @param {*} options aperturejs options - */ - startVideo(options) { - return this.register(async () => { - console.info(' Start video recording...') - await aperture.startRecording(options) - await aperture.isFileReady - }) - } - - /** - * Stop the video recording - * @param {*} output video file output - */ - stopVideo(output) { - return this.register(async () => { - console.info(' Stop video recording...') - const fp = await aperture.stopRecording() - if (fs.existsSync(output)) { - fs.unlinkSync(output) - } - fs.renameSync(fp, output) - }) - } - - /** - * Wait for a given delay - * @param {*} delay Delay in ms - */ - wait(delay) { - return this.register(() => wait(delay)) - } - - /** - * Execute the runner with all given commands - */ - async run() { - await this.commands.reduce((p, fn) => p.then(fn), Promise.resolve()) - } - - register(command) { - this.commands.push(command) - return new MacRunner(this.commands) - } -} - -async function execCommand(command, delay = 1000) { - console.info(` Command: [${command}]`) - const { stderr, stdout } = await exec(command) - if (stderr) { - throw new Error(stderr) - } - await wait(delay) - return stdout -} - -module.exports = MacRunner diff --git a/record/menubar/FlashDateSeparators/false.js b/record/menubar/FlashDateSeparators/false.js deleted file mode 100644 index 25c128c..0000000 --- a/record/menubar/FlashDateSeparators/false.js +++ /dev/null @@ -1,75 +0,0 @@ -const aperture = require('aperture')() -const delay = require('delay') -const robot = require('robotjs') -const util = require('util') -const exec = util.promisify(require('child_process').exec) -const { makeAppActive, compressVideo } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log( - '> Recording menu bar clock FlashDateSeparators with param set to false', - ) - - // Set the menu bar menuExtras to only show the clock, it will be on the left of notification center, siri, and spotlight search. - const { stderr: setEnvError } = await exec( - `defaults write com.apple.menuextra.clock FlashDateSeparators -bool false && killall SystemUIServer && sleep 10`, - ) - - if (setEnvError) { - console.error( - 'An error occured while setting up the menu bar clock FlashDateSeparators command', - ) - logRollbackInfo() - throw new Error(setEnvError) - } - - // Preparation - await makeAppActive('Finder') - const { width, height } = robot.getScreenSize() - const recordWidth = 400 - const recordHeight = 29 - const cropArea = { - x: width - recordWidth, - y: height - recordHeight, // Film the menu bar, which is 29 pixels - width: recordWidth, - height: recordHeight, - } - - // Action! - await aperture.startRecording({ cropArea }) - await delay(2000) - - const fp = await aperture.stopRecording() - // End recording - - try { - await compressVideo(fp, outputPath, 'false') - } catch (compressVideoError) { - logRollbackInfo() - throw new Error(compressVideoError) - } - - const { stderr: deleteEnvError } = await exec( - 'defaults delete com.apple.menuextra.clock FlashDateSeparators && killall SystemUIServer && sleep 10', - ) - if (deleteEnvError) { - console.error( - 'An error occured while cleaning the menu bar clock FlashDateSeparators environment', - ) - logRollbackInfo() - throw new Error(deleteEnvError) - } - - return { filepath: `${outputPath}/false`, isVideo: true } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info( - 'defaults delete com.apple.menuextra.clock FlashDateSeparators && killall SystemUIServer', - ) -} diff --git a/record/menubar/FlashDateSeparators/true.js b/record/menubar/FlashDateSeparators/true.js deleted file mode 100644 index 504d4fa..0000000 --- a/record/menubar/FlashDateSeparators/true.js +++ /dev/null @@ -1,75 +0,0 @@ -const aperture = require('aperture')() -const delay = require('delay') -const robot = require('robotjs') -const util = require('util') -const exec = util.promisify(require('child_process').exec) -const { makeAppActive, compressVideo } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log( - '> Recording menu bar clock FlashDateSeparators with param set to true', - ) - - // Set the menu bar menuExtras to only show the clock, it will be on the left of notification center, siri, and spotlight search. - const { stderr: setEnvError } = await exec( - `defaults write com.apple.menuextra.clock FlashDateSeparators -bool true && killall SystemUIServer && sleep 10`, - ) - - if (setEnvError) { - console.error( - 'An error occured while setting up the menu bar clock FlashDateSeparators command', - ) - logRollbackInfo() - throw new Error(setEnvError) - } - - // Preparation - await makeAppActive('Finder') - const { width, height } = robot.getScreenSize() - const recordWidth = 400 - const recordHeight = 29 - const cropArea = { - x: width - recordWidth, - y: height - recordHeight, // Film the menu bar, which is 29 pixels - width: recordWidth, - height: recordHeight, - } - - // Action! - await aperture.startRecording({ cropArea }) - await delay(2000) - - const fp = await aperture.stopRecording() - // End recording - - try { - await compressVideo(fp, outputPath, 'true') - } catch (compressVideoError) { - logRollbackInfo() - throw new Error(compressVideoError) - } - - const { stderr: deleteEnvError } = await exec( - 'defaults delete com.apple.menuextra.clock FlashDateSeparators && killall SystemUIServer && sleep 10', - ) - if (deleteEnvError) { - console.error( - 'An error occured while cleaning the menu bar clock FlashDateSeparators environment', - ) - logRollbackInfo() - throw new Error(deleteEnvError) - } - - return { filepath: `${outputPath}/true`, isVideo: true } - }, -} - -function logRollbackInfo() { - console.info( - 'Please manually run this command to make sure everything is properly reset:', - ) - console.info( - 'defaults delete com.apple.menuextra.clock FlashDateSeparators && killall SystemUIServer', - ) -} diff --git a/record/package.json b/record/package.json deleted file mode 100644 index a5107b3..0000000 --- a/record/package.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "private": true, - "name": "macos-defaults-images-recorder", - "version": "0.1.0", - "main": "record.js", - "engines": { - "node": ">=15 <=16" - }, - "scripts": { - "record": "node index.js", - "record:debug": "NODE_ENV=DEBUG node index.js", - "record:next": "node record-next.mjs", - "build": "yarn record", - "format": "prettier --write . --ignore-path ../.prettierignore", - "lint": "prettier --check . --ignore-path ../.prettierignore" - }, - "license": "MIT", - "dependencies": { - "aperture": "6.1.3", - "delay": "5.0.0", - "glob": "^9", - "glob-promise": "6.0.3", - "jimp": "0.22.10", - "mkdirp": "^2", - "node-pngquant-native": "2.2.0", - "prettier": "^3.0.0", - "prompt-confirm": "2.0.4", - "robotjs": "0.6.0", - "sharp": "0.32.5" - } -} diff --git a/record/readme.md b/record/readme.md deleted file mode 100644 index c4621f0..0000000 --- a/record/readme.md +++ /dev/null @@ -1,87 +0,0 @@ -# macos-defaults recorder 📷 - -**Stability: 1 - Experimental** - -All the images and videos you will find on **macos-defaults** are built programmatically. It's done using **Node.js** scripts found in this folder subfolders. - -Programmatic record serves 2 goals: - -- Record similar actions with different `defaults` config. -- Make it easy to replay when a new version comes out. - -## Technical overview - -The [record.js](./record.js) file launches subfolders' recording scripts. - -The scripts are all the `.js` files in this folder subfolders. There is one script per screenshot/video. These scripts share the same workflow: - -1. Set a `defaults` command value -2. Prepare the recording using [robot.js](https://github.com/octalmage/robotjs) -3. Record using [Aperture](https://github.com/wulkano/aperture-node) -4. Post production (resize, compress, move) -5. Reset the `defaults` value - I try to keep as much similarity as possible for same-command examples. - -Some [utils](./utils.js) are available to simplify scripts dev: - -- `captureImage(x, y, width, height)` capture a screenshot using [jimp](https://github.com/oliver-moran/jimp) - - `x`: position from the left border of the screen. - - `y`: position from the bottom border of the screen. - - `width`: the width of the image. - - `height`: the height of the image. -- `async compressPngImage(inputPath, outputFolder, outputName)` try to resize the image to a max width of 740 (VuePress page width) using [sharp](https://github.com/lovell/sharp) and compress it using [pngquant](https://github.com/xiangshouding/node-pngquant-native) - - `inputPath`: the original image path. - - `outputFolder`: where the compressed image should be placed. - - `outputName`: what the compressed image file should be called. -- `async compressVideo(inputPath, outputFolder, outputName)` resize and compress the video using [ffmpeg](https://ffmpeg.org) - - `inputPath`: the original video path. - - `outputFolder`: where the compressed video should be placed. - - `outputName`: what the compressed video file should be called. -- `async makeAppActive(appName)` open an App and set it as active using AppleScript - - `appName`: the app name. -- `async moveAndResizeApp(appName, cropArea, screenHeight)` move and resize an App using AppleScript - - `appName`: the app name. - - `cropArea`: the cropArea used by Aperture (`{ x ,y , width, height }`). - - `screenHeight`: the screen height. - -I consider removing the resize/compression part and upload these assets to a media CDN like [Cloudinary](https://cloudinary.com) to serve optimal resources based on user preferences. - -## Launch locally - -This part is only useful if you want to add a command. I **strongely recommand** not to launch the scripts locally if you don't want to mess up your config. - -### 💻 My setup - -I'm personally launching these scripts on a 15" 2015 MacBook Pro running the latest macOS developer beta version. I log in as another account when I want to work on the scripts. The scripts should be agnostic from the hardware they run on, please let me know if some of them do not by [opening an issue](https://github.com/yannbertrand/macos-defaults/issues/new). - -### 🏗 Install - -```sh -yarn install -``` - -### 🚀 Usage - -⚠️ **Do not launch these commands on your daily user account!** The scripts override your user config. - -When launching for the first time, you'll have some security prompts to confirm. - -Hope you'll have as much fun as I had when I launched it for the first time 😊. - -```sh -# Launch all recording -yarn record - -# Launch a specific command script recording -yarn record screenshots/disable-shadow/false.js - -# Launch all scripts of a command recording -yarn record dock/autohide-delay/* - -# Launch a whole category recording -yarn record dock/*/* -``` - -### 🚧 Run unit tests - -I couldn't find a way to unit test these scripts. If you have an idea, I'm really interested. diff --git a/record/record-next.mjs b/record/record-next.mjs deleted file mode 100644 index 64b5528..0000000 --- a/record/record-next.mjs +++ /dev/null @@ -1,22 +0,0 @@ -import path from 'path' - -const FILES = [ - 'dock/orientation/bottom.js', - 'dock/orientation/left.js', - 'dock/orientation/right.js', - 'finder/AppleShowAllFiles/false.js', - 'finder/AppleShowAllFiles/true.js', -] - -console.info(`\nFound ${FILES.length} scripts to run.`) - -for (const scriptFile of FILES) { - const script = await import(`./${scriptFile}`) - await script.run(getImagePath(scriptFile)) -} - -console.info(`\nAll videos and screenshots were successfully recorded.\n`) - -function getImagePath(file) { - return path.normalize(`../images/${path.dirname(file)}`) -} diff --git a/record/record.js b/record/record.js deleted file mode 100644 index 0ec6aaf..0000000 --- a/record/record.js +++ /dev/null @@ -1,58 +0,0 @@ -const glob = require('glob-promise') -const path = require('path') -const robot = require('robotjs') -const Confirm = require('prompt-confirm') -const { makeAppActive } = require('./utils') - -module.exports = async (files) => { - try { - const scriptFiles = - files.length > 0 ? files : await glob('!(node_modules)/**/*.js') - - console.info(`\nFound ${scriptFiles.length} scripts to run.`) - console.info('Please close Safari and do not move the mouse until the end.') - console.info('It should take a few minutes, go grab a drink!\n') - console.info('iTerm should reopen when its done.\n') - - const prompt = new Confirm('Ready?') - if (!(await prompt.run())) return - - robot.keyTap('h', 'command') - - for (const scriptFile of scriptFiles) { - const script = require(`./${scriptFile}`) - try { - await script.run(getImagePath(scriptFile)) - } catch (error) { - await makeAppActive('iTerm') - throw error - } - } - - await makeAppActive('iTerm') - - console.info( - `\nAll videos and screenshots were successfully recorded. You can use your mouse again\n`, - ) - } catch (error) { - await makeAppActive('iTerm') - - if (error.code === 'RECORDER_TIMEOUT') { - console.info('The recorder timed out.') - console.info( - "You probably need to activate the screen recording feature for the terminal you're using.", - ) - console.info( - "You'll find that settings under: System Parameters > Security & Confidentiality > Confidentiality > Screen recording", - ) - } else if (error.code === 'ENOTDIR') { - console.info('A mandatory folder was not found.') - } else { - console.error('An error occured while recording') - } - - throw error - } -} - -const getImagePath = (file) => path.normalize(`../images/${path.dirname(file)}`) diff --git a/record/screenshots/disable-shadow/false.js b/record/screenshots/disable-shadow/false.js deleted file mode 100644 index f6b93dd..0000000 --- a/record/screenshots/disable-shadow/false.js +++ /dev/null @@ -1,36 +0,0 @@ -const MacRunner = require('../../mac-runner') -const { compressPngImage } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log( - '> Recording screencapture disable-shadow with param set to false', - ) - - try { - const runner = new MacRunner() - await runner - .openApp('Safari', '-F https://apple.com') - .activateApp('Safari') - .moveAndResizeApp('Safari', 0, 0, 740 * 2, 413 * 2) - // We do not set the default as `captureApp` takes a param to disable shadow - .captureApp('Safari', `${outputPath}/false-tmp.png`, false) - .killApp('Safari') - .run() - } catch (runnerError) { - logRollbackInfo() - throw new Error(runnerError) - } - - try { - await compressPngImage(`${outputPath}/false-tmp.png`, outputPath, 'false') - } catch (compressPngImageError) { - logRollbackInfo() - throw new Error(compressPngImageError) - } - - return { filepath: `${outputPath}/false` } - }, -} - -function logRollbackInfo() {} diff --git a/record/screenshots/disable-shadow/true.js b/record/screenshots/disable-shadow/true.js deleted file mode 100644 index 3f59956..0000000 --- a/record/screenshots/disable-shadow/true.js +++ /dev/null @@ -1,36 +0,0 @@ -const MacRunner = require('../../mac-runner') -const { compressPngImage } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log( - '> Recording screencapture disable-shadow with param set to true', - ) - - try { - const runner = new MacRunner() - await runner - .openApp('Safari', '-F https://apple.com') - .activateApp('Safari') - .moveAndResizeApp('Safari', 0, 0, 740 * 2, 413 * 2) - // We do not set the default as `captureApp` takes a param to disable shadow - .captureApp('Safari', `${outputPath}/true-tmp.png`, true) - .killApp('Safari') - .run() - } catch (runnerError) { - logRollbackInfo() - throw new Error(runnerError) - } - - try { - await compressPngImage(`${outputPath}/true-tmp.png`, outputPath, 'true') - } catch (compressPngImageError) { - logRollbackInfo() - throw new Error(compressPngImageError) - } - - return { filepath: `${outputPath}/true` } - }, -} - -function logRollbackInfo() {} diff --git a/record/textedit/RichText/false.js b/record/textedit/RichText/false.js deleted file mode 100644 index 8e97935..0000000 --- a/record/textedit/RichText/false.js +++ /dev/null @@ -1,62 +0,0 @@ -const MacRunner = require('../../mac-runner') -const util = require('util') -const exec = util.promisify(require('child_process').exec) -const { compressPngImage } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log('> Recording TextEdit opens rich text files to true') - - try { - const fileName = '/tmp/lorem.txt' - await manageFile(fileName, true) - await addContentToFile(fileName, '') - - const runner = new MacRunner() - await runner - .setDefault('com.apple.TextEdit', 'RichText', '-bool false', '0') - .openApp('TextEdit', fileName) - .moveAndResizeApp('TextEdit', 0, 0, 740, 400) - .captureApp('TextEdit', `${outputPath}/false.png`) - .deleteDefault('com.apple.TextEdit', 'RichText') - .killApp('TextEdit') - .run() - - await manageFile(fileName, false) - } catch (runnerError) { - throw new Error(runnerError) - } - - try { - await compressPngImage(`${outputPath}/false.png`, outputPath, 'false') - } catch (compressPngImageError) { - throw new Error(compressPngImageError) - } - - return { filepath: `${outputPath}/false` } - }, -} - -async function manageFile(filename, create) { - console.log(` Command: ${create ? 'create' : 'remove'} ${filename}`) - const { stderr: mngFile } = await exec( - `${create ? 'touch' : 'rm -f'} ${filename}`, - ) - if (mngFile) { - console.error('An error occured while working with a file') - throw new Error(mngFile) - } -} - -async function addContentToFile(filename, content) { - console.log(` Command: add content to ${filename}`) - const { stderr: mngFile } = await exec( - `cat > ${filename} << EOF -${content} -EOF`, - ) - if (mngFile) { - console.error('An error occured while working with a file') - throw new Error(mngFile) - } -} diff --git a/record/textedit/RichText/true.js b/record/textedit/RichText/true.js deleted file mode 100644 index 9ce0792..0000000 --- a/record/textedit/RichText/true.js +++ /dev/null @@ -1,65 +0,0 @@ -const MacRunner = require('../../mac-runner') -const util = require('util') -const exec = util.promisify(require('child_process').exec) -const { compressPngImage } = require('../../utils') - -module.exports = { - run: async (outputPath) => { - console.log('> Recording TextEdit opens rich text files to true') - - try { - const filename = '/tmp/lorem.rtf' - await manageFile(filename, true) - await addContentToFile( - filename, - '{\\rtf1\\ansi\\ansicpg1252\\cocoartf2577\\cocoatextscaling0\\cocoaplatform0{\\fonttbl}{\\colortbl;\\red255\\green255\\blue255;}{\\*\\expandedcolortbl;;}\\paperw11900\\paperh16840\\margl1440\\margr1440\\vieww11520\\viewh8400\\viewkind0}', - ) - - const runner = new MacRunner() - await runner - .setDefault('com.apple.TextEdit', 'RichText', '-bool true', '1', '') - .openApp('TextEdit', filename) - .moveAndResizeApp('TextEdit', 0, 0, 740, 400) - .captureApp('TextEdit', `${outputPath}/true.png`) - .deleteDefault('com.apple.TextEdit', 'RichText') - .killApp('TextEdit') - .run() - - await manageFile(filename, false) - } catch (runnerError) { - throw new Error(runnerError) - } - - try { - await compressPngImage(`${outputPath}/true.png`, outputPath, 'true') - } catch (compressPngImageError) { - throw new Error(compressPngImageError) - } - - return { filepath: `${outputPath}/true` } - }, -} - -async function manageFile(filename, create) { - console.log(` Command: ${create ? 'create' : 'remove'} ${filename}`) - const { stderr: mngFile } = await exec( - `${create ? 'touch' : 'rm -f'} ${filename}`, - ) - if (mngFile) { - console.error('An error occured while working with a file') - throw new Error(mngFile) - } -} - -async function addContentToFile(filename, content) { - console.log(` Command: add content to ${filename}`) - const { stderr: mngFile } = await exec( - `cat > ${filename} << EOF -${content} -EOF`, - ) - if (mngFile) { - console.error('An error occured while working with a file') - throw new Error(mngFile) - } -} diff --git a/record/utils.js b/record/utils.js deleted file mode 100644 index c32e011..0000000 --- a/record/utils.js +++ /dev/null @@ -1,193 +0,0 @@ -const fs = require('fs') -const mkdirp = require('mkdirp') -const pngquant = require('node-pngquant-native') -const sharp = require('sharp') -const Jimp = require('jimp') -const robot = require('robotjs') -const { spawn } = require('child_process') - -module.exports.captureImage = (x, y, w, h) => { - // Taken from https://github.com/octalmage/robotjs/issues/13#issuecomment-501102240 - const pic = robot.screen.capture(x, y, w, h) - const width = pic.byteWidth / pic.bytesPerPixel // pic.width is sometimes wrong! - const height = pic.height - const image = new Jimp(width, height) - let red, green, blue - pic.image.forEach((byte, i) => { - switch (i % 4) { - case 0: - return (blue = byte) - case 1: - return (green = byte) - case 2: - return (red = byte) - case 3: - image.bitmap.data[i - 3] = red - image.bitmap.data[i - 2] = green - image.bitmap.data[i - 1] = blue - image.bitmap.data[i] = 255 - } - }) - return image -} - -module.exports.compressPngImage = async ( - inputPath, - outputFolder, - outputName, -) => { - const tmpOutput = `${outputFolder}/${outputName}-tmp.png` - const finalOutput = `${outputFolder}/${outputName}.png` - - await mkdirp(outputFolder) - fs.renameSync(inputPath, tmpOutput) - - return new Promise((resolve, reject) => { - console.info(' Compressing PNG image') - sharp(tmpOutput) - .resize(740, undefined, { - fit: sharp.fit.inside, - withoutEnlargement: true, - }) - .toFormat('png') - .toBuffer() - .then((resizedBuffer) => { - const responseBuffer = pngquant.compress(resizedBuffer) - fs.writeFile(finalOutput, responseBuffer, (writeFileError) => { - removeSync(tmpOutput) - if (writeFileError) { - console.error('An error occured while saving the image') - reject(writeFileError) - } - - resolve() - }) - }) - }) -} - -module.exports.compressVideo = async (inputPath, outputFolder, outputName) => { - const tmpOutput = `${outputFolder}/${outputName}-tmp.mp4` - const finalOutput = `${outputFolder}/${outputName}.mp4` - - await mkdirp(outputFolder) - fs.renameSync(inputPath, tmpOutput) - - try { - await resizeVideo(tmpOutput, finalOutput) - } catch (resizeVideoError) { - console.error('An error occured while resizing the video') - throw new Error(resizeVideoError) - } finally { - removeSync(tmpOutput) - } -} - -function resizeVideo(input, output) { - console.info(' Resizing video') - - return new Promise((resolve, reject) => { - const ffmpegRawLogs = [] - const ffmpeg = spawn('ffmpeg', [ - '-i', - input, - '-vf', - "scale='min(740,iw)':-2", - '-c:v', - 'libx264', - '-crf', - '18', - '-preset', - 'veryslow', - '-y', - '-c:a', - 'copy', - output, - ]) - - ffmpeg.stderr.on('data', (message) => - ffmpegRawLogs.push(message.toString('utf8')), - ) - ffmpeg.on('exit', (ffmpegExitCode) => { - if (process.env.NODE_ENV === 'DEBUG') { - console.debug(ffmpegRawLogs.join('\n')) - } - - if (ffmpegExitCode !== 0) { - return reject(ffmpegRawLogs.join('\n')) - } - - resolve() - }) - }) -} - -function removeSync(file) { - if (fs.existsSync(file)) { - fs.unlinkSync(file) - } -} - -module.exports.makeAppActive = async (appName) => { - return new Promise((resolve, reject) => { - const osascript = spawn('osascript', [ - '-e', - 'try', - '-e', - `tell application "${appName}" to activate`, - '-e', - 'end try', - ]) - - if (process.env.NODE_ENV === 'DEBUG') { - osascript.stderr.on('data', function (message) { - console.debug(`${message}`) - }) - } - - osascript.on('exit', (osascriptExitCode) => { - if (osascriptExitCode === '1') { - return reject('osascript') - } - - resolve() - }) - }) -} - -module.exports.moveAndResizeApp = async (appName, cropArea, screenHeight) => { - const x = { start: cropArea.x, end: cropArea.x + cropArea.width } - const y = { - start: screenHeight - cropArea.y - cropArea.height, - end: screenHeight - cropArea.y, - } - - return new Promise((resolve, reject) => { - const osascript = spawn('osascript', [ - '-e', - 'try', - '-e', - `tell application "${appName}"`, - '-e', - `set the bounds of the first window to {${x.start}, ${y.start}, ${x.end}, ${y.end}}`, - '-e', - 'end tell', - '-e', - 'end try', - ]) - - if (process.env.NODE_ENV === 'DEBUG') { - osascript.stderr.on('data', function (message) { - console.debug(`${message}`) - }) - } - - osascript.on('exit', (osascriptExitCode) => { - if (osascriptExitCode === '1') { - return reject('osascript') - } - - resolve() - }) - }) -} diff --git a/record/yarn.lock b/record/yarn.lock deleted file mode 100644 index 4b6ce69..0000000 --- a/record/yarn.lock +++ /dev/null @@ -1,2464 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@jimp/bmp@^0.22.10": - version "0.22.10" - resolved "https://registry.yarnpkg.com/@jimp/bmp/-/bmp-0.22.10.tgz#e4fe8934a83f1e677cbfd74ad22a684bf1aad529" - integrity sha512-1UXRl1Nw1KptZ1r0ANqtXOst9vGH51dq7keVKQzyyTO2lz4dOaezS9StuSTNh+RmiHg/SVPaFRpPfB0S/ln4Kg== - dependencies: - "@jimp/utils" "^0.22.10" - bmp-js "^0.1.0" - -"@jimp/core@^0.22.10": - version "0.22.10" - resolved "https://registry.yarnpkg.com/@jimp/core/-/core-0.22.10.tgz#a106e719a9e1bc668c9595065a0872767cda3934" - integrity sha512-ZKyrehVy6wu1PnBXIUpn/fXmyMRQiVSbvHDubgXz4bfTOao3GiOurKHjByutQIgozuAN6ZHWiSge1dKA+dex3w== - dependencies: - "@jimp/utils" "^0.22.10" - any-base "^1.1.0" - buffer "^5.2.0" - exif-parser "^0.1.12" - file-type "^16.5.4" - isomorphic-fetch "^3.0.0" - pixelmatch "^4.0.2" - tinycolor2 "^1.6.0" - -"@jimp/custom@^0.22.10": - version "0.22.10" - resolved "https://registry.yarnpkg.com/@jimp/custom/-/custom-0.22.10.tgz#621f3ec418c59c78ca43c5bc6f91a467e48a7a87" - integrity sha512-sPZkUYe1hu0iIgNisjizxPJqq2vaaKvkCkPoXq2U6UV3ZA1si/WVdrg25da3IcGIEV+83AoHgM8TvqlLgrCJsg== - dependencies: - "@jimp/core" "^0.22.10" - -"@jimp/gif@^0.22.10": - version "0.22.10" - resolved "https://registry.yarnpkg.com/@jimp/gif/-/gif-0.22.10.tgz#fc47738edc5f5327a0c023ad40e89417fdb5ef60" - integrity sha512-yEX2dSpamvkSx1PPDWGnKeWDrBz0vrCKjVG/cn4Zr68MRRT75tbZIeOrBa+RiUpY3ho5ix7d36LkYvt3qfUIhQ== - dependencies: - "@jimp/utils" "^0.22.10" - gifwrap "^0.10.1" - omggif "^1.0.9" - -"@jimp/jpeg@^0.22.10": - version "0.22.10" - resolved "https://registry.yarnpkg.com/@jimp/jpeg/-/jpeg-0.22.10.tgz#b4aba85d607d598d5a4ce0c66cefe69a8fc45c26" - integrity sha512-6bu98pAcVN4DY2oiDLC4TOgieX/lZrLd1tombWZOFCN5PBmqaHQxm7IUmT+Wj4faEvh8QSHgVLSA+2JQQRJWVA== - dependencies: - "@jimp/utils" "^0.22.10" - jpeg-js "^0.4.4" - -"@jimp/plugin-blit@^0.22.10": - version "0.22.10" - resolved "https://registry.yarnpkg.com/@jimp/plugin-blit/-/plugin-blit-0.22.10.tgz#c351a27d52d8273b61d4f3cd68a9b73b03dd7b14" - integrity sha512-6EI8Sl+mxYHEIy6Yteh6eknD+EZguKpNdr3sCKxNezmLR0+vK99vHcllo6uGSjXXiwtwS67Xqxn8SsoatL+UJQ== - dependencies: - "@jimp/utils" "^0.22.10" - -"@jimp/plugin-blur@^0.22.10": - version "0.22.10" - resolved "https://registry.yarnpkg.com/@jimp/plugin-blur/-/plugin-blur-0.22.10.tgz#22a67bb8b21403ac28b44bef6cf9a934846fec83" - integrity sha512-4XRTWuPVdMXJeclJMisXPGizeHtTryVaVV5HnuQXpKqIZtzXReCCpNGH8q/i0kBQOQMXhGWS3mpqOEwtpPePKw== - dependencies: - "@jimp/utils" "^0.22.10" - -"@jimp/plugin-circle@^0.22.10": - version "0.22.10" - resolved "https://registry.yarnpkg.com/@jimp/plugin-circle/-/plugin-circle-0.22.10.tgz#2a4c81b5c1a49f583d2d5090496c1ecb29c52c1a" - integrity sha512-mhcwTO1ywRxiCgtLGge6tDDIDPlX6qkI3CY+BjgGG/XhVHccCddXgOGLdlf+5OuKIEF2Nqs0V01LQEQIJFTmEw== - dependencies: - "@jimp/utils" "^0.22.10" - -"@jimp/plugin-color@^0.22.10": - version "0.22.10" - resolved "https://registry.yarnpkg.com/@jimp/plugin-color/-/plugin-color-0.22.10.tgz#cf053aa30eb3bf7df3cceb8547ef78a841bfcd72" - integrity sha512-e4t3L7Kedd96E0x1XjsTM6NcgulKUU66HdFTao7Tc9FYJRFSlttARZ/C6LEryGDm/i69R6bJEpo7BkNz0YL55Q== - dependencies: - "@jimp/utils" "^0.22.10" - tinycolor2 "^1.6.0" - -"@jimp/plugin-contain@^0.22.10": - version "0.22.10" - resolved "https://registry.yarnpkg.com/@jimp/plugin-contain/-/plugin-contain-0.22.10.tgz#5302e088a09884ff0ae6656e0e682e2e487c2199" - integrity sha512-eP8KrzctuEoqibQAxi9WhbnoRosydhiwg+IYya3dKuKDBTrD9UHt+ERlPQ/lTNWHzV/l4S1ntV3r9s9saJgsXA== - dependencies: - "@jimp/utils" "^0.22.10" - -"@jimp/plugin-cover@^0.22.10": - version "0.22.10" - resolved "https://registry.yarnpkg.com/@jimp/plugin-cover/-/plugin-cover-0.22.10.tgz#746b25bbea92aa7f9b130feca5af02717122e6d5" - integrity sha512-kJCwL5T1igfa0InCfkE7bBeqg26m46aoRt10ug+rvm11P6RrvRMGrgINFyIKB+mnB7CiyBN/MOula1CvLhSInQ== - dependencies: - "@jimp/utils" "^0.22.10" - -"@jimp/plugin-crop@^0.22.10": - version "0.22.10" - resolved "https://registry.yarnpkg.com/@jimp/plugin-crop/-/plugin-crop-0.22.10.tgz#6204fd6be751d7edb64a86ab788ba762843b9877" - integrity sha512-BOZ+YGaZlhU7c5ye65RxikicXH0Ki0It6/XHISvipR5WZrfjLjL2Ke20G+AGnwBQc76gKenVcMXVUCnEjtZV+Q== - dependencies: - "@jimp/utils" "^0.22.10" - -"@jimp/plugin-displace@^0.22.10": - version "0.22.10" - resolved "https://registry.yarnpkg.com/@jimp/plugin-displace/-/plugin-displace-0.22.10.tgz#6dc277c84c0c6b2c2d793271ddf45b61284cb043" - integrity sha512-llNiWWMTKISDXt5+cXI0GaFmZWAjlT+4fFLYf4eXquuL/9wZoQsEBhv2GdGd48mkiS8jZq1Nnb2Q4ehEPTvrzw== - dependencies: - "@jimp/utils" "^0.22.10" - -"@jimp/plugin-dither@^0.22.10": - version "0.22.10" - resolved "https://registry.yarnpkg.com/@jimp/plugin-dither/-/plugin-dither-0.22.10.tgz#9cbad07fb16d2dcb88d86c16d5437dee9232426a" - integrity sha512-05WLmeV5M+P/0FS+bWf13hMew2X0oa8w9AtmevL2UyA/5GqiyvP2Xm5WfGQ8oFiiMvpnL6RFomJQOZtWca0C2w== - dependencies: - "@jimp/utils" "^0.22.10" - -"@jimp/plugin-fisheye@^0.22.10": - version "0.22.10" - resolved "https://registry.yarnpkg.com/@jimp/plugin-fisheye/-/plugin-fisheye-0.22.10.tgz#94cbb32947d24cdd596f7259754e390e69c3e7a6" - integrity sha512-InjiXvc7Gkzrx8VWtU97kDqV7ENnhHGPULymJWeZaF2aicud9Fpk4iCtd/DcZIrk7Cbe60A8RwNXN00HXIbSCg== - dependencies: - "@jimp/utils" "^0.22.10" - -"@jimp/plugin-flip@^0.22.10": - version "0.22.10" - resolved "https://registry.yarnpkg.com/@jimp/plugin-flip/-/plugin-flip-0.22.10.tgz#58f9e05c5038d1ab849bda41cee4f0416fe07fb5" - integrity sha512-42GkGtTHWnhnwTMPVK/kXObZbkYIpQWfuIfy5EMEMk6zRj05zpv4vsjkKWfuemweZINwfvD7wDJF7FVFNNcZZg== - dependencies: - "@jimp/utils" "^0.22.10" - -"@jimp/plugin-gaussian@^0.22.10": - version "0.22.10" - resolved "https://registry.yarnpkg.com/@jimp/plugin-gaussian/-/plugin-gaussian-0.22.10.tgz#69effed5dccd11eada36262bd65fbaa06bd8be84" - integrity sha512-ykrG/6lTp9Q5YA8jS5XzwMHtRxb9HOFMgtmnrUZ8kU+BK8REecfy9Ic5BUEOjCYvS1a/xLsnrZQU07iiYxBxFg== - dependencies: - "@jimp/utils" "^0.22.10" - -"@jimp/plugin-invert@^0.22.10": - version "0.22.10" - resolved "https://registry.yarnpkg.com/@jimp/plugin-invert/-/plugin-invert-0.22.10.tgz#370b4ce4634b3e2c5fbbe88270a74f5673c765bb" - integrity sha512-d8j9BlUJYs/c994t4azUWSWmQq4LLPG4ecm8m6SSNqap+S/HlVQGqjYhJEBbY9EXkOTYB9vBL9bqwSM1Rr6paA== - dependencies: - "@jimp/utils" "^0.22.10" - -"@jimp/plugin-mask@^0.22.10": - version "0.22.10" - resolved "https://registry.yarnpkg.com/@jimp/plugin-mask/-/plugin-mask-0.22.10.tgz#6404f54a782c952fecf7b6ae0f3d894d4fc99c51" - integrity sha512-yRBs1230XZkz24uFTdTcSlZ0HXZpIWzM3iFQN56MzZ7USgdVZjPPDCQ8I9RpqfZ36nDflQkUO0wV7ucsi4ogow== - dependencies: - "@jimp/utils" "^0.22.10" - -"@jimp/plugin-normalize@^0.22.10": - version "0.22.10" - resolved "https://registry.yarnpkg.com/@jimp/plugin-normalize/-/plugin-normalize-0.22.10.tgz#6a8d0f57a8f90a3ec15f2391c338b94f3eb49e72" - integrity sha512-Wk9GX6eJMchX/ZAazVa70Fagu+OXMvHiPY+HrcEwcclL+p1wo8xAHEsf9iKno7Ja4EU9lLhbBRY5hYJyiKMEkg== - dependencies: - "@jimp/utils" "^0.22.10" - -"@jimp/plugin-print@^0.22.10": - version "0.22.10" - resolved "https://registry.yarnpkg.com/@jimp/plugin-print/-/plugin-print-0.22.10.tgz#8c96df70851c1ead0b79c8ea74c8411445d921ca" - integrity sha512-1U3VloIR+beE1kWPdGEJMiE2h1Do29iv3w8sBbvPyRP4qXxRFcDpmCGtctsrKmb1krlBFlj8ubyAY90xL+5n9w== - dependencies: - "@jimp/utils" "^0.22.10" - load-bmfont "^1.4.1" - -"@jimp/plugin-resize@^0.22.10": - version "0.22.10" - resolved "https://registry.yarnpkg.com/@jimp/plugin-resize/-/plugin-resize-0.22.10.tgz#d968f0167069c9f7e612bceefdbcc4b3c65934b5" - integrity sha512-ixomxVcnAONXDgaq0opvAx4UAOiEhOA/tipuhFFOvPKFd4yf1BAnEviB5maB0SBHHkJXPUSzDp/73xVTMGSe7g== - dependencies: - "@jimp/utils" "^0.22.10" - -"@jimp/plugin-rotate@^0.22.10": - version "0.22.10" - resolved "https://registry.yarnpkg.com/@jimp/plugin-rotate/-/plugin-rotate-0.22.10.tgz#93d3781eca02d549a632db74bc63d27a6bb9a38c" - integrity sha512-eeFX8dnRyf3LAdsdXWKWuN18hLRg8zy1cP0cP9rHzQVWRK7ck/QsLxK1vHq7MADGwQalNaNTJ9SQxH6c8mz6jw== - dependencies: - "@jimp/utils" "^0.22.10" - -"@jimp/plugin-scale@^0.22.10": - version "0.22.10" - resolved "https://registry.yarnpkg.com/@jimp/plugin-scale/-/plugin-scale-0.22.10.tgz#69127d45eb0837cd23cd04cff3677344064670ac" - integrity sha512-TG/H0oUN69C9ArBCZg4PmuoixFVKIiru8282KzSB/Tp1I0xwX0XLTv3dJ5pobPlIgPcB+TmD4xAIdkCT4rtWxg== - dependencies: - "@jimp/utils" "^0.22.10" - -"@jimp/plugin-shadow@^0.22.10": - version "0.22.10" - resolved "https://registry.yarnpkg.com/@jimp/plugin-shadow/-/plugin-shadow-0.22.10.tgz#ccf379a8d41861eb07c35a60f3dcdede8e856de7" - integrity sha512-TN9xm6fI7XfxbMUQqFPZjv59Xdpf0tSiAQdINB4g6pJMWiVANR/74OtDONoy3KKpenu5Y38s+FkrtID/KcQAhw== - dependencies: - "@jimp/utils" "^0.22.10" - -"@jimp/plugin-threshold@^0.22.10": - version "0.22.10" - resolved "https://registry.yarnpkg.com/@jimp/plugin-threshold/-/plugin-threshold-0.22.10.tgz#590bda5ddf9071adad36f98197e710f33cb47a26" - integrity sha512-DA2lSnU0TgIRbAgmXaxroYw3Ad6J2DOFEoJp0NleSm2h3GWbZEE5yW9U2B6hD3iqn4AenG4E2b2WzHXZyzSutw== - dependencies: - "@jimp/utils" "^0.22.10" - -"@jimp/plugins@^0.22.10": - version "0.22.10" - resolved "https://registry.yarnpkg.com/@jimp/plugins/-/plugins-0.22.10.tgz#7062b6a36dc2d9c8dbd574a7697b6efaccecdee8" - integrity sha512-KDMZyM6pmvS8freB+UBLko1TO/k4D7URS/nphCozuH+P7i3UMe7NdckXKJ8u+WD6sqN0YFYvBehpkpnUiw/91w== - dependencies: - "@jimp/plugin-blit" "^0.22.10" - "@jimp/plugin-blur" "^0.22.10" - "@jimp/plugin-circle" "^0.22.10" - "@jimp/plugin-color" "^0.22.10" - "@jimp/plugin-contain" "^0.22.10" - "@jimp/plugin-cover" "^0.22.10" - "@jimp/plugin-crop" "^0.22.10" - "@jimp/plugin-displace" "^0.22.10" - "@jimp/plugin-dither" "^0.22.10" - "@jimp/plugin-fisheye" "^0.22.10" - "@jimp/plugin-flip" "^0.22.10" - "@jimp/plugin-gaussian" "^0.22.10" - "@jimp/plugin-invert" "^0.22.10" - "@jimp/plugin-mask" "^0.22.10" - "@jimp/plugin-normalize" "^0.22.10" - "@jimp/plugin-print" "^0.22.10" - "@jimp/plugin-resize" "^0.22.10" - "@jimp/plugin-rotate" "^0.22.10" - "@jimp/plugin-scale" "^0.22.10" - "@jimp/plugin-shadow" "^0.22.10" - "@jimp/plugin-threshold" "^0.22.10" - timm "^1.6.1" - -"@jimp/png@^0.22.10": - version "0.22.10" - resolved "https://registry.yarnpkg.com/@jimp/png/-/png-0.22.10.tgz#397da6479f515dc87525b0f25efe4cb11cb75156" - integrity sha512-RYinU7tZToeeR2g2qAMn42AU+8OUHjXPKZZ9RkmoL4bguA1xyZWaSdr22/FBkmnHhOERRlr02KPDN1OTOYHLDQ== - dependencies: - "@jimp/utils" "^0.22.10" - pngjs "^6.0.0" - -"@jimp/tiff@^0.22.10": - version "0.22.10" - resolved "https://registry.yarnpkg.com/@jimp/tiff/-/tiff-0.22.10.tgz#e5511e21c73719a308545732f1ec050f52a8e0ad" - integrity sha512-OaivlSYzpNTHyH/h7pEtl3A7F7TbsgytZs52GLX/xITW92ffgDgT6PkldIrMrET6ERh/hdijNQiew7IoEEr2og== - dependencies: - utif2 "^4.0.1" - -"@jimp/types@^0.22.10": - version "0.22.10" - resolved "https://registry.yarnpkg.com/@jimp/types/-/types-0.22.10.tgz#1ae01dfea9f36ba9751e63a1eedecb4c4da9ef16" - integrity sha512-u/r+XYzbCx4zZukDmxx8S0er3Yq3iDPI6+31WKX0N18i2qPPJYcn8qwIFurfupRumGvJ8SlGLCgt/T+Y8zzUIw== - dependencies: - "@jimp/bmp" "^0.22.10" - "@jimp/gif" "^0.22.10" - "@jimp/jpeg" "^0.22.10" - "@jimp/png" "^0.22.10" - "@jimp/tiff" "^0.22.10" - timm "^1.6.1" - -"@jimp/utils@^0.22.10": - version "0.22.10" - resolved "https://registry.yarnpkg.com/@jimp/utils/-/utils-0.22.10.tgz#d05934fae1c4bd988205d3decc2a649df0724a26" - integrity sha512-ztlOK9Mm2iLG2AMoabzM4i3WZ/FtshcgsJCbZCRUs/DKoeS2tySRJTnQZ1b7Roq0M4Ce+FUAxnCAcBV0q7PH9w== - dependencies: - regenerator-runtime "^0.13.3" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@tokenizer/token@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276" - integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A== - -"@types/glob@^8.0.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-8.1.0.tgz#b63e70155391b0584dce44e7ea25190bbc38f2fc" - integrity sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w== - dependencies: - "@types/minimatch" "^5.1.2" - "@types/node" "*" - -"@types/minimatch@^5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" - integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== - -"@types/node@*": - version "14.14.12" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.12.tgz#0b1d86f8c40141091285dea02e4940df73bba43f" - integrity sha512-ASH8OPHMNlkdjrEdmoILmzFfsJICvhBsFfAum4aKZ/9U4B6M6tTmTPh+f3ttWdD74CEGV5XvXWkbyfSdXaTd7g== - -"@types/node@16.9.1": - version "16.9.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.9.1.tgz#0611b37db4246c937feef529ddcc018cf8e35708" - integrity sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g== - -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ansi-bgblack@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-bgblack/-/ansi-bgblack-0.1.1.tgz#a68ba5007887701b6aafbe3fa0dadfdfa8ee3ca2" - integrity sha1-poulAHiHcBtqr74/oNrf36juPKI= - dependencies: - ansi-wrap "0.1.0" - -ansi-bgblue@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-bgblue/-/ansi-bgblue-0.1.1.tgz#67bdc04edc9b9b5278969da196dea3d75c8c3613" - integrity sha1-Z73ATtybm1J4lp2hlt6j11yMNhM= - dependencies: - ansi-wrap "0.1.0" - -ansi-bgcyan@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-bgcyan/-/ansi-bgcyan-0.1.1.tgz#58489425600bde9f5507068dd969ebfdb50fe768" - integrity sha1-WEiUJWAL3p9VBwaN2Wnr/bUP52g= - dependencies: - ansi-wrap "0.1.0" - -ansi-bggreen@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-bggreen/-/ansi-bggreen-0.1.1.tgz#4e3191248529943f4321e96bf131d1c13816af49" - integrity sha1-TjGRJIUplD9DIelr8THRwTgWr0k= - dependencies: - ansi-wrap "0.1.0" - -ansi-bgmagenta@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-bgmagenta/-/ansi-bgmagenta-0.1.1.tgz#9b28432c076eaa999418672a3efbe19391c2c7a1" - integrity sha1-myhDLAduqpmUGGcqPvvhk5HCx6E= - dependencies: - ansi-wrap "0.1.0" - -ansi-bgred@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-bgred/-/ansi-bgred-0.1.1.tgz#a76f92838382ba43290a6c1778424f984d6f1041" - integrity sha1-p2+Sg4OCukMpCmwXeEJPmE1vEEE= - dependencies: - ansi-wrap "0.1.0" - -ansi-bgwhite@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-bgwhite/-/ansi-bgwhite-0.1.1.tgz#6504651377a58a6ececd0331994e480258e11ba8" - integrity sha1-ZQRlE3elim7OzQMxmU5IAljhG6g= - dependencies: - ansi-wrap "0.1.0" - -ansi-bgyellow@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-bgyellow/-/ansi-bgyellow-0.1.1.tgz#c3fe2eb08cd476648029e6874d15a0b38f61d44f" - integrity sha1-w/4usIzUdmSAKeaHTRWgs49h1E8= - dependencies: - ansi-wrap "0.1.0" - -ansi-black@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-black/-/ansi-black-0.1.1.tgz#f6185e889360b2545a1ec50c0bf063fc43032453" - integrity sha1-9hheiJNgslRaHsUMC/Bj/EMDJFM= - dependencies: - ansi-wrap "0.1.0" - -ansi-blue@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-blue/-/ansi-blue-0.1.1.tgz#15b804990e92fc9ca8c5476ce8f699777c21edbf" - integrity sha1-FbgEmQ6S/JyoxUds6PaZd3wh7b8= - dependencies: - ansi-wrap "0.1.0" - -ansi-bold@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-bold/-/ansi-bold-0.1.1.tgz#3e63950af5acc2ae2e670e6f67deb115d1a5f505" - integrity sha1-PmOVCvWswq4uZw5vZ96xFdGl9QU= - dependencies: - ansi-wrap "0.1.0" - -ansi-colors@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-0.2.0.tgz#72c31de2a0d9a2ccd0cac30cc9823eeb2f6434b5" - integrity sha1-csMd4qDZoszQysMMyYI+6y9kNLU= - dependencies: - ansi-bgblack "^0.1.1" - ansi-bgblue "^0.1.1" - ansi-bgcyan "^0.1.1" - ansi-bggreen "^0.1.1" - ansi-bgmagenta "^0.1.1" - ansi-bgred "^0.1.1" - ansi-bgwhite "^0.1.1" - ansi-bgyellow "^0.1.1" - ansi-black "^0.1.1" - ansi-blue "^0.1.1" - ansi-bold "^0.1.1" - ansi-cyan "^0.1.1" - ansi-dim "^0.1.1" - ansi-gray "^0.1.1" - ansi-green "^0.1.1" - ansi-grey "^0.1.1" - ansi-hidden "^0.1.1" - ansi-inverse "^0.1.1" - ansi-italic "^0.1.1" - ansi-magenta "^0.1.1" - ansi-red "^0.1.1" - ansi-reset "^0.1.1" - ansi-strikethrough "^0.1.1" - ansi-underline "^0.1.1" - ansi-white "^0.1.1" - ansi-yellow "^0.1.1" - lazy-cache "^2.0.1" - -ansi-cyan@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-cyan/-/ansi-cyan-0.1.1.tgz#538ae528af8982f28ae30d86f2f17456d2609873" - integrity sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM= - dependencies: - ansi-wrap "0.1.0" - -ansi-dim@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-dim/-/ansi-dim-0.1.1.tgz#40de4c603aa8086d8e7a86b8ff998d5c36eefd6c" - integrity sha1-QN5MYDqoCG2Oeoa4/5mNXDbu/Ww= - dependencies: - ansi-wrap "0.1.0" - -ansi-gray@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" - integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE= - dependencies: - ansi-wrap "0.1.0" - -ansi-green@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-green/-/ansi-green-0.1.1.tgz#8a5d9a979e458d57c40e33580b37390b8e10d0f7" - integrity sha1-il2al55FjVfEDjNYCzc5C44Q0Pc= - dependencies: - ansi-wrap "0.1.0" - -ansi-grey@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-grey/-/ansi-grey-0.1.1.tgz#59d98b6ac2ba19f8a51798e9853fba78339a33c1" - integrity sha1-WdmLasK6GfilF5jphT+6eDOaM8E= - dependencies: - ansi-wrap "0.1.0" - -ansi-hidden@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-hidden/-/ansi-hidden-0.1.1.tgz#ed6a4c498d2bb7cbb289dbf2a8d1dcc8567fae0f" - integrity sha1-7WpMSY0rt8uyidvyqNHcyFZ/rg8= - dependencies: - ansi-wrap "0.1.0" - -ansi-inverse@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-inverse/-/ansi-inverse-0.1.1.tgz#b6af45826fe826bfb528a6c79885794355ccd269" - integrity sha1-tq9Fgm/oJr+1KKbHmIV5Q1XM0mk= - dependencies: - ansi-wrap "0.1.0" - -ansi-italic@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-italic/-/ansi-italic-0.1.1.tgz#104743463f625c142a036739cf85eda688986f23" - integrity sha1-EEdDRj9iXBQqA2c5z4XtpoiYbyM= - dependencies: - ansi-wrap "0.1.0" - -ansi-magenta@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-magenta/-/ansi-magenta-0.1.1.tgz#063b5ba16fb3f23e1cfda2b07c0a89de11e430ae" - integrity sha1-BjtboW+z8j4c/aKwfAqJ3hHkMK4= - dependencies: - ansi-wrap "0.1.0" - -ansi-red@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-red/-/ansi-red-0.1.1.tgz#8c638f9d1080800a353c9c28c8a81ca4705d946c" - integrity sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw= - dependencies: - ansi-wrap "0.1.0" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-reset@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-reset/-/ansi-reset-0.1.1.tgz#e7e71292c3c7ddcd4d62ef4a6c7c05980911c3b7" - integrity sha1-5+cSksPH3c1NYu9KbHwFmAkRw7c= - dependencies: - ansi-wrap "0.1.0" - -ansi-strikethrough@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-strikethrough/-/ansi-strikethrough-0.1.1.tgz#d84877140b2cff07d1c93ebce69904f68885e568" - integrity sha1-2Eh3FAss/wfRyT685pkE9oiF5Wg= - dependencies: - ansi-wrap "0.1.0" - -ansi-underline@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-underline/-/ansi-underline-0.1.1.tgz#dfc920f4c97b5977ea162df8ffb988308aaa71a4" - integrity sha1-38kg9Ml7WXfqFi34/7mIMIqqcaQ= - dependencies: - ansi-wrap "0.1.0" - -ansi-white@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-white/-/ansi-white-0.1.1.tgz#9c77b7c193c5ee992e6011d36ec4c921b4578944" - integrity sha1-nHe3wZPF7pkuYBHTbsTJIbRXiUQ= - dependencies: - ansi-wrap "0.1.0" - -ansi-wrap@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" - integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= - -ansi-yellow@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-yellow/-/ansi-yellow-0.1.1.tgz#cb9356f2f46c732f0e3199e6102955a77da83c1d" - integrity sha1-y5NW8vRscy8OMZnmEClVp32oPB0= - dependencies: - ansi-wrap "0.1.0" - -any-base@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/any-base/-/any-base-1.1.0.tgz#ae101a62bc08a597b4c9ab5b7089d456630549fe" - integrity sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg== - -aperture@6.1.3: - version "6.1.3" - resolved "https://registry.yarnpkg.com/aperture/-/aperture-6.1.3.tgz#669455bded1eed5d8a6c6deb0d5dc8101ba43d61" - integrity sha512-s2E03ZNIIhWmxYgBRQxs0vK1TIWZakBEyZywMxe5bmYO/yRMJN5Rdr3LIYKd8TOwGPldLwL99+sXiEoMkizaJQ== - dependencies: - delay "^5.0.0" - electron-util "^0.14.2" - execa "^5.0.0" - file-url "^3.0.0" - macos-version "^5.2.1" - tempy "^1.0.0" - -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-swap@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arr-swap/-/arr-swap-1.0.1.tgz#147590ed65fc815bc07fef0997c2e5823d643534" - integrity sha1-FHWQ7WX8gVvAf+8Jl8Llgj1kNTQ= - dependencies: - is-number "^3.0.0" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -b4a@^1.6.4: - version "1.6.4" - resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.6.4.tgz#ef1c1422cae5ce6535ec191baeed7567443f36c9" - integrity sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw== - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -bl@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.3.tgz#12d6287adc29080e22a705e5764b2a9522cdc489" - integrity sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -bmp-js@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/bmp-js/-/bmp-js-0.1.0.tgz#e05a63f796a6c1ff25f4771ec7adadc148c07233" - integrity sha1-4Fpj95amwf8l9Hcex62twUjAcjM= - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -buffer-equal@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b" - integrity sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs= - -buffer@^5.2.0, buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -choices-separator@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/choices-separator/-/choices-separator-2.0.0.tgz#92fd1763182d79033f5c5c51d0ba352e5567c696" - integrity sha1-kv0XYxgteQM/XFxR0Lo1LlVnxpY= - dependencies: - ansi-dim "^0.1.1" - debug "^2.6.6" - strip-color "^0.1.0" - -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -clone-deep@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-1.0.0.tgz#b2f354444b5d4a0ce58faca337ef34da2b14a6c7" - integrity sha512-hmJRX8x1QOJVV+GUjOBzi6iauhPqc9hIF6xitWRBbiPZOBb6vGo/mDRIK9P74RTKSQK7AE8B0DDWY/vpRrPmQw== - dependencies: - for-own "^1.0.0" - is-plain-object "^2.0.4" - kind-of "^5.0.0" - shallow-clone "^1.0.0" - -clone-deep@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@^1.0.0, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-string@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.0.tgz#63b6ebd1bec11999d1df3a79a7569451ac2be8aa" - integrity sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" - integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== - dependencies: - color-convert "^2.0.1" - color-string "^1.9.0" - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-random-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" - integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== - -debug@^2.6.6, debug@^2.6.8: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.0.1: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -decompress-response@^4.2.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-4.2.1.tgz#414023cc7a302da25ce2ec82d0d5238ccafd8986" - integrity sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw== - dependencies: - mimic-response "^2.0.0" - -decompress-response@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" - integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== - dependencies: - mimic-response "^3.1.0" - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -del@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/del/-/del-6.0.0.tgz#0b40d0332cea743f1614f818be4feb717714c952" - integrity sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ== - dependencies: - globby "^11.0.1" - graceful-fs "^4.2.4" - is-glob "^4.0.1" - is-path-cwd "^2.2.0" - is-path-inside "^3.0.2" - p-map "^4.0.0" - rimraf "^3.0.2" - slash "^3.0.0" - -delay@5.0.0, delay@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" - integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - -detect-libc@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - -detect-libc@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" - integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== - -detect-libc@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d" - integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -dom-walk@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" - integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== - -electron-is-dev@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/electron-is-dev/-/electron-is-dev-1.2.0.tgz#2e5cea0a1b3ccf1c86f577cee77363ef55deb05e" - integrity sha512-R1oD5gMBPS7PVU8gJwH6CtT0e6VSoD0+SzSnYpNm+dBkcijgA+K7VAMHDfnRq/lkKPZArpzplTW6jfiMYosdzw== - -electron-util@^0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/electron-util/-/electron-util-0.14.2.tgz#793ebd61f75435363b0dbbba61dddb0f17812fb1" - integrity sha512-pnnRJiWajDcTtEAS33RgP3XVO+9cJjOlBA0BKk6cABjcPxihgCwiGWplCOHc0lH43f68ZJZweiunwomJC+TWng== - dependencies: - electron-is-dev "^1.1.0" - new-github-issue-url "^0.2.1" - -end-of-stream@^1.1.0, end-of-stream@^1.4.1: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -error-symbol@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/error-symbol/-/error-symbol-0.1.0.tgz#0a4dae37d600d15a29ba453d8ef920f1844333f6" - integrity sha1-Ck2uN9YA0VopukU9jvkg8YRDM/Y= - -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -exif-parser@^0.1.12: - version "0.1.12" - resolved "https://registry.yarnpkg.com/exif-parser/-/exif-parser-0.1.12.tgz#58a9d2d72c02c1f6f02a0ef4a9166272b7760922" - integrity sha1-WKnS1ywCwfbwKg70qRZicrd2CSI= - -expand-template@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" - integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -fast-fifo@^1.1.0, fast-fifo@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.0.tgz#03e381bcbfb29932d7c3afde6e15e83e05ab4d8b" - integrity sha512-IgfweLvEpwyA4WgiQe9Nx6VV2QkML2NkvZnk1oKnIzXgXdWxuhF7zw4DvLTPZJn6PIUneiAXPF24QmoEqHTjyw== - -fast-glob@^3.1.1: - version "3.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" - integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== - dependencies: - reusify "^1.0.4" - -file-type@^16.5.4: - version "16.5.4" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-16.5.4.tgz#474fb4f704bee427681f98dd390058a172a6c2fd" - integrity sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw== - dependencies: - readable-web-to-node-stream "^3.0.0" - strtok3 "^6.2.4" - token-types "^4.1.1" - -file-url@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/file-url/-/file-url-3.0.0.tgz#247a586a746ce9f7a8ed05560290968afc262a77" - integrity sha512-g872QGsHexznxkIAdK8UiZRe7SkE6kvylShU4Nsj8NvfvZag7S0QuQ4IgvPDkk75HxgjIVDwycFTDAgIiO4nDA== - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -for-in@^0.1.3: - version "0.1.8" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" - integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE= - -for-in@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -for-own@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" - integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= - dependencies: - for-in "^1.0.1" - -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -gifwrap@^0.10.1: - version "0.10.1" - resolved "https://registry.yarnpkg.com/gifwrap/-/gifwrap-0.10.1.tgz#9ed46a5d51913b482d4221ce9c727080260b681e" - integrity sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw== - dependencies: - image-q "^4.0.0" - omggif "^1.0.10" - -github-from-package@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" - integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= - -glob-parent@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-promise@6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-6.0.3.tgz#e6b3ab02d350b3f4b3e15b57e4485986e41ba2fe" - integrity sha512-m+kxywR5j/2Z2V9zvHKfwwL5Gp7gIFEBX+deTB9w2lJB+wSuw9kcS43VfvTAMk8TXL5JCl/cCjsR+tgNVspGyA== - dependencies: - "@types/glob" "^8.0.0" - -glob@^7.1.3: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^9: - version "9.3.5" - resolved "https://registry.yarnpkg.com/glob/-/glob-9.3.5.tgz#ca2ed8ca452781a3009685607fdf025a899dfe21" - integrity sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q== - dependencies: - fs.realpath "^1.0.0" - minimatch "^8.0.2" - minipass "^4.2.4" - path-scurry "^1.6.1" - -global@~4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" - integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== - dependencies: - min-document "^2.19.0" - process "^0.11.10" - -globby@^11.0.1: - version "11.0.4" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" - integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" - -graceful-fs@^4.2.4: - version "4.2.8" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" - integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -ieee754@^1.1.13, ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore@^5.1.4: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" - integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== - -image-q@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/image-q/-/image-q-4.0.0.tgz#31e075be7bae3c1f42a85c469b4732c358981776" - integrity sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw== - dependencies: - "@types/node" "16.9.1" - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -info-symbol@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/info-symbol/-/info-symbol-0.1.0.tgz#27841d72867ddb4242cd612d79c10633881c6a78" - integrity sha1-J4QdcoZ920JCzWEtecEGM4gcang= - -inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -ini@~1.3.0: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-function@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" - integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== - -is-glob@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-number@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-6.0.0.tgz#e6d15ad31fc262887cccf217ae5f9316f81b1995" - integrity sha512-Wu1VHeILBK8KAWJUAiSZQX94GmOE45Rg6/538fKwiloUu21KncEkYGPqob2oSZ5mUT73vLGrHQjKw3KMPwfDzg== - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-path-cwd@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-inside@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-windows@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -isomorphic-fetch@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz#0267b005049046d2421207215d45d6a262b8b8b4" - integrity sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA== - dependencies: - node-fetch "^2.6.1" - whatwg-fetch "^3.4.1" - -jimp@0.22.10: - version "0.22.10" - resolved "https://registry.yarnpkg.com/jimp/-/jimp-0.22.10.tgz#2cc3e265a99cdbe69ec60ddd57cbcde6a6cf0519" - integrity sha512-lCaHIJAgTOsplyJzC1w/laxSxrbSsEBw4byKwXgUdMmh+ayPsnidTblenQm+IvhIs44Gcuvlb6pd2LQ0wcKaKg== - dependencies: - "@jimp/custom" "^0.22.10" - "@jimp/plugins" "^0.22.10" - "@jimp/types" "^0.22.10" - regenerator-runtime "^0.13.3" - -jpeg-js@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.4.4.tgz#a9f1c6f1f9f0fa80cdb3484ed9635054d28936aa" - integrity sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg== - -kind-of@^3.0.2, kind-of@^3.0.3: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0, kind-of@^5.0.2: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -koalas@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/koalas/-/koalas-1.0.2.tgz#318433f074235db78fae5661a02a8ca53ee295cd" - integrity sha1-MYQz8HQjXbePrlZhoCqMpT7ilc0= - -lazy-cache@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-2.0.2.tgz#b9190a4f913354694840859f8a8f7084d8822264" - integrity sha1-uRkKT5EzVGlIQIWfio9whNiCImQ= - dependencies: - set-getter "^0.1.0" - -load-bmfont@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/load-bmfont/-/load-bmfont-1.4.1.tgz#c0f5f4711a1e2ccff725a7b6078087ccfcddd3e9" - integrity sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA== - dependencies: - buffer-equal "0.0.1" - mime "^1.3.4" - parse-bmfont-ascii "^1.0.3" - parse-bmfont-binary "^1.0.5" - parse-bmfont-xml "^1.1.4" - phin "^2.9.1" - xhr "^2.0.1" - xtend "^4.0.0" - -log-ok@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/log-ok/-/log-ok-0.1.1.tgz#bea3dd36acd0b8a7240d78736b5b97c65444a334" - integrity sha1-vqPdNqzQuKckDXhza1uXxlREozQ= - dependencies: - ansi-green "^0.1.1" - success-symbol "^0.1.0" - -log-utils@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/log-utils/-/log-utils-0.2.1.tgz#a4c217a0dd9a50515d9b920206091ab3d4e031cf" - integrity sha1-pMIXoN2aUFFdm5ICBgkas9TgMc8= - dependencies: - ansi-colors "^0.2.0" - error-symbol "^0.1.0" - info-symbol "^0.1.0" - log-ok "^0.1.1" - success-symbol "^0.1.0" - time-stamp "^1.0.1" - warning-symbol "^0.1.0" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -"lru-cache@^9.1.1 || ^10.0.0": - version "10.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.0.tgz#b9e2a6a72a129d81ab317202d93c7691df727e61" - integrity sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw== - -macos-version@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/macos-version/-/macos-version-5.2.1.tgz#056c943aac8edb81d7cafef6445b7ca1d7a2e56e" - integrity sha512-OHJU8nTNxHYL1FQhD+nZawWgXKXAqDGr4kluLtaqKO4au3cR41y1mKuVShOU5U4rOYiuPanljq6oFGmV2B9DFA== - dependencies: - semver "^5.6.0" - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== - dependencies: - braces "^3.0.1" - picomatch "^2.2.3" - -mime@^1.3.4: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mimic-response@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.1.0.tgz#d13763d35f613d09ec37ebb30bac0469c0ee8f43" - integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA== - -mimic-response@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" - integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== - -min-document@^2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" - integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU= - dependencies: - dom-walk "^0.1.0" - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^8.0.2: - version "8.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-8.0.4.tgz#847c1b25c014d4e9a7f68aaf63dedd668a626229" - integrity sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA== - dependencies: - brace-expansion "^2.0.1" - -minimist@^1.2.0, minimist@^1.2.3: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -minipass@^4.2.4: - version "4.2.8" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.8.tgz#f0010f64393ecfc1d1ccb5f582bcaf45f48e1a3a" - integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ== - -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": - version "7.0.2" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.2.tgz#58a82b7d81c7010da5bd4b2c0c85ac4b4ec5131e" - integrity sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA== - -mixin-object@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" - integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4= - dependencies: - for-in "^0.1.3" - is-extendable "^0.1.1" - -mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" - integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== - -mkdirp@^2: - version "2.1.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-2.1.6.tgz#964fbcb12b2d8c5d6fbc62a963ac95a273e2cc19" - integrity sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= - -nan@^2.14.0: - version "2.14.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" - integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== - -napi-build-utils@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" - integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== - -new-github-issue-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/new-github-issue-url/-/new-github-issue-url-0.2.1.tgz#e17be1f665a92de465926603e44b9f8685630c1d" - integrity sha512-md4cGoxuT4T4d/HDOXbrUHkTKrp/vp+m3aOA7XXVYwNsUNMK49g3SQicTSeV5GIz/5QVGAeYRAOlyp9OvlgsYA== - -node-abi@^2.13.0, node-abi@^2.7.0: - version "2.19.3" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.19.3.tgz#252f5dcab12dad1b5503b2d27eddd4733930282d" - integrity sha512-9xZrlyfvKhWme2EXFKQhZRp1yNWT/uI1luYPr3sFl+H4keYY4xR+1jO7mvTTijIsHf1M+QDe9uWuKeEpLInIlg== - dependencies: - semver "^5.4.1" - -node-abi@^3.3.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.5.0.tgz#26e8b7b251c3260a5ac5ba5aef3b4345a0229248" - integrity sha512-LtHvNIBgOy5mO8mPEUtkCW/YCRWYEKshIvqhe1GHHyXEHEB5mgICyYnAcl4qan3uFeRROErKGzatFHPf6kDxWw== - dependencies: - semver "^7.3.5" - -node-addon-api@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76" - integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA== - -node-fetch@^2.6.1: - version "2.6.12" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.12.tgz#02eb8e22074018e3d5a83016649d04df0e348fba" - integrity sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g== - dependencies: - whatwg-url "^5.0.0" - -node-pngquant-native@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/node-pngquant-native/-/node-pngquant-native-2.2.0.tgz#156b4ba19da32eba293515ff066970c3173e742e" - integrity sha512-S52MkN4fBZKeaE0dd8iWCZoRTEk2QXZfvaYYBfH1/o5cY6hUNdjWBISYLsf2qXRD1Tjpx0DJ793rQCYW+mPLUg== - dependencies: - semver "^5.6.0" - -noop-logger@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" - integrity sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI= - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -npmlog@^4.0.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -omggif@^1.0.10, omggif@^1.0.9: - version "1.0.10" - resolved "https://registry.yarnpkg.com/omggif/-/omggif-1.0.10.tgz#ddaaf90d4a42f532e9e7cb3a95ecdd47f17c7b19" - integrity sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw== - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - -pako@^1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -parse-bmfont-ascii@^1.0.3: - version "1.0.6" - resolved "https://registry.yarnpkg.com/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz#11ac3c3ff58f7c2020ab22769079108d4dfa0285" - integrity sha1-Eaw8P/WPfCAgqyJ2kHkQjU36AoU= - -parse-bmfont-binary@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz#d038b476d3e9dd9db1e11a0b0e53a22792b69006" - integrity sha1-0Di0dtPp3Z2x4RoLDlOiJ5K2kAY= - -parse-bmfont-xml@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz#015319797e3e12f9e739c4d513872cd2fa35f389" - integrity sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ== - dependencies: - xml-parse-from-string "^1.0.0" - xml2js "^0.4.5" - -parse-headers@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.3.tgz#5e8e7512383d140ba02f0c7aa9f49b4399c92515" - integrity sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-scurry@^1.6.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" - integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== - dependencies: - lru-cache "^9.1.1 || ^10.0.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -peek-readable@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-4.1.0.tgz#4ece1111bf5c2ad8867c314c81356847e8a62e72" - integrity sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg== - -phin@^2.9.1: - version "2.9.3" - resolved "https://registry.yarnpkg.com/phin/-/phin-2.9.3.tgz#f9b6ac10a035636fb65dfc576aaaa17b8743125c" - integrity sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA== - -picomatch@^2.2.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" - integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== - -pixelmatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-4.0.2.tgz#8f47dcec5011b477b67db03c243bc1f3085e8854" - integrity sha1-j0fc7FARtHe2fbA8JDvB8wheiFQ= - dependencies: - pngjs "^3.0.0" - -pngjs@^3.0.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" - integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== - -pngjs@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-6.0.0.tgz#ca9e5d2aa48db0228a52c419c3308e87720da821" - integrity sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg== - -pointer-symbol@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pointer-symbol/-/pointer-symbol-1.0.0.tgz#60f9110204ea7a929b62644a21315543cbb3d447" - integrity sha1-YPkRAgTqepKbYmRKITFVQ8uz1Ec= - -prebuild-install@^5.3.3: - version "5.3.6" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-5.3.6.tgz#7c225568d864c71d89d07f8796042733a3f54291" - integrity sha512-s8Aai8++QQGi4sSbs/M1Qku62PFK49Jm1CbgXklGz4nmHveDq0wzJkg7Na5QbnO1uNH8K7iqx2EQ/mV0MZEmOg== - dependencies: - detect-libc "^1.0.3" - expand-template "^2.0.3" - github-from-package "0.0.0" - minimist "^1.2.3" - mkdirp-classic "^0.5.3" - napi-build-utils "^1.0.1" - node-abi "^2.7.0" - noop-logger "^0.1.1" - npmlog "^4.0.1" - pump "^3.0.0" - rc "^1.2.7" - simple-get "^3.0.3" - tar-fs "^2.0.0" - tunnel-agent "^0.6.0" - which-pm-runs "^1.0.0" - -prebuild-install@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45" - integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw== - dependencies: - detect-libc "^2.0.0" - expand-template "^2.0.3" - github-from-package "0.0.0" - minimist "^1.2.3" - mkdirp-classic "^0.5.3" - napi-build-utils "^1.0.1" - node-abi "^3.3.0" - pump "^3.0.0" - rc "^1.2.7" - simple-get "^4.0.0" - tar-fs "^2.0.0" - tunnel-agent "^0.6.0" - -prettier@^3.0.0: - version "3.4.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.4.2.tgz#a5ce1fb522a588bf2b78ca44c6e6fe5aa5a2b13f" - integrity sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ== - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -prompt-actions@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/prompt-actions/-/prompt-actions-3.0.2.tgz#537eee52241c940379f354a06eae8528e44ceeba" - integrity sha512-dhz2Fl7vK+LPpmnQ/S/eSut4BnH4NZDLyddHKi5uTU/2PDn3grEMGkgsll16V5RpVUh/yxdiam0xsM0RD4xvtg== - dependencies: - debug "^2.6.8" - -prompt-base@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/prompt-base/-/prompt-base-4.1.0.tgz#7b88e4c01b096c83d2f4e501a7e85f0d369ecd1f" - integrity sha512-svGzgLUKZoqomz9SGMkf1hBG8Wl3K7JGuRCXc/Pv7xw8239hhaTBXrmjt7EXA9P/QZzdyT8uNWt9F/iJTXq75g== - dependencies: - component-emitter "^1.2.1" - debug "^3.0.1" - koalas "^1.0.2" - log-utils "^0.2.1" - prompt-actions "^3.0.2" - prompt-question "^5.0.1" - readline-ui "^2.2.3" - readline-utils "^2.2.3" - static-extend "^0.1.2" - -prompt-choices@^4.0.5: - version "4.1.0" - resolved "https://registry.yarnpkg.com/prompt-choices/-/prompt-choices-4.1.0.tgz#6094202c4e55d0762e49c1e53735727e53fd484f" - integrity sha512-ZNYLv6rW9z9n0WdwCkEuS+w5nUAGzRgtRt6GQ5aFNFz6MIcU7nHFlHOwZtzy7RQBk80KzUGPSRQphvMiQzB8pg== - dependencies: - arr-flatten "^1.1.0" - arr-swap "^1.0.1" - choices-separator "^2.0.0" - clone-deep "^4.0.0" - collection-visit "^1.0.0" - define-property "^2.0.2" - is-number "^6.0.0" - kind-of "^6.0.2" - koalas "^1.0.2" - log-utils "^0.2.1" - pointer-symbol "^1.0.0" - radio-symbol "^2.0.0" - set-value "^3.0.0" - strip-color "^0.1.0" - terminal-paginator "^2.0.2" - toggle-array "^1.0.1" - -prompt-confirm@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/prompt-confirm/-/prompt-confirm-2.0.4.tgz#42c06907333e876f2ae8867281e0b9521a4796ca" - integrity sha512-X5lzbC8/kMNHdPOqQPfMKpH4VV2f7v2OTRJoN69ZYBirSwTeQaf9ZhmzPEO9ybMA0YV2Pha5MV27u2/U4ahWfg== - dependencies: - ansi-cyan "^0.1.1" - prompt-base "^4.0.1" - -prompt-question@^5.0.1: - version "5.0.2" - resolved "https://registry.yarnpkg.com/prompt-question/-/prompt-question-5.0.2.tgz#81a479f38f0bafecc758e5d6f7bc586e599610b3" - integrity sha512-wreaLbbu8f5+7zXds199uiT11Ojp59Z4iBi6hONlSLtsKGTvL2UY8VglcxQ3t/X4qWIxsNCg6aT4O8keO65v6Q== - dependencies: - clone-deep "^1.0.0" - debug "^3.0.1" - define-property "^1.0.0" - isobject "^3.0.1" - kind-of "^5.0.2" - koalas "^1.0.2" - prompt-choices "^4.0.5" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -queue-tick@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/queue-tick/-/queue-tick-1.0.1.tgz#f6f07ac82c1fd60f82e098b417a80e52f1f4c142" - integrity sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag== - -radio-symbol@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/radio-symbol/-/radio-symbol-2.0.0.tgz#7aa9bfc50485636d52dd76d6a8e631b290799ae1" - integrity sha1-eqm/xQSFY21S3XbWqOYxspB5muE= - dependencies: - ansi-gray "^0.1.1" - ansi-green "^0.1.1" - is-windows "^1.0.1" - -rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -readable-stream@^2.0.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.1.1, readable-stream@^3.4.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-stream@^3.6.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-web-to-node-stream@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz#5d52bb5df7b54861fd48d015e93a2cb87b3ee0bb" - integrity sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw== - dependencies: - readable-stream "^3.6.0" - -readline-ui@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/readline-ui/-/readline-ui-2.2.3.tgz#9e873a7668bbd8ca8a5573ce810a6bafb70a5089" - integrity sha512-ix7jz0PxqQqcIuq3yQTHv1TOhlD2IHO74aNO+lSuXsRYm1d+pdyup1yF3zKyLK1wWZrVNGjkzw5tUegO2IDy+A== - dependencies: - component-emitter "^1.2.1" - debug "^2.6.8" - readline-utils "^2.2.1" - string-width "^2.0.0" - -readline-utils@^2.2.1, readline-utils@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/readline-utils/-/readline-utils-2.2.3.tgz#6f847d6b8f1915c391b581c367cd47873862351a" - integrity sha1-b4R9a48ZFcORtYHDZ81HhzhiNRo= - dependencies: - arr-flatten "^1.1.0" - extend-shallow "^2.0.1" - is-buffer "^1.1.5" - is-number "^3.0.0" - is-windows "^1.0.1" - koalas "^1.0.2" - mute-stream "0.0.7" - strip-color "^0.1.0" - window-size "^1.1.0" - -regenerator-runtime@^0.13.3: - version "0.13.7" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" - integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -robotjs@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/robotjs/-/robotjs-0.6.0.tgz#8d1f63221f5b18dc496c7768f75261043891f64a" - integrity sha512-6pRWI3d+CBZqCXT/rsJfabbZoELua+jTeXilG27F8Jvix/J2BYZ0O7Tly2WCmXyqw5xYdCvOwvCeLRHEtXkt4w== - dependencies: - nan "^2.14.0" - node-abi "^2.13.0" - prebuild-install "^5.3.3" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -safe-buffer@^5.0.1, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -sax@>=0.6.0: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -semver@^5.4.1, semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -semver@^7.5.4: - version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" - -set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-getter@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/set-getter/-/set-getter-0.1.0.tgz#d769c182c9d5a51f409145f2fba82e5e86e80376" - integrity sha1-12nBgsnVpR9AkUXy+6guXoboA3Y= - dependencies: - to-object-path "^0.3.0" - -set-value@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-3.0.2.tgz#74e8ecd023c33d0f77199d415409a40f21e61b90" - integrity sha512-npjkVoz+ank0zjlV9F47Fdbjfj/PfXyVhZvGALWsyIYU/qrMzpi6avjKW3/7KeSU2Df3I46BrN1xOI1+6vW0hA== - dependencies: - is-plain-object "^2.0.4" - -shallow-clone@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz#4480cd06e882ef68b2ad88a3ea54832e2c48b571" - integrity sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA== - dependencies: - is-extendable "^0.1.1" - kind-of "^5.0.0" - mixin-object "^2.0.1" - -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - -sharp@0.32.5: - version "0.32.5" - resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.32.5.tgz#9ddc78ead6446094f51e50355a2d4ec6e7220cd4" - integrity sha512-0dap3iysgDkNaPOaOL4X/0akdu0ma62GcdC2NBQ+93eqpePdDdr2/LM0sFdDSMmN7yS+odyZtPsb7tx/cYBKnQ== - dependencies: - color "^4.2.3" - detect-libc "^2.0.2" - node-addon-api "^6.1.0" - prebuild-install "^7.1.1" - semver "^7.5.4" - simple-get "^4.0.1" - tar-fs "^3.0.4" - tunnel-agent "^0.6.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -signal-exit@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - -signal-exit@^3.0.3: - version "3.0.6" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af" - integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ== - -simple-concat@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" - integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== - -simple-get@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.0.tgz#b45be062435e50d159540b576202ceec40b9c6b3" - integrity sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA== - dependencies: - decompress-response "^4.2.0" - once "^1.3.1" - simple-concat "^1.0.0" - -simple-get@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.0.tgz#73fa628278d21de83dadd5512d2cc1f4872bd675" - integrity sha512-ZalZGexYr3TA0SwySsr5HlgOOinS4Jsa8YB2GJ6lUNAazyAu4KG/VmzMTwAt2YVXzzVj8QmefmAonZIK2BSGcQ== - dependencies: - decompress-response "^6.0.0" - once "^1.3.1" - simple-concat "^1.0.0" - -simple-get@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" - integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== - dependencies: - decompress-response "^6.0.0" - once "^1.3.1" - simple-concat "^1.0.0" - -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= - dependencies: - is-arrayish "^0.3.1" - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -static-extend@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -streamx@^2.15.0: - version "2.15.0" - resolved "https://registry.yarnpkg.com/streamx/-/streamx-2.15.0.tgz#f58c92e6f726b5390dcabd6dd9094d29a854d698" - integrity sha512-HcxY6ncGjjklGs1xsP1aR71INYcsXFJet5CU1CHqihQ2J5nOsbd4OjgjHO42w/4QNv9gZb3BueV+Vxok5pLEXg== - dependencies: - fast-fifo "^1.1.0" - queue-tick "^1.0.1" - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -"string-width@^1.0.2 || 2", string-width@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-color@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/strip-color/-/strip-color-0.1.0.tgz#106f65d3d3e6a2d9401cac0eb0ce8b8a702b4f7b" - integrity sha1-EG9l09PmotlAHKwOsM6LinArT3s= - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - -strtok3@^6.2.4: - version "6.3.0" - resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.3.0.tgz#358b80ffe6d5d5620e19a073aa78ce947a90f9a0" - integrity sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw== - dependencies: - "@tokenizer/token" "^0.3.0" - peek-readable "^4.1.0" - -success-symbol@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/success-symbol/-/success-symbol-0.1.0.tgz#24022e486f3bf1cdca094283b769c472d3b72897" - integrity sha1-JAIuSG878c3KCUKDt2nEctO3KJc= - -tar-fs@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" - integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== - dependencies: - chownr "^1.1.1" - mkdirp-classic "^0.5.2" - pump "^3.0.0" - tar-stream "^2.1.4" - -tar-fs@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-3.0.4.tgz#a21dc60a2d5d9f55e0089ccd78124f1d3771dbbf" - integrity sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w== - dependencies: - mkdirp-classic "^0.5.2" - pump "^3.0.0" - tar-stream "^3.1.5" - -tar-stream@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.4.tgz#c4fb1a11eb0da29b893a5b25476397ba2d053bfa" - integrity sha512-o3pS2zlG4gxr67GmFYBLlq+dM8gyRGUOvsrHclSkvtVtQbjV0s/+ZE8OpICbaj8clrX3tjeHngYGP7rweaBnuw== - dependencies: - bl "^4.0.3" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - -tar-stream@^3.1.5: - version "3.1.6" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-3.1.6.tgz#6520607b55a06f4a2e2e04db360ba7d338cc5bab" - integrity sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg== - dependencies: - b4a "^1.6.4" - fast-fifo "^1.2.0" - streamx "^2.15.0" - -temp-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" - integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== - -tempy@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tempy/-/tempy-1.0.1.tgz#30fe901fd869cfb36ee2bd999805aa72fbb035de" - integrity sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w== - dependencies: - del "^6.0.0" - is-stream "^2.0.0" - temp-dir "^2.0.0" - type-fest "^0.16.0" - unique-string "^2.0.0" - -terminal-paginator@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/terminal-paginator/-/terminal-paginator-2.0.2.tgz#967e66056f28fe8f55ba7c1eebfb7c3ef371c1d3" - integrity sha512-IZMT5ECF9p4s+sNCV8uvZSW9E1+9zy9Ji9xz2oee8Jfo7hUFpauyjxkhfRcIH6Lu3Wdepv5D1kVRc8Hx74/LfQ== - dependencies: - debug "^2.6.6" - extend-shallow "^2.0.1" - log-utils "^0.2.1" - -time-stamp@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" - integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= - -timm@^1.6.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/timm/-/timm-1.7.1.tgz#96bab60c7d45b5a10a8a4d0f0117c6b7e5aff76f" - integrity sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw== - -tinycolor2@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.6.0.tgz#f98007460169b0263b97072c5ae92484ce02d09e" - integrity sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw== - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -toggle-array@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toggle-array/-/toggle-array-1.0.1.tgz#cbf5840792bd5097f33117ae824c932affe87d58" - integrity sha1-y/WEB5K9UJfzMReugkyTKv/ofVg= - dependencies: - isobject "^3.0.0" - -token-types@^4.1.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/token-types/-/token-types-4.2.1.tgz#0f897f03665846982806e138977dbe72d44df753" - integrity sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ== - dependencies: - "@tokenizer/token" "^0.3.0" - ieee754 "^1.2.1" - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -type-fest@^0.16.0: - version "0.16.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" - integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== - -unique-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" - integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== - dependencies: - crypto-random-string "^2.0.0" - -utif2@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/utif2/-/utif2-4.1.0.tgz#e768d37bd619b995d56d9780b5d2b4611a3d932b" - integrity sha512-+oknB9FHrJ7oW7A2WZYajOcv4FcDR4CfoGB0dPNfxbi4GO05RRnFmt5oa23+9w32EanrYcSJWspUiJkLMs+37w== - dependencies: - pako "^1.0.11" - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -warning-symbol@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/warning-symbol/-/warning-symbol-0.1.0.tgz#bb31dd11b7a0f9d67ab2ed95f457b65825bbad21" - integrity sha1-uzHdEbeg+dZ6su2V9Fe2WCW7rSE= - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -whatwg-fetch@^3.4.1: - version "3.6.2" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" - integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -which-pm-runs@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" - integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - -window-size@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-1.1.1.tgz#9858586580ada78ab26ecd6978a6e03115c1af20" - integrity sha512-5D/9vujkmVQ7pSmc0SCBmHXbkv6eaHwXEx65MywhmUMsI8sGqJ972APq1lotfcwMKPFLuCFfL8xGHLIp7jaBmA== - dependencies: - define-property "^1.0.0" - is-number "^3.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -xhr@^2.0.1: - version "2.6.0" - resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d" - integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA== - dependencies: - global "~4.4.0" - is-function "^1.0.1" - parse-headers "^2.0.0" - xtend "^4.0.0" - -xml-parse-from-string@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz#a9029e929d3dbcded169f3c6e28238d95a5d5a28" - integrity sha1-qQKekp09vN7RafPG4oI42VpdWig= - -xml2js@^0.4.5: - version "0.4.23" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" - integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== - dependencies: - sax ">=0.6.0" - xmlbuilder "~11.0.0" - -xmlbuilder@~11.0.0: - version "11.0.1" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" - integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== - -xtend@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==