diff --git a/README.md b/README.md index ad65543..76bb9b5 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,9 @@ The generated output file is always `scoresaber.user.js`. # Changelog +2.0.0-alpha.0 | 2023-02-10 + - Merged Rework for new ScoreSaber Website from [@ChrisJAllan](https://github.com/ChrisJAllan) + 1.12.0 | 2021-11-06 - Added smol notice when a map has a newer version on BeatSaver diff --git a/package.json b/package.json index 16077e9..4bd2ebc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "scoresaberenhanced", - "version": "1.12.0", + "version": "2.0.0-alpha.0", "description": "Adds links to beatsaver, player comparison and various other improvements", "main": "src/main.ts", "scripts": { @@ -27,21 +27,21 @@ }, "homepage": "https://github.com/Splamy/ScoreSaberEnhanced#readme", "devDependencies": { - "@rbnlffl/rollup-plugin-eslint": "2.0.0", - "@rollup/plugin-commonjs": "^21.0.1", - "@rollup/plugin-node-resolve": "^13.0.4", - "@rollup/plugin-typescript": "8.3.0", - "@typescript-eslint/eslint-plugin": "5.3.0", - "@typescript-eslint/parser": "5.3.0", - "eslint": "8.2.0", + "@rbnlffl/rollup-plugin-eslint": "4.0.0", + "@rollup/plugin-commonjs": "24.0.1", + "@rollup/plugin-node-resolve": "15.0.1", + "@rollup/plugin-typescript": "11.0.0", + "@typescript-eslint/eslint-plugin": "5.51.0", + "@typescript-eslint/parser": "5.51.0", + "eslint": "8.34.0", "gulp": "4.0.2", "gulp-concat": "2.6.1", - "gulp-replace": "1.1.3", - "rollup": "2.59.0", - "rollup-plugin-svelte": "^7.1.0", - "svelte": "^3.41.0", - "svelte-preprocess": "^4.7.4", - "tslib": "2.3.1", - "typescript": "4.4.4" + "gulp-replace": "1.1.4", + "rollup": "3.15.0", + "rollup-plugin-svelte": "7.1.2", + "svelte": "3.55.1", + "svelte-preprocess": "5.0.1", + "tslib": "2.5.0", + "typescript": "4.9.5" } } diff --git a/scoresaber.user.js b/scoresaber.user.js index 90ca8da..b09096b 100644 --- a/scoresaber.user.js +++ b/scoresaber.user.js @@ -1,6 +1,6 @@ // ==UserScript== // @name ScoreSaberEnhanced -// @version 1.12.0 +// @version 2.0.0-alpha.0 // @description Adds links to beatsaver, player comparison and various other improvements // @author Splamy, TheAsuro // @namespace https://scoresaber.com @@ -26,1195 +26,887 @@ (function () { 'use strict'; - class Global { - } - Global.debug = false; - Global.scoresaber_link = "https://scoresaber.com"; - Global.beatsaver_link = "https://beatsaver.com/maps/"; - Global.bsaber_songs_link = "https://bsaber.com/songs/"; - Global.song_hash_reg = /\/([\da-zA-Z]{40})\.png/; - Global.score_reg = /(score|accuracy):\s*([\d.,]+)%?\s*(\(([\w,]*)\))?/; - Global.leaderboard_reg = /leaderboard\/(\d+)/; - Global.leaderboard_rank_reg = /#([\d,]+)/; - Global.leaderboard_country_reg = /(\?|&)country=(\w+)$/; - Global.user_reg = /u\/(\d+)/; - Global.script_version_reg = /\/\/\s*@version\s+([\d.]+)/; - Global.user_per_page_global_leaderboard = 50; - Global.user_per_page_song_leaderboard = 12; + class Global { + } + Global.debug = false; + Global.scoresaber_link = "https://scoresaber.com"; + Global.beatsaver_link = "https://beatsaver.com/maps/"; + Global.bsaber_songs_link = "https://bsaber.com/songs/"; + Global.song_hash_reg = /\/([\da-zA-Z]{40})\.png/; + Global.score_reg = /(score|accuracy):\s*([\d.,]+)%?\s*(\(([\w,]*)\))?/; + Global.leaderboard_reg = /leaderboard\/(\d+)/; + Global.leaderboard_rank_reg = /#([\d,]+)/; + Global.leaderboard_country_reg = /(\?|&)country=(\w+)$/; + Global.user_reg = /u\/(\d+)/; + Global.script_version_reg = /\/\/\s*@version\s+([\d.]+)/; + Global.user_per_page_global_leaderboard = 50; + Global.user_per_page_song_leaderboard = 12; Global.pp_weighting_factor = 0.965; - function create(tag, attrs, ...children) { - if (tag === undefined) - throw new Error("'tag' not defined"); - const ele = document.createElement(tag); - if (attrs) { - for (const [attrName, attrValue] of Object.entries(attrs)) { - if (attrName === "style") { - for (const [styleName, styleValue] of Object.entries(attrs.style)) { - ele.style[styleName] = styleValue; - } - } - else if (attrName === "class") { - if (typeof attrs.class === "string") { - const classes = attrs.class.split(/ /g).filter(c => c.trim().length > 0); - ele.classList.add(...classes); - } - else { - ele.classList.add(...attrs.class); - } - } - else if (attrName === "for") { - ele.htmlFor = attrValue; - } - else if (attrName === "selected") { - ele.selected = (attrValue ? "selected" : undefined); - } - else if (attrName === "disabled") { - if (attrValue) - ele.setAttribute("disabled", undefined); - } - else if (attrName === "data") { - const data_dict = attrs[attrName]; - for (const [data_key, data_value] of Object.entries(data_dict)) { - ele.dataset[data_key] = data_value; - } - } - else { - ele[attrName] = attrs[attrName]; - } - } - } - into(ele, ...children); - return ele; - } - function clear_children(elem) { - while (elem.lastChild) { - elem.removeChild(elem.lastChild); - } - } - function intor(parent, ...children) { - clear_children(parent); - return into(parent, ...children); - } - function into(parent, ...children) { - for (const child of children) { - if (typeof child === "string") { - if (children.length > 1) { - parent.appendChild(to_node(child)); - } - else { - parent.textContent = child; - } - } - else if ("then" in child) { - const dummy = document.createElement("DIV"); - parent.appendChild(dummy); - (async () => { - const node = await child; - parent.replaceChild(to_node(node), dummy); - })(); - } - else { - parent.appendChild(child); - } - } - return parent; - } - function to_node(elem) { - if (typeof elem === "string") { - const text_div = document.createElement("DIV"); - text_div.textContent = elem; - return text_div; - } - return elem; - } - function as_fragment(builder) { - const frag = document.createDocumentFragment(); - builder(frag); - return frag; - } - - function check(elem) { - if (elem === undefined || elem === null) { - throw new Error("Expected value to not be null"); - } - return elem; - } - - function get_user_header() { - return check(document.querySelector(".content div.columns h5")); - } - function get_navbar() { - return check(document.querySelector("#navMenu div.navbar-start")); - } - function is_user_page() { - return window.location.href.toLowerCase().startsWith(Global.scoresaber_link + "/u/"); - } - function is_song_leaderboard_page() { - return window.location.href.toLowerCase().startsWith(Global.scoresaber_link + "/leaderboard/"); - } - function get_current_user() { - if (Global._current_user) { - return Global._current_user; - } - if (!is_user_page()) { - throw new Error("Not on a user page"); - } - Global._current_user = get_document_user(document); - return Global._current_user; - } - function get_document_user(doc) { - const username_elem = check(doc.querySelector(".content .title a")); - const user_name = username_elem.innerText.trim(); - const user_id = Global.user_reg.exec(window.location.href)[1]; - return { id: user_id, name: user_name }; - } - function get_home_user() { - if (Global._home_user) { - return Global._home_user; - } - const json = localStorage.getItem("home_user"); - if (!json) { - return undefined; - } - Global._home_user = JSON.parse(json); - return Global._home_user; - } - function get_compare_user() { - if (Global.last_selected) { - return Global.last_selected; - } - const stored_last = localStorage.getItem("last_selected"); - if (stored_last) { - Global.last_selected = stored_last; - return Global.last_selected; - } - const compare = document.getElementById("user_compare"); - if (compare === null || compare === void 0 ? void 0 : compare.value) { - Global.last_selected = compare.value; - return Global.last_selected; - } - return undefined; - } - function insert_compare_feature(elem) { - if (!is_user_page()) { - throw Error("Invalid call to 'insert_compare_feature'"); - } - setup_compare_feature_list(); - elem.style.marginLeft = "1em"; - into(check(Global.feature_list), elem); - } - function insert_compare_display(elem) { - if (!is_user_page()) { - throw Error("Invalid call to 'insert_compare_display'"); - } - setup_compare_feature_list(); - into(check(Global.feature_display_list), elem); - } - function setup_compare_feature_list() { - if (Global.feature_list === undefined) { - const select_score_order_elem = check(document.querySelector(".content div.select")); - const parent_box_elem = check(select_score_order_elem.parentElement); - Global.feature_list = create("div", { class: "level-item" }); - const level_box_elem = create("div", { class: "level" }, Global.feature_list); - parent_box_elem.replaceChild(level_box_elem, select_score_order_elem); - insert_compare_feature(select_score_order_elem); - Global.feature_display_list = create("div", { class: "level-item" }); - level_box_elem.insertAdjacentElement("afterend", Global.feature_display_list); - } - } - function set_compare_user(user) { - Global.last_selected = user; - localStorage.setItem("last_selected", user); - } - function set_home_user(user) { - Global._home_user = user; - localStorage.setItem("home_user", JSON.stringify(user)); - } - function set_wide_table(value) { - localStorage.setItem("wide_song_table", value ? "true" : "false"); - } - function get_wide_table() { - return localStorage.getItem("wide_song_table") === "true"; - } - const BMPage = ["song", "songlist", "user"]; - const BMButton = ["BS", "OC", "Beast", "BeastBook", "Preview", "BSR"]; - const BMPageButtons = BMPage - .map(p => BMButton.map(b => `${p}-${b}`)) - .reduce((agg, lis) => [...agg, ...lis], []); - const BMButtonHelp = { - BS: { short: "BS", long: "BeatSaver", tip: "View on BeatSaver" }, - OC: { short: "OC", long: "OneClick™", tip: "Download with OneClick™" }, - Beast: { short: "BST", long: "BeastSaber", tip: "View/Add rating on BeastSaber" }, - BeastBook: { short: "BB", long: "BeastSaber Bookmark", tip: "Bookmark on BeastSaber" }, - Preview: { short: "👓", long: "Preview", tip: "Preview map" }, - BSR: { short: "❗", long: "BeatSaver Request", tip: "Copy !bsr" }, - }; - function bmvar(page, button, def) { - return { - display: `var(--sse-show-${page}-${button}, ${def})`, - }; - } - function get_button_matrix() { - const json = localStorage.getItem("sse_button_matrix"); - if (!json) - return default_button_matrix(); - return JSON.parse(json); - } - function default_button_matrix() { - return { - "song-BS": true, - "song-BSR": true, - "song-Beast": true, - "song-BeastBook": true, - "song-OC": true, - "song-Preview": true, - "songlist-BS": true, - "songlist-OC": true, - "user-BS": true, - "user-OC": true, - }; - } - function set_button_matrix(bm) { - localStorage.setItem("sse_button_matrix", JSON.stringify(bm)); - } - function set_use_new_ss_api(value) { - localStorage.setItem("use_new_api", value ? "true" : "false"); - } - function get_use_new_ss_api() { - return (localStorage.getItem("use_new_api") || "true") === "true"; - } - function set_bsaber_username(value) { - localStorage.setItem("bsaber_username", value); - } - function get_bsaber_username() { - return (localStorage.getItem("bsaber_username") || undefined); - } - function get_bsaber_bookmarks() { - const data = localStorage.getItem("bsaber_bookmarks"); - if (!data) - return []; - return JSON.parse(data); - } - function add_bsaber_bookmark(song_hash) { - const bookmarks = get_bsaber_bookmarks(); - bookmarks.push(song_hash); - localStorage.setItem("bsaber_bookmarks", JSON.stringify(bookmarks)); - } - function check_bsaber_bookmark(song_hash) { - const bookmarks = get_bsaber_bookmarks(); - return bookmarks.includes(song_hash.toLowerCase()); - } - - function format_en(num, digits) { - if (digits === undefined) - digits = 2; - return num.toLocaleString("en", { minimumFractionDigits: digits, maximumFractionDigits: digits }); - } - function toggled_class(bool, css_class) { - return bool ? css_class : ""; - } - function number_invariant(num) { - return Number(num.replace(/,/g, "")); - } - function number_to_timespan(num) { - const SECONDS_IN_MINUTE = 60; - const MINUTES_IN_HOUR = 60; - let str = ""; - let mod = (num % SECONDS_IN_MINUTE); - str = mod.toFixed(0).padStart(2, "0") + str; - num = (num - mod) / SECONDS_IN_MINUTE; - mod = (num % MINUTES_IN_HOUR); - str = mod.toFixed(0).padStart(2, "0") + ":" + str; - num = (num - mod) / MINUTES_IN_HOUR; - return str; - } - function round2(num) { - return Math.round(num * 100) / 100; - } - function read_inline_date(date) { - return moment.utc(date, "YYYY-MM-DD HH:mm:ss UTC"); - } - - class Limiter { - constructor() { - this.ratelimit_reset = undefined; - this.ratelimit_remaining = undefined; - } - async wait() { - const now = unix_timestamp(); - if (this.ratelimit_reset === undefined || now > this.ratelimit_reset) { - this.ratelimit_reset = undefined; - this.ratelimit_remaining = undefined; - return; - } - if (this.ratelimit_remaining === 0) { - const sleepTime = (this.ratelimit_reset - now); - console.log(`Waiting for cloudflare rate limiter... ${sleepTime}sec`); - await sleep(sleepTime * 1000); - this.ratelimit_remaining = this.ratelimit_limit; - this.ratelimit_reset = undefined; - } - } - setLimitData(remaining, reset, limit) { - this.ratelimit_remaining = remaining; - this.ratelimit_reset = reset; - this.ratelimit_limit = limit; - } - } - async function sleep(timeout) { - return new Promise(resolve => setTimeout(resolve, timeout)); - } - function unix_timestamp() { - return Math.round((new Date()).getTime() / 1000); - } - - function setup$3() { - Global.debug = localStorage.getItem("debug") === "true"; - } - function logc(message, ...optionalParams) { - if (Global.debug) { - console.log("DBG", message, ...optionalParams); - } - } - - let SSE_addStyle; - let SSE_xmlhttpRequest; - let SSE_info; - function setup$2() { - if (typeof (GM) !== "undefined") { - logc("Using GM.* extenstions", GM); - SSE_addStyle = GM_addStyle_custom; - SSE_xmlhttpRequest = GM.xmlHttpRequest; - SSE_info = GM.info; - } - else { - logc("Using GM_ extenstions"); - SSE_addStyle = GM_addStyle; - SSE_xmlhttpRequest = GM_xmlhttpRequest; - SSE_info = GM_info; - } - } - function GM_addStyle_custom(css) { - const style = create("style"); - style.innerHTML = css; - into(document.head, style); - return style; - } - async function load_chart_lib() { - if (typeof Chart !== "function") { - try { - const resp = await fetch("https://scoresaber.com/imports/js/chart.js"); - const js = await resp.text(); - new Function(js)(); - } - catch (err) { - console.warn("Failed to fetch chartjs. Charts might not work", err); - return false; - } - } - return true; - } - - function fetch2(url) { - return new Promise((resolve, reject) => { - const host = get_hostname(url); - const request_param = { - method: "GET", - url: url, - headers: { Origin: host }, - onload: (req) => { - if (req.status >= 200 && req.status < 300) { - resolve(req.responseText); - } - else { - reject(`request errored: ${url} (${req.status})`); - } - }, - onerror: () => { - reject(`request errored: ${url}`); - } - }; - SSE_xmlhttpRequest(request_param); - }); - } - function get_hostname(url) { - const match = url.match(/:\/\/([^/:]+)/i); - if (match !== null) { - return match[1]; - } - else { - return undefined; - } - } - function new_page(link) { - window.open(link, "_blank"); - } - - class SessionCache { - constructor(prefix) { - this.prefix = prefix; - if (prefix === undefined) - throw Error("Prefix must be set. If you don't want a prefix, explicitely pass ''."); - } - get(key) { - const item = sessionStorage.getItem(this.prefix + key); - if (item === null) - return undefined; - return JSON.parse(item); - } - set(key, value) { - sessionStorage.setItem(this.prefix + key, JSON.stringify(value)); - } - } - - const api_cache$1 = new SessionCache("saver"); - async function get_data_by_hash(song_hash) { - const cached_data = api_cache$1.get(song_hash); - if (cached_data !== undefined) - return cached_data; - try { - const data_str = await fetch2(`https://api.beatsaver.com/maps/hash/${song_hash}`); - const data = JSON.parse(data_str); - api_cache$1.set(song_hash, data); - return data; - } - catch (err) { - logc("Failed to download song data", err); - return undefined; - } - } - async function get_scoresaber_data_by_hash(song_hash, diff_name) { - try { - const diff_value = diff_name === undefined ? 0 : diff_name_to_value(diff_name); - const data_str = await fetch2(`https://beatsaver.com/api/scores/${song_hash}/0?difficulty=${diff_value}&gameMode=0`); - const data = JSON.parse(data_str); - return data; - } - catch (err) { - logc("Failed to download song data", err); - return undefined; - } - } - - class Modal { - constructor(elem) { - this.elem = elem; - } - show() { - this.elem.classList.add("is-active"); - document.documentElement.classList.add("is-clipped"); - } - close(answer) { - this.elem.classList.remove("is-active"); - if (!document.querySelector(".modal.is-active")) - document.documentElement.classList.remove("is-clipped"); - if (this.after_close) - this.after_close(answer !== null && answer !== void 0 ? answer : "x"); - } - dispose() { - document.body.removeChild(this.elem); - } - } - function create_modal(opt) { - var _a, _b, _c, _d; - const base_div = create("div", { class: "modal" }); - const modal = new Modal(base_div); - const button_bar = create("div", { class: "buttons" }); - let inner; - switch ((_a = opt.type) !== null && _a !== void 0 ? _a : "content") { - case "content": - inner = create("div", { class: "modal-content" }, create("div", { class: "box" }, opt.text, create("br"), button_bar)); - break; - case "card": - inner = create("div", { class: "modal-card" }, create("header", { class: "modal-card-head" }, (_b = opt.title) !== null && _b !== void 0 ? _b : ""), create("section", { class: "modal-card-body" }, opt.text), create("footer", { class: "modal-card-foot" }, (_c = opt.footer) !== null && _c !== void 0 ? _c : button_bar)); - break; - default: - throw new Error("invalid type"); - } - into(base_div, create("div", { - class: "modal-background", - onclick() { - modal.close("x"); - } - }), inner, create("button", { - class: "modal-close is-large", - onclick() { - modal.close("x"); - } - })); - if (opt.buttons) { - for (const btn_name of Object.keys(opt.buttons)) { - const btn_data = opt.buttons[btn_name]; - into(button_bar, create("button", { - class: ["button", (_d = btn_data.class) !== null && _d !== void 0 ? _d : ""], - onclick() { - modal.close(btn_name); - } - }, btn_data.text)); - } - } - document.body.appendChild(base_div); - if (opt.default) - modal.show(); - return modal; - } - function show_modal(opt) { - return new Promise((resolve) => { - opt.default = true; - const modal = create_modal(opt); - modal.after_close = (answer) => { - modal.dispose(); - resolve(answer); - }; - }); - } - const buttons = { - OkOnly: { x: { text: "Ok", class: "is-primary" } }, - }; + function setup$3() { + Global.debug = localStorage.getItem("debug") === "true"; + } + function logc(message, ...optionalParams) { + if (Global.debug) { + console.log("DBG", message, ...optionalParams); + } + } - function get_song_compare_value(song_a, song_b) { - if (song_a.pp > 0 || song_b.pp > 0) { - return [song_a.pp, song_b.pp]; - } - else if (song_a.score !== undefined && song_b.score !== undefined) { - return [song_a.score, song_b.score]; - } - else if (song_a.accuracy !== undefined && song_b.accuracy !== undefined) { - return [song_a.accuracy * get_song_mod_multiplier(song_a), song_b.accuracy * get_song_mod_multiplier(song_b)]; - } - else { - return [-1, -1]; - } - } - function get_song_mod_multiplier(song) { - if (!song.mods) - return 1.0; - let multiplier = 1.0; - for (const mod of song.mods) { - switch (mod) { - case "NF": - multiplier -= 0.50; - break; - case "NO": - multiplier -= 0.05; - break; - case "NB": - multiplier -= 0.10; - break; - case "SS": - multiplier -= 0.30; - break; - case "NA": - multiplier -= 0.30; - break; - case "DA": - multiplier += 0.07; - break; - case "GN": - multiplier += 0.11; - break; - case "FS": - multiplier += 0.08; - break; - } - } - return Math.max(0, multiplier); - } - function get_song_hash_from_text(text) { - var _a; - const res = Global.song_hash_reg.exec(text); - return res ? (_a = res[1]) === null || _a === void 0 ? void 0 : _a.toLowerCase() : undefined; - } - async function oneclick_install(song_key) { - const lastCheck = localStorage.getItem("oneclick-prompt"); - const prompt = !lastCheck || - new Date(lastCheck).getTime() + (1000 * 60 * 60 * 24 * 31) < new Date().getTime(); - if (prompt) { - localStorage.setItem("oneclick-prompt", new Date().getTime().toString()); - const resp = await show_modal({ - buttons: { - install: { text: "Get ModAssistant Installer", class: "is-info" }, - done: { text: "OK, now leave me alone", class: "is-success" }, - }, - text: "OneClick™ requires any current ModInstaller tool with the OneClick™ feature enabled.\nMake sure you have one installed before proceeding.", - }); - if (resp === "install") { - window.open("https://github.com/Assistant/ModAssistant/releases"); - return; - } - } - console.log("Downloading: ", song_key); - window.location.assign(`beatsaver://${song_key}`); - } - function song_equals(a, b) { - if (a === b) - return true; - if (a === undefined || b === undefined) - return false; - return (a.accuracy === b.accuracy && - a.pp === b.pp && - a.score === b.score && - a.time === b.time && - array_equals(a.mods, b.mods)); - } - function array_equals(a, b) { - if (a === b) - return true; - if (a === undefined || b === undefined) - return false; - if (a.length !== b.length) - return false; - for (let i = 0; i < a.length; i++) { - if (a[i] !== b[i]) - return false; - } - return true; - } - function parse_mods(mods) { - if (!mods) - return undefined; - const modarr = mods.split(/,/g); - if (modarr.length === 0) - return undefined; - return modarr; - } - function parse_score_bottom(text) { - let score = undefined; - let accuracy = undefined; - let mods = undefined; - const score_res = check(Global.score_reg.exec(text)); - if (score_res[1] === "score") { - score = number_invariant(score_res[2]); - } - else if (score_res[1] === "accuracy") { - accuracy = Number(score_res[2]); - } - if (score_res[4]) { - mods = parse_mods(score_res[4]); - } - return { score, accuracy, mods }; - } - function get_notes_count(diff_name, characteristic, version) { - var _a; - if (diff_name === "Expert+") - diff_name = "ExpertPlus"; - const diff = version.diffs.find((d) => (d.characteristic === characteristic && d.difficulty === diff_name)); - return (_a = diff === null || diff === void 0 ? void 0 : diff.notes) !== null && _a !== void 0 ? _a : -1; - } - function calculate_max_score(notes) { - const note_score = 115; - if (notes <= 1) - return note_score * (0 + (notes - 0) * 1); - if (notes <= 5) - return note_score * (1 + (notes - 1) * 2); - if (notes <= 13) - return note_score * (9 + (notes - 5) * 4); - return note_score * (41 + (notes - 13) * 8); - } - function diff_name_to_value(name) { - switch (name) { - case "Easy": return 1; - case "Medium": return 3; - case "Hard": return 5; - case "Expert": return 7; - case "ExpertPlus": return 9; - default: return -1; - } - } - - const SCORESABER_LINK = "https://new.scoresaber.com/api"; - const API_LIMITER = new Limiter(); - async function get_user_recent_songs_dynamic(user_id, page) { - logc(`Fetching user ${user_id} page ${page}`); - if (get_use_new_ss_api()) { - return get_user_recent_songs_new_api_wrap(user_id, page); - } - else { - return get_user_recent_songs_old_api_wrap(user_id, page); - } - } - async function get_user_recent_songs_new_api_wrap(user_id, page) { - const recent_songs = await get_user_recent_songs(user_id, page); - if (!recent_songs) { - return { - meta: { was_last_page: true }, - songs: [] - }; - } - return { - meta: { - was_last_page: recent_songs.scores.length < 8 - }, - songs: recent_songs.scores.map(s => [String(s.leaderboardId), { - time: s.timeSet, - pp: s.pp, - accuracy: s.maxScore !== 0 ? round2((s.unmodififiedScore / s.maxScore) * 100) : undefined, - score: s.score, - mods: parse_mods(s.mods) - }]) - }; - } - async function get_user_recent_songs(user_id, page) { - const req = await auto_fetch_retry(`${SCORESABER_LINK}/player/${user_id}/scores/recent/${page}`); - if (req.status === 404) { - return null; - } - const data = await req.json(); - return sanitize_song_ids(data); - } - async function get_user_info_basic(user_id) { - const req = await auto_fetch_retry(`${SCORESABER_LINK}/player/${user_id}/basic`); - const data = await req.json(); - return sanitize_player_ids(data); - } - async function auto_fetch_retry(url) { - const MAX_RETRIES = 20; - const SLEEP_WAIT = 5000; - for (let retries = MAX_RETRIES; retries >= 0; retries--) { - await API_LIMITER.wait(); - const response = await fetch(url); - const remaining = Number(response.headers.get("x-ratelimit-remaining")); - const reset = Number(response.headers.get("x-ratelimit-reset")); - const limit = Number(response.headers.get("x-ratelimit-limit")); - API_LIMITER.setLimitData(remaining, reset, limit); - if (response.status === 429) { - await sleep(SLEEP_WAIT); - } - else { - return response; - } - } - throw new Error("Can't fetch data from new.scoresaber."); - } - function sanitize_player_ids(data) { - data.playerInfo.playerId = String(data.playerInfo.playerId); - return data; - } - function sanitize_song_ids(data) { - for (const s of data.scores) { - s.scoreId = String(s.scoreId); - s.leaderboardId = String(s.leaderboardId); - s.playerId = String(s.playerId); - } - return data; - } - async function get_user_recent_songs_old_api_wrap(user_id, page) { - let doc; - let tries = 5; - while ((!doc || doc.body.textContent === '"Rate Limit Exceeded"') && tries > 0) { - await sleep(500); - doc = await fetch_user_page(user_id, page); - tries--; - } - if (doc === undefined) { - throw Error("Error fetching user page"); - } - const last_page_elem = doc.querySelector("nav ul.pagination-list li:last-child a"); - const max_pages = Number(last_page_elem.innerText) + 1; - const data = { - meta: { - max_pages, - user_name: get_document_user(doc).name, - was_last_page: page === max_pages, - }, - songs: [], - }; - const table_row = doc.querySelectorAll("table.ranking.songs tbody tr"); - for (const row of table_row) { - const song_data = get_row_data(row); - data.songs.push(song_data); - } - return data; - } - async function fetch_user_page(user_id, page) { - const link = Global.scoresaber_link + `/u/${user_id}&page=${page}&sort=2`; - if (window.location.href.toLowerCase() === link) { - logc("Efficient get :P"); - return document; - } - const init_fetch = await (await fetch(link)).text(); - const parser = new DOMParser(); - return parser.parseFromString(init_fetch, "text/html"); - } - function get_row_data(row) { - const rowc = row; - if (rowc.cache) { - return rowc.cache; - } - const leaderboard_elem = check(row.querySelector("th.song a")); - const pp_elem = check(row.querySelector("th.score .ppValue")); - const score_elem = check(row.querySelector("th.score .scoreBottom")); - const time_elem = check(row.querySelector("th.song .time")); - const song_id = Global.leaderboard_reg.exec(leaderboard_elem.href)[1]; - const pp = Number(pp_elem.innerText); - const time = read_inline_date(time_elem.title).toISOString(); - const { score, accuracy, mods } = parse_score_bottom(score_elem.innerText); - const song = { - pp, - time, - score, - accuracy, - mods, - }; - const data = [song_id, song]; - rowc.cache = data; - return data; - } - - class SseEventHandler { - constructor(eventName) { - this.eventName = eventName; - this.callList = []; - } - invoke(param) { - logc("Event", this.eventName); - for (const func of this.callList) { - func(param); - } - } - register(func) { - this.callList.push(func); - } - } - class SseEvent { - static addNotification(notify) { - this.notificationList.push(notify); - SseEvent.UserNotification.invoke(); - } - static getNotifications() { - return this.notificationList; - } - } - SseEvent.UserCacheChanged = new SseEventHandler("UserCacheChanged"); - SseEvent.CompareUserChanged = new SseEventHandler("CompareUserChanged"); - SseEvent.PinnedUserChanged = new SseEventHandler("PinnedUserChanged"); - SseEvent.UserNotification = new SseEventHandler("UserNotification"); - SseEvent.StatusInfo = new SseEventHandler("StatusInfo"); + class SseEventHandler { + constructor(eventName) { + this.eventName = eventName; + this.callList = []; + } + invoke(param) { + logc("Event", this.eventName); + for (const func of this.callList) { + func(param); + } + } + register(func) { + this.callList.push(func); + } + } + class SseEvent { + static addNotification(notify) { + this.notificationList.push(notify); + SseEvent.UserNotification.invoke(); + } + static getNotifications() { + return this.notificationList; + } + } + SseEvent.UserCacheChanged = new SseEventHandler("UserCacheChanged"); + SseEvent.CompareUserChanged = new SseEventHandler("CompareUserChanged"); + SseEvent.PinnedUserChanged = new SseEventHandler("PinnedUserChanged"); + SseEvent.UserNotification = new SseEventHandler("UserNotification"); + SseEvent.StatusInfo = new SseEventHandler("StatusInfo"); SseEvent.notificationList = []; - const CURRENT_DATA_VER = 1; - function load() { - const json = localStorage.getItem("users"); - if (!json) { - reset_data(); - return; - } - try { - Global.user_list = JSON.parse(json); - } - catch (ex) { - console.error("Failed to read user cache, resetting!"); - reset_data(); - return; - } - let users_data_ver = get_data_ver(); - if (users_data_ver !== CURRENT_DATA_VER) { - logc("Updating usercache format"); - if (users_data_ver <= 0) { - for (const user of Object.values(Global.user_list)) { - for (const song of Object.values(user.songs)) { - const time = read_inline_date(song.time); - song.time = time.toISOString(); - } - } - users_data_ver = 1; - } - update_data_ver(); - save(); - logc("Update successful"); - } - logc("Loaded usercache", Global.user_list); - } - function reset_data() { - Global.user_list = {}; - localStorage.setItem("users", "{}"); - update_data_ver(); - } - function get_data_ver() { - var _a; - return Number((_a = localStorage.getItem("users_data_ver")) !== null && _a !== void 0 ? _a : "0"); - } - function update_data_ver() { - localStorage.setItem("users_data_ver", String(CURRENT_DATA_VER)); - } - function save() { - localStorage.setItem("users", JSON.stringify(Global.user_list)); - } - - function setup_user_compare() { - if (!is_user_page()) { - return; - } - const header = get_user_header(); - header.style.display = "flex"; - header.style.alignItems = "center"; - const user = get_current_user(); - into(header, create("div", { - class: "button icon is-medium", - style: { cursor: "pointer" }, - data: { tooltip: Global.user_list[user.id] ? "Update score cache" : "Add user to your score cache" }, - async onclick() { - await fetch_user(get_current_user().id); - }, - }, create("i", { class: ["fas", Global.user_list[user.id] ? "fa-sync" : "fa-bookmark"] }))); - const status_elem = create("div"); - into(header, status_elem); - SseEvent.StatusInfo.register((status) => intor(status_elem, status.text)); - Global.users_elem = create("div"); - insert_compare_feature(Global.users_elem); - update_user_compare_dropdown(); - SseEvent.UserCacheChanged.register(update_user_compare_dropdown); - SseEvent.UserCacheChanged.register(update_user_compare_songtable); - SseEvent.CompareUserChanged.register(update_user_compare_songtable); - SseEvent.CompareUserChanged.invoke(); - } - function update_user_compare_dropdown() { - if (!is_user_page()) { - return; - } - const compare = get_compare_user(); - intor(Global.users_elem, create("div", { class: "select" }, create("select", { - id: "user_compare", - onchange() { - const user = this.value; - set_compare_user(user); - SseEvent.CompareUserChanged.invoke(); - } - }, create("option", { value: undefined, selected: compare === undefined }, "(None)"), ...Object.entries(Global.user_list).map(([id, user]) => { - return create("option", { value: id, selected: compare === id }, user.name); - })))); - } - function update_user_compare_songtable(other_user) { - var _a; - if (!is_user_page()) { - return; - } - const table = check(document.querySelector("table.ranking.songs")); - const table_row = table.querySelectorAll("tbody tr"); - const scoreHeader = check(table.querySelector("tr th.score")); - scoreHeader.textContent = "Score"; - table.querySelectorAll(".comparisonScore").forEach(el => el.remove()); - table_row.forEach(row => row.style.backgroundImage = "unset"); - if (other_user === undefined) { - other_user = get_compare_user(); - if (other_user === undefined) { - return; - } - } - const other_data = Global.user_list[other_user]; - if (!other_data) { - logc("Other user not found: ", other_user); - return; - } - const ranking_table_header = check(table.querySelector("thead > tr")); - const scoreCompareHeader = create("th", { class: "comparisonScore" }, other_data.name); - check(ranking_table_header.querySelector(".score")).insertAdjacentElement("afterend", scoreCompareHeader); - const isSameCompare = other_user === get_current_user().id; - const isSelfCompare = isSameCompare && other_user === ((_a = get_home_user()) === null || _a === void 0 ? void 0 : _a.id); - if (isSelfCompare) { - scoreHeader.textContent = "You (now)"; - scoreCompareHeader.textContent = "You (last cache)"; - } - else if (isSameCompare) { - scoreHeader.textContent = `${other_data.name} (now)`; - scoreCompareHeader.textContent = "(last cache)"; - } - else { - scoreHeader.textContent = get_current_user().name; - } - for (const row of table_row) { - const [song_id, song] = get_row_data(row); - const other_song = other_data.songs[song_id]; - let other_score_content; - if (other_song) { - other_score_content = [ - create("span", { class: "scoreTop ppValue" }, format_en(other_song.pp)), - create("span", { class: "scoreTop ppLabel" }, "pp"), - create("br"), - (() => { - let str; - if (other_song.accuracy !== undefined) { - str = `accuracy: ${format_en(other_song.accuracy)}%`; - } - else if (other_song.score !== undefined) { - str = `score: ${format_en(other_song.score)}`; - } - else { - return ""; - } - if (other_song.mods !== undefined) { - str += ` (${other_song.mods.join(",")})`; - } - return create("span", { class: "scoreBottom" }, str); - })() - ]; - } - else { - other_score_content = [create("hr", {})]; - } - check(row.querySelector(".score")).insertAdjacentElement("afterend", create("th", { class: "comparisonScore" }, ...other_score_content)); - if (!other_song) { - logc("No match"); - continue; - } - const [value1, value2] = get_song_compare_value(song, other_song); - if (value1 === -1 && value2 === -1) { - logc("No score"); - continue; - } - let value = (Math.min(value1, value2) / Math.max(value1, value2)) * 100; - const better = value1 > value2; - if (better) { - value = 100 - value; - } - value = round2(value); - if (better) { - row.style.backgroundImage = `linear-gradient(75deg, var(--color-ahead) ${value}%, rgba(0,0,0,0) ${value}%)`; - } - else { - row.style.backgroundImage = `linear-gradient(105deg, rgba(0,0,0,0) ${value}%, var(--color-behind) ${value}%)`; - } - } - } - async function fetch_user(user_id, force = false) { - var _a, _b; - let user = Global.user_list[user_id]; - if (!user) { - user = { - name: "User" + user_id, - songs: {} - }; - Global.user_list[user_id] = user; - } - let page_max = undefined; - let user_name = user.name; - let updated = false; - SseEvent.StatusInfo.invoke({ text: `Fetching user ${user_name}` }); - if (get_use_new_ss_api()) { - const user_data = await get_user_info_basic(user_id); - user_name = user_data.playerInfo.playerName; - } - for (let page = 1;; page++) { - SseEvent.StatusInfo.invoke({ text: `Updating user ${user_name} page ${page}/${(page_max !== null && page_max !== void 0 ? page_max : "?")}` }); - const recent_songs = await get_user_recent_songs_dynamic(user_id, page); - const { has_old_entry, has_updated } = process_user_page(recent_songs.songs, user); - updated = updated || has_updated; - page_max = (_a = recent_songs.meta.max_pages) !== null && _a !== void 0 ? _a : page_max; - user_name = (_b = recent_songs.meta.user_name) !== null && _b !== void 0 ? _b : user_name; - if ((!force && has_old_entry) || recent_songs.meta.was_last_page) { - break; - } - } - user.name = user_name !== null && user_name !== void 0 ? user_name : user.name; - if (updated) { - save(); - } - SseEvent.StatusInfo.invoke({ text: `User ${user_name} updated` }); - SseEvent.UserCacheChanged.invoke(); - } - async function fetch_all(force = false) { - const users = Object.keys(Global.user_list); - for (const user of users) { - await fetch_user(user, force); - } - SseEvent.StatusInfo.invoke({ text: `All users updated` }); - } - function process_user_page(songs, user) { - let has_old_entry = false; - let has_updated = false; - for (const [song_id, song] of songs) { - const song_old = user.songs[song_id]; - if (!song_old || !song_equals(song_old, song)) { - logc("Updated: ", song_old, song); - has_updated = true; - } - else { - logc("Old found: ", song); - has_old_entry = true; - } - user.songs[song_id] = song; - } - return { has_old_entry, has_updated }; - } - - function setup_self_pin_button() { - if (!is_user_page()) { - return; - } - const header = get_user_header(); - into(header, create("div", { - class: "button icon is-medium", - style: { cursor: "pointer" }, - data: { tooltip: "Pin this user to your navigation bar" }, - onclick() { - set_home_user(get_current_user()); - SseEvent.PinnedUserChanged.invoke(); - } - }, create("i", { class: "fas fa-thumbtack" }))); - } - function setup_self_button() { - var _a; - const home_user = (_a = get_home_user()) !== null && _a !== void 0 ? _a : { name: "", id: "0" }; - into(get_navbar(), create("div", { class: "navbar-item has-dropdown is-hoverable" }, create("a", { - id: "home_user", - class: "navbar-item", - href: Global.scoresaber_link + "/u/" + home_user.id - }, home_user.name), create("div", { - id: "home_user_list", - class: "navbar-dropdown" - }))); - update_self_user_list(); - SseEvent.UserCacheChanged.register(update_self_user_list); - SseEvent.PinnedUserChanged.register(update_self_button); - } - function update_self_button() { - var _a; - const home_user = (_a = get_home_user()) !== null && _a !== void 0 ? _a : { name: "", id: "0" }; - const home_elem = document.getElementById("home_user"); - if (home_elem) { - home_elem.href = Global.scoresaber_link + "/u/" + home_user.id; - home_elem.innerText = home_user.name; - } - } - function update_self_user_list() { - const home_user_list_elem = check(document.getElementById("home_user_list")); - intor(home_user_list_elem, ...Object.entries(Global.user_list).map(([id, user]) => { - return create("a", { - class: "navbar-item", - style: { - paddingRight: "1em", - flexWrap: "nowrap", - display: "flex", - }, - href: Global.scoresaber_link + "/u/" + id, - }, create("div", { style: { flex: "1" } }, user.name), create("div", { - class: "button icon is-medium is-danger is-outlined", - style: { marginLeft: "3em" }, - async onclick(ev) { - ev.preventDefault(); - ev.stopPropagation(); - const response = await show_modal({ - text: `Delete User "${user.name}" from cache?`, - buttons: { - delete: { text: "Delete", class: "is-danger" }, - x: { text: "Abort", class: "is-info" } - }, - }); - if (response === "delete") { - logc("Delete user", id, user.name); - delete_user(id); - } - } - }, create("i", { class: "fas fa-trash-alt" }))); - })); - } - function delete_user(user_id) { - if (Global.user_list[user_id]) { - delete Global.user_list[user_id]; - save(); - SseEvent.UserCacheChanged.invoke(); - } + function create(tag, attrs, ...children) { + if (tag === undefined) + throw new Error("'tag' not defined"); + const ele = document.createElement(tag); + if (attrs) { + for (const [attrName, attrValue] of Object.entries(attrs)) { + if (attrName === "style") { + for (const [styleName, styleValue] of Object.entries(attrs.style)) { + ele.style[styleName] = styleValue; + } + } + else if (attrName === "class") { + if (typeof attrs.class === "string") { + const classes = attrs.class.split(/ /g).filter(c => c.trim().length > 0); + ele.classList.add(...classes); + } + else { + ele.classList.add(...attrs.class); + } + } + else if (attrName === "for") { + ele.htmlFor = attrValue; + } + else if (attrName === "selected") { + ele.selected = (attrValue ? "selected" : undefined); + } + else if (attrName === "disabled") { + if (attrValue) + ele.setAttribute("disabled", undefined); + } + else if (attrName === "data") { + const data_dict = attrs[attrName]; + for (const [data_key, data_value] of Object.entries(data_dict)) { + ele.dataset[data_key] = data_value; + } + } + else { + ele[attrName] = attrs[attrName]; + } + } + } + into(ele, ...children); + return ele; + } + function clear_children(elem) { + while (elem.lastChild) { + elem.removeChild(elem.lastChild); + } + } + function intor(parent, ...children) { + clear_children(parent); + return into(parent, ...children); + } + function into(parent, ...children) { + for (const child of children) { + if (typeof child === "string") { + if (children.length > 1) { + parent.appendChild(to_node(child)); + } + else { + parent.textContent = child; + } + } + else if ("then" in child) { + const dummy = document.createElement("DIV"); + parent.appendChild(dummy); + (async () => { + const node = await child; + parent.replaceChild(to_node(node), dummy); + })(); + } + else { + parent.appendChild(child); + } + } + return parent; + } + function to_node(elem) { + if (typeof elem === "string") { + const text_div = document.createElement("DIV"); + text_div.textContent = elem; + return text_div; + } + return elem; + } + function as_fragment(builder) { + const frag = document.createDocumentFragment(); + builder(frag); + return frag; + } + + class Modal { + constructor(elem) { + this.elem = elem; + } + show() { + this.elem.classList.add("is-active"); + document.documentElement.classList.add("is-clipped"); + } + close(answer) { + this.elem.classList.remove("is-active"); + if (!document.querySelector(".modal.is-active")) + document.documentElement.classList.remove("is-clipped"); + if (this.after_close) + this.after_close(answer !== null && answer !== void 0 ? answer : "x"); + } + dispose() { + document.body.removeChild(this.elem); + } + } + function create_modal(opt) { + var _a, _b, _c, _d; + const base_div = create("div", { class: "modal" }); + const modal = new Modal(base_div); + const button_bar = create("div", { class: "buttons" }); + let inner; + switch ((_a = opt.type) !== null && _a !== void 0 ? _a : "content") { + case "content": + inner = create("div", { class: "modal-content" }, create("div", { class: "box" }, opt.text, create("br"), button_bar)); + break; + case "card": + inner = create("div", { class: "modal-card" }, create("header", { class: "modal-card-head" }, (_b = opt.title) !== null && _b !== void 0 ? _b : ""), create("section", { class: "modal-card-body" }, opt.text), create("footer", { class: "modal-card-foot" }, (_c = opt.footer) !== null && _c !== void 0 ? _c : button_bar)); + break; + default: + throw new Error("invalid type"); + } + into(base_div, create("div", { + class: "modal-background", + onclick() { + modal.close("x"); + } + }), inner, create("button", { + class: "modal-close is-large", + onclick() { + modal.close("x"); + } + })); + if (opt.buttons) { + for (const btn_name of Object.keys(opt.buttons)) { + const btn_data = opt.buttons[btn_name]; + into(button_bar, create("button", { + class: ["button", (_d = btn_data.class) !== null && _d !== void 0 ? _d : ""], + onclick() { + modal.close(btn_name); + } + }, btn_data.text)); + } + } + document.body.appendChild(base_div); + if (opt.default) + modal.show(); + return modal; + } + function show_modal(opt) { + return new Promise((resolve) => { + opt.default = true; + const modal = create_modal(opt); + modal.after_close = (answer) => { + modal.dispose(); + resolve(answer); + }; + }); + } + const buttons = { + OkOnly: { x: { text: "Ok", class: "is-primary" } }, + }; + + function check(elem) { + if (elem === undefined || elem === null) { + throw new Error("Expected value to not be null"); + } + return elem; + } + + function get_user_header() { + return check(document.querySelector(".title.player")); + } + function get_navbar() { + return check(document.querySelector("nav")); + } + function is_user_page() { + return window.location.href.toLowerCase().startsWith(Global.scoresaber_link + "/u/"); + } + function is_song_leaderboard_page() { + return window.location.href.toLowerCase().startsWith(Global.scoresaber_link + "/leaderboard/"); + } + function get_current_user() { + if (!is_user_page()) { + throw new Error("Not on a user page"); + } + Global._current_user = get_document_user(document); + return Global._current_user; + } + function get_document_user(doc) { + const username_elem = check(doc.querySelector(".player-link")); + const user_name = username_elem.innerText.trim(); + const user_id = Global.user_reg.exec(window.location.href)[1]; + return { id: user_id, name: user_name }; + } + function get_home_user() { + if (Global._home_user) { + return Global._home_user; + } + const json = localStorage.getItem("home_user"); + if (!json) { + return undefined; + } + Global._home_user = JSON.parse(json); + return Global._home_user; + } + function set_home_user(user) { + Global._home_user = user; + localStorage.setItem("home_user", JSON.stringify(user)); + } + function set_wide_table(value) { + localStorage.setItem("wide_song_table", value ? "true" : "false"); + } + function get_wide_table() { + return localStorage.getItem("wide_song_table") === "true"; + } + const BMPage = ["song", "songlist", "user"]; + const BMButton = ["BS", "OC", "Beast", "BeastBook", "Preview", "BSR"]; + const BMPageButtons = BMPage + .map(p => BMButton.map(b => `${p}-${b}`)) + .reduce((agg, lis) => [...agg, ...lis], []); + const BMButtonHelp = { + BS: { short: "BS", long: "BeatSaver", tip: "View on BeatSaver" }, + OC: { short: "OC", long: "OneClick™", tip: "Download with OneClick™" }, + Beast: { short: "BST", long: "BeastSaber", tip: "View/Add rating on BeastSaber" }, + BeastBook: { short: "BB", long: "BeastSaber Bookmark", tip: "Bookmark on BeastSaber" }, + Preview: { short: "👓", long: "Preview", tip: "Preview map" }, + BSR: { short: "❗", long: "BeatSaver Request", tip: "Copy !bsr" }, + }; + function bmvar(page, button, def) { + return { + display: `var(--sse-show-${page}-${button}, ${def})`, + }; + } + function get_button_matrix() { + const json = localStorage.getItem("sse_button_matrix"); + if (!json) + return default_button_matrix(); + return JSON.parse(json); + } + function default_button_matrix() { + return { + "song-BS": true, + "song-BSR": true, + "song-Beast": true, + "song-BeastBook": true, + "song-OC": true, + "song-Preview": true, + "songlist-BS": true, + "songlist-OC": true, + "user-BS": true, + "user-OC": true, + }; + } + function set_button_matrix(bm) { + localStorage.setItem("sse_button_matrix", JSON.stringify(bm)); + } + function set_use_new_ss_api(value) { + localStorage.setItem("use_new_api", value ? "true" : "false"); + } + function get_use_new_ss_api() { + return (localStorage.getItem("use_new_api") || "true") === "true"; + } + function set_bsaber_username(value) { + localStorage.setItem("bsaber_username", value); + } + function get_bsaber_username() { + return (localStorage.getItem("bsaber_username") || undefined); + } + function get_bsaber_bookmarks() { + const data = localStorage.getItem("bsaber_bookmarks"); + if (!data) + return []; + return JSON.parse(data); + } + function add_bsaber_bookmark(song_hash) { + const bookmarks = get_bsaber_bookmarks(); + bookmarks.push(song_hash); + localStorage.setItem("bsaber_bookmarks", JSON.stringify(bookmarks)); + } + function check_bsaber_bookmark(song_hash) { + const bookmarks = get_bsaber_bookmarks(); + return bookmarks.includes(song_hash.toLowerCase()); + } + + function format_en(num, digits) { + if (digits === undefined) + digits = 2; + return num.toLocaleString("en", { minimumFractionDigits: digits, maximumFractionDigits: digits }); + } + function toggled_class(bool, css_class) { + return bool ? css_class : ""; + } + function number_invariant(num) { + return Number(num.replace(/,/g, "")); + } + function number_to_timespan(num) { + const SECONDS_IN_MINUTE = 60; + const MINUTES_IN_HOUR = 60; + let str = ""; + let mod = (num % SECONDS_IN_MINUTE); + str = mod.toFixed(0).padStart(2, "0") + str; + num = (num - mod) / SECONDS_IN_MINUTE; + mod = (num % MINUTES_IN_HOUR); + str = mod.toFixed(0).padStart(2, "0") + ":" + str; + num = (num - mod) / MINUTES_IN_HOUR; + return str; + } + function round2(num) { + return Math.round(num * 100) / 100; + } + function read_inline_date(date) { + return moment.utc(date, "YYYY-MM-DD HH:mm:ss UTC"); + } + + const CURRENT_DATA_VER = 1; + function load() { + const json = localStorage.getItem("users"); + if (!json) { + reset_data(); + return; + } + try { + Global.user_list = JSON.parse(json); + } + catch (ex) { + console.error("Failed to read user cache, resetting!"); + reset_data(); + return; + } + let users_data_ver = get_data_ver(); + if (users_data_ver !== CURRENT_DATA_VER) { + logc("Updating usercache format"); + if (users_data_ver <= 0) { + for (const user of Object.values(Global.user_list)) { + for (const song of Object.values(user.songs)) { + const time = read_inline_date(song.time); + song.time = time.toISOString(); + } + } + users_data_ver = 1; + } + update_data_ver(); + save(); + logc("Update successful"); + } + logc("Loaded usercache", Global.user_list); + } + function reset_data() { + Global.user_list = {}; + localStorage.setItem("users", "{}"); + update_data_ver(); + } + function get_data_ver() { + var _a; + return Number((_a = localStorage.getItem("users_data_ver")) !== null && _a !== void 0 ? _a : "0"); + } + function update_data_ver() { + localStorage.setItem("users_data_ver", String(CURRENT_DATA_VER)); + } + function save() { + localStorage.setItem("users", JSON.stringify(Global.user_list)); + } + + function setup_self_pin_button() { + if (!is_user_page()) { + return; + } + const header = get_user_header(); + into(header, create("div", { + class: "button icon is-medium", + style: { cursor: "pointer" }, + data: { tooltip: "Pin this user to your navigation bar" }, + onclick() { + set_home_user(get_current_user()); + SseEvent.PinnedUserChanged.invoke(); + } + }, create("i", { class: "fas fa-thumbtack" }))); + } + function setup_self_button() { + var _b; + let _a, _d, _a_hover = false, _d_hover = false; + const home_user = (_b = get_home_user()) !== null && _b !== void 0 ? _b : { name: "", id: "0" }; + into(get_navbar(), _a = create("a", { + id: "home_user", + class: Global.header_class, + href: Global.scoresaber_link + "/u/" + home_user.id + }, home_user.name, _d = create("div", { + id: "home_user_list", + class: "userMenu " + Global.header_class, + style: { + width: "initial" + } + }))); + const _hide = () => (!_a_hover && !_d_hover) ? _d.classList.remove("visible") : 0; + _a.addEventListener("mouseenter", () => { + _a_hover = true; + _d.classList.add("visible"); + }); + _d.addEventListener("mouseenter", () => { + _d_hover = true; + _d.classList.add("visible"); + }); + _a.addEventListener("mouseleave", () => { + _a_hover = false; + setTimeout(_hide, 200); + }); + _d.addEventListener("mouseleave", () => { + _d_hover = false; + setTimeout(_hide, 200); + }); + update_self_user_list(); + SseEvent.UserCacheChanged.register(update_self_user_list); + SseEvent.PinnedUserChanged.register(update_self_button); + } + function update_self_button() { + var _b; + const home_user = (_b = get_home_user()) !== null && _b !== void 0 ? _b : { name: "", id: "0" }; + const home_elem = document.getElementById("home_user"); + if (home_elem) { + home_elem.href = Global.scoresaber_link + "/u/" + home_user.id; + home_elem.innerText = home_user.name; + } + } + function update_self_user_list() { + const home_user_list_elem = check(document.getElementById("home_user_list")); + intor(home_user_list_elem, ...Object.entries(Global.user_list).map(([id, user]) => { + return create("a", { + class: Global.header_class, + style: { + paddingRight: "1em", + flexWrap: "nowrap", + display: "flex", + }, + href: Global.scoresaber_link + "/u/" + id, + }, create("div", { style: { flex: "1" } }, user.name), create("div", { + class: "button icon is-medium is-danger is-outlined", + style: { marginLeft: "3em" }, + async onclick(ev) { + ev.preventDefault(); + ev.stopPropagation(); + const response = await show_modal({ + text: `Delete User "${user.name}" from cache?`, + buttons: { + delete: { text: "Delete", class: "is-danger" }, + x: { text: "Abort", class: "is-info" } + }, + }); + if (response === "delete") { + logc("Delete user", id, user.name); + delete_user(id); + } + } + }, create("i", { class: "fas fa-trash-alt" }))); + })); + } + function delete_user(user_id) { + if (Global.user_list[user_id]) { + delete Global.user_list[user_id]; + save(); + SseEvent.UserCacheChanged.invoke(); + } + } + + let SSE_addStyle; + let SSE_xmlhttpRequest; + function setup$2() { + if (typeof (GM) !== "undefined") { + logc("Using GM.* extenstions", GM); + SSE_addStyle = GM_addStyle_custom; + SSE_xmlhttpRequest = GM.xmlHttpRequest; + GM.info; + } + else { + logc("Using GM_ extenstions"); + SSE_addStyle = GM_addStyle; + SSE_xmlhttpRequest = GM_xmlhttpRequest; + GM_info; + } + } + function GM_addStyle_custom(css) { + const style = create("style"); + style.innerHTML = css; + into(document.head, style); + return style; + } + + function fetch2(url) { + return new Promise((resolve, reject) => { + const host = get_hostname(url); + const request_param = { + method: "GET", + url: url, + headers: { Origin: host }, + onload: (req) => { + if (req.status >= 200 && req.status < 300) { + resolve(req.responseText); + } + else { + reject(`request errored: ${url} (${req.status})`); + } + }, + onerror: () => { + reject(`request errored: ${url}`); + } + }; + SSE_xmlhttpRequest(request_param); + }); + } + function get_hostname(url) { + const match = url.match(/:\/\/([^/:]+)/i); + if (match !== null) { + return match[1]; + } + else { + return undefined; + } + } + function new_page(link) { + window.open(link, "_blank"); + } + + class SessionCache { + constructor(prefix) { + this.prefix = prefix; + if (prefix === undefined) + throw Error("Prefix must be set. If you don't want a prefix, explicitely pass ''."); + } + get(key) { + const item = sessionStorage.getItem(this.prefix + key); + if (item === null) + return undefined; + return JSON.parse(item); + } + set(key, value) { + sessionStorage.setItem(this.prefix + key, JSON.stringify(value)); + } + } + + const api_cache$1 = new SessionCache("beast"); + async function get_data(song_key) { + const cached_data = api_cache$1.get(song_key); + if (cached_data !== undefined) + return cached_data; + try { + const data_str = await fetch2(`https://bsaber.com/wp-json/bsaber-api/songs/${song_key}/ratings`); + const data = JSON.parse(data_str); + api_cache$1.set(song_key, data); + return data; + } + catch (e) { + return undefined; + } + } + async function get_bookmarks(username, page, count) { + try { + const data_str = await fetch2(`https://bsaber.com/wp-json/bsaber-api/songs/?bookmarked_by=${username}&page=${page}&count=${count}`); + const data = JSON.parse(data_str); + return data; + } + catch (e) { + return undefined; + } + } + + function get_song_compare_value(song_a, song_b) { + if (song_a.pp > 0 || song_b.pp > 0) { + return [song_a.pp, song_b.pp]; + } + else if (song_a.score !== undefined && song_b.score !== undefined) { + return [song_a.score, song_b.score]; + } + else if (song_a.accuracy !== undefined && song_b.accuracy !== undefined) { + return [song_a.accuracy * get_song_mod_multiplier(song_a), song_b.accuracy * get_song_mod_multiplier(song_b)]; + } + else { + return [-1, -1]; + } + } + function get_song_mod_multiplier(song) { + if (!song.mods) + return 1.0; + let multiplier = 1.0; + for (const mod of song.mods) { + switch (mod) { + case "NF": + multiplier -= 0.50; + break; + case "NO": + multiplier -= 0.05; + break; + case "NB": + multiplier -= 0.10; + break; + case "SS": + multiplier -= 0.30; + break; + case "NA": + multiplier -= 0.30; + break; + case "DA": + multiplier += 0.07; + break; + case "GN": + multiplier += 0.11; + break; + case "FS": + multiplier += 0.08; + break; + } + } + return Math.max(0, multiplier); + } + function get_song_hash_from_text(text) { + var _a; + const res = Global.song_hash_reg.exec(text); + return res ? (_a = res[1]) === null || _a === void 0 ? void 0 : _a.toLowerCase() : undefined; + } + async function oneclick_install(song_key) { + const lastCheck = localStorage.getItem("oneclick-prompt"); + const prompt = !lastCheck || + new Date(lastCheck).getTime() + (1000 * 60 * 60 * 24 * 31) < new Date().getTime(); + if (prompt) { + localStorage.setItem("oneclick-prompt", new Date().getTime().toString()); + const resp = await show_modal({ + buttons: { + install: { text: "Get ModAssistant Installer", class: "is-info" }, + done: { text: "OK, now leave me alone", class: "is-success" }, + }, + text: "OneClick™ requires any current ModInstaller tool with the OneClick™ feature enabled.\nMake sure you have one installed before proceeding.", + }); + if (resp === "install") { + window.open("https://github.com/Assistant/ModAssistant/releases"); + return; + } + } + console.log("Downloading: ", song_key); + window.location.assign(`beatsaver://${song_key}`); + } + function song_equals(a, b) { + if (a === b) + return true; + if (a === undefined || b === undefined) + return false; + return (a.accuracy === b.accuracy && + a.pp === b.pp && + a.score === b.score && + a.time === b.time && + array_equals(a.mods, b.mods)); + } + function array_equals(a, b) { + if (a === b) + return true; + if (a === undefined || b === undefined) + return false; + if (a.length !== b.length) + return false; + for (let i = 0; i < a.length; i++) { + if (a[i] !== b[i]) + return false; + } + return true; + } + function parse_mods(mods) { + if (!mods) + return undefined; + const modarr = mods.split(/,/g); + if (modarr.length === 0) + return undefined; + return modarr; + } + function parse_score_bottom(text) { + let score = undefined; + const accuracy = undefined; + const mods = undefined; + score = number_invariant(text); + return { score, accuracy, mods }; + } + function get_notes_count(diff_name, characteristic, version) { + var _a; + if (diff_name === "Expert+") + diff_name = "ExpertPlus"; + const diff = version.diffs.find((d) => (d.characteristic === characteristic && d.difficulty === diff_name)); + return (_a = diff === null || diff === void 0 ? void 0 : diff.notes) !== null && _a !== void 0 ? _a : -1; + } + function calculate_max_score(notes) { + const note_score = 115; + if (notes <= 1) + return note_score * (0 + (notes - 0) * 1); + if (notes <= 5) + return note_score * (1 + (notes - 1) * 2); + if (notes <= 13) + return note_score * (9 + (notes - 5) * 4); + return note_score * (41 + (notes - 13) * 8); + } + + const api_cache = new SessionCache("saver"); + async function get_data_by_hash(song_hash) { + const cached_data = api_cache.get(song_hash); + if (cached_data !== undefined) + return cached_data; + try { + const data_str = await fetch2(`https://api.beatsaver.com/maps/hash/${song_hash}`); + const data = JSON.parse(data_str); + api_cache.set(song_hash, data); + return data; + } + catch (err) { + logc("Failed to download song data", err); + return undefined; + } + } + + class Limiter { + constructor() { + this.ratelimit_reset = undefined; + this.ratelimit_remaining = undefined; + } + async wait() { + const now = unix_timestamp(); + if (this.ratelimit_reset === undefined || now > this.ratelimit_reset) { + this.ratelimit_reset = undefined; + this.ratelimit_remaining = undefined; + return; + } + if (this.ratelimit_remaining === 0) { + const sleepTime = (this.ratelimit_reset - now); + console.log(`Waiting for cloudflare rate limiter... ${sleepTime}sec`); + await sleep(sleepTime * 1000); + this.ratelimit_remaining = this.ratelimit_limit; + this.ratelimit_reset = undefined; + } + } + setLimitData(remaining, reset, limit) { + this.ratelimit_remaining = remaining; + this.ratelimit_reset = reset; + this.ratelimit_limit = limit; + } + } + async function sleep(timeout) { + return new Promise(resolve => setTimeout(resolve, timeout)); + } + function unix_timestamp() { + return Math.round((new Date()).getTime() / 1000); + } + + const SCORESABER_LINK = "https://new.scoresaber.com/api"; + const API_LIMITER = new Limiter(); + async function get_user_recent_songs_dynamic(user_id, page) { + logc(`Fetching user ${user_id} page ${page}`); + return get_user_recent_songs_new_api_wrap(user_id, page); + } + async function get_leaderboard_info(leaderboard_id) { + const req = await auto_fetch_retry(`https://scoresaber.com/api/leaderboard/by-id/${leaderboard_id}/info`); + return await req.json(); + } + async function get_user_recent_songs_new_api_wrap(user_id, page) { + const recent_songs = await get_user_recent_songs(user_id, page); + if (!recent_songs) { + return { + meta: { was_last_page: true }, + songs: [] + }; + } + return { + meta: { + was_last_page: recent_songs.scores.length < 8 + }, + songs: recent_songs.scores.map(s => [String(s.leaderboardId), { + time: s.timeSet, + pp: s.pp, + accuracy: s.maxScore !== 0 ? round2((s.unmodififiedScore / s.maxScore) * 100) : undefined, + score: s.score, + mods: parse_mods(s.mods) + }]) + }; + } + async function get_user_recent_songs(user_id, page) { + const req = await auto_fetch_retry(`${SCORESABER_LINK}/player/${user_id}/scores/recent/${page}`); + if (req.status === 404) { + return null; + } + const data = await req.json(); + return sanitize_song_ids(data); + } + async function get_user_info_basic(user_id) { + const req = await auto_fetch_retry(`${SCORESABER_LINK}/player/${user_id}/basic`); + const data = await req.json(); + return sanitize_player_ids(data); + } + async function auto_fetch_retry(url) { + const MAX_RETRIES = 20; + const SLEEP_WAIT = 5000; + for (let retries = MAX_RETRIES; retries >= 0; retries--) { + await API_LIMITER.wait(); + const response = await fetch(url); + const remaining = Number(response.headers.get("x-ratelimit-remaining")); + const reset = Number(response.headers.get("x-ratelimit-reset")); + const limit = Number(response.headers.get("x-ratelimit-limit")); + API_LIMITER.setLimitData(remaining, reset, limit); + if (response.status === 429) { + await sleep(SLEEP_WAIT); + } + else { + return response; + } + } + throw new Error("Can't fetch data from new.scoresaber."); + } + function sanitize_player_ids(data) { + data.playerInfo.playerId = String(data.playerInfo.playerId); + return data; + } + function sanitize_song_ids(data) { + for (const s of data.scores) { + s.scoreId = String(s.scoreId); + s.leaderboardId = String(s.leaderboardId); + s.playerId = String(s.playerId); + } + return data; } function noop() { } @@ -1259,12 +951,15 @@ } function append_stylesheet(node, style) { append(node.head || node, style); + return style.sheet; } function insert(target, node, anchor) { target.insertBefore(node, anchor || null); } function detach(node) { - node.parentNode.removeChild(node); + if (node.parentNode) { + node.parentNode.removeChild(node); + } } function destroy_each(iterations, detaching) { for (let i = 0; i < iterations.length; i += 1) { @@ -1332,22 +1027,54 @@ function add_render_callback(fn) { render_callbacks.push(fn); } - let flushing = false; + // flush() calls callbacks in this order: + // 1. All beforeUpdate callbacks, in order: parents before children + // 2. All bind:this callbacks, in reverse order: children before parents. + // 3. All afterUpdate callbacks, in order: parents before children. EXCEPT + // for afterUpdates called during the initial onMount, which are called in + // reverse order: children before parents. + // Since callbacks might update component values, which could trigger another + // call to flush(), the following steps guard against this: + // 1. During beforeUpdate, any updated components will be added to the + // dirty_components array and will cause a reentrant call to flush(). Because + // the flush index is kept outside the function, the reentrant call will pick + // up where the earlier call left off and go through all dirty components. The + // current_component value is saved and restored so that the reentrant call will + // not interfere with the "parent" flush() call. + // 2. bind:this callbacks cannot trigger new flush() calls. + // 3. During afterUpdate, any updated components will NOT have their afterUpdate + // callback called a second time; the seen_callbacks set, outside the flush() + // function, guarantees this behavior. const seen_callbacks = new Set(); + let flushidx = 0; // Do *not* move this inside the flush() function function flush() { - if (flushing) + // Do not reenter flush while dirty components are updated, as this can + // result in an infinite loop. Instead, let the inner flush handle it. + // Reentrancy is ok afterwards for bindings etc. + if (flushidx !== 0) { return; - flushing = true; + } + const saved_component = current_component; do { // first, call beforeUpdate functions // and update components - for (let i = 0; i < dirty_components.length; i += 1) { - const component = dirty_components[i]; - set_current_component(component); - update(component.$$); + try { + while (flushidx < dirty_components.length) { + const component = dirty_components[flushidx]; + flushidx++; + set_current_component(component); + update(component.$$); + } + } + catch (e) { + // reset dirty state to not end up in a deadlocked state and then rethrow + dirty_components.length = 0; + flushidx = 0; + throw e; } set_current_component(null); dirty_components.length = 0; + flushidx = 0; while (binding_callbacks.length) binding_callbacks.pop()(); // then, once components are updated, call @@ -1367,8 +1094,8 @@ flush_callbacks.pop()(); } update_scheduled = false; - flushing = false; seen_callbacks.clear(); + set_current_component(saved_component); } function update($$) { if ($$.fragment !== null) { @@ -1416,19 +1143,25 @@ }); block.o(local); } + else if (callback) { + callback(); + } } function create_component(block) { block && block.c(); } function mount_component(component, target, anchor, customElement) { - const { fragment, on_mount, on_destroy, after_update } = component.$$; + const { fragment, after_update } = component.$$; fragment && fragment.m(target, anchor); if (!customElement) { // onMount happens before the initial afterUpdate add_render_callback(() => { - const new_on_destroy = on_mount.map(run).filter(is_function); - if (on_destroy) { - on_destroy.push(...new_on_destroy); + const new_on_destroy = component.$$.on_mount.map(run).filter(is_function); + // if the component was destroyed immediately + // it will update the `$$.on_destroy` reference to `null`. + // the destructured on_destroy may still reference to the old array + if (component.$$.on_destroy) { + component.$$.on_destroy.push(...new_on_destroy); } else { // Edge case - component was destroyed immediately, @@ -1464,7 +1197,7 @@ set_current_component(component); const $$ = component.$$ = { fragment: null, - ctx: null, + ctx: [], // state props, update: noop, @@ -1529,6 +1262,9 @@ this.$destroy = noop; } $on(type, callback) { + if (!is_function(callback)) { + return noop; + } const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = [])); callbacks.push(callback); return () => { @@ -1546,10 +1282,10 @@ } } - /* src\components\QuickButton.svelte generated by Svelte v3.44.1 */ + /* src\components\QuickButton.svelte generated by Svelte v3.55.1 */ function add_css(target) { - append_styles(target, "svelte-1so5nc2", "div.svelte-1so5nc2{padding:0;cursor:pointer}div.svelte-1so5nc2:disabled{cursor:default}.bsaber_bg.svelte-1so5nc2{background-image:url(\"https://bsaber.com/wp-content/themes/beastsaber-wp-theme/assets/img/avater-callback.png\");background-size:cover;background-repeat:no-repeat;background-position:center;width:100%;height:100%;border-radius:inherit}.dummy.svelte-1so5nc2{position:absolute;top:0px;left:-100000px}"); + append_styles(target, "svelte-sm24eh", "div.svelte-sm24eh{padding:0;cursor:pointer;z-index:10}div.svelte-sm24eh:disabled{cursor:default}.bsaber_bg.svelte-sm24eh{background-image:url(\"https://bsaber.com/wp-content/themes/beastsaber-wp-theme/assets/img/avater-callback.png\");background-size:cover;background-repeat:no-repeat;background-position:center;width:100%;height:100%;border-radius:inherit}.dummy.svelte-sm24eh{position:absolute;top:0px;left:-100000px}"); } // (113:26) @@ -1564,7 +1300,7 @@ t = space(); input = element("input"); attr(i, "class", "fas fa-exclamation"); - attr(input, "class", "dummy svelte-1so5nc2"); + attr(input, "class", "dummy svelte-sm24eh"); }, m(target, anchor) { insert(target, i, anchor); @@ -1627,7 +1363,7 @@ return { c() { div = element("div"); - attr(div, "class", "bsaber_bg svelte-1so5nc2"); + attr(div, "class", "bsaber_bg svelte-sm24eh"); }, m(target, anchor) { insert(target, div, anchor); @@ -1665,7 +1401,7 @@ return { c() { div = element("div"); - attr(div, "class", "beatsaver_bg svelte-1so5nc2"); + attr(div, "class", "beatsaver_bg svelte-sm24eh"); }, m(target, anchor) { insert(target, div, anchor); @@ -1699,7 +1435,7 @@ c() { div = element("div"); if (if_block) if_block.c(); - attr(div, "class", div_class_value = "button icon is-" + /*size*/ ctx[1] + " " + /*type*/ ctx[0] + "_bg_btn " + /*color*/ ctx[5] + " svelte-1so5nc2"); + attr(div, "class", div_class_value = "button icon is-" + /*size*/ ctx[1] + " " + /*type*/ ctx[0] + "_bg_btn " + /*color*/ ctx[5] + " svelte-sm24eh"); attr(div, "style", /*display*/ ctx[7]); attr(div, "disabled", /*disabled*/ ctx[8]); attr(div, "data-tooltip", /*tooltip*/ ctx[6]); @@ -1728,7 +1464,7 @@ } } - if (dirty & /*size, type, color*/ 35 && div_class_value !== (div_class_value = "button icon is-" + /*size*/ ctx[1] + " " + /*type*/ ctx[0] + "_bg_btn " + /*color*/ ctx[5] + " svelte-1so5nc2")) { + if (dirty & /*size, type, color*/ 35 && div_class_value !== (div_class_value = "button icon is-" + /*size*/ ctx[1] + " " + /*type*/ ctx[0] + "_bg_btn " + /*color*/ ctx[5] + " svelte-sm24eh")) { attr(div, "class", div_class_value); } @@ -1933,613 +1669,355 @@ } } - const PAGE$2 = "songlist"; - function setup_links_songlist() { - if (!is_songlist_page()) { - return; - } - const song_table = check(document.querySelector("table.ranking.songs")); - const song_table_header = check(song_table.querySelector("thead tr")); - for (const btn of BMButton) { - into(song_table_header, create("th", { - class: "compact", - style: bmvar(PAGE$2, btn, "table-cell"), - }, BMButtonHelp[btn].short)); - } - const song_rows = song_table.querySelectorAll("tbody tr"); - for (const row of song_rows) { - const song_hash = get_song_hash_from_row(row); - for (const btn of BMButton) { - into(row, create("th", { class: "compact", style: bmvar(PAGE$2, btn, "table-cell") }, as_fragment(target => new QuickButton({ - target, - props: { song_hash, size: "medium", type: btn } - })))); - } - } - } - function get_song_hash_from_row(row) { - const image_link = check(row.querySelector("td.song img")).src; - return get_song_hash_from_text(image_link); - } - function setup_extra_filter_checkboxes() { - if (!is_songlist_page()) { - return; - } - setup_duplicates_filter_checkbox(); - } - function setup_duplicates_filter_checkbox() { - var _a, _b; - const checked = should_hide_duplicate_songs(); - const duplicates_filter = create("label", { class: "checkbox" }, create("input", { - id: "duplicates", - type: "checkbox", - checked: checked, - onclick() { - set_hide_duplicate_songs_filter(!checked); - window.location.reload(); - } - })); - duplicates_filter.appendChild(document.createTextNode(" Hide duplicate songs ")); - const ranked_filter = check((_a = document.querySelector("input#ranked")) === null || _a === void 0 ? void 0 : _a.parentElement); - (_b = ranked_filter.parentNode) === null || _b === void 0 ? void 0 : _b.insertBefore(duplicates_filter, ranked_filter.nextSibling); - } - function apply_extra_filters() { - if (!is_songlist_page()) { - return; - } - if (should_hide_duplicate_songs()) { - hide_duplicate_songs(); - } - } - function hide_duplicate_songs() { - const song_table = check(document.querySelector("table.ranking.songs tbody")); - const song_rows = check(song_table.querySelectorAll("tr")); - const hashes = new Set(); - for (const row of song_rows) { - const song_hash = check(get_song_hash_from_row(row)); - if (hashes.has(song_hash)) { - song_table.removeChild(row); - } - else { - hashes.add(song_hash); - } - } - } - function should_hide_duplicate_songs() { - return localStorage.getItem("hide_songlist_duplicates") == "true"; - } - function set_hide_duplicate_songs_filter(filter) { - localStorage.setItem("hide_songlist_duplicates", JSON.stringify(filter)); - } - function is_songlist_page() { - return location.pathname == "/"; - } - - const api_cache = new SessionCache("beast"); - async function get_data(song_key) { - const cached_data = api_cache.get(song_key); - if (cached_data !== undefined) - return cached_data; - try { - const data_str = await fetch2(`https://bsaber.com/wp-json/bsaber-api/songs/${song_key}/ratings`); - const data = JSON.parse(data_str); - api_cache.set(song_key, data); - return data; - } - catch (e) { - return undefined; - } - } - async function get_bookmarks(username, page, count) { - try { - const data_str = await fetch2(`https://bsaber.com/wp-json/bsaber-api/songs/?bookmarked_by=${username}&page=${page}&count=${count}`); - const data = JSON.parse(data_str); - return data; - } - catch (e) { - return undefined; - } - } - - class Lazy { - constructor(generator) { - this.generator = generator; - } - get() { - if (this.generator !== undefined) { - this.value = this.generator(); - this.generator = undefined; - } - return this.value; - } - } - - const PAGE$1 = "song"; - const shared = new Lazy(() => { - var _a; - let details_box = check(document.querySelector(".content .title.is-5")); - details_box = check(details_box.parentElement); - const song_hash = get_song_hash_from_text(details_box.innerHTML); - const diff_name = (_a = document.querySelector(`div.tabs li.is-active span`)) === null || _a === void 0 ? void 0 : _a.innerText; - return { song_hash, details_box, diff_name }; - }); - function setup_song_filter_tabs() { - if (!is_song_leaderboard_page()) { - return; - } - const tab_list_content = check(document.querySelector(".tabs > ul")); - function load_friends() { - let score_table = check(document.querySelector(".ranking .global > tbody")); - Global.song_table_backup = score_table; - const table = check(score_table.parentNode); - table.removeChild(score_table); - score_table = table.appendChild(create("tbody")); - const song_id = Global.leaderboard_reg.exec(window.location.pathname)[1]; - const elements = []; - for (const [user_id, user] of Object.entries(Global.user_list)) { - const song = user.songs[song_id]; - if (!song) - continue; - elements.push([song, generate_song_table_row(user_id, user, song)]); - } - elements.sort((a, b) => { const [sa, sb] = get_song_compare_value(a[0], b[0]); return sb - sa; }); - elements.forEach(x => score_table.appendChild(x[1])); - add_percentage$1(); - } - function load_all() { - if (!Global.song_table_backup) { - return; - } - let score_table = check(document.querySelector(".ranking .global > tbody")); - const table = check(score_table.parentNode); - table.removeChild(score_table); - score_table = table.appendChild(Global.song_table_backup); - Global.song_table_backup = undefined; - add_percentage$1(); - } - tab_list_content.appendChild(generate_tab("All Scores", "all_scores_tab", load_all, true, true)); - tab_list_content.appendChild(generate_tab("Friends", "friends_tab", load_friends, false, false)); - } - function setup_dl_link_leaderboard() { - if (!is_song_leaderboard_page()) { - return; - } - const { song_hash, details_box } = shared.get(); - const tool_strip = create("div", { - id: "leaderboard_tool_strip", - style: { - marginTop: "1em" - } - }); - for (const btn of BMButton) { - new QuickButton({ - target: tool_strip, - props: { song_hash, size: "large", type: btn, page: PAGE$1 } - }); - } - details_box.appendChild(tool_strip); - const song_warning = create("div"); - details_box.appendChild(song_warning); - const box_style = { class: "box", style: { display: "flex", flexDirection: "column", alignItems: "end", padding: "0.5em 1em" } }; - const beatsaver_box = create("div", box_style, create("b", {}, "BeatSaver"), create("span", { class: "icon" }, create("i", { class: "fas fa-spinner fa-pulse" }))); - const beastsaber_box = create("div", box_style, create("b", {}, "BeastSaber"), create("span", { class: "icon" }, create("i", { class: "fas fa-spinner fa-pulse" }))); - const column_style = { class: "column", style: { padding: "0 0.75em" } }; - details_box.appendChild(create("div", { - class: "columns", - style: { - marginTop: "1em" - } - }, create("div", column_style, beatsaver_box), create("div", column_style, beastsaber_box))); - if (!song_hash) - return; - (async () => { - const data = await get_data_by_hash(song_hash); - if (!data) - return; - show_song_warning(song_warning, song_hash, data); - show_beatsaver_song_data(beatsaver_box, data); - const data2 = await get_data(data.id); - if (!data2) - return; - show_beastsaber_song_data(beastsaber_box, data2); - })(); - } - function show_song_warning(elem, song_hash, data) { - const contains_version = data.versions.some(x => x.hash === song_hash); - if (!contains_version) { - const new_song_hash = data.versions[data.versions.length - 1].hash; - const { diff_name } = shared.get(); - intor(elem, create("div", { - style: { marginTop: "1em", cursor: "pointer" }, - class: "notification is-warning", - onclick: async () => { - const bs2ss = await get_scoresaber_data_by_hash(new_song_hash, diff_name); - if (bs2ss === undefined) - return; - new_page(`https://scoresaber.com/leaderboard/${bs2ss.uid}`); - }, - }, create("i", { class: "fas fa-exclamation-triangle" }), create("span", { style: { marginLeft: "0.25em" } }, "A newer version of this song exists on BeatSaver"))); - } - } - function show_beatsaver_song_data(elem, data) { - intor(elem, create("div", { title: "Downloads" }, `${data.stats.downloads} 💾`), create("div", { title: "Upvotes" }, `${data.stats.upvotes} 👍`), create("div", { title: "Downvotes" }, `${data.stats.downvotes} 👎`), create("div", { title: "Beatmap Rating" }, `${(data.stats.score * 100).toFixed(2)}% 💯`), create("div", { title: "Beatmap Duration" }, `${number_to_timespan(data.metadata.duration)} ⏱`)); - } - function show_beastsaber_song_data(elem, data) { - intor(elem, create("div", { title: "Fun Factor" }, `${data.average_ratings.fun_factor} 😃`), create("div", { title: "Rhythm" }, `${data.average_ratings.rhythm} 🎶`), create("div", { title: "Flow" }, `${data.average_ratings.flow} 🌊`), create("div", { title: "Pattern Quality" }, `${data.average_ratings.pattern_quality} 💠`), create("div", { title: "Readability" }, `${data.average_ratings.readability} 👓`), create("div", { title: "Level Quality" }, `${data.average_ratings.level_quality} ✔️`)); - } - function generate_song_table_row(user_id, user, song) { - return create("tr", {}, create("td", { class: "picture" }), create("td", { class: "rank" }, "-"), create("td", { class: "player" }, generate_song_table_player(user_id, user)), create("td", { class: "score" }, song.score !== undefined ? format_en(song.score, 0) : "-"), create("td", { class: "timeset" }, moment(song.time).fromNow()), create("td", { class: "mods" }, song.mods !== undefined ? song.mods.toString() : "-"), create("td", { class: "percentage" }, song.accuracy ? (song.accuracy.toString() + "%") : "-"), create("td", { class: "pp" }, create("span", { class: "scoreTop ppValue" }, format_en(song.pp)), create("span", { class: "scoreTop ppLabel" }, "pp"))); - } - function generate_song_table_player(user_id, user) { - return create("a", { href: `${Global.scoresaber_link}/u/${user_id}` }, user.name); - } - function generate_tab(title, css_id, action, is_active, has_offset) { - const tabClass = `filter_tab ${toggled_class(is_active, "is-active")} ${toggled_class(has_offset, "offset_tab")}`; - return create("li", { - id: css_id, - class: tabClass, - }, create("a", { - class: "has-text-info", - onclick: () => { - document.querySelectorAll(".tabs > ul .filter_tab").forEach(x => x.classList.remove("is-active")); - check(document.getElementById(css_id)).classList.add("is-active"); - if (action) - action(); - } - }, title)); - } - function highlight_user() { - const home_user = get_home_user(); - if (!home_user) { - return; - } - const element = document.querySelector(`table.ranking.global a[href='/u/${home_user.id}']`); - if (element != null) { - element.parentElement.parentElement.style.backgroundColor = "var(--color-highlight)"; - } - } - function add_percentage$1() { - if (!is_song_leaderboard_page()) { - return; - } - const { song_hash, diff_name } = shared.get(); - if (!song_hash) { - return; - } - (async () => { - const data = await get_data_by_hash(song_hash); - if (!data) - return; - if (!diff_name) - return; - const version = data.versions.find((v) => v.hash === song_hash.toLowerCase()); - if (!diff_name || !version) - return; - const notes = get_notes_count(diff_name, "Standard", version); - if (notes < 0) - return; - const max_score = calculate_max_score(notes); - const user_scores = document.querySelectorAll("table.ranking.global tbody > tr"); - for (const score_row of user_scores) { - const percentage_column = check(score_row.querySelector("td.percentage")); - const percentage_value = percentage_column.innerText; - if (percentage_value === "-") { - const score = check(score_row.querySelector("td.score")).innerText; - const score_num = number_invariant(score); - const calculated_percentage = (100 * score_num / max_score).toFixed(2); - percentage_column.innerText = calculated_percentage + "%"; - } - } - })(); - } - - const PAGE = "user"; - function setup_dl_link_user_site() { - if (!is_user_page()) { - return; - } - const table = check(document.querySelector("table.ranking.songs")); - const table_tr = check(table.querySelector("thead tr")); - for (const btn of BMButton) { - into(table_tr, create("th", { - class: "compact", - style: bmvar(PAGE, btn, "table-cell"), - }, BMButtonHelp[btn].short)); - } - const table_row = table.querySelectorAll("tbody tr"); - for (const row of table_row) { - const image_link = check(row.querySelector("th.song img")).src; - const song_hash = get_song_hash_from_text(image_link); - for (const btn of BMButton) { - into(row, create("th", { class: "compact", style: bmvar(PAGE, btn, "table-cell") }, as_fragment(target => new QuickButton({ - target, - props: { song_hash, size: "medium", type: btn } - })))); - } - } - } - function update_wide_table_css() { - if (!is_user_page()) { - return; - } - const table = check(document.querySelector("table.ranking.songs")); - table.classList.toggle("wide_song_table", get_wide_table()); - } - function setup_user_rank_link_swap() { - if (!is_user_page()) { - return; - } - const elem_ranking_links = document.querySelectorAll(".content div.columns ul > li > a"); - console.assert(elem_ranking_links.length >= 2, elem_ranking_links); - const elem_global = elem_ranking_links[0]; - const res_global = check(Global.leaderboard_rank_reg.exec(elem_global.innerText)); - const rank_global = number_invariant(res_global[1]); - elem_global.href = Global.scoresaber_link + "/global/" + rank_to_page(rank_global, Global.user_per_page_global_leaderboard); - const elem_country = elem_ranking_links[1]; - const res_country = check(Global.leaderboard_rank_reg.exec(elem_country.innerText)); - const country_str = check(Global.leaderboard_country_reg.exec(elem_country.href)); - const number_country = number_invariant(res_country[1]); - elem_country.href = Global.scoresaber_link + - "/global/" + rank_to_page(number_country, Global.user_per_page_global_leaderboard) + - "?country=" + country_str[2]; - } - function setup_song_rank_link_swap() { - if (!is_user_page()) { - return; - } - const song_elems = document.querySelectorAll("table.ranking.songs tbody tr"); - for (const row of song_elems) { - const rank_elem = check(row.querySelector(".rank")); - const leaderboard_link = check(row.querySelector("th.song a")).href; - const rank = number_invariant(rank_elem.innerText.slice(1)); - const rank_str = rank_elem.innerText; - rank_elem.innerHTML = ""; - into(rank_elem, create("a", { - href: `${leaderboard_link}?page=${rank_to_page(rank, Global.user_per_page_song_leaderboard)}` - }, rank_str)); - } - } - function rank_to_page(rank, ranks_per_page) { - return Math.max(Math.floor((rank + ranks_per_page - 1) / ranks_per_page), 1); - } - function add_percentage() { - if (!is_user_page()) { - return; - } - const table = check(document.querySelector("table.ranking.songs")); - const table_row = table.querySelectorAll("tbody tr"); - for (const row of table_row) { - const image_link = check(row.querySelector("th.song img")).src; - const song_hash = get_song_hash_from_text(image_link); - if (!song_hash) { - return; - } - const score_column = check(row.querySelector(`th.score`)); - if (!score_column.innerText || score_column.innerText.includes("%")) { - continue; - } - (async () => { - const data = await get_data_by_hash(song_hash); - if (!data) - return; - const song_column = check(row.querySelector(`th.song`)); - const diff_name = check(song_column.querySelector(`span > span`)).innerText; - const version = data.versions.find((v) => v.hash === song_hash.toLowerCase()); - if (!diff_name || !version) - return; - const notes = get_notes_count(diff_name, "Standard", version); - if (notes < 0) - return; - const max_score = calculate_max_score(notes); - const user_score = check(score_column.querySelector(".scoreBottom")).innerText; - const { score } = parse_score_bottom(user_score); - if (score !== undefined) { - const calculated_percentage = (100 * score / max_score).toFixed(2); - check(score_column.querySelector(".ppWeightedValue")).innerHTML = `(${calculated_percentage}%)`; - } - })(); - } - } - - function get_state(elem) { - return !elem.classList.contains(elem.view_class); - } - function set_state(elem, state) { - if (state) { - elem.classList.remove(elem.view_class); - } - else { - elem.classList.add(elem.view_class); - } - } - function button(opt) { - var _a, _b; - const btn = create("div", { - class: "button" - }, opt.text); - btn.view_class = `is-${(_a = opt.type) !== null && _a !== void 0 ? _a : "primary"}`; - btn.on = () => { - var _a; - set_state(btn, true); - (_a = opt.onclick) === null || _a === void 0 ? void 0 : _a.call(btn, true); - }; - btn.off = () => { - var _a; - set_state(btn, false); - (_a = opt.onclick) === null || _a === void 0 ? void 0 : _a.call(btn, false); - }; - btn.toggle = () => { - var _a; - const state = !get_state(btn); - set_state(btn, state); - (_a = opt.onclick) === null || _a === void 0 ? void 0 : _a.call(btn, state); - }; - btn.onclick = () => { - if (btn.getAttribute("disabled") == null) { - btn.toggle(); - } - }; - set_state(btn, (_b = opt.default) !== null && _b !== void 0 ? _b : false); - return btn; - } - - let chart; - let chart_elem; - let chart_button; - function setup_pp_graph() { - if (!is_user_page()) { - return; - } - chart_elem = create("canvas"); - const chart_container = create("div", { - style: { - width: "100%", - height: "20em", - display: "none", - } - }, chart_elem); - insert_compare_display(chart_container); - chart_button = button({ - default: false, - text: "Show pp Graph", - onclick(active) { - if (!chart_elem) - return; - this.innerText = (active ? "Hide" : "Show") + " pp Graph"; - set_pp_graph_visibility(chart_container, active); - } - }); - insert_compare_feature(chart_button); - update_pp_graph_buttons(); - SseEvent.UserCacheChanged.register(update_pp_graph_buttons); - SseEvent.CompareUserChanged.register(update_pp_graph); - } - async function chartUserData(canvasContext, datasets, labels) { - if (chart !== undefined) { - chart.data = { - labels, - datasets - }; - chart.update(); - return; - } - if (!await load_chart_lib()) - return; - chart = new Chart(canvasContext, { - type: "line", - data: { - labels, - datasets, - }, - options: { - responsive: true, - maintainAspectRatio: false, - elements: { - point: { - radius: 2, - } - }, - tooltips: { - callbacks: { - label: tooltipItem => String(tooltipItem.yLabel), - title: () => "", - } - }, - scales: { - xAxes: [{ - display: false, - }] - } - }, - }); - } - function get_graph_data(user_id) { - const user = Global.user_list[user_id]; - if (user === undefined) - return []; - const data = []; - const data_scaled = []; - Object.values(user.songs) - .filter((song) => song.pp > 0) - .sort((a, b) => b.pp - a.pp) - .forEach((song, index) => { - const pp = song.pp; - data.push(pp); - data_scaled.push(+(pp * Math.pow(Global.pp_weighting_factor, index)).toFixed(2)); - }); - const color = (Number(user_id) % 3600) / 10; - return [{ - label: `${user.name} (song pp)`, - backgroundColor: `hsl(${color}, 100%, 50%)`, - borderColor: `hsl(${color}, 100%, 50%)`, - fill: false, - data, - }, { - label: `${user.name} (weighted pp)`, - backgroundColor: `hsl(${color}, 60%, 25%)`, - borderColor: `hsl(${color}, 60%, 25%)`, - fill: false, - data: data_scaled, - }]; - } - function update_pp_graph() { - if (chart_elem === undefined) - return; - let dataSets = get_graph_data(get_current_user().id); - const compare_user = get_compare_user(); - if (get_current_user().id !== compare_user && compare_user !== undefined) - dataSets = [...dataSets, ...get_graph_data(compare_user)]; - let max = 0; - for (const set of dataSets) { - max = Math.max(max, set.data.length); - } - for (const set of dataSets) { - if (set.data.length < max) { - set.data.length = max; - set.data.fill(0, set.data.length, max); - } - } - const labels = Array(max); - labels.fill("Song", 0, max); - chartUserData(check(chart_elem.getContext("2d")), dataSets, labels); - } - function update_pp_graph_buttons() { - if (!chart_button) { - return; - } - const user = get_current_user(); - if (Global.user_list[user.id] === undefined) { - chart_button.setAttribute("disabled", ""); - chart_button.setAttribute("data-tooltip", "Add the user to your score cache for this feature"); - chart_button.off(); - } - else { - chart_button.removeAttribute("disabled"); - chart_button.removeAttribute("data-tooltip"); - } - } - function set_pp_graph_visibility(elem, active) { - if (active) { - if (!chart) { - update_pp_graph(); - } - elem.style.display = ""; - } - else { - elem.style.display = "none"; - } - } - - const themes = ["Default", "Cerulean", "Cosmo", "Cyborg", "Darkly", "Flatly", - "Journal", "Litera", "Lumen", "Lux", "Materia", "Minty", "Nuclear", "Pulse", - "Sandstone", "Simplex", "Slate", "Solar", "Spacelab", "Superhero", "United", - "Yeti"]; - const dark_themes = ["Cyborg", "Darkly", "Nuclear", "Slate", "Solar", "Superhero"]; + const PAGE$1 = "song"; + class shared { + static async get() { + if (this._current_page === window.location.pathname) { + const song_hash = this.song_hash, details_box = this.details_box, diff_name = this.diff_name, game_mode = this.game_mode; + return { song_hash, details_box, diff_name, game_mode }; + } + this.details_box = check(document.querySelector(".title.is-5").parentElement.parentElement.parentElement); + const id = window.location.pathname.split('/').pop(); + if (this._leaderboard_info[id] === undefined) { + console.log(`Refresh, ${this._current_href} !== ${window.location.href} ${this.song_hash}`); + this._leaderboard_info[id] = get_leaderboard_info(id); + } + const leaderboard_info = await this._leaderboard_info[id]; + this.song_hash = leaderboard_info.songHash.toLowerCase(); + this.diff_name = leaderboard_info.difficulty.difficultyRaw.split("_")[1]; + this.game_mode = leaderboard_info.difficulty.gameMode.replace("Solo", ""); + this._current_page = window.location.pathname; + const song_hash = this.song_hash, details_box = this.details_box, diff_name = this.diff_name, game_mode = this.game_mode; + return { song_hash, details_box, diff_name, game_mode }; + } + } + shared._leaderboard_info = {}; + function setup_song_filter_tabs() { + if (!is_song_leaderboard_page()) { + return; + } + const tab_list_content = check(document.querySelector(".tabs > ul")); + function load_friends() { + let score_table = check(document.querySelector(".ranking .global > tbody")); + Global.song_table_backup = score_table; + const table = check(score_table.parentNode); + table.removeChild(score_table); + score_table = table.appendChild(create("tbody")); + const song_id = Global.leaderboard_reg.exec(window.location.pathname)[1]; + const elements = []; + for (const [user_id, user] of Object.entries(Global.user_list)) { + const song = user.songs[song_id]; + if (!song) + continue; + elements.push([song, generate_song_table_row(user_id, user, song)]); + } + elements.sort((a, b) => { const [sa, sb] = get_song_compare_value(a[0], b[0]); return sb - sa; }); + elements.forEach(x => score_table.appendChild(x[1])); + } + function load_all() { + if (!Global.song_table_backup) { + return; + } + let score_table = check(document.querySelector(".ranking .global > tbody")); + const table = check(score_table.parentNode); + table.removeChild(score_table); + score_table = table.appendChild(Global.song_table_backup); + Global.song_table_backup = undefined; + } + tab_list_content.appendChild(generate_tab("All Scores", "all_scores_tab", load_all, true, true)); + tab_list_content.appendChild(generate_tab("Friends", "friends_tab", load_friends, false, false)); + } + async function setup_dl_link_leaderboard() { + if (!is_song_leaderboard_page()) { + return; + } + const { song_hash, details_box } = await shared.get(); + const tool_strip = create("div", { + id: "leaderboard_tool_strip", + style: { + marginTop: "1em" + } + }); + for (const btn of BMButton) { + new QuickButton({ + target: tool_strip, + props: { song_hash, size: "large", type: btn, page: PAGE$1 } + }); + } + details_box.appendChild(tool_strip); + const song_warning = create("div"); + details_box.appendChild(song_warning); + const box_style = { class: "box", style: { display: "flex", flexDirection: "column", alignItems: "end", padding: "0.5em 1em" } }; + const beatsaver_box = create("div", box_style, create("b", {}, "BeatSaver"), create("span", { class: "icon" }, create("i", { class: "fas fa-spinner fa-pulse" }))); + const beastsaber_box = create("div", box_style, create("b", {}, "BeastSaber"), create("span", { class: "icon" }, create("i", { class: "fas fa-spinner fa-pulse" }))); + const column_style = { class: "column", style: { padding: "0 0.75em" } }; + details_box.appendChild(create("div", { + class: "columns", + style: { + marginTop: "1em" + } + }, create("div", column_style, beatsaver_box), create("div", column_style, beastsaber_box))); + if (!song_hash) + return; + (async () => { + const data = await get_data_by_hash(song_hash); + if (!data) + return; + show_song_warning(song_warning, song_hash, data); + show_beatsaver_song_data(beatsaver_box, data); + const data2 = await get_data(data.id); + if (!data2) + return; + show_beastsaber_song_data(beastsaber_box, data2); + })(); + } + async function show_song_warning(elem, song_hash, data) { + const contains_version = data.versions.some(x => x.hash === song_hash); + if (!contains_version) { + const new_song_hash = data.versions[data.versions.length - 1].hash; + const { diff_name } = await shared.get(); + intor(elem, create("div", { + style: { marginTop: "1em", cursor: "pointer" }, + class: "notification is-warning", + onclick: async () => { + const bs2ss = await undefined(new_song_hash, diff_name); + if (bs2ss === undefined) + return; + new_page(`https://scoresaber.com/leaderboard/${bs2ss.uid}`); + }, + }, create("i", { class: "fas fa-exclamation-triangle" }), create("span", { style: { marginLeft: "0.25em" } }, "A newer version of this song exists on BeatSaver"))); + } + } + function show_beatsaver_song_data(elem, data) { + intor(elem, create("div", { title: "Downloads" }, `${data.stats.downloads} 💾`), create("div", { title: "Upvotes" }, `${data.stats.upvotes} 👍`), create("div", { title: "Downvotes" }, `${data.stats.downvotes} 👎`), create("div", { title: "Beatmap Rating" }, `${(data.stats.score * 100).toFixed(2)}% 💯`), create("div", { title: "Beatmap Duration" }, `${number_to_timespan(data.metadata.duration)} ⏱`)); + } + function show_beastsaber_song_data(elem, data) { + intor(elem, create("div", { title: "Fun Factor" }, `${data.average_ratings.fun_factor} 😃`), create("div", { title: "Rhythm" }, `${data.average_ratings.rhythm} 🎶`), create("div", { title: "Flow" }, `${data.average_ratings.flow} 🌊`), create("div", { title: "Pattern Quality" }, `${data.average_ratings.pattern_quality} 💠`), create("div", { title: "Readability" }, `${data.average_ratings.readability} 👓`), create("div", { title: "Level Quality" }, `${data.average_ratings.level_quality} ✔️`)); + } + function generate_song_table_row(user_id, user, song) { + return create("tr", {}, create("td", { class: "picture" }), create("td", { class: "rank" }, "-"), create("td", { class: "player" }, generate_song_table_player(user_id, user)), create("td", { class: "score" }, song.score !== undefined ? format_en(song.score, 0) : "-"), create("td", { class: "timeset" }, moment(song.time).fromNow()), create("td", { class: "mods" }, song.mods !== undefined ? song.mods.toString() : "-"), create("td", { class: "percentage" }, song.accuracy ? (song.accuracy.toString() + "%") : "-"), create("td", { class: "pp" }, create("span", { class: "scoreTop ppValue" }, format_en(song.pp)), create("span", { class: "scoreTop ppLabel" }, "pp"))); + } + function generate_song_table_player(user_id, user) { + return create("a", { href: `${Global.scoresaber_link}/u/${user_id}` }, user.name); + } + function generate_tab(title, css_id, action, is_active, has_offset) { + const tabClass = `filter_tab ${toggled_class(is_active, "is-active")} ${toggled_class(has_offset, "offset_tab")}`; + return create("li", { + id: css_id, + class: tabClass, + }, create("a", { + class: "has-text-info", + onclick: () => { + document.querySelectorAll(".tabs > ul .filter_tab").forEach(x => x.classList.remove("is-active")); + check(document.getElementById(css_id)).classList.add("is-active"); + if (action) + action(); + } + }, title)); + } + function highlight_user() { + const home_user = get_home_user(); + if (!home_user) { + return; + } + const element = document.querySelector(`table.ranking.global a[href='/u/${home_user.id}']`); + if (element != null) { + element.parentElement.parentElement.style.backgroundColor = "var(--color-highlight)"; + } + } + async function prepare_table(table) { + if (!is_song_leaderboard_page()) { + return; + } + const header = table.querySelector(".header"); + for (const heading of header.children) { + if (heading.innerText === "Accuracy") { + return; + } + } + const columns = header.children.length; + table.style.setProperty("--columns", `1fr 5fr repeat(${columns - 1}, 2fr)`); + into(header, create("div", { "class": `centered ${table.classList[1]}` }, "Accuracy")); + } + async function add_percentage$1(row) { + if (!is_song_leaderboard_page()) { + return; + } + if (row.querySelector('.accuracy')) { + return; + } + const { song_hash, diff_name, game_mode } = await shared.get(); + if (!song_hash) { + return; + } + const data = await get_data_by_hash(song_hash); + if (!data) + return; + if (!diff_name) + return; + const version = data.versions.find((v) => v.hash === song_hash.toLowerCase()); + if (!diff_name || !version) + return; + const notes = get_notes_count(diff_name, game_mode, version); + if (notes < 0) + return; + const max_score = calculate_max_score(notes); + const score = check(row.querySelector(".score")).innerText; + const score_num = number_invariant(score); + const calculated_percentage = (100 * score_num / max_score).toFixed(2); + into(row, create("div", { "class": `accuracy centered ${row.classList[1]}` }, `${calculated_percentage}%`)); + } + + async function fetch_user(user_id, force = false) { + var _a, _b; + let user = Global.user_list[user_id]; + if (!user) { + user = { + name: "User" + user_id, + songs: {} + }; + Global.user_list[user_id] = user; + } + let page_max = undefined; + let user_name = user.name; + let updated = false; + SseEvent.StatusInfo.invoke({ text: `Fetching user ${user_name}` }); + if (get_use_new_ss_api()) { + const user_data = await get_user_info_basic(user_id); + user_name = user_data.playerInfo.playerName; + } + for (let page = 1;; page++) { + SseEvent.StatusInfo.invoke({ text: `Updating user ${user_name} page ${page}/${(page_max !== null && page_max !== void 0 ? page_max : "?")}` }); + const recent_songs = await get_user_recent_songs_dynamic(user_id, page); + const { has_old_entry, has_updated } = process_user_page(recent_songs.songs, user); + updated = updated || has_updated; + page_max = (_a = recent_songs.meta.max_pages) !== null && _a !== void 0 ? _a : page_max; + user_name = (_b = recent_songs.meta.user_name) !== null && _b !== void 0 ? _b : user_name; + if ((!force && has_old_entry) || recent_songs.meta.was_last_page) { + break; + } + } + user.name = user_name !== null && user_name !== void 0 ? user_name : user.name; + if (updated) { + save(); + } + SseEvent.StatusInfo.invoke({ text: `User ${user_name} updated` }); + SseEvent.UserCacheChanged.invoke(); + } + async function fetch_all(force = false) { + const users = Object.keys(Global.user_list); + for (const user of users) { + await fetch_user(user, force); + } + SseEvent.StatusInfo.invoke({ text: `All users updated` }); + } + function process_user_page(songs, user) { + let has_old_entry = false; + let has_updated = false; + for (const [song_id, song] of songs) { + const song_old = user.songs[song_id]; + if (!song_old || !song_equals(song_old, song)) { + logc("Updated: ", song_old, song); + has_updated = true; + } + else { + logc("Old found: ", song); + has_old_entry = true; + } + user.songs[song_id] = song; + } + return { has_old_entry, has_updated }; + } + + const PAGE = "user"; + function setup_cache_button() { + if (!is_user_page()) { + return; + } + const header = get_user_header(); + header.style.display = "flex"; + header.style.alignItems = "center"; + const user = get_current_user(); + into(header, create("div", { + class: "button icon is-medium", + style: { cursor: "pointer" }, + data: { tooltip: Global.user_list[user.id] ? "Update score cache" : "Add user to your score cache" }, + async onclick() { + await fetch_user(get_current_user().id); + }, + }, create("i", { class: ["fas", Global.user_list[user.id] ? "fa-sync" : "fa-bookmark"] }))); + const status_elem = create("div"); + into(header, status_elem); + SseEvent.StatusInfo.register((status) => intor(status_elem, status.text)); + } + function setup_dl_link_user_site(row) { + if (!is_user_page()) { + return; + } + const image_link = check(row.querySelector(".song-container img")).src; + const song_hash = get_song_hash_from_text(image_link); + const col = row.querySelector('.scoreInfo'); + const div = create("div", { class: col.classList[1] }); + into(col, div); + for (const btn of BMButton) { + into(div, create("span", { class: `stat clickable ${col.classList[1]}`, style: bmvar(PAGE, btn, "table-cell") }, as_fragment(target => new QuickButton({ + target, + props: { song_hash, size: "medium", type: btn } + })))); + } + } + function update_wide_table_css() { + if (!is_user_page()) { + return; + } + const table = check(document.querySelector(".ranking.songs")); + table.classList.toggle("wide_song_table", get_wide_table()); + } + function add_percentage(row) { + if (!is_user_page()) { + return; + } + const image_link = check(row.querySelector("img.song-image")).src; + const song_hash = get_song_hash_from_text(image_link); + if (!song_hash) { + return; + } + const score_column = row.querySelector(".stat.acc"); + if (score_column) { + return; + } + (async () => { + const data = await get_data_by_hash(song_hash); + if (!data) + return; + const diff_name = check(row.querySelector(".tag")).title; + const version = data.versions.find((v) => v.hash === song_hash.toLowerCase()); + if (!diff_name || !version) + return; + const notes = get_notes_count(diff_name, "Standard", version); + if (notes < 0) + return; + const max_score = calculate_max_score(notes); + const user_score = check(row.querySelector(".scoreInfo > div:first-of-type > .stat:first-of-type")).innerText; + const { score } = parse_score_bottom(user_score); + if (score !== undefined) { + const calculated_percentage = (100 * score / max_score).toFixed(2); + const score_row = row.querySelector(".scoreInfo > div:first-of-type"); + score_row.insertBefore(create("span", { "class": `stat acc ${score_row.classList[0]}` }, `${calculated_percentage}%`), score_row.children[0]); + } + })(); + } + + const themes = ["Default", "Cerulean", "Cosmo", "Cyborg", "Darkly", "Flatly", + "Journal", "Litera", "Lumen", "Lux", "Materia", "Minty", "Nuclear", "Pulse", + "Sandstone", "Simplex", "Slate", "Solar", "Spacelab", "Superhero", "United", + "Yeti"]; + const dark_themes = ["Cyborg", "Darkly", "Nuclear", "Slate", "Solar", "Superhero"]; const theme_light = `:root { --color-ahead: rgb(128, 255, 128); --color-behind: rgb(255, 128, 128); --color-highlight: lightgreen; -}`; +}`; const theme_dark = `:root { --color-ahead: rgb(0, 128, 0); --color-behind: rgb(128, 0, 0); @@ -2554,8 +2032,8 @@ span.songBottom.time, span.scoreBottom, span.scoreTop.ppWeightedValue { } span.songTop.pp, span.scoreTop.ppValue, span.scoreTop.ppLabel, span.songTop.mapper { text-shadow: 1px 1px 2px #000; -}`; - function setup$1() { +}`; + function setup$1() { const style_data = `.compact { padding-right: 0 !important; padding-left: 0 !important; @@ -2672,12 +2150,12 @@ h5 > * { color: var(--textColor, black); background-color: var(--background, white); } -`; - SSE_addStyle(style_data); - into(document.head, create("link", { rel: "stylesheet", href: "https://cdn.jsdelivr.net/npm/bulma-checkradio/dist/css/bulma-checkradio.min.css" })); +`; + SSE_addStyle(style_data); + into(document.head, create("link", { rel: "stylesheet", href: "https://cdn.jsdelivr.net/npm/bulma-checkradio/dist/css/bulma-checkradio.min.css" })); } - /* src\components\SettingsDialogue.svelte generated by Svelte v3.44.1 */ + /* src\components\SettingsDialogue.svelte generated by Svelte v3.55.1 */ function get_each_context(ctx, list, i) { const child_ctx = ctx.slice(); @@ -2711,7 +2189,6 @@ h5 > * { let t1_value = (dark_themes.includes(/*name*/ ctx[23]) ? " (Dark)" : "") + ""; let t1; let t2; - let option_value_value; let option_selected_value; return { @@ -2720,7 +2197,7 @@ h5 > * { t0 = text(t0_value); t1 = text(t1_value); t2 = space(); - option.__value = option_value_value = /*name*/ ctx[23]; + option.__value = /*name*/ ctx[23]; option.value = option.__value; option.selected = option_selected_value = /*name*/ ctx[23] === /*current_theme*/ ctx[0]; }, @@ -3265,7 +2742,7 @@ h5 > * { each_blocks.length = each_value.length; } - if (dirty & /*isBeastSaberSyncing*/ 2) { + if (!current || dirty & /*isBeastSaberSyncing*/ 2) { toggle_class(i1, "fa-spin", /*isBeastSaberSyncing*/ ctx[1]); } }, @@ -3428,175 +2905,163 @@ h5 > * { } } - let notify_box; - let settings_modal; - function setup() { - notify_box = create("div", { class: "field" }); - const cog = create("i", { class: "fas fa-cog" }); - into(get_navbar(), create("a", { - id: "settings_menu", - class: "navbar-item", - style: { - cursor: "pointer", - }, - onclick: () => show_settings_lazy(), - }, cog)); - SseEvent.UserNotification.register(() => { - const ntfys = SseEvent.getNotifications(); - if (ntfys.length > 0) { - cog.classList.remove("fa-cog"); - cog.classList.add("fa-bell"); - cog.style.color = "yellow"; - } - else { - cog.classList.remove("fa-bell"); - cog.classList.add("fa-cog"); - cog.style.color = ""; - } - if (!notify_box) - return; - clear_children(notify_box); - for (const ntfy of ntfys) { - into(notify_box, create("div", { class: `notification is-${ntfy.type}` }, ntfy.msg)); - } - }); - } - function show_settings_lazy() { - if (settings_modal) { - settings_modal.show(); - return; - } - const status_box = create("div", {}); - SseEvent.StatusInfo.register((status) => intor(status_box, status.text)); - const set_div = create("div"); - new SettingsDialogue({ target: set_div }); - settings_modal = create_modal({ - title: "Options", - text: set_div, - footer: status_box, - type: "card", - default: true, - }); - } - async function settings_set_theme(name) { - let css = ""; - if (name !== "Default") { - css = await fetch2(`https://unpkg.com/bulmaswatch/${name.toLowerCase()}/bulmaswatch.min.css`); - } - localStorage.setItem("theme_name", name); - localStorage.setItem("theme_css", css); - load_theme(name, css); - } - function load_last_theme() { - let theme_name = localStorage.getItem("theme_name"); - let theme_css = localStorage.getItem("theme_css"); - if (!theme_name || !theme_css) { - theme_name = "Default"; - theme_css = ""; - } - load_theme(theme_name, theme_css); - } - function load_theme(name, css) { - let css_fin; - if (get_scoresaber_darkmode() || dark_themes.includes(name)) { - css_fin = css + " " + theme_dark; - } - else { - css_fin = css + " " + theme_light; - } - if (!Global.style_themed_elem) { - Global.style_themed_elem = SSE_addStyle(css_fin); - } - else { - Global.style_themed_elem.innerHTML = css_fin; - } - } - function get_scoresaber_darkmode() { - return document.cookie.includes("dark=1"); - } - function update_button_visibility() { - const bm = get_button_matrix(); - for (const pb of BMPageButtons) { - const showButton = bm[pb] || false; - document.documentElement.style.setProperty(`--sse-show-${pb}`, showButton ? "unset" : "none"); - } - } - - async function check_for_updates() { - const current_version = SSE_info.script.version; - const update_check = localStorage.getItem("update_check"); - if (update_check && Number(update_check) >= new Date().getTime()) { - return; - } - const latest_script = await fetch2(`https://raw.githubusercontent.com/Splamy/ScoreSaberEnhanced/master/scoresaber.user.js`); - const latest_version = Global.script_version_reg.exec(latest_script)[1]; - if (current_version !== latest_version) { - SseEvent.addNotification({ msg: "An update is available", type: "warning" }); - } - else { - const now = new Date(); - now.setDate(now.getDate() + 1); - localStorage.setItem("update_check", now.getTime().toString()); - } - } - - setup$3(); - setup$2(); - load(); - let has_loaded_head = false; - function on_load_head() { - if (!document.head) { - logc("Head not ready"); - return; - } - if (has_loaded_head) { - logc("Already loaded head"); - return; - } - has_loaded_head = true; - logc("Loading head"); - setup$1(); - load_last_theme(); - } - let has_loaded_body = false; - function on_load_body() { - if (document.readyState !== "complete" && document.readyState !== "interactive") { - logc("Body not ready"); - return; - } - if (has_loaded_body) { - logc("Already loaded body"); - return; - } - has_loaded_body = true; - logc("Loading body"); - setup_dl_link_user_site(); - add_percentage(); - setup_user_rank_link_swap(); - setup_song_rank_link_swap(); - update_wide_table_css(); - setup_dl_link_leaderboard(); - setup_song_filter_tabs(); - highlight_user(); - add_percentage$1(); - setup_links_songlist(); - setup_extra_filter_checkboxes(); - apply_extra_filters(); - setup_self_pin_button(); - setup_self_button(); - setup_user_compare(); - setup(); - update_button_visibility(); - setup_pp_graph(); - check_for_updates(); - } - function onload() { - on_load_head(); - on_load_body(); - } - onload(); - window.addEventListener("DOMContentLoaded", onload); - window.addEventListener("load", onload); + let notify_box; + let settings_modal; + function setup() { + notify_box = create("div", { class: "field" }); + const cog = create("i", { class: "fas fa-cog" }); + into(get_navbar(), create("a", { + id: "settings_menu", + class: Global.header_class, + style: { + cursor: "pointer", + }, + onclick: () => show_settings_lazy(), + }, cog)); + SseEvent.UserNotification.register(() => { + const ntfys = SseEvent.getNotifications(); + if (ntfys.length > 0) { + cog.classList.remove("fa-cog"); + cog.classList.add("fa-bell"); + cog.style.color = "yellow"; + } + else { + cog.classList.remove("fa-bell"); + cog.classList.add("fa-cog"); + cog.style.color = ""; + } + if (!notify_box) + return; + clear_children(notify_box); + for (const ntfy of ntfys) { + into(notify_box, create("div", { class: `notification is-${ntfy.type}` }, ntfy.msg)); + } + }); + } + function show_settings_lazy() { + if (settings_modal) { + settings_modal.show(); + return; + } + const status_box = create("div", {}); + SseEvent.StatusInfo.register((status) => intor(status_box, status.text)); + const set_div = create("div"); + new SettingsDialogue({ target: set_div }); + settings_modal = create_modal({ + title: "Options", + text: set_div, + footer: status_box, + type: "card", + default: true, + }); + } + async function settings_set_theme(name) { + let css = ""; + if (name !== "Default") { + css = await fetch2(`https://unpkg.com/bulmaswatch/${name.toLowerCase()}/bulmaswatch.min.css`); + } + localStorage.setItem("theme_name", name); + localStorage.setItem("theme_css", css); + load_theme(name, css); + } + function load_last_theme() { + let theme_name = localStorage.getItem("theme_name"); + let theme_css = localStorage.getItem("theme_css"); + if (!theme_name || !theme_css) { + theme_name = "Default"; + theme_css = ""; + } + load_theme(theme_name, theme_css); + } + function load_theme(name, css) { + let css_fin; + if (get_scoresaber_darkmode() || dark_themes.includes(name)) { + css_fin = css + " " + theme_dark; + } + else { + css_fin = css + " " + theme_light; + } + if (!Global.style_themed_elem) { + Global.style_themed_elem = SSE_addStyle(css_fin); + } + else { + Global.style_themed_elem.innerHTML = css_fin; + } + } + function get_scoresaber_darkmode() { + return document.cookie.includes("dark=1"); + } + function update_button_visibility() { + const bm = get_button_matrix(); + for (const pb of BMPageButtons) { + const showButton = bm[pb] || false; + document.documentElement.style.setProperty(`--sse-show-${pb}`, showButton ? "unset" : "none"); + } + } + + setup$3(); + setup$2(); + load(); + let has_loaded_head = false; + function on_load_head() { + if (!document.head) { + logc("Head not ready"); + return; + } + if (has_loaded_head) { + logc("Already loaded head"); + return; + } + has_loaded_head = true; + logc("Loading head"); + setup$1(); + load_last_theme(); + } + const observer = new MutationObserver((mutations) => { + for (const m of mutations) { + for (const a of m.addedNodes) { + if (!(a instanceof HTMLElement)) { + continue; + } + if (a.matches("header")) { + Global.header_class = a.classList[0]; + on_load_head(); + setup_self_button(); + setup(); + update_button_visibility(); + } + if (a.matches(".title.player > .player-link")) { + setup_self_pin_button(); + setup_cache_button(); + } + if (a.matches(".gridTable")) { + prepare_table(a); + } + if (a.matches(".table-item")) { + add_percentage(a); + setup_dl_link_user_site(a); + add_percentage$1(a); + } + if (a.matches(".map-card")) { + setup_dl_link_leaderboard(); + setup_song_filter_tabs(); + highlight_user(); + } + } + for (const r of m.removedNodes) { + if (!(r instanceof HTMLElement)) { + continue; + } + if (r.matches("a#home_user")) { + setup_self_button(); + } + if (r.matches("a#settings_menu")) { + setup(); + } + } + } + }); + observer.observe(document, { childList: true, subtree: true }); })(); //# sourceMappingURL=rollup.js.map diff --git a/src/api/scoresaber.ts b/src/api/scoresaber.ts index e551d89..aae7cd1 100644 --- a/src/api/scoresaber.ts +++ b/src/api/scoresaber.ts @@ -12,11 +12,12 @@ const API_LIMITER = new Limiter(); export async function get_user_recent_songs_dynamic(user_id: string, page: number): Promise { logc(`Fetching user ${user_id} page ${page}`); - if (get_use_new_ss_api()) { - return get_user_recent_songs_new_api_wrap(user_id, page); - } else { - return get_user_recent_songs_old_api_wrap(user_id, page); - } + return get_user_recent_songs_new_api_wrap(user_id, page); +} + +export async function get_leaderboard_info(leaderboard_id: string) { + const req = await auto_fetch_retry(`https://scoresaber.com/api/leaderboard/by-id/${leaderboard_id}/info`); + return await req.json(); } // NEW API ==================================================================== diff --git a/src/compare.ts b/src/compare.ts index 549c07c..15d6f3a 100644 --- a/src/compare.ts +++ b/src/compare.ts @@ -1,50 +1,24 @@ import * as scoresaber from "./api/scoresaber"; import SseEvent from "./components/events"; import { IDbUser } from "./declarations/Types"; -import { get_compare_user, get_current_user, get_use_new_ss_api, get_user_header, insert_compare_feature, is_user_page, set_compare_user, get_home_user } from "./env"; +import { get_compare_user, get_current_user, get_use_new_ss_api, insert_compare_feature, is_user_page, set_compare_user, get_home_user } from "./env"; import g from "./global"; import * as usercache from "./usercache"; -import { create, into, IntoElem, intor } from "./util/dom"; +import { create, IntoElem, intor } from "./util/dom"; import { check } from "./util/err"; import { format_en, round2 } from "./util/format"; import { logc } from "./util/log"; import { get_song_compare_value, song_equals } from "./util/song"; export function setup_user_compare(): void { - if (!is_user_page()) { return; } - - // find the element we want to modify - - const header = get_user_header(); - header.style.display = "flex"; - header.style.alignItems = "center"; - - const user = get_current_user(); - into(header, - create("div", { - class: "button icon is-medium", - style: { cursor: "pointer" }, - data: { tooltip: g.user_list[user.id] ? "Update score cache" : "Add user to your score cache" }, - async onclick() { - await fetch_user(get_current_user().id); - }, - }, - create("i", { class: ["fas", g.user_list[user.id] ? "fa-sync" : "fa-bookmark"] }), - ) - ); - - const status_elem = create("div"); - into(header, status_elem); - SseEvent.StatusInfo.register((status) => intor(status_elem, status.text)); - g.users_elem = create("div"); insert_compare_feature(g.users_elem); - + update_user_compare_dropdown(); SseEvent.UserCacheChanged.register(update_user_compare_dropdown); - SseEvent.UserCacheChanged.register(update_user_compare_songtable); - SseEvent.CompareUserChanged.register(update_user_compare_songtable); + //SseEvent.UserCacheChanged.register(update_user_compare_songtable); + //SseEvent.CompareUserChanged.register(update_user_compare_songtable); SseEvent.CompareUserChanged.invoke(); } @@ -172,7 +146,7 @@ export function update_user_compare_songtable(other_user?: string): void { } } -async function fetch_user(user_id: string, force: boolean = false): Promise { +export async function fetch_user(user_id: string, force: boolean = false): Promise { let user = g.user_list[user_id]; if (!user) { user = { diff --git a/src/components/QuickButton.svelte b/src/components/QuickButton.svelte index 474c31c..a31a0ff 100644 --- a/src/components/QuickButton.svelte +++ b/src/components/QuickButton.svelte @@ -132,6 +132,7 @@ div { padding: 0; cursor: pointer; + z-index: 10; } div:disabled { cursor: default; diff --git a/src/env.ts b/src/env.ts index 9394f7e..5301552 100644 --- a/src/env.ts +++ b/src/env.ts @@ -3,12 +3,12 @@ import g from "./global"; import { create, into } from "./util/dom"; import { check } from "./util/err"; -export function get_user_header(): HTMLHeadingElement { - return check(document.querySelector(".content div.columns h5")); +export function get_user_header(): HTMLElement { + return check(document.querySelector(".title.player")); } export function get_navbar(): HTMLDivElement { - return check(document.querySelector("#navMenu div.navbar-start")); + return check(document.querySelector("nav")); } export function is_user_page(): boolean { @@ -20,7 +20,6 @@ export function is_song_leaderboard_page(): boolean { } export function get_current_user(): IUser { - if (g._current_user) { return g._current_user; } if (!is_user_page()) { throw new Error("Not on a user page"); } g._current_user = get_document_user(document); @@ -28,7 +27,7 @@ export function get_current_user(): IUser { } export function get_document_user(doc: Document): IUser { - const username_elem = check(doc.querySelector(".content .title a")); + const username_elem = check(doc.querySelector(".player-link")); const user_name = username_elem.innerText.trim(); // TODO will be wrong when calling from a different page const user_id = g.user_reg.exec(window.location.href)![1]; @@ -88,7 +87,7 @@ export function insert_compare_display(elem: HTMLElement): void { function setup_compare_feature_list(): void { if (g.feature_list === undefined) { // find the old dropdown elem to replace it with out container - const select_score_order_elem = check(document.querySelector(".content div.select")); + const select_score_order_elem = check(document.querySelector(".btn-group")); const parent_box_elem = check(select_score_order_elem.parentElement); g.feature_list = create("div", { class: "level-item" }); const level_box_elem = create("div", { class: "level" }, g.feature_list); diff --git a/src/global.ts b/src/global.ts index c1ace0f..455393f 100644 --- a/src/global.ts +++ b/src/global.ts @@ -24,6 +24,8 @@ export default class Global { public static readonly script_version_reg = /\/\/\s*@version\s+([\d.]+)/; public static readonly user_per_page_global_leaderboard = 50; public static readonly user_per_page_song_leaderboard = 12; + + public static header_class: string; /** * This is the exponential factor ScoreSaber is using to weight their scores. */ diff --git a/src/header.ts b/src/header.ts index ec181dd..ad9c43b 100644 --- a/src/header.ts +++ b/src/header.ts @@ -25,24 +25,37 @@ export function setup_self_pin_button(): void { } export function setup_self_button(): void { + let _a, _d, _a_hover = false, _d_hover = false; const home_user = get_home_user() ?? { name: "", id: "0" }; - - into(get_navbar(), - create("div", { class: "navbar-item has-dropdown is-hoverable" }, - create("a", { - id: "home_user", - class: "navbar-item", - href: g.scoresaber_link + "/u/" + home_user.id - }, home_user.name), - create("div", { - id: "home_user_list", - class: "navbar-dropdown" - }) - ) - ); - + into(get_navbar(), _a = create("a", { + id: "home_user", + class: g.header_class, + href: g.scoresaber_link + "/u/" + home_user.id + }, home_user.name, _d = create("div", { + id: "home_user_list", + class: "userMenu " + g.header_class, + style: { + width: "initial" + } + }))); + const _hide = () => (!_a_hover && !_d_hover) ? _d.classList.remove("visible") :0; + _a.addEventListener("mouseenter", () => { + _a_hover = true; + _d.classList.add("visible"); + }); + _d.addEventListener("mouseenter", () => { + _d_hover = true; + _d.classList.add("visible"); + }); + _a.addEventListener("mouseleave", () => { + _a_hover = false; + setTimeout(_hide, 200); + }) + _d.addEventListener("mouseleave", () => { + _d_hover = false; + setTimeout(_hide, 200); + }) update_self_user_list(); - SseEvent.UserCacheChanged.register(update_self_user_list); SseEvent.PinnedUserChanged.register(update_self_button); } @@ -62,7 +75,7 @@ function update_self_user_list(): void { intor(home_user_list_elem, ...Object.entries(g.user_list).map(([id, user]) => { return create("a", { - class: "navbar-item", + class: g.header_class, style: { paddingRight: "1em", flexWrap: "nowrap", diff --git a/src/main.ts b/src/main.ts index d9734aa..91596a7 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,4 +1,5 @@ import * as compare from "./compare"; +import g from "./global"; import * as header from "./header"; import * as page_songlist from "./pages/songlist"; import * as page_song from "./pages/song"; @@ -26,42 +27,65 @@ function on_load_head() { settings.load_last_theme(); } -let has_loaded_body = false; -function on_load_body(): void { - if (document.readyState !== "complete" && document.readyState !== "interactive") { - log.logc("Body not ready"); - return; +const observer = new MutationObserver((mutations) => { + for (const m of mutations) { + for (const a of m.addedNodes) { + if (!(a instanceof HTMLElement)) { + continue; + } + if (a.matches("header")) { + g.header_class = a.classList[0]; + on_load_head(); + header.setup_self_button(); + settings.setup(); + settings.update_button_visibility(); + } + // Player Header + if (a.matches(".title.player > .player-link")) { + header.setup_self_pin_button(); + page_user.setup_cache_button(); + } + + if (a.matches(".gridTable")) { + page_song.prepare_table(a); + } + + if (a.matches(".table-item")) { + page_user.add_percentage(a); + page_user.setup_dl_link_user_site(a); + page_song.add_percentage(a); + } + + // Map Page + if (a.matches(".map-card")) { + page_song.setup_dl_link_leaderboard(); + page_song.setup_song_filter_tabs(); + page_song.highlight_user(); + } + } + // Svelite >:[ + for (const r of m.removedNodes) { + if (!(r instanceof HTMLElement)) { + continue; + } + if (r.matches("a#home_user")) { + header.setup_self_button(); + } + if (r.matches("a#settings_menu")) { + settings.setup(); + } + } } - if (has_loaded_body) { log.logc("Already loaded body"); return; } - has_loaded_body = true; - log.logc("Loading body"); - - page_user.setup_dl_link_user_site(); - page_user.add_percentage(); - page_user.setup_user_rank_link_swap(); - page_user.setup_song_rank_link_swap(); + + /* + page_user.update_wide_table_css(); - page_song.setup_dl_link_leaderboard(); - page_song.setup_song_filter_tabs(); - page_song.highlight_user(); - page_song.add_percentage(); page_songlist.setup_links_songlist(); page_songlist.setup_extra_filter_checkboxes(); page_songlist.apply_extra_filters(); - header.setup_self_pin_button(); - header.setup_self_button(); compare.setup_user_compare(); - settings.setup(); - settings.update_button_visibility(); ppgraph.setup_pp_graph(); updater.check_for_updates(); -} - -function onload() { - on_load_head(); - on_load_body(); -} - -onload(); -window.addEventListener("DOMContentLoaded", onload); -window.addEventListener("load", onload); + */ +}); +observer.observe(document, {childList: true, subtree: true}); diff --git a/src/pages/song.ts b/src/pages/song.ts index 1d226ce..310ac67 100644 --- a/src/pages/song.ts +++ b/src/pages/song.ts @@ -1,29 +1,57 @@ import * as beastsaber from "../api/beastsaber"; import * as beatsaver from "../api/beatsaver"; +import * as scoresaber from "../api/scoresaber"; import { IDbUser, ISong } from "../declarations/Types"; import { BMButton, get_home_user, is_song_leaderboard_page, Pages } from "../env"; import g from "../global"; -import { create, intor } from "../util/dom"; +import { create, into, intor } from "../util/dom"; import { check } from "../util/err"; import { format_en, number_invariant, number_to_timespan, toggled_class } from "../util/format"; import { Lazy } from "../util/lazy"; import { calculate_max_score, get_notes_count, get_song_compare_value, get_song_hash_from_text } from "../util/song"; import QuickButton from "../components/QuickButton.svelte"; import { new_page } from "../util/net"; -import { get_scoresaber_data_by_hash } from "../api/beatsaver"; const PAGE: Pages = "song"; -const shared = new Lazy(() => { - // find the element we want to modify - let details_box = check(document.querySelector(".content .title.is-5")); - details_box = check(details_box.parentElement); - - const song_hash = get_song_hash_from_text(details_box.innerHTML); - - const diff_name = document.querySelector(`div.tabs li.is-active span`)?.innerText; - return { song_hash, details_box, diff_name }; -}); +class shared { + public static _current_page; + public static song_hash; + public static details_box; + public static diff_name; + public static game_mode; + + private static _leaderboard_info ={}; + + static async get() { + if (this._current_page === window.location.pathname) { + // I hate javascript so much + const song_hash = this.song_hash, details_box = this.details_box, diff_name = this.diff_name, game_mode = this.game_mode; + return { song_hash, details_box, diff_name, game_mode }; + } + + // find the element we want to modify + this.details_box = check(document.querySelector(".title.is-5").parentElement.parentElement.parentElement); + + const id = window.location.pathname.split('/').pop(); + + if (this._leaderboard_info[id] === undefined) { + console.log(`Refresh, ${this._current_href} !== ${window.location.href} ${this.song_hash}`); + this._leaderboard_info[id] = scoresaber.get_leaderboard_info(id); + } + + const leaderboard_info = await this._leaderboard_info[id]; + + this.song_hash = leaderboard_info.songHash.toLowerCase(); + this.diff_name = leaderboard_info.difficulty.difficultyRaw.split("_")[1]; + this.game_mode = leaderboard_info.difficulty.gameMode.replace("Solo",""); + + this._current_page = window.location.pathname; + + const song_hash = this.song_hash, details_box = this.details_box, diff_name = this.diff_name, game_mode = this.game_mode; + return { song_hash, details_box, diff_name, game_mode }; + } +} export function setup_song_filter_tabs(): void { if (!is_song_leaderboard_page()) { return; } @@ -48,7 +76,6 @@ export function setup_song_filter_tabs(): void { } elements.sort((a, b) => { const [sa, sb] = get_song_compare_value(a[0], b[0]); return sb - sa; }); elements.forEach(x => score_table.appendChild(x[1])); - add_percentage(); } function load_all() { @@ -61,7 +88,6 @@ export function setup_song_filter_tabs(): void { table.removeChild(score_table); score_table = table.appendChild(g.song_table_backup); g.song_table_backup = undefined; - add_percentage(); } tab_list_content.appendChild(generate_tab("All Scores", "all_scores_tab", load_all, true, true)); @@ -69,10 +95,10 @@ export function setup_song_filter_tabs(): void { // tab_list_content.appendChild(generate_tab("Around Me", "around_me_tab", () => {}, false, false)); } -export function setup_dl_link_leaderboard(): void { +export async function setup_dl_link_leaderboard(): void { if (!is_song_leaderboard_page()) { return; } - const { song_hash, details_box } = shared.get(); + const { song_hash, details_box } = await shared.get(); const tool_strip = create("div", { id: "leaderboard_tool_strip", @@ -129,18 +155,18 @@ export function setup_dl_link_leaderboard(): void { })(); } -function show_song_warning(elem: HTMLElement, song_hash: string, data: beatsaver.IBeatSaverData) { +async function show_song_warning(elem: HTMLElement, song_hash: string, data: beatsaver.IBeatSaverData) { const contains_version = data.versions.some(x => x.hash === song_hash); if (!contains_version) { const new_song_hash = data.versions[data.versions.length - 1].hash; - const { diff_name } = shared.get(); + const { diff_name } = await shared.get(); intor(elem, create("div", { style: { marginTop: "1em", cursor: "pointer" }, class: "notification is-warning", onclick: async () => { - const bs2ss = await get_scoresaber_data_by_hash(new_song_hash, diff_name); + const bs2ss = await scoresaber.get_scoresaber_data_by_hash(new_song_hash, diff_name); if (bs2ss === undefined) return; new_page(`https://scoresaber.com/leaderboard/${bs2ss.uid}`); @@ -231,43 +257,63 @@ export function highlight_user(): void { } } -export function add_percentage(): void { +// Add column for percentage if it doesn't exist +export async function prepare_table(table: HTMLElement): void { + if (!is_song_leaderboard_page()) { return; } + + const header = table.querySelector(".header"); + + for (const heading of header.children) { + if (heading.innerText === "Accuracy") { + return; + } + } + const columns = header.children.length; + + table.style.setProperty("--columns", `1fr 5fr repeat(${columns - 1}, 2fr)`); + into(header, create( + "div", + {"class": `centered ${table.classList[1]}`}, + "Accuracy" + )); +} + +export async function add_percentage(row: HTMLElement): void { if (!is_song_leaderboard_page()) { return; } - const { song_hash, diff_name } = shared.get(); + if (row.querySelector('.accuracy')) { + return; + } + + const { song_hash, diff_name, game_mode } = await shared.get(); if (!song_hash) { return; } - (async () => { - const data = await beatsaver.get_data_by_hash(song_hash); - if (!data) - return; - // Scoresaber fails to display the difficlulty tab for some categories (e.g. Lawless), ex: - // - none at all: https://scoresaber.com/leaderboard/307121 - // - only expert+ shown, but actual diff is missing: https://scoresaber.com/leaderboard/314128 - if (!diff_name) - return; - const version = data.versions.find((v) => v.hash === song_hash.toLowerCase()); - if (!diff_name || !version) - return; - const notes = get_notes_count(diff_name, "Standard", version); - if (notes < 0) - return; - const max_score = calculate_max_score(notes); - const user_scores = document.querySelectorAll("table.ranking.global tbody > tr"); - for (const score_row of user_scores) { - const percentage_column = check(score_row.querySelector("td.percentage")); - const percentage_value = percentage_column.innerText; - if (percentage_value === "-") { - const score = check(score_row.querySelector("td.score")).innerText; - const score_num = number_invariant(score); - const calculated_percentage = (100 * score_num / max_score).toFixed(2); - percentage_column.innerText = calculated_percentage + "%"; - } - } - })(); + const data = await beatsaver.get_data_by_hash(song_hash); + if (!data) + return; + // Scoresaber fails to display the difficlulty tab for some categories (e.g. Lawless), ex: + // - none at all: https://scoresaber.com/leaderboard/307121 + // - only expert+ shown, but actual diff is missing: https://scoresaber.com/leaderboard/314128 + if (!diff_name) + return; + const version = data.versions.find((v) => v.hash === song_hash.toLowerCase()); + if (!diff_name || !version) + return; + const notes = get_notes_count(diff_name, game_mode, version); + if (notes < 0) + return; + const max_score = calculate_max_score(notes); + const score = check(row.querySelector(".score")).innerText; + const score_num = number_invariant(score); + const calculated_percentage = (100 * score_num / max_score).toFixed(2); + into(row, create( + "div", + {"class" : `accuracy centered ${row.classList[1]}`}, + `${calculated_percentage}%` + )); } diff --git a/src/pages/user.ts b/src/pages/user.ts index d1b6b28..5ffb8f9 100644 --- a/src/pages/user.ts +++ b/src/pages/user.ts @@ -1,7 +1,9 @@ import * as beatsaver from "../api/beatsaver"; -import { BMButton, BMButtonHelp, bmvar, get_wide_table, is_user_page, Pages } from "../env"; +import SseEvent from "../components/events"; +import { BMButton, BMButtonHelp, bmvar, get_current_user, get_user_header, get_wide_table, is_user_page, Pages } from "../env"; +import { fetch_user } from "../compare"; import g from "../global"; -import { as_fragment, create, into } from "../util/dom"; +import { as_fragment, create, into, intor } from "../util/dom"; import { check } from "../util/err"; import { number_invariant } from "../util/format"; import { calculate_max_score, get_notes_count, get_song_hash_from_text, parse_score_bottom } from "../util/song"; @@ -9,41 +11,54 @@ import QuickButton from "../components/QuickButton.svelte"; const PAGE: Pages = "user"; -export function setup_dl_link_user_site(): void { +export function setup_cache_button(): void { if (!is_user_page()) { return; } - // find the table we want to modify - const table = check(document.querySelector("table.ranking.songs")); + // find the element we want to modify + + const header = get_user_header(); + header.style.display = "flex"; + header.style.alignItems = "center"; + + const user = get_current_user(); + into(header, + create("div", { + class: "button icon is-medium", + style: { cursor: "pointer" }, + data: { tooltip: g.user_list[user.id] ? "Update score cache" : "Add user to your score cache" }, + async onclick() { + await fetch_user(get_current_user().id); + }, + }, + create("i", { class: ["fas", g.user_list[user.id] ? "fa-sync" : "fa-bookmark"] }), + ) + ); + + const status_elem = create("div"); + into(header, status_elem); + SseEvent.StatusInfo.register((status) => intor(status_elem, status.text)); +} - // add a new column for our links - const table_tr = check(table.querySelector("thead tr")); - for (const btn of BMButton) { - into(table_tr, - create("th", { - class: "compact", - style: bmvar(PAGE, btn, "table-cell"), - // TODO: Tooltip is currently cut off at the to due to div nesting - //data: { tooltip: BMButtonHelp[btn].long }, - }, BMButtonHelp[btn].short) - ); - } +export function setup_dl_link_user_site(row: HTMLElement): void { + if (!is_user_page()) { return; } // add a link for each song - const table_row = table.querySelectorAll("tbody tr"); - for (const row of table_row) { - const image_link = check(row.querySelector("th.song img")).src; - const song_hash = get_song_hash_from_text(image_link); - - for (const btn of BMButton) { - into(row, - create("th", { class: "compact", style: bmvar(PAGE, btn, "table-cell") }, - as_fragment(target => new QuickButton({ - target, - props: { song_hash, size: "medium", type: btn } - })) - ) - ); - } + const image_link = check(row.querySelector(".song-container img")).src; + const song_hash = get_song_hash_from_text(image_link); + + const col = row.querySelector('.scoreInfo'); + const div = create("div", { class: col.classList[1] }); + into(col, div); + + for (const btn of BMButton) { + into(div, + create("span", { class: `stat clickable ${col.classList[1]}`, style: bmvar(PAGE, btn, "table-cell") }, + as_fragment(target => new QuickButton({ + target, + props: { song_hash, size: "medium", type: btn } + })) + ) + ); } } @@ -52,92 +67,48 @@ export function setup_dl_link_user_site(): void { export function update_wide_table_css(): void { if (!is_user_page()) { return; } - const table = check(document.querySelector("table.ranking.songs")); + const table = check(document.querySelector(".ranking.songs")); table.classList.toggle("wide_song_table", get_wide_table()); } // ** Link util ** -export function setup_user_rank_link_swap(): void { +export function add_percentage(row: HTMLElement): void { if (!is_user_page()) { return; } - const elem_ranking_links = document.querySelectorAll(".content div.columns ul > li > a"); - console.assert(elem_ranking_links.length >= 2, elem_ranking_links); - // Global rank - const elem_global = elem_ranking_links[0]; - const res_global = check(g.leaderboard_rank_reg.exec(elem_global.innerText)); - const rank_global = number_invariant(res_global[1]); - elem_global.href = g.scoresaber_link + "/global/" + rank_to_page(rank_global, g.user_per_page_global_leaderboard); - // Country rank - const elem_country = elem_ranking_links[1]; - const res_country = check(g.leaderboard_rank_reg.exec(elem_country.innerText)); - const country_str = check(g.leaderboard_country_reg.exec(elem_country.href)); - const number_country = number_invariant(res_country[1]); - elem_country.href = g.scoresaber_link + - "/global/" + rank_to_page(number_country, g.user_per_page_global_leaderboard) + - "?country=" + country_str[2]; -} - -export function setup_song_rank_link_swap(): void { - if (!is_user_page()) { return; } + const image_link = check(row.querySelector("img.song-image")).src; + const song_hash = get_song_hash_from_text(image_link); - const song_elems = document.querySelectorAll("table.ranking.songs tbody tr"); - for (const row of song_elems) { - const rank_elem = check(row.querySelector(".rank")); - // there's only one link, so 'a' will find it. - const leaderboard_link = check(row.querySelector("th.song a")).href; - const rank = number_invariant(rank_elem.innerText.slice(1)); - const rank_str = rank_elem.innerText; - rank_elem.innerHTML = ""; - into(rank_elem, - create("a", { - href: `${leaderboard_link}?page=${rank_to_page(rank, g.user_per_page_song_leaderboard)}` - }, rank_str) - ); + if (!song_hash) { + return; } -} - -function rank_to_page(rank: number, ranks_per_page: number): number { - return Math.max(Math.floor((rank + ranks_per_page - 1) / ranks_per_page), 1); -} -export function add_percentage(): void { - if (!is_user_page()) { return; } + const score_column = row.querySelector(".stat.acc"); + // skip rows with percentage from ScoreSaber + if (score_column) { return; } - // find the table we want to modify - const table = check(document.querySelector("table.ranking.songs")); - const table_row = table.querySelectorAll("tbody tr"); - for (const row of table_row) { - const image_link = check(row.querySelector("th.song img")).src; - const song_hash = get_song_hash_from_text(image_link); - - if (!song_hash) { + (async () => { + const data = await beatsaver.get_data_by_hash(song_hash); + if (!data) return; - } - - const score_column = check(row.querySelector(`th.score`)); - // skip rows with percentage from ScoreSaber - if (!score_column.innerText || score_column.innerText.includes("%")) { continue; } - - (async () => { - const data = await beatsaver.get_data_by_hash(song_hash); - if (!data) - return; - const song_column = check(row.querySelector(`th.song`)); - const diff_name = check(song_column.querySelector(`span > span`)).innerText; - const version = data.versions.find((v) => v.hash === song_hash.toLowerCase()); - if (!diff_name || !version) - return; - const notes = get_notes_count(diff_name, "Standard", version); - if (notes < 0) + const diff_name = check(row.querySelector(".tag")).title; // Other languages? + const version = data.versions.find((v) => v.hash === song_hash.toLowerCase()); + if (!diff_name || !version) return; - const max_score = calculate_max_score(notes); - const user_score = check(score_column.querySelector(".scoreBottom")).innerText; - const { score } = parse_score_bottom(user_score); - if (score !== undefined) { - const calculated_percentage = (100 * score / max_score).toFixed(2); - check(score_column.querySelector(".ppWeightedValue")).innerHTML = `(${calculated_percentage}%)`; - } - })(); - } + const notes = get_notes_count(diff_name, "Standard", version); + if (notes < 0) + return; + const max_score = calculate_max_score(notes); + const user_score = check(row.querySelector(".scoreInfo > div:first-of-type > .stat:first-of-type")).innerText; + const { score } = parse_score_bottom(user_score); + if (score !== undefined) { + const calculated_percentage = (100 * score / max_score).toFixed(2); + const score_row = row.querySelector(".scoreInfo > div:first-of-type"); + score_row.insertBefore( + create("span", {"class": `stat acc ${score_row.classList[0]}`}, `${calculated_percentage}%`), + score_row.children[0] + ); + //check(score_column.querySelector(".ppWeightedValue")).innerHTML = `(${calculated_percentage}%)`; + } + })(); } diff --git a/src/settings.ts b/src/settings.ts index dafd3a9..073d45e 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -17,7 +17,7 @@ export function setup(): void { into(env.get_navbar(), create("a", { id: "settings_menu", - class: "navbar-item", + class: g.header_class, style: { cursor: "pointer", }, diff --git a/src/util/lazy.ts b/src/util/lazy.ts index c076f48..bac51f6 100644 --- a/src/util/lazy.ts +++ b/src/util/lazy.ts @@ -6,10 +6,12 @@ export class Lazy { ) { } public get(): T { - if (this.generator !== undefined) { + if (this.value === undefined) { this.value = this.generator(); - this.generator = undefined!; } return this.value!; } + public reset() { + this.value = undefined; + } } diff --git a/src/util/song.ts b/src/util/song.ts index 256f7fd..1767db6 100644 --- a/src/util/song.ts +++ b/src/util/song.ts @@ -120,17 +120,17 @@ export function parse_mods(mods: string): string[] | undefined { export function parse_score_bottom(text: string): { score?: number, accuracy?: number, mods?: string[] } { let score = undefined; - let accuracy = undefined; - let mods = undefined; - const score_res = check(g.score_reg.exec(text)); - if (score_res[1] === "score") { - score = number_invariant(score_res[2]); - } else if (score_res[1] === "accuracy") { - accuracy = Number(score_res[2]); - } - if (score_res[4]) { - mods = parse_mods(score_res[4]); - } + const accuracy = undefined; + const mods = undefined; +// const score_res = check(g.score_reg.exec(text)); +// if (score_res[1] === "score") { + score = number_invariant(text); +// } else if (score_res[1] === "accuracy") { +// accuracy = Number(score_res[2]); +// } +// if (score_res[4]) { +// mods = parse_mods(score_res[4]); +// } return { score, accuracy, mods }; } diff --git a/src/util/userscript.ts b/src/util/userscript.ts index c72e600..ed09a15 100644 --- a/src/util/userscript.ts +++ b/src/util/userscript.ts @@ -49,7 +49,7 @@ function GM_addStyle_custom(css: string): HTMLStyleElement { export async function load_chart_lib(): Promise { if (typeof Chart !== "function") { try { - const resp = await fetch("https://scoresaber.com/imports/js/chart.js"); + const resp = await fetch("https://old.scoresaber.com/imports/js/chart.js"); const js = await resp.text(); new Function(js)(); } catch (err) { diff --git a/yarn.lock b/yarn.lock index d524018..1c30445 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,296 +2,274 @@ # yarn lockfile v1 -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/helper-validator-identifier@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" - integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== - -"@babel/highlight@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" - integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@eslint/eslintrc@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.3.0.tgz#d736d6963d7003b6514e6324bec9c602ac340318" - integrity sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg== - dependencies: - ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^12.1.0" - ignore "^4.0.6" - import-fresh "^3.2.1" - js-yaml "^3.13.1" - lodash "^4.17.20" - minimatch "^3.0.4" - strip-json-comments "^3.1.1" - -"@eslint/eslintrc@^1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.0.4.tgz#dfe0ff7ba270848d10c5add0715e04964c034b31" - integrity sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q== +"@eslint/eslintrc@^1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.4.1.tgz#af58772019a2d271b7e2d4c23ff4ddcba3ccfb3e" + integrity sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.0.0" - globals "^13.9.0" - ignore "^4.0.6" + espree "^9.4.0" + globals "^13.19.0" + ignore "^5.2.0" import-fresh "^3.2.1" js-yaml "^4.1.0" - minimatch "^3.0.4" + minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@humanwhocodes/config-array@^0.6.0": - version "0.6.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.6.0.tgz#b5621fdb3b32309d2d16575456cbc277fa8f021a" - integrity sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A== +"@humanwhocodes/config-array@^0.11.8": + version "0.11.8" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" + integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== dependencies: - "@humanwhocodes/object-schema" "^1.2.0" + "@humanwhocodes/object-schema" "^1.2.1" debug "^4.1.1" - minimatch "^3.0.4" + minimatch "^3.0.5" -"@humanwhocodes/object-schema@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" - integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@nodelib/fs.scandir@2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" - integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA== +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: - "@nodelib/fs.stat" "2.0.4" + "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655" - integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q== +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.walk@^1.2.3": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063" - integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow== +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: - "@nodelib/fs.scandir" "2.1.4" + "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@rbnlffl/rollup-plugin-eslint@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@rbnlffl/rollup-plugin-eslint/-/rollup-plugin-eslint-2.0.0.tgz#4e4c6efb7bd1766a06b0f3558a3fc90c238250d2" - integrity sha512-ql5KeNKkJRdJAPpKiwoBjbYAESU1UtgYs1+YA3V9KU9uH7Eul/FNpF8rs4PkA81f61XHIXv1cMP2XOPwcdUryA== +"@rbnlffl/rollup-plugin-eslint@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@rbnlffl/rollup-plugin-eslint/-/rollup-plugin-eslint-4.0.0.tgz#592b0d0c0700765d04794bb01d0c9b11da95cdf1" + integrity sha512-mApU2l0HVtWAGRPtsgDwroqwmZKan8Fw4VNWw5AqS2y50glToETHrTOLjtzzk4V+uG0ckYhtO1/zGmpfamo47Q== dependencies: - "@rollup/pluginutils" "4.x" - eslint "7.x" + "@rollup/pluginutils" "^4.2.1" -"@rollup/plugin-commonjs@^21.0.1": - version "21.0.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz#1e57c81ae1518e4df0954d681c642e7d94588fee" - integrity sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg== +"@rollup/plugin-commonjs@24.0.1": + version "24.0.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-24.0.1.tgz#d54ba26a3e3c495dc332bd27a81f7e9e2df46f90" + integrity sha512-15LsiWRZk4eOGqvrJyu3z3DaBu5BhXIMeWnijSRvd8irrrg9SHpQ1pH+BUK4H6Z9wL9yOxZJMTLU+Au86XHxow== dependencies: - "@rollup/pluginutils" "^3.1.0" + "@rollup/pluginutils" "^5.0.1" commondir "^1.0.1" - estree-walker "^2.0.1" - glob "^7.1.6" - is-reference "^1.2.1" - magic-string "^0.25.7" - resolve "^1.17.0" - -"@rollup/plugin-node-resolve@^13.0.4": - version "13.0.6" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz#29629070bb767567be8157f575cfa8f2b8e9ef77" - integrity sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA== - dependencies: - "@rollup/pluginutils" "^3.1.0" - "@types/resolve" "1.17.1" - builtin-modules "^3.1.0" + estree-walker "^2.0.2" + glob "^8.0.3" + is-reference "1.2.1" + magic-string "^0.27.0" + +"@rollup/plugin-node-resolve@15.0.1": + version "15.0.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.0.1.tgz#72be449b8e06f6367168d5b3cd5e2802e0248971" + integrity sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg== + dependencies: + "@rollup/pluginutils" "^5.0.1" + "@types/resolve" "1.20.2" deepmerge "^4.2.2" + is-builtin-module "^3.2.0" is-module "^1.0.0" - resolve "^1.19.0" + resolve "^1.22.1" -"@rollup/plugin-typescript@8.3.0": - version "8.3.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-typescript/-/plugin-typescript-8.3.0.tgz#bc1077fa5897b980fc27e376c4e377882c63e68b" - integrity sha512-I5FpSvLbtAdwJ+naznv+B4sjXZUcIvLLceYpITAn7wAP8W0wqc5noLdGIp9HGVntNhRWXctwPYrSSFQxtl0FPA== +"@rollup/plugin-typescript@11.0.0": + version "11.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-typescript/-/plugin-typescript-11.0.0.tgz#f136272d1df5209daca0cb6f171c574b1d505545" + integrity sha512-goPyCWBiimk1iJgSTgsehFD5OOFHiAknrRJjqFCudcW8JtWiBlK284Xnn4flqMqg6YAjVG/EE+3aVzrL5qNSzQ== dependencies: - "@rollup/pluginutils" "^3.1.0" - resolve "^1.17.0" + "@rollup/pluginutils" "^5.0.1" + resolve "^1.22.1" -"@rollup/pluginutils@4.x": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.1.0.tgz#0dcc61c780e39257554feb7f77207dceca13c838" - integrity sha512-TrBhfJkFxA+ER+ew2U2/fHbebhLT/l/2pRk0hfj9KusXUuRXd2v0R58AfaZK9VXDQ4TogOSEmICVrQAA3zFnHQ== +"@rollup/pluginutils@^4.1.0", "@rollup/pluginutils@^4.2.1": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d" + integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== dependencies: estree-walker "^2.0.1" picomatch "^2.2.2" -"@rollup/pluginutils@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" - integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== +"@rollup/pluginutils@^5.0.1": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz#012b8f53c71e4f6f9cb317e311df1404f56e7a33" + integrity sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA== dependencies: - "@types/estree" "0.0.39" - estree-walker "^1.0.1" - picomatch "^2.2.2" + "@types/estree" "^1.0.0" + estree-walker "^2.0.2" + picomatch "^2.3.1" "@types/estree@*": version "0.0.50" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" + resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz" integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== +"@types/estree@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" + integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== "@types/expect@^1.20.4": version "1.20.4" - resolved "https://registry.yarnpkg.com/@types/expect/-/expect-1.20.4.tgz#8288e51737bf7e3ab5d7c77bfa695883745264e5" + resolved "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz" integrity sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg== "@types/json-schema@^7.0.9": version "7.0.9" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz" integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== "@types/node@*": - version "16.11.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.6.tgz#6bef7a2a0ad684cf6e90fcfe31cecabd9ce0a3ae" - integrity sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w== + version "15.0.2" + resolved "https://registry.npmjs.org/@types/node/-/node-15.0.2.tgz" + integrity sha512-p68+a+KoxpoB47015IeYZYRrdqMUcpbK8re/zpFB8Ld46LHC1lPEbp3EXgkEhAYEcPvjJF6ZO+869SQ0aH1dcA== -"@types/node@^14.14.41": - version "14.14.44" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.44.tgz#df7503e6002847b834371c004b372529f3f85215" - integrity sha512-+gaugz6Oce6ZInfI/tK4Pq5wIIkJMEJUu92RB3Eu93mtj4wjjjz9EB5mLp5s1pSsLXdC/CPut/xF20ZzAQJbTA== +"@types/pug@^2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/pug/-/pug-2.0.6.tgz#f830323c88172e66826d0bde413498b61054b5a6" + integrity sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg== -"@types/pug@^2.0.4": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@types/pug/-/pug-2.0.5.tgz#69bc700934dd473c7ab97270bd2dbacefe562231" - integrity sha512-LOnASQoeNZMkzexRuyqcBBDZ6rS+rQxUMkmj5A0PkhhiSZivLIuz6Hxyr1mkGoEZEkk66faROmpMi4fFkrKsBA== +"@types/resolve@1.20.2": + version "1.20.2" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975" + integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== -"@types/resolve@1.17.1": - version "1.17.1" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" - integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== +"@types/sass@^1.43.1": + version "1.43.1" + resolved "https://registry.yarnpkg.com/@types/sass/-/sass-1.43.1.tgz#86bb0168e9e881d7dade6eba16c9ed6d25dc2f68" + integrity sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g== dependencies: "@types/node" "*" -"@types/sass@^1.16.0": - version "1.43.0" - resolved "https://registry.yarnpkg.com/@types/sass/-/sass-1.43.0.tgz#b4cebe057d887ed66dc6813fd6cbef22043057bb" - integrity sha512-DPSXNJ1rYLo88GyF9tuB4bsYGfpKI1a4+wOQmc+LI1SUoocm9QLRSpz0GxxuyjmJsYFIQo/dDlRSSpIXngff+w== - dependencies: - "@types/node" "*" +"@types/semver@^7.3.12": + version "7.3.13" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" + integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== "@types/vinyl@^2.0.4": version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/vinyl/-/vinyl-2.0.4.tgz#9a7a8071c8d14d3a95d41ebe7135babe4ad5995a" + resolved "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.4.tgz" integrity sha512-2o6a2ixaVI2EbwBPg1QYLGQoHK56p/8X/sGfKbFC8N6sY9lfjsMf/GprtkQkSya0D4uRiutRZ2BWj7k3JvLsAQ== dependencies: "@types/expect" "^1.20.4" "@types/node" "*" -"@typescript-eslint/eslint-plugin@5.3.0": - version "5.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.3.0.tgz#a55ae72d28ffeb6badd817fe4566c9cced1f5e29" - integrity sha512-ARUEJHJrq85aaiCqez7SANeahDsJTD3AEua34EoQN9pHS6S5Bq9emcIaGGySt/4X2zSi+vF5hAH52sEen7IO7g== - dependencies: - "@typescript-eslint/experimental-utils" "5.3.0" - "@typescript-eslint/scope-manager" "5.3.0" - debug "^4.3.2" - functional-red-black-tree "^1.0.1" - ignore "^5.1.8" +"@typescript-eslint/eslint-plugin@5.51.0": + version "5.51.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.51.0.tgz#da3f2819633061ced84bb82c53bba45a6fe9963a" + integrity sha512-wcAwhEWm1RgNd7dxD/o+nnLW8oH+6RK1OGnmbmkj/GGoDPV1WWMVP0FXYQBivKHdwM1pwii3bt//RC62EriIUQ== + dependencies: + "@typescript-eslint/scope-manager" "5.51.0" + "@typescript-eslint/type-utils" "5.51.0" + "@typescript-eslint/utils" "5.51.0" + debug "^4.3.4" + grapheme-splitter "^1.0.4" + ignore "^5.2.0" + natural-compare-lite "^1.4.0" regexpp "^3.2.0" - semver "^7.3.5" + semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/experimental-utils@5.3.0": - version "5.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.3.0.tgz#ee56b4957547ed2b0fc7451205e41502e664f546" - integrity sha512-NFVxYTjKj69qB0FM+piah1x3G/63WB8vCBMnlnEHUsiLzXSTWb9FmFn36FD9Zb4APKBLY3xRArOGSMQkuzTF1w== +"@typescript-eslint/parser@5.51.0": + version "5.51.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.51.0.tgz#2d74626652096d966ef107f44b9479f02f51f271" + integrity sha512-fEV0R9gGmfpDeRzJXn+fGQKcl0inIeYobmmUWijZh9zA7bxJ8clPhV9up2ZQzATxAiFAECqPQyMDB4o4B81AaA== dependencies: - "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.3.0" - "@typescript-eslint/types" "5.3.0" - "@typescript-eslint/typescript-estree" "5.3.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" + "@typescript-eslint/scope-manager" "5.51.0" + "@typescript-eslint/types" "5.51.0" + "@typescript-eslint/typescript-estree" "5.51.0" + debug "^4.3.4" -"@typescript-eslint/parser@5.3.0": - version "5.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.3.0.tgz#7879f15e26d370ed3f653fb7dd06479531ed3ab9" - integrity sha512-rKu/yAReip7ovx8UwOAszJVO5MgBquo8WjIQcp1gx4pYQCwYzag+I5nVNHO4MqyMkAo0gWt2gWUi+36gWAVKcw== +"@typescript-eslint/scope-manager@5.51.0": + version "5.51.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.51.0.tgz#ad3e3c2ecf762d9a4196c0fbfe19b142ac498990" + integrity sha512-gNpxRdlx5qw3yaHA0SFuTjW4rxeYhpHxt491PEcKF8Z6zpq0kMhe0Tolxt0qjlojS+/wArSDlj/LtE69xUJphQ== dependencies: - "@typescript-eslint/scope-manager" "5.3.0" - "@typescript-eslint/types" "5.3.0" - "@typescript-eslint/typescript-estree" "5.3.0" - debug "^4.3.2" + "@typescript-eslint/types" "5.51.0" + "@typescript-eslint/visitor-keys" "5.51.0" -"@typescript-eslint/scope-manager@5.3.0": - version "5.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.3.0.tgz#97d0ccc7c9158e89e202d5e24ce6ba49052d432e" - integrity sha512-22Uic9oRlTsPppy5Tcwfj+QET5RWEnZ5414Prby465XxQrQFZ6nnm5KnXgnsAJefG4hEgMnaxTB3kNEyjdjj6A== +"@typescript-eslint/type-utils@5.51.0": + version "5.51.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.51.0.tgz#7af48005531700b62a20963501d47dfb27095988" + integrity sha512-QHC5KKyfV8sNSyHqfNa0UbTbJ6caB8uhcx2hYcWVvJAZYJRBo5HyyZfzMdRx8nvS+GyMg56fugMzzWnojREuQQ== dependencies: - "@typescript-eslint/types" "5.3.0" - "@typescript-eslint/visitor-keys" "5.3.0" + "@typescript-eslint/typescript-estree" "5.51.0" + "@typescript-eslint/utils" "5.51.0" + debug "^4.3.4" + tsutils "^3.21.0" -"@typescript-eslint/types@5.3.0": - version "5.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.3.0.tgz#af29fd53867c2df0028c57c36a655bd7e9e05416" - integrity sha512-fce5pG41/w8O6ahQEhXmMV+xuh4+GayzqEogN24EK+vECA3I6pUwKuLi5QbXO721EMitpQne5VKXofPonYlAQg== +"@typescript-eslint/types@5.51.0": + version "5.51.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.51.0.tgz#e7c1622f46c7eea7e12bbf1edfb496d4dec37c90" + integrity sha512-SqOn0ANn/v6hFn0kjvLwiDi4AzR++CBZz0NV5AnusT2/3y32jdc0G4woXPWHCumWtUXZKPAS27/9vziSsC9jnw== -"@typescript-eslint/typescript-estree@5.3.0": - version "5.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.3.0.tgz#4f68ddd46dc2983182402d2ab21fb44ad94988cf" - integrity sha512-FJ0nqcaUOpn/6Z4Jwbtf+o0valjBLkqc3MWkMvrhA2TvzFXtcclIM8F4MBEmYa2kgcI8EZeSAzwoSrIC8JYkug== +"@typescript-eslint/typescript-estree@5.51.0": + version "5.51.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.51.0.tgz#0ec8170d7247a892c2b21845b06c11eb0718f8de" + integrity sha512-TSkNupHvNRkoH9FMA3w7TazVFcBPveAAmb7Sz+kArY6sLT86PA5Vx80cKlYmd8m3Ha2SwofM1KwraF24lM9FvA== dependencies: - "@typescript-eslint/types" "5.3.0" - "@typescript-eslint/visitor-keys" "5.3.0" - debug "^4.3.2" - globby "^11.0.4" + "@typescript-eslint/types" "5.51.0" + "@typescript-eslint/visitor-keys" "5.51.0" + debug "^4.3.4" + globby "^11.1.0" is-glob "^4.0.3" - semver "^7.3.5" + semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/visitor-keys@5.3.0": - version "5.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.3.0.tgz#a6258790f3b7b2547f70ed8d4a1e0c3499994523" - integrity sha512-oVIAfIQuq0x2TFDNLVavUn548WL+7hdhxYn+9j3YdJJXB7mH9dAmZNJsPDa7Jc+B9WGqoiex7GUDbyMxV0a/aw== +"@typescript-eslint/utils@5.51.0": + version "5.51.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.51.0.tgz#074f4fabd5b12afe9c8aa6fdee881c050f8b4d47" + integrity sha512-76qs+5KWcaatmwtwsDJvBk4H76RJQBFe+Gext0EfJdC3Vd2kpY2Pf//OHHzHp84Ciw0/rYoGTDnIAr3uWhhJYw== dependencies: - "@typescript-eslint/types" "5.3.0" - eslint-visitor-keys "^3.0.0" + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.51.0" + "@typescript-eslint/types" "5.51.0" + "@typescript-eslint/typescript-estree" "5.51.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + semver "^7.3.7" -acorn-jsx@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" - integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== +"@typescript-eslint/visitor-keys@5.51.0": + version "5.51.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.51.0.tgz#c0147dd9a36c0de758aaebd5b48cae1ec59eba87" + integrity sha512-Oh2+eTdjHjOFjKA27sxESlA87YPSOJafGCR0md5oeMdh1ZcCfAGCIOL216uTBAkAIptvLIfKQhl7lHxMJet4GQ== + dependencies: + "@typescript-eslint/types" "5.51.0" + eslint-visitor-keys "^3.3.0" -acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^8.5.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2" - integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q== +acorn@^8.8.0: + version "8.8.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== ajv@^6.10.0, ajv@^6.12.4: version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" @@ -299,72 +277,45 @@ ajv@^6.10.0, ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^7.0.2: - version "7.1.1" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.1.1.tgz#1e6b37a454021fa9941713f38b952fc1c8d32a84" - integrity sha512-ga/aqDYnUy/o7vbsRTFhhTsNeXiYb5JWDIcRIeZfwRNCefwjNTVYCGdGSUrEmiu3yDK3vFvNbgJxvrQW4JXrYQ== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - ansi-colors@^1.0.1: version "1.1.0" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz" integrity sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA== dependencies: ansi-wrap "^0.1.0" -ansi-colors@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - ansi-gray@^0.1.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" + resolved "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz" integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE= dependencies: ansi-wrap "0.1.0" ansi-regex@^2.0.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== - ansi-regex@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: +ansi-styles@^4.1.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" ansi-wrap@0.1.0, ansi-wrap@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" + resolved "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz" integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= anymatch@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz" integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== dependencies: micromatch "^3.1.4" @@ -372,65 +323,58 @@ anymatch@^2.0.0: append-buffer@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1" + resolved "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz" integrity sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE= dependencies: buffer-equal "^1.0.0" archy@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + resolved "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz" integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - argparse@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== arr-diff@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz" integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= arr-filter@^1.1.1: version "1.1.2" - resolved "https://registry.yarnpkg.com/arr-filter/-/arr-filter-1.1.2.tgz#43fdddd091e8ef11aa4c45d9cdc18e2dff1711ee" + resolved "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz" integrity sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4= dependencies: make-iterator "^1.0.0" arr-flatten@^1.0.1, arr-flatten@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + resolved "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz" integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== arr-map@^2.0.0, arr-map@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/arr-map/-/arr-map-2.0.2.tgz#3a77345ffc1cf35e2a91825601f9e58f2e24cac4" + resolved "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz" integrity sha1-Onc0X/wc814qkYJWAfnljy4kysQ= dependencies: make-iterator "^1.0.0" arr-union@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + resolved "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= array-each@^1.0.0, array-each@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" + resolved "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz" integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8= array-initial@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/array-initial/-/array-initial-1.1.0.tgz#2fa74b26739371c3947bd7a7adc73be334b3d795" + resolved "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz" integrity sha1-L6dLJnOTccOUe9enrcc74zSz15U= dependencies: array-slice "^1.0.0" @@ -438,19 +382,19 @@ array-initial@^1.0.0: array-last@^1.1.1: version "1.3.0" - resolved "https://registry.yarnpkg.com/array-last/-/array-last-1.3.0.tgz#7aa77073fec565ddab2493f5f88185f404a9d336" + resolved "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz" integrity sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg== dependencies: is-number "^4.0.0" array-slice@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" + resolved "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz" integrity sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w== array-sort@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/array-sort/-/array-sort-1.0.0.tgz#e4c05356453f56f53512a7d1d6123f2c54c0a88a" + resolved "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz" integrity sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg== dependencies: default-compare "^1.0.0" @@ -459,27 +403,22 @@ array-sort@^1.0.0: array-union@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== array-unique@^0.3.2: version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= assign-symbols@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + resolved "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - async-done@^1.2.0, async-done@^1.2.2: version "1.3.2" - resolved "https://registry.yarnpkg.com/async-done/-/async-done-1.3.2.tgz#5e15aa729962a4b07414f528a88cdf18e0b290a2" + resolved "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz" integrity sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw== dependencies: end-of-stream "^1.1.0" @@ -489,24 +428,24 @@ async-done@^1.2.0, async-done@^1.2.2: async-each@^1.0.1: version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + resolved "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz" integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== async-settle@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/async-settle/-/async-settle-1.0.0.tgz#1d0a914bb02575bec8a8f3a74e5080f72b2c0c6b" + resolved "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz" integrity sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs= dependencies: async-done "^1.2.2" atob@^2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== bach@^1.0.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/bach/-/bach-1.2.0.tgz#4b3ce96bf27134f79a1b414a51c14e34c3bd9880" + resolved "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz" integrity sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA= dependencies: arr-filter "^1.1.1" @@ -521,12 +460,12 @@ bach@^1.0.0: balanced-match@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= base@^0.11.1: version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + resolved "https://registry.npmjs.org/base/-/base-0.11.2.tgz" integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== dependencies: cache-base "^1.0.1" @@ -539,12 +478,12 @@ base@^0.11.1: binary-extensions@^1.0.0: version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz" integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== binaryextensions@^2.2.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-2.3.0.tgz#1d269cbf7e6243ea886aa41453c3651ccbe13c22" + resolved "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.3.0.tgz" integrity sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg== bindings@^1.5.0: @@ -556,15 +495,22 @@ bindings@^1.5.0: brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + braces@^2.3.1, braces@^2.3.2: version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + resolved "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz" integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== dependencies: arr-flatten "^1.1.0" @@ -580,7 +526,7 @@ braces@^2.3.1, braces@^2.3.2: braces@^3.0.1: version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" @@ -588,26 +534,26 @@ braces@^3.0.1: buffer-crc32@^0.2.5: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== buffer-equal@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" + resolved "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz" integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74= buffer-from@^1.0.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== -builtin-modules@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" - integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== +builtin-modules@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== cache-base@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + resolved "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz" integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== dependencies: collection-visit "^1.0.0" @@ -622,26 +568,17 @@ cache-base@^1.0.1: callsites@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== camelcase@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz" integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= -chalk@^2.0.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - chalk@^4.0.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz" integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== dependencies: ansi-styles "^4.1.0" @@ -649,7 +586,7 @@ chalk@^4.0.0: chokidar@^2.0.0: version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz" integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== dependencies: anymatch "^2.0.0" @@ -668,7 +605,7 @@ chokidar@^2.0.0: class-utils@^0.3.5: version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + resolved "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz" integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== dependencies: arr-union "^3.1.0" @@ -678,7 +615,7 @@ class-utils@^0.3.5: cliui@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + resolved "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz" integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= dependencies: string-width "^1.0.1" @@ -687,22 +624,22 @@ cliui@^3.2.0: clone-buffer@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + resolved "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz" integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= clone-stats@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" + resolved "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz" integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= clone@^2.1.1: version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + resolved "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz" integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= cloneable-readable@^1.0.0: version "1.1.3" - resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec" + resolved "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz" integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ== dependencies: inherits "^2.0.1" @@ -711,12 +648,12 @@ cloneable-readable@^1.0.0: code-point-at@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + resolved "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= collection-map@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-map/-/collection-map-1.0.0.tgz#aea0f06f8d26c780c2b75494385544b2255af18c" + resolved "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz" integrity sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw= dependencies: arr-map "^2.0.2" @@ -725,59 +662,47 @@ collection-map@^1.0.0: collection-visit@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + resolved "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz" integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= dependencies: map-visit "^1.0.0" object-visit "^1.0.0" -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - color-name@~1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== color-support@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== commondir@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= component-emitter@^1.2.1: version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== concat-map@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= concat-stream@^1.6.0: version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== dependencies: buffer-from "^1.0.0" @@ -787,26 +712,26 @@ concat-stream@^1.6.0: concat-with-sourcemaps@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz#d4ea93f05ae25790951b99e7b3b09e3908a4082e" + resolved "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz" integrity sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg== dependencies: source-map "^0.6.1" convert-source-map@^1.5.0: version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz" integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== dependencies: safe-buffer "~5.1.1" copy-descriptor@^0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + resolved "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= copy-props@^2.0.1: version "2.0.4" - resolved "https://registry.yarnpkg.com/copy-props/-/copy-props-2.0.4.tgz#93bb1cadfafd31da5bb8a9d4b41f471ec3a72dfe" + resolved "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz" integrity sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A== dependencies: each-props "^1.3.0" @@ -814,12 +739,12 @@ copy-props@^2.0.1: core-util-is@~1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= cross-spawn@^7.0.2: version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" @@ -828,7 +753,7 @@ cross-spawn@^7.0.2: d@1, d@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + resolved "https://registry.npmjs.org/d/-/d-1.0.1.tgz" integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== dependencies: es5-ext "^0.10.50" @@ -836,81 +761,81 @@ d@1, d@^1.0.1: debug@^2.2.0, debug@^2.3.3: version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@^4.0.1, debug@^4.1.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== +debug@^4.1.1, debug@^4.3.2: + version "4.3.2" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== dependencies: ms "2.1.2" -debug@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" - integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== +debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" decamelize@^1.1.1: version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= decode-uri-component@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= deep-is@^0.1.3: version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= deepmerge@^4.2.2: version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== default-compare@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f" + resolved "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz" integrity sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ== dependencies: kind-of "^5.0.2" default-resolution@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/default-resolution/-/default-resolution-2.0.0.tgz#bcb82baa72ad79b426a76732f1a81ad6df26d684" + resolved "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz" integrity sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ= define-properties@^1.1.2: version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz" integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== dependencies: object-keys "^1.0.12" define-property@^0.2.5: version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + resolved "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= dependencies: is-descriptor "^0.1.0" define-property@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + resolved "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz" integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= dependencies: is-descriptor "^1.0.0" define-property@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + resolved "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz" integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== dependencies: is-descriptor "^1.0.2" @@ -918,31 +843,31 @@ define-property@^2.0.2: detect-file@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" + resolved "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz" integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= -detect-indent@^6.0.0: +detect-indent@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== dir-glob@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: path-type "^4.0.0" doctrine@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== dependencies: esutils "^2.0.2" duplexify@^3.6.0: version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + resolved "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz" integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== dependencies: end-of-stream "^1.0.0" @@ -952,41 +877,29 @@ duplexify@^3.6.0: each-props@^1.3.0: version "1.3.2" - resolved "https://registry.yarnpkg.com/each-props/-/each-props-1.3.2.tgz#ea45a414d16dd5cfa419b1a81720d5ca06892333" + resolved "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz" integrity sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA== dependencies: is-plain-object "^2.0.1" object.defaults "^1.1.0" -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" -enquirer@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - error-ex@^1.2.0: version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50: version "0.10.53" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz" integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== dependencies: es6-iterator "~2.0.3" @@ -995,7 +908,7 @@ es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50: es6-iterator@^2.0.1, es6-iterator@^2.0.3, es6-iterator@~2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + resolved "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz" integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= dependencies: d "1" @@ -1005,11 +918,11 @@ es6-iterator@^2.0.1, es6-iterator@^2.0.3, es6-iterator@~2.0.3: es6-promise@^3.1.2: version "3.3.1" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" - integrity sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM= + integrity sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg== es6-symbol@^3.1.1, es6-symbol@~3.1.3: version "3.1.3" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz" integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== dependencies: d "^1.0.1" @@ -1017,7 +930,7 @@ es6-symbol@^3.1.1, es6-symbol@~3.1.3: es6-weak-map@^2.0.1: version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" + resolved "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz" integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== dependencies: d "1" @@ -1025,218 +938,140 @@ es6-weak-map@^2.0.1: es6-iterator "^2.0.3" es6-symbol "^3.1.1" -escape-string-regexp@^1.0.3, escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.3: version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= escape-string-regexp@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== eslint-scope@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-6.0.0.tgz#9cf45b13c5ac8f3d4c50f46a5121f61b3e318978" - integrity sha512-uRDL9MWmQCkaFus8RF5K9/L/2fn+80yoW3jkD53l4shjCh26fCtvJGasxjUqP5OT87SYTxCVA3BwTUzuELx9kA== +eslint-scope@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" + integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - eslint-utils@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== dependencies: eslint-visitor-keys "^2.0.0" -eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - eslint-visitor-keys@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz" integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== -eslint-visitor-keys@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.0.0.tgz#e32e99c6cdc2eb063f204eda5db67bfe58bb4186" - integrity sha512-mJOZa35trBTb3IyRmo8xmKBZlxf+N7OnUl4+ZhJHs/r+0770Wh/LEACE2pqMGMe27G/4y8P2bYGk4J70IC5k1Q== - -eslint@7.x: - version "7.20.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.20.0.tgz#db07c4ca4eda2e2316e7aa57ac7fc91ec550bdc7" - integrity sha512-qGi0CTcOGP2OtCQBgWZlQjcTuP0XkIpYFj25XtRTQSHC+umNnp7UMshr2G8SLsRFYDdAPFeHOsiteadmMH02Yw== - dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.3.0" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.0.1" - doctrine "^3.0.0" - enquirer "^2.3.5" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" - esquery "^1.4.0" - esutils "^2.0.2" - file-entry-cache "^6.0.0" - functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^12.1.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash "^4.17.20" - minimatch "^3.0.4" - natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^6.0.4" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -eslint@8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.2.0.tgz#44d3fb506d0f866a506d97a0fc0e90ee6d06a815" - integrity sha512-erw7XmM+CLxTOickrimJ1SiF55jiNlVSp2qqm0NuBWPtHYQCegD5ZMaW0c3i5ytPqL+SSLaCxdvQXFPLJn+ABw== - dependencies: - "@eslint/eslintrc" "^1.0.4" - "@humanwhocodes/config-array" "^0.6.0" +eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== + +eslint@8.34.0: + version "8.34.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.34.0.tgz#fe0ab0ef478104c1f9ebc5537e303d25a8fb22d6" + integrity sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg== + dependencies: + "@eslint/eslintrc" "^1.4.1" + "@humanwhocodes/config-array" "^0.11.8" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" debug "^4.3.2" doctrine "^3.0.0" - enquirer "^2.3.5" escape-string-regexp "^4.0.0" - eslint-scope "^6.0.0" + eslint-scope "^7.1.1" eslint-utils "^3.0.0" - eslint-visitor-keys "^3.0.0" - espree "^9.0.0" + eslint-visitor-keys "^3.3.0" + espree "^9.4.0" esquery "^1.4.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^6.0.1" - globals "^13.6.0" - ignore "^4.0.6" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + grapheme-splitter "^1.0.4" + ignore "^5.2.0" import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-sdsl "^4.1.4" js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" lodash.merge "^4.6.2" - minimatch "^3.0.4" + minimatch "^3.1.2" natural-compare "^1.4.0" optionator "^0.9.1" - progress "^2.0.0" regexpp "^3.2.0" - semver "^7.2.1" strip-ansi "^6.0.1" strip-json-comments "^3.1.0" text-table "^0.2.0" - v8-compile-cache "^2.0.3" -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== +espree@^9.4.0: + version "9.4.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.1.tgz#51d6092615567a2c2cff7833445e37c28c0065bd" + integrity sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg== dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" - -espree@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.0.0.tgz#e90a2965698228502e771c7a58489b1a9d107090" - integrity sha512-r5EQJcYZ2oaGbeR0jR0fFVijGOcwai07/690YRXLINuhmVeRY4UKSAsQPe/0BNuDgwP7Ophoc1PRsr2E3tkbdQ== - dependencies: - acorn "^8.5.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^3.0.0" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + acorn "^8.8.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.3.0" esquery@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== dependencies: estraverse "^5.1.0" esrecurse@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: estraverse "^5.2.0" estraverse@^4.1.1: version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== estraverse@^5.1.0, estraverse@^5.2.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz" integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== -estree-walker@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" - integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== - -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" - integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== - -estree-walker@^2.0.1: +estree-walker@^2.0.1, estree-walker@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz" integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== esutils@^2.0.2: version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== expand-brackets@^2.1.4: version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz" integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= dependencies: debug "^2.3.3" @@ -1249,28 +1084,28 @@ expand-brackets@^2.1.4: expand-tilde@^2.0.0, expand-tilde@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + resolved "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz" integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= dependencies: homedir-polyfill "^1.0.1" ext@^1.1.2: version "1.4.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" + resolved "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz" integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== dependencies: type "^2.0.0" extend-shallow@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= dependencies: is-extendable "^0.1.0" extend-shallow@^3.0.0, extend-shallow@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= dependencies: assign-symbols "^1.0.0" @@ -1278,12 +1113,12 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: extend@^3.0.0: version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== extglob@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + resolved "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz" integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== dependencies: array-unique "^0.3.2" @@ -1297,7 +1132,7 @@ extglob@^2.0.4: fancy-log@^1.3.2: version "1.3.3" - resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7" + resolved "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz" integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw== dependencies: ansi-gray "^0.1.1" @@ -1307,41 +1142,40 @@ fancy-log@^1.3.2: fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.1.1: - version "3.2.5" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" - integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== +fast-glob@^3.2.9: + version "3.2.12" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.0" + glob-parent "^5.1.2" merge2 "^1.3.0" - micromatch "^4.0.2" - picomatch "^2.2.1" + micromatch "^4.0.4" fast-json-stable-stringify@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-levenshtein@^2.0.6: version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= fastq@^1.6.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858" - integrity sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g== + version "1.13.0" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== dependencies: reusify "^1.0.4" -file-entry-cache@^6.0.0, file-entry-cache@^6.0.1: +file-entry-cache@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: flat-cache "^3.0.4" @@ -1353,7 +1187,7 @@ file-uri-to-path@1.0.0: fill-range@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz" integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= dependencies: extend-shallow "^2.0.1" @@ -1363,22 +1197,30 @@ fill-range@^4.0.0: fill-range@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: to-regex-range "^5.0.1" find-up@^1.0.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + resolved "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz" integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= dependencies: path-exists "^2.0.0" pinkie-promise "^2.0.0" +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + findup-sync@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" + resolved "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz" integrity sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw= dependencies: detect-file "^1.0.0" @@ -1388,7 +1230,7 @@ findup-sync@^2.0.0: findup-sync@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" + resolved "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz" integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== dependencies: detect-file "^1.0.0" @@ -1398,7 +1240,7 @@ findup-sync@^3.0.0: fined@^1.0.1: version "1.2.0" - resolved "https://registry.yarnpkg.com/fined/-/fined-1.2.0.tgz#d00beccf1aa2b475d16d423b0238b713a2c4a37b" + resolved "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz" integrity sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng== dependencies: expand-tilde "^2.0.2" @@ -1409,12 +1251,12 @@ fined@^1.0.1: flagged-respawn@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" + resolved "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz" integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== flat-cache@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== dependencies: flatted "^3.1.0" @@ -1422,12 +1264,12 @@ flat-cache@^3.0.4: flatted@^3.1.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz" integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== flush-write-stream@^1.0.2: version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + resolved "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz" integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== dependencies: inherits "^2.0.3" @@ -1435,26 +1277,26 @@ flush-write-stream@^1.0.2: for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= for-own@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + resolved "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz" integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= dependencies: for-in "^1.0.1" fragment-cache@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + resolved "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz" integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= dependencies: map-cache "^0.2.2" fs-mkdirp-stream@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" + resolved "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz" integrity sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes= dependencies: graceful-fs "^4.1.11" @@ -1462,7 +1304,7 @@ fs-mkdirp-stream@^1.0.0: fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= fsevents@^1.2.7: @@ -1480,40 +1322,35 @@ fsevents@~2.3.2: function-bind@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - get-caller-file@^1.0.1: version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz" integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz" integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= glob-parent@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz" integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= dependencies: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.0.0, glob-parent@^5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" - integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" -glob-parent@^6.0.1: +glob-parent@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== @@ -1522,7 +1359,7 @@ glob-parent@^6.0.1: glob-stream@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" + resolved "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz" integrity sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ= dependencies: extend "^3.0.0" @@ -1538,7 +1375,7 @@ glob-stream@^6.1.0: glob-watcher@^5.0.3: version "5.0.5" - resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-5.0.5.tgz#aa6bce648332924d9a8489be41e3e5c52d4186dc" + resolved "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz" integrity sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw== dependencies: anymatch "^2.0.0" @@ -1551,7 +1388,7 @@ glob-watcher@^5.0.3: glob@^7.1.1, glob@^7.1.3: version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== dependencies: fs.realpath "^1.0.0" @@ -1561,21 +1398,20 @@ glob@^7.1.1, glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.6: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== +glob@^8.0.3: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.4" + minimatch "^5.0.1" once "^1.3.0" - path-is-absolute "^1.0.0" global-modules@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + resolved "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz" integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== dependencies: global-prefix "^1.0.1" @@ -1584,7 +1420,7 @@ global-modules@^1.0.0: global-prefix@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz" integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= dependencies: expand-tilde "^2.0.2" @@ -1593,59 +1429,50 @@ global-prefix@^1.0.1: is-windows "^1.0.1" which "^1.2.14" -globals@^12.1.0: - version "12.4.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" - integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== - dependencies: - type-fest "^0.8.1" - -globals@^13.6.0: - version "13.8.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.8.0.tgz#3e20f504810ce87a8d72e55aecf8435b50f4c1b3" - integrity sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q== - dependencies: - type-fest "^0.20.2" - -globals@^13.9.0: - version "13.10.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.10.0.tgz#60ba56c3ac2ca845cfbf4faeca727ad9dd204676" - integrity sha512-piHC3blgLGFjvOuMmWZX60f+na1lXFDhQXBf1UYp2fXPXqvEUbOhNwi6BsQ0bQishwedgnjkwv1d9zKf+MWw3g== +globals@^13.19.0: + version "13.20.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" + integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== dependencies: type-fest "^0.20.2" -globby@^11.0.4: - version "11.0.4" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" - integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: array-union "^2.1.0" dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" slash "^3.0.0" glogg@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.2.tgz#2d7dd702beda22eb3bffadf880696da6d846313f" + resolved "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz" integrity sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA== dependencies: sparkles "^1.0.0" graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: version "4.2.4" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== graceful-fs@^4.1.3: - version "4.2.8" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" - integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== gulp-cli@^2.2.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/gulp-cli/-/gulp-cli-2.3.0.tgz#ec0d380e29e52aa45e47977f0d32e18fd161122f" + resolved "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz" integrity sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A== dependencies: ansi-colors "^1.0.1" @@ -1669,19 +1496,19 @@ gulp-cli@^2.2.0: gulp-concat@2.6.1: version "2.6.1" - resolved "https://registry.yarnpkg.com/gulp-concat/-/gulp-concat-2.6.1.tgz#633d16c95d88504628ad02665663cee5a4793353" + resolved "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz" integrity sha1-Yz0WyV2IUEYorQJmVmPO5aR5M1M= dependencies: concat-with-sourcemaps "^1.0.0" through2 "^2.0.0" vinyl "^2.0.0" -gulp-replace@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/gulp-replace/-/gulp-replace-1.1.3.tgz#8641cdca78e683e8573ca4a012e7e4ebb7e4db60" - integrity sha512-HcPHpWY4XdF8zxYkDODHnG2+7a3nD/Y8Mfu3aBgMiCFDW3X2GiOKXllsAmILcxe3KZT2BXoN18WrpEFm48KfLQ== +gulp-replace@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/gulp-replace/-/gulp-replace-1.1.4.tgz#06a0e9ee36f30e343c1e0a2dd760ec32c8a3d3b2" + integrity sha512-SVSF7ikuWKhpAW4l4wapAqPPSToJoiNKsbDoUnRrSgwZHH7lH8pbPeQj1aOVYQrbZKhfSVBxVW+Py7vtulRktw== dependencies: - "@types/node" "^14.14.41" + "@types/node" "*" "@types/vinyl" "^2.0.4" istextorbinary "^3.0.0" replacestream "^4.0.3" @@ -1689,7 +1516,7 @@ gulp-replace@1.1.3: gulp@4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/gulp/-/gulp-4.0.2.tgz#543651070fd0f6ab0a0650c6a3e6ff5a7cb09caa" + resolved "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz" integrity sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA== dependencies: glob-watcher "^5.0.3" @@ -1699,29 +1526,24 @@ gulp@4.0.2: gulplog@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" + resolved "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz" integrity sha1-4oxNRdBey77YGDY86PnFkmIp/+U= dependencies: glogg "^1.0.0" -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-symbols@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== has-value@^0.3.1: version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + resolved "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz" integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= dependencies: get-value "^2.0.3" @@ -1730,7 +1552,7 @@ has-value@^0.3.1: has-value@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + resolved "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz" integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= dependencies: get-value "^2.0.6" @@ -1739,12 +1561,12 @@ has-value@^1.0.0: has-values@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + resolved "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz" integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= has-values@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + resolved "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz" integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= dependencies: is-number "^3.0.0" @@ -1752,41 +1574,31 @@ has-values@^1.0.0: has@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" homedir-polyfill@^1.0.1: version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + resolved "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz" integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== dependencies: parse-passwd "^1.0.0" hosted-git-info@^2.1.4: version "2.8.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz" integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -ignore@^5.1.4: - version "5.1.8" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" - integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== - -ignore@^5.1.8: - version "5.1.9" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.9.tgz#9ec1a5cbe8e1446ec60d4420060d43aa6e7382fb" - integrity sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ== +ignore@^5.2.0: + version "5.2.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: parent-module "^1.0.0" @@ -1794,12 +1606,12 @@ import-fresh@^3.0.0, import-fresh@^3.2.1: imurmurhash@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= inflight@^1.0.4: version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= dependencies: once "^1.3.0" @@ -1807,27 +1619,27 @@ inflight@^1.0.4: inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== ini@^1.3.4: version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== interpret@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== invert-kv@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + resolved "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz" integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= is-absolute@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" + resolved "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz" integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== dependencies: is-relative "^1.0.0" @@ -1835,59 +1647,66 @@ is-absolute@^1.0.0: is-accessor-descriptor@^0.1.6: version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz" integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= dependencies: kind-of "^3.0.2" is-accessor-descriptor@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz" integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== dependencies: kind-of "^6.0.0" is-arrayish@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= is-binary-path@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz" integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= dependencies: binary-extensions "^1.0.0" is-buffer@^1.1.5: version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-core-module@^2.2.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" - integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== +is-builtin-module@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" + integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== + dependencies: + builtin-modules "^3.3.0" + +is-core-module@^2.9.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" + integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== dependencies: has "^1.0.3" is-data-descriptor@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz" integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= dependencies: kind-of "^3.0.2" is-data-descriptor@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz" integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== dependencies: kind-of "^6.0.0" is-descriptor@^0.1.0: version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz" integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== dependencies: is-accessor-descriptor "^0.1.6" @@ -1896,7 +1715,7 @@ is-descriptor@^0.1.0: is-descriptor@^1.0.0, is-descriptor@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz" integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== dependencies: is-accessor-descriptor "^1.0.0" @@ -1905,89 +1724,82 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= is-extendable@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz" integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== dependencies: is-plain-object "^2.0.4" is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= is-fullwidth-code-point@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz" integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= dependencies: number-is-nan "^1.0.0" -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - is-glob@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz" integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0, is-glob@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-glob@^4.0.3: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" is-module@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + resolved "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz" integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= is-negated-glob@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" + resolved "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz" integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= is-number@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + resolved "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz" integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= dependencies: kind-of "^3.0.2" is-number@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + resolved "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz" integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== is-number@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: isobject "^3.0.1" -is-reference@^1.2.1: +is-reference@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== @@ -1996,130 +1808,117 @@ is-reference@^1.2.1: is-relative@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" + resolved "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz" integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== dependencies: is-unc-path "^1.0.0" is-unc-path@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" + resolved "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz" integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== dependencies: unc-path-regex "^0.1.2" is-utf8@^0.2.0, is-utf8@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + resolved "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= is-valid-glob@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" + resolved "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz" integrity sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao= is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== isarray@1.0.0, isarray@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= isexe@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= isobject@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + resolved "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= dependencies: isarray "1.0.0" isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= istextorbinary@^3.0.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-3.3.0.tgz#06b1c57d948da11461bd237c00ce09e9902964f2" + resolved "https://registry.npmjs.org/istextorbinary/-/istextorbinary-3.3.0.tgz" integrity sha512-Tvq1W6NAcZeJ8op+Hq7tdZ434rqnMx4CCZ7H0ff83uEloDvVbqAwaMTZcafKGJT0VHkYzuXUiCY4hlXQg6WfoQ== dependencies: binaryextensions "^2.2.0" textextensions "^3.2.0" -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" - integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" +js-sdsl@^4.1.4: + version "4.3.0" + resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.3.0.tgz#aeefe32a451f7af88425b11fdb5f58c90ae1d711" + integrity sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ== js-yaml@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: argparse "^2.0.1" json-schema-traverse@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= just-debounce@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.0.0.tgz#87fccfaeffc0b68cd19d55f6722943f929ea35ea" + resolved "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz" integrity sha1-h/zPrv/AtozRnVX2cilD+SnqNeo= kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= dependencies: is-buffer "^1.1.5" kind-of@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz" integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= dependencies: is-buffer "^1.1.5" kind-of@^5.0.0, kind-of@^5.0.2: version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz" integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== kind-of@^6.0.0, kind-of@^6.0.2: version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== last-run@^1.1.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/last-run/-/last-run-1.1.1.tgz#45b96942c17b1c79c772198259ba943bebf8ca5b" + resolved "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz" integrity sha1-RblpQsF7HHnHchmCWbqUO+v4yls= dependencies: default-resolution "^2.0.0" @@ -2127,28 +1926,28 @@ last-run@^1.1.0: lazystream@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" + resolved "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz" integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= dependencies: readable-stream "^2.0.5" lcid@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + resolved "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz" integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= dependencies: invert-kv "^1.0.0" lead@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42" + resolved "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz" integrity sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI= dependencies: flush-write-stream "^1.0.2" levn@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== dependencies: prelude-ls "^1.2.1" @@ -2156,7 +1955,7 @@ levn@^0.4.1: liftoff@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-3.1.0.tgz#c9ba6081f908670607ee79062d700df062c52ed3" + resolved "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz" integrity sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog== dependencies: extend "^3.0.0" @@ -2170,7 +1969,7 @@ liftoff@^3.1.0: load-json-file@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz" integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= dependencies: graceful-fs "^4.1.2" @@ -2179,52 +1978,54 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + lodash.merge@^4.6.2: version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash@^4.17.20: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - lru-cache@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: yallist "^4.0.0" -magic-string@^0.25.7: - version "0.25.7" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" - integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== +magic-string@^0.27.0: + version "0.27.0" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3" + integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA== dependencies: - sourcemap-codec "^1.4.4" + "@jridgewell/sourcemap-codec" "^1.4.13" make-iterator@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" + resolved "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz" integrity sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw== dependencies: kind-of "^6.0.2" map-cache@^0.2.0, map-cache@^0.2.2: version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + resolved "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz" integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= map-visit@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + resolved "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz" integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= dependencies: object-visit "^1.0.0" matchdep@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/matchdep/-/matchdep-2.0.0.tgz#c6f34834a0d8dbc3b37c27ee8bbcb27c7775582e" + resolved "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz" integrity sha1-xvNINKDY28OzfCfui7yyfHd1WC4= dependencies: findup-sync "^2.0.0" @@ -2232,14 +2033,14 @@ matchdep@^2.0.0: resolve "^1.4.0" stack-trace "0.0.10" -merge2@^1.3.0: +merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== dependencies: arr-diff "^4.0.0" @@ -2256,69 +2057,83 @@ micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" -micromatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== +micromatch@^4.0.4: + version "4.0.4" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz" + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== dependencies: braces "^3.0.1" - picomatch "^2.0.5" + picomatch "^2.2.3" min-indent@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== minimatch@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" -minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minimatch@^3.0.5, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== mixin-deep@^1.2.0: version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + resolved "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz" integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== dependencies: for-in "^1.0.2" is-extendable "^1.0.1" mkdirp@^0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: - minimist "^1.2.5" + minimist "^1.2.6" ms@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= ms@2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== mute-stdout@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.1.tgz#acb0300eb4de23a7ddeec014e3e96044b3472331" + resolved "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz" integrity sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg== nan@^2.12.1: - version "2.14.1" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" - integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== + version "2.17.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" + integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== nanomatch@^1.2.9: version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + resolved "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz" integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== dependencies: arr-diff "^4.0.0" @@ -2333,19 +2148,24 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== + natural-compare@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= next-tick@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz" integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= normalize-package-data@^2.3.2: version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== dependencies: hosted-git-info "^2.1.4" @@ -2355,36 +2175,36 @@ normalize-package-data@^2.3.2: normalize-path@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz" integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= dependencies: remove-trailing-separator "^1.0.1" normalize-path@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== now-and-later@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-2.0.1.tgz#8e579c8685764a7cc02cb680380e94f43ccb1f7c" + resolved "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz" integrity sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ== dependencies: once "^1.3.2" number-is-nan@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= object-assign@^4.0.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= object-copy@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + resolved "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz" integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= dependencies: copy-descriptor "^0.1.0" @@ -2393,19 +2213,19 @@ object-copy@^0.1.0: object-keys@^1.0.11, object-keys@^1.0.12: version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== object-visit@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + resolved "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz" integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= dependencies: isobject "^3.0.0" object.assign@^4.0.4, object.assign@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz" integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== dependencies: define-properties "^1.1.2" @@ -2415,7 +2235,7 @@ object.assign@^4.0.4, object.assign@^4.1.0: object.defaults@^1.0.0, object.defaults@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" + resolved "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz" integrity sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8= dependencies: array-each "^1.0.1" @@ -2425,7 +2245,7 @@ object.defaults@^1.0.0, object.defaults@^1.1.0: object.map@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" + resolved "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz" integrity sha1-z4Plncj8wK1fQlDh94s7gb2AHTc= dependencies: for-own "^1.0.0" @@ -2433,14 +2253,14 @@ object.map@^1.0.0: object.pick@^1.2.0, object.pick@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + resolved "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz" integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= dependencies: isobject "^3.0.1" object.reduce@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/object.reduce/-/object.reduce-1.0.1.tgz#6fe348f2ac7fa0f95ca621226599096825bb03ad" + resolved "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz" integrity sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60= dependencies: for-own "^1.0.0" @@ -2448,14 +2268,14 @@ object.reduce@^1.0.0: once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= dependencies: wrappy "1" optionator@^0.9.1: version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== dependencies: deep-is "^0.1.3" @@ -2467,28 +2287,42 @@ optionator@^0.9.1: ordered-read-streams@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" + resolved "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz" integrity sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4= dependencies: readable-stream "^2.0.1" os-locale@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + resolved "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz" integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= dependencies: lcid "^1.0.0" +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + parent-module@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: callsites "^3.0.0" parse-filepath@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" + resolved "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz" integrity sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE= dependencies: is-absolute "^1.0.0" @@ -2497,68 +2331,78 @@ parse-filepath@^1.0.1: parse-json@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz" integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= dependencies: error-ex "^1.2.0" parse-node-version@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" + resolved "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz" integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== parse-passwd@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + resolved "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz" integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= pascalcase@^0.1.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + resolved "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= path-dirname@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + resolved "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz" integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= path-exists@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz" integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= dependencies: pinkie-promise "^2.0.0" +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + path-is-absolute@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= path-key@^3.1.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== path-root-regex@^0.1.0: version "0.1.2" - resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" + resolved "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz" integrity sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0= path-root@^0.1.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" + resolved "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz" integrity sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc= dependencies: path-root-regex "^0.1.0" path-type@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + resolved "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz" integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= dependencies: graceful-fs "^4.1.2" @@ -2567,64 +2411,59 @@ path-type@^1.0.0: path-type@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -picomatch@^2.0.5, picomatch@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== - -picomatch@^2.2.2: +picomatch@^2.2.2, picomatch@^2.2.3: version "2.3.0" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz" integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + pify@^2.0.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= pinkie-promise@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + resolved "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= dependencies: pinkie "^2.0.0" pinkie@^2.0.0: version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + resolved "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= posix-character-classes@^0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + resolved "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= prelude-ls@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== pretty-hrtime@^1.0.0: version "1.0.3" - resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" + resolved "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz" integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - pump@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + resolved "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz" integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== dependencies: end-of-stream "^1.1.0" @@ -2632,7 +2471,7 @@ pump@^2.0.0: pumpify@^1.3.5: version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + resolved "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz" integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== dependencies: duplexify "^3.6.0" @@ -2641,17 +2480,17 @@ pumpify@^1.3.5: punycode@^2.1.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== queue-microtask@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.2.tgz#abf64491e6ecf0f38a6502403d4cda04f372dfd3" - integrity sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg== + version "1.2.3" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== read-pkg-up@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz" integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= dependencies: find-up "^1.0.0" @@ -2659,7 +2498,7 @@ read-pkg-up@^1.0.1: read-pkg@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz" integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= dependencies: load-json-file "^1.0.0" @@ -2668,7 +2507,7 @@ read-pkg@^1.0.0: readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== dependencies: core-util-is "~1.0.0" @@ -2681,7 +2520,7 @@ readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable readdirp@^2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz" integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== dependencies: graceful-fs "^4.1.11" @@ -2690,32 +2529,27 @@ readdirp@^2.2.1: rechoir@^0.6.2: version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz" integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= dependencies: resolve "^1.1.6" regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + resolved "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz" integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== dependencies: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexpp@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" - integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== - regexpp@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== remove-bom-buffer@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53" + resolved "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz" integrity sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ== dependencies: is-buffer "^1.1.5" @@ -2723,7 +2557,7 @@ remove-bom-buffer@^3.0.0: remove-bom-stream@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz#05f1a593f16e42e1fb90ebf59de8e569525f9523" + resolved "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz" integrity sha1-BfGlk/FuQuH7kOv1nejlaVJflSM= dependencies: remove-bom-buffer "^3.0.0" @@ -2732,27 +2566,27 @@ remove-bom-stream@^1.2.0: remove-trailing-separator@^1.0.1, remove-trailing-separator@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + resolved "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz" integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= repeat-element@^1.1.2: version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz" integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== repeat-string@^1.6.1: version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= replace-ext@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.1.tgz#2d6d996d04a15855d967443631dd5f77825b016a" + resolved "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz" integrity sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw== replace-homedir@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/replace-homedir/-/replace-homedir-1.0.0.tgz#e87f6d513b928dde808260c12be7fec6ff6e798c" + resolved "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz" integrity sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw= dependencies: homedir-polyfill "^1.0.1" @@ -2761,7 +2595,7 @@ replace-homedir@^1.0.0: replacestream@^4.0.3: version "4.0.3" - resolved "https://registry.yarnpkg.com/replacestream/-/replacestream-4.0.3.tgz#3ee5798092be364b1cdb1484308492cb3dff2f36" + resolved "https://registry.npmjs.org/replacestream/-/replacestream-4.0.3.tgz" integrity sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA== dependencies: escape-string-regexp "^1.0.3" @@ -2770,27 +2604,17 @@ replacestream@^4.0.3: require-directory@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - require-main-filename@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz" integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= -require-relative@^0.8.7: - version "0.8.7" - resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de" - integrity sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4= - resolve-dir@^1.0.0, resolve-dir@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + resolved "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz" integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= dependencies: expand-tilde "^2.0.0" @@ -2798,44 +2622,45 @@ resolve-dir@^1.0.0, resolve-dir@^1.0.1: resolve-from@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== resolve-options@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131" + resolved "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz" integrity sha1-MrueOcBtZzONyTeMDW1gdFZq0TE= dependencies: value-or-function "^3.0.0" resolve-url@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.4.0: version "1.17.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz" integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== dependencies: path-parse "^1.0.6" -resolve@^1.17.0, resolve@^1.19.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== +resolve@^1.22.1: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" ret@~0.1.10: version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== reusify@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rimraf@^2.5.2: @@ -2847,53 +2672,45 @@ rimraf@^2.5.2: rimraf@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" -rollup-plugin-svelte@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-svelte/-/rollup-plugin-svelte-7.1.0.tgz#d45f2b92b1014be4eb46b55aa033fb9a9c65f04d" - integrity sha512-vopCUq3G+25sKjwF5VilIbiY6KCuMNHP1PFvx2Vr3REBNMDllKHFZN2B9jwwC+MqNc3UPKkjXnceLPEjTjXGXg== +rollup-plugin-svelte@7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-svelte/-/rollup-plugin-svelte-7.1.2.tgz#266beab511b00ab1dff7706926c84051a155c8eb" + integrity sha512-CfU5C4lhVyN80GqtNod4IvsN1nYrcWS3C/T9+gWF+O31e4QwBPo6ubHlLnuQKYVBzC3qIGdERuyrbrvljLfN/A== dependencies: - require-relative "^0.8.7" - rollup-pluginutils "^2.8.2" + "@rollup/pluginutils" "^4.1.0" -rollup-pluginutils@^2.8.2: - version "2.8.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" - integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== - dependencies: - estree-walker "^0.6.1" - -rollup@2.59.0: - version "2.59.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.59.0.tgz#108c61b0fa0a37ebc8d1f164f281622056f0db59" - integrity sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw== +rollup@3.15.0: + version "3.15.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.15.0.tgz#6f4105e8c4b8145229657b74ad660b02fbfacc05" + integrity sha512-F9hrCAhnp5/zx/7HYmftvsNBkMfLfk/dXUh73hPSM2E3CRgap65orDNJbLetoiUFwSAk6iHPLvBrZ5iHYvzqsg== optionalDependencies: fsevents "~2.3.2" run-parallel@^1.1.9: version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: queue-microtask "^1.2.2" safe-buffer@^5.1.0: version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== safe-regex@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + resolved "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz" integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= dependencies: ret "~0.1.10" @@ -2901,7 +2718,7 @@ safe-regex@^1.1.0: sander@^0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/sander/-/sander-0.5.1.tgz#741e245e231f07cafb6fdf0f133adfa216a502ad" - integrity sha1-dB4kXiMfB8r7b98PEzrfohalAq0= + integrity sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA== dependencies: es6-promise "^3.1.2" graceful-fs "^4.1.3" @@ -2910,38 +2727,31 @@ sander@^0.5.0: semver-greatest-satisfied-range@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz#13e8c2658ab9691cb0cd71093240280d36f77a5b" + resolved "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz" integrity sha1-E+jCZYq5aRywzXEJMkAoDTb3els= dependencies: sver-compat "^1.5.0" "semver@2 || 3 || 4 || 5": version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@^7.2.1: - version "7.3.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" - integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== - dependencies: - lru-cache "^6.0.0" - -semver@^7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== +semver@^7.3.7: + version "7.3.8" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" + integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== dependencies: lru-cache "^6.0.0" set-blocking@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + resolved "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz" integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== dependencies: extend-shallow "^2.0.1" @@ -2951,33 +2761,24 @@ set-value@^2.0.0, set-value@^2.0.1: shebang-command@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: shebang-regex "^3.0.0" shebang-regex@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== slash@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - snapdragon-node@^2.0.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + resolved "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz" integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== dependencies: define-property "^1.0.0" @@ -2986,14 +2787,14 @@ snapdragon-node@^2.0.1: snapdragon-util@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + resolved "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz" integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== dependencies: kind-of "^3.2.0" snapdragon@^0.8.1: version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + resolved "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz" integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== dependencies: base "^0.11.1" @@ -3005,19 +2806,19 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -sorcery@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/sorcery/-/sorcery-0.10.0.tgz#8ae90ad7d7cb05fc59f1ab0c637845d5c15a52b7" - integrity sha1-iukK19fLBfxZ8asMY3hF1cFaUrc= +sorcery@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/sorcery/-/sorcery-0.11.0.tgz#310c80ee993433854bb55bb9aa4003acd147fca8" + integrity sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw== dependencies: + "@jridgewell/sourcemap-codec" "^1.4.14" buffer-crc32 "^0.2.5" minimist "^1.2.0" sander "^0.5.0" - sourcemap-codec "^1.3.0" source-map-resolve@^0.5.0: version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz" integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== dependencies: atob "^2.1.2" @@ -3028,32 +2829,27 @@ source-map-resolve@^0.5.0: source-map-url@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= source-map@^0.5.6: version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= source-map@^0.6.1: version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -sourcemap-codec@^1.3.0, sourcemap-codec@^1.4.4: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - sparkles@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c" + resolved "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz" integrity sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw== spdx-correct@^3.0.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz" integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== dependencies: spdx-expression-parse "^3.0.0" @@ -3061,12 +2857,12 @@ spdx-correct@^3.0.0: spdx-exceptions@^2.1.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== spdx-expression-parse@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== dependencies: spdx-exceptions "^2.1.0" @@ -3074,29 +2870,24 @@ spdx-expression-parse@^3.0.0: spdx-license-ids@^3.0.0: version "3.0.5" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz" integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + resolved "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz" integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== dependencies: extend-shallow "^3.0.0" -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - stack-trace@0.0.10: version "0.0.10" - resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + resolved "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz" integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= static-extend@^0.1.1: version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + resolved "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz" integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= dependencies: define-property "^0.2.5" @@ -3104,141 +2895,113 @@ static-extend@^0.1.1: stream-exhaust@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d" + resolved "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz" integrity sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw== stream-shift@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + resolved "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz" integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + resolved "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz" integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= dependencies: code-point-at "^1.0.0" is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -string-width@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" - integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - string_decoder@~1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: safe-buffer "~5.1.0" strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= dependencies: ansi-regex "^2.0.0" -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - strip-ansi@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" strip-bom@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz" integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= dependencies: is-utf8 "^0.2.0" strip-indent@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz" integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== dependencies: min-indent "^1.0.0" strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - supports-color@^7.1.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" -svelte-preprocess@^4.7.4: - version "4.9.8" - resolved "https://registry.yarnpkg.com/svelte-preprocess/-/svelte-preprocess-4.9.8.tgz#fd40afebfb352f469beab289667485ebf0d811da" - integrity sha512-EQS/oRZzMtYdAprppZxY3HcysKh11w54MgA63ybtL+TAZ4hVqYOnhw41JVJjWN9dhPnNjjLzvbZ2tMhTsla1Og== - dependencies: - "@types/pug" "^2.0.4" - "@types/sass" "^1.16.0" - detect-indent "^6.0.0" - magic-string "^0.25.7" - sorcery "^0.10.0" +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svelte-preprocess@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/svelte-preprocess/-/svelte-preprocess-5.0.1.tgz#3dd21a17eb508347d4b26a0d98059d23e2d1b9a0" + integrity sha512-0HXyhCoc9rsW4zGOgtInylC6qj259E1hpFnJMJWTf+aIfeqh4O/QHT31KT2hvPEqQfdjmqBR/kO2JDkkciBLrQ== + dependencies: + "@types/pug" "^2.0.6" + "@types/sass" "^1.43.1" + detect-indent "^6.1.0" + magic-string "^0.27.0" + sorcery "^0.11.0" strip-indent "^3.0.0" -svelte@^3.41.0: - version "3.44.1" - resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.44.1.tgz#5cc772a8340f4519a4ecd1ac1a842325466b1a63" - integrity sha512-4DrCEJoBvdR689efHNSxIQn2pnFwB7E7j2yLEJtHE/P8hxwZWIphCtJ8are7bjl/iVMlcEf5uh5pJ68IwR09vQ== +svelte@3.55.1: + version "3.55.1" + resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.55.1.tgz#6f93b153e5248039906ce5fe196efdb9e05dfce8" + integrity sha512-S+87/P0Ve67HxKkEV23iCdAh/SX1xiSfjF1HOglno/YTbSTW7RniICMCofWGdJJbdjw3S+0PfFb1JtGfTXE0oQ== sver-compat@^1.5.0: version "1.5.0" - resolved "https://registry.yarnpkg.com/sver-compat/-/sver-compat-1.5.0.tgz#3cf87dfeb4d07b4a3f14827bc186b3fd0c645cd8" + resolved "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz" integrity sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg= dependencies: es6-iterator "^2.0.1" es6-symbol "^3.1.1" -table@^6.0.4: - version "6.0.7" - resolved "https://registry.yarnpkg.com/table/-/table-6.0.7.tgz#e45897ffbcc1bcf9e8a87bf420f2c9e5a7a52a34" - integrity sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g== - dependencies: - ajv "^7.0.2" - lodash "^4.17.20" - slice-ansi "^4.0.0" - string-width "^4.2.0" - text-table@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= textextensions@^3.2.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-3.3.0.tgz#03530d5287b86773c08b77458589148870cc71d3" + resolved "https://registry.npmjs.org/textextensions/-/textextensions-3.3.0.tgz" integrity sha512-mk82dS8eRABNbeVJrEiN5/UMSCliINAuz8mkUwH4SwslkNP//gbEzlWNS5au0z5Dpx40SQxzqZevZkn+WYJ9Dw== through2-filter@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254" + resolved "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz" integrity sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA== dependencies: through2 "~2.0.0" @@ -3246,7 +3009,7 @@ through2-filter@^3.0.0: through2@^2.0.0, through2@^2.0.3, through2@~2.0.0: version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== dependencies: readable-stream "~2.3.6" @@ -3254,12 +3017,12 @@ through2@^2.0.0, through2@^2.0.3, through2@~2.0.0: time-stamp@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" + resolved "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz" integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= to-absolute-glob@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" + resolved "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz" integrity sha1-GGX0PZ50sIItufFFt4z/fQ98hJs= dependencies: is-absolute "^1.0.0" @@ -3267,14 +3030,14 @@ to-absolute-glob@^2.0.0: to-object-path@^0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + resolved "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz" integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= dependencies: kind-of "^3.0.2" to-regex-range@^2.1.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz" integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= dependencies: is-number "^3.0.0" @@ -3282,14 +3045,14 @@ to-regex-range@^2.1.0: to-regex-range@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + resolved "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz" integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== dependencies: define-property "^2.0.2" @@ -3299,78 +3062,73 @@ to-regex@^3.0.1, to-regex@^3.0.2: to-through@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/to-through/-/to-through-2.0.0.tgz#fc92adaba072647bc0b67d6b03664aa195093af6" + resolved "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz" integrity sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY= dependencies: through2 "^2.0.3" -tslib@2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" - integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== +tslib@2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== tslib@^1.8.1: - version "1.13.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" - integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== + version "1.14.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tsutils@^3.21.0: version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== dependencies: tslib "^1.8.1" type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: prelude-ls "^1.2.1" type-fest@^0.20.2: version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - type@^1.0.1: version "1.2.0" - resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + resolved "https://registry.npmjs.org/type/-/type-1.2.0.tgz" integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== type@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" + resolved "https://registry.npmjs.org/type/-/type-2.0.0.tgz" integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== typedarray@^0.0.6: version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@4.4.4: - version "4.4.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.4.tgz#2cd01a1a1f160704d3101fd5a58ff0f9fcb8030c" - integrity sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA== +typescript@4.9.5: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== unc-path-regex@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" + resolved "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz" integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= undertaker-registry@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/undertaker-registry/-/undertaker-registry-1.0.1.tgz#5e4bda308e4a8a2ae584f9b9a4359a499825cc50" + resolved "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz" integrity sha1-XkvaMI5KiirlhPm5pDWaSZglzFA= undertaker@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/undertaker/-/undertaker-1.2.1.tgz#701662ff8ce358715324dfd492a4f036055dfe4b" + resolved "https://registry.npmjs.org/undertaker/-/undertaker-1.2.1.tgz" integrity sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA== dependencies: arr-flatten "^1.0.1" @@ -3385,7 +3143,7 @@ undertaker@^1.2.1: union-value@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + resolved "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz" integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== dependencies: arr-union "^3.1.0" @@ -3395,7 +3153,7 @@ union-value@^1.0.0: unique-stream@^2.0.2: version "2.3.1" - resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.3.1.tgz#c65d110e9a4adf9a6c5948b28053d9a8d04cbeac" + resolved "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz" integrity sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A== dependencies: json-stable-stringify-without-jsonify "^1.0.1" @@ -3403,7 +3161,7 @@ unique-stream@^2.0.2: unset-value@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + resolved "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz" integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= dependencies: has-value "^0.3.1" @@ -3411,46 +3169,41 @@ unset-value@^1.0.0: upath@^1.1.1: version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + resolved "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== uri-js@^4.2.2: version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" urix@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + resolved "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= use@^3.1.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + resolved "https://registry.npmjs.org/use/-/use-3.1.1.tgz" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== util-deprecate@~1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -v8-compile-cache@^2.0.3: - version "2.2.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" - integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== - v8flags@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.2.0.tgz#b243e3b4dfd731fa774e7492128109a0fe66d656" + resolved "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz" integrity sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg== dependencies: homedir-polyfill "^1.0.1" validate-npm-package-license@^3.0.1: version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== dependencies: spdx-correct "^3.0.0" @@ -3458,12 +3211,12 @@ validate-npm-package-license@^3.0.1: value-or-function@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" + resolved "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz" integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM= vinyl-fs@^3.0.0: version "3.0.3" - resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-3.0.3.tgz#c85849405f67428feabbbd5c5dbdd64f47d31bc7" + resolved "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz" integrity sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng== dependencies: fs-mkdirp-stream "^1.0.0" @@ -3486,7 +3239,7 @@ vinyl-fs@^3.0.0: vinyl-sourcemap@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz#92a800593a38703a8cdb11d8b300ad4be63b3e16" + resolved "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz" integrity sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY= dependencies: append-buffer "^1.0.2" @@ -3499,7 +3252,7 @@ vinyl-sourcemap@^1.1.0: vinyl@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" + resolved "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz" integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg== dependencies: clone "^2.1.1" @@ -3511,31 +3264,31 @@ vinyl@^2.0.0: which-module@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + resolved "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz" integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= which@^1.2.14: version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" which@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" word-wrap@^1.2.3: version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== wrap-ansi@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz" integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= dependencies: string-width "^1.0.1" @@ -3543,27 +3296,27 @@ wrap-ansi@^2.0.0: wrappy@1: version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= xtend@~4.0.0, xtend@~4.0.1: version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== y18n@^3.2.1: version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + resolved "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz" integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= yallist@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== yargs-parser@5.0.0-security.0: version "5.0.0-security.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0-security.0.tgz#4ff7271d25f90ac15643b86076a2ab499ec9ee24" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0-security.0.tgz" integrity sha512-T69y4Ps64LNesYxeYGYPvfoMTt/7y1XtfpIslUeK4um+9Hu7hlGoRtaDLvdXb7+/tfq4opVa2HRY5xGip022rQ== dependencies: camelcase "^3.0.0" @@ -3571,12 +3324,12 @@ yargs-parser@5.0.0-security.0: yargs-parser@>=5.0.0-security.0: version "20.2.7" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz" integrity sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw== yargs@^7.1.0: version "7.1.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.1.tgz#67f0ef52e228d4ee0d6311acede8850f53464df6" + resolved "https://registry.npmjs.org/yargs/-/yargs-7.1.1.tgz" integrity sha512-huO4Fr1f9PmiJJdll5kwoS2e4GqzGSsMT3PPMpOwoVkOK8ckqAewMTZyA6LXVQWflleb/Z8oPBEvNsMft0XE+g== dependencies: camelcase "^3.0.0" @@ -3592,3 +3345,8 @@ yargs@^7.1.0: which-module "^1.0.0" y18n "^3.2.1" yargs-parser "5.0.0-security.0" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==