diff --git a/desktop/.github/workflows/build.yml b/desktop/.github/workflows/build.yml index c43dfcfdf..acd744c05 100644 --- a/desktop/.github/workflows/build.yml +++ b/desktop/.github/workflows/build.yml @@ -52,7 +52,4 @@ jobs: # macOS notarization API key API_KEY_ID: ${{ secrets.api_key_id }} API_KEY_ISSUER_ID: ${{ secrets.api_key_issuer_id}} - # setry crash reporting token - SENTRY_AUTH_TOKEN: ${{secrets.sentry_auth_token}} - NEXT_PUBLIC_DISABLE_SENTRY: ${{secrets.next_public_disable_sentry}} USE_HARD_LINKS: false diff --git a/desktop/package.json b/desktop/package.json index b0ea95b09..fe0b9b8ff 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -18,7 +18,6 @@ "watch": "tsc -w" }, "dependencies": { - "@sentry/electron": "^2.5.1", "any-shell-escape": "^0.1.1", "auto-launch": "^5.0.5", "chokidar": "^3.5.3", @@ -38,7 +37,6 @@ "promise-fs": "^2.1.1" }, "devDependencies": { - "@sentry/cli": "^1.68.0", "@types/auto-launch": "^5.0.2", "@types/ffmpeg-static": "^3.0.1", "@types/get-folder-size": "^2.0.0", diff --git a/desktop/sentry.properties b/desktop/sentry.properties deleted file mode 100644 index d9303317c..000000000 --- a/desktop/sentry.properties +++ /dev/null @@ -1,3 +0,0 @@ -defaults.url=https://sentry.ente.io/ -defaults.org=ente -defaults.project=desktop-photos diff --git a/desktop/src/api/common.ts b/desktop/src/api/common.ts index 1c6281d48..f18506981 100644 --- a/desktop/src/api/common.ts +++ b/desktop/src/api/common.ts @@ -36,9 +36,4 @@ export const getPlatform = async (): Promise<"mac" | "windows" | "linux"> => { } }; -export { - getSentryUserID, - logToDisk, - openLogDirectory, - updateOptOutOfCrashReports, -} from "../services/logging"; +export { logToDisk, openLogDirectory } from "../services/logging"; diff --git a/desktop/src/api/electronStore.ts b/desktop/src/api/electronStore.ts index 9475134c6..5f84776e1 100644 --- a/desktop/src/api/electronStore.ts +++ b/desktop/src/api/electronStore.ts @@ -2,7 +2,6 @@ import { logError } from "../services/logging"; import { keysStore } from "../stores/keys.store"; import { safeStorageStore } from "../stores/safeStorage.store"; import { uploadStatusStore } from "../stores/upload.store"; -import { userPreferencesStore } from "../stores/userPreferences.store"; import { watchStore } from "../stores/watch.store"; export const clearElectronStore = () => { @@ -11,7 +10,6 @@ export const clearElectronStore = () => { keysStore.clear(); safeStorageStore.clear(); watchStore.clear(); - userPreferencesStore.delete("optOutOfCrashReports"); } catch (e) { logError(e, "error while clearing electron store"); throw e; diff --git a/desktop/src/config/index.ts b/desktop/src/config/index.ts deleted file mode 100644 index a27de5aa2..000000000 --- a/desktop/src/config/index.ts +++ /dev/null @@ -1,20 +0,0 @@ -const PROD_HOST_URL: string = "ente://app"; -const RENDERER_OUTPUT_DIR: string = "./out"; -const LOG_FILENAME = "ente.log"; -const MAX_LOG_SIZE = 50 * 1024 * 1024; // 50MB - -const FILE_STREAM_CHUNK_SIZE: number = 4 * 1024 * 1024; - -const SENTRY_DSN = "https://759d8498487a81ac33a0c2efa2a42c4f@sentry.ente.io/9"; - -const RELEASE_VERSION = require("../../package.json").version; - -export { - PROD_HOST_URL, - RENDERER_OUTPUT_DIR, - FILE_STREAM_CHUNK_SIZE, - LOG_FILENAME, - MAX_LOG_SIZE, - SENTRY_DSN, - RELEASE_VERSION, -}; diff --git a/desktop/src/main.ts b/desktop/src/main.ts index 3663b7b8a..c957930b3 100644 --- a/desktop/src/main.ts +++ b/desktop/src/main.ts @@ -1,7 +1,5 @@ import { app, BrowserWindow } from "electron"; import { initWatcher } from "./services/chokidar"; -import { initSentry } from "./services/sentry"; -import { getOptOutOfCrashReports } from "./services/userPreference"; import { isDev } from "./utils/common"; import { addAllowOriginHeader } from "./utils/cors"; import { createWindow } from "./utils/createWindow"; @@ -29,8 +27,6 @@ let appIsQuitting = false; let updateIsAvailable = false; -let optedOutOfCrashReports = false; - export const isAppQuitting = (): boolean => { return appIsQuitting; }; @@ -46,14 +42,6 @@ export const setIsUpdateAvailable = (value: boolean): void => { updateIsAvailable = value; }; -export const hasOptedOutOfCrashReports = (): boolean => { - return optedOutOfCrashReports; -}; - -export const updateOptOutOfCrashReports = (value: boolean): void => { - optedOutOfCrashReports = value; -}; - setupMainHotReload(); setupNextElectronServe(); @@ -83,11 +71,6 @@ if (!gotTheLock) { app.on("ready", async () => { logSystemInfo(); setupMainProcessStatsLogger(); - const hasOptedOutOfCrashReports = getOptOutOfCrashReports(); - updateOptOutOfCrashReports(hasOptedOutOfCrashReports); - if (!hasOptedOutOfCrashReports) { - initSentry(); - } mainWindow = await createWindow(); const tray = setupTrayItem(mainWindow); const watcher = initWatcher(mainWindow); diff --git a/desktop/src/preload.ts b/desktop/src/preload.ts index af4ef3222..b225e0d03 100644 --- a/desktop/src/preload.ts +++ b/desktop/src/preload.ts @@ -8,12 +8,10 @@ import { computeImageEmbedding, computeTextEmbedding } from "./api/clip"; import { getAppVersion, getPlatform, - getSentryUserID, logToDisk, openDirectory, openLogDirectory, selectDirectory, - updateOptOutOfCrashReports, } from "./api/common"; import { clearElectronStore } from "./api/electronStore"; import { @@ -108,7 +106,6 @@ windowObject["ElectronAPIs"] = { registerUpdateEventListener, updateAndRestart, skipAppUpdate, - getSentryUserID, getAppVersion, runFFmpegCmd, muteUpdateNotification, @@ -120,7 +117,6 @@ windowObject["ElectronAPIs"] = { deleteFolder, rename, deleteFile, - updateOptOutOfCrashReports, computeImageEmbedding, computeTextEmbedding, getPlatform, diff --git a/desktop/src/services/fs.ts b/desktop/src/services/fs.ts index cbbe06146..5d1954211 100644 --- a/desktop/src/services/fs.ts +++ b/desktop/src/services/fs.ts @@ -3,10 +3,11 @@ import StreamZip from "node-stream-zip"; import path from "path"; import * as fs from "promise-fs"; import { Readable } from "stream"; -import { FILE_STREAM_CHUNK_SIZE } from "../config"; import { ElectronFile } from "../types"; import { logError } from "./logging"; +const FILE_STREAM_CHUNK_SIZE: number = 4 * 1024 * 1024; + // https://stackoverflow.com/a/63111390 export const getDirFilePaths = async (dirPath: string) => { if (!(await fs.stat(dirPath)).isDirectory()) { diff --git a/desktop/src/services/logging.ts b/desktop/src/services/logging.ts index fa82492bc..bcbacd9f5 100644 --- a/desktop/src/services/logging.ts +++ b/desktop/src/services/logging.ts @@ -12,11 +12,3 @@ export function openLogDirectory() { export function logError(error: Error, message: string, info?: string): void { ipcRenderer.invoke("log-error", error, message, info); } - -export function getSentryUserID(): Promise { - return ipcRenderer.invoke("get-sentry-id"); -} - -export function updateOptOutOfCrashReports(optOut: boolean) { - return ipcRenderer.invoke("update-opt-out-crash-reports", optOut); -} diff --git a/desktop/src/services/sentry.ts b/desktop/src/services/sentry.ts index 7adfcc255..ae40b95b3 100644 --- a/desktop/src/services/sentry.ts +++ b/desktop/src/services/sentry.ts @@ -1,68 +1,18 @@ -import * as Sentry from "@sentry/electron/dist/main"; -import { RELEASE_VERSION, SENTRY_DSN } from "../config"; -import { hasOptedOutOfCrashReports } from "../main"; -import { keysStore } from "../stores/keys.store"; import { isDev } from "../utils/common"; -import { makeID } from "../utils/logging"; import { logToDisk } from "./logging"; -const ENV_DEVELOPMENT = "development"; - -const isDEVSentryENV = () => - process.env.NEXT_PUBLIC_SENTRY_ENV === ENV_DEVELOPMENT; - -export function initSentry(): void { - Sentry.init({ - dsn: SENTRY_DSN, - release: RELEASE_VERSION, - environment: isDev ? "development" : "production", - }); - Sentry.setUser({ id: getSentryUserID() }); -} - +/** Deprecated, but no alternative yet */ export function logErrorSentry( error: any, msg: string, info?: Record ) { - const err = errorWithContext(error, msg); logToDisk( `error: ${error?.name} ${error?.message} ${ error?.stack } msg: ${msg} info: ${JSON.stringify(info)}` ); - if (isDEVSentryENV()) { + if (isDev) { console.log(error, { msg, info }); } - if (hasOptedOutOfCrashReports()) { - return; - } - Sentry.captureException(err, { - level: Sentry.Severity.Info, - user: { id: getSentryUserID() }, - contexts: { - ...(info && { - info: info, - }), - rootCause: { message: error?.message }, - }, - }); -} - -function errorWithContext(originalError: Error, context: string) { - const errorWithContext = new Error(context); - errorWithContext.stack = - errorWithContext.stack.split("\n").slice(2, 4).join("\n") + - "\n" + - originalError.stack; - return errorWithContext; -} - -export function getSentryUserID() { - let anonymizeUserID = keysStore.get("AnonymizeUserID")?.id; - if (!anonymizeUserID) { - anonymizeUserID = makeID(6); - keysStore.set("AnonymizeUserID", { id: anonymizeUserID }); - } - return anonymizeUserID; } diff --git a/desktop/src/services/userPreference.ts b/desktop/src/services/userPreference.ts index 1c20e64da..e3c6db290 100644 --- a/desktop/src/services/userPreference.ts +++ b/desktop/src/services/userPreference.ts @@ -24,14 +24,6 @@ export function setMuteUpdateNotificationVersion(version: string) { userPreferencesStore.set("muteUpdateNotificationVersion", version); } -export function getOptOutOfCrashReports() { - return userPreferencesStore.get("optOutOfCrashReports") ?? false; -} - -export function setOptOutOfCrashReports(optOut: boolean) { - userPreferencesStore.set("optOutOfCrashReports", optOut); -} - export function clearSkipAppVersion() { userPreferencesStore.delete("skipAppVersion"); } diff --git a/desktop/src/stores/userPreferences.store.ts b/desktop/src/stores/userPreferences.store.ts index 546ca743e..e6fec425a 100644 --- a/desktop/src/stores/userPreferences.store.ts +++ b/desktop/src/stores/userPreferences.store.ts @@ -11,9 +11,6 @@ const userPreferencesSchema: Schema = { muteUpdateNotificationVersion: { type: "string", }, - optOutOfCrashReports: { - type: "boolean", - }, customCacheDirectory: { type: "string", }, diff --git a/desktop/src/types/index.ts b/desktop/src/types/index.ts index cd3ea8546..208983826 100644 --- a/desktop/src/types/index.ts +++ b/desktop/src/types/index.ts @@ -58,7 +58,6 @@ export interface UserPreferencesType { hideDockIcon: boolean; skipAppVersion: string; muteUpdateNotificationVersion: string; - optOutOfCrashReports: boolean; customCacheDirectory: string; } diff --git a/desktop/src/utils/ipcComms.ts b/desktop/src/utils/ipcComms.ts index 84b80fae1..be41f7257 100644 --- a/desktop/src/utils/ipcComms.ts +++ b/desktop/src/utils/ipcComms.ts @@ -10,7 +10,6 @@ import { Tray, } from "electron"; import path from "path"; -import { updateOptOutOfCrashReports } from "../main"; import { getAppVersion, muteUpdateNotification, @@ -27,11 +26,10 @@ import { convertToJPEG, generateImageThumbnail, } from "../services/imageProcessor"; -import { getSentryUserID, logErrorSentry } from "../services/sentry"; +import { logErrorSentry } from "../services/sentry"; import { getCustomCacheDirectory, setCustomCacheDirectory, - setOptOutOfCrashReports, } from "../services/userPreference"; import { getPlatform } from "./common/platform"; import { createWindow } from "./createWindow"; @@ -146,9 +144,6 @@ export default function setupIpcComs( ipcMain.on("mute-update-notification", (_, version) => { muteUpdateNotification(version); }); - ipcMain.handle("get-sentry-id", () => { - return getSentryUserID(); - }); ipcMain.handle("get-app-version", () => { return getAppVersion(); @@ -179,10 +174,6 @@ export default function setupIpcComs( } ); - ipcMain.handle("update-opt-out-crash-reports", (_, optOut) => { - setOptOutOfCrashReports(optOut); - updateOptOutOfCrashReports(optOut); - }); ipcMain.handle("compute-image-embedding", (_, model, inputFilePath) => { return computeImageEmbedding(model, inputFilePath); }); diff --git a/desktop/src/utils/logging.ts b/desktop/src/utils/logging.ts index c843642f8..8a92006a8 100644 --- a/desktop/src/utils/logging.ts +++ b/desktop/src/utils/logging.ts @@ -1,9 +1,8 @@ import log from "electron-log"; -import { LOG_FILENAME, MAX_LOG_SIZE } from "../config"; export function setupLogging(isDev?: boolean) { - log.transports.file.fileName = LOG_FILENAME; - log.transports.file.maxSize = MAX_LOG_SIZE; + log.transports.file.fileName = "ente.log"; + log.transports.file.maxSize = 50 * 1024 * 1024; // 50MB; if (!isDev) { log.transports.console.level = false; } @@ -11,19 +10,6 @@ export function setupLogging(isDev?: boolean) { "[{y}-{m}-{d}T{h}:{i}:{s}{z}] [{level}]{scope} {text}"; } -export function makeID(length: number) { - let result = ""; - const characters = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; - const charactersLength = characters.length; - for (let i = 0; i < length; i++) { - result += characters.charAt( - Math.floor(Math.random() * charactersLength) - ); - } - return result; -} - export function convertBytesToHumanReadable( bytes: number, precision = 2 diff --git a/desktop/src/utils/main.ts b/desktop/src/utils/main.ts index ebf466c03..8f850af79 100644 --- a/desktop/src/utils/main.ts +++ b/desktop/src/utils/main.ts @@ -6,7 +6,6 @@ import os from "os"; import path from "path"; import { existsSync } from "promise-fs"; import util from "util"; -import { PROD_HOST_URL, RENDERER_OUTPUT_DIR } from "../config"; import { setupAutoUpdater } from "../services/appUpdater"; import autoLauncher from "../services/autoLauncher"; import { getHideDockIconPreference } from "../services/userPreference"; @@ -15,6 +14,9 @@ import { isPlatform } from "./common/platform"; import { buildContextMenu, buildMenuBar } from "./menu"; const execAsync = util.promisify(require("child_process").exec); +const PROD_HOST_URL: string = "ente://app"; +const RENDERER_OUTPUT_DIR: string = "./out"; + export async function handleUpdates(mainWindow: BrowserWindow) { const isInstalledViaBrew = await checkIfInstalledViaBrew(); if (!isDev && !isInstalledViaBrew) { diff --git a/desktop/yarn.lock b/desktop/yarn.lock index e5a7625d3..740629dd3 100644 --- a/desktop/yarn.lock +++ b/desktop/yarn.lock @@ -188,110 +188,6 @@ resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== -"@sentry/browser@6.7.1": - version "6.7.1" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-6.7.1.tgz#e01144a08984a486ecc91d7922cc457e9c9bd6b7" - integrity sha512-R5PYx4TTvifcU790XkK6JVGwavKaXwycDU0MaAwfc4Vf7BLm5KCNJCsDySu1RPAap/017MVYf54p6dWvKiRviA== - dependencies: - "@sentry/core" "6.7.1" - "@sentry/types" "6.7.1" - "@sentry/utils" "6.7.1" - tslib "^1.9.3" - -"@sentry/cli@^1.68.0": - version "1.74.4" - resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-1.74.4.tgz#7df82f68045a155e1885bfcbb5d303e5259eb18e" - integrity sha512-BMfzYiedbModsNBJlKeBOLVYUtwSi99LJ8gxxE4Bp5N8hyjNIN0WVrozAVZ27mqzAuy6151Za3dpmOLO86YlGw== - dependencies: - https-proxy-agent "^5.0.0" - mkdirp "^0.5.5" - node-fetch "^2.6.7" - npmlog "^4.1.2" - progress "^2.0.3" - proxy-from-env "^1.1.0" - which "^2.0.2" - -"@sentry/core@6.7.1": - version "6.7.1" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-6.7.1.tgz#c3aaa6415d06bec65ac446b13b84f073805633e3" - integrity sha512-VAv8OR/7INn2JfiLcuop4hfDcyC7mfL9fdPndQEhlacjmw8gRrgXjR7qyhnCTgzFLkHI7V5bcdIzA83TRPYQpA== - dependencies: - "@sentry/hub" "6.7.1" - "@sentry/minimal" "6.7.1" - "@sentry/types" "6.7.1" - "@sentry/utils" "6.7.1" - tslib "^1.9.3" - -"@sentry/electron@^2.5.1": - version "2.5.4" - resolved "https://registry.yarnpkg.com/@sentry/electron/-/electron-2.5.4.tgz#337b2f7e228e805a3e4eb3611c7b12c6cf87c618" - integrity sha512-tCCK+P581TmdjsDpHBQz7qYcldzGdUk1Fd6FPxPy1JKGzeY4uf/uSLKzR80Lzs5kTpEZFOwiMHSA8yjwFp5qoA== - dependencies: - "@sentry/browser" "6.7.1" - "@sentry/core" "6.7.1" - "@sentry/minimal" "6.7.1" - "@sentry/node" "6.7.1" - "@sentry/types" "6.7.1" - "@sentry/utils" "6.7.1" - tslib "^2.2.0" - -"@sentry/hub@6.7.1": - version "6.7.1" - resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-6.7.1.tgz#d46d24deec67f0731a808ca16796e6765b371bc1" - integrity sha512-eVCTWvvcp6xa0A5GGNHMQEWslmKPlisE5rGmsV/kjvSUv3zSrI0eIDfb51ikdnCiBjHpK2NBWP8Vy8cZOEJegg== - dependencies: - "@sentry/types" "6.7.1" - "@sentry/utils" "6.7.1" - tslib "^1.9.3" - -"@sentry/minimal@6.7.1": - version "6.7.1" - resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-6.7.1.tgz#babf85ee2f167e9dcf150d750d7a0b250c98449c" - integrity sha512-HDDPEnQRD6hC0qaHdqqKDStcdE1KhkFh0RCtJNMCDn0zpav8Dj9AteF70x6kLSlliAJ/JFwi6AmQrLz+FxPexw== - dependencies: - "@sentry/hub" "6.7.1" - "@sentry/types" "6.7.1" - tslib "^1.9.3" - -"@sentry/node@6.7.1": - version "6.7.1" - resolved "https://registry.yarnpkg.com/@sentry/node/-/node-6.7.1.tgz#b09e2eca8e187168feba7bd865a23935bf0f5cc0" - integrity sha512-rtZo1O8ROv4lZwuljQz3iFZW89oXSlgXCG2VqkxQyRspPWu89abROpxLjYzsWwQ8djnur1XjFv51kOLDUTS6Qw== - dependencies: - "@sentry/core" "6.7.1" - "@sentry/hub" "6.7.1" - "@sentry/tracing" "6.7.1" - "@sentry/types" "6.7.1" - "@sentry/utils" "6.7.1" - cookie "^0.4.1" - https-proxy-agent "^5.0.0" - lru_map "^0.3.3" - tslib "^1.9.3" - -"@sentry/tracing@6.7.1": - version "6.7.1" - resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-6.7.1.tgz#b11f0c17a6c5dc14ef44733e5436afb686683268" - integrity sha512-wyS3nWNl5mzaC1qZ2AIp1hjXnfO9EERjMIJjCihs2LWBz1r3efxrHxJHs8wXlNWvrT3KLhq/7vvF5CdU82uPeQ== - dependencies: - "@sentry/hub" "6.7.1" - "@sentry/minimal" "6.7.1" - "@sentry/types" "6.7.1" - "@sentry/utils" "6.7.1" - tslib "^1.9.3" - -"@sentry/types@6.7.1": - version "6.7.1" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-6.7.1.tgz#c8263e1886df5e815570c4668eb40a1cfaa1c88b" - integrity sha512-9AO7HKoip2MBMNQJEd6+AKtjj2+q9Ze4ooWUdEvdOVSt5drg7BGpK221/p9JEOyJAZwEPEXdcMd3VAIMiOb4MA== - -"@sentry/utils@6.7.1": - version "6.7.1" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-6.7.1.tgz#909184ad580f0f6375e1e4d4a6ffd33dfe64a4d1" - integrity sha512-Tq2otdbWlHAkctD+EWTYKkEx6BL1Qn3Z/imkO06/PvzpWvVhJWQ5qHAzz5XnwwqNHyV03KVzYB6znq1Bea9HuA== - dependencies: - "@sentry/types" "6.7.1" - tslib "^1.9.3" - "@sindresorhus/is@^4.0.0": version "4.6.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" @@ -662,19 +558,6 @@ applescript@^1.0.0: resolved "https://registry.yarnpkg.com/applescript/-/applescript-1.0.0.tgz#bb87af568cad034a4e48c4bdaf6067a3a2701317" integrity sha512-yvtNHdWvtbYEiIazXAdp/NY+BBb65/DAseqlNiJQjOx9DynuzOYDbVLBJvuc0ve0VL9x6B3OHF6eH52y9hCBtQ== -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -are-we-there-yet@~1.1.2: - version "1.1.7" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" - integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -1090,16 +973,6 @@ config-file-ts@^0.2.4: glob "^7.1.6" typescript "^4.0.2" -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== - -cookie@^0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" - integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== - core-util-is@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -1201,11 +1074,6 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== - detect-indent@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-7.0.1.tgz#cbb060a12842b9c4d333f1cac4aa4da1bb66bc25" @@ -1848,20 +1716,6 @@ gar@^1.0.4: resolved "https://registry.yarnpkg.com/gar/-/gar-1.0.4.tgz#f777bc7db425c0572fdeb52676172ca1ae9888b8" integrity sha512-w4n9cPWyP7aHxKxYHFQMegj7WIAsL/YX/C4Bs5Rr8s1H9M1rNtRWRsw+ovYMkXDQ5S4ZbYHsHAPmevPjPgw44w== -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg== - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" @@ -2033,11 +1887,6 @@ has-symbols@^1.0.3: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== - has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -2164,7 +2013,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@^2.0.3, inherits@~2.0.1: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -2249,11 +2098,6 @@ isarray@0.0.1: resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - isbinaryfile@^4.0.8: version "4.0.10" resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3" @@ -2462,11 +2306,6 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -lru_map@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" - integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== - matcher@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/matcher/-/matcher-3.0.0.tgz#bd9060f4c5b70aa8041ccc6f80368760994f30ca" @@ -2570,7 +2409,7 @@ minizlib@^2.1.1: minipass "^3.0.0" yallist "^4.0.0" -mkdirp@^0.5.1, mkdirp@^0.5.5: +mkdirp@^0.5.1: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== @@ -2642,16 +2481,6 @@ normalize-url@^6.0.1: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== -npmlog@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - nugget@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/nugget/-/nugget-2.0.2.tgz#398b591377b740b3dd308fabecd5ea09cf3443da" @@ -2675,11 +2504,6 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" @@ -2883,11 +2707,6 @@ pretty-bytes@^4.0.2: resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" integrity sha512-yJAF+AjbHKlxQ8eezMd/34Mnj/YTQ3i6kLzvVsH4l/BfIFtp444n0wVbnsn66JimZ9uBofv815aRp1zCppxlWw== -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" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - progress-stream@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/progress-stream/-/progress-stream-1.2.0.tgz#2cd3cfea33ba3a89c9c121ec3347abe9ab125f77" @@ -2916,11 +2735,6 @@ promise-retry@^2.0.1: err-code "^2.0.2" retry "^0.12.0" -proxy-from-env@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - psl@^1.1.28: version "1.9.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" @@ -2995,19 +2809,6 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" -readable-stream@^2.0.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - readable-stream@^3.0.2: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" @@ -3149,11 +2950,6 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 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" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -3207,11 +3003,6 @@ serialize-error@^7.0.1: dependencies: type-fest "^0.13.1" -set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -3229,11 +3020,6 @@ shell-quote@^1.7.3: resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== -signal-exit@^3.0.0: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - simple-update-notifier@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz#d70b92bdab7d6d90dfd73931195a30b6e3d7cebb" @@ -3387,7 +3173,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -3408,14 +3194,7 @@ string_decoder@~0.10.x: resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: +strip-ansi@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== @@ -3587,12 +3366,12 @@ truncate-utf8-bytes@^1.0.0: dependencies: utf8-byte-length "^1.0.1" -tslib@^1.8.1, tslib@^1.9.3: +tslib@^1.8.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.1.0, tslib@^2.2.0: +tslib@^2.1.0: version "2.4.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== @@ -3695,7 +3474,7 @@ utf8-byte-length@^1.0.1: resolved "https://registry.yarnpkg.com/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz#f45f150c4c66eee968186505ab93fcbb8ad6bf61" integrity sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA== -util-deprecate@^1.0.1, util-deprecate@~1.0.1: +util-deprecate@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== @@ -3749,20 +3528,13 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" -which@^2.0.1, which@^2.0.2: +which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" -wide-align@^1.1.0: - version "1.1.5" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" - integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== - dependencies: - string-width "^1.0.2 || 2 || 3 || 4" - winreg@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/winreg/-/winreg-1.2.4.tgz#ba065629b7a925130e15779108cf540990e98d1b"