aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.DS_Storebin0 -> 6148 bytes
-rw-r--r--.gitignore6
-rw-r--r--.idea/.gitignore10
-rw-r--r--.idea/.name1
-rw-r--r--.idea/YouToo.iml22
-rw-r--r--.idea/deployment.xml26
-rw-r--r--.idea/jsLibraryMappings.xml10
-rw-r--r--.idea/modules.xml14
-rw-r--r--.idea/vcs.xml10
-rw-r--r--README.md132
-rw-r--r--index.js398
-rw-r--r--lyrics.js136
-rw-r--r--node_modules/@types/cacheable-request/README.md32
-rw-r--r--node_modules/@types/http-cache-semantics/README.md32
-rw-r--r--node_modules/@types/keyv/README.md32
-rw-r--r--node_modules/@types/node/README.md32
-rw-r--r--node_modules/@types/responselike/LICENSE42
-rw-r--r--node_modules/@types/responselike/README.md32
-rw-r--r--node_modules/genius-lyrics/LICENSE42
-rw-r--r--node_modules/genius-lyrics/README.md142
-rw-r--r--node_modules/genius-lyrics/dist/Albums/Album.d.ts26
-rw-r--r--node_modules/genius-lyrics/dist/Albums/Album.js54
-rw-r--r--node_modules/genius-lyrics/dist/Artists/Artist.d.ts70
-rw-r--r--node_modules/genius-lyrics/dist/Artists/Artist.js156
-rw-r--r--node_modules/genius-lyrics/dist/Artists/Client.d.ts28
-rw-r--r--node_modules/genius-lyrics/dist/Artists/Client.js80
-rw-r--r--node_modules/genius-lyrics/dist/Client.d.ts24
-rw-r--r--node_modules/genius-lyrics/dist/Client.js60
-rw-r--r--node_modules/genius-lyrics/dist/Constants.d.ts40
-rw-r--r--node_modules/genius-lyrics/dist/Constants.js30
-rw-r--r--node_modules/genius-lyrics/dist/Requester.d.ts22
-rw-r--r--node_modules/genius-lyrics/dist/Requester.js142
-rw-r--r--node_modules/genius-lyrics/dist/Songs/Client.d.ts46
-rw-r--r--node_modules/genius-lyrics/dist/Songs/Client.js178
-rw-r--r--node_modules/genius-lyrics/dist/Songs/Song.d.ts62
-rw-r--r--node_modules/genius-lyrics/dist/Songs/Song.js206
-rw-r--r--node_modules/genius-lyrics/dist/Utils.d.ts4
-rw-r--r--node_modules/genius-lyrics/dist/Utils.js40
-rw-r--r--node_modules/genius-lyrics/dist/index.d.ts66
-rw-r--r--node_modules/genius-lyrics/dist/index.js102
-rw-r--r--node_modules/genius-lyrics/package.json88
-rw-r--r--node_modules/tslib/CopyrightNotice.txt30
-rw-r--r--node_modules/tslib/LICENSE.txt22
-rw-r--r--node_modules/tslib/README.md328
-rw-r--r--node_modules/tslib/modules/index.js106
-rw-r--r--node_modules/tslib/modules/package.json4
-rw-r--r--node_modules/tslib/tslib.d.ts260
-rw-r--r--node_modules/tslib/tslib.es6.js478
-rw-r--r--node_modules/tslib/tslib.js612
-rw-r--r--youtoo52
50 files changed, 2354 insertions, 2213 deletions
diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000..4d129ff
--- /dev/null
+++ b/.DS_Store
Binary files differ
diff --git a/.gitignore b/.gitignore
index 695247a..8b7fd5d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
-_youtoo
-_youtoo - Copy \ No newline at end of file
+_youtoo
+_youtoo - Copy
+Missing.txt
+Changes.txt \ No newline at end of file
diff --git a/.idea/.gitignore b/.idea/.gitignore
index b58b603..ea7ed09 100644
--- a/.idea/.gitignore
+++ b/.idea/.gitignore
@@ -1,5 +1,5 @@
-# Default ignored files
-/shelf/
-/workspace.xml
-# Editor-based HTTP Client requests
-/httpRequests/
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000..945ce43
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+index.js \ No newline at end of file
diff --git a/.idea/YouToo.iml b/.idea/YouToo.iml
index 0c8867d..ff88395 100644
--- a/.idea/YouToo.iml
+++ b/.idea/YouToo.iml
@@ -1,12 +1,12 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="WEB_MODULE" version="4">
- <component name="NewModuleRootManager">
- <content url="file://$MODULE_DIR$">
- <excludeFolder url="file://$MODULE_DIR$/temp" />
- <excludeFolder url="file://$MODULE_DIR$/.tmp" />
- <excludeFolder url="file://$MODULE_DIR$/tmp" />
- </content>
- <orderEntry type="inheritedJdk" />
- <orderEntry type="sourceFolder" forTests="false" />
- </component>
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="WEB_MODULE" version="4">
+ <component name="NewModuleRootManager">
+ <content url="file://$MODULE_DIR$">
+ <excludeFolder url="file://$MODULE_DIR$/temp" />
+ <excludeFolder url="file://$MODULE_DIR$/.tmp" />
+ <excludeFolder url="file://$MODULE_DIR$/tmp" />
+ </content>
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ </component>
</module> \ No newline at end of file
diff --git a/.idea/deployment.xml b/.idea/deployment.xml
index 1436779..d17d44e 100644
--- a/.idea/deployment.xml
+++ b/.idea/deployment.xml
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="PublishConfigData" remoteFilesAllowedToDisappearOnAutoupload="false">
- <serverData>
- <paths name="Familine">
- <serverdata>
- <mappings>
- <mapping local="$PROJECT_DIR$" web="/" />
- </mappings>
- </serverdata>
- </paths>
- </serverData>
- </component>
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="PublishConfigData" remoteFilesAllowedToDisappearOnAutoupload="false">
+ <serverData>
+ <paths name="Familine">
+ <serverdata>
+ <mappings>
+ <mapping local="$PROJECT_DIR$" web="/" />
+ </mappings>
+ </serverdata>
+ </paths>
+ </serverData>
+ </component>
</project> \ No newline at end of file
diff --git a/.idea/jsLibraryMappings.xml b/.idea/jsLibraryMappings.xml
index d23208f..63326a8 100644
--- a/.idea/jsLibraryMappings.xml
+++ b/.idea/jsLibraryMappings.xml
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="JavaScriptLibraryMappings">
- <includedPredefinedLibrary name="Node.js Core" />
- </component>
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="JavaScriptLibraryMappings">
+ <includedPredefinedLibrary name="Node.js Core" />
+ </component>
</project> \ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
index b17c1cd..31c2910 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="ProjectModuleManager">
- <modules>
- <module fileurl="file://$PROJECT_DIR$/.idea/YouToo.iml" filepath="$PROJECT_DIR$/.idea/YouToo.iml" />
- </modules>
- </component>
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="ProjectModuleManager">
+ <modules>
+ <module fileurl="file://$PROJECT_DIR$/.idea/YouToo.iml" filepath="$PROJECT_DIR$/.idea/YouToo.iml" />
+ </modules>
+ </component>
</project> \ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
index 94a25f7..9661ac7 100644
--- a/.idea/vcs.xml
+++ b/.idea/vcs.xml
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="VcsDirectoryMappings">
- <mapping directory="$PROJECT_DIR$" vcs="Git" />
- </component>
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="VcsDirectoryMappings">
+ <mapping directory="$PROJECT_DIR$" vcs="Git" />
+ </component>
</project> \ No newline at end of file
diff --git a/README.md b/README.md
index 2517b3e..5cc73c5 100644
--- a/README.md
+++ b/README.md
@@ -1,66 +1,68 @@
-# YouToo
-
-YouToo takes a YouTube playlist ID, and:
-* downloads;
-* sorts;
-* syncs; and
-* adds metadata
-
-to songs.
-
-## Requirements
-* NodeJS 14 or later
-* ffmpeg
-* yt-dlp
-* ImageMagick
-
-## Usage
-First, go to the folder where you downloaded the source code (the folder where the "index.js" file is located). Also make sure `node`, `ffmpeg`, `yt-dlp` and `magick` are in your `PATH`
-
-> Running `npm install` shouldn't be required, but if you encounter issues you may need to run it.
-
-On Windows (PowerShell):
-```
-node .\index.js <your YouTube playlist ID> [album name]
-```
-
-On POSIX systems (Linux, macOS, *BSD, ...):
-```
-./youtoo <your YouTube playlist ID> [album name]
-```
-
-> Argument `[album name]` is optional. If used, YouToo will make it so that all the songs belong to the same album rather than the auto-detected albums. Useful to keep playlists organized. To preserve compatibility with Plex (and some other media players), enabling this option will disable album art.
-
-After running this command (and after waiting while it runs), you get the final audio files in `./_youtoo/Result`, it is suggested that you keep these here for syncing to work (e.g. use a symbolic link).
-
-## How does it work?
-
-### Downloading
-Downloads are processed using regular `yt-dlp` commands. Audio is downloaded as an MPEG-4 audio file, and then transcoded into MPEG-3 when metadata is later added.
-
-### Sorting
-YouToo downloads songs in the order they are in your playlist. Although the final files are sorted alphabetically with their video ID, all the download process is done in your playlist's order.
-
-### Syncing
-When you give YouToo your playlist ID, it will check which songs have already been downloaded. If a song is already downloaded, it will ignore it. Additionally, if a song is downloaded locally but not in the playlist anymore, it will be deleted.
-
-### Metadata
-The trickiest part of YouToo. It will use a bunch of different regular expressions that have been tested against Minteck's playlists to grab the following information from the videos:
-* title;
-* artist(s);
-* album;
-* release date
-
-It will first attempt to get this data from what YouTube gives, and eventually fall back to parsing the video title using regular expressions.
-
-> If the regular expressions doesn't correctly catch the title/artist(s)/album, please report an issue to this project to help improve accuracy. Make sure you embed the `./_youtoo/Metadata/<your video ID>.json` file so we can have a look at what's wrong.
-
-## Troubleshooting
-If you have issues running YouToo, follow these steps:
-1. **update yt-dlp.** YouTube's API change frequently, and yt-dlp is frequently updated. Make sure you always run the latest version to avoid issues.
-2. **update NodeJS.** We recommend using the latest stable release, or the latest long term support release. YouToo has been tested on NodeJS 17.3.0.
-3. **free up disk space.** Required disk space depends on the size of your playlist. To be safe, make sure you have 16MB per song.
-4. **delete the `./_youtoo` folder.** This will completely reset YouToo, so in case a cache file is corrupted, it will all be reset. You may backup the `./_youtoo/Result` folder if you don't want to have to download all the songs again.
-5. **run `npm install`.** This will update all dependencies and perhaps solve the issue.
-
+# YouToo
+
+YouToo takes a YouTube playlist ID, and:
+* downloads;
+* sorts;
+* syncs; and
+* adds metadata
+
+to songs.
+
+## Requirements
+* NodeJS 14 or later
+* ffmpeg
+* yt-dlp
+* ImageMagick
+
+## Usage
+First, go to the folder where you downloaded the source code (the folder where the "index.js" file is located). Also make sure `node`, `ffmpeg`, `yt-dlp` and `magick` are in your `PATH`
+
+> Running `npm install` shouldn't be required, but if you encounter issues you may need to run it.
+
+On Windows (PowerShell):
+```
+node .\index.js <your YouTube playlist ID> [album name]
+```
+
+On POSIX systems (Linux, macOS, *BSD, ...):
+```
+./youtoo <your YouTube playlist ID> [album name]
+```
+
+> Argument `[album name]` is optional. If used, YouToo will make it so that all the songs belong to the same album rather than the auto-detected albums. Useful to keep playlists organized. To preserve compatibility with Plex (and some other media players), enabling this option will disable album art.
+
+After running this command (and after waiting while it runs), you get the final audio files in `./_youtoo/Result`, it is suggested that you keep these here for syncing to work (e.g. use a symbolic link).
+
+## How does it work?
+
+### Downloading
+Downloads are processed using regular `yt-dlp` commands. Audio is downloaded as an MPEG-4 audio file, and then transcoded into MPEG-3 when metadata is later added.
+
+### Sorting
+YouToo downloads songs in the order they are in your playlist. Although the final files are sorted alphabetically with their video ID, all the download process is done in your playlist's order.
+
+### Syncing
+When you give YouToo your playlist ID, it will check which songs have already been downloaded. If a song is already downloaded, it will ignore it. Additionally, if a song is downloaded locally but not in the playlist anymore, it will be deleted.
+
+### Metadata
+The trickiest part of YouToo. It will use a bunch of different regular expressions that have been tested against Minteck's playlists to grab the following information from the videos:
+* title;
+* artist(s);
+* album;
+* release date
+
+It will first attempt to get this data from what YouTube gives, and eventually fall back to parsing the video title using regular expressions.
+
+> If the regular expressions doesn't correctly catch the title/artist(s)/album, please report an issue to this project to help improve accuracy. Make sure you embed the `./_youtoo/Metadata/<your video ID>.json` file so we can have a look at what's wrong.
+
+It will also fetch [Genius](https://genius.com) to get lyrics, if possible. You need to use a media player that supports lyrics, such as [Retro Music Player](https://play.google.com/store/apps/details?id=code.name.monkey.retromusic), [VLC](https://www.videolan.org/vlc/) or [Apple Music](https://music.apple.com).
+
+## Troubleshooting
+If you have issues running YouToo, follow these steps:
+1. **update yt-dlp.** YouTube's API change frequently, and yt-dlp is frequently updated. Make sure you always run the latest version to avoid issues.
+2. **update NodeJS.** We recommend using the latest stable release, or the latest long term support release. YouToo has been tested on NodeJS 17.3.0.
+3. **free up disk space.** Required disk space depends on the size of your playlist. To be safe, make sure you have 16MB per song.
+4. **delete the `./_youtoo` folder.** This will completely reset YouToo, so in case a cache file is corrupted, it will all be reset. You may backup the `./_youtoo/Result` folder if you don't want to have to download all the songs again.
+5. **run `npm install`.** This will update all dependencies and perhaps solve the issue.
+
If these steps didn't help you, open an issue to this project. We will be more than happy to help! \ No newline at end of file
diff --git a/index.js b/index.js
index 9a4082c..4f6c96e 100644
--- a/index.js
+++ b/index.js
@@ -1,200 +1,200 @@
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-'use strict';
-
-(async () => {
- function die(message, code) {
- if (message) { console.log(message) }
- if (code) {
- process.exit(code);
- } else {
- process.exit(0);
- }
- }
-
- String.prototype.isBase64 = function () {
- return Buffer.from(this, 'base64').toString('base64').split("=")[0].substring(0, Buffer.from(this, 'base64').toString('base64').split("=")[0].length - 1) === this.substring(0, this.length - 1);
- }
-
- const exec = require('child_process').execFileSync;
- const fs = require('fs');
- const axios = require('axios');
-
- const Genius = require("genius-lyrics");
- const g = new Genius.Client();
-
- if (process.argv[2] !== undefined) {
- global.id = process.argv[2];
- if (!id.isBase64() || id.length !== 34) {
- die("Invalid playlist ID");
- }
- } else {
- console.log("Please specify playlist ID");
- }
-
- if (process.argv[3] !== undefined) {
- global.overrideAlbum = true;
- global.overrideAlbumName = process.argv[3];
- } else {
- global.overrideAlbum = false;
- }
-
- console.log("Preparing folder structure...");
- if (!fs.existsSync("./_youtoo")) fs.mkdirSync("./_youtoo");
- if (!fs.existsSync("./_youtoo/Dumps")) fs.mkdirSync("./_youtoo/Dumps");
- if (!fs.existsSync("./_youtoo/Result")) fs.mkdirSync("./_youtoo/Result");
- if (!fs.existsSync("./_youtoo/Metadata")) fs.mkdirSync("./_youtoo/Metadata");
- if (!fs.existsSync("./_youtoo/AlbumArts")) fs.mkdirSync("./_youtoo/AlbumArts");
-
- console.log("Gathering playlist data...");
- let playlist = JSON.parse(exec("yt-dlp", [ "--flat-playlist", "--dump-single-json", "https://www.youtube.com/playlist?list=" + id ]).toString());
- fs.writeFileSync("./_youtoo/Dumps/PlaylistDataRaw.json", JSON.stringify(playlist, null, 4));
- let songs = playlist.entries.map(i => i.id);
- fs.writeFileSync("./_youtoo/Dumps/PlaylistDataList.json", JSON.stringify(songs, null, 4));
- console.log("Found " + songs.length + " songs");
-
- for (let song of songs) {
- if (!fs.existsSync("./_youtoo/Result/" + song + ".mp3")) {
- console.log("[" + song + "] Gathering metadata...");
- exec("yt-dlp", [ "-o", "./_youtoo/_audio", "--skip-download", "--write-info-json", "https://www.youtube.com/watch?v=" + song ], { stdio: "inherit" })
- let metadata = JSON.parse(fs.readFileSync("./_youtoo/_audio.info.json").toString());
- fs.writeFileSync("./_youtoo/Dumps/MetadataRaw" + song + ".json", JSON.stringify(metadata, null, 4));
-
- console.log("[" + song + "] Parsing metadata...");
- let partists = (metadata.track ?? metadata.alt_title ?? metadata.title).replace(/^([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)-(.*)/gm, "$1") !== (metadata.track ?? metadata.alt_title ?? metadata.title) ? (metadata.track ?? metadata.alt_title ?? metadata.title).replace(/^([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)-(.*)/gm, "$1") : "";
- let partists2 = (metadata.track ?? metadata.alt_title ?? metadata.title).replace(/(.*)\((feat|ft|with)(\.|:| |)(| |)([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)\)(.*)/gmi, "$5") !== (metadata.track ?? metadata.alt_title ?? metadata.title) ? (metadata.track ?? metadata.alt_title ?? metadata.title).replace(/(.*)\((feat|ft|with)(\.|:| |)(| |)([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)\)(.*)/gmi, "$5") : "";
- let artistsList = Array.from(new Set([...(metadata.artist ?? metadata.creator ?? metadata.uploader).replace(/(, |,|and |And |&)/gm, "|").split("|").map(i => i.trim()), ...partists.replace(/(, |,|and |And |&)/gm, "|").split("|").map(i => i.trim()), ...partists2.replace(/(, |,|and |And |&)/gm, "|").split("|").map(i => i.trim())])).filter(i => i.trim() !== "");
- let songTitle = (metadata.track ?? metadata.alt_title ?? metadata.title).replace(/^([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)-( |)(.*)(\[(.*)\]|)/gm, "$3").replace(/(.*)\((feat|ft|with)(\.|:| |)(| |)([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)\)(.*)/gmi, "$1").replace(/(.*)\[(.*)\](.*)/gm, "$1").replace(/(.*)\((from|in|by)(\.|:| |)(| |)([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)\)(.*)/gmi, "$1").trim();
- console.log("[" + song + "] Gathering lyrics...");
- let lyricsComplete = false;
- let lyrics = "";
- try {
- let geniusSearchArtist = artistsList[0];
- let geniusSong = (await g.songs.search(geniusSearchArtist + " - " + songTitle))[0];
- let geniusTitle = geniusSong.title.replace(/^([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)-( |)(.*)(\[(.*)\]|)/gm, "$3").replace(/(.*)\((feat|ft|with)(\.|:| |)(| |)([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)\)(.*)/gmi, "$1").replace(/(.*)\[(.*)\](.*)/gm, "$1").replace(/(.*)\((from|in|by)(\.|:| |)(| |)([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)\)(.*)/gmi, "$1").trim();
- console.log(geniusTitle.toLowerCase() + " <-> " + songTitle.toLowerCase(), geniusTitle.toLowerCase() === songTitle.toLowerCase());
- if (geniusTitle.toLowerCase() === songTitle.toLowerCase() && geniusSong.raw.lyrics_state === "complete") {
- lyricsComplete = true;
- lyrics = (await geniusSong.lyrics()).trim()
- }
- } catch (e) {
- console.error(e);
- lyrics = "";
- }
- if (!lyricsComplete) {
- console.log("[" + song + "] Incomplete/nonexistent lyrics, will try to fetch at every sync.");
- }
- let rmeta = {
- video: metadata.title,
- title: songTitle,
- date: metadata.release_year ?? (metadata.upload_date.substring(0, 4) - 1 +1),
- album: overrideAlbum ? overrideAlbumName : metadata.album ?? ((metadata.track ?? metadata.alt_title ?? metadata.title).replace(/^([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)-( |)(.*)(\[(.*)\]|)/gm, "$3").replace(/(.*)\((feat|ft|with)(\.|:| |)(| |)([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)\)(.*)/gmi, "$1").replace(/(.*)\[(.*)\](.*)/gm, "$1").replace(/(.*)\((from|in|by)(\.|:| |)(| |)([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)\)(.*)/gmi, "$1").trim()),
- potentialArtists: partists,
- potentialArtists2: partists2,
- artists: artistsList,
- lyrics,
- complete: lyricsComplete
- }
- fs.writeFileSync("./_youtoo/Metadata/" + song + ".json", JSON.stringify(rmeta, null, 4));
- console.log("[" + song + "] Downloading audio...");
- exec("yt-dlp", [ "-f", "bestaudio[ext=m4a]", "-x", "-o", "./_youtoo/_audio.m4a", "--audio-format", "m4a", "https://www.youtube.com/watch?v=" + song ], { stdio: "inherit" });
- console.log("[" + song + "] Downloading thumbnail...");
- fs.writeFileSync("./_youtoo/_audio.webp", (await axios.get(metadata.thumbnail, { responseType: "arraybuffer" })).data);
- console.log("[" + song + "] Processing thumbnail...");
- exec("magick", [ "-define", "jpeg:size=1024x1024", "./_youtoo/_audio.webp", "-thumbnail", "512x512^", "-gravity", "center", "-extent", "512x512", "./_youtoo/_audio.jpg" ]);
- console.log("[" + song + "] Processing audio...");
- let additionalArrayItems = [ "-metadata", "date=" + rmeta.date.toString() ]
- if (overrideAlbum) {
- additionalArrayItems = [ "-metadata", "album_artist=" + overrideAlbumName ];
- }
- exec("ffmpeg", [ "-y", "-i", "./_youtoo/_audio.m4a", "-metadata", "artist=" + rmeta.artists.join(", ") + "", "-metadata", "title=" + rmeta.title, ...additionalArrayItems, "-metadata", "album=" + rmeta.album, "-metadata", "publisher=YouTube", "-metadata", "copyright=© " + rmeta.date.toString() + " " + rmeta.artists[0], "-metadata", "lyrics=" + lyrics, "-metadata", "encoded_by=" + require('./package.json').name + "/" + require('./package.json').version, "./_youtoo/_audio.1.mp3" ], { stdio: "inherit" });
- if (!overrideAlbum) {
- exec("ffmpeg", [ "-y", "-i", "./_youtoo/_audio.1.mp3", "-i", "./_youtoo/_audio.jpg", "-map", "0:0", "-map", "1:0", "-c", "copy", "-id3v2_version", "3", "-metadata:s:v", "title=Album cover", "-metadata:s:v", "comment=Cover (front)", "./_youtoo/_audio.mp3" ], { stdio: "inherit" });
- fs.renameSync("./_youtoo/_audio.mp3", "./_youtoo/Result/" + song + ".mp3");
- } else {
- fs.renameSync("./_youtoo/_audio.1.mp3", "./_youtoo/Result/" + song + ".mp3");
- }
- fs.renameSync("./_youtoo/_audio.jpg", "./_youtoo/AlbumArts/" + song + ".jpg");
- console.log("[" + song + "] Cleaning up...");
- if (fs.existsSync("./_youtoo/_audio.1.mp3")) { fs.rmSync("./_youtoo/_audio.1.mp3"); }
- if (fs.existsSync("./_youtoo/_audio.jpg")) { fs.rmSync("./_youtoo/_audio.jpg"); }
- if (fs.existsSync("./_youtoo/_audio.webp")) { fs.rmSync("./_youtoo/_audio.webp"); }
- if (fs.existsSync("./_youtoo/_audio.m4a")) { fs.rmSync("./_youtoo/_audio.m4a"); }
- if (fs.existsSync("./_youtoo/_audio.info.json")) { fs.rmSync("./_youtoo/_audio.info.json"); }
- } else {
- console.log("[" + song + "] Song already in destination");
- }
- }
-
- console.log("Deleting removed songs...")
- for (let file of fs.readdirSync("./_youtoo/Result")) {
- let song = file.substring(0, file.length - 4);
- if (!songs.includes(song)) {
- console.log("[" + song + "] Deleting...");
- fs.unlinkSync("./_youtoo/Result/" + file);
- if (fs.existsSync("./_youtoo/Metadata/" + song + ".json")) fs.unlinkSync("./_youtoo/Metadata/" + song + ".json");
- }
- }
-
- console.log("Cleaning up...")
- if (fs.existsSync("./_youtoo/Dumps")) { fs.rmSync("./_youtoo/Dumps", { recursive: true }); }
-
- console.log("Fetching lyrics for incomplete songs...")
- for (let file of fs.readdirSync("./_youtoo/Result")) {
- let song = file.substring(0, file.length - 4);
- if (fs.existsSync("./_youtoo/Metadata/" + song + ".json")) {
- console.log("[" + song + "] Fetching metadata...");
- let metadata = JSON.parse(fs.readFileSync("./_youtoo/Metadata/" + song + ".json").toString());
- if (typeof metadata.complete !== "boolean" || !metadata.complete) {
- console.log("[" + song + "] Gathering lyrics...");
- let lyricsComplete = false;
- let lyrics = "";
- try {
- let geniusSearchArtist = metadata.artists[0];
- let geniusSong = (await g.songs.search(geniusSearchArtist + " - " + metadata.title))[0];
- let geniusTitle = geniusSong.title.replace(/^([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)-( |)(.*)(\[(.*)\]|)/gm, "$3").replace(/(.*)\((feat|ft|with)(\.|:| |)(| |)([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)\)(.*)/gmi, "$1").replace(/(.*)\[(.*)\](.*)/gm, "$1").replace(/(.*)\((from|in|by)(\.|:| |)(| |)([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)\)(.*)/gmi, "$1").trim();
- console.log(geniusTitle.toLowerCase() + " <-> " + metadata.title.toLowerCase(), geniusTitle.toLowerCase() === metadata.title.toLowerCase());
- if (geniusTitle.toLowerCase() === metadata.title.toLowerCase() && geniusSong.raw.lyrics_state === "complete") {
- lyricsComplete = true;
- lyrics = (await geniusSong.lyrics()).trim()
- }
- } catch (e) {
- console.error(e);
- lyrics = "";
- }
- if (!lyricsComplete) {
- console.log("[" + song + "] Incomplete/nonexistent lyrics, will try to fetch at every sync.");
- }
- metadata.complete = lyricsComplete;
- metadata.lyrics = lyrics;
- fs.writeFileSync("./_youtoo/Metadata/" + song + ".json", JSON.stringify(metadata, null, 4));
- console.log("[" + song + "] Processing audio...");
- exec("ffmpeg", [ "-y", "-i", "./_youtoo/Result/" + file, "-c", "copy", "-metadata", "lyrics=" + lyrics, "-metadata", "encoded_by=" + require('./package.json').name + "/" + require('./package.json').version, "./_youtoo/_audio.mp3" ], { stdio: "inherit" });
- fs.renameSync("./_youtoo/_audio.mp3", "./_youtoo/Result/" + song + ".mp3");
- }
- }
- }
+/*
+ * MIT License
+ *
+ * Copyright (c) 2022- Minteck
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ */
+
+'use strict';
+
+(async () => {
+ function die(message, code) {
+ if (message) { console.log(message) }
+ if (code) {
+ process.exit(code);
+ } else {
+ process.exit(0);
+ }
+ }
+
+ String.prototype.isBase64 = function () {
+ return Buffer.from(this, 'base64').toString('base64').split("=")[0].substring(0, Buffer.from(this, 'base64').toString('base64').split("=")[0].length - 1) === this.substring(0, this.length - 1);
+ }
+
+ const exec = require('child_process').execFileSync;
+ const fs = require('fs');
+ const axios = require('axios');
+
+ const Genius = require("genius-lyrics");
+ const g = new Genius.Client();
+
+ if (process.argv[2] !== undefined) {
+ global.id = process.argv[2];
+ if (!id.isBase64() || id.length !== 34) {
+ die("Invalid playlist ID");
+ }
+ } else {
+ console.log("Please specify playlist ID");
+ }
+
+ if (process.argv[3] !== undefined) {
+ global.overrideAlbum = true;
+ global.overrideAlbumName = process.argv[3];
+ } else {
+ global.overrideAlbum = false;
+ }
+
+ console.log("Preparing folder structure...");
+ if (!fs.existsSync("./_youtoo")) fs.mkdirSync("./_youtoo");
+ if (!fs.existsSync("./_youtoo/Dumps")) fs.mkdirSync("./_youtoo/Dumps");
+ if (!fs.existsSync("./_youtoo/Result")) fs.mkdirSync("./_youtoo/Result");
+ if (!fs.existsSync("./_youtoo/Metadata")) fs.mkdirSync("./_youtoo/Metadata");
+ if (!fs.existsSync("./_youtoo/AlbumArts")) fs.mkdirSync("./_youtoo/AlbumArts");
+
+ console.log("Gathering playlist data...");
+ let playlist = JSON.parse(exec("yt-dlp", [ "--flat-playlist", "--dump-single-json", "https://www.youtube.com/playlist?list=" + id ]).toString());
+ fs.writeFileSync("./_youtoo/Dumps/PlaylistDataRaw.json", JSON.stringify(playlist, null, 4));
+ let songs = playlist.entries.map(i => i.id);
+ fs.writeFileSync("./_youtoo/Dumps/PlaylistDataList.json", JSON.stringify(songs, null, 4));
+ console.log("Found " + songs.length + " songs");
+
+ for (let song of songs) {
+ if (!fs.existsSync("./_youtoo/Result/" + song + ".mp3")) {
+ console.log("[" + song + "] Gathering metadata...");
+ exec("yt-dlp", [ "-o", "./_youtoo/_audio", "--skip-download", "--write-info-json", "https://www.youtube.com/watch?v=" + song ], { stdio: "inherit" })
+ let metadata = JSON.parse(fs.readFileSync("./_youtoo/_audio.info.json").toString());
+ fs.writeFileSync("./_youtoo/Dumps/MetadataRaw" + song + ".json", JSON.stringify(metadata, null, 4));
+
+ console.log("[" + song + "] Parsing metadata...");
+ let partists = (metadata.track ?? metadata.alt_title ?? metadata.title).replace(/^([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)-(.*)/gm, "$1") !== (metadata.track ?? metadata.alt_title ?? metadata.title) ? (metadata.track ?? metadata.alt_title ?? metadata.title).replace(/^([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)-(.*)/gm, "$1") : "";
+ let partists2 = (metadata.track ?? metadata.alt_title ?? metadata.title).replace(/(.*)\((feat|ft|with)(\.|:| |)(| |)([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)\)(.*)/gmi, "$5") !== (metadata.track ?? metadata.alt_title ?? metadata.title) ? (metadata.track ?? metadata.alt_title ?? metadata.title).replace(/(.*)\((feat|ft|with)(\.|:| |)(| |)([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)\)(.*)/gmi, "$5") : "";
+ let artistsList = Array.from(new Set([...(metadata.artist ?? metadata.creator ?? metadata.uploader).replace(/(, |,|and |And |&)/gm, "|").split("|").map(i => i.trim()), ...partists.replace(/(, |,|and |And |&)/gm, "|").split("|").map(i => i.trim()), ...partists2.replace(/(, |,|and |And |&)/gm, "|").split("|").map(i => i.trim())])).filter(i => i.trim() !== "");
+ let songTitle = (metadata.track ?? metadata.alt_title ?? metadata.title).replace(/^([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)-( |)(.*)(\[(.*)\]|)/gm, "$3").replace(/(.*)\((feat|ft|with)(\.|:| |)(| |)([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)\)(.*)/gmi, "$1").replace(/(.*)\[(.*)\](.*)/gm, "$1").replace(/(.*)\((from|in|by)(\.|:| |)(| |)([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)\)(.*)/gmi, "$1").trim();
+ console.log("[" + song + "] Gathering lyrics...");
+ let lyricsComplete = false;
+ let lyrics = "";
+ try {
+ let geniusSearchArtist = artistsList[0];
+ let geniusSong = (await g.songs.search(geniusSearchArtist + " - " + songTitle))[0];
+ let geniusTitle = geniusSong.title.replace(/^([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)-( |)(.*)(\[(.*)\]|)/gm, "$3").replace(/(.*)\((feat|ft|with)(\.|:| |)(| |)([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)\)(.*)/gmi, "$1").replace(/(.*)\[(.*)\](.*)/gm, "$1").replace(/(.*)\((from|in|by)(\.|:| |)(| |)([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)\)(.*)/gmi, "$1").trim();
+ console.log(geniusTitle.toLowerCase() + " <-> " + songTitle.toLowerCase(), geniusTitle.toLowerCase() === songTitle.toLowerCase());
+ if (geniusTitle.toLowerCase() === songTitle.toLowerCase() && geniusSong.raw.lyrics_state === "complete") {
+ lyricsComplete = true;
+ lyrics = (await geniusSong.lyrics()).trim()
+ }
+ } catch (e) {
+ console.error(e);
+ lyrics = "";
+ }
+ if (!lyricsComplete) {
+ console.log("[" + song + "] Incomplete/nonexistent lyrics, will try to fetch at every sync.");
+ }
+ let rmeta = {
+ video: metadata.title,
+ title: songTitle,
+ date: metadata.release_year ?? (metadata.upload_date.substring(0, 4) - 1 +1),
+ album: overrideAlbum ? overrideAlbumName : metadata.album ?? ((metadata.track ?? metadata.alt_title ?? metadata.title).replace(/^([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)-( |)(.*)(\[(.*)\]|)/gm, "$3").replace(/(.*)\((feat|ft|with)(\.|:| |)(| |)([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)\)(.*)/gmi, "$1").replace(/(.*)\[(.*)\](.*)/gm, "$1").replace(/(.*)\((from|in|by)(\.|:| |)(| |)([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)\)(.*)/gmi, "$1").trim()),
+ potentialArtists: partists,
+ potentialArtists2: partists2,
+ artists: artistsList,
+ lyrics,
+ complete: lyricsComplete
+ }
+ fs.writeFileSync("./_youtoo/Metadata/" + song + ".json", JSON.stringify(rmeta, null, 4));
+ console.log("[" + song + "] Downloading audio...");
+ exec("yt-dlp", [ "-f", "bestaudio[ext=m4a]", "-x", "-o", "./_youtoo/_audio.m4a", "--audio-format", "m4a", "https://www.youtube.com/watch?v=" + song ], { stdio: "inherit" });
+ console.log("[" + song + "] Downloading thumbnail...");
+ fs.writeFileSync("./_youtoo/_audio.webp", (await axios.get(metadata.thumbnail, { responseType: "arraybuffer" })).data);
+ console.log("[" + song + "] Processing thumbnail...");
+ exec("magick", [ "-define", "jpeg:size=1024x1024", "./_youtoo/_audio.webp", "-thumbnail", "512x512^", "-gravity", "center", "-extent", "512x512", "./_youtoo/_audio.jpg" ]);
+ console.log("[" + song + "] Processing audio...");
+ let additionalArrayItems = [ "-metadata", "date=" + rmeta.date.toString() ]
+ if (overrideAlbum) {
+ additionalArrayItems = [ "-metadata", "album_artist=" + overrideAlbumName ];
+ }
+ exec("ffmpeg", [ "-y", "-i", "./_youtoo/_audio.m4a", "-metadata", "artist=" + rmeta.artists.join(", ") + "", "-metadata", "title=" + rmeta.title, ...additionalArrayItems, "-metadata", "album=" + rmeta.album, "-metadata", "publisher=YouTube", "-metadata", "copyright=© " + rmeta.date.toString() + " " + rmeta.artists[0], "-metadata", "lyrics=" + lyrics, "-metadata", "encoded_by=" + require('./package.json').name + "/" + require('./package.json').version, "./_youtoo/_audio.1.mp3" ], { stdio: "inherit" });
+ if (!overrideAlbum) {
+ exec("ffmpeg", [ "-y", "-i", "./_youtoo/_audio.1.mp3", "-i", "./_youtoo/_audio.jpg", "-map", "0:0", "-map", "1:0", "-c", "copy", "-id3v2_version", "3", "-metadata:s:v", "title=Album cover", "-metadata:s:v", "comment=Cover (front)", "./_youtoo/_audio.mp3" ], { stdio: "inherit" });
+ fs.renameSync("./_youtoo/_audio.mp3", "./_youtoo/Result/" + song + ".mp3");
+ } else {
+ fs.renameSync("./_youtoo/_audio.1.mp3", "./_youtoo/Result/" + song + ".mp3");
+ }
+ fs.renameSync("./_youtoo/_audio.jpg", "./_youtoo/AlbumArts/" + song + ".jpg");
+ console.log("[" + song + "] Cleaning up...");
+ if (fs.existsSync("./_youtoo/_audio.1.mp3")) { fs.rmSync("./_youtoo/_audio.1.mp3"); }
+ if (fs.existsSync("./_youtoo/_audio.jpg")) { fs.rmSync("./_youtoo/_audio.jpg"); }
+ if (fs.existsSync("./_youtoo/_audio.webp")) { fs.rmSync("./_youtoo/_audio.webp"); }
+ if (fs.existsSync("./_youtoo/_audio.m4a")) { fs.rmSync("./_youtoo/_audio.m4a"); }
+ if (fs.existsSync("./_youtoo/_audio.info.json")) { fs.rmSync("./_youtoo/_audio.info.json"); }
+ } else {
+ console.log("[" + song + "] Song already in destination");
+ }
+ }
+
+ console.log("Deleting removed songs...")
+ for (let file of fs.readdirSync("./_youtoo/Result")) {
+ let song = file.substring(0, file.length - 4);
+ if (!songs.includes(song)) {
+ console.log("[" + song + "] Deleting...");
+ fs.unlinkSync("./_youtoo/Result/" + file);
+ if (fs.existsSync("./_youtoo/Metadata/" + song + ".json")) fs.unlinkSync("./_youtoo/Metadata/" + song + ".json");
+ }
+ }
+
+ console.log("Cleaning up...")
+ if (fs.existsSync("./_youtoo/Dumps")) { fs.rmSync("./_youtoo/Dumps", { recursive: true }); }
+
+ console.log("Fetching lyrics for incomplete songs...")
+ for (let file of fs.readdirSync("./_youtoo/Result")) {
+ let song = file.substring(0, file.length - 4);
+ if (fs.existsSync("./_youtoo/Metadata/" + song + ".json")) {
+ console.log("[" + song + "] Fetching metadata...");
+ let metadata = JSON.parse(fs.readFileSync("./_youtoo/Metadata/" + song + ".json").toString());
+ if (typeof metadata.complete !== "boolean" || !metadata.complete) {
+ console.log("[" + song + "] Gathering lyrics...");
+ let lyricsComplete = false;
+ let lyrics = "";
+ try {
+ let geniusSearchArtist = metadata.artists[0];
+ let geniusSong = (await g.songs.search(geniusSearchArtist + " - " + metadata.title))[0];
+ let geniusTitle = geniusSong.title.replace(/^([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)-( |)(.*)(\[(.*)\]|)/gm, "$3").replace(/(.*)\((feat|ft|with)(\.|:| |)(| |)([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)\)(.*)/gmi, "$1").replace(/(.*)\[(.*)\](.*)/gm, "$1").replace(/(.*)\((from|in|by)(\.|:| |)(| |)([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)\)(.*)/gmi, "$1").trim();
+ console.log(geniusTitle.toLowerCase() + " <-> " + metadata.title.toLowerCase(), geniusTitle.toLowerCase() === metadata.title.toLowerCase());
+ if (geniusTitle.toLowerCase() === metadata.title.toLowerCase() && geniusSong.raw.lyrics_state === "complete") {
+ lyricsComplete = true;
+ lyrics = (await geniusSong.lyrics()).trim()
+ }
+ } catch (e) {
+ console.error(e);
+ lyrics = "";
+ }
+ if (!lyricsComplete) {
+ console.log("[" + song + "] Incomplete/nonexistent lyrics, will try to fetch at every sync.");
+ }
+ metadata.complete = lyricsComplete;
+ metadata.lyrics = lyrics;
+ fs.writeFileSync("./_youtoo/Metadata/" + song + ".json", JSON.stringify(metadata, null, 4));
+ console.log("[" + song + "] Processing audio...");
+ exec("ffmpeg", [ "-y", "-i", "./_youtoo/Result/" + file, "-c", "copy", "-metadata", "lyrics=" + lyrics, "-metadata", "encoded_by=" + require('./package.json').name + "/" + require('./package.json').version, "./_youtoo/_audio.mp3" ], { stdio: "inherit" });
+ fs.renameSync("./_youtoo/_audio.mp3", "./_youtoo/Result/" + song + ".mp3");
+ }
+ }
+ }
})() \ No newline at end of file
diff --git a/lyrics.js b/lyrics.js
new file mode 100644
index 0000000..f2edf2c
--- /dev/null
+++ b/lyrics.js
@@ -0,0 +1,136 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2022- Minteck
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ */
+
+(async () => {
+ const fs = require('fs');
+ const child_process = require("child_process");
+ const path = require("path");
+ const exec = require('child_process').execFileSync;
+
+ let noLyrics = [];
+ let yesLyrics = [];
+
+ const Genius = require("genius-lyrics");
+ const g = new Genius.Client();
+
+ const artists = fs.readdirSync(process.argv[2]);
+ const albums = [];
+ const tracks = {};
+
+ for (let artist of artists) {
+ if (fs.lstatSync(process.argv[2] + "/" + artist).isDirectory()) {
+ const artistAlbums = fs.readdirSync(process.argv[2] + "/" + artist);
+
+ for (let album of artistAlbums) {
+ if (fs.lstatSync(process.argv[2] + "/" + artist + "/" + album).isDirectory()) {
+ albums.push(process.argv[2] + "/" + artist + "/" + album);
+ const albumTracks = fs.readdirSync(process.argv[2] + "/" + artist + "/" + album);
+
+ for (let track of albumTracks) {
+ if (fs.lstatSync(process.argv[2] + "/" + artist + "/" + album + "/" + track).isFile() && !track.startsWith(".")) {
+ tracks[process.argv[2] + "/" + artist + "/" + album + "/" + track] = {
+ artist,
+ album,
+ name: track
+ };
+ }
+ }
+ }
+ }
+ }
+ }
+
+ for (let id of Object.keys(tracks)) {
+ const track = tracks[id];
+ console.log(id);
+
+ if (JSON.parse(child_process.execFileSync("ffprobe", [ "-v", "quiet", "-print_format", "json", "-show_format", "-show_streams", id ]).toString()).format.tags.lyrics === undefined) {
+ let lyricsComplete = false;
+ let lyrics = "[Instrumental]";
+ try {
+ let geniusSearchArtist = track.artist;
+ let geniusSearchTitle = track.name.substring(0, track.name.length - path.extname(track.name).length).replace(/[0-9]+-[0-9]+ (.*)/gm, "$1");
+ let geniusSong = (await g.songs.search(geniusSearchArtist + " - " + geniusSearchTitle))[0];
+ let geniusSongSec = (await g.songs.search(geniusSearchArtist + " - " + geniusSearchTitle))[1];
+ let geniusSongTer = (await g.songs.search(geniusSearchArtist + " - " + geniusSearchTitle))[2];
+ let geniusSongQua = (await g.songs.search(geniusSearchArtist + " - " + geniusSearchTitle))[3];
+ let geniusTitle = geniusSong.title.replace(/^([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)-( |)(.*)(\[(.*)\]|)/gm, "$3").replace(/(.*)\((feat|ft|with)(\.|:| |)(| |)([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)\)(.*)/gmi, "$1").replace(/(.*)\[(.*)\](.*)/gm, "$1").replace(/(.*)\((from|in|by)(\.|:| |)(| |)([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)\)(.*)/gmi, "$1").replaceAll("’", "'").trim();
+ let geniusTitleSec;
+ let geniusTitleTer;
+ let geniusTitleQua;
+ try {
+ geniusTitleSec = geniusSongSec.title.replace(/^([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)-( |)(.*)(\[(.*)\]|)/gm, "$3").replace(/(.*)\((feat|ft|with)(\.|:| |)(| |)([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)\)(.*)/gmi, "$1").replace(/(.*)\[(.*)\](.*)/gm, "$1").replace(/(.*)\((from|in|by)(\.|:| |)(| |)([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)\)(.*)/gmi, "$1").replaceAll("’", "'").trim();
+ } catch (e) {
+ geniusTitleSec = "";
+ }
+ try {
+ geniusTitleTer = geniusSongTer.title.replace(/^([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)-( |)(.*)(\[(.*)\]|)/gm, "$3").replace(/(.*)\((feat|ft|with)(\.|:| |)(| |)([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)\)(.*)/gmi, "$1").replace(/(.*)\[(.*)\](.*)/gm, "$1").replace(/(.*)\((from|in|by)(\.|:| |)(| |)([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)\)(.*)/gmi, "$1").replaceAll("’", "'").trim();
+ } catch (e) {
+ geniusTitleTer = "";
+ }
+ try {
+ geniusTitleQua = geniusSongQua.title.replace(/^([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)-( |)(.*)(\[(.*)\]|)/gm, "$3").replace(/(.*)\((feat|ft|with)(\.|:| |)(| |)([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)\)(.*)/gmi, "$1").replace(/(.*)\[(.*)\](.*)/gm, "$1").replace(/(.*)\((from|in|by)(\.|:| |)(| |)([:\"'a-zA-Z0-9 .\-*\_\/\\,&]*)\)(.*)/gmi, "$1").replaceAll("’", "'").trim();
+ } catch (e) {
+ geniusTitleQua = "";
+ }
+ console.log("1. " + geniusTitle.toLowerCase().trim() + " <-> " + geniusSearchTitle.toLowerCase().trim(), geniusTitle.toLowerCase().trim() === geniusSearchTitle.toLowerCase().trim());
+ console.log("2. " + geniusTitleSec.toLowerCase().trim() + " <-> " + geniusSearchTitle.toLowerCase().trim(), geniusTitleSec.toLowerCase().trim() === geniusSearchTitle.toLowerCase().trim());
+ console.log("3. " + geniusTitleTer.toLowerCase().trim() + " <-> " + geniusSearchTitle.toLowerCase(), geniusTitleTer.toLowerCase().trim() === geniusSearchTitle.toLowerCase().trim());
+ console.log("4. " + geniusTitleQua.toLowerCase().trim() + " <-> " + geniusSearchTitle.toLowerCase().trim(), geniusTitleQua.toLowerCase().trim() === geniusSearchTitle.toLowerCase().trim());
+ if (geniusTitle.toLowerCase().trim() === geniusSearchTitle.toLowerCase().trim() && geniusSong.raw.lyrics_state === "complete") {
+ lyricsComplete = true;
+ lyrics = (await geniusSong.lyrics()).trim()
+ } else if (geniusTitleSec.toLowerCase().trim() === geniusSearchTitle.toLowerCase().trim() && geniusSongSec.raw.lyrics_state === "complete") {
+ lyricsComplete = true;
+ lyrics = (await geniusSongSec.lyrics()).trim()
+ } else if (geniusTitleTer.toLowerCase().trim() === geniusSearchTitle.toLowerCase().trim() && geniusSongTer.raw.lyrics_state === "complete") {
+ lyricsComplete = true;
+ lyrics = (await geniusSongTer.lyrics()).trim()
+ } else if (geniusTitleQua.toLowerCase().trim() === geniusSearchTitle.toLowerCase().trim() && geniusSongQua.raw.lyrics_state === "complete") {
+ lyricsComplete = true;
+ lyrics = (await geniusSongQua.lyrics()).trim()
+ }
+ } catch (e) {
+ console.error(e);
+ lyrics = "[Instrumental]";
+ lyricsComplete = true;
+ }
+ if (lyricsComplete) {
+ console.log("Found lyrics: yes");
+ yesLyrics.push(id);
+ exec("ffmpeg", [ "-v", "quiet", "-y", "-i", id, "-c", "copy", "-metadata", "lyrics=" + lyrics, id + "-" + path.extname(id) ], { stdio: "inherit" });
+ fs.renameSync(id + "-" + path.extname(id), id);
+ } else {
+ console.log("Found lyrics: no");
+ noLyrics.push(id);
+ }
+ }
+ }
+
+ console.log(noLyrics.length + " song(s) doesn't have lyrics, see 'Missing.txt' for details");
+ console.log(yesLyrics.length + " song(s) have lyrics and were affected, see 'Changes.txt' for details");
+ fs.writeFileSync("Missing.txt", noLyrics.join("\n"))
+ fs.writeFileSync("Changes.txt", yesLyrics.join("\n"))
+})() \ No newline at end of file
diff --git a/node_modules/@types/cacheable-request/README.md b/node_modules/@types/cacheable-request/README.md
index 75992b5..7be196d 100644
--- a/node_modules/@types/cacheable-request/README.md
+++ b/node_modules/@types/cacheable-request/README.md
@@ -1,16 +1,16 @@
-# Installation
-> `npm install --save @types/cacheable-request`
-
-# Summary
-This package contains type definitions for cacheable-request (https://github.com/lukechilds/cacheable-request#readme).
-
-# Details
-Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/cacheable-request.
-
-### Additional Details
- * Last updated: Tue, 06 Jul 2021 18:05:48 GMT
- * Dependencies: [@types/keyv](https://npmjs.com/package/@types/keyv), [@types/http-cache-semantics](https://npmjs.com/package/@types/http-cache-semantics), [@types/responselike](https://npmjs.com/package/@types/responselike), [@types/node](https://npmjs.com/package/@types/node)
- * Global values: none
-
-# Credits
-These definitions were written by [BendingBender](https://github.com/BendingBender), and [Paul Melnikow](https://github.com/paulmelnikow).
+# Installation
+> `npm install --save @types/cacheable-request`
+
+# Summary
+This package contains type definitions for cacheable-request (https://github.com/lukechilds/cacheable-request#readme).
+
+# Details
+Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/cacheable-request.
+
+### Additional Details
+ * Last updated: Tue, 06 Jul 2021 18:05:48 GMT
+ * Dependencies: [@types/keyv](https://npmjs.com/package/@types/keyv), [@types/http-cache-semantics](https://npmjs.com/package/@types/http-cache-semantics), [@types/responselike](https://npmjs.com/package/@types/responselike), [@types/node](https://npmjs.com/package/@types/node)
+ * Global values: none
+
+# Credits
+These definitions were written by [BendingBender](https://github.com/BendingBender), and [Paul Melnikow](https://github.com/paulmelnikow).
diff --git a/node_modules/@types/http-cache-semantics/README.md b/node_modules/@types/http-cache-semantics/README.md
index 8e144b2..ce8964e 100644
--- a/node_modules/@types/http-cache-semantics/README.md
+++ b/node_modules/@types/http-cache-semantics/README.md
@@ -1,16 +1,16 @@
-# Installation
-> `npm install --save @types/http-cache-semantics`
-
-# Summary
-This package contains type definitions for http-cache-semantics (https://github.com/kornelski/http-cache-semantics#readme).
-
-# Details
-Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/http-cache-semantics.
-
-### Additional Details
- * Last updated: Tue, 06 Jul 2021 21:33:36 GMT
- * Dependencies: none
- * Global values: none
-
-# Credits
-These definitions were written by [BendingBender](https://github.com/BendingBender).
+# Installation
+> `npm install --save @types/http-cache-semantics`
+
+# Summary
+This package contains type definitions for http-cache-semantics (https://github.com/kornelski/http-cache-semantics#readme).
+
+# Details
+Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/http-cache-semantics.
+
+### Additional Details
+ * Last updated: Tue, 06 Jul 2021 21:33:36 GMT
+ * Dependencies: none
+ * Global values: none
+
+# Credits
+These definitions were written by [BendingBender](https://github.com/BendingBender).
diff --git a/node_modules/@types/keyv/README.md b/node_modules/@types/keyv/README.md
index 40db417..f0fada2 100644
--- a/node_modules/@types/keyv/README.md
+++ b/node_modules/@types/keyv/README.md
@@ -1,16 +1,16 @@
-# Installation
-> `npm install --save @types/keyv`
-
-# Summary
-This package contains type definitions for keyv (https://github.com/lukechilds/keyv).
-
-# Details
-Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/keyv.
-
-### Additional Details
- * Last updated: Tue, 07 Sep 2021 09:31:23 GMT
- * Dependencies: [@types/node](https://npmjs.com/package/@types/node)
- * Global values: none
-
-# Credits
-These definitions were written by [AryloYeung](https://github.com/Arylo), and [BendingBender](https://github.com/BendingBender).
+# Installation
+> `npm install --save @types/keyv`
+
+# Summary
+This package contains type definitions for keyv (https://github.com/lukechilds/keyv).
+
+# Details
+Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/keyv.
+
+### Additional Details
+ * Last updated: Tue, 07 Sep 2021 09:31:23 GMT
+ * Dependencies: [@types/node](https://npmjs.com/package/@types/node)
+ * Global values: none
+
+# Credits
+These definitions were written by [AryloYeung](https://github.com/Arylo), and [BendingBender](https://github.com/BendingBender).
diff --git a/node_modules/@types/node/README.md b/node_modules/@types/node/README.md
index a6a7f92..6471318 100644
--- a/node_modules/@types/node/README.md
+++ b/node_modules/@types/node/README.md
@@ -1,16 +1,16 @@
-# Installation
-> `npm install --save @types/node`
-
-# Summary
-This package contains type definitions for Node.js (https://nodejs.org/).
-
-# Details
-Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node.
-
-### Additional Details
- * Last updated: Mon, 07 Feb 2022 20:31:28 GMT
- * Dependencies: none
- * Global values: `AbortController`, `AbortSignal`, `__dirname`, `__filename`, `console`, `exports`, `gc`, `global`, `module`, `process`, `require`
-
-# Credits
-These definitions were written by [Microsoft TypeScript](https://github.com/Microsoft), [DefinitelyTyped](https://github.com/DefinitelyTyped), [Alberto Schiabel](https://github.com/jkomyno), [Alvis HT Tang](https://github.com/alvis), [Andrew Makarov](https://github.com/r3nya), [Benjamin Toueg](https://github.com/btoueg), [Chigozirim C.](https://github.com/smac89), [David Junger](https://github.com/touffy), [Deividas Bakanas](https://github.com/DeividasBakanas), [Eugene Y. Q. Shen](https://github.com/eyqs), [Hannes Magnusson](https://github.com/Hannes-Magnusson-CK), [Huw](https://github.com/hoo29), [Kelvin Jin](https://github.com/kjin), [Klaus Meinhardt](https://github.com/ajafff), [Lishude](https://github.com/islishude), [Mariusz Wiktorczyk](https://github.com/mwiktorczyk), [Mohsen Azimi](https://github.com/mohsen1), [Nicolas Even](https://github.com/n-e), [Nikita Galkin](https://github.com/galkin), [Parambir Singh](https://github.com/parambirs), [Sebastian Silbermann](https://github.com/eps1lon), [Simon Schick](https://github.com/SimonSchick), [Thomas den Hollander](https://github.com/ThomasdenH), [Wilco Bakker](https://github.com/WilcoBakker), [wwwy3y3](https://github.com/wwwy3y3), [Samuel Ainsworth](https://github.com/samuela), [Kyle Uehlein](https://github.com/kuehlein), [Thanik Bhongbhibhat](https://github.com/bhongy), [Marcin Kopacz](https://github.com/chyzwar), [Trivikram Kamat](https://github.com/trivikr), [Junxiao Shi](https://github.com/yoursunny), [Ilia Baryshnikov](https://github.com/qwelias), [ExE Boss](https://github.com/ExE-Boss), [Piotr Błażejewicz](https://github.com/peterblazejewicz), [Anna Henningsen](https://github.com/addaleax), [Victor Perin](https://github.com/victorperin), [Yongsheng Zhang](https://github.com/ZYSzys), [NodeJS Contributors](https://github.com/NodeJS), [Linus Unnebäck](https://github.com/LinusU), and [wafuwafu13](https://github.com/wafuwafu13).
+# Installation
+> `npm install --save @types/node`
+
+# Summary
+This package contains type definitions for Node.js (https://nodejs.org/).
+
+# Details
+Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node.
+
+### Additional Details
+ * Last updated: Mon, 07 Feb 2022 20:31:28 GMT
+ * Dependencies: none
+ * Global values: `AbortController`, `AbortSignal`, `__dirname`, `__filename`, `console`, `exports`, `gc`, `global`, `module`, `process`, `require`
+
+# Credits
+These definitions were written by [Microsoft TypeScript](https://github.com/Microsoft), [DefinitelyTyped](https://github.com/DefinitelyTyped), [Alberto Schiabel](https://github.com/jkomyno), [Alvis HT Tang](https://github.com/alvis), [Andrew Makarov](https://github.com/r3nya), [Benjamin Toueg](https://github.com/btoueg), [Chigozirim C.](https://github.com/smac89), [David Junger](https://github.com/touffy), [Deividas Bakanas](https://github.com/DeividasBakanas), [Eugene Y. Q. Shen](https://github.com/eyqs), [Hannes Magnusson](https://github.com/Hannes-Magnusson-CK), [Huw](https://github.com/hoo29), [Kelvin Jin](https://github.com/kjin), [Klaus Meinhardt](https://github.com/ajafff), [Lishude](https://github.com/islishude), [Mariusz Wiktorczyk](https://github.com/mwiktorczyk), [Mohsen Azimi](https://github.com/mohsen1), [Nicolas Even](https://github.com/n-e), [Nikita Galkin](https://github.com/galkin), [Parambir Singh](https://github.com/parambirs), [Sebastian Silbermann](https://github.com/eps1lon), [Simon Schick](https://github.com/SimonSchick), [Thomas den Hollander](https://github.com/ThomasdenH), [Wilco Bakker](https://github.com/WilcoBakker), [wwwy3y3](https://github.com/wwwy3y3), [Samuel Ainsworth](https://github.com/samuela), [Kyle Uehlein](https://github.com/kuehlein), [Thanik Bhongbhibhat](https://github.com/bhongy), [Marcin Kopacz](https://github.com/chyzwar), [Trivikram Kamat](https://github.com/trivikr), [Junxiao Shi](https://github.com/yoursunny), [Ilia Baryshnikov](https://github.com/qwelias), [ExE Boss](https://github.com/ExE-Boss), [Piotr Błażejewicz](https://github.com/peterblazejewicz), [Anna Henningsen](https://github.com/addaleax), [Victor Perin](https://github.com/victorperin), [Yongsheng Zhang](https://github.com/ZYSzys), [NodeJS Contributors](https://github.com/NodeJS), [Linus Unnebäck](https://github.com/LinusU), and [wafuwafu13](https://github.com/wafuwafu13).
diff --git a/node_modules/@types/responselike/LICENSE b/node_modules/@types/responselike/LICENSE
index 2107107..4b1ad51 100644
--- a/node_modules/@types/responselike/LICENSE
+++ b/node_modules/@types/responselike/LICENSE
@@ -1,21 +1,21 @@
- MIT License
-
- Copyright (c) Microsoft Corporation. All rights reserved.
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in all
- copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE
+ MIT License
+
+ Copyright (c) Microsoft Corporation. All rights reserved.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE
diff --git a/node_modules/@types/responselike/README.md b/node_modules/@types/responselike/README.md
index d34c22b..4523ff9 100644
--- a/node_modules/@types/responselike/README.md
+++ b/node_modules/@types/responselike/README.md
@@ -1,16 +1,16 @@
-# Installation
-> `npm install --save @types/responselike`
-
-# Summary
-This package contains type definitions for responselike ( https://github.com/lukechilds/responselike#readme ).
-
-# Details
-Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/responselike
-
-Additional Details
- * Last updated: Wed, 30 Jan 2019 18:47:32 GMT
- * Dependencies: @types/node
- * Global values: none
-
-# Credits
-These definitions were written by BendingBender <https://github.com/BendingBender>.
+# Installation
+> `npm install --save @types/responselike`
+
+# Summary
+This package contains type definitions for responselike ( https://github.com/lukechilds/responselike#readme ).
+
+# Details
+Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/responselike
+
+Additional Details
+ * Last updated: Wed, 30 Jan 2019 18:47:32 GMT
+ * Dependencies: @types/node
+ * Global values: none
+
+# Credits
+These definitions were written by BendingBender <https://github.com/BendingBender>.
diff --git a/node_modules/genius-lyrics/LICENSE b/node_modules/genius-lyrics/LICENSE
index 0112089..d1e80db 100644
--- a/node_modules/genius-lyrics/LICENSE
+++ b/node_modules/genius-lyrics/LICENSE
@@ -1,21 +1,21 @@
-MIT License
-
-Copyright (c) 2021 ZYROUGE
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
+MIT License
+
+Copyright (c) 2021 ZYROUGE
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/genius-lyrics/README.md b/node_modules/genius-lyrics/README.md
index 949eee0..664a4e9 100644
--- a/node_modules/genius-lyrics/README.md
+++ b/node_modules/genius-lyrics/README.md
@@ -1,71 +1,71 @@
-<h1 align="center">Genius Lyrics 🎵</h1>
-
-[![npm](https://img.shields.io/npm/v/genius-lyrics)](https://npmjs.com/package/genius-lyrics)
-[![npm](https://img.shields.io/npm/dw/genius-lyrics)](https://npmjs.com/package/genius-lyrics)
-[![npm](https://img.shields.io/npm/l/genius-lyrics)](https://npmjs.com/package/genius-lyrics)
-[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fzyrouge%2Fgenius-lyrics.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Fzyrouge%2Fgenius-lyrics?ref=badge_shield)
-[![Documentation](https://github.com/zyrouge/genius-lyrics/actions/workflows/docs.yml/badge.svg?branch=master)](https://github.com/zyrouge/genius-lyrics/actions/workflows/docs.yml)
-
-## 🤔 Whats is this?
-
-Just a simple lyrics fetcher that uses [Genius](https://genius.com). This also has official API implementations.
-
-## 💻 Installation
-
-```
-npm install genius-lyrics
-```
-
-## ⚙️ Usage
-
-```js
-const Genius = require("genius-lyrics");
-const Client = new Genius.Client("top-secret-optional-key");
-```
-
-## 📎 Links
-
-- [Documentation](https://genius-lyrics.js.org/)
-- [NPM](https://npmjs.com/genius-lyrics)
-- [GitHub](https://github.com/zyrouge/genius-lyrics)
-
-## ✏️ Examples
-
-### Requiring
-
-**JavaScript**
-
-```js
-const Genius = require("genius-lyrics");
-const Client = new Genius.Client("top-secret-optional-key"); // Scrapes if no key is provided
-```
-
-**TypeScript**
-
-```ts
-import Genius from "genius-lyrics";
-const Client = new Genius.Client("top-secret-optional-key"); // Scrapes if no key is provided
-```
-
-### Fetching a Song and Lyrics
-
-```js
-const searches = await Client.songs.search("faded");
-
-// Pick first one
-const firstSong = searches[0];
-console.log("About the Song:\n", firstSong, "\n");
-
-// Ok lets get the lyrics
-const lyrics = await firstSong.lyrics();
-console.log("Lyrics of the Song:\n", lyrics, "\n");
-```
-
-### Fetching an Artist
-
-```js
-const artist = await Client.artists.get(456537);
-console.log("About the Artist:\n", artist, "\n");
-```
-
-<br>
+<h1 align="center">Genius Lyrics 🎵</h1>
+
+[![npm](https://img.shields.io/npm/v/genius-lyrics)](https://npmjs.com/package/genius-lyrics)
+[![npm](https://img.shields.io/npm/dw/genius-lyrics)](https://npmjs.com/package/genius-lyrics)
+[![npm](https://img.shields.io/npm/l/genius-lyrics)](https://npmjs.com/package/genius-lyrics)
+[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fzyrouge%2Fgenius-lyrics.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Fzyrouge%2Fgenius-lyrics?ref=badge_shield)
+[![Documentation](https://github.com/zyrouge/genius-lyrics/actions/workflows/docs.yml/badge.svg?branch=master)](https://github.com/zyrouge/genius-lyrics/actions/workflows/docs.yml)
+
+## 🤔 Whats is this?
+
+Just a simple lyrics fetcher that uses [Genius](https://genius.com). This also has official API implementations.
+
+## 💻 Installation
+
+```
+npm install genius-lyrics
+```
+
+## ⚙️ Usage
+
+```js
+const Genius = require("genius-lyrics");
+const Client = new Genius.Client("top-secret-optional-key");
+```
+
+## 📎 Links
+
+- [Documentation](https://genius-lyrics.js.org/)
+- [NPM](https://npmjs.com/genius-lyrics)
+- [GitHub](https://github.com/zyrouge/genius-lyrics)
+
+## ✏️ Examples
+
+### Requiring
+
+**JavaScript**
+
+```js
+const Genius = require("genius-lyrics");
+const Client = new Genius.Client("top-secret-optional-key"); // Scrapes if no key is provided
+```
+
+**TypeScript**
+
+```ts
+import Genius from "genius-lyrics";
+const Client = new Genius.Client("top-secret-optional-key"); // Scrapes if no key is provided
+```
+
+### Fetching a Song and Lyrics
+
+```js
+const searches = await Client.songs.search("faded");
+
+// Pick first one
+const firstSong = searches[0];
+console.log("About the Song:\n", firstSong, "\n");
+
+// Ok lets get the lyrics
+const lyrics = await firstSong.lyrics();
+console.log("Lyrics of the Song:\n", lyrics, "\n");
+```
+
+### Fetching an Artist
+
+```js
+const artist = await Client.artists.get(456537);
+console.log("About the Artist:\n", artist, "\n");
+```
+
+<br>
diff --git a/node_modules/genius-lyrics/dist/Albums/Album.d.ts b/node_modules/genius-lyrics/dist/Albums/Album.d.ts
index 36d5ec7..c159db1 100644
--- a/node_modules/genius-lyrics/dist/Albums/Album.d.ts
+++ b/node_modules/genius-lyrics/dist/Albums/Album.d.ts
@@ -1,13 +1,13 @@
-import { Artist } from "../Artists/Artist";
-export declare class Album {
- name: string;
- title: string;
- id: number;
- image: string;
- url: string;
- endpoint: string;
- artist: Artist;
- partial: boolean;
- raw: any;
- constructor(res: any, artist: Artist);
-}
+import { Artist } from "../Artists/Artist";
+export declare class Album {
+ name: string;
+ title: string;
+ id: number;
+ image: string;
+ url: string;
+ endpoint: string;
+ artist: Artist;
+ partial: boolean;
+ raw: any;
+ constructor(res: any, artist: Artist);
+}
diff --git a/node_modules/genius-lyrics/dist/Albums/Album.js b/node_modules/genius-lyrics/dist/Albums/Album.js
index 4978f88..94cc732 100644
--- a/node_modules/genius-lyrics/dist/Albums/Album.js
+++ b/node_modules/genius-lyrics/dist/Albums/Album.js
@@ -1,27 +1,27 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.Album = void 0;
-const Artist_1 = require("../Artists/Artist");
-const Constants_1 = require("../Constants");
-class Album {
- constructor(res, artist) {
- if (!res || typeof res !== "object") {
- throw new Error(Constants_1.Constants.INV_RES_OBJ);
- }
- if (!artist ||
- typeof artist !== "object" ||
- !(artist instanceof Artist_1.Artist)) {
- throw new Error(Constants_1.Constants.INV_RES_OBJ);
- }
- this.name = res.name;
- this.title = res.title;
- this.id = +res.id;
- this.image = res.cover_art_url;
- this.url = res.url;
- this.endpoint = res.api_path;
- this.artist = artist;
- this.partial = true;
- this.raw = res;
- }
-}
-exports.Album = Album;
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Album = void 0;
+const Artist_1 = require("../Artists/Artist");
+const Constants_1 = require("../Constants");
+class Album {
+ constructor(res, artist) {
+ if (!res || typeof res !== "object") {
+ throw new Error(Constants_1.Constants.INV_RES_OBJ);
+ }
+ if (!artist ||
+ typeof artist !== "object" ||
+ !(artist instanceof Artist_1.Artist)) {
+ throw new Error(Constants_1.Constants.INV_RES_OBJ);
+ }
+ this.name = res.name;
+ this.title = res.title;
+ this.id = +res.id;
+ this.image = res.cover_art_url;
+ this.url = res.url;
+ this.endpoint = res.api_path;
+ this.artist = artist;
+ this.partial = true;
+ this.raw = res;
+ }
+}
+exports.Album = Album;
diff --git a/node_modules/genius-lyrics/dist/Artists/Artist.d.ts b/node_modules/genius-lyrics/dist/Artists/Artist.d.ts
index 34928e7..5d6593a 100644
--- a/node_modules/genius-lyrics/dist/Artists/Artist.d.ts
+++ b/node_modules/genius-lyrics/dist/Artists/Artist.d.ts
@@ -1,35 +1,35 @@
-import { Client } from "../Client";
-export declare class Artist {
- readonly client: Client;
- partial: boolean;
- name: string;
- id: number;
- url: string;
- thumbnail: string;
- image: string;
- iq: number;
- verified: {
- normal: boolean;
- meme: boolean;
- };
- socialmedia: {
- facebook?: string;
- twitter?: string;
- };
- raw: any;
- constructor(client: Client, res: any, partial?: boolean);
- /**
- * Fetches the songs of the Artist (Requires Key)
- * @example const Songs = await Artist.songs();
- */
- songs(options?: {
- sort?: string;
- page?: number;
- per_page?: number;
- }): Promise<any>;
- /**
- * Fetches All Information about the Artist and updates all the existing Properties (Requires Key)
- * @example const NewArtist = await Artist.fetch();
- */
- fetch(): Promise<Artist>;
-}
+import { Client } from "../Client";
+export declare class Artist {
+ readonly client: Client;
+ partial: boolean;
+ name: string;
+ id: number;
+ url: string;
+ thumbnail: string;
+ image: string;
+ iq: number;
+ verified: {
+ normal: boolean;
+ meme: boolean;
+ };
+ socialmedia: {
+ facebook?: string;
+ twitter?: string;
+ };
+ raw: any;
+ constructor(client: Client, res: any, partial?: boolean);
+ /**
+ * Fetches the songs of the Artist (Requires Key)
+ * @example const Songs = await Artist.songs();
+ */
+ songs(options?: {
+ sort?: string;
+ page?: number;
+ per_page?: number;
+ }): Promise<any>;
+ /**
+ * Fetches All Information about the Artist and updates all the existing Properties (Requires Key)
+ * @example const NewArtist = await Artist.fetch();
+ */
+ fetch(): Promise<Artist>;
+}
diff --git a/node_modules/genius-lyrics/dist/Artists/Artist.js b/node_modules/genius-lyrics/dist/Artists/Artist.js
index 112f45d..998c3d0 100644
--- a/node_modules/genius-lyrics/dist/Artists/Artist.js
+++ b/node_modules/genius-lyrics/dist/Artists/Artist.js
@@ -1,78 +1,78 @@
-"use strict";
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.Artist = void 0;
-const Song_1 = require("../Songs/Song");
-const Constants_1 = require("../Constants");
-class Artist {
- constructor(client, res, partial = false) {
- var _a;
- this.client = client;
- this.partial = partial;
- this.name = res.name;
- this.id = +res.id;
- this.url = res.url;
- this.thumbnail = res.image_url;
- this.image = res.header_image_url;
- this.iq = (_a = +res.iq) !== null && _a !== void 0 ? _a : 0;
- this.verified = {
- normal: res.is_verified,
- meme: res.is_meme_verified,
- };
- this.socialmedia = {
- facebook: res.facebook_name || undefined,
- twitter: res.twitter_name || undefined,
- };
- this.raw = res;
- }
- /**
- * Fetches the songs of the Artist (Requires Key)
- * @example const Songs = await Artist.songs();
- */
- songs(options = {}) {
- var _a, _b;
- return __awaiter(this, void 0, void 0, function* () {
- if (!this.client.key) {
- throw new Error(Constants_1.Constants.REQUIRES_KEY);
- }
- if (typeof options !== "object") {
- throw new Error("'options' must be a type of 'object'");
- }
- const per_page = (_a = options.per_page) !== null && _a !== void 0 ? _a : 20;
- const sort = options.sort && Constants_1.Constants.ARTIST_SORTS.includes(options.sort)
- ? options.sort
- : "title";
- const page = (_b = options.page) !== null && _b !== void 0 ? _b : 1;
- const data = yield this.client.api.get(`/songs?page=${page}&per_page=${per_page}&sort=${sort}`);
- const parsed = JSON.parse(data);
- return parsed.songs.map((s) => new Song_1.Song(this.client, s, true));
- });
- }
- /**
- * Fetches All Information about the Artist and updates all the existing Properties (Requires Key)
- * @example const NewArtist = await Artist.fetch();
- */
- fetch() {
- return __awaiter(this, void 0, void 0, function* () {
- if (!this.client.key) {
- throw new Error(Constants_1.Constants.REQUIRES_KEY);
- }
- const data = yield this.client.api.get(`/artists/${this.id}`);
- const parsed = JSON.parse(data);
- this.socialmedia.facebook = parsed.artist.facebook_name;
- this.socialmedia.twitter = parsed.artist.twitter_name;
- this.raw = parsed.artist;
- this.partial = false;
- return new Artist(this.client, parsed.artist, false);
- });
- }
-}
-exports.Artist = Artist;
+"use strict";
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Artist = void 0;
+const Song_1 = require("../Songs/Song");
+const Constants_1 = require("../Constants");
+class Artist {
+ constructor(client, res, partial = false) {
+ var _a;
+ this.client = client;
+ this.partial = partial;
+ this.name = res.name;
+ this.id = +res.id;
+ this.url = res.url;
+ this.thumbnail = res.image_url;
+ this.image = res.header_image_url;
+ this.iq = (_a = +res.iq) !== null && _a !== void 0 ? _a : 0;
+ this.verified = {
+ normal: res.is_verified,
+ meme: res.is_meme_verified,
+ };
+ this.socialmedia = {
+ facebook: res.facebook_name || undefined,
+ twitter: res.twitter_name || undefined,
+ };
+ this.raw = res;
+ }
+ /**
+ * Fetches the songs of the Artist (Requires Key)
+ * @example const Songs = await Artist.songs();
+ */
+ songs(options = {}) {
+ var _a, _b;
+ return __awaiter(this, void 0, void 0, function* () {
+ if (!this.client.key) {
+ throw new Error(Constants_1.Constants.REQUIRES_KEY);
+ }
+ if (typeof options !== "object") {
+ throw new Error("'options' must be a type of 'object'");
+ }
+ const per_page = (_a = options.per_page) !== null && _a !== void 0 ? _a : 20;
+ const sort = options.sort && Constants_1.Constants.ARTIST_SORTS.includes(options.sort)
+ ? options.sort
+ : "title";
+ const page = (_b = options.page) !== null && _b !== void 0 ? _b : 1;
+ const data = yield this.client.api.get(`/songs?page=${page}&per_page=${per_page}&sort=${sort}`);
+ const parsed = JSON.parse(data);
+ return parsed.songs.map((s) => new Song_1.Song(this.client, s, true));
+ });
+ }
+ /**
+ * Fetches All Information about the Artist and updates all the existing Properties (Requires Key)
+ * @example const NewArtist = await Artist.fetch();
+ */
+ fetch() {
+ return __awaiter(this, void 0, void 0, function* () {
+ if (!this.client.key) {
+ throw new Error(Constants_1.Constants.REQUIRES_KEY);
+ }
+ const data = yield this.client.api.get(`/artists/${this.id}`);
+ const parsed = JSON.parse(data);
+ this.socialmedia.facebook = parsed.artist.facebook_name;
+ this.socialmedia.twitter = parsed.artist.twitter_name;
+ this.raw = parsed.artist;
+ this.partial = false;
+ return new Artist(this.client, parsed.artist, false);
+ });
+ }
+}
+exports.Artist = Artist;
diff --git a/node_modules/genius-lyrics/dist/Artists/Client.d.ts b/node_modules/genius-lyrics/dist/Artists/Client.d.ts
index 86d6a7c..1131898 100644
--- a/node_modules/genius-lyrics/dist/Artists/Client.d.ts
+++ b/node_modules/genius-lyrics/dist/Artists/Client.d.ts
@@ -1,14 +1,14 @@
-import { Client } from "../Client";
-import { Artist } from "./Artist";
-export declare class ArtistsClient {
- readonly client: Client;
- /**
- * @example const ArtistsClient = await Genius.Artist.Client(key);
- */
- constructor(client: Client);
- /**
- * Fetches the Artist using the provided ID (Requires Key)
- * @example const Artist = await ArtistsClient.get(456537);
- */
- get(id: number): Promise<Artist>;
-}
+import { Client } from "../Client";
+import { Artist } from "./Artist";
+export declare class ArtistsClient {
+ readonly client: Client;
+ /**
+ * @example const ArtistsClient = await Genius.Artist.Client(key);
+ */
+ constructor(client: Client);
+ /**
+ * Fetches the Artist using the provided ID (Requires Key)
+ * @example const Artist = await ArtistsClient.get(456537);
+ */
+ get(id: number): Promise<Artist>;
+}
diff --git a/node_modules/genius-lyrics/dist/Artists/Client.js b/node_modules/genius-lyrics/dist/Artists/Client.js
index 530aa0e..a0e1ce6 100644
--- a/node_modules/genius-lyrics/dist/Artists/Client.js
+++ b/node_modules/genius-lyrics/dist/Artists/Client.js
@@ -1,40 +1,40 @@
-"use strict";
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.ArtistsClient = void 0;
-const Artist_1 = require("./Artist");
-const Constants_1 = require("../Constants");
-class ArtistsClient {
- /**
- * @example const ArtistsClient = await Genius.Artist.Client(key);
- */
- constructor(client) {
- this.client = client;
- }
- /**
- * Fetches the Artist using the provided ID (Requires Key)
- * @example const Artist = await ArtistsClient.get(456537);
- */
- get(id) {
- return __awaiter(this, void 0, void 0, function* () {
- if (typeof id !== "number") {
- throw new Error("'id' must be a type of 'number'");
- }
- if (!this.client.key) {
- throw new Error(Constants_1.Constants.REQUIRES_KEY);
- }
- const data = yield this.client.api.get(`/artists/${id}`);
- const parsed = JSON.parse(data);
- return new Artist_1.Artist(this.client, parsed.response.artist, false);
- });
- }
-}
-exports.ArtistsClient = ArtistsClient;
+"use strict";
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ArtistsClient = void 0;
+const Artist_1 = require("./Artist");
+const Constants_1 = require("../Constants");
+class ArtistsClient {
+ /**
+ * @example const ArtistsClient = await Genius.Artist.Client(key);
+ */
+ constructor(client) {
+ this.client = client;
+ }
+ /**
+ * Fetches the Artist using the provided ID (Requires Key)
+ * @example const Artist = await ArtistsClient.get(456537);
+ */
+ get(id) {
+ return __awaiter(this, void 0, void 0, function* () {
+ if (typeof id !== "number") {
+ throw new Error("'id' must be a type of 'number'");
+ }
+ if (!this.client.key) {
+ throw new Error(Constants_1.Constants.REQUIRES_KEY);
+ }
+ const data = yield this.client.api.get(`/artists/${id}`);
+ const parsed = JSON.parse(data);
+ return new Artist_1.Artist(this.client, parsed.response.artist, false);
+ });
+ }
+}
+exports.ArtistsClient = ArtistsClient;
diff --git a/node_modules/genius-lyrics/dist/Client.d.ts b/node_modules/genius-lyrics/dist/Client.d.ts
index c22064a..c9b42a9 100644
--- a/node_modules/genius-lyrics/dist/Client.d.ts
+++ b/node_modules/genius-lyrics/dist/Client.d.ts
@@ -1,12 +1,12 @@
-import { Config } from "./Constants";
-import { Requester } from "./Requester";
-import { ArtistsClient } from "./Artists/Client";
-import { SongsClient } from "./Songs/Client";
-export declare class Client {
- readonly key?: string | undefined;
- readonly config: Config;
- songs: SongsClient;
- artists: ArtistsClient;
- api: Requester;
- constructor(key?: string | undefined, config?: Config);
-}
+import { Config } from "./Constants";
+import { Requester } from "./Requester";
+import { ArtistsClient } from "./Artists/Client";
+import { SongsClient } from "./Songs/Client";
+export declare class Client {
+ readonly key?: string | undefined;
+ readonly config: Config;
+ songs: SongsClient;
+ artists: ArtistsClient;
+ api: Requester;
+ constructor(key?: string | undefined, config?: Config);
+}
diff --git a/node_modules/genius-lyrics/dist/Client.js b/node_modules/genius-lyrics/dist/Client.js
index 4e01ebb..ea6be82 100644
--- a/node_modules/genius-lyrics/dist/Client.js
+++ b/node_modules/genius-lyrics/dist/Client.js
@@ -1,30 +1,30 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.Client = void 0;
-const Constants_1 = require("./Constants");
-const Utils_1 = require("./Utils");
-const Requester_1 = require("./Requester");
-const Client_1 = require("./Artists/Client");
-const Client_2 = require("./Songs/Client");
-class Client {
- constructor(key, config = {}) {
- var _a;
- this.key = key;
- this.config = config;
- if (!["string", "undefined"].includes(typeof key)) {
- throw new Error(Constants_1.Constants.INV_TOKEN);
- }
- if (!(0, Utils_1.checkConfig)(config)) {
- throw new Error(Constants_1.Constants.INV_CONFIG_OBJ);
- }
- this.songs = new Client_2.SongsClient(this);
- this.artists = new Client_1.ArtistsClient(this);
- this.api = new Requester_1.Requester(((_a = this.config.origin) === null || _a === void 0 ? void 0 : _a.api) || Constants_1.Constants.BASE_URL, {
- headers: {
- "User-Agent": Constants_1.Constants.DEF_USER_AGENT,
- Authorization: `Bearer ${this.key}`,
- },
- });
- }
-}
-exports.Client = Client;
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Client = void 0;
+const Constants_1 = require("./Constants");
+const Utils_1 = require("./Utils");
+const Requester_1 = require("./Requester");
+const Client_1 = require("./Artists/Client");
+const Client_2 = require("./Songs/Client");
+class Client {
+ constructor(key, config = {}) {
+ var _a;
+ this.key = key;
+ this.config = config;
+ if (!["string", "undefined"].includes(typeof key)) {
+ throw new Error(Constants_1.Constants.INV_TOKEN);
+ }
+ if (!(0, Utils_1.checkConfig)(config)) {
+ throw new Error(Constants_1.Constants.INV_CONFIG_OBJ);
+ }
+ this.songs = new Client_2.SongsClient(this);
+ this.artists = new Client_1.ArtistsClient(this);
+ this.api = new Requester_1.Requester(((_a = this.config.origin) === null || _a === void 0 ? void 0 : _a.api) || Constants_1.Constants.BASE_URL, {
+ headers: {
+ "User-Agent": Constants_1.Constants.DEF_USER_AGENT,
+ Authorization: `Bearer ${this.key}`,
+ },
+ });
+ }
+}
+exports.Client = Client;
diff --git a/node_modules/genius-lyrics/dist/Constants.d.ts b/node_modules/genius-lyrics/dist/Constants.d.ts
index b43012d..fc3cfb6 100644
--- a/node_modules/genius-lyrics/dist/Constants.d.ts
+++ b/node_modules/genius-lyrics/dist/Constants.d.ts
@@ -1,20 +1,20 @@
-import { OptionsOfTextResponseBody } from "got";
-export interface Config {
- requestOptions?: Omit<OptionsOfTextResponseBody, "responseType">;
- origin?: {
- api?: string;
- url?: string;
- };
-}
-export declare const Constants: {
- BASE_URL: string;
- UN_BASE_URL: string;
- ARTIST_SORTS: string[];
- DEF_USER_AGENT: string;
- REQUIRES_KEY: string;
- INV_RES_OBJ: string;
- INV_CONFIG_OBJ: string;
- INV_TOKEN: string;
- NO_RESULT: string;
- ERR_W_MSG: (err: any, msg: any) => string;
-};
+import { OptionsOfTextResponseBody } from "got";
+export interface Config {
+ requestOptions?: Omit<OptionsOfTextResponseBody, "responseType">;
+ origin?: {
+ api?: string;
+ url?: string;
+ };
+}
+export declare const Constants: {
+ BASE_URL: string;
+ UN_BASE_URL: string;
+ ARTIST_SORTS: string[];
+ DEF_USER_AGENT: string;
+ REQUIRES_KEY: string;
+ INV_RES_OBJ: string;
+ INV_CONFIG_OBJ: string;
+ INV_TOKEN: string;
+ NO_RESULT: string;
+ ERR_W_MSG: (err: any, msg: any) => string;
+};
diff --git a/node_modules/genius-lyrics/dist/Constants.js b/node_modules/genius-lyrics/dist/Constants.js
index 6951e4d..362a4dd 100644
--- a/node_modules/genius-lyrics/dist/Constants.js
+++ b/node_modules/genius-lyrics/dist/Constants.js
@@ -1,15 +1,15 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.Constants = void 0;
-exports.Constants = {
- BASE_URL: "https://api.genius.com",
- UN_BASE_URL: "https://genius.com/api",
- ARTIST_SORTS: ["title", "popularity"],
- DEF_USER_AGENT: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36",
- REQUIRES_KEY: "This action requires a valid Genius Token",
- INV_RES_OBJ: "Invalid response object",
- INV_CONFIG_OBJ: "Invalid config",
- INV_TOKEN: "Invalid Genius Token",
- NO_RESULT: "No result was found",
- ERR_W_MSG: (err, msg) => `Returned ${err} with message: ${msg}`,
-};
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Constants = void 0;
+exports.Constants = {
+ BASE_URL: "https://api.genius.com",
+ UN_BASE_URL: "https://genius.com/api",
+ ARTIST_SORTS: ["title", "popularity"],
+ DEF_USER_AGENT: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36",
+ REQUIRES_KEY: "This action requires a valid Genius Token",
+ INV_RES_OBJ: "Invalid response object",
+ INV_CONFIG_OBJ: "Invalid config",
+ INV_TOKEN: "Invalid Genius Token",
+ NO_RESULT: "No result was found",
+ ERR_W_MSG: (err, msg) => `Returned ${err} with message: ${msg}`,
+};
diff --git a/node_modules/genius-lyrics/dist/Requester.d.ts b/node_modules/genius-lyrics/dist/Requester.d.ts
index 81f059e..a2b864e 100644
--- a/node_modules/genius-lyrics/dist/Requester.d.ts
+++ b/node_modules/genius-lyrics/dist/Requester.d.ts
@@ -1,11 +1,11 @@
-import { OptionsOfTextResponseBody } from "got";
-/**
- * Refer [got.Options](https://www.npmjs.com/package/got) for documentation of `OptionsOfTextResponseBody`
- */
-export declare class Requester {
- readonly url: string;
- readonly options: OptionsOfTextResponseBody;
- constructor(url: string, options: OptionsOfTextResponseBody);
- get(route: string, headers?: Record<string, string>): Promise<string>;
- _handleError(err: unknown): unknown;
-}
+import { OptionsOfTextResponseBody } from "got";
+/**
+ * Refer [got.Options](https://www.npmjs.com/package/got) for documentation of `OptionsOfTextResponseBody`
+ */
+export declare class Requester {
+ readonly url: string;
+ readonly options: OptionsOfTextResponseBody;
+ constructor(url: string, options: OptionsOfTextResponseBody);
+ get(route: string, headers?: Record<string, string>): Promise<string>;
+ _handleError(err: unknown): unknown;
+}
diff --git a/node_modules/genius-lyrics/dist/Requester.js b/node_modules/genius-lyrics/dist/Requester.js
index 08711bf..f2137f5 100644
--- a/node_modules/genius-lyrics/dist/Requester.js
+++ b/node_modules/genius-lyrics/dist/Requester.js
@@ -1,71 +1,71 @@
-"use strict";
-var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
- if (k2 === undefined) k2 = k;
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
-}) : (function(o, m, k, k2) {
- if (k2 === undefined) k2 = k;
- o[k2] = m[k];
-}));
-var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
- Object.defineProperty(o, "default", { enumerable: true, value: v });
-}) : function(o, v) {
- o["default"] = v;
-});
-var __importStar = (this && this.__importStar) || function (mod) {
- if (mod && mod.__esModule) return mod;
- var result = {};
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
- __setModuleDefault(result, mod);
- return result;
-};
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.Requester = void 0;
-const got_1 = __importStar(require("got"));
-const Constants_1 = require("./Constants");
-/**
- * Refer [got.Options](https://www.npmjs.com/package/got) for documentation of `OptionsOfTextResponseBody`
- */
-class Requester {
- constructor(url, options) {
- this.url = url;
- this.options = options;
- }
- get(route, headers) {
- var _a;
- return __awaiter(this, void 0, void 0, function* () {
- try {
- const { body } = yield got_1.default.get(`${this.url}${route}`, Object.assign(Object.assign({}, this.options), { headers: Object.assign(Object.assign({}, headers), (_a = this.options) === null || _a === void 0 ? void 0 : _a.headers) }));
- return body;
- }
- catch (err) {
- throw this._handleError(err);
- }
- });
- }
- _handleError(err) {
- var _a;
- if (err instanceof got_1.RequestError) {
- if (err.response) {
- switch (err.response.statusCode) {
- case 401:
- return new Error(Constants_1.Constants.INV_TOKEN);
- case 404:
- return new Error(Constants_1.Constants.NO_RESULT);
- default:
- return new Error(Constants_1.Constants.ERR_W_MSG(err.response.statusCode, (_a = err.response.statusMessage) !== null && _a !== void 0 ? _a : "-"));
- }
- }
- }
- return err;
- }
-}
-exports.Requester = Requester;
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Requester = void 0;
+const got_1 = __importStar(require("got"));
+const Constants_1 = require("./Constants");
+/**
+ * Refer [got.Options](https://www.npmjs.com/package/got) for documentation of `OptionsOfTextResponseBody`
+ */
+class Requester {
+ constructor(url, options) {
+ this.url = url;
+ this.options = options;
+ }
+ get(route, headers) {
+ var _a;
+ return __awaiter(this, void 0, void 0, function* () {
+ try {
+ const { body } = yield got_1.default.get(`${this.url}${route}`, Object.assign(Object.assign({}, this.options), { headers: Object.assign(Object.assign({}, headers), (_a = this.options) === null || _a === void 0 ? void 0 : _a.headers) }));
+ return body;
+ }
+ catch (err) {
+ throw this._handleError(err);
+ }
+ });
+ }
+ _handleError(err) {
+ var _a;
+ if (err instanceof got_1.RequestError) {
+ if (err.response) {
+ switch (err.response.statusCode) {
+ case 401:
+ return new Error(Constants_1.Constants.INV_TOKEN);
+ case 404:
+ return new Error(Constants_1.Constants.NO_RESULT);
+ default:
+ return new Error(Constants_1.Constants.ERR_W_MSG(err.response.statusCode, (_a = err.response.statusMessage) !== null && _a !== void 0 ? _a : "-"));
+ }
+ }
+ }
+ return err;
+ }
+}
+exports.Requester = Requester;
diff --git a/node_modules/genius-lyrics/dist/Songs/Client.d.ts b/node_modules/genius-lyrics/dist/Songs/Client.d.ts
index 00b54ae..cc8c499 100644
--- a/node_modules/genius-lyrics/dist/Songs/Client.d.ts
+++ b/node_modules/genius-lyrics/dist/Songs/Client.d.ts
@@ -1,23 +1,23 @@
-import { Client } from "../";
-import { Song } from "./Song";
-export interface SongSearchOptions {
- sanitizeQuery: boolean;
-}
-export declare class SongsClient {
- readonly client: Client;
- /**
- * @example const SongsClient = new Genius.Songs.Client(key);
- */
- constructor(client: Client);
- /**
- * Searches for songs for the provided query (Key is optional)
- * @example const SearchResults = await SongsClient.search("faded");
- */
- search(query: string, options?: Partial<SongSearchOptions>): Promise<Song[]>;
- /**
- * Fetches the Song using the provided ID (Requires Key)
- * @example const Song = await SongsClient.get(3276244);
- */
- get(id: number): Promise<Song>;
- sanitizeQuery(query: string): string;
-}
+import { Client } from "../";
+import { Song } from "./Song";
+export interface SongSearchOptions {
+ sanitizeQuery: boolean;
+}
+export declare class SongsClient {
+ readonly client: Client;
+ /**
+ * @example const SongsClient = new Genius.Songs.Client(key);
+ */
+ constructor(client: Client);
+ /**
+ * Searches for songs for the provided query (Key is optional)
+ * @example const SearchResults = await SongsClient.search("faded");
+ */
+ search(query: string, options?: Partial<SongSearchOptions>): Promise<Song[]>;
+ /**
+ * Fetches the Song using the provided ID (Requires Key)
+ * @example const Song = await SongsClient.get(3276244);
+ */
+ get(id: number): Promise<Song>;
+ sanitizeQuery(query: string): string;
+}
diff --git a/node_modules/genius-lyrics/dist/Songs/Client.js b/node_modules/genius-lyrics/dist/Songs/Client.js
index be25629..139e2d7 100644
--- a/node_modules/genius-lyrics/dist/Songs/Client.js
+++ b/node_modules/genius-lyrics/dist/Songs/Client.js
@@ -1,89 +1,89 @@
-"use strict";
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.SongsClient = void 0;
-const got_1 = __importDefault(require("got"));
-const Song_1 = require("./Song");
-const Constants_1 = require("../Constants");
-class SongsClient {
- /**
- * @example const SongsClient = new Genius.Songs.Client(key);
- */
- constructor(client) {
- this.client = client;
- }
- /**
- * Searches for songs for the provided query (Key is optional)
- * @example const SearchResults = await SongsClient.search("faded");
- */
- search(query, options) {
- var _a, _b, _c, _d;
- return __awaiter(this, void 0, void 0, function* () {
- const { sanitizeQuery } = Object.assign({ sanitizeQuery: true }, options);
- if (typeof query !== "string") {
- throw new Error("'query' must be a type of 'string'");
- }
- const term = encodeURIComponent(sanitizeQuery ? this.sanitizeQuery(query) : query);
- let result = [];
- if (this.client.key) {
- const data = yield this.client.api.get(`/search?q=${term}`);
- const parsed = JSON.parse(data);
- result = parsed.response.hits;
- }
- else {
- const res = yield got_1.default.get(`${((_a = this.client.config.origin) === null || _a === void 0 ? void 0 : _a.url) || Constants_1.Constants.UN_BASE_URL}/search/multi?per_page=5&q=${term}`, Object.assign(Object.assign({}, this.client.config.requestOptions), { headers: Object.assign({ "User-Agent": Constants_1.Constants.DEF_USER_AGENT }, (_b = this.client.config.requestOptions) === null || _b === void 0 ? void 0 : _b.headers) }));
- const parsed = JSON.parse(res.body);
- if (!((_c = parsed === null || parsed === void 0 ? void 0 : parsed.response) === null || _c === void 0 ? void 0 : _c.sections)) {
- throw new Error(Constants_1.Constants.NO_RESULT);
- }
- const __hits = parsed.response.sections.find((s) => s.type === "song");
- if (!((_d = __hits === null || __hits === void 0 ? void 0 : __hits.hits) === null || _d === void 0 ? void 0 : _d.length)) {
- throw new Error(Constants_1.Constants.NO_RESULT);
- }
- result = __hits.hits;
- }
- return result
- .filter((s) => s.type === "song")
- .map((s) => new Song_1.Song(this.client, s.result, true));
- });
- }
- /**
- * Fetches the Song using the provided ID (Requires Key)
- * @example const Song = await SongsClient.get(3276244);
- */
- get(id) {
- return __awaiter(this, void 0, void 0, function* () {
- if (typeof id !== "number") {
- throw new Error("'id' must be a type of 'number'");
- }
- if (!this.client.key) {
- throw new Error(Constants_1.Constants.REQUIRES_KEY);
- }
- const data = yield this.client.api.get(`/songs/${id}`);
- const parsed = JSON.parse(data);
- return new Song_1.Song(this.client, parsed.response.song, false);
- });
- }
- // Source: https://github.com/farshed/genius-lyrics-api/blob/110397a9f05fe20c4ded92418430f665f074c4e4/lib/utils/index.js#L15
- sanitizeQuery(query) {
- return query
- .toLowerCase()
- .replace(/ *\([^)]*\) */g, "")
- .replace(/ *\[[^\]]*]/, "")
- .replace(/feat.|ft./g, "")
- .replace(/\s+/g, " ")
- .trim();
- }
-}
-exports.SongsClient = SongsClient;
+"use strict";
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.SongsClient = void 0;
+const got_1 = __importDefault(require("got"));
+const Song_1 = require("./Song");
+const Constants_1 = require("../Constants");
+class SongsClient {
+ /**
+ * @example const SongsClient = new Genius.Songs.Client(key);
+ */
+ constructor(client) {
+ this.client = client;
+ }
+ /**
+ * Searches for songs for the provided query (Key is optional)
+ * @example const SearchResults = await SongsClient.search("faded");
+ */
+ search(query, options) {
+ var _a, _b, _c, _d;
+ return __awaiter(this, void 0, void 0, function* () {
+ const { sanitizeQuery } = Object.assign({ sanitizeQuery: true }, options);
+ if (typeof query !== "string") {
+ throw new Error("'query' must be a type of 'string'");
+ }
+ const term = encodeURIComponent(sanitizeQuery ? this.sanitizeQuery(query) : query);
+ let result = [];
+ if (this.client.key) {
+ const data = yield this.client.api.get(`/search?q=${term}`);
+ const parsed = JSON.parse(data);
+ result = parsed.response.hits;
+ }
+ else {
+ const res = yield got_1.default.get(`${((_a = this.client.config.origin) === null || _a === void 0 ? void 0 : _a.url) || Constants_1.Constants.UN_BASE_URL}/search/multi?per_page=5&q=${term}`, Object.assign(Object.assign({}, this.client.config.requestOptions), { headers: Object.assign({ "User-Agent": Constants_1.Constants.DEF_USER_AGENT }, (_b = this.client.config.requestOptions) === null || _b === void 0 ? void 0 : _b.headers) }));
+ const parsed = JSON.parse(res.body);
+ if (!((_c = parsed === null || parsed === void 0 ? void 0 : parsed.response) === null || _c === void 0 ? void 0 : _c.sections)) {
+ throw new Error(Constants_1.Constants.NO_RESULT);
+ }
+ const __hits = parsed.response.sections.find((s) => s.type === "song");
+ if (!((_d = __hits === null || __hits === void 0 ? void 0 : __hits.hits) === null || _d === void 0 ? void 0 : _d.length)) {
+ throw new Error(Constants_1.Constants.NO_RESULT);
+ }
+ result = __hits.hits;
+ }
+ return result
+ .filter((s) => s.type === "song")
+ .map((s) => new Song_1.Song(this.client, s.result, true));
+ });
+ }
+ /**
+ * Fetches the Song using the provided ID (Requires Key)
+ * @example const Song = await SongsClient.get(3276244);
+ */
+ get(id) {
+ return __awaiter(this, void 0, void 0, function* () {
+ if (typeof id !== "number") {
+ throw new Error("'id' must be a type of 'number'");
+ }
+ if (!this.client.key) {
+ throw new Error(Constants_1.Constants.REQUIRES_KEY);
+ }
+ const data = yield this.client.api.get(`/songs/${id}`);
+ const parsed = JSON.parse(data);
+ return new Song_1.Song(this.client, parsed.response.song, false);
+ });
+ }
+ // Source: https://github.com/farshed/genius-lyrics-api/blob/110397a9f05fe20c4ded92418430f665f074c4e4/lib/utils/index.js#L15
+ sanitizeQuery(query) {
+ return query
+ .toLowerCase()
+ .replace(/ *\([^)]*\) */g, "")
+ .replace(/ *\[[^\]]*]/, "")
+ .replace(/feat.|ft./g, "")
+ .replace(/\s+/g, " ")
+ .trim();
+ }
+}
+exports.SongsClient = SongsClient;
diff --git a/node_modules/genius-lyrics/dist/Songs/Song.d.ts b/node_modules/genius-lyrics/dist/Songs/Song.d.ts
index 8e51887..54cef31 100644
--- a/node_modules/genius-lyrics/dist/Songs/Song.d.ts
+++ b/node_modules/genius-lyrics/dist/Songs/Song.d.ts
@@ -1,31 +1,31 @@
-import { Client } from "../Client";
-import { Album } from "../Albums/Album";
-import { Artist } from "../Artists/Artist";
-export declare class Song {
- readonly client: Client;
- partial: boolean;
- title: string;
- fullTitle: string;
- featuredTitle: string;
- id: number;
- thumbnail: string;
- image: string;
- url: string;
- endpoint: string;
- artist: Artist;
- album?: Album;
- releasedAt?: Date;
- raw: any;
- constructor(client: Client, res: any, partial?: boolean);
- /**
- * Fetches Lyrics of the Track
- * @example const Lyrics = await Song.lyrics(true);
- */
- lyrics(removeChorus?: boolean): Promise<string>;
- /**
- * Fetches All Information about the Track and updates all the existing Properties (Requires Key)
- * @example const NewSong = await Song.fetch();
- */
- fetch(): Promise<this>;
- removeChorus(lyrics: string): string;
-}
+import { Client } from "../Client";
+import { Album } from "../Albums/Album";
+import { Artist } from "../Artists/Artist";
+export declare class Song {
+ readonly client: Client;
+ partial: boolean;
+ title: string;
+ fullTitle: string;
+ featuredTitle: string;
+ id: number;
+ thumbnail: string;
+ image: string;
+ url: string;
+ endpoint: string;
+ artist: Artist;
+ album?: Album;
+ releasedAt?: Date;
+ raw: any;
+ constructor(client: Client, res: any, partial?: boolean);
+ /**
+ * Fetches Lyrics of the Track
+ * @example const Lyrics = await Song.lyrics(true);
+ */
+ lyrics(removeChorus?: boolean): Promise<string>;
+ /**
+ * Fetches All Information about the Track and updates all the existing Properties (Requires Key)
+ * @example const NewSong = await Song.fetch();
+ */
+ fetch(): Promise<this>;
+ removeChorus(lyrics: string): string;
+}
diff --git a/node_modules/genius-lyrics/dist/Songs/Song.js b/node_modules/genius-lyrics/dist/Songs/Song.js
index 6b577c8..0dff6dd 100644
--- a/node_modules/genius-lyrics/dist/Songs/Song.js
+++ b/node_modules/genius-lyrics/dist/Songs/Song.js
@@ -1,103 +1,103 @@
-"use strict";
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.Song = void 0;
-const got_1 = __importDefault(require("got"));
-const cheerio_1 = __importDefault(require("cheerio"));
-const Album_1 = require("../Albums/Album");
-const Artist_1 = require("../Artists/Artist");
-const Constants_1 = require("../Constants");
-class Song {
- constructor(client, res, partial = false) {
- this.client = client;
- this.partial = partial;
- this.title = res.title;
- this.fullTitle = res.full_title;
- this.featuredTitle = res.title_with_featured;
- this.id = +res.id;
- this.thumbnail = res.header_image_thumbnail_url;
- this.image = res.header_image_url;
- this.url = res.url;
- this.endpoint = res.api_path;
- this.artist = new Artist_1.Artist(this.client, res.primary_artist, true);
- this.partial = partial;
- this.album =
- !this.partial && res.album
- ? new Album_1.Album(res.album, this.artist)
- : undefined;
- this.releasedAt =
- !this.partial && res.release_date
- ? new Date(res.release_date)
- : undefined;
- this.raw = res;
- }
- /**
- * Fetches Lyrics of the Track
- * @example const Lyrics = await Song.lyrics(true);
- */
- lyrics(removeChorus = false) {
- var _a;
- return __awaiter(this, void 0, void 0, function* () {
- if (typeof removeChorus !== "boolean") {
- throw new Error("'removeChorus' must be a type of 'boolean'");
- }
- const { body } = yield got_1.default.get(this.url, Object.assign(Object.assign({}, this.client.config.requestOptions), { headers: Object.assign({ "User-Agent": Constants_1.Constants.DEF_USER_AGENT }, (_a = this.client.config.requestOptions) === null || _a === void 0 ? void 0 : _a.headers) }));
- const $ = cheerio_1.default.load(body);
- const selectors = [
- () => $(".lyrics").text().trim(),
- () => $("div[class*='Lyrics__Container']")
- .toArray()
- .map((x) => {
- const ele = $(x);
- ele.find("br").replaceWith("\n");
- return ele.text().trim();
- })
- .join("\n\n")
- .trim(),
- ];
- for (const x of selectors) {
- const lyrics = x();
- if (lyrics === null || lyrics === void 0 ? void 0 : lyrics.length) {
- return removeChorus ? this.removeChorus(lyrics) : lyrics;
- }
- }
- throw new Error(Constants_1.Constants.NO_RESULT);
- });
- }
- /**
- * Fetches All Information about the Track and updates all the existing Properties (Requires Key)
- * @example const NewSong = await Song.fetch();
- */
- fetch() {
- return __awaiter(this, void 0, void 0, function* () {
- if (!this.client.key) {
- throw new Error(Constants_1.Constants.REQUIRES_KEY);
- }
- const data = yield this.client.api.get(`/songs/${this.id}`);
- const parsed = JSON.parse(data);
- this.album = parsed.response.song.album
- ? new Album_1.Album(parsed.response.song.album, this.artist)
- : undefined;
- this.releasedAt = parsed.response.song.release_date
- ? new Date(parsed.response.song.release_date)
- : undefined;
- this.partial = false;
- return this;
- });
- }
- removeChorus(lyrics) {
- return lyrics.replace(/^\[[^\]]+\]$/g, "");
- }
-}
-exports.Song = Song;
+"use strict";
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Song = void 0;
+const got_1 = __importDefault(require("got"));
+const cheerio_1 = __importDefault(require("cheerio"));
+const Album_1 = require("../Albums/Album");
+const Artist_1 = require("../Artists/Artist");
+const Constants_1 = require("../Constants");
+class Song {
+ constructor(client, res, partial = false) {
+ this.client = client;
+ this.partial = partial;
+ this.title = res.title;
+ this.fullTitle = res.full_title;
+ this.featuredTitle = res.title_with_featured;
+ this.id = +res.id;
+ this.thumbnail = res.header_image_thumbnail_url;
+ this.image = res.header_image_url;
+ this.url = res.url;
+ this.endpoint = res.api_path;
+ this.artist = new Artist_1.Artist(this.client, res.primary_artist, true);
+ this.partial = partial;
+ this.album =
+ !this.partial && res.album
+ ? new Album_1.Album(res.album, this.artist)
+ : undefined;
+ this.releasedAt =
+ !this.partial && res.release_date
+ ? new Date(res.release_date)
+ : undefined;
+ this.raw = res;
+ }
+ /**
+ * Fetches Lyrics of the Track
+ * @example const Lyrics = await Song.lyrics(true);
+ */
+ lyrics(removeChorus = false) {
+ var _a;
+ return __awaiter(this, void 0, void 0, function* () {
+ if (typeof removeChorus !== "boolean") {
+ throw new Error("'removeChorus' must be a type of 'boolean'");
+ }
+ const { body } = yield got_1.default.get(this.url, Object.assign(Object.assign({}, this.client.config.requestOptions), { headers: Object.assign({ "User-Agent": Constants_1.Constants.DEF_USER_AGENT }, (_a = this.client.config.requestOptions) === null || _a === void 0 ? void 0 : _a.headers) }));
+ const $ = cheerio_1.default.load(body);
+ const selectors = [
+ () => $(".lyrics").text().trim(),
+ () => $("div[class*='Lyrics__Container']")
+ .toArray()
+ .map((x) => {
+ const ele = $(x);
+ ele.find("br").replaceWith("\n");
+ return ele.text().trim();
+ })
+ .join("\n\n")
+ .trim(),
+ ];
+ for (const x of selectors) {
+ const lyrics = x();
+ if (lyrics === null || lyrics === void 0 ? void 0 : lyrics.length) {
+ return removeChorus ? this.removeChorus(lyrics) : lyrics;
+ }
+ }
+ throw new Error(Constants_1.Constants.NO_RESULT);
+ });
+ }
+ /**
+ * Fetches All Information about the Track and updates all the existing Properties (Requires Key)
+ * @example const NewSong = await Song.fetch();
+ */
+ fetch() {
+ return __awaiter(this, void 0, void 0, function* () {
+ if (!this.client.key) {
+ throw new Error(Constants_1.Constants.REQUIRES_KEY);
+ }
+ const data = yield this.client.api.get(`/songs/${this.id}`);
+ const parsed = JSON.parse(data);
+ this.album = parsed.response.song.album
+ ? new Album_1.Album(parsed.response.song.album, this.artist)
+ : undefined;
+ this.releasedAt = parsed.response.song.release_date
+ ? new Date(parsed.response.song.release_date)
+ : undefined;
+ this.partial = false;
+ return this;
+ });
+ }
+ removeChorus(lyrics) {
+ return lyrics.replace(/^\[[^\]]+\]$/g, "");
+ }
+}
+exports.Song = Song;
diff --git a/node_modules/genius-lyrics/dist/Utils.d.ts b/node_modules/genius-lyrics/dist/Utils.d.ts
index 3c4ed85..345c236 100644
--- a/node_modules/genius-lyrics/dist/Utils.d.ts
+++ b/node_modules/genius-lyrics/dist/Utils.d.ts
@@ -1,2 +1,2 @@
-import { Config } from "./Constants";
-export declare const checkConfig: (config: any) => config is Config;
+import { Config } from "./Constants";
+export declare const checkConfig: (config: any) => config is Config;
diff --git a/node_modules/genius-lyrics/dist/Utils.js b/node_modules/genius-lyrics/dist/Utils.js
index 3d6b785..ad92b88 100644
--- a/node_modules/genius-lyrics/dist/Utils.js
+++ b/node_modules/genius-lyrics/dist/Utils.js
@@ -1,20 +1,20 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.checkConfig = void 0;
-const checkConfig = (config) => {
- if (!config || typeof config !== "object") {
- return false;
- }
- if (config.requestOptions && typeof config.requestOptions !== "object") {
- return false;
- }
- if (config.origin) {
- if (typeof config.origin !== "object" ||
- (config.origin.api && typeof config.origin.api !== "string") ||
- (config.origin.url && typeof config.origin.url !== "string")) {
- return false;
- }
- }
- return true;
-};
-exports.checkConfig = checkConfig;
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.checkConfig = void 0;
+const checkConfig = (config) => {
+ if (!config || typeof config !== "object") {
+ return false;
+ }
+ if (config.requestOptions && typeof config.requestOptions !== "object") {
+ return false;
+ }
+ if (config.origin) {
+ if (typeof config.origin !== "object" ||
+ (config.origin.api && typeof config.origin.api !== "string") ||
+ (config.origin.url && typeof config.origin.url !== "string")) {
+ return false;
+ }
+ }
+ return true;
+};
+exports.checkConfig = checkConfig;
diff --git a/node_modules/genius-lyrics/dist/index.d.ts b/node_modules/genius-lyrics/dist/index.d.ts
index f750b8a..f762f2b 100644
--- a/node_modules/genius-lyrics/dist/index.d.ts
+++ b/node_modules/genius-lyrics/dist/index.d.ts
@@ -1,33 +1,33 @@
-import { Client } from "./Client";
-import { SongsClient } from "./Songs/Client";
-import { ArtistsClient } from "./Artists/Client";
-import { Song } from "./Songs/Song";
-import { Artist } from "./Artists/Artist";
-import { Album } from "./Albums/Album";
-import { Constants, Config } from "./Constants";
-import * as Utils from "./Utils";
-declare const version: string;
-export { Client, SongsClient, ArtistsClient, Song, Artist, Album, Constants, Config, Utils, version, };
-declare const _default: {
- Client: typeof Client;
- SongsClient: typeof SongsClient;
- ArtistsClient: typeof ArtistsClient;
- Song: typeof Song;
- Artist: typeof Artist;
- Album: typeof Album;
- Constants: {
- BASE_URL: string;
- UN_BASE_URL: string;
- ARTIST_SORTS: string[];
- DEF_USER_AGENT: string;
- REQUIRES_KEY: string;
- INV_RES_OBJ: string;
- INV_CONFIG_OBJ: string;
- INV_TOKEN: string;
- NO_RESULT: string;
- ERR_W_MSG: (err: any, msg: any) => string;
- };
- Utils: typeof Utils;
- version: string;
-};
-export default _default;
+import { Client } from "./Client";
+import { SongsClient } from "./Songs/Client";
+import { ArtistsClient } from "./Artists/Client";
+import { Song } from "./Songs/Song";
+import { Artist } from "./Artists/Artist";
+import { Album } from "./Albums/Album";
+import { Constants, Config } from "./Constants";
+import * as Utils from "./Utils";
+declare const version: string;
+export { Client, SongsClient, ArtistsClient, Song, Artist, Album, Constants, Config, Utils, version, };
+declare const _default: {
+ Client: typeof Client;
+ SongsClient: typeof SongsClient;
+ ArtistsClient: typeof ArtistsClient;
+ Song: typeof Song;
+ Artist: typeof Artist;
+ Album: typeof Album;
+ Constants: {
+ BASE_URL: string;
+ UN_BASE_URL: string;
+ ARTIST_SORTS: string[];
+ DEF_USER_AGENT: string;
+ REQUIRES_KEY: string;
+ INV_RES_OBJ: string;
+ INV_CONFIG_OBJ: string;
+ INV_TOKEN: string;
+ NO_RESULT: string;
+ ERR_W_MSG: (err: any, msg: any) => string;
+ };
+ Utils: typeof Utils;
+ version: string;
+};
+export default _default;
diff --git a/node_modules/genius-lyrics/dist/index.js b/node_modules/genius-lyrics/dist/index.js
index e230919..a970f08 100644
--- a/node_modules/genius-lyrics/dist/index.js
+++ b/node_modules/genius-lyrics/dist/index.js
@@ -1,51 +1,51 @@
-"use strict";
-var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
- if (k2 === undefined) k2 = k;
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
-}) : (function(o, m, k, k2) {
- if (k2 === undefined) k2 = k;
- o[k2] = m[k];
-}));
-var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
- Object.defineProperty(o, "default", { enumerable: true, value: v });
-}) : function(o, v) {
- o["default"] = v;
-});
-var __importStar = (this && this.__importStar) || function (mod) {
- if (mod && mod.__esModule) return mod;
- var result = {};
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
- __setModuleDefault(result, mod);
- return result;
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.version = exports.Utils = exports.Constants = exports.Album = exports.Artist = exports.Song = exports.ArtistsClient = exports.SongsClient = exports.Client = void 0;
-const Client_1 = require("./Client");
-Object.defineProperty(exports, "Client", { enumerable: true, get: function () { return Client_1.Client; } });
-const Client_2 = require("./Songs/Client");
-Object.defineProperty(exports, "SongsClient", { enumerable: true, get: function () { return Client_2.SongsClient; } });
-const Client_3 = require("./Artists/Client");
-Object.defineProperty(exports, "ArtistsClient", { enumerable: true, get: function () { return Client_3.ArtistsClient; } });
-const Song_1 = require("./Songs/Song");
-Object.defineProperty(exports, "Song", { enumerable: true, get: function () { return Song_1.Song; } });
-const Artist_1 = require("./Artists/Artist");
-Object.defineProperty(exports, "Artist", { enumerable: true, get: function () { return Artist_1.Artist; } });
-const Album_1 = require("./Albums/Album");
-Object.defineProperty(exports, "Album", { enumerable: true, get: function () { return Album_1.Album; } });
-const Constants_1 = require("./Constants");
-Object.defineProperty(exports, "Constants", { enumerable: true, get: function () { return Constants_1.Constants; } });
-const Utils = __importStar(require("./Utils"));
-exports.Utils = Utils;
-const version = require("../package.json").version;
-exports.version = version;
-exports.default = {
- Client: Client_1.Client,
- SongsClient: Client_2.SongsClient,
- ArtistsClient: Client_3.ArtistsClient,
- Song: Song_1.Song,
- Artist: Artist_1.Artist,
- Album: Album_1.Album,
- Constants: Constants_1.Constants,
- Utils,
- version,
-};
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.version = exports.Utils = exports.Constants = exports.Album = exports.Artist = exports.Song = exports.ArtistsClient = exports.SongsClient = exports.Client = void 0;
+const Client_1 = require("./Client");
+Object.defineProperty(exports, "Client", { enumerable: true, get: function () { return Client_1.Client; } });
+const Client_2 = require("./Songs/Client");
+Object.defineProperty(exports, "SongsClient", { enumerable: true, get: function () { return Client_2.SongsClient; } });
+const Client_3 = require("./Artists/Client");
+Object.defineProperty(exports, "ArtistsClient", { enumerable: true, get: function () { return Client_3.ArtistsClient; } });
+const Song_1 = require("./Songs/Song");
+Object.defineProperty(exports, "Song", { enumerable: true, get: function () { return Song_1.Song; } });
+const Artist_1 = require("./Artists/Artist");
+Object.defineProperty(exports, "Artist", { enumerable: true, get: function () { return Artist_1.Artist; } });
+const Album_1 = require("./Albums/Album");
+Object.defineProperty(exports, "Album", { enumerable: true, get: function () { return Album_1.Album; } });
+const Constants_1 = require("./Constants");
+Object.defineProperty(exports, "Constants", { enumerable: true, get: function () { return Constants_1.Constants; } });
+const Utils = __importStar(require("./Utils"));
+exports.Utils = Utils;
+const version = require("../package.json").version;
+exports.version = version;
+exports.default = {
+ Client: Client_1.Client,
+ SongsClient: Client_2.SongsClient,
+ ArtistsClient: Client_3.ArtistsClient,
+ Song: Song_1.Song,
+ Artist: Artist_1.Artist,
+ Album: Album_1.Album,
+ Constants: Constants_1.Constants,
+ Utils,
+ version,
+};
diff --git a/node_modules/genius-lyrics/package.json b/node_modules/genius-lyrics/package.json
index 842c336..350ee84 100644
--- a/node_modules/genius-lyrics/package.json
+++ b/node_modules/genius-lyrics/package.json
@@ -1,44 +1,44 @@
-{
- "name": "genius-lyrics",
- "version": "4.3.5",
- "description": "Fetches Lyrics from Genius at Ease.",
- "main": "./dist/index.js",
- "files": [
- "dist"
- ],
- "scripts": {
- "build": "node ./scripts/build && tsc",
- "docs": "typedoc && node ./scripts/docs",
- "test": "ava --verbose"
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/zyrouge/genius-lyrics.git"
- },
- "author": "ZYROUGE",
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/zyrouge/genius-lyrics/issues"
- },
- "homepage": "https://genius-lyrics.js.org",
- "dependencies": {
- "cheerio": "^1.0.0-rc.9",
- "got": "^11.8.2"
- },
- "devDependencies": {
- "ava": "^3.15.0",
- "ts-node": "^9.1.1",
- "typedoc": "^0.22.5",
- "typedoc-plugin-missing-exports": "^0.22.3",
- "typescript": "^4.4.4"
- },
- "keywords": [
- "lyrics",
- "genius",
- "genius-lyrics",
- "lyrics-api",
- "discord-lyrics",
- "lyrics-genius",
- "genius-parser"
- ]
-}
+{
+ "name": "genius-lyrics",
+ "version": "4.3.5",
+ "description": "Fetches Lyrics from Genius at Ease.",
+ "main": "./dist/index.js",
+ "files": [
+ "dist"
+ ],
+ "scripts": {
+ "build": "node ./scripts/build && tsc",
+ "docs": "typedoc && node ./scripts/docs",
+ "test": "ava --verbose"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/zyrouge/genius-lyrics.git"
+ },
+ "author": "ZYROUGE",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/zyrouge/genius-lyrics/issues"
+ },
+ "homepage": "https://genius-lyrics.js.org",
+ "dependencies": {
+ "cheerio": "^1.0.0-rc.9",
+ "got": "^11.8.2"
+ },
+ "devDependencies": {
+ "ava": "^3.15.0",
+ "ts-node": "^9.1.1",
+ "typedoc": "^0.22.5",
+ "typedoc-plugin-missing-exports": "^0.22.3",
+ "typescript": "^4.4.4"
+ },
+ "keywords": [
+ "lyrics",
+ "genius",
+ "genius-lyrics",
+ "lyrics-api",
+ "discord-lyrics",
+ "lyrics-genius",
+ "genius-parser"
+ ]
+}
diff --git a/node_modules/tslib/CopyrightNotice.txt b/node_modules/tslib/CopyrightNotice.txt
index 2e4a05c..3d4c823 100644
--- a/node_modules/tslib/CopyrightNotice.txt
+++ b/node_modules/tslib/CopyrightNotice.txt
@@ -1,15 +1,15 @@
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */
-
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+
diff --git a/node_modules/tslib/LICENSE.txt b/node_modules/tslib/LICENSE.txt
index fa7d1bd..bfe6430 100644
--- a/node_modules/tslib/LICENSE.txt
+++ b/node_modules/tslib/LICENSE.txt
@@ -1,12 +1,12 @@
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE. \ No newline at end of file
diff --git a/node_modules/tslib/README.md b/node_modules/tslib/README.md
index d5b137d..72ff8e7 100644
--- a/node_modules/tslib/README.md
+++ b/node_modules/tslib/README.md
@@ -1,164 +1,164 @@
-# tslib
-
-This is a runtime library for [TypeScript](http://www.typescriptlang.org/) that contains all of the TypeScript helper functions.
-
-This library is primarily used by the `--importHelpers` flag in TypeScript.
-When using `--importHelpers`, a module that uses helper functions like `__extends` and `__assign` in the following emitted file:
-
-```ts
-var __assign = (this && this.__assign) || Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
-};
-exports.x = {};
-exports.y = __assign({}, exports.x);
-
-```
-
-will instead be emitted as something like the following:
-
-```ts
-var tslib_1 = require("tslib");
-exports.x = {};
-exports.y = tslib_1.__assign({}, exports.x);
-```
-
-Because this can avoid duplicate declarations of things like `__extends`, `__assign`, etc., this means delivering users smaller files on average, as well as less runtime overhead.
-For optimized bundles with TypeScript, you should absolutely consider using `tslib` and `--importHelpers`.
-
-# Installing
-
-For the latest stable version, run:
-
-## npm
-
-```sh
-# TypeScript 3.9.2 or later
-npm install tslib
-
-# TypeScript 3.8.4 or earlier
-npm install tslib@^1
-
-# TypeScript 2.3.2 or earlier
-npm install tslib@1.6.1
-```
-
-## yarn
-
-```sh
-# TypeScript 3.9.2 or later
-yarn add tslib
-
-# TypeScript 3.8.4 or earlier
-yarn add tslib@^1
-
-# TypeScript 2.3.2 or earlier
-yarn add tslib@1.6.1
-```
-
-## bower
-
-```sh
-# TypeScript 3.9.2 or later
-bower install tslib
-
-# TypeScript 3.8.4 or earlier
-bower install tslib@^1
-
-# TypeScript 2.3.2 or earlier
-bower install tslib@1.6.1
-```
-
-## JSPM
-
-```sh
-# TypeScript 3.9.2 or later
-jspm install tslib
-
-# TypeScript 3.8.4 or earlier
-jspm install tslib@^1
-
-# TypeScript 2.3.2 or earlier
-jspm install tslib@1.6.1
-```
-
-# Usage
-
-Set the `importHelpers` compiler option on the command line:
-
-```
-tsc --importHelpers file.ts
-```
-
-or in your tsconfig.json:
-
-```json
-{
- "compilerOptions": {
- "importHelpers": true
- }
-}
-```
-
-#### For bower and JSPM users
-
-You will need to add a `paths` mapping for `tslib`, e.g. For Bower users:
-
-```json
-{
- "compilerOptions": {
- "module": "amd",
- "importHelpers": true,
- "baseUrl": "./",
- "paths": {
- "tslib" : ["bower_components/tslib/tslib.d.ts"]
- }
- }
-}
-```
-
-For JSPM users:
-
-```json
-{
- "compilerOptions": {
- "module": "system",
- "importHelpers": true,
- "baseUrl": "./",
- "paths": {
- "tslib" : ["jspm_packages/npm/tslib@2.x.y/tslib.d.ts"]
- }
- }
-}
-```
-
-## Deployment
-
-- Choose your new version number
-- Set it in `package.json` and `bower.json`
-- Create a tag: `git tag [version]`
-- Push the tag: `git push --tags`
-- Create a [release in GitHub](https://github.com/microsoft/tslib/releases)
-- Run the [publish to npm](https://github.com/microsoft/tslib/actions?query=workflow%3A%22Publish+to+NPM%22) workflow
-
-Done.
-
-# Contribute
-
-There are many ways to [contribute](https://github.com/Microsoft/TypeScript/blob/master/CONTRIBUTING.md) to TypeScript.
-
-* [Submit bugs](https://github.com/Microsoft/TypeScript/issues) and help us verify fixes as they are checked in.
-* Review the [source code changes](https://github.com/Microsoft/TypeScript/pulls).
-* Engage with other TypeScript users and developers on [StackOverflow](http://stackoverflow.com/questions/tagged/typescript).
-* Join the [#typescript](http://twitter.com/#!/search/realtime/%23typescript) discussion on Twitter.
-* [Contribute bug fixes](https://github.com/Microsoft/TypeScript/blob/master/CONTRIBUTING.md).
-
-# Documentation
-
-* [Quick tutorial](http://www.typescriptlang.org/Tutorial)
-* [Programming handbook](http://www.typescriptlang.org/Handbook)
-* [Homepage](http://www.typescriptlang.org/)
+# tslib
+
+This is a runtime library for [TypeScript](http://www.typescriptlang.org/) that contains all of the TypeScript helper functions.
+
+This library is primarily used by the `--importHelpers` flag in TypeScript.
+When using `--importHelpers`, a module that uses helper functions like `__extends` and `__assign` in the following emitted file:
+
+```ts
+var __assign = (this && this.__assign) || Object.assign || function(t) {
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
+ s = arguments[i];
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
+ t[p] = s[p];
+ }
+ return t;
+};
+exports.x = {};
+exports.y = __assign({}, exports.x);
+
+```
+
+will instead be emitted as something like the following:
+
+```ts
+var tslib_1 = require("tslib");
+exports.x = {};
+exports.y = tslib_1.__assign({}, exports.x);
+```
+
+Because this can avoid duplicate declarations of things like `__extends`, `__assign`, etc., this means delivering users smaller files on average, as well as less runtime overhead.
+For optimized bundles with TypeScript, you should absolutely consider using `tslib` and `--importHelpers`.
+
+# Installing
+
+For the latest stable version, run:
+
+## npm
+
+```sh
+# TypeScript 3.9.2 or later
+npm install tslib
+
+# TypeScript 3.8.4 or earlier
+npm install tslib@^1
+
+# TypeScript 2.3.2 or earlier
+npm install tslib@1.6.1
+```
+
+## yarn
+
+```sh
+# TypeScript 3.9.2 or later
+yarn add tslib
+
+# TypeScript 3.8.4 or earlier
+yarn add tslib@^1
+
+# TypeScript 2.3.2 or earlier
+yarn add tslib@1.6.1
+```
+
+## bower
+
+```sh
+# TypeScript 3.9.2 or later
+bower install tslib
+
+# TypeScript 3.8.4 or earlier
+bower install tslib@^1
+
+# TypeScript 2.3.2 or earlier
+bower install tslib@1.6.1
+```
+
+## JSPM
+
+```sh
+# TypeScript 3.9.2 or later
+jspm install tslib
+
+# TypeScript 3.8.4 or earlier
+jspm install tslib@^1
+
+# TypeScript 2.3.2 or earlier
+jspm install tslib@1.6.1
+```
+
+# Usage
+
+Set the `importHelpers` compiler option on the command line:
+
+```
+tsc --importHelpers file.ts
+```
+
+or in your tsconfig.json:
+
+```json
+{
+ "compilerOptions": {
+ "importHelpers": true
+ }
+}
+```
+
+#### For bower and JSPM users
+
+You will need to add a `paths` mapping for `tslib`, e.g. For Bower users:
+
+```json
+{
+ "compilerOptions": {
+ "module": "amd",
+ "importHelpers": true,
+ "baseUrl": "./",
+ "paths": {
+ "tslib" : ["bower_components/tslib/tslib.d.ts"]
+ }
+ }
+}
+```
+
+For JSPM users:
+
+```json
+{
+ "compilerOptions": {
+ "module": "system",
+ "importHelpers": true,
+ "baseUrl": "./",
+ "paths": {
+ "tslib" : ["jspm_packages/npm/tslib@2.x.y/tslib.d.ts"]
+ }
+ }
+}
+```
+
+## Deployment
+
+- Choose your new version number
+- Set it in `package.json` and `bower.json`
+- Create a tag: `git tag [version]`
+- Push the tag: `git push --tags`
+- Create a [release in GitHub](https://github.com/microsoft/tslib/releases)
+- Run the [publish to npm](https://github.com/microsoft/tslib/actions?query=workflow%3A%22Publish+to+NPM%22) workflow
+
+Done.
+
+# Contribute
+
+There are many ways to [contribute](https://github.com/Microsoft/TypeScript/blob/master/CONTRIBUTING.md) to TypeScript.
+
+* [Submit bugs](https://github.com/Microsoft/TypeScript/issues) and help us verify fixes as they are checked in.
+* Review the [source code changes](https://github.com/Microsoft/TypeScript/pulls).
+* Engage with other TypeScript users and developers on [StackOverflow](http://stackoverflow.com/questions/tagged/typescript).
+* Join the [#typescript](http://twitter.com/#!/search/realtime/%23typescript) discussion on Twitter.
+* [Contribute bug fixes](https://github.com/Microsoft/TypeScript/blob/master/CONTRIBUTING.md).
+
+# Documentation
+
+* [Quick tutorial](http://www.typescriptlang.org/Tutorial)
+* [Programming handbook](http://www.typescriptlang.org/Handbook)
+* [Homepage](http://www.typescriptlang.org/)
diff --git a/node_modules/tslib/modules/index.js b/node_modules/tslib/modules/index.js
index 75a89c5..c5afe4f 100644
--- a/node_modules/tslib/modules/index.js
+++ b/node_modules/tslib/modules/index.js
@@ -1,53 +1,53 @@
-import tslib from '../tslib.js';
-const {
- __extends,
- __assign,
- __rest,
- __decorate,
- __param,
- __metadata,
- __awaiter,
- __generator,
- __exportStar,
- __createBinding,
- __values,
- __read,
- __spread,
- __spreadArrays,
- __spreadArray,
- __await,
- __asyncGenerator,
- __asyncDelegator,
- __asyncValues,
- __makeTemplateObject,
- __importStar,
- __importDefault,
- __classPrivateFieldGet,
- __classPrivateFieldSet,
-} = tslib;
-export {
- __extends,
- __assign,
- __rest,
- __decorate,
- __param,
- __metadata,
- __awaiter,
- __generator,
- __exportStar,
- __createBinding,
- __values,
- __read,
- __spread,
- __spreadArrays,
- __spreadArray,
- __await,
- __asyncGenerator,
- __asyncDelegator,
- __asyncValues,
- __makeTemplateObject,
- __importStar,
- __importDefault,
- __classPrivateFieldGet,
- __classPrivateFieldSet,
-};
+import tslib from '../tslib.js';
+const {
+ __extends,
+ __assign,
+ __rest,
+ __decorate,
+ __param,
+ __metadata,
+ __awaiter,
+ __generator,
+ __exportStar,
+ __createBinding,
+ __values,
+ __read,
+ __spread,
+ __spreadArrays,
+ __spreadArray,
+ __await,
+ __asyncGenerator,
+ __asyncDelegator,
+ __asyncValues,
+ __makeTemplateObject,
+ __importStar,
+ __importDefault,
+ __classPrivateFieldGet,
+ __classPrivateFieldSet,
+} = tslib;
+export {
+ __extends,
+ __assign,
+ __rest,
+ __decorate,
+ __param,
+ __metadata,
+ __awaiter,
+ __generator,
+ __exportStar,
+ __createBinding,
+ __values,
+ __read,
+ __spread,
+ __spreadArrays,
+ __spreadArray,
+ __await,
+ __asyncGenerator,
+ __asyncDelegator,
+ __asyncValues,
+ __makeTemplateObject,
+ __importStar,
+ __importDefault,
+ __classPrivateFieldGet,
+ __classPrivateFieldSet,
+};
diff --git a/node_modules/tslib/modules/package.json b/node_modules/tslib/modules/package.json
index 96ae6e5..aafa0e4 100644
--- a/node_modules/tslib/modules/package.json
+++ b/node_modules/tslib/modules/package.json
@@ -1,3 +1,3 @@
-{
- "type": "module"
+{
+ "type": "module"
} \ No newline at end of file
diff --git a/node_modules/tslib/tslib.d.ts b/node_modules/tslib/tslib.d.ts
index a99569f..76e89d1 100644
--- a/node_modules/tslib/tslib.d.ts
+++ b/node_modules/tslib/tslib.d.ts
@@ -1,130 +1,130 @@
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */
-export declare function __extends(d: Function, b: Function): void;
-export declare function __assign(t: any, ...sources: any[]): any;
-export declare function __rest(t: any, propertyNames: (string | symbol)[]): any;
-export declare function __decorate(decorators: Function[], target: any, key?: string | symbol, desc?: any): any;
-export declare function __param(paramIndex: number, decorator: Function): Function;
-export declare function __metadata(metadataKey: any, metadataValue: any): Function;
-export declare function __awaiter(thisArg: any, _arguments: any, P: Function, generator: Function): any;
-export declare function __generator(thisArg: any, body: Function): any;
-export declare function __exportStar(m: any, o: any): void;
-export declare function __values(o: any): any;
-export declare function __read(o: any, n?: number): any[];
-/** @deprecated since TypeScript 4.2 */
-export declare function __spread(...args: any[][]): any[];
-/** @deprecated since TypeScript 4.2 */
-export declare function __spreadArrays(...args: any[][]): any[];
-export declare function __spreadArray(to: any[], from: any[], pack?: boolean): any[];
-export declare function __await(v: any): any;
-export declare function __asyncGenerator(thisArg: any, _arguments: any, generator: Function): any;
-export declare function __asyncDelegator(o: any): any;
-export declare function __asyncValues(o: any): any;
-export declare function __makeTemplateObject(cooked: string[], raw: string[]): TemplateStringsArray;
-export declare function __importStar<T>(mod: T): T;
-export declare function __importDefault<T>(mod: T): T | { default: T };
-/**
- * Reading from a private instance field
- */
-export declare function __classPrivateFieldGet<T extends object, V>(
- receiver: T,
- state: { has(o: T): boolean, get(o: T): V | undefined },
- kind?: "f"
-): V;
-/**
- * Reading from a private static field
- */
-export declare function __classPrivateFieldGet<T extends new (...args: any[]) => unknown, V>(
- receiver: T,
- state: T,
- kind: "f",
- f: { value: V }
-): V;
-/**
- * Reading from a private instance get accessor
- */
-export declare function __classPrivateFieldGet<T extends object, V>(
- receiver: T,
- state: { has(o: T): boolean },
- kind: "a",
- f: () => V
-): V;
-/**
- * Reading from a private static get accessor
- */
-export declare function __classPrivateFieldGet<T extends new (...args: any[]) => unknown, V>(
- receiver: T,
- state: T,
- kind: "a",
- f: () => V
-): V;
-/**
- * Reading from a private instance method
- */
-export declare function __classPrivateFieldGet<T extends object, V extends (...args: any[]) => unknown>(
- receiver: T,
- state: { has(o: T): boolean },
- kind: "m",
- f: V
-): V;
-/**
- * Reading from a private static method
- */
-export declare function __classPrivateFieldGet<T extends new (...args: any[]) => unknown, V extends (...args: any[]) => unknown>(
- receiver: T,
- state: T,
- kind: "m",
- f: V
-): V;
-/**
- * Writing to a private instance field
- */
- export declare function __classPrivateFieldSet<T extends object, V>(
- receiver: T,
- state: { has(o: T): boolean, set(o: T, value: V): unknown },
- value: V,
- kind?: "f"
-): V;
-/**
- * Writing to a private static field
- */
-export declare function __classPrivateFieldSet<T extends new (...args: any[]) => unknown, V>(
- receiver: T,
- state: T,
- value: V,
- kind: "f",
- f: { value: V }
-): V;
-/**
- * Writing to a private instance set accessor
- */
-export declare function __classPrivateFieldSet<T extends object, V>(
- receiver: T,
- state: { has(o: T): boolean },
- value: V,
- kind: "a",
- f: (v: V) => void
-): V;
-/**
- * Writing to a private static set accessor
- */
-export declare function __classPrivateFieldSet<T extends new (...args: any[]) => unknown, V>(
- receiver: T,
- state: T,
- value: V,
- kind: "a",
- f: (v: V) => void
-): V;
-export declare function __createBinding(object: object, target: object, key: PropertyKey, objectKey?: PropertyKey): void;
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+export declare function __extends(d: Function, b: Function): void;
+export declare function __assign(t: any, ...sources: any[]): any;
+export declare function __rest(t: any, propertyNames: (string | symbol)[]): any;
+export declare function __decorate(decorators: Function[], target: any, key?: string | symbol, desc?: any): any;
+export declare function __param(paramIndex: number, decorator: Function): Function;
+export declare function __metadata(metadataKey: any, metadataValue: any): Function;
+export declare function __awaiter(thisArg: any, _arguments: any, P: Function, generator: Function): any;
+export declare function __generator(thisArg: any, body: Function): any;
+export declare function __exportStar(m: any, o: any): void;
+export declare function __values(o: any): any;
+export declare function __read(o: any, n?: number): any[];
+/** @deprecated since TypeScript 4.2 */
+export declare function __spread(...args: any[][]): any[];
+/** @deprecated since TypeScript 4.2 */
+export declare function __spreadArrays(...args: any[][]): any[];
+export declare function __spreadArray(to: any[], from: any[], pack?: boolean): any[];
+export declare function __await(v: any): any;
+export declare function __asyncGenerator(thisArg: any, _arguments: any, generator: Function): any;
+export declare function __asyncDelegator(o: any): any;
+export declare function __asyncValues(o: any): any;
+export declare function __makeTemplateObject(cooked: string[], raw: string[]): TemplateStringsArray;
+export declare function __importStar<T>(mod: T): T;
+export declare function __importDefault<T>(mod: T): T | { default: T };
+/**
+ * Reading from a private instance field
+ */
+export declare function __classPrivateFieldGet<T extends object, V>(
+ receiver: T,
+ state: { has(o: T): boolean, get(o: T): V | undefined },
+ kind?: "f"
+): V;
+/**
+ * Reading from a private static field
+ */
+export declare function __classPrivateFieldGet<T extends new (...args: any[]) => unknown, V>(
+ receiver: T,
+ state: T,
+ kind: "f",
+ f: { value: V }
+): V;
+/**
+ * Reading from a private instance get accessor
+ */
+export declare function __classPrivateFieldGet<T extends object, V>(
+ receiver: T,
+ state: { has(o: T): boolean },
+ kind: "a",
+ f: () => V
+): V;
+/**
+ * Reading from a private static get accessor
+ */
+export declare function __classPrivateFieldGet<T extends new (...args: any[]) => unknown, V>(
+ receiver: T,
+ state: T,
+ kind: "a",
+ f: () => V
+): V;
+/**
+ * Reading from a private instance method
+ */
+export declare function __classPrivateFieldGet<T extends object, V extends (...args: any[]) => unknown>(
+ receiver: T,
+ state: { has(o: T): boolean },
+ kind: "m",
+ f: V
+): V;
+/**
+ * Reading from a private static method
+ */
+export declare function __classPrivateFieldGet<T extends new (...args: any[]) => unknown, V extends (...args: any[]) => unknown>(
+ receiver: T,
+ state: T,
+ kind: "m",
+ f: V
+): V;
+/**
+ * Writing to a private instance field
+ */
+ export declare function __classPrivateFieldSet<T extends object, V>(
+ receiver: T,
+ state: { has(o: T): boolean, set(o: T, value: V): unknown },
+ value: V,
+ kind?: "f"
+): V;
+/**
+ * Writing to a private static field
+ */
+export declare function __classPrivateFieldSet<T extends new (...args: any[]) => unknown, V>(
+ receiver: T,
+ state: T,
+ value: V,
+ kind: "f",
+ f: { value: V }
+): V;
+/**
+ * Writing to a private instance set accessor
+ */
+export declare function __classPrivateFieldSet<T extends object, V>(
+ receiver: T,
+ state: { has(o: T): boolean },
+ value: V,
+ kind: "a",
+ f: (v: V) => void
+): V;
+/**
+ * Writing to a private static set accessor
+ */
+export declare function __classPrivateFieldSet<T extends new (...args: any[]) => unknown, V>(
+ receiver: T,
+ state: T,
+ value: V,
+ kind: "a",
+ f: (v: V) => void
+): V;
+export declare function __createBinding(object: object, target: object, key: PropertyKey, objectKey?: PropertyKey): void;
diff --git a/node_modules/tslib/tslib.es6.js b/node_modules/tslib/tslib.es6.js
index 4cec286..0c764b8 100644
--- a/node_modules/tslib/tslib.es6.js
+++ b/node_modules/tslib/tslib.es6.js
@@ -1,239 +1,239 @@
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */
-/* global Reflect, Promise */
-
-var extendStatics = function(d, b) {
- extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
- return extendStatics(d, b);
-};
-
-export function __extends(d, b) {
- if (typeof b !== "function" && b !== null)
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-}
-
-export var __assign = function() {
- __assign = Object.assign || function __assign(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
- }
- return t;
- }
- return __assign.apply(this, arguments);
-}
-
-export function __rest(s, e) {
- var t = {};
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
- t[p] = s[p];
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
- t[p[i]] = s[p[i]];
- }
- return t;
-}
-
-export function __decorate(decorators, target, key, desc) {
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
- return c > 3 && r && Object.defineProperty(target, key, r), r;
-}
-
-export function __param(paramIndex, decorator) {
- return function (target, key) { decorator(target, key, paramIndex); }
-}
-
-export function __metadata(metadataKey, metadataValue) {
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
-}
-
-export function __awaiter(thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-}
-
-export function __generator(thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
- function verb(n) { return function (v) { return step([n, v]); }; }
- function step(op) {
- if (f) throw new TypeError("Generator is already executing.");
- while (_) try {
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
- if (y = 0, t) op = [op[0] & 2, t.value];
- switch (op[0]) {
- case 0: case 1: t = op; break;
- case 4: _.label++; return { value: op[1], done: false };
- case 5: _.label++; y = op[1]; op = [0]; continue;
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
- default:
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
- if (t[2]) _.ops.pop();
- _.trys.pop(); continue;
- }
- op = body.call(thisArg, _);
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
- }
-}
-
-export var __createBinding = Object.create ? (function(o, m, k, k2) {
- if (k2 === undefined) k2 = k;
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
-}) : (function(o, m, k, k2) {
- if (k2 === undefined) k2 = k;
- o[k2] = m[k];
-});
-
-export function __exportStar(m, o) {
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
-}
-
-export function __values(o) {
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
- if (m) return m.call(o);
- if (o && typeof o.length === "number") return {
- next: function () {
- if (o && i >= o.length) o = void 0;
- return { value: o && o[i++], done: !o };
- }
- };
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
-}
-
-export function __read(o, n) {
- var m = typeof Symbol === "function" && o[Symbol.iterator];
- if (!m) return o;
- var i = m.call(o), r, ar = [], e;
- try {
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
- }
- catch (error) { e = { error: error }; }
- finally {
- try {
- if (r && !r.done && (m = i["return"])) m.call(i);
- }
- finally { if (e) throw e.error; }
- }
- return ar;
-}
-
-/** @deprecated */
-export function __spread() {
- for (var ar = [], i = 0; i < arguments.length; i++)
- ar = ar.concat(__read(arguments[i]));
- return ar;
-}
-
-/** @deprecated */
-export function __spreadArrays() {
- for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
- for (var r = Array(s), k = 0, i = 0; i < il; i++)
- for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
- r[k] = a[j];
- return r;
-}
-
-export function __spreadArray(to, from, pack) {
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
- if (ar || !(i in from)) {
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
- ar[i] = from[i];
- }
- }
- return to.concat(ar || Array.prototype.slice.call(from));
-}
-
-export function __await(v) {
- return this instanceof __await ? (this.v = v, this) : new __await(v);
-}
-
-export function __asyncGenerator(thisArg, _arguments, generator) {
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
- var g = generator.apply(thisArg, _arguments || []), i, q = [];
- return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
- function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
- function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
- function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
- function fulfill(value) { resume("next", value); }
- function reject(value) { resume("throw", value); }
- function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
-}
-
-export function __asyncDelegator(o) {
- var i, p;
- return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
- function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
-}
-
-export function __asyncValues(o) {
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
- var m = o[Symbol.asyncIterator], i;
- return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
- function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
- function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
-}
-
-export function __makeTemplateObject(cooked, raw) {
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
- return cooked;
-};
-
-var __setModuleDefault = Object.create ? (function(o, v) {
- Object.defineProperty(o, "default", { enumerable: true, value: v });
-}) : function(o, v) {
- o["default"] = v;
-};
-
-export function __importStar(mod) {
- if (mod && mod.__esModule) return mod;
- var result = {};
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
- __setModuleDefault(result, mod);
- return result;
-}
-
-export function __importDefault(mod) {
- return (mod && mod.__esModule) ? mod : { default: mod };
-}
-
-export function __classPrivateFieldGet(receiver, state, kind, f) {
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
-}
-
-export function __classPrivateFieldSet(receiver, state, value, kind, f) {
- if (kind === "m") throw new TypeError("Private method is not writable");
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
-}
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+/* global Reflect, Promise */
+
+var extendStatics = function(d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+};
+
+export function __extends(d, b) {
+ if (typeof b !== "function" && b !== null)
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+}
+
+export var __assign = function() {
+ __assign = Object.assign || function __assign(t) {
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
+ s = arguments[i];
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+ }
+ return t;
+ }
+ return __assign.apply(this, arguments);
+}
+
+export function __rest(s, e) {
+ var t = {};
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+ t[p] = s[p];
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+ t[p[i]] = s[p[i]];
+ }
+ return t;
+}
+
+export function __decorate(decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+}
+
+export function __param(paramIndex, decorator) {
+ return function (target, key) { decorator(target, key, paramIndex); }
+}
+
+export function __metadata(metadataKey, metadataValue) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
+}
+
+export function __awaiter(thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+}
+
+export function __generator(thisArg, body) {
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+ function verb(n) { return function (v) { return step([n, v]); }; }
+ function step(op) {
+ if (f) throw new TypeError("Generator is already executing.");
+ while (_) try {
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+ if (y = 0, t) op = [op[0] & 2, t.value];
+ switch (op[0]) {
+ case 0: case 1: t = op; break;
+ case 4: _.label++; return { value: op[1], done: false };
+ case 5: _.label++; y = op[1]; op = [0]; continue;
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
+ default:
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+ if (t[2]) _.ops.pop();
+ _.trys.pop(); continue;
+ }
+ op = body.call(thisArg, _);
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+ }
+}
+
+export var __createBinding = Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+});
+
+export function __exportStar(m, o) {
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
+}
+
+export function __values(o) {
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
+ if (m) return m.call(o);
+ if (o && typeof o.length === "number") return {
+ next: function () {
+ if (o && i >= o.length) o = void 0;
+ return { value: o && o[i++], done: !o };
+ }
+ };
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
+}
+
+export function __read(o, n) {
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
+ if (!m) return o;
+ var i = m.call(o), r, ar = [], e;
+ try {
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
+ }
+ catch (error) { e = { error: error }; }
+ finally {
+ try {
+ if (r && !r.done && (m = i["return"])) m.call(i);
+ }
+ finally { if (e) throw e.error; }
+ }
+ return ar;
+}
+
+/** @deprecated */
+export function __spread() {
+ for (var ar = [], i = 0; i < arguments.length; i++)
+ ar = ar.concat(__read(arguments[i]));
+ return ar;
+}
+
+/** @deprecated */
+export function __spreadArrays() {
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
+ for (var r = Array(s), k = 0, i = 0; i < il; i++)
+ for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+ r[k] = a[j];
+ return r;
+}
+
+export function __spreadArray(to, from, pack) {
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
+ if (ar || !(i in from)) {
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
+ ar[i] = from[i];
+ }
+ }
+ return to.concat(ar || Array.prototype.slice.call(from));
+}
+
+export function __await(v) {
+ return this instanceof __await ? (this.v = v, this) : new __await(v);
+}
+
+export function __asyncGenerator(thisArg, _arguments, generator) {
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+ var g = generator.apply(thisArg, _arguments || []), i, q = [];
+ return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
+ function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
+ function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
+ function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
+ function fulfill(value) { resume("next", value); }
+ function reject(value) { resume("throw", value); }
+ function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
+}
+
+export function __asyncDelegator(o) {
+ var i, p;
+ return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
+ function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
+}
+
+export function __asyncValues(o) {
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+ var m = o[Symbol.asyncIterator], i;
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
+ function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
+ function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
+}
+
+export function __makeTemplateObject(cooked, raw) {
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
+ return cooked;
+};
+
+var __setModuleDefault = Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+};
+
+export function __importStar(mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+}
+
+export function __importDefault(mod) {
+ return (mod && mod.__esModule) ? mod : { default: mod };
+}
+
+export function __classPrivateFieldGet(receiver, state, kind, f) {
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
+}
+
+export function __classPrivateFieldSet(receiver, state, value, kind, f) {
+ if (kind === "m") throw new TypeError("Private method is not writable");
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
+}
diff --git a/node_modules/tslib/tslib.js b/node_modules/tslib/tslib.js
index fab4f65..422d250 100644
--- a/node_modules/tslib/tslib.js
+++ b/node_modules/tslib/tslib.js
@@ -1,306 +1,306 @@
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */
-/* global global, define, System, Reflect, Promise */
-var __extends;
-var __assign;
-var __rest;
-var __decorate;
-var __param;
-var __metadata;
-var __awaiter;
-var __generator;
-var __exportStar;
-var __values;
-var __read;
-var __spread;
-var __spreadArrays;
-var __spreadArray;
-var __await;
-var __asyncGenerator;
-var __asyncDelegator;
-var __asyncValues;
-var __makeTemplateObject;
-var __importStar;
-var __importDefault;
-var __classPrivateFieldGet;
-var __classPrivateFieldSet;
-var __createBinding;
-(function (factory) {
- var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
- if (typeof define === "function" && define.amd) {
- define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
- }
- else if (typeof module === "object" && typeof module.exports === "object") {
- factory(createExporter(root, createExporter(module.exports)));
- }
- else {
- factory(createExporter(root));
- }
- function createExporter(exports, previous) {
- if (exports !== root) {
- if (typeof Object.create === "function") {
- Object.defineProperty(exports, "__esModule", { value: true });
- }
- else {
- exports.__esModule = true;
- }
- }
- return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
- }
-})
-(function (exporter) {
- var extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
-
- __extends = function (d, b) {
- if (typeof b !== "function" && b !== null)
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
-
- __assign = Object.assign || function (t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
- }
- return t;
- };
-
- __rest = function (s, e) {
- var t = {};
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
- t[p] = s[p];
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
- t[p[i]] = s[p[i]];
- }
- return t;
- };
-
- __decorate = function (decorators, target, key, desc) {
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
- return c > 3 && r && Object.defineProperty(target, key, r), r;
- };
-
- __param = function (paramIndex, decorator) {
- return function (target, key) { decorator(target, key, paramIndex); }
- };
-
- __metadata = function (metadataKey, metadataValue) {
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
- };
-
- __awaiter = function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
- };
-
- __generator = function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
- function verb(n) { return function (v) { return step([n, v]); }; }
- function step(op) {
- if (f) throw new TypeError("Generator is already executing.");
- while (_) try {
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
- if (y = 0, t) op = [op[0] & 2, t.value];
- switch (op[0]) {
- case 0: case 1: t = op; break;
- case 4: _.label++; return { value: op[1], done: false };
- case 5: _.label++; y = op[1]; op = [0]; continue;
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
- default:
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
- if (t[2]) _.ops.pop();
- _.trys.pop(); continue;
- }
- op = body.call(thisArg, _);
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
- }
- };
-
- __exportStar = function(m, o) {
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
- };
-
- __createBinding = Object.create ? (function(o, m, k, k2) {
- if (k2 === undefined) k2 = k;
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
- }) : (function(o, m, k, k2) {
- if (k2 === undefined) k2 = k;
- o[k2] = m[k];
- });
-
- __values = function (o) {
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
- if (m) return m.call(o);
- if (o && typeof o.length === "number") return {
- next: function () {
- if (o && i >= o.length) o = void 0;
- return { value: o && o[i++], done: !o };
- }
- };
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
- };
-
- __read = function (o, n) {
- var m = typeof Symbol === "function" && o[Symbol.iterator];
- if (!m) return o;
- var i = m.call(o), r, ar = [], e;
- try {
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
- }
- catch (error) { e = { error: error }; }
- finally {
- try {
- if (r && !r.done && (m = i["return"])) m.call(i);
- }
- finally { if (e) throw e.error; }
- }
- return ar;
- };
-
- /** @deprecated */
- __spread = function () {
- for (var ar = [], i = 0; i < arguments.length; i++)
- ar = ar.concat(__read(arguments[i]));
- return ar;
- };
-
- /** @deprecated */
- __spreadArrays = function () {
- for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
- for (var r = Array(s), k = 0, i = 0; i < il; i++)
- for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
- r[k] = a[j];
- return r;
- };
-
- __spreadArray = function (to, from, pack) {
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
- if (ar || !(i in from)) {
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
- ar[i] = from[i];
- }
- }
- return to.concat(ar || Array.prototype.slice.call(from));
- };
-
- __await = function (v) {
- return this instanceof __await ? (this.v = v, this) : new __await(v);
- };
-
- __asyncGenerator = function (thisArg, _arguments, generator) {
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
- var g = generator.apply(thisArg, _arguments || []), i, q = [];
- return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
- function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
- function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
- function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
- function fulfill(value) { resume("next", value); }
- function reject(value) { resume("throw", value); }
- function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
- };
-
- __asyncDelegator = function (o) {
- var i, p;
- return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
- function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
- };
-
- __asyncValues = function (o) {
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
- var m = o[Symbol.asyncIterator], i;
- return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
- function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
- function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
- };
-
- __makeTemplateObject = function (cooked, raw) {
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
- return cooked;
- };
-
- var __setModuleDefault = Object.create ? (function(o, v) {
- Object.defineProperty(o, "default", { enumerable: true, value: v });
- }) : function(o, v) {
- o["default"] = v;
- };
-
- __importStar = function (mod) {
- if (mod && mod.__esModule) return mod;
- var result = {};
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
- __setModuleDefault(result, mod);
- return result;
- };
-
- __importDefault = function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
- };
-
- __classPrivateFieldGet = function (receiver, state, kind, f) {
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
- };
-
- __classPrivateFieldSet = function (receiver, state, value, kind, f) {
- if (kind === "m") throw new TypeError("Private method is not writable");
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
- };
-
- exporter("__extends", __extends);
- exporter("__assign", __assign);
- exporter("__rest", __rest);
- exporter("__decorate", __decorate);
- exporter("__param", __param);
- exporter("__metadata", __metadata);
- exporter("__awaiter", __awaiter);
- exporter("__generator", __generator);
- exporter("__exportStar", __exportStar);
- exporter("__createBinding", __createBinding);
- exporter("__values", __values);
- exporter("__read", __read);
- exporter("__spread", __spread);
- exporter("__spreadArrays", __spreadArrays);
- exporter("__spreadArray", __spreadArray);
- exporter("__await", __await);
- exporter("__asyncGenerator", __asyncGenerator);
- exporter("__asyncDelegator", __asyncDelegator);
- exporter("__asyncValues", __asyncValues);
- exporter("__makeTemplateObject", __makeTemplateObject);
- exporter("__importStar", __importStar);
- exporter("__importDefault", __importDefault);
- exporter("__classPrivateFieldGet", __classPrivateFieldGet);
- exporter("__classPrivateFieldSet", __classPrivateFieldSet);
-});
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+/* global global, define, System, Reflect, Promise */
+var __extends;
+var __assign;
+var __rest;
+var __decorate;
+var __param;
+var __metadata;
+var __awaiter;
+var __generator;
+var __exportStar;
+var __values;
+var __read;
+var __spread;
+var __spreadArrays;
+var __spreadArray;
+var __await;
+var __asyncGenerator;
+var __asyncDelegator;
+var __asyncValues;
+var __makeTemplateObject;
+var __importStar;
+var __importDefault;
+var __classPrivateFieldGet;
+var __classPrivateFieldSet;
+var __createBinding;
+(function (factory) {
+ var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
+ if (typeof define === "function" && define.amd) {
+ define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
+ }
+ else if (typeof module === "object" && typeof module.exports === "object") {
+ factory(createExporter(root, createExporter(module.exports)));
+ }
+ else {
+ factory(createExporter(root));
+ }
+ function createExporter(exports, previous) {
+ if (exports !== root) {
+ if (typeof Object.create === "function") {
+ Object.defineProperty(exports, "__esModule", { value: true });
+ }
+ else {
+ exports.__esModule = true;
+ }
+ }
+ return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
+ }
+})
+(function (exporter) {
+ var extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+
+ __extends = function (d, b) {
+ if (typeof b !== "function" && b !== null)
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+
+ __assign = Object.assign || function (t) {
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
+ s = arguments[i];
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+ }
+ return t;
+ };
+
+ __rest = function (s, e) {
+ var t = {};
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+ t[p] = s[p];
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+ t[p[i]] = s[p[i]];
+ }
+ return t;
+ };
+
+ __decorate = function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+
+ __param = function (paramIndex, decorator) {
+ return function (target, key) { decorator(target, key, paramIndex); }
+ };
+
+ __metadata = function (metadataKey, metadataValue) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
+ };
+
+ __awaiter = function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+ };
+
+ __generator = function (thisArg, body) {
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+ function verb(n) { return function (v) { return step([n, v]); }; }
+ function step(op) {
+ if (f) throw new TypeError("Generator is already executing.");
+ while (_) try {
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+ if (y = 0, t) op = [op[0] & 2, t.value];
+ switch (op[0]) {
+ case 0: case 1: t = op; break;
+ case 4: _.label++; return { value: op[1], done: false };
+ case 5: _.label++; y = op[1]; op = [0]; continue;
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
+ default:
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+ if (t[2]) _.ops.pop();
+ _.trys.pop(); continue;
+ }
+ op = body.call(thisArg, _);
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+ }
+ };
+
+ __exportStar = function(m, o) {
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
+ };
+
+ __createBinding = Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+ }) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+ });
+
+ __values = function (o) {
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
+ if (m) return m.call(o);
+ if (o && typeof o.length === "number") return {
+ next: function () {
+ if (o && i >= o.length) o = void 0;
+ return { value: o && o[i++], done: !o };
+ }
+ };
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
+ };
+
+ __read = function (o, n) {
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
+ if (!m) return o;
+ var i = m.call(o), r, ar = [], e;
+ try {
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
+ }
+ catch (error) { e = { error: error }; }
+ finally {
+ try {
+ if (r && !r.done && (m = i["return"])) m.call(i);
+ }
+ finally { if (e) throw e.error; }
+ }
+ return ar;
+ };
+
+ /** @deprecated */
+ __spread = function () {
+ for (var ar = [], i = 0; i < arguments.length; i++)
+ ar = ar.concat(__read(arguments[i]));
+ return ar;
+ };
+
+ /** @deprecated */
+ __spreadArrays = function () {
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
+ for (var r = Array(s), k = 0, i = 0; i < il; i++)
+ for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+ r[k] = a[j];
+ return r;
+ };
+
+ __spreadArray = function (to, from, pack) {
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
+ if (ar || !(i in from)) {
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
+ ar[i] = from[i];
+ }
+ }
+ return to.concat(ar || Array.prototype.slice.call(from));
+ };
+
+ __await = function (v) {
+ return this instanceof __await ? (this.v = v, this) : new __await(v);
+ };
+
+ __asyncGenerator = function (thisArg, _arguments, generator) {
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+ var g = generator.apply(thisArg, _arguments || []), i, q = [];
+ return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
+ function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
+ function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
+ function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
+ function fulfill(value) { resume("next", value); }
+ function reject(value) { resume("throw", value); }
+ function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
+ };
+
+ __asyncDelegator = function (o) {
+ var i, p;
+ return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
+ function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
+ };
+
+ __asyncValues = function (o) {
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+ var m = o[Symbol.asyncIterator], i;
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
+ function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
+ function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
+ };
+
+ __makeTemplateObject = function (cooked, raw) {
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
+ return cooked;
+ };
+
+ var __setModuleDefault = Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+ }) : function(o, v) {
+ o["default"] = v;
+ };
+
+ __importStar = function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+ };
+
+ __importDefault = function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+ };
+
+ __classPrivateFieldGet = function (receiver, state, kind, f) {
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
+ };
+
+ __classPrivateFieldSet = function (receiver, state, value, kind, f) {
+ if (kind === "m") throw new TypeError("Private method is not writable");
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
+ };
+
+ exporter("__extends", __extends);
+ exporter("__assign", __assign);
+ exporter("__rest", __rest);
+ exporter("__decorate", __decorate);
+ exporter("__param", __param);
+ exporter("__metadata", __metadata);
+ exporter("__awaiter", __awaiter);
+ exporter("__generator", __generator);
+ exporter("__exportStar", __exportStar);
+ exporter("__createBinding", __createBinding);
+ exporter("__values", __values);
+ exporter("__read", __read);
+ exporter("__spread", __spread);
+ exporter("__spreadArrays", __spreadArrays);
+ exporter("__spreadArray", __spreadArray);
+ exporter("__await", __await);
+ exporter("__asyncGenerator", __asyncGenerator);
+ exporter("__asyncDelegator", __asyncDelegator);
+ exporter("__asyncValues", __asyncValues);
+ exporter("__makeTemplateObject", __makeTemplateObject);
+ exporter("__importStar", __importStar);
+ exporter("__importDefault", __importDefault);
+ exporter("__classPrivateFieldGet", __classPrivateFieldGet);
+ exporter("__classPrivateFieldSet", __classPrivateFieldSet);
+});
diff --git a/youtoo b/youtoo
index eda3edc..652450d 100644
--- a/youtoo
+++ b/youtoo
@@ -1,27 +1,27 @@
-/*
- * MIT License
- *
- * Copyright (c) 2022- Minteck
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-#!/usr/bin/env node
+/*
+ * MIT License
+ *
+ * Copyright (c) 2022- Minteck
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ */
+
+#!/usr/bin/env node
require('./index.js'); \ No newline at end of file