chore(desktop): Release v0.6.1 for hotfix

chore(desktop): Release v0.6.1 for hotfix
This commit is contained in:
DIYgod 2025-06-29 13:34:26 +08:00 committed by GitHub
commit d4889a3d6b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
14 changed files with 156 additions and 261 deletions

View File

@ -1,33 +1,3 @@
# What's New in v0.6.0
## Shiny New Things
- Import and export your Actions (394d00f)
- Add a bio, website, and social links to your profile (507a525)
- Upload a profile picture
- Use video duration as an Action condition
## Improvements
- A snazzy new look for your personal profile
- Redesigned the Actions page (1ace5ea)
- Redesigned the RSSHub page (f9aca60)
- Added length limits to certain profile fields
- Simplified default commands in the entry tool (85122fb)
- Enhanced UI labels and descriptions for clarity (2ed9f70)
- Gradually rolling out an experimental unified local database for mobile and desktop (#3897 #3902)
- Polished image-preview styling (cf72753)
- Refined toast notifications (73f8011)
## No Longer Broken
- More reliable automatic recovery after database-migration failures (c2e0c3d)
- Fixed unread counts not clearing in the macOS Docker build (70255af)
- Fixed old entries showing during initial load (24ae065)
- Fixed handling of links starting with `.` (de8eac8)
- Fixed text-to-speech not working (82952b0)
- Fixed star/unstar status not syncing across devices (fbd0b3)
## Thanks
Special thanks to volunteer contributors @kovsu @huanfe1 @cscnk52 @Olexandr88 @0-o0 @kingsword09 @ericyzhu for their valuable contributions
This version has been withdrawn.

View File

@ -0,0 +1,33 @@
# What's New in v0.6.1
## Shiny New Things
- Import and export your Actions (394d00f)
- Add a bio, website, and social links to your profile (507a525)
- Upload a profile picture
- Use video duration as an Action condition
## Improvements
- A snazzy new look for your personal profile
- Redesigned the Actions page (1ace5ea)
- Redesigned the RSSHub page (f9aca60)
- Added length limits to certain profile fields
- Simplified default commands in the entry tool (85122fb)
- Enhanced UI labels and descriptions for clarity (2ed9f70)
- Gradually rolling out an experimental unified local database for mobile and desktop (#3897 #3902)
- Polished image-preview styling (cf72753)
- Refined toast notifications (73f8011)
## No Longer Broken
- More reliable automatic recovery after database-migration failures (c2e0c3d)
- Fixed unread counts not clearing in the macOS Docker build (70255af)
- Fixed old entries showing during initial load (24ae065)
- Fixed handling of links starting with `.` (de8eac8)
- Fixed text-to-speech not working (82952b0)
- Fixed star/unstar status not syncing across devices (fbd0b3)
## Thanks
Special thanks to volunteer contributors @kovsu @huanfe1 @cscnk52 @Olexandr88 @0-o0 @kingsword09 @ericyzhu for their valuable contributions

View File

@ -1,4 +1,5 @@
import { dirname, resolve } from "node:path"
import { dirname } from "node:path"
import { resolve } from "node:path/posix"
import { fileURLToPath } from "node:url"
import { tsImport } from "tsx/esm/api"

View File

@ -35,7 +35,7 @@ const ymlMapsMap = {
win32: "latest.yml",
}
const keepModules = new Set(["font-list", "vscode-languagedetection", "fast-folder-size"])
const keepModules = new Set(["font-list", "vscode-languagedetection"])
const keepLanguages = new Set(["en", "en_GB", "en-US", "en_US"])
// remove folders & files not to be included in the app

View File

@ -36,7 +36,6 @@
"electron-store": "10.1.0",
"electron-updater": "6.6.2",
"es-toolkit": "1.39.3",
"fast-folder-size": "2.4.0",
"font-list": "1.5.1",
"i18next": "25.2.1",
"js-yaml": "4.1.0",

View File

@ -1,13 +1,16 @@
import fsp from "node:fs/promises"
import path from "node:path"
import { fileURLToPath } from "node:url"
import { callWindowExpose } from "@follow/shared/bridge"
import { DEV } from "@follow/shared/constants"
import { app, BrowserWindow, clipboard, dialog } from "electron"
import { app, BrowserWindow, clipboard, dialog, shell } from "electron"
import { getCacheSize } from "~/lib/cleaner"
import { i18n } from "~/lib/i18n"
import { store, StoreKey } from "~/lib/store"
import { registerAppTray } from "~/lib/tray"
import { logger } from "~/logger"
import { logger, revealLogFile } from "~/logger"
import { AppManager } from "~/manager/app"
import { WindowManager } from "~/manager/window"
import { cleanupOldRender, loadDynamicRenderEntry } from "~/updater/hot-updater"
@ -179,4 +182,73 @@ export class AppService extends IpcService {
return path.join(app.getAppPath(), input)
}
@IpcMethod()
openCacheFolder(_context: IpcContext): void {
const dir = path.join(app.getPath("userData"), "cache")
shell.openPath(dir)
}
@IpcMethod()
getCacheLimit(_context: IpcContext): number {
return store.get(StoreKey.CacheSizeLimit) || 0
}
@IpcMethod()
async clearCache(_context: IpcContext): Promise<void> {
const cachePath = path.join(app.getPath("userData"), "cache", "Cache_Data")
if (process.platform === "win32") {
// Request elevation on Windows
try {
// Create a bat file to delete cache with elevated privileges
const batPath = path.join(app.getPath("temp"), "clear_cache.bat")
await fsp.writeFile(batPath, `@echo off\nrd /s /q "${cachePath}"\ndel "%~f0"`, "utf-8")
// Execute the bat file with admin privileges
await shell.openPath(batPath)
return
} catch (err) {
logger.error("Failed to clear cache with elevation", { error: err })
}
}
await fsp.rm(cachePath, { recursive: true, force: true }).catch(() => {
logger.error("Failed to clear cache")
})
}
// getCacheLimit: t.procedure.action(async () => {
// return store.get(StoreKey.CacheSizeLimit)
// }),
// clearCache: t.procedure.action(async () => {
// }),
// limitCacheSize: t.procedure.input<number>().action(async ({ input }) => {
// logger.info("set limitCacheSize", input)
// if (input === 0) {
// store.delete(StoreKey.CacheSizeLimit)
// } else {
// store.set(StoreKey.CacheSizeLimit, input)
// }
// }),
@IpcMethod()
limitCacheSize(_context: IpcContext, input: number): void {
if (input === 0) {
store.delete(StoreKey.CacheSizeLimit)
} else {
store.set(StoreKey.CacheSizeLimit, input)
}
}
@IpcMethod()
revealLogFile(_context: IpcContext) {
return revealLogFile()
}
@IpcMethod()
getCacheSize(_context: IpcContext) {
return getCacheSize()
}
}

View File

@ -1,8 +1,6 @@
import { statSync } from "node:fs"
import fsp from "node:fs/promises"
import { createRequire } from "node:module"
import path from "node:path"
import { promisify } from "node:util"
import { callWindowExpose } from "@follow/shared/bridge"
import { app, dialog } from "electron"
@ -14,13 +12,37 @@ import { WindowManager } from "~/manager/window"
import { t } from "./i18n"
import { store, StoreKey } from "./store"
const esModuleInterop = (module: any) => {
return module.default || module
const getFolderSize = async (dir: string): Promise<number> => {
try {
const files = await fsp.readdir(dir, { withFileTypes: true })
const sizes = await Promise.all(
files.map(async (file) => {
const filePath = path.join(dir, file.name)
if (file.isSymbolicLink()) {
return 0
}
if (file.isDirectory()) {
return await getFolderSize(filePath)
}
if (file.isFile()) {
try {
const { size } = await fsp.stat(filePath)
return size
} catch {
return 0
}
}
return 0
}),
)
return sizes.reduce((acc, size) => acc + size, 0)
} catch {
return 0
}
}
const require = createRequire(import.meta.url)
const fastFolderSize = esModuleInterop(
require("fast-folder-size"),
) as typeof import("fast-folder-size").default
export const clearAllDataAndConfirm = async () => {
const win = WindowManager.getMainWindow()
@ -71,12 +93,12 @@ export const clearAllData = async () => {
caller.toast.error(`Error resetting app data: ${error.message}`)
}
}
const fastFolderSizeAsync = promisify(fastFolderSize)
export const getCacheSize = async () => {
const cachePath = path.join(app.getPath("userData"), "cache")
// Size is in bytes
const sizeInBytes = await fastFolderSizeAsync(cachePath).catch((error) => {
const sizeInBytes = await getFolderSize(cachePath).catch((error) => {
logger.error(error)
})
return sizeInBytes || 0
@ -155,7 +177,7 @@ export const clearCacheCronJob = () => {
export const checkAndCleanCodeCache = async () => {
const cachePath = path.join(app.getPath("userData"), "Code Cache")
const size = await fastFolderSizeAsync(cachePath).catch((error) => {
const size = await getFolderSize(cachePath).catch((error) => {
logger.error(error)
})

View File

@ -298,7 +298,7 @@ class WindowManagerStatic {
webviewTag: true,
webSecurity: !DEV,
nodeIntegration: true,
contextIsolation: true,
contextIsolation: false,
},
...this.getPlatformSpecificWindowConfig(),
}

View File

@ -1,10 +1,9 @@
import type { AuthSession } from "@follow/shared/hono"
import { setFirebaseTracker, setOpenPanelTracker, tracker } from "@follow/tracker"
import { setFirebaseTracker, tracker } from "@follow/tracker"
import { QUERY_PERSIST_KEY } from "~/constants/app"
import { ga4 } from "./ga4"
import { op } from "./op"
export const initAnalytics = async () => {
tracker.manager.appendUserProperties({
@ -16,8 +15,6 @@ export const initAnalytics = async () => {
setFirebaseTracker(ga4)
setOpenPanelTracker(op)
let session: AuthSession | undefined
try {
const queryData = JSON.parse(window.localStorage.getItem(QUERY_PERSIST_KEY) ?? "{}")

View File

@ -74,6 +74,7 @@ export const loadLanguageAndApply = async (lang: string) => {
}
EventBus.dispatch("I18N_UPDATE", "")
} else {
if (ELECTRON) return
let importFilePath = ""
if (IN_ELECTRON) {

View File

@ -112,7 +112,7 @@ export const SettingDataControl = () => {
description: t("general.log_file.description"),
buttonText: t("general.log_file.button"),
action: () => {
;(ipcServices as any)?.revealLogFile?.()
ipcServices?.app.revealLogFile?.()
},
},
]}
@ -244,7 +244,7 @@ const CleanElectronCache = () => {
{t("data_control.clean_cache.button")}
<MotionButtonBase
onClick={() => {
;(ipcServices as any)?.openCacheFolder?.()
ipcServices?.app.openCacheFolder?.()
}}
className="center flex"
>
@ -253,7 +253,7 @@ const CleanElectronCache = () => {
</span>
}
action={async () => {
await (ipcServices as any)?.clearCache?.()
await ipcServices?.app.clearCache?.()
queryClient.setQueryData(["app", "cache", "size"], 0)
}}
buttonText={t("data_control.clean_cache.button")}
@ -267,7 +267,7 @@ const AppCacheLimit = () => {
const { data: cacheSize, isLoading: isLoadingCacheSize } = useQuery({
queryKey: ["app", "cache", "size"],
queryFn: async () => {
const byteSize = (await (ipcServices as any)?.getCacheSize?.()) ?? 0
const byteSize = (await ipcServices?.app.getCacheSize?.()) ?? 0
return Math.round(byteSize / 1024 / 1024)
},
refetchOnMount: "always",
@ -279,13 +279,13 @@ const AppCacheLimit = () => {
} = useQuery({
queryKey: ["app", "cache", "limit"],
queryFn: async () => {
const size = (await (ipcServices as any)?.getCacheLimit?.()) ?? 0
const size = (await ipcServices?.app.getCacheLimit?.()) ?? 0
return size
},
})
const onChange = (value: number[]) => {
;(ipcServices as any)?.limitCacheSize?.(value[0]!)
ipcServices?.app.limitCacheSize?.(value[0]!)
refetchCacheLimit()
}
@ -294,7 +294,7 @@ const AppCacheLimit = () => {
const InfinitySymbol = <CarbonInfinitySymbol />
return (
<SettingItemGroup>
<div className={"mb-3 flex items-center justify-between gap-4"}>
<div className={"mb-3 mt-4 flex items-center justify-between gap-4"}>
<Label className="center flex">
{t("data_control.app_cache_limit.label")}

View File

@ -1,7 +1,7 @@
{
"name": "Folo",
"type": "module",
"version": "0.6.0",
"version": "0.6.1",
"private": true,
"description": "Follow everything in one place",
"author": "Folo Team",

View File

@ -149,7 +149,7 @@
"appearance.zen_mode.description": "禅定模式是一种不受干扰的阅读模式,让你能够专注于内容而不受任何干扰。启用禅定模式将会隐藏侧边栏。",
"appearance.zen_mode.description_simple": "不受干扰的阅读模式(隐藏侧边栏)",
"appearance.zen_mode.label": "禅定模式",
"common.give_star": "<HeartIcon />喜欢我们的产品吗? <Link>在 GitHub 上给我们「标星」吧!</Link>",
"common.give_star": "<HeartIcon />喜欢我们的产品吗? <Link>在 GitHub 上给我们「Star」吧!</Link>",
"customizeToolbar.more_actions.description": "将显示在下拉菜单中",
"customizeToolbar.more_actions.title": "更多操作",
"customizeToolbar.quick_actions.description": "自定义并重新排列您常用的操作",

View File

@ -381,9 +381,6 @@ importers:
es-toolkit:
specifier: 1.39.3
version: 1.39.3
fast-folder-size:
specifier: 2.4.0
version: 2.4.0
font-list:
specifier: 1.5.1
version: 1.5.1
@ -7260,9 +7257,6 @@ packages:
birpc@2.4.0:
resolution: {integrity: sha512-5IdNxTyhXHv2UlgnPHQ0h+5ypVmkrYHzL8QT+DwFZ//2N/oNV8Ch+BCRmTJ3x6/z9Axo/cXYBc9eprsUVK/Jsg==}
bl@1.2.3:
resolution: {integrity: sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==}
bl@4.1.0:
resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
@ -7361,12 +7355,6 @@ packages:
bser@2.1.1:
resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==}
buffer-alloc-unsafe@1.1.0:
resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==}
buffer-alloc@1.2.0:
resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==}
buffer-crc32@0.2.13:
resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==}
@ -7381,9 +7369,6 @@ packages:
resolution: {integrity: sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==}
engines: {node: '>=0.4'}
buffer-fill@1.0.0:
resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==}
buffer-from@1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
@ -8197,26 +8182,6 @@ packages:
resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
engines: {node: '>=10'}
decompress-tar@4.1.1:
resolution: {integrity: sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==}
engines: {node: '>=4'}
decompress-tarbz2@4.1.1:
resolution: {integrity: sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==}
engines: {node: '>=4'}
decompress-targz@4.1.1:
resolution: {integrity: sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==}
engines: {node: '>=4'}
decompress-unzip@4.0.1:
resolution: {integrity: sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==}
engines: {node: '>=4'}
decompress@4.2.1:
resolution: {integrity: sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==}
engines: {node: '>=4'}
deep-eql@5.0.2:
resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
engines: {node: '>=6'}
@ -9594,10 +9559,6 @@ packages:
fast-fifo@1.3.2:
resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==}
fast-folder-size@2.4.0:
resolution: {integrity: sha512-vV+h8TCxOipwciSj2ePmk8fWlNuueWOHP30xk7xgpcFoHzOaHFhbEqSofluZz6/DGd6AgETVzcADMUPSXlxu/w==}
hasBin: true
fast-glob@3.3.2:
resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
engines: {node: '>=8.6.0'}
@ -9686,18 +9647,6 @@ packages:
resolution: {integrity: sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==}
engines: {node: '>=10'}
file-type@3.9.0:
resolution: {integrity: sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==}
engines: {node: '>=0.10.0'}
file-type@5.2.0:
resolution: {integrity: sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==}
engines: {node: '>=4'}
file-type@6.2.0:
resolution: {integrity: sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==}
engines: {node: '>=4'}
file-uri-to-path@1.0.0:
resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
@ -9960,10 +9909,6 @@ packages:
resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
engines: {node: '>= 0.4'}
get-stream@2.3.1:
resolution: {integrity: sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==}
engines: {node: '>=0.10.0'}
get-stream@4.1.0:
resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==}
engines: {node: '>=6'}
@ -10621,9 +10566,6 @@ packages:
resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==}
engines: {node: '>= 0.4'}
is-natural-number@4.0.1:
resolution: {integrity: sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==}
is-negative-zero@2.0.3:
resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
engines: {node: '>= 0.4'}
@ -11339,10 +11281,6 @@ packages:
resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==}
engines: {node: '>=12'}
make-dir@1.3.0:
resolution: {integrity: sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==}
engines: {node: '>=4'}
make-error@1.3.6:
resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
@ -12420,18 +12358,6 @@ packages:
resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
engines: {node: '>=0.10.0'}
pify@3.0.0:
resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==}
engines: {node: '>=4'}
pinkie-promise@2.0.1:
resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==}
engines: {node: '>=0.10.0'}
pinkie@2.0.4:
resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==}
engines: {node: '>=0.10.0'}
pino-abstract-transport@2.0.0:
resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==}
@ -13778,10 +13704,6 @@ packages:
secure-json-parse@4.0.0:
resolution: {integrity: sha512-dxtLJO6sc35jWidmLxo7ij+Eg48PM/kleBsxpC8QJE0qJICe+KawkDQmvCMZUr9u7WKVHgMW6vy3fQ7zMiFZMA==}
seek-bzip@1.0.6:
resolution: {integrity: sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==}
hasBin: true
selecto@1.26.3:
resolution: {integrity: sha512-gZHgqMy5uyB6/2YDjv3Qqaf7bd2hTDOpPdxXlrez4R3/L0GiEWDCFaUfrflomgqdb3SxHF2IXY0Jw0EamZi7cw==}
@ -14210,9 +14132,6 @@ packages:
resolution: {integrity: sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==}
engines: {node: '>=10'}
strip-dirs@2.1.0:
resolution: {integrity: sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==}
strip-eof@1.0.0:
resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==}
engines: {node: '>=0.10.0'}
@ -14371,10 +14290,6 @@ packages:
resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==}
engines: {node: '>=6'}
tar-stream@1.6.2:
resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==}
engines: {node: '>= 0.8.0'}
tar-stream@2.2.0:
resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
engines: {node: '>=6'}
@ -14513,9 +14428,6 @@ packages:
resolution: {integrity: sha512-DbplOfQFkqG5IHcDyyrs/lkvSr3mPUVsFf/RbDppOshs22yTPnSJWEe6FkYd1txAwU/zcnR905ar2fi4kwF29w==}
engines: {node: '>=0.12'}
to-buffer@1.1.1:
resolution: {integrity: sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==}
to-data-view@1.1.0:
resolution: {integrity: sha512-1eAdufMg6mwgmlojAx3QeMnzB/BTVp7Tbndi3U7ftcT2zCZadjxkkmLmd97zmaxWi+sgGcgWrokmpEoy0Dn0vQ==}
@ -14806,9 +14718,6 @@ packages:
resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
engines: {node: '>= 0.4'}
unbzip2-stream@1.4.3:
resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==}
unconfig@7.3.2:
resolution: {integrity: sha512-nqG5NNL2wFVGZ0NA/aCFw0oJ2pxSf1lwg4Z5ill8wd7K4KX/rQbHlwbh+bjctXL5Ly1xtzHenHGOK0b+lG6JVg==}
@ -23546,11 +23455,6 @@ snapshots:
birpc@2.4.0: {}
bl@1.2.3:
dependencies:
readable-stream: 2.3.8
safe-buffer: 5.2.1
bl@4.1.0:
dependencies:
buffer: 5.7.1
@ -23678,13 +23582,6 @@ snapshots:
dependencies:
node-int64: 0.4.0
buffer-alloc-unsafe@1.1.0: {}
buffer-alloc@1.2.0:
dependencies:
buffer-alloc-unsafe: 1.1.0
buffer-fill: 1.0.0
buffer-crc32@0.2.13: {}
buffer-equal-constant-time@1.0.1: {}
@ -23693,8 +23590,6 @@ snapshots:
buffer-equal@1.0.1: {}
buffer-fill@1.0.0: {}
buffer-from@1.1.2: {}
buffer-xor@1.0.3: {}
@ -24664,44 +24559,6 @@ snapshots:
dependencies:
mimic-response: 3.1.0
decompress-tar@4.1.1:
dependencies:
file-type: 5.2.0
is-stream: 1.1.0
tar-stream: 1.6.2
decompress-tarbz2@4.1.1:
dependencies:
decompress-tar: 4.1.1
file-type: 6.2.0
is-stream: 1.1.0
seek-bzip: 1.0.6
unbzip2-stream: 1.4.3
decompress-targz@4.1.1:
dependencies:
decompress-tar: 4.1.1
file-type: 5.2.0
is-stream: 1.1.0
decompress-unzip@4.0.1:
dependencies:
file-type: 3.9.0
get-stream: 2.3.1
pify: 2.3.0
yauzl: 2.10.0
decompress@4.2.1:
dependencies:
decompress-tar: 4.1.1
decompress-tarbz2: 4.1.1
decompress-targz: 4.1.1
decompress-unzip: 4.0.1
graceful-fs: 4.2.11
make-dir: 1.3.0
pify: 2.3.0
strip-dirs: 2.1.0
deep-eql@5.0.2: {}
deep-extend@0.6.0: {}
@ -26503,13 +26360,6 @@ snapshots:
fast-fifo@1.3.2: {}
fast-folder-size@2.4.0:
dependencies:
decompress: 4.2.1
https-proxy-agent: 7.0.6
transitivePeerDependencies:
- supports-color
fast-glob@3.3.2:
dependencies:
'@nodelib/fs.stat': 2.0.5
@ -26628,12 +26478,6 @@ snapshots:
strtok3: 6.3.0
token-types: 4.2.1
file-type@3.9.0: {}
file-type@5.2.0: {}
file-type@6.2.0: {}
file-uri-to-path@1.0.0: {}
filelist@1.0.4:
@ -26981,11 +26825,6 @@ snapshots:
dunder-proto: 1.0.1
es-object-atoms: 1.1.1
get-stream@2.3.1:
dependencies:
object-assign: 4.1.1
pinkie-promise: 2.0.1
get-stream@4.1.0:
dependencies:
pump: 3.0.3
@ -27807,8 +27646,6 @@ snapshots:
call-bind: 1.0.8
define-properties: 1.2.1
is-natural-number@4.0.1: {}
is-negative-zero@2.0.3: {}
is-number-object@1.1.1:
@ -28526,10 +28363,6 @@ snapshots:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.0
make-dir@1.3.0:
dependencies:
pify: 3.0.0
make-error@1.3.6: {}
make-fetch-happen@10.2.1:
@ -30022,14 +29855,6 @@ snapshots:
pify@2.3.0: {}
pify@3.0.0: {}
pinkie-promise@2.0.1:
dependencies:
pinkie: 2.0.4
pinkie@2.0.4: {}
pino-abstract-transport@2.0.0:
dependencies:
split2: 4.2.0
@ -31542,10 +31367,6 @@ snapshots:
secure-json-parse@4.0.0: {}
seek-bzip@1.0.6:
dependencies:
commander: 2.20.3
selecto@1.26.3:
dependencies:
'@daybrush/utils': 1.13.0
@ -32071,10 +31892,6 @@ snapshots:
strip-comments@2.0.1: {}
strip-dirs@2.1.0:
dependencies:
is-natural-number: 4.0.1
strip-eof@1.0.0: {}
strip-indent@2.0.0:
@ -32248,16 +32065,6 @@ snapshots:
tapable@2.2.2: {}
tar-stream@1.6.2:
dependencies:
bl: 1.2.3
buffer-alloc: 1.2.0
end-of-stream: 1.4.4
fs-constants: 1.0.0
readable-stream: 2.3.8
to-buffer: 1.1.1
xtend: 4.0.2
tar-stream@2.2.0:
dependencies:
bl: 4.1.0
@ -32407,8 +32214,6 @@ snapshots:
unorm: 1.6.0
optional: true
to-buffer@1.1.1: {}
to-data-view@1.1.0: {}
to-regex-range@5.0.1:
@ -32682,11 +32487,6 @@ snapshots:
has-symbols: 1.1.0
which-boxed-primitive: 1.1.1
unbzip2-stream@1.4.3:
dependencies:
buffer: 5.7.1
through: 2.3.8
unconfig@7.3.2:
dependencies:
'@quansync/fs': 0.1.3