diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..5e89926 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,10 @@ +export default [ + { + files: ["**/*.js", "**/*.cjs", "**/*.mjs"], + rules: { + "prefer-const": "warn", + "no-constant-binary-expression": "error", + "@typescript-eslint/no-explicit-any": "off" + } + } +]; diff --git a/music-time-2.2.45.vsix b/music-time-2.2.45.vsix deleted file mode 100644 index 52319ad..0000000 Binary files a/music-time-2.2.45.vsix and /dev/null differ diff --git a/music-time-2.2.46.vsix b/music-time-2.2.46.vsix new file mode 100644 index 0000000..40a90da Binary files /dev/null and b/music-time-2.2.46.vsix differ diff --git a/package.json b/package.json index 708479d..acf6f83 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "music-time", "displayName": "Music Time for Spotify", - "version": "2.2.45", + "version": "2.2.46", "publisher": "softwaredotcom", "description": "Music Time for Spotify is a VS Code extension that discovers the most productive music to listen to as you code.", "author": { @@ -219,16 +219,16 @@ "webpack-cli": "^4.9.2" }, "dependencies": { - "@slack/web-api": "^7.0.4", - "@types/uuid": "^9.0.8", - "@types/ws": "^8.5.10", - "axios": "^1.7.4", + "@slack/web-api": "^7.7.0", + "@types/uuid": "^10.0.0", + "@types/ws": "^8.5.12", + "axios": "^1.7.7", "clipboardy": "^4.0.0", "cody-music": "2.10.8", - "date-fns": "^3.6.0", - "open": "^8.4.0", + "date-fns": "^4.1.0", + "open": "^10.1.0", "query-string": "^7.0.1", - "uuid": "^8.3.2", - "ws": "^8.17.1" + "uuid": "^11.0.1", + "ws": "^8.18.0" } } diff --git a/src/Util.ts b/src/Util.ts index 579fde4..0d62c76 100644 --- a/src/Util.ts +++ b/src/Util.ts @@ -8,11 +8,12 @@ import { v4 as uuidv4 } from "uuid"; import { initializeWebsockets, websocketAlive } from './websockets'; import { isWindows } from "./managers/DeviceManager"; -const open = require("open"); -const fs = require("fs"); -const path = require('path'); -const os = require("os"); -const crypto = require("crypto"); +import open from 'open'; + +import * as fs from 'fs'; +import * as path from 'path'; +import * as os from 'os'; +import * as crypto from 'crypto'; const outputChannel = window.createOutputChannel('MusicTime'); @@ -95,7 +96,7 @@ export function getSoftwareDir() { return softwareDataDir; } -function getFile(name: string, default_data: any = {}) { +function getFile(name: string, default_data = {}) { const file_path = getSoftwareDir(); const file = isWindows() ? `${file_path}\\${name}` : `${file_path}/${name}`; if (!fs.existsSync(file)) { @@ -259,7 +260,7 @@ export function deleteFile(file) { */ export function formatPathIfNecessary(pathString: string) { if (process.platform === "win32") { - pathString = pathString.replace(/^([a-zA-Z])\:\\/, (_, $1) => `${$1.toUpperCase()}:\\`); + pathString = pathString.replace(/^([a-zA-Z]):\\/, (_, $1) => `${$1.toUpperCase()}:\\`); } return pathString; } diff --git a/src/command-helper.ts b/src/command-helper.ts index 0fd05cf..f413845 100644 --- a/src/command-helper.ts +++ b/src/command-helper.ts @@ -45,7 +45,7 @@ import { app_endpoint, vscode_mt_issues_url } from "./Constants"; import { displayReadmeIfNotExists } from './DataController'; import { MusicCommandManager } from './music/MusicCommandManager'; -const queryString = require("query-string"); +import queryString = require("query-string"); /** * add the commands to vscode.... @@ -291,7 +291,7 @@ export function createCommands( plugin_id: getMusicTimePluginId() }); - const url = `${app_endpoint}/data_sources/integration_types/spotify}?${qryStr}`; + const url = `${app_endpoint}/code_time/integration_type/spotify}?${qryStr}`; launchWebUrl(url); }) ); @@ -299,27 +299,27 @@ export function createCommands( // CONNECT SLACK cmds.push( commands.registerCommand("musictime.connectSlack", () => { - launchWebUrl(`${app_endpoint}/data_sources/integration_types/slack`); + launchWebUrl(`${app_endpoint}/code_time/integration_type/slack`); }) ); cmds.push( commands.registerCommand("musictime.connectSlackWorkspace", () => { - launchWebUrl(`${app_endpoint}/data_sources/integration_types/slack`); + launchWebUrl(`${app_endpoint}/code_time/integration_type/slack`); }) ); // DISCONNECT SPOTIFY cmds.push( commands.registerCommand("musictime.disconnectSpotify", () => { - launchWebUrl(`${app_endpoint}/data_sources/integration_types/spotify`); + launchWebUrl(`${app_endpoint}/code_time/integration_type/spotify`); }) ); // DISCONNECT SLACK cmds.push( commands.registerCommand("musictime.disconnectSlack", () => { - launchWebUrl(`${app_endpoint}/data_sources/integration_types/slack`); + launchWebUrl(`${app_endpoint}/code_time/integration_type/slack`); }) ); @@ -451,7 +451,7 @@ export function createCommands( cmds.push( commands.registerCommand("musictime.refreshMusicTimeView", async ( - payload: any = {refreshOpenFolder: true, playlistId: getSelectedPlaylistId(), tabView: getSelectedTabView()} + payload = {refreshOpenFolder: true, playlistId: getSelectedPlaylistId(), tabView: getSelectedTabView()} ) => { let reload: boolean = false; if (payload.playlistId) { @@ -563,8 +563,8 @@ export function createCommands( ); cmds.push( - commands.registerCommand("musictime.playRecommendations", async (payload: any) => { - const recs: any = getCachedRecommendationInfo(); + commands.registerCommand("musictime.playRecommendations", async (payload) => { + const recs = getCachedRecommendationInfo(); // find the track index const offset: number = recs.tracks.findIndex(n => { return n.id === payload.trackId; @@ -601,7 +601,7 @@ export function createCommands( ); cmds.push( - commands.registerCommand("musictime.installCodeTime", async (item: PlaylistItem) => { + commands.registerCommand("musictime.installCodeTime", async () => { launchWebUrl("vscode:extension/softwaredotcom.swdc-vscode"); }) ); diff --git a/src/managers/DeviceManager.ts b/src/managers/DeviceManager.ts index f269e1c..e3472e5 100644 --- a/src/managers/DeviceManager.ts +++ b/src/managers/DeviceManager.ts @@ -1,6 +1,6 @@ import { execCmd } from "./ExecManager"; -const os = require("os"); +import * as os from "os"; export function isLinux() { return isWindows() || isMac() ? false : true; diff --git a/src/managers/ExecManager.ts b/src/managers/ExecManager.ts index b4c6142..94a35a0 100644 --- a/src/managers/ExecManager.ts +++ b/src/managers/ExecManager.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line @typescript-eslint/no-var-requires const { execSync } = require("child_process"); export function execCmd(cmd = "", projectDir = null, returnLines = false): any { diff --git a/src/managers/FileManager.ts b/src/managers/FileManager.ts index 94d8dea..772946b 100644 --- a/src/managers/FileManager.ts +++ b/src/managers/FileManager.ts @@ -3,7 +3,7 @@ import { logIt } from "../Util"; import { isWindows } from "./DeviceManager"; import { LocalStorageManager } from "./LocalStorageManager"; -const fs = require('fs'); +import * as fs from 'fs'; let storageMgr: LocalStorageManager | undefined = undefined; @@ -26,7 +26,7 @@ export async function storeJsonData(fileName, json) { try { const content: string = JSON.stringify(json); fs.writeFileSync(fileName, content, 'utf8'); - } catch (e: any) { + } catch (e) { logIt(`Unable to write ${fileName} info: ${e.message}`, true); } } diff --git a/src/managers/PlaylistControlManager.ts b/src/managers/PlaylistControlManager.ts index 5d690d3..2f0498f 100644 --- a/src/managers/PlaylistControlManager.ts +++ b/src/managers/PlaylistControlManager.ts @@ -50,7 +50,7 @@ export async function playSelectedItem(playlistItem: PlaylistItem) { await playInitialization(playMusicSelection); } -export async function launchTrackPlayer(playerName: PlayerName = null, callback: any = null) { +export async function launchTrackPlayer(playerName: PlayerName = null, callback = null) { const { desktop, activeDesktopPlayerDevice } = getDeviceSet(); const hasDesktopDevice = activeDesktopPlayerDevice || desktop ? true : false; @@ -103,7 +103,7 @@ export async function launchTrackPlayer(playerName: PlayerName = null, callback: // PRIVATE FUNCTIONS -export async function playInitialization(callback: any = null) { +export async function playInitialization(callback) { const { desktop } = getDeviceSet(); const device = getBestActiveDevice(); @@ -129,7 +129,7 @@ export async function playInitialization(callback: any = null) { } } -export async function showPlayerLaunchConfirmation(callback: any = null) { +export async function showPlayerLaunchConfirmation(callback) { // if they're a mac non-premium user, just launch the desktop player if (isMac() && !isPremiumUser()) { @@ -153,7 +153,7 @@ export async function showPlayerLaunchConfirmation(callback: any = null) { return; } -async function checkDeviceLaunch(playerName: PlayerName, tries: number = 5, callback: any = null) { +async function checkDeviceLaunch(playerName: PlayerName, tries: number = 5, callback) { setTimeout(async () => { await populateSpotifyDevices(true /*retry*/); @@ -196,7 +196,7 @@ async function checkPlayingState(deviceId: string, tries = 3) { // get the selected track and execute post play commands like 'repeat' setTimeout(() => { const trackItem:PlaylistItem = getSelectedTrackItem(); - if (trackItem['repeat']) { + if (trackItem && trackItem['repeat']) { MusicControlManager.getInstance().setRepeatTrackOn(); } commands.executeCommand("musictime.refreshMusicTimeView"); @@ -206,7 +206,7 @@ async function checkPlayingState(deviceId: string, tries = 3) { async function playSelectedTrackItems() { const selectedTrackItems = getSelectedTrackItems(); const device = getBestActiveDevice(); - const uris: any[] = selectedTrackItems.map((item: PlaylistItem) => { + const uris = selectedTrackItems.map((item: PlaylistItem) => { let track_id = item.id ? item.id : item["song_id"]; if (track_id && !track_id.includes("spotify:track:")) { track_id = `spotify:track:${track_id}`; @@ -266,7 +266,9 @@ async function playMusicSelection() { const params = [trackUri, playlistUri]; try { result = await playTrackInContext(selectedPlayer, params); - } catch (e) {} + } catch (e) { + logIt(`Unable to play the selected track: ${e.message}`, true); + } } if (!result || result !== "ok") { // try with the web player diff --git a/src/managers/PlaylistDataManager.ts b/src/managers/PlaylistDataManager.ts index 4a59934..cd8fc4a 100644 --- a/src/managers/PlaylistDataManager.ts +++ b/src/managers/PlaylistDataManager.ts @@ -682,7 +682,7 @@ export async function showReconnectPrompt(email) { if (selection === reconnectButtonLabel) { // now launch re-auth - launchWebUrl(`${app_endpoint}/data_sources/integration_types/spotify`); + launchWebUrl(`${app_endpoint}/code_time/integration_type/spotify`); } } diff --git a/src/managers/SlackManager.ts b/src/managers/SlackManager.ts index 7267432..658b3c9 100644 --- a/src/managers/SlackManager.ts +++ b/src/managers/SlackManager.ts @@ -12,7 +12,7 @@ export async function connectSlackWorkspace() { return; } - const url = `${app_endpoint}/data_sources/integration_types/slack`; + const url = `${app_endpoint}/code_time/integration_type/slack`; // authorize the user for slack launchWebUrl(url); diff --git a/src/managers/SpotifyManager.ts b/src/managers/SpotifyManager.ts index fdf3d60..9449007 100644 --- a/src/managers/SpotifyManager.ts +++ b/src/managers/SpotifyManager.ts @@ -81,7 +81,7 @@ export async function populateSpotifyUser(hardRefresh = false) { export async function switchSpotifyAccount() { const selection = await window.showInformationMessage(`Are you sure you would like to connect to a different Spotify account?`, ...[YES_LABEL]); if (selection === YES_LABEL) { - launchWebUrl(`${app_endpoint}/data_sources/integration_types/spotify`); + launchWebUrl(`${app_endpoint}/code_time/integration_type/spotify`); } } diff --git a/yarn.lock b/yarn.lock index c44f7eb..4fe9cb1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -162,16 +162,16 @@ resolved "https://registry.yarnpkg.com/@slack/types/-/types-2.11.0.tgz#948c556081c3db977dfa8433490cc2ff41f47203" integrity sha512-UlIrDWvuLaDly3QZhCPnwUSI/KYmV1N9LyhuH6EDKCRS1HWZhyTG3Ja46T3D0rYfqdltKYFXbJSSRPwZpwO0cQ== -"@slack/web-api@^7.0.4": - version "7.0.4" - resolved "https://registry.yarnpkg.com/@slack/web-api/-/web-api-7.0.4.tgz#262377ff1b8b5205029d2c24c71b8915613ba7fc" - integrity sha512-21tbte7N8itwjG7nsiQbDmXP9T/oqEILuvyL2UtgaZxfSY4a1JWWsLGL5n/hcgS2WE2oxmEHsBuhuRkZDwDovw== +"@slack/web-api@^7.7.0": + version "7.7.0" + resolved "https://registry.yarnpkg.com/@slack/web-api/-/web-api-7.7.0.tgz#a2f4014dcfada8027049c3cb4835999c1fb8cef0" + integrity sha512-DtRyjgQi0mObA2uC6H8nL2OhAISKDhvtOXgRjGRBnBhiaWb6df5vPmKHsOHjpweYALBMHtiqE5ajZFkDW/ag8Q== dependencies: "@slack/logger" "^4.0.0" "@slack/types" "^2.9.0" "@types/node" ">=18.0.0" "@types/retry" "0.12.0" - axios "^1.6.5" + axios "^1.7.4" eventemitter3 "^5.0.1" form-data "^4.0.0" is-electron "2.2.2" @@ -228,20 +228,20 @@ resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== -"@types/uuid@^9.0.8": - version "9.0.8" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-9.0.8.tgz#7545ba4fc3c003d6c756f651f3bf163d8f0f29ba" - integrity sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA== +"@types/uuid@^10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-10.0.0.tgz#e9c07fe50da0f53dc24970cca94d619ff03f6f6d" + integrity sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ== "@types/vscode@^1.52.0": version "1.69.0" resolved "https://registry.yarnpkg.com/@types/vscode/-/vscode-1.69.0.tgz#a472011af392fbcf82cbb82f60b4c239c21b921c" integrity sha512-RlzDAnGqUoo9wS6d4tthNyAdZLxOIddLiX3djMoWk29jFfSA1yJbIwr0epBYqqYarWB6s2Z+4VaZCQ80Jaa3kA== -"@types/ws@^8.5.10": - version "8.5.10" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" - integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== +"@types/ws@^8.5.12": + version "8.5.12" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.12.tgz#619475fe98f35ccca2a2f6c137702d85ec247b7e" + integrity sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ== dependencies: "@types/node" "*" @@ -615,10 +615,19 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== -axios@^1.6.5, axios@^1.7.2, axios@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.4.tgz#4c8ded1b43683c8dd362973c393f3ede24052aa2" - integrity sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw== +axios@^1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.2.tgz#b625db8a7051fbea61c35a3cbb3a1daa7b9c7621" + integrity sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + +axios@^1.7.4, axios@^1.7.7: + version "1.7.7" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.7.tgz#2f554296f9892a72ac8d8e4c5b79c14a91d0a47f" + integrity sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q== dependencies: follow-redirects "^1.15.6" form-data "^4.0.0" @@ -676,6 +685,13 @@ builtin-modules@^1.1.1: resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" integrity sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ== +bundle-name@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-4.1.0.tgz#f3b96b34160d6431a19d7688135af7cfb8797889" + integrity sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q== + dependencies: + run-applescript "^7.0.0" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -812,6 +828,11 @@ date-fns@^3.6.0: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-3.6.0.tgz#f20ca4fe94f8b754951b24240676e8618c0206bf" integrity sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww== +date-fns@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-4.1.0.tgz#64b3d83fff5aa80438f5b1a633c2e83b8a1c2d14" + integrity sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg== + debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" @@ -819,7 +840,7 @@ debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: dependencies: ms "2.1.2" -decode-uri-component@^0.2.0: +decode-uri-component@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== @@ -829,10 +850,23 @@ deep-is@^0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== +default-browser-id@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-5.0.0.tgz#a1d98bf960c15082d8a3fa69e83150ccccc3af26" + integrity sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA== + +default-browser@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-5.2.1.tgz#7b7ba61204ff3e425b556869ae6d3e9d9f1712cf" + integrity sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg== + dependencies: + bundle-name "^4.1.0" + default-browser-id "^5.0.0" + +define-lazy-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" + integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== delayed-stream@~1.0.0: version "1.0.0" @@ -1319,11 +1353,6 @@ is-core-module@^2.9.0: dependencies: has "^1.0.3" -is-docker@^2.0.0, is-docker@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - is-docker@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" @@ -1380,13 +1409,6 @@ is-stream@^3.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - is-wsl@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-3.1.0.tgz#e1c657e39c10090afcbedec61720f6b924c3cbd2" @@ -1632,14 +1654,15 @@ onetime@^6.0.0: dependencies: mimic-fn "^4.0.0" -open@^8.4.0: - version "8.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" - integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== +open@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/open/-/open-10.1.0.tgz#a7795e6e5d519abe4286d9937bb24b51122598e1" + integrity sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw== dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" + default-browser "^5.2.1" + define-lazy-prop "^3.0.0" + is-inside-container "^1.0.0" + is-wsl "^3.1.0" optionator@^0.9.3: version "0.9.4" @@ -1784,11 +1807,11 @@ punycode@^2.1.0: integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== query-string@^7.0.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.1.tgz#754620669db978625a90f635f12617c271a088e1" - integrity sha512-MplouLRDHBZSG9z7fpuAAcI7aAYjDLhtsiVZsevsfaHWDS2IDdORKbSd1kWUA+V4zyva/HZoSfpwnYMMQDhb0w== + version "7.1.3" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.3.tgz#a1cf90e994abb113a325804a972d98276fe02328" + integrity sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg== dependencies: - decode-uri-component "^0.2.0" + decode-uri-component "^0.2.2" filter-obj "^1.1.0" split-on-first "^1.0.0" strict-uri-encode "^2.0.0" @@ -1853,6 +1876,11 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== +run-applescript@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-7.0.0.tgz#e5a553c2bffd620e169d276c1cd8f1b64778fbeb" + integrity sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A== + run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -2147,10 +2175,10 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +uuid@^11.0.1: + version "11.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-11.0.1.tgz#a527e188c4c11a7ff5d139e59f229a9f90440669" + integrity sha512-wt9UB5EcLhnboy1UvA1mvGPXkIIrHSu+3FmUksARfdVw9tuPf3CH/CohxO0Su1ApoKAeT6BVzAJIvjTuQVSmuQ== watchpack@^2.4.1: version "2.4.2" @@ -2242,10 +2270,10 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -ws@^8.17.1: - version "8.17.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" - integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== +ws@^8.18.0: + version "8.18.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== yallist@^4.0.0: version "4.0.0"