├── .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 | 
6 | 
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 |
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 |
--------------------------------------------------------------------------------