├── .gitignore ├── README.md ├── fonts ├── AbrilFatface-Regular.ttf ├── Comfortaa-Bold.ttf ├── Comfortaa-Light.ttf ├── Comfortaa-Medium.ttf ├── Comfortaa-Regular.ttf └── Comfortaa-SemiBold.ttf ├── icon.png ├── icon@2x.png ├── index.html ├── index.js ├── loader.gif ├── package.json ├── quigley.ttf ├── sample-ffplay ├── video-player.js ├── vue.js └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | # .gitignore, files to ignore when pushing to github 2 | 3 | dist/ 4 | 5 | # app.js in electron folder is generated with browserify using the npm comands. 6 | electron/app.js 7 | 8 | #ignore all video files 9 | *.wmv 10 | *.mpg 11 | *.mpeg 12 | *.mp4 13 | *.mov 14 | *.flv 15 | *.avi 16 | *.ogv 17 | *.ogg 18 | *.webm 19 | 20 | #ignore audio file 21 | *.wav 22 | *.mp3 23 | 24 | #ingore subtitles files 25 | *.srt 26 | *.sbv 27 | 28 | 29 | # Logs 30 | logs 31 | *.log 32 | 33 | # Runtime data 34 | pids 35 | *.pid 36 | *.seed 37 | 38 | 39 | # app ready for distribution 40 | dist 41 | 42 | # Dependency directory 43 | # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git 44 | node_modules 45 | 46 | 47 | .idea 48 | Notes 49 | 50 | notes.md 51 | 52 | .env 53 | 54 | # mac file system 55 | .DS_Store 56 | 57 | # used for packaging Adobe CEP extension, before packaging and signing, exclude to avoid conflice 58 | adobe-panel-build/ 59 | 60 | # self signed certificate needed for Adobe CEP Panel 61 | ccextensionsmac/certificate.p12 62 | 63 | # including ZXPSignCmd comand 64 | # ccextensionsmac/ZXPSignCmd 65 | 66 | # Packaged app for Adobe CEP Panel Exchange site submission or distribution. 67 | dist/com.autoedit2.it.zxp 68 | 69 | 70 | # dotenv ENV var 71 | .env -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # simple-video-editor 2 | Video editor app with electron and ffmpeg 3 | 4 | # Screenshots 5 | ![Screenshot 2022-10-04 at 10 09 15](https://user-images.githubusercontent.com/8426172/193757259-ed070b6d-fb34-4307-a504-468ffd0aa3bc.png) 6 | ![Screenshot 2022-10-04 at 10 08 13](https://user-images.githubusercontent.com/8426172/193757282-8a087182-2f72-4252-860b-dca6c1b0847b.png) 7 | 8 | 9 | # setting up 10 | 11 | - Install ffmpeg 12 | ```cmd 13 | brew install ffmpeg 14 | ``` 15 | 16 | - Run 17 | ```cmd 18 | yarn start 19 | ``` 20 | -------------------------------------------------------------------------------- /fonts/AbrilFatface-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jestrux/simple-video-editor/86d00c5e6eb6a296118cf0e9e331475af0619a40/fonts/AbrilFatface-Regular.ttf -------------------------------------------------------------------------------- /fonts/Comfortaa-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jestrux/simple-video-editor/86d00c5e6eb6a296118cf0e9e331475af0619a40/fonts/Comfortaa-Bold.ttf -------------------------------------------------------------------------------- /fonts/Comfortaa-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jestrux/simple-video-editor/86d00c5e6eb6a296118cf0e9e331475af0619a40/fonts/Comfortaa-Light.ttf -------------------------------------------------------------------------------- /fonts/Comfortaa-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jestrux/simple-video-editor/86d00c5e6eb6a296118cf0e9e331475af0619a40/fonts/Comfortaa-Medium.ttf -------------------------------------------------------------------------------- /fonts/Comfortaa-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jestrux/simple-video-editor/86d00c5e6eb6a296118cf0e9e331475af0619a40/fonts/Comfortaa-Regular.ttf -------------------------------------------------------------------------------- /fonts/Comfortaa-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jestrux/simple-video-editor/86d00c5e6eb6a296118cf0e9e331475af0619a40/fonts/Comfortaa-SemiBold.ttf -------------------------------------------------------------------------------- /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jestrux/simple-video-editor/86d00c5e6eb6a296118cf0e9e331475af0619a40/icon.png -------------------------------------------------------------------------------- /icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jestrux/simple-video-editor/86d00c5e6eb6a296118cf0e9e331475af0619a40/icon@2x.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Veecut 8 | 9 | 314 | 315 | 316 |
317 |
318 |
320 | 321 | 322 | Drag & drop
Video Here 323 |
324 |
325 | 326 | 332 |
333 | 334 |
335 | 339 | 340 | 344 | 345 | 350 |
351 | 352 | 359 |
360 | 361 | 364 | 365 | 366 | 393 | 394 | 395 | 539 | 540 | 541 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const { BrowserWindow, ipcMain, Notification, app } = require("electron"); 2 | const ffmpeg = require("fluent-ffmpeg"); 3 | const fs = require("fs"); 4 | let mainApp = {}; // for things that shouldn't be garbage collected 5 | let mainWindow = {}; 6 | 7 | // mb.on('after-create-window', () => mainWindow.openDevTools()) 8 | 9 | function createWindow() { 10 | mainWindow = new BrowserWindow({ 11 | width: 700, 12 | height: 480, 13 | webPreferences: { 14 | nodeIntegration: true, 15 | }, 16 | }); 17 | 18 | mainWindow.loadFile("index.html"); 19 | 20 | // Open the DevTools. 21 | // mainWindow.webContents.openDevTools() 22 | } 23 | 24 | // mb.on('ready', () => { 25 | // console.log('app is ready'); 26 | // }); 27 | app.whenReady().then(createWindow); 28 | 29 | // Quit when all windows are closed. 30 | app.on("window-all-closed", () => { 31 | // On macOS it is common for applications and their menu bar 32 | // to stay active until the user quits explicitly with Cmd + Q 33 | if (process.platform !== "darwin") app.quit(); 34 | }); 35 | 36 | app.on("activate", () => { 37 | // On macOS it's common to re-create a window in the app when the 38 | // dock icon is clicked and there are no other windows open. 39 | if (BrowserWindow.getAllWindows().length === 0) createWindow(); 40 | }); 41 | 42 | ipcMain.on("log", (_event, content) => { 43 | console.log(content); 44 | }); 45 | 46 | ipcMain.on("cut-video", (_event, ...params) => { 47 | cutVideo(...params); 48 | }); 49 | 50 | async function cutVideo(filePath, startTime, duration, outputPath) { 51 | if (!outputPath) { 52 | const ext = "." + filePath.split(".").pop(); 53 | let fileName = filePath.split("."); 54 | fileName.pop(); 55 | fileName = fileName.join(".").split("/").pop() + " - chopped"; 56 | const matchingFiles = await matchingFilesInDir( 57 | app.getPath("downloads"), 58 | fileName 59 | ); 60 | fileName += matchingFiles > 0 ? " - " + matchingFiles : ""; 61 | outputPath = app.getPath("downloads") + "/" + fileName + ext; 62 | } 63 | 64 | mainWindow.webContents.send("cut-progress", 0); 65 | const filter = { 66 | filter: "drawtext", 67 | options: { 68 | text: "WOUT", 69 | fontfile: "/System/Library/Fonts/Supplemental/Arial Black.ttf", 70 | fontcolor: "black", 71 | fontsize: 40, 72 | box: 1, 73 | boxcolor: "white", 74 | boxborderw: "12", 75 | x: "(main_w/2-text_w/2)", 76 | y: "(main_h-text_h-30)", 77 | enable: "between(t,7,7.7)", 78 | shadowcolor: "red", 79 | shadowx: 2, 80 | shadowy: 2, 81 | } 82 | } 83 | 84 | const videoFilters = [ 85 | filter, 86 | {...filter, options: { 87 | ...filter.options, 88 | text: "WOUT - STANDING", 89 | enable: "between(t,7.7,8)", 90 | }} 91 | ]; 92 | 93 | ffmpeg(filePath) 94 | .setStartTime(startTime) 95 | .setDuration(duration) 96 | .withVideoBitrate("900k") 97 | .withSize("750x?") 98 | // .videoFilters(videoFilters) 99 | .output(outputPath) 100 | .on("end", function (error) { 101 | if (error) { 102 | console.log("Error clipping!", error); 103 | mainWindow.webContents.send("cut-error", "Failed", error); 104 | 105 | mainApp.notification = new Notification({ 106 | title: "Failed to cut video", 107 | body: error.toString(), 108 | }); 109 | mainApp.notification.show(); 110 | 111 | return; 112 | } 113 | 114 | mainWindow.webContents.send("cut-done", outputPath); 115 | console.log("cut done", outputPath); 116 | 117 | mainApp.notification = new Notification({ 118 | title: "Video was successfully cut", 119 | body: "You can find new cut video in your Downloads", 120 | }); 121 | mainApp.notification.on("click", (_ev) => { 122 | mainWindow.previewFile(outputPath); 123 | }); 124 | mainApp.notification.show(); 125 | }) 126 | .on("progress", function (progress) { 127 | mainWindow.webContents.send("cut-progress", progress.percent); 128 | console.log("Progress......" + progress.percent + "%"); 129 | }) 130 | .on("error", function (error) { 131 | console.log("error: ", error); 132 | mainApp.notification = new Notification({ 133 | title: "Failed to cut video", 134 | body: error.toString(), 135 | }); 136 | mainApp.notification.show(); 137 | mainWindow.webContents.send("cut-error", "Failed", error); 138 | }) 139 | .run(); 140 | } 141 | 142 | function matchingFilesInDir(folder, filter) { 143 | return new Promise((resolve, reject) => { 144 | if (!fs.existsSync(folder)) { 145 | reject(`Folder: ${folder} not found!`); 146 | return; 147 | } 148 | 149 | const files = fs.readdirSync(folder); 150 | const matchingFiles = files.filter( 151 | (filename) => filename.indexOf(filter) !== -1 152 | ); 153 | resolve(matchingFiles.length); 154 | }); 155 | } 156 | -------------------------------------------------------------------------------- /loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jestrux/simple-video-editor/86d00c5e6eb6a296118cf0e9e331475af0619a40/loader.gif -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "video-cutter", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "electron index.js" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "electron": "^11.2.1", 13 | "fluent-ffmpeg": "^2.1.2" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /quigley.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jestrux/simple-video-editor/86d00c5e6eb6a296118cf0e9e331475af0619a40/quigley.ttf -------------------------------------------------------------------------------- /sample-ffplay: -------------------------------------------------------------------------------- 1 | ffplay -i wout-standing.mp4 -vf \ 2 | "drawtext=text=WOUT:\ 3 | fontfile=/System/Library/Fonts/Supplemental/Arial Black.ttf:\ 4 | fontcolor=black:\ 5 | fontsize=30:\ 6 | box=1:\ 7 | boxcolor=white:\ 8 | boxborderw=12:\ 9 | x=(main_w/2-text_w/2):\ 10 | y=(main_h-text_h-30):\ 11 | enable='between(t,7,7.7)', \ 12 | drawtext=text=WOUT - STANDING:\ 13 | fontfile=/System/Library/Fonts/Supplemental/Arial Black.ttf:\ 14 | fontcolor=black:\ 15 | fontsize=30:\ 16 | box=1:\ 17 | boxcolor=white:\ 18 | boxborderw=12:\ 19 | x=(main_w/2-text_w/2):\ 20 | y=(main_h-text_h-30):\ 21 | enable='between(t,7.7,8)'" -------------------------------------------------------------------------------- /video-player.js: -------------------------------------------------------------------------------- 1 | Vue.component('video-player', { 2 | template: '#video-player', 3 | props: { 4 | src: String, 5 | startTime: Number, 6 | endTime: Number, 7 | loop: Boolean 8 | }, 9 | async mounted(){ 10 | if(this.src && this.src.length){ 11 | this._getVideoDuration(this.src, (duration) => { 12 | this.duration = duration; 13 | this.$emit('duration', duration); 14 | this.$refs.video.volume = 1; 15 | }); 16 | } 17 | }, 18 | data(){ 19 | return { 20 | currentTime: 0, 21 | duration: 0 22 | } 23 | }, 24 | watch: { 25 | startTime: function(newValue){ 26 | const video = this.$refs.video; 27 | if(video.currentTime < newValue) 28 | video.currentTime = newValue; 29 | }, 30 | endTime: function(newValue){ 31 | const video = this.$refs.video; 32 | if(video.currentTime > newValue) 33 | video.currentTime = newValue; 34 | } 35 | }, 36 | methods: { 37 | setCurrentTime(time, updateVideo){ 38 | const video = this.$refs.video; 39 | time = parseInt(time); 40 | if(time > this.endTime && !this.loop){ 41 | video.pause(); 42 | return this.setCurrentTime(this.endTime, true); 43 | } 44 | else if(time < this.startTime) 45 | return this.setCurrentTime(this.startTime, true); 46 | 47 | this.currentTime = time; 48 | if(updateVideo){ 49 | video.currentTime = time; 50 | } 51 | 52 | if(time >= this.endTime && this.loop) 53 | return this.setCurrentTime(this.startTime, true); 54 | else if(time === this.startTime && this.loop && video.paused) 55 | video.play(); 56 | }, 57 | togglePlay(){ 58 | const video = this.$refs.video; 59 | if((video.paused && video.currentTime === this.endTime) || video.ended){ 60 | video.currentTime = this.startTime; 61 | video.play(); 62 | } 63 | else if(video.paused){ 64 | video.play(); 65 | } 66 | else 67 | video.pause(); 68 | }, 69 | formatTime(time = 0){ 70 | const hr = Math.floor((time/3600)); 71 | const min = Math.floor(((time%3600)/60)); 72 | const sec = Math.floor((time%60)); 73 | 74 | return `${hr}:${min}:${sec}`.split(':') 75 | .map(t => t.padStart(2, '0')) 76 | .join(':'); 77 | }, 78 | _getVideoDuration(url, next) { 79 | var _player = new Audio(url); 80 | _player.addEventListener("durationchange", function (e) { 81 | if (this.duration!=Infinity) { 82 | var duration = this.duration 83 | _player.remove(); 84 | next(duration); 85 | }; 86 | }, false); 87 | _player.load(); 88 | _player.currentTime = 24*60*60; //fake big time 89 | _player.volume = 0; 90 | _player.play(); 91 | } 92 | } 93 | }); -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@electron/get@^1.0.1": 6 | version "1.14.1" 7 | resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.14.1.tgz#16ba75f02dffb74c23965e72d617adc721d27f40" 8 | integrity sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw== 9 | dependencies: 10 | debug "^4.1.1" 11 | env-paths "^2.2.0" 12 | fs-extra "^8.1.0" 13 | got "^9.6.0" 14 | progress "^2.0.3" 15 | semver "^6.2.0" 16 | sumchecker "^3.0.1" 17 | optionalDependencies: 18 | global-agent "^3.0.0" 19 | global-tunnel-ng "^2.7.1" 20 | 21 | "@sindresorhus/is@^0.14.0": 22 | version "0.14.0" 23 | resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" 24 | integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== 25 | 26 | "@szmarczak/http-timer@^1.1.2": 27 | version "1.1.2" 28 | resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" 29 | integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== 30 | dependencies: 31 | defer-to-connect "^1.0.1" 32 | 33 | "@types/node@^12.0.12": 34 | version "12.20.55" 35 | resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" 36 | integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== 37 | 38 | async@>=0.2.9: 39 | version "3.1.0" 40 | resolved "https://registry.yarnpkg.com/async/-/async-3.1.0.tgz#42b3b12ae1b74927b5217d8c0016baaf62463772" 41 | integrity sha512-4vx/aaY6j/j3Lw3fbCHNWP0pPaTCew3F6F3hYyl/tHs/ndmV1q7NW9T5yuJ2XAGwdQrP+6Wu20x06U4APo/iQQ== 42 | 43 | boolean@^3.0.1: 44 | version "3.2.0" 45 | resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b" 46 | integrity sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw== 47 | 48 | buffer-from@^1.0.0: 49 | version "1.1.1" 50 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 51 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 52 | 53 | cacheable-request@^6.0.0: 54 | version "6.1.0" 55 | resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" 56 | integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== 57 | dependencies: 58 | clone-response "^1.0.2" 59 | get-stream "^5.1.0" 60 | http-cache-semantics "^4.0.0" 61 | keyv "^3.0.0" 62 | lowercase-keys "^2.0.0" 63 | normalize-url "^4.1.0" 64 | responselike "^1.0.2" 65 | 66 | clone-response@^1.0.2: 67 | version "1.0.3" 68 | resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" 69 | integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== 70 | dependencies: 71 | mimic-response "^1.0.0" 72 | 73 | concat-stream@1.6.2: 74 | version "1.6.2" 75 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" 76 | integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== 77 | dependencies: 78 | buffer-from "^1.0.0" 79 | inherits "^2.0.3" 80 | readable-stream "^2.2.2" 81 | typedarray "^0.0.6" 82 | 83 | config-chain@^1.1.11: 84 | version "1.1.13" 85 | resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" 86 | integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== 87 | dependencies: 88 | ini "^1.3.4" 89 | proto-list "~1.2.1" 90 | 91 | core-util-is@~1.0.0: 92 | version "1.0.2" 93 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 94 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 95 | 96 | debug@2.6.9: 97 | version "2.6.9" 98 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 99 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 100 | dependencies: 101 | ms "2.0.0" 102 | 103 | debug@^4.1.0, debug@^4.1.1: 104 | version "4.3.4" 105 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 106 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 107 | dependencies: 108 | ms "2.1.2" 109 | 110 | decompress-response@^3.3.0: 111 | version "3.3.0" 112 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" 113 | integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== 114 | dependencies: 115 | mimic-response "^1.0.0" 116 | 117 | defer-to-connect@^1.0.1: 118 | version "1.1.3" 119 | resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" 120 | integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== 121 | 122 | define-properties@^1.1.3: 123 | version "1.1.4" 124 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" 125 | integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== 126 | dependencies: 127 | has-property-descriptors "^1.0.0" 128 | object-keys "^1.1.1" 129 | 130 | detect-node@^2.0.4: 131 | version "2.1.0" 132 | resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" 133 | integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== 134 | 135 | duplexer3@^0.1.4: 136 | version "0.1.5" 137 | resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" 138 | integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== 139 | 140 | electron@^11.2.1: 141 | version "11.5.0" 142 | resolved "https://registry.yarnpkg.com/electron/-/electron-11.5.0.tgz#f1650543b9d8f2047d3807755bdb120153ed210f" 143 | integrity sha512-WjNDd6lGpxyiNjE3LhnFCAk/D9GIj1rU3GSDealVShhkkkPR3Vh4q8ErXGDl1OAO/faomVa10KoFPUN/pLbNxg== 144 | dependencies: 145 | "@electron/get" "^1.0.1" 146 | "@types/node" "^12.0.12" 147 | extract-zip "^1.0.3" 148 | 149 | encodeurl@^1.0.2: 150 | version "1.0.2" 151 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 152 | integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== 153 | 154 | end-of-stream@^1.1.0: 155 | version "1.4.4" 156 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 157 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 158 | dependencies: 159 | once "^1.4.0" 160 | 161 | env-paths@^2.2.0: 162 | version "2.2.1" 163 | resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" 164 | integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== 165 | 166 | es6-error@^4.1.1: 167 | version "4.1.1" 168 | resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" 169 | integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== 170 | 171 | escape-string-regexp@^4.0.0: 172 | version "4.0.0" 173 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 174 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 175 | 176 | extract-zip@^1.0.3: 177 | version "1.6.7" 178 | resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.7.tgz#a840b4b8af6403264c8db57f4f1a74333ef81fe9" 179 | integrity sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k= 180 | dependencies: 181 | concat-stream "1.6.2" 182 | debug "2.6.9" 183 | mkdirp "0.5.1" 184 | yauzl "2.4.1" 185 | 186 | fd-slicer@~1.0.1: 187 | version "1.0.1" 188 | resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" 189 | integrity sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU= 190 | dependencies: 191 | pend "~1.2.0" 192 | 193 | fluent-ffmpeg@^2.1.2: 194 | version "2.1.2" 195 | resolved "https://registry.yarnpkg.com/fluent-ffmpeg/-/fluent-ffmpeg-2.1.2.tgz#c952de2240f812ebda0aa8006d7776ee2acf7d74" 196 | integrity sha1-yVLeIkD4EuvaCqgAbXd27irPfXQ= 197 | dependencies: 198 | async ">=0.2.9" 199 | which "^1.1.1" 200 | 201 | fs-extra@^8.1.0: 202 | version "8.1.0" 203 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" 204 | integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== 205 | dependencies: 206 | graceful-fs "^4.2.0" 207 | jsonfile "^4.0.0" 208 | universalify "^0.1.0" 209 | 210 | function-bind@^1.1.1: 211 | version "1.1.1" 212 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 213 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 214 | 215 | get-intrinsic@^1.1.1: 216 | version "1.1.3" 217 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" 218 | integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== 219 | dependencies: 220 | function-bind "^1.1.1" 221 | has "^1.0.3" 222 | has-symbols "^1.0.3" 223 | 224 | get-stream@^4.1.0: 225 | version "4.1.0" 226 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" 227 | integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== 228 | dependencies: 229 | pump "^3.0.0" 230 | 231 | get-stream@^5.1.0: 232 | version "5.2.0" 233 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" 234 | integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== 235 | dependencies: 236 | pump "^3.0.0" 237 | 238 | global-agent@^3.0.0: 239 | version "3.0.0" 240 | resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6" 241 | integrity sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q== 242 | dependencies: 243 | boolean "^3.0.1" 244 | es6-error "^4.1.1" 245 | matcher "^3.0.0" 246 | roarr "^2.15.3" 247 | semver "^7.3.2" 248 | serialize-error "^7.0.1" 249 | 250 | global-tunnel-ng@^2.7.1: 251 | version "2.7.1" 252 | resolved "https://registry.yarnpkg.com/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz#d03b5102dfde3a69914f5ee7d86761ca35d57d8f" 253 | integrity sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg== 254 | dependencies: 255 | encodeurl "^1.0.2" 256 | lodash "^4.17.10" 257 | npm-conf "^1.1.3" 258 | tunnel "^0.0.6" 259 | 260 | globalthis@^1.0.1: 261 | version "1.0.3" 262 | resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" 263 | integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== 264 | dependencies: 265 | define-properties "^1.1.3" 266 | 267 | got@^9.6.0: 268 | version "9.6.0" 269 | resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" 270 | integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== 271 | dependencies: 272 | "@sindresorhus/is" "^0.14.0" 273 | "@szmarczak/http-timer" "^1.1.2" 274 | cacheable-request "^6.0.0" 275 | decompress-response "^3.3.0" 276 | duplexer3 "^0.1.4" 277 | get-stream "^4.1.0" 278 | lowercase-keys "^1.0.1" 279 | mimic-response "^1.0.1" 280 | p-cancelable "^1.0.0" 281 | to-readable-stream "^1.0.0" 282 | url-parse-lax "^3.0.0" 283 | 284 | graceful-fs@^4.1.6: 285 | version "4.2.2" 286 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" 287 | integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== 288 | 289 | graceful-fs@^4.2.0: 290 | version "4.2.10" 291 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" 292 | integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== 293 | 294 | has-property-descriptors@^1.0.0: 295 | version "1.0.0" 296 | resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" 297 | integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== 298 | dependencies: 299 | get-intrinsic "^1.1.1" 300 | 301 | has-symbols@^1.0.3: 302 | version "1.0.3" 303 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" 304 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== 305 | 306 | has@^1.0.3: 307 | version "1.0.3" 308 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 309 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 310 | dependencies: 311 | function-bind "^1.1.1" 312 | 313 | http-cache-semantics@^4.0.0: 314 | version "4.1.0" 315 | resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" 316 | integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== 317 | 318 | inherits@^2.0.3, inherits@~2.0.3: 319 | version "2.0.4" 320 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 321 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 322 | 323 | ini@^1.3.4: 324 | version "1.3.8" 325 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" 326 | integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== 327 | 328 | isarray@~1.0.0: 329 | version "1.0.0" 330 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 331 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 332 | 333 | isexe@^2.0.0: 334 | version "2.0.0" 335 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 336 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 337 | 338 | json-buffer@3.0.0: 339 | version "3.0.0" 340 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" 341 | integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== 342 | 343 | json-stringify-safe@^5.0.1: 344 | version "5.0.1" 345 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 346 | integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== 347 | 348 | jsonfile@^4.0.0: 349 | version "4.0.0" 350 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" 351 | integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= 352 | optionalDependencies: 353 | graceful-fs "^4.1.6" 354 | 355 | keyv@^3.0.0: 356 | version "3.1.0" 357 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" 358 | integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== 359 | dependencies: 360 | json-buffer "3.0.0" 361 | 362 | lodash@^4.17.10: 363 | version "4.17.21" 364 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 365 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 366 | 367 | lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: 368 | version "1.0.1" 369 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" 370 | integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== 371 | 372 | lowercase-keys@^2.0.0: 373 | version "2.0.0" 374 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" 375 | integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== 376 | 377 | lru-cache@^6.0.0: 378 | version "6.0.0" 379 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 380 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 381 | dependencies: 382 | yallist "^4.0.0" 383 | 384 | matcher@^3.0.0: 385 | version "3.0.0" 386 | resolved "https://registry.yarnpkg.com/matcher/-/matcher-3.0.0.tgz#bd9060f4c5b70aa8041ccc6f80368760994f30ca" 387 | integrity sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng== 388 | dependencies: 389 | escape-string-regexp "^4.0.0" 390 | 391 | mimic-response@^1.0.0, mimic-response@^1.0.1: 392 | version "1.0.1" 393 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" 394 | integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== 395 | 396 | minimist@0.0.8: 397 | version "0.0.8" 398 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 399 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= 400 | 401 | mkdirp@0.5.1: 402 | version "0.5.1" 403 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 404 | integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= 405 | dependencies: 406 | minimist "0.0.8" 407 | 408 | ms@2.0.0: 409 | version "2.0.0" 410 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 411 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 412 | 413 | ms@2.1.2: 414 | version "2.1.2" 415 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 416 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 417 | 418 | normalize-url@^4.1.0: 419 | version "4.5.1" 420 | resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" 421 | integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== 422 | 423 | npm-conf@^1.1.3: 424 | version "1.1.3" 425 | resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9" 426 | integrity sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw== 427 | dependencies: 428 | config-chain "^1.1.11" 429 | pify "^3.0.0" 430 | 431 | object-keys@^1.1.1: 432 | version "1.1.1" 433 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 434 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 435 | 436 | once@^1.3.1, once@^1.4.0: 437 | version "1.4.0" 438 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 439 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 440 | dependencies: 441 | wrappy "1" 442 | 443 | p-cancelable@^1.0.0: 444 | version "1.1.0" 445 | resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" 446 | integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== 447 | 448 | pend@~1.2.0: 449 | version "1.2.0" 450 | resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" 451 | integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= 452 | 453 | pify@^3.0.0: 454 | version "3.0.0" 455 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 456 | integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== 457 | 458 | prepend-http@^2.0.0: 459 | version "2.0.0" 460 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" 461 | integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== 462 | 463 | process-nextick-args@~2.0.0: 464 | version "2.0.1" 465 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 466 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 467 | 468 | progress@^2.0.3: 469 | version "2.0.3" 470 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 471 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 472 | 473 | proto-list@~1.2.1: 474 | version "1.2.4" 475 | resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" 476 | integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== 477 | 478 | pump@^3.0.0: 479 | version "3.0.0" 480 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 481 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 482 | dependencies: 483 | end-of-stream "^1.1.0" 484 | once "^1.3.1" 485 | 486 | readable-stream@^2.2.2: 487 | version "2.3.6" 488 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" 489 | integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== 490 | dependencies: 491 | core-util-is "~1.0.0" 492 | inherits "~2.0.3" 493 | isarray "~1.0.0" 494 | process-nextick-args "~2.0.0" 495 | safe-buffer "~5.1.1" 496 | string_decoder "~1.1.1" 497 | util-deprecate "~1.0.1" 498 | 499 | responselike@^1.0.2: 500 | version "1.0.2" 501 | resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" 502 | integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== 503 | dependencies: 504 | lowercase-keys "^1.0.0" 505 | 506 | roarr@^2.15.3: 507 | version "2.15.4" 508 | resolved "https://registry.yarnpkg.com/roarr/-/roarr-2.15.4.tgz#f5fe795b7b838ccfe35dc608e0282b9eba2e7afd" 509 | integrity sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A== 510 | dependencies: 511 | boolean "^3.0.1" 512 | detect-node "^2.0.4" 513 | globalthis "^1.0.1" 514 | json-stringify-safe "^5.0.1" 515 | semver-compare "^1.0.0" 516 | sprintf-js "^1.1.2" 517 | 518 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 519 | version "5.1.2" 520 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 521 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 522 | 523 | semver-compare@^1.0.0: 524 | version "1.0.0" 525 | resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" 526 | integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== 527 | 528 | semver@^6.2.0: 529 | version "6.3.0" 530 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 531 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 532 | 533 | semver@^7.3.2: 534 | version "7.3.7" 535 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" 536 | integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== 537 | dependencies: 538 | lru-cache "^6.0.0" 539 | 540 | serialize-error@^7.0.1: 541 | version "7.0.1" 542 | resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-7.0.1.tgz#f1360b0447f61ffb483ec4157c737fab7d778e18" 543 | integrity sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw== 544 | dependencies: 545 | type-fest "^0.13.1" 546 | 547 | sprintf-js@^1.1.2: 548 | version "1.1.2" 549 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" 550 | integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== 551 | 552 | string_decoder@~1.1.1: 553 | version "1.1.1" 554 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 555 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 556 | dependencies: 557 | safe-buffer "~5.1.0" 558 | 559 | sumchecker@^3.0.1: 560 | version "3.0.1" 561 | resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-3.0.1.tgz#6377e996795abb0b6d348e9b3e1dfb24345a8e42" 562 | integrity sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg== 563 | dependencies: 564 | debug "^4.1.0" 565 | 566 | to-readable-stream@^1.0.0: 567 | version "1.0.0" 568 | resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" 569 | integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== 570 | 571 | tunnel@^0.0.6: 572 | version "0.0.6" 573 | resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" 574 | integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== 575 | 576 | type-fest@^0.13.1: 577 | version "0.13.1" 578 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" 579 | integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== 580 | 581 | typedarray@^0.0.6: 582 | version "0.0.6" 583 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 584 | integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= 585 | 586 | universalify@^0.1.0: 587 | version "0.1.2" 588 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 589 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== 590 | 591 | url-parse-lax@^3.0.0: 592 | version "3.0.0" 593 | resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" 594 | integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== 595 | dependencies: 596 | prepend-http "^2.0.0" 597 | 598 | util-deprecate@~1.0.1: 599 | version "1.0.2" 600 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 601 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 602 | 603 | which@^1.1.1: 604 | version "1.3.1" 605 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 606 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 607 | dependencies: 608 | isexe "^2.0.0" 609 | 610 | wrappy@1: 611 | version "1.0.2" 612 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 613 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 614 | 615 | yallist@^4.0.0: 616 | version "4.0.0" 617 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 618 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 619 | 620 | yauzl@2.4.1: 621 | version "2.4.1" 622 | resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005" 623 | integrity sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU= 624 | dependencies: 625 | fd-slicer "~1.0.1" 626 | --------------------------------------------------------------------------------