From 1a122db7f90a0fc80852db9b98e55a92b8435ed5 Mon Sep 17 00:00:00 2001 From: Eric Amodio Date: Tue, 7 Jan 2025 18:16:16 -0500 Subject: [PATCH 01/11] Renames git/gitSpawn to exec/spawn --- src/env/node/git/git.ts | 173 ++++++++++++++------------- src/env/node/git/localGitProvider.ts | 12 +- src/env/node/git/vslsGitProvider.ts | 7 +- src/env/node/providers.ts | 2 +- 4 files changed, 101 insertions(+), 93 deletions(-) diff --git a/src/env/node/git/git.ts b/src/env/node/git/git.ts index cb2b41a1e0909..8762cbc1e0da6 100644 --- a/src/env/node/git/git.ts +++ b/src/env/node/git/git.ts @@ -177,9 +177,9 @@ export class Git { /** Map of running git commands -- avoids running duplicate overlaping commands */ private readonly pendingCommands = new Map>(); - async git(options: ExitCodeOnlyGitCommandOptions, ...args: any[]): Promise; - async git(options: GitCommandOptions, ...args: any[]): Promise; - async git(options: GitCommandOptions, ...args: any[]): Promise { + async exec(options: ExitCodeOnlyGitCommandOptions, ...args: any[]): Promise; + async exec(options: GitCommandOptions, ...args: any[]): Promise; + async exec(options: GitCommandOptions, ...args: any[]): Promise { if (!workspace.isTrusted) throw new WorkspaceUntrustedError(); const start = hrtime(); @@ -260,7 +260,7 @@ export class Git { } } - async gitSpawn(options: GitSpawnOptions, ...args: any[]): Promise { + async spawn(options: GitSpawnOptions, ...args: any[]): Promise { if (!workspace.isTrusted) throw new WorkspaceUntrustedError(); const start = hrtime(); @@ -362,7 +362,7 @@ export class Git { // Git commands add(repoPath: string | undefined, pathspecs: string[], ...args: string[]) { - return this.git({ cwd: repoPath }, 'add', ...args, '--', ...pathspecs); + return this.exec({ cwd: repoPath }, 'add', ...args, '--', ...pathspecs); } apply(repoPath: string | undefined, patch: string, options: { allowConflicts?: boolean } = {}) { @@ -370,7 +370,7 @@ export class Git { if (options.allowConflicts) { params.push('-3'); } - return this.git({ cwd: repoPath, stdin: patch }, ...params); + return this.exec({ cwd: repoPath, stdin: patch }, ...params); } async apply2( @@ -384,7 +384,7 @@ export class Git { }, ...args: string[] ) { - return this.git( + return this.exec( { cwd: repoPath, cancellation: options?.cancellation, @@ -497,7 +497,7 @@ export class Git { } try { - const blame = await this.git( + const blame = await this.exec( { cwd: root, stdin: stdin, correlationKey: options?.correlationKey }, ...params, '--', @@ -521,11 +521,11 @@ export class Git { } branch(repoPath: string, ...args: string[]) { - return this.git({ cwd: repoPath }, 'branch', ...args); + return this.exec({ cwd: repoPath }, 'branch', ...args); } branch__set_upstream(repoPath: string, branch: string, remote: string, remoteBranch: string) { - return this.git({ cwd: repoPath }, 'branch', '--set-upstream-to', `${remote}/${remoteBranch}`, branch); + return this.exec({ cwd: repoPath }, 'branch', '--set-upstream-to', `${remote}/${remoteBranch}`, branch); } branchOrTag__containsOrPointsAt( @@ -556,19 +556,19 @@ export class Git { params.push(options.name); } - return this.git( + return this.exec( { cwd: repoPath, configs: gitBranchDefaultConfigs, errors: GitErrorHandling.Ignore }, ...params, ); } async cat_file__size(repoPath: string, oid: string): Promise { - const data = await this.git({ cwd: repoPath }, 'cat-file', '-s', oid); + const data = await this.exec({ cwd: repoPath }, 'cat-file', '-s', oid); return data.length ? parseInt(data.trim(), 10) : 0; } check_ignore(repoPath: string, ...files: string[]) { - return this.git( + return this.exec( { cwd: repoPath, errors: GitErrorHandling.Ignore, stdin: files.join('\0') }, 'check-ignore', '-z', @@ -577,7 +577,7 @@ export class Git { } check_mailmap(repoPath: string, author: string) { - return this.git({ cwd: repoPath, errors: GitErrorHandling.Ignore }, 'check-mailmap', author); + return this.exec({ cwd: repoPath, errors: GitErrorHandling.Ignore }, 'check-mailmap', author); } async check_ref_format(ref: string, repoPath?: string, options: { branch?: boolean } = { branch: true }) { @@ -589,7 +589,7 @@ export class Git { } try { - const data = await this.git( + const data = await this.exec( { cwd: repoPath ?? '', errors: GitErrorHandling.Throw }, ...params, ref, @@ -614,7 +614,7 @@ export class Git { } } - return this.git({ cwd: repoPath }, ...params); + return this.exec({ cwd: repoPath }, ...params); } async cherrypick(repoPath: string, sha: string, options: { noCommit?: boolean; errors?: GitErrorHandling } = {}) { @@ -625,7 +625,7 @@ export class Git { params.push(sha); try { - await this.git({ cwd: repoPath, errors: options?.errors }, ...params); + await this.exec({ cwd: repoPath, errors: options?.errors }, ...params); } catch (ex) { const msg: string = ex?.toString() ?? ''; let reason: CherryPickErrorReason = CherryPickErrorReason.Other; @@ -655,13 +655,13 @@ export class Git { folderPath = joinPath(parentPath, `${remotePath}-${count}`); } - await this.git({ cwd: parentPath }, 'clone', url, folderPath); + await this.exec({ cwd: parentPath }, 'clone', url, folderPath); return folderPath; } async config__get(key: string, repoPath?: string, options?: { local?: boolean }) { - const data = await this.git( + const data = await this.exec( { cwd: repoPath ?? '', errors: GitErrorHandling.Ignore, local: options?.local }, 'config', '--get', @@ -671,7 +671,7 @@ export class Git { } async config__get_regex(pattern: string, repoPath?: string, options?: { local?: boolean }) { - const data = await this.git( + const data = await this.exec( { cwd: repoPath ?? '', errors: GitErrorHandling.Ignore, local: options?.local }, 'config', '--get-regex', @@ -687,7 +687,7 @@ export class Git { } else { params.push(key, value); } - await this.git({ cwd: repoPath ?? '', local: true }, ...params); + await this.exec({ cwd: repoPath ?? '', local: true }, ...params); } async diff( @@ -729,7 +729,7 @@ export class Git { } try { - return await this.git( + return await this.exec( { cwd: repoPath, configs: gitDiffDefaultConfigs, @@ -764,7 +764,7 @@ export class Git { }, ...args: string[] ) { - return this.git( + return this.exec( { cwd: repoPath, cancellation: options?.cancellation, @@ -807,7 +807,7 @@ export class Git { params.push('--no-index'); try { - return await this.git( + return await this.exec( { cwd: repoPath, configs: gitDiffDefaultConfigs, @@ -867,7 +867,7 @@ export class Git { params.push(options.path); } - return this.git({ cwd: repoPath, configs: gitDiffDefaultConfigs }, ...params); + return this.exec({ cwd: repoPath, configs: gitDiffDefaultConfigs }, ...params); } async diff__shortstat(repoPath: string, ref?: string) { @@ -877,7 +877,7 @@ export class Git { } try { - return await this.git({ cwd: repoPath, configs: gitDiffDefaultConfigs }, ...params, '--'); + return await this.exec({ cwd: repoPath, configs: gitDiffDefaultConfigs }, ...params, '--'); } catch (ex) { const msg: string = ex?.toString() ?? ''; if (GitErrors.noMergeBase.test(msg)) { @@ -905,7 +905,7 @@ export class Git { params.push(options.ref2); } - return this.git({ cwd: repoPath }, ...params, '--', fileName); + return this.exec({ cwd: repoPath }, ...params, '--', fileName); } difftool__dir_diff(repoPath: string, tool: string, ref1: string, ref2?: string) { @@ -914,7 +914,7 @@ export class Git { params.push(ref2); } - return this.git({ cwd: repoPath }, ...params); + return this.exec({ cwd: repoPath }, ...params); } async fetch( @@ -949,7 +949,7 @@ export class Git { } try { - void (await this.git({ cwd: repoPath }, ...params)); + void (await this.exec({ cwd: repoPath }, ...params)); } catch (ex) { const msg: string = ex?.toString() ?? ''; let reason: FetchErrorReason = FetchErrorReason.Other; @@ -1006,7 +1006,7 @@ export class Git { } try { - void (await this.git({ cwd: repoPath }, ...params)); + void (await this.exec({ cwd: repoPath }, ...params)); } catch (ex) { const msg: string = ex?.toString() ?? ''; let reason: PushErrorReason = PushErrorReason.Other; @@ -1053,7 +1053,7 @@ export class Git { } try { - void (await this.git({ cwd: repoPath }, ...params)); + void (await this.exec({ cwd: repoPath }, ...params)); } catch (ex) { const msg: string = ex?.toString() ?? ''; let reason: PullErrorReason = PullErrorReason.Other; @@ -1098,7 +1098,7 @@ export class Git { params.push('refs/remotes'); } - return this.git({ cwd: repoPath }, ...params); + return this.exec({ cwd: repoPath }, ...params); } log( @@ -1112,7 +1112,7 @@ export class Git { }, ...args: string[] ) { - return this.git( + return this.exec( { cwd: repoPath, cancellation: options?.cancellation, @@ -1140,7 +1140,7 @@ export class Git { params.push('--stdin'); } - const proc = await this.gitSpawn( + const proc = await this.spawn( { cwd: repoPath, configs: options?.configs ?? gitLogDefaultConfigs, stdin: options?.stdin }, ...params, '--', @@ -1319,7 +1319,7 @@ export class Git { params.push('--', file); } - return this.git({ cwd: root, configs: gitLogDefaultConfigs }, ...params); + return this.exec({ cwd: root, configs: gitLogDefaultConfigs }, ...params); } async log__file_recent( @@ -1347,7 +1347,7 @@ export class Git { params.push(options?.ref); } - const data = await this.git( + const data = await this.exec( { cancellation: options?.cancellation, cwd: repoPath, @@ -1379,7 +1379,7 @@ export class Git { params.push('--', file); } - const data = await this.git( + const data = await this.exec( { cancellation: cancellation, cwd: repoPath, @@ -1398,7 +1398,7 @@ export class Git { params.push(`--${ordering}-order`); } - const data = await this.git( + const data = await this.exec( { cwd: repoPath, configs: gitLogDefaultConfigs, errors: GitErrorHandling.Ignore }, ...params, '--', @@ -1414,7 +1414,7 @@ export class Git { params.push(`--${ordering}-order`); } - const data = await this.git( + const data = await this.exec( { cwd: repoPath, configs: gitLogDefaultConfigs, errors: GitErrorHandling.Ignore }, ...params, '--', @@ -1436,7 +1436,7 @@ export class Git { ) { if (options?.shas != null) { const stdin = join(options.shas, '\n'); - return this.git( + return this.exec( { cwd: repoPath, stdin: stdin }, 'show', '--stdin', @@ -1449,7 +1449,7 @@ export class Git { let files; [search, files] = splitAt(search, search.indexOf('--')); - return this.git( + return this.exec( { cwd: repoPath, configs: ['-C', repoPath, ...gitLogDefaultConfigs], stdin: options?.stdin }, 'log', ...(options?.stdin ? ['--stdin'] : emptyArray), @@ -1490,7 +1490,7 @@ export class Git { params.push('-o'); } - const data = await this.git( + const data = await this.exec( { cwd: repoPath, errors: GitErrorHandling.Ignore }, ...params, '--', @@ -1500,11 +1500,11 @@ export class Git { } ls_remote(repoPath: string, remote: string, ref?: string) { - return this.git({ cwd: repoPath }, 'ls-remote', remote, ref); + return this.exec({ cwd: repoPath }, 'ls-remote', remote, ref); } ls_remote__HEAD(repoPath: string, remote: string) { - return this.git({ cwd: repoPath }, 'ls-remote', '--symref', remote, 'HEAD'); + return this.exec({ cwd: repoPath }, 'ls-remote', '--symref', remote, 'HEAD'); } async ls_tree(repoPath: string, ref: string, path?: string) { @@ -1514,7 +1514,7 @@ export class Git { } else { params.push('-lrt', ref, '--'); } - const data = await this.git({ cwd: repoPath, errors: GitErrorHandling.Ignore }, ...params); + const data = await this.exec({ cwd: repoPath, errors: GitErrorHandling.Ignore }, ...params); return data.length === 0 ? undefined : data.trim(); } @@ -1524,18 +1524,18 @@ export class Git { params.push('--fork-point'); } - return this.git({ cwd: repoPath }, ...params, ref1, ref2); + return this.exec({ cwd: repoPath }, ...params, ref1, ref2); } async merge_base__is_ancestor(repoPath: string, ref1: string, ref2: string): Promise { const params = ['merge-base', '--is-ancestor']; - const exitCode = await this.git({ cwd: repoPath, exitCodeOnly: true }, ...params, ref1, ref2); + const exitCode = await this.exec({ cwd: repoPath, exitCodeOnly: true }, ...params, ref1, ref2); return exitCode === 0; } async merge_tree(repoPath: string, branch: string, target: string, ...args: string[]): Promise { try { - return await this.git( + return await this.exec( { cwd: repoPath, errors: GitErrorHandling.Throw }, 'merge-tree', ...args, @@ -1575,7 +1575,7 @@ export class Git { }, ...args: string[] ): Promise { - return this.git( + return this.exec( { cwd: repoPath, cancellation: options?.cancellation, @@ -1592,7 +1592,7 @@ export class Git { } remote(repoPath: string): Promise { - return this.git({ cwd: repoPath }, 'remote', '-v'); + return this.exec({ cwd: repoPath }, 'remote', '-v'); } remote__add(repoPath: string, name: string, url: string, options?: { fetch?: boolean }) { @@ -1600,23 +1600,23 @@ export class Git { if (options?.fetch) { params.push('-f'); } - return this.git({ cwd: repoPath }, ...params, name, url); + return this.exec({ cwd: repoPath }, ...params, name, url); } remote__prune(repoPath: string, name: string) { - return this.git({ cwd: repoPath }, 'remote', 'prune', name); + return this.exec({ cwd: repoPath }, 'remote', 'prune', name); } remote__remove(repoPath: string, name: string) { - return this.git({ cwd: repoPath }, 'remote', 'remove', name); + return this.exec({ cwd: repoPath }, 'remote', 'remove', name); } remote__get_url(repoPath: string, remote: string): Promise { - return this.git({ cwd: repoPath }, 'remote', 'get-url', remote); + return this.exec({ cwd: repoPath }, 'remote', 'get-url', remote); } reset(repoPath: string | undefined, pathspecs: string[]) { - return this.git({ cwd: repoPath }, 'reset', '-q', '--', ...pathspecs); + return this.exec({ cwd: repoPath }, 'reset', '-q', '--', ...pathspecs); } async rev_list( @@ -1637,7 +1637,7 @@ export class Git { params.push(`--since="${options.since}"`, '--date-order'); } - const rawData = await this.git( + const rawData = await this.exec( { cwd: repoPath, errors: GitErrorHandling.Ignore }, ...params, ref, @@ -1655,7 +1655,7 @@ export class Git { params.push('--all'); } - let data = await this.git({ cwd: repoPath, errors: GitErrorHandling.Ignore }, ...params, ref, '--'); + let data = await this.exec({ cwd: repoPath, errors: GitErrorHandling.Ignore }, ...params, ref, '--'); data = data.trim(); if (data.length === 0) return undefined; @@ -1679,7 +1679,12 @@ export class Git { params.push('--no-merges'); } - const data = await this.git({ cwd: repoPath, errors: GitErrorHandling.Ignore }, ...params, range, '--'); + const data = await this.exec( + { cwd: repoPath, errors: GitErrorHandling.Ignore }, + ...params, + range, + '--', + ); if (data.length === 0) return undefined; const parts = data.split('\t'); @@ -1697,7 +1702,7 @@ export class Git { } async rev_parse(repoPath: string, ref: string): Promise { - const data = await this.git({ cwd: repoPath, errors: GitErrorHandling.Ignore }, 'rev-parse', ref); + const data = await this.exec({ cwd: repoPath, errors: GitErrorHandling.Ignore }, 'rev-parse', ref); return data.length === 0 ? undefined : data.trim(); } @@ -1706,7 +1711,7 @@ export class Git { ordering: 'date' | 'author-date' | 'topo' | null, ): Promise<[string, string | undefined] | undefined> { try { - const data = await this.git( + const data = await this.exec( { cwd: repoPath, errors: GitErrorHandling.Throw }, 'rev-parse', '--abbrev-ref', @@ -1781,7 +1786,7 @@ export class Git { } async rev_parse__git_dir(cwd: string): Promise<{ path: string; commonPath?: string } | undefined> { - const data = await this.git( + const data = await this.exec( { cwd: cwd, errors: GitErrorHandling.Ignore }, 'rev-parse', '--git-dir', @@ -1818,7 +1823,7 @@ export class Git { // Check if the folder is a bare clone: if it has a file named HEAD && `rev-parse --show-cdup` is empty try { accessSync(joinPaths(cwd, 'HEAD')); - data = await this.git( + data = await this.exec( { cwd: cwd, errors: GitErrorHandling.Throw, configs: ['-C', cwd] }, 'rev-parse', '--show-cdup', @@ -1833,7 +1838,11 @@ export class Git { } try { - data = await this.git({ cwd: cwd, errors: GitErrorHandling.Throw }, 'rev-parse', '--show-toplevel'); + data = await this.exec( + { cwd: cwd, errors: GitErrorHandling.Throw }, + 'rev-parse', + '--show-toplevel', + ); // Make sure to normalize: https://github.com/git-for-windows/git/issues/2478 // Keep trailing spaces which are part of the directory name return data.length === 0 @@ -1856,7 +1865,7 @@ export class Git { const inDotGit = /this operation must be run in a work tree/.test(ex.stderr); // Check if we are in a bare clone if (inDotGit && workspace.isTrusted) { - data = await this.git( + data = await this.exec( { cwd: cwd, errors: GitErrorHandling.Ignore }, 'rev-parse', '--is-bare-repository', @@ -1894,7 +1903,7 @@ export class Git { params.push('--end-of-options'); } - const data = await this.git( + const data = await this.exec( { cwd: repoPath, errors: GitErrorHandling.Ignore }, ...params, fileName ? `${ref}:./${fileName}` : `${ref}^{commit}`, @@ -1907,7 +1916,7 @@ export class Git { options?: { cancellation?: CancellationToken; configs?: readonly string[] }, ...args: string[] ) { - return this.git( + return this.exec( { cwd: repoPath, cancellation: options?.cancellation, @@ -1943,7 +1952,7 @@ export class Git { const args = ref.endsWith(':') ? `${ref}./${file}` : `${ref}:./${file}`; try { - const data = await this.git(opts, 'show', '--textconv', args, '--'); + const data = await this.exec(opts, 'show', '--textconv', args, '--'); return data; } catch (ex) { const msg: string = ex?.toString() ?? ''; @@ -1965,12 +1974,12 @@ export class Git { stash__apply(repoPath: string, stashName: string, deleteAfter: boolean): Promise { if (!stashName) return Promise.resolve(undefined); - return this.git({ cwd: repoPath }, 'stash', deleteAfter ? 'pop' : 'apply', stashName); + return this.exec({ cwd: repoPath }, 'stash', deleteAfter ? 'pop' : 'apply', stashName); } async stash__rename(repoPath: string, stashName: string, ref: string, message: string, stashOnRef?: string) { await this.stash__delete(repoPath, stashName, ref); - return this.git( + return this.exec( { cwd: repoPath }, 'stash', 'store', @@ -1984,7 +1993,7 @@ export class Git { if (!stashName) return undefined; if (ref) { - const stashRef = await this.git( + const stashRef = await this.exec( { cwd: repoPath, errors: GitErrorHandling.Ignore }, 'show', '--format=%H', @@ -1996,7 +2005,7 @@ export class Git { } } - return this.git({ cwd: repoPath }, 'stash', 'drop', stashName); + return this.exec({ cwd: repoPath }, 'stash', 'drop', stashName); } stash__list( @@ -2007,7 +2016,7 @@ export class Git { args = ['--name-status']; } - return this.git( + return this.exec( { cwd: repoPath }, 'stash', 'list', @@ -2019,7 +2028,7 @@ export class Git { async stash__create(repoPath: string): Promise { const params = ['stash', 'create']; - const data = await this.git({ cwd: repoPath }, ...params); + const data = await this.exec({ cwd: repoPath }, ...params); return data?.trim() || undefined; } @@ -2032,7 +2041,7 @@ export class Git { params.push(sha); - await this.git({ cwd: repoPath }, ...params); + await this.exec({ cwd: repoPath }, ...params); } async stash__push( @@ -2081,7 +2090,7 @@ export class Git { } try { - const data = await this.git({ cwd: repoPath, stdin: stdin }, ...params); + const data = await this.exec({ cwd: repoPath, stdin: stdin }, ...params); if (data.includes('No local changes to save')) { throw new StashPushError(StashPushErrorReason.NothingToSave); return; @@ -2099,7 +2108,7 @@ export class Git { } stash(repoPath: string, ...args: string[]) { - return this.git({ cwd: repoPath }, 'stash', ...args); + return this.exec({ cwd: repoPath }, 'stash', ...args); } async status( @@ -2119,7 +2128,7 @@ export class Git { ); } - return this.git( + return this.exec( { cwd: repoPath, configs: gitStatusDefaultConfigs, env: { GIT_OPTIONAL_LOCKS: '0' } }, ...params, '--', @@ -2127,12 +2136,12 @@ export class Git { } symbolic_ref(repoPath: string, ref: string) { - return this.git({ cwd: repoPath }, 'symbolic-ref', '--short', ref); + return this.exec({ cwd: repoPath }, 'symbolic-ref', '--short', ref); } async tag(repoPath: string, ...args: string[]) { try { - const output = await this.git({ cwd: repoPath }, 'tag', ...args); + const output = await this.exec({ cwd: repoPath }, 'tag', ...args); return output; } catch (ex) { const msg: string = ex?.toString() ?? ''; @@ -2169,11 +2178,11 @@ export class Git { if (commitish) { params.push(commitish); } - return this.git({ cwd: repoPath }, ...params); + return this.exec({ cwd: repoPath }, ...params); } worktree__list(repoPath: string) { - return this.git({ cwd: repoPath }, 'worktree', 'list', '--porcelain'); + return this.exec({ cwd: repoPath }, 'worktree', 'list', '--porcelain'); } worktree__remove(repoPath: string, worktree: string, { force }: { force?: boolean } = {}) { @@ -2183,7 +2192,7 @@ export class Git { } params.push(worktree); - return this.git({ cwd: repoPath, errors: GitErrorHandling.Throw }, ...params); + return this.exec({ cwd: repoPath, errors: GitErrorHandling.Throw }, ...params); } async readDotGitFile( diff --git a/src/env/node/git/localGitProvider.ts b/src/env/node/git/localGitProvider.ts index 7c74ea57d3b15..036a2d0c42fe4 100644 --- a/src/env/node/git/localGitProvider.ts +++ b/src/env/node/git/localGitProvider.ts @@ -1387,7 +1387,7 @@ export class LocalGitProvider implements GitProvider, Disposable { // Create the temp index file from a base ref/sha // Get the tree of the base - const newIndex = await this.git.git( + const newIndex = await this.git.exec( { cwd: repoPath, env: env, @@ -1400,7 +1400,7 @@ export class LocalGitProvider implements GitProvider, Disposable { ); // Write the tree to our temp index - await this.git.git( + await this.git.exec( { cwd: repoPath, env: env, @@ -1416,7 +1416,7 @@ export class LocalGitProvider implements GitProvider, Disposable { // Create a new tree from our patched index const tree = ( - await this.git.git( + await this.git.exec( { cwd: repoPath, env: env, @@ -1427,7 +1427,7 @@ export class LocalGitProvider implements GitProvider, Disposable { // Create new commit from the tree const sha = ( - await this.git.git( + await this.git.exec( { cwd: repoPath, env: env, @@ -3018,7 +3018,7 @@ export class LocalGitProvider implements GitProvider, Disposable { } try { - const data = await this.git.git({ cwd: repoPath }, ...args); + const data = await this.git.exec({ cwd: repoPath }, ...args); if (data == null) return undefined; const contributions = data @@ -3325,7 +3325,7 @@ export class LocalGitProvider implements GitProvider, Disposable { } private async getValidatedBranchName(repoPath: string, name: string): Promise { - const data = await this.git.git( + const data = await this.git.exec( { cwd: repoPath }, 'rev-parse', '--verify', diff --git a/src/env/node/git/vslsGitProvider.ts b/src/env/node/git/vslsGitProvider.ts index 2fb27f349e757..6bfcdcd787bc6 100644 --- a/src/env/node/git/vslsGitProvider.ts +++ b/src/env/node/git/vslsGitProvider.ts @@ -17,11 +17,11 @@ export class VslsGit extends Git { super(); } - override async git(options: GitCommandOptions, ...args: any[]): Promise { + override async exec(options: GitCommandOptions, ...args: any[]): Promise { if (options.local) { // Since we will have a live share path here, just blank it out options.cwd = ''; - return this.localGit.git(options, ...args); + return this.localGit.exec(options, ...args); } const guest = await Container.instance.vsls.guest(); @@ -33,8 +33,7 @@ export class VslsGit extends Git { return guest.git(options, ...args); } - // eslint-disable-next-line @typescript-eslint/require-await - override async gitSpawn(_options: GitSpawnOptions, ..._args: any[]): Promise { + override spawn(_options: GitSpawnOptions, ..._args: any[]): Promise { debugger; throw new Error('Git spawn not supported in Live Share'); } diff --git a/src/env/node/providers.ts b/src/env/node/providers.ts index 6c64848bee413..aeb8bb4a9a298 100644 --- a/src/env/node/providers.ts +++ b/src/env/node/providers.ts @@ -19,7 +19,7 @@ function ensureGit() { } export function git(options: GitCommandOptions, ...args: any[]): Promise { - return ensureGit().git(options, ...args); + return ensureGit().exec(options, ...args); } export function gitLogStreamTo( From 1bb9220927f90d6d59d114d9503d2cab184160b9 Mon Sep 17 00:00:00 2001 From: Eric Amodio Date: Tue, 7 Jan 2025 02:34:27 -0500 Subject: [PATCH 02/11] Refactors merge/rebase status - Unifies into paused operation status - Adds cherry-pick and revert statuses - Improves performance of detecting a paused operation Adds abort & continue actions (wip) --- src/constants.views.ts | 3 +- src/env/node/git/git.ts | 10 +- src/env/node/git/localGitProvider.ts | 223 ++------- .../node/git/operations/pausedOperations.ts | 446 ++++++++++++++++++ src/git/errors.ts | 65 +++ src/git/gitProvider.ts | 8 +- src/git/gitProviderService.ts | 38 +- src/git/models/merge.ts | 10 - src/git/models/pausedOperationStatus.ts | 78 +++ src/git/models/rebase.ts | 16 - src/git/models/repository.ts | 27 +- .../providers/github/githubGitProvider.ts | 16 +- src/trackers/documentTracker.ts | 2 +- src/views/branchesView.ts | 2 +- src/views/commitsView.ts | 2 +- src/views/nodes/abstract/viewNode.ts | 13 +- src/views/nodes/branchNode.ts | 33 +- src/views/nodes/fileHistoryNode.ts | 2 +- src/views/nodes/fileRevisionAsCommitNode.ts | 14 +- src/views/nodes/lineHistoryNode.ts | 2 +- .../nodes/mergeConflictCurrentChangesNode.ts | 5 +- src/views/nodes/mergeConflictFileNode.ts | 5 +- src/views/nodes/mergeConflictFilesNode.ts | 5 +- .../nodes/mergeConflictIncomingChangesNode.ts | 5 +- src/views/nodes/mergeStatusNode.ts | 82 ---- src/views/nodes/pausedOperationStatusNode.ts | 184 ++++++++ src/views/nodes/rebaseStatusNode.ts | 120 ----- src/views/nodes/repositoryNode.ts | 17 +- src/views/viewDecorationProvider.ts | 9 +- src/views/worktreesView.ts | 2 +- .../apps/plus/home/components/active-work.ts | 12 +- .../apps/plus/home/components/branch-card.ts | 15 +- .../home/components/merge-rebase-status.ts | 55 ++- .../apps/shared/components/card/card.css.ts | 4 +- .../apps/shared/components/card/card.ts | 2 + src/webviews/home/homeWebview.ts | 13 +- src/webviews/home/protocol.ts | 6 +- src/webviews/plus/graph/graphWebview.ts | 2 +- 38 files changed, 966 insertions(+), 587 deletions(-) create mode 100644 src/env/node/git/operations/pausedOperations.ts delete mode 100644 src/git/models/merge.ts create mode 100644 src/git/models/pausedOperationStatus.ts delete mode 100644 src/git/models/rebase.ts delete mode 100644 src/views/nodes/mergeStatusNode.ts create mode 100644 src/views/nodes/pausedOperationStatusNode.ts delete mode 100644 src/views/nodes/rebaseStatusNode.ts diff --git a/src/constants.views.ts b/src/constants.views.ts index 0abe8f8c00916..ad493a0c4ba71 100644 --- a/src/constants.views.ts +++ b/src/constants.views.ts @@ -126,11 +126,10 @@ export type TreeViewNodeTypes = | 'grouping' | 'launchpad' | 'launchpad-item' - | 'merge-status' | 'message' | 'pager' + | 'paused-operation-status' | 'pullrequest' - | 'rebase-status' | 'reflog' | 'reflog-record' | 'remote' diff --git a/src/env/node/git/git.ts b/src/env/node/git/git.ts index 8762cbc1e0da6..a3f593e4f906d 100644 --- a/src/env/node/git/git.ts +++ b/src/env/node/git/git.ts @@ -75,7 +75,8 @@ const rootSha = '4b825dc642cb6eb9a060e54bf8d69288fbee4904'; export const GitErrors = { badRevision: /bad revision '(.*?)'/i, cantLockRef: /cannot lock ref|unable to update local ref/i, - changesWouldBeOverwritten: /Your local changes to the following files would be overwritten/i, + changesWouldBeOverwritten: + /Your local changes to the following files would be overwritten|Your local changes would be overwritten/i, commitChangesFirst: /Please, commit your changes before you can/i, conflict: /^CONFLICT \([^)]+\): \b/m, failedToDeleteDirectoryNotEmpty: /failed to delete '(.*?)': Directory not empty/i, @@ -93,18 +94,21 @@ export const GitErrors = { alreadyCheckedOut: /already checked out/i, mainWorkingTree: /is a main working tree/i, noUpstream: /^fatal: The current branch .* has no upstream branch/i, + noPausedOperation: + /no merge (?:in progress|to abort)|no cherry-pick(?: or revert)? in progress|no rebase in progress/i, permissionDenied: /Permission.*denied/i, pushRejected: /^error: failed to push some refs to\b/m, rebaseMultipleBranches: /cannot rebase onto multiple branches/i, remoteAhead: /rejected because the remote contains work/i, remoteConnection: /Could not read from remote repository/i, tagConflict: /! \[rejected\].*\(would clobber existing tag\)/m, - unmergedFiles: /is not possible because you have unmerged files/i, + unmergedFiles: /is not possible because you have unmerged files|You have unmerged files/i, unstagedChanges: /You have unstaged changes/i, tagAlreadyExists: /tag .* already exists/i, tagNotFound: /tag .* not found/i, invalidTagName: /invalid tag name/i, remoteRejected: /rejected because the remote contains work/i, + unresolvedConflicts: /You must edit all merge conflicts|Resolve all conflicts/i, }; const GitWarnings = { @@ -1543,7 +1547,7 @@ export class Git { target, ); } catch (ex) { - const msg = ex?.toString() ?? ''; + const msg: string = ex?.toString() ?? ''; if (GitErrors.notAValidObjectName.test(msg)) { throw new Error( diff --git a/src/env/node/git/localGitProvider.ts b/src/env/node/git/localGitProvider.ts index 036a2d0c42fe4..703dc0c4e39e4 100644 --- a/src/env/node/git/localGitProvider.ts +++ b/src/env/node/git/localGitProvider.ts @@ -97,11 +97,10 @@ import type { GitGraphRowTag, } from '../../../git/models/graph'; import type { GitLog } from '../../../git/models/log'; -import type { GitMergeStatus } from '../../../git/models/merge'; import type { MergeConflict } from '../../../git/models/mergeConflict'; -import type { GitRebaseStatus } from '../../../git/models/rebase'; -import type { GitBranchReference, GitReference, GitTagReference } from '../../../git/models/reference'; -import { createReference, getReferenceFromBranch, isBranchReference } from '../../../git/models/reference.utils'; +import type { GitPausedOperationStatus } from '../../../git/models/pausedOperationStatus'; +import type { GitBranchReference, GitReference } from '../../../git/models/reference'; +import { createReference, isBranchReference } from '../../../git/models/reference.utils'; import type { GitReflog } from '../../../git/models/reflog'; import type { GitRemote } from '../../../git/models/remote'; import { getVisibilityCacheKey, sortRemotes } from '../../../git/models/remote'; @@ -236,6 +235,7 @@ import { } from './git'; import type { GitLocation } from './locator'; import { findGitPath, InvalidGitConfigError, UnableToFindGitError } from './locator'; +import { abortPausedOperation, continuePausedOperation, getPausedOperationStatus } from './operations/pausedOperations'; import { CancelledRunError, fsExists, RunError } from './shell'; const emptyArray = Object.freeze([]) as unknown as any[]; @@ -299,8 +299,7 @@ export class LocalGitProvider implements GitProvider, Disposable { private readonly _branchCache = new Map>(); private readonly _branchesCache = new Map>>(); private readonly _contributorsCache = new Map>>(); - private readonly _mergeStatusCache = new Map>(); - private readonly _rebaseStatusCache = new Map>(); + private readonly _pausedOperationStatusCache = new Map>(); private readonly _remotesCache = new Map>(); private readonly _repoInfoCache = new Map(); private readonly _stashesCache = new Map(); @@ -356,14 +355,17 @@ export class LocalGitProvider implements GitProvider, Disposable { this._trackedPaths.clear(); } - if (e.changed(RepositoryChange.Merge, RepositoryChangeComparisonMode.Any)) { - this._branchCache.delete(repo.path); - this._mergeStatusCache.delete(repo.path); - } - - if (e.changed(RepositoryChange.Rebase, RepositoryChangeComparisonMode.Any)) { + if ( + e.changed( + RepositoryChange.CherryPick, + RepositoryChange.Merge, + RepositoryChange.Rebase, + RepositoryChange.Revert, + RepositoryChangeComparisonMode.Any, + ) + ) { this._branchCache.delete(repo.path); - this._rebaseStatusCache.delete(repo.path); + this._pausedOperationStatusCache.delete(repo.path); } if (e.changed(RepositoryChange.Stash, RepositoryChangeComparisonMode.Any)) { @@ -1479,7 +1481,7 @@ export class LocalGitProvider implements GitProvider, Disposable { } if (!caches.length || caches.includes('status')) { - cachesToClear.push(this._mergeStatusCache, this._rebaseStatusCache); + cachesToClear.push(this._pausedOperationStatusCache); } if (!caches.length || caches.includes('tags')) { @@ -1872,7 +1874,7 @@ export class LocalGitProvider implements GitProvider, Disposable { // Trap and cache expected blame errors if (document.state != null) { - const msg = ex?.toString() ?? ''; + const msg: string = ex?.toString() ?? ''; Logger.debug(scope, `Cache replace (with empty promise): '${key}'; reason=${msg}`); const value: CachedBlame = { @@ -1968,7 +1970,7 @@ export class LocalGitProvider implements GitProvider, Disposable { // Trap and cache expected blame errors if (document.state != null) { - const msg = ex?.toString() ?? ''; + const msg: string = ex?.toString() ?? ''; Logger.debug(scope, `Cache replace (with empty promise): '${key}'; reason=${msg}`); const value: CachedBlame = { @@ -2220,13 +2222,14 @@ export class LocalGitProvider implements GitProvider, Disposable { const [name, upstream] = data[0].split('\n'); - const [rebaseStatusResult, committerDateResult] = await Promise.allSettled([ - isDetachedHead(name) ? this.getRebaseStatus(repoPath) : undefined, + const [pausedOpStatusResult, committerDateResult] = await Promise.allSettled([ + isDetachedHead(name) ? this.getPausedOperationStatus(repoPath) : undefined, this.git.log__recent_committerdate(repoPath, commitOrdering), ]); const committerDate = getSettledValue(committerDateResult); - const rebaseStatus = getSettledValue(rebaseStatusResult); + const pausedOpStatus = getSettledValue(pausedOpStatusResult); + const rebaseStatus = pausedOpStatus?.type === 'rebase' ? pausedOpStatus : undefined; return new GitBranch( this.container, @@ -3539,7 +3542,7 @@ export class LocalGitProvider implements GitProvider, Disposable { } catch (ex) { // Trap and cache expected diff errors if (document.state != null) { - const msg = ex?.toString() ?? ''; + const msg: string = ex?.toString() ?? ''; Logger.debug(scope, `Cache replace (with empty promise): '${key}'`); const value: CachedDiff = { @@ -3624,7 +3627,7 @@ export class LocalGitProvider implements GitProvider, Disposable { } catch (ex) { // Trap and cache expected diff errors if (document.state != null) { - const msg = ex?.toString() ?? ''; + const msg: string = ex?.toString() ?? ''; Logger.debug(scope, `Cache replace (with empty promise): '${key}'`); const value: CachedDiff = { @@ -4417,170 +4420,24 @@ export class LocalGitProvider implements GitProvider, Disposable { } } + @gate() @log() - async getMergeStatus(repoPath: string): Promise { - let status = this.useCaching ? this._mergeStatusCache.get(repoPath) : undefined; - if (status == null) { - async function getCore(this: LocalGitProvider): Promise { - const merge = await this.git.rev_parse__verify(repoPath, 'MERGE_HEAD'); - if (merge == null) return undefined; - - const [branchResult, mergeBaseResult, possibleSourceBranchesResult] = await Promise.allSettled([ - this.getBranch(repoPath), - this.getMergeBase(repoPath, 'MERGE_HEAD', 'HEAD'), - this.getCommitBranches(repoPath, ['MERGE_HEAD'], undefined, { all: true, mode: 'pointsAt' }), - ]); - - const branch = getSettledValue(branchResult); - const mergeBase = getSettledValue(mergeBaseResult); - const possibleSourceBranches = getSettledValue(possibleSourceBranchesResult); - - return { - type: 'merge', - repoPath: repoPath, - mergeBase: mergeBase, - HEAD: createReference(merge, repoPath, { refType: 'revision' }), - current: getReferenceFromBranch(branch!), - incoming: - possibleSourceBranches?.length === 1 - ? createReference(possibleSourceBranches[0], repoPath, { - refType: 'branch', - name: possibleSourceBranches[0], - remote: false, - }) - : undefined, - } satisfies GitMergeStatus; - } - - status = getCore.call(this); - if (this.useCaching) { - this._mergeStatusCache.set(repoPath, status); - } - } - - return status; + getPausedOperationStatus(repoPath: string): Promise { + return getPausedOperationStatus.call( + this, + repoPath, + this.useCaching ? this._pausedOperationStatusCache : undefined, + ); } @log() - async getRebaseStatus(repoPath: string): Promise { - let status = this.useCaching ? this._rebaseStatusCache.get(repoPath) : undefined; - if (status == null) { - async function getCore(this: LocalGitProvider): Promise { - const gitDir = await this.getGitDir(repoPath); - const [rebaseMergeHeadResult, rebaseApplyHeadResult] = await Promise.allSettled([ - this.git.readDotGitFile(gitDir, ['rebase-merge', 'head-name']), - this.git.readDotGitFile(gitDir, ['rebase-apply', 'head-name']), - ]); - const rebaseMergeHead = getSettledValue(rebaseMergeHeadResult); - const rebaseApplyHead = getSettledValue(rebaseApplyHeadResult); - - let branch = rebaseApplyHead ?? rebaseMergeHead; - if (branch == null) return undefined; - - const path = rebaseApplyHead != null ? 'rebase-apply' : 'rebase-merge'; - - const [ - rebaseHeadResult, - origHeadResult, - ontoResult, - stepsNumberResult, - stepsTotalResult, - stepsMessageResult, - ] = await Promise.allSettled([ - this.git.rev_parse__verify(repoPath, 'REBASE_HEAD'), - this.git.readDotGitFile(gitDir, [path, 'orig-head']), - this.git.readDotGitFile(gitDir, [path, 'onto']), - this.git.readDotGitFile(gitDir, [path, 'msgnum'], { numeric: true }), - this.git.readDotGitFile(gitDir, [path, 'end'], { numeric: true }), - this.git - .readDotGitFile(gitDir, [path, 'message'], { throw: true }) - .catch(() => this.git.readDotGitFile(gitDir, [path, 'message-squashed'])), - ]); - - const origHead = getSettledValue(origHeadResult); - const onto = getSettledValue(ontoResult); - if (origHead == null || onto == null) return undefined; - - let mergeBase; - const rebaseHead = getSettledValue(rebaseHeadResult); - if (rebaseHead != null) { - mergeBase = await this.getMergeBase(repoPath, rebaseHead, 'HEAD'); - } else { - mergeBase = await this.getMergeBase(repoPath, onto, origHead); - } - - if (branch.startsWith('refs/heads/')) { - branch = branch.substring(11).trim(); - } - - const [branchTipsResult, tagTipsResult] = await Promise.allSettled([ - this.getCommitBranches(repoPath, [onto], undefined, { all: true, mode: 'pointsAt' }), - this.getCommitTags(repoPath, onto, { mode: 'pointsAt' }), - ]); - - const branchTips = getSettledValue(branchTipsResult); - const tagTips = getSettledValue(tagTipsResult); - - let ontoRef: GitBranchReference | GitTagReference | undefined; - if (branchTips != null) { - for (const ref of branchTips) { - if (ref.startsWith('(no branch, rebasing')) continue; - - ontoRef = createReference(ref, repoPath, { - refType: 'branch', - name: ref, - remote: false, - }); - break; - } - } - if (ontoRef == null && tagTips != null) { - for (const ref of tagTips) { - if (ref.startsWith('(no branch, rebasing')) continue; - - ontoRef = createReference(ref, repoPath, { - refType: 'tag', - name: ref, - }); - break; - } - } - - return { - type: 'rebase', - repoPath: repoPath, - mergeBase: mergeBase, - HEAD: createReference(rebaseHead ?? origHead, repoPath, { refType: 'revision' }), - onto: createReference(onto, repoPath, { refType: 'revision' }), - current: ontoRef, - incoming: createReference(branch, repoPath, { - refType: 'branch', - name: branch, - remote: false, - }), - steps: { - current: { - number: getSettledValue(stepsNumberResult) ?? 0, - commit: - rebaseHead != null - ? createReference(rebaseHead, repoPath, { - refType: 'revision', - message: getSettledValue(stepsMessageResult), - }) - : undefined, - }, - total: getSettledValue(stepsTotalResult) ?? 0, - }, - } satisfies GitRebaseStatus; - } - - status = getCore.call(this); - if (this.useCaching) { - this._rebaseStatusCache.set(repoPath, status); - } - } + abortPausedOperation(repoPath: string, options?: { quit?: boolean }): Promise { + return abortPausedOperation.call(this, repoPath, options); + } - return status; + @log() + continuePausedOperation(repoPath: string, options?: { skip?: boolean }): Promise { + return continuePausedOperation.call(this, repoPath, options); } @log() @@ -5335,11 +5192,11 @@ export class LocalGitProvider implements GitProvider, Disposable { const status = parseGitStatus(data, repoPath, porcelainVersion); if (status?.detached) { - const rebaseStatus = await this.getRebaseStatus(repoPath); - if (rebaseStatus != null) { + const pausedOpStatus = await this.getPausedOperationStatus(repoPath); + if (pausedOpStatus?.type === 'rebase') { return new GitStatus( repoPath, - rebaseStatus.incoming.name, + pausedOpStatus.incoming.name, status.sha, status.files, status.state, diff --git a/src/env/node/git/operations/pausedOperations.ts b/src/env/node/git/operations/pausedOperations.ts new file mode 100644 index 0000000000000..a4fa3290bec34 --- /dev/null +++ b/src/env/node/git/operations/pausedOperations.ts @@ -0,0 +1,446 @@ +import { readdir } from 'fs'; +import { GitErrorHandling } from '../../../../git/commandOptions'; +import { + PausedOperationAbortError, + PausedOperationAbortErrorReason, + PausedOperationContinueError, + PausedOperationContinueErrorReason, +} from '../../../../git/errors'; +import type { + GitCherryPickStatus, + GitMergeStatus, + GitPausedOperationStatus, + GitRebaseStatus, + GitRevertStatus, +} from '../../../../git/models/pausedOperationStatus'; +import type { GitBranchReference, GitTagReference } from '../../../../git/models/reference'; +import { createReference, getReferenceFromBranch } from '../../../../git/models/reference.utils'; +import { Logger } from '../../../../system/logger'; +import { getSettledValue } from '../../../../system/promise'; +import { GitErrors } from '../git'; +import type { LocalGitProvider } from '../localGitProvider'; + +export async function getPausedOperationStatus( + this: LocalGitProvider, + repoPath: string, + cache: Map> | undefined, +): Promise { + let status = cache?.get(repoPath); + if (status == null) { + async function getCore(this: LocalGitProvider): Promise { + const gitDir = await this.getGitDir(repoPath); + + type Operation = 'cherry-pick' | 'merge' | 'rebase-apply' | 'rebase-merge' | 'revert'; + const operation = await new Promise((resolve, _) => { + readdir(gitDir.uri.fsPath, { withFileTypes: true }, (err, entries) => { + if (err != null) { + resolve(undefined); + return; + } + + if (entries.length === 0) { + resolve(undefined); + return; + } + + let entry; + for (entry of entries) { + if (entry.isFile()) { + switch (entry.name) { + case 'CHERRY_PICK_HEAD': + resolve('cherry-pick'); + return; + case 'MERGE_HEAD': + resolve('merge'); + return; + case 'REVERT_HEAD': + resolve('revert'); + return; + } + } else if (entry.isDirectory()) { + switch (entry.name) { + case 'rebase-apply': + resolve('rebase-apply'); + return; + case 'rebase-merge': + resolve('rebase-merge'); + return; + } + } + } + + resolve(undefined); + }); + }); + + if (operation == null) return undefined; + + switch (operation) { + case 'cherry-pick': { + const cherryPickHead = ( + await this.git.exec( + { cwd: repoPath, errors: GitErrorHandling.Ignore }, + 'rev-parse', + '--quiet', + '--verify', + 'CHERRY_PICK_HEAD', + ) + )?.trim(); + if (!cherryPickHead) return undefined; + + const branch = (await this.getBranch(repoPath))!; + + return { + type: 'cherry-pick', + repoPath: repoPath, + // TODO: Validate that these are correct + HEAD: createReference(cherryPickHead, repoPath, { refType: 'revision' }), + current: getReferenceFromBranch(branch), + incoming: createReference(cherryPickHead, repoPath, { refType: 'revision' }), + } satisfies GitCherryPickStatus; + } + case 'merge': { + const mergeHead = ( + await this.git.exec( + { cwd: repoPath, errors: GitErrorHandling.Ignore }, + 'rev-parse', + '--quiet', + '--verify', + 'MERGE_HEAD', + ) + )?.trim(); + if (!mergeHead) return undefined; + + const [branchResult, mergeBaseResult, possibleSourceBranchesResult] = await Promise.allSettled([ + this.getBranch(repoPath), + this.getMergeBase(repoPath, 'MERGE_HEAD', 'HEAD'), + this.getCommitBranches(repoPath, ['MERGE_HEAD'], undefined, { + all: true, + mode: 'pointsAt', + }), + ]); + + const branch = getSettledValue(branchResult)!; + const mergeBase = getSettledValue(mergeBaseResult); + const possibleSourceBranches = getSettledValue(possibleSourceBranchesResult); + + return { + type: 'merge', + repoPath: repoPath, + mergeBase: mergeBase, + HEAD: createReference(mergeHead, repoPath, { refType: 'revision' }), + current: getReferenceFromBranch(branch), + incoming: + possibleSourceBranches?.length === 1 + ? createReference(possibleSourceBranches[0], repoPath, { + refType: 'branch', + name: possibleSourceBranches[0], + remote: false, + }) + : createReference(mergeHead, repoPath, { refType: 'revision' }), + } satisfies GitMergeStatus; + } + case 'revert': { + const revertHead = ( + await this.git.exec( + { cwd: repoPath, errors: GitErrorHandling.Ignore }, + 'rev-parse', + '--quiet', + '--verify', + 'REVERT_HEAD', + ) + )?.trim(); + if (!revertHead) return undefined; + + const branch = (await this.getBranch(repoPath))!; + + return { + type: 'revert', + repoPath: repoPath, + HEAD: createReference(revertHead, repoPath, { refType: 'revision' }), + current: getReferenceFromBranch(branch), + incoming: createReference(revertHead, repoPath, { refType: 'revision' }), + } satisfies GitRevertStatus; + } + case 'rebase-apply': + case 'rebase-merge': { + let branch = await this.git.readDotGitFile(gitDir, [operation, 'head-name']); + if (!branch) return undefined; + + const [ + rebaseHeadResult, + origHeadResult, + ontoResult, + stepsNumberResult, + stepsTotalResult, + stepsMessageResult, + ] = await Promise.allSettled([ + await this.git.exec( + { cwd: repoPath, errors: GitErrorHandling.Ignore }, + 'rev-parse', + '--quiet', + '--verify', + 'REBASE_HEAD', + ), + this.git.readDotGitFile(gitDir, [operation, 'orig-head']), + this.git.readDotGitFile(gitDir, [operation, 'onto']), + this.git.readDotGitFile(gitDir, [operation, 'msgnum'], { numeric: true }), + this.git.readDotGitFile(gitDir, [operation, 'end'], { numeric: true }), + this.git + .readDotGitFile(gitDir, [operation, 'message'], { throw: true }) + .catch(() => this.git.readDotGitFile(gitDir, [operation, 'message-squashed'])), + ]); + + const origHead = getSettledValue(origHeadResult); + const onto = getSettledValue(ontoResult); + if (origHead == null || onto == null) return undefined; + + let mergeBase; + const rebaseHead = getSettledValue(rebaseHeadResult); + if (rebaseHead != null) { + mergeBase = await this.getMergeBase(repoPath, rebaseHead, 'HEAD'); + } else { + mergeBase = await this.getMergeBase(repoPath, onto, origHead); + } + + if (branch.startsWith('refs/heads/')) { + branch = branch.substring(11).trim(); + } + + const [branchTipsResult, tagTipsResult] = await Promise.allSettled([ + this.getCommitBranches(repoPath, [onto], undefined, { all: true, mode: 'pointsAt' }), + this.getCommitTags(repoPath, onto, { mode: 'pointsAt' }), + ]); + + const branchTips = getSettledValue(branchTipsResult); + const tagTips = getSettledValue(tagTipsResult); + + let ontoRef: GitBranchReference | GitTagReference | undefined; + if (branchTips != null) { + for (const ref of branchTips) { + if (ref.startsWith('(no branch, rebasing')) continue; + + ontoRef = createReference(ref, repoPath, { + refType: 'branch', + name: ref, + remote: false, + }); + break; + } + } + if (ontoRef == null && tagTips != null) { + for (const ref of tagTips) { + if (ref.startsWith('(no branch, rebasing')) continue; + + ontoRef = createReference(ref, repoPath, { + refType: 'tag', + name: ref, + }); + break; + } + } + + return { + type: 'rebase', + repoPath: repoPath, + mergeBase: mergeBase, + HEAD: createReference(rebaseHead ?? origHead, repoPath, { refType: 'revision' }), + onto: createReference(onto, repoPath, { refType: 'revision' }), + current: ontoRef, + incoming: createReference(branch, repoPath, { + refType: 'branch', + name: branch, + remote: false, + }), + steps: { + current: { + number: getSettledValue(stepsNumberResult) ?? 0, + commit: + rebaseHead != null + ? createReference(rebaseHead, repoPath, { + refType: 'revision', + message: getSettledValue(stepsMessageResult), + }) + : undefined, + }, + total: getSettledValue(stepsTotalResult) ?? 0, + }, + } satisfies GitRebaseStatus; + } + } + } + + status = getCore.call(this); + if (cache != null) { + cache.set(repoPath, status); + } + } + + return status; +} + +export async function abortPausedOperation( + this: LocalGitProvider, + repoPath: string, + options?: { quit?: boolean }, +): Promise { + const status = await this.getPausedOperationStatus(repoPath); + if (status == null) return; + + try { + switch (status.type) { + case 'cherry-pick': + await this.git.exec( + { cwd: repoPath, errors: GitErrorHandling.Throw }, + 'cherry-pick', + options?.quit ? '--quit' : '--abort', + ); + break; + + case 'merge': + await this.git.exec( + { cwd: repoPath, errors: GitErrorHandling.Throw }, + 'merge', + options?.quit ? '--quit' : '--abort', + ); + break; + + case 'rebase': + await this.git.exec( + { cwd: repoPath, errors: GitErrorHandling.Throw }, + 'rebase', + options?.quit ? '--quit' : '--abort', + ); + break; + + case 'revert': + await this.git.exec( + { cwd: repoPath, errors: GitErrorHandling.Throw }, + 'revert', + options?.quit ? '--quit' : '--abort', + ); + break; + } + } catch (ex) { + debugger; + Logger.error(ex); + const msg: string = ex?.toString() ?? ''; + if (GitErrors.noPausedOperation.test(msg)) { + throw new PausedOperationAbortError( + PausedOperationAbortErrorReason.NothingToAbort, + status.type, + `Cannot abort as there is no ${status.type} operation in progress`, + ex, + ); + } + + throw new PausedOperationAbortError(undefined, status.type, `Cannot abort ${status.type}; ${msg}`, ex); + } +} + +export async function continuePausedOperation( + this: LocalGitProvider, + repoPath: string, + options?: { skip?: boolean }, +): Promise { + const status = await this.getPausedOperationStatus(repoPath); + if (status == null) return; + + try { + switch (status.type) { + case 'cherry-pick': + await this.git.exec( + { cwd: repoPath, errors: GitErrorHandling.Throw }, + 'cherry-pick', + options?.skip ? '--skip' : '--continue', + ); + break; + + case 'merge': + if (options?.skip) throw new Error('Skipping a merge is not supported'); + await this.git.exec({ cwd: repoPath, errors: GitErrorHandling.Throw }, 'merge', '--continue'); + break; + + case 'rebase': + await this.git.exec( + { cwd: repoPath, errors: GitErrorHandling.Throw }, + 'rebase', + options?.skip ? '--skip' : '--continue', + ); + break; + + case 'revert': + await this.git.exec( + { cwd: repoPath, errors: GitErrorHandling.Throw }, + 'revert', + options?.skip ? '--skip' : '--abort', + ); + break; + } + } catch (ex) { + debugger; + Logger.error(ex); + + const msg: string = ex?.toString() ?? ''; + if (GitErrors.noPausedOperation.test(msg)) { + throw new PausedOperationContinueError( + PausedOperationContinueErrorReason.NothingToContinue, + status.type, + `Cannot ${options?.skip ? 'skip' : 'continue'} as there is no ${status.type} operation in progress`, + ex, + ); + } + + if (GitErrors.uncommittedChanges.test(msg)) { + throw new PausedOperationContinueError( + PausedOperationContinueErrorReason.UncommittedChanges, + status.type, + `Cannot ${options?.skip ? 'skip' : `continue ${status.type}`} as there are uncommitted changes`, + ex, + ); + } + + if (GitErrors.unmergedFiles.test(msg)) { + throw new PausedOperationContinueError( + PausedOperationContinueErrorReason.UnmergedFiles, + status.type, + `Cannot ${options?.skip ? 'skip' : `continue ${status.type}`} as there are unmerged files`, + ex, + ); + } + + if (GitErrors.unresolvedConflicts.test(msg)) { + throw new PausedOperationContinueError( + PausedOperationContinueErrorReason.UnresolvedConflicts, + status.type, + `Cannot ${options?.skip ? 'skip' : `continue ${status.type}`} as there are unresolved conflicts`, + ex, + ); + } + + if (GitErrors.unstagedChanges.test(msg)) { + throw new PausedOperationContinueError( + PausedOperationContinueErrorReason.UnstagedChanges, + status.type, + `Cannot ${options?.skip ? 'skip' : `continue ${status.type}`} as there are unstaged changes`, + ex, + ); + } + + if (GitErrors.changesWouldBeOverwritten.test(msg)) { + throw new PausedOperationContinueError( + PausedOperationContinueErrorReason.WouldOverwrite, + status.type, + `Cannot ${options?.skip ? 'skip' : `continue ${status.type}`} as local changes would be overwritten`, + ex, + ); + } + + throw new PausedOperationContinueError( + undefined, + status.type, + `Cannot ${options?.skip ? 'skip' : `continue ${status.type}`}; ${msg}`, + ex, + ); + } +} diff --git a/src/git/errors.ts b/src/git/errors.ts index e1ef081fdfb25..e29c48b11ce8d 100644 --- a/src/git/errors.ts +++ b/src/git/errors.ts @@ -1,3 +1,5 @@ +import type { GitPausedOperation } from './models/pausedOperationStatus'; + export class GitSearchError extends Error { constructor(public readonly original: Error) { super(original.message); @@ -567,3 +569,66 @@ export class TagError extends Error { return this; } } + +export const enum PausedOperationAbortErrorReason { + NothingToAbort, +} + +export class PausedOperationAbortError extends Error { + static is(ex: unknown, reason?: PausedOperationAbortErrorReason): ex is PausedOperationAbortError { + return ex instanceof PausedOperationAbortError && (reason == null || ex.reason === reason); + } + + readonly original?: Error; + readonly reason: PausedOperationAbortErrorReason | undefined; + readonly operation: GitPausedOperation; + + constructor( + reason: PausedOperationAbortErrorReason | undefined, + operation: GitPausedOperation, + message?: string, + original?: Error, + ) { + message ||= 'Unable to abort operation'; + super(message); + + this.original = original; + this.reason = reason; + this.operation = operation; + Error.captureStackTrace?.(this, PausedOperationAbortError); + } +} + +export const enum PausedOperationContinueErrorReason { + NothingToContinue, + UnmergedFiles, + UncommittedChanges, + UnstagedChanges, + UnresolvedConflicts, + WouldOverwrite, +} + +export class PausedOperationContinueError extends Error { + static is(ex: unknown, reason?: PausedOperationContinueErrorReason): ex is PausedOperationContinueError { + return ex instanceof PausedOperationContinueError && (reason == null || ex.reason === reason); + } + + readonly original?: Error; + readonly reason: PausedOperationContinueErrorReason | undefined; + readonly operation: GitPausedOperation; + + constructor( + reason: PausedOperationContinueErrorReason | undefined, + operation: GitPausedOperation, + message?: string, + original?: Error, + ) { + message ||= 'Unable to continue operation'; + super(message); + + this.original = original; + this.reason = reason; + this.operation = operation; + Error.captureStackTrace?.(this, PausedOperationContinueError); + } +} diff --git a/src/git/gitProvider.ts b/src/git/gitProvider.ts index d8832fe92a37e..04e8f84d1e3fa 100644 --- a/src/git/gitProvider.ts +++ b/src/git/gitProvider.ts @@ -13,9 +13,8 @@ import type { GitDiff, GitDiffFile, GitDiffFiles, GitDiffFilter, GitDiffLine, Gi import type { GitFile, GitFileChange } from './models/file'; import type { GitGraph } from './models/graph'; import type { GitLog } from './models/log'; -import type { GitMergeStatus } from './models/merge'; import type { MergeConflict } from './models/mergeConflict'; -import type { GitRebaseStatus } from './models/rebase'; +import type { GitPausedOperationStatus } from './models/pausedOperationStatus'; import type { GitBranchReference, GitReference } from './models/reference'; import type { GitReflog } from './models/reflog'; import type { GitRemote } from './models/remote'; @@ -329,8 +328,6 @@ export interface GitProviderRepository { ref2: string, options?: { forkPoint?: boolean | undefined }, ): Promise; - getMergeStatus(repoPath: string): Promise; - getRebaseStatus(repoPath: string): Promise; getNextComparisonUris( repoPath: string, uri: Uri, @@ -338,6 +335,9 @@ export interface GitProviderRepository { skip?: number, ): Promise; getOldestUnpushedRefForFile(repoPath: string, uri: Uri): Promise; + getPausedOperationStatus?(repoPath: string): Promise; + abortPausedOperation?(repoPath: string, options?: { quit?: boolean }): Promise; + continuePausedOperation?(repoPath: string, options?: { skip?: boolean }): Promise; getPreviousComparisonUris( repoPath: string, uri: Uri, diff --git a/src/git/gitProviderService.ts b/src/git/gitProviderService.ts index 011cb0ff1b91a..7f72812e72b36 100644 --- a/src/git/gitProviderService.ts +++ b/src/git/gitProviderService.ts @@ -69,9 +69,8 @@ import type { GitDiff, GitDiffFile, GitDiffFiles, GitDiffFilter, GitDiffLine, Gi import type { GitFile, GitFileChange } from './models/file'; import type { GitGraph } from './models/graph'; import type { GitLog } from './models/log'; -import type { GitMergeStatus } from './models/merge'; import type { MergeConflict } from './models/mergeConflict'; -import type { GitRebaseStatus } from './models/rebase'; +import type { GitPausedOperationStatus } from './models/pausedOperationStatus'; import type { GitBranchReference, GitReference } from './models/reference'; import type { GitReflog } from './models/reflog'; import type { GitRemote } from './models/remote'; @@ -2152,20 +2151,6 @@ export class GitProviderService implements Disposable { return provider.getMergeBase(path, ref1, ref2, options); } - @gate() - @log() - async getMergeStatus(repoPath: string | Uri): Promise { - const { provider, path } = this.getProvider(repoPath); - return provider.getMergeStatus(path); - } - - @gate() - @log() - async getRebaseStatus(repoPath: string | Uri): Promise { - const { provider, path } = this.getProvider(repoPath); - return provider.getRebaseStatus(path); - } - @log() getNextComparisonUris( repoPath: string | Uri, @@ -2185,6 +2170,27 @@ export class GitProviderService implements Disposable { return provider.getOldestUnpushedRefForFile(path, uri); } + @gate() + @log() + async getPausedOperationStatus(repoPath: string | Uri): Promise { + const { provider, path } = this.getProvider(repoPath); + return provider.getPausedOperationStatus?.(path); + } + + @gate() + @log() + async abortPausedOperation(repoPath: string, options?: { quit?: boolean }): Promise { + const { provider, path } = this.getProvider(repoPath); + return provider.abortPausedOperation?.(path, options); + } + + @gate() + @log() + async continuePausedOperation(repoPath: string, options?: { skip?: boolean }): Promise { + const { provider, path } = this.getProvider(repoPath); + return provider.continuePausedOperation?.(path, options); + } + @log() getPreviousComparisonUris( repoPath: string | Uri, diff --git a/src/git/models/merge.ts b/src/git/models/merge.ts deleted file mode 100644 index 65d7907663d06..0000000000000 --- a/src/git/models/merge.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type { GitBranchReference, GitRevisionReference } from './reference'; - -export interface GitMergeStatus { - type: 'merge'; - repoPath: string; - HEAD: GitRevisionReference; - mergeBase: string | undefined; - current: GitBranchReference; - incoming: GitBranchReference | undefined; -} diff --git a/src/git/models/pausedOperationStatus.ts b/src/git/models/pausedOperationStatus.ts new file mode 100644 index 0000000000000..8b5a030635f3a --- /dev/null +++ b/src/git/models/pausedOperationStatus.ts @@ -0,0 +1,78 @@ +import type { GitBranchReference, GitRevisionReference, GitTagReference } from './reference'; + +export type GitPausedOperationStatus = GitCherryPickStatus | GitMergeStatus | GitRebaseStatus | GitRevertStatus; +export type GitPausedOperation = + | GitCherryPickStatus['type'] + | GitMergeStatus['type'] + | GitRebaseStatus['type'] + | GitRevertStatus['type']; + +export interface GitCherryPickStatus { + type: 'cherry-pick'; + repoPath: string; + HEAD: GitRevisionReference; + current: GitBranchReference; + incoming: GitRevisionReference; + + mergeBase?: never; +} + +export interface GitMergeStatus { + type: 'merge'; + repoPath: string; + HEAD: GitRevisionReference; + current: GitBranchReference; + incoming: GitBranchReference | GitRevisionReference; + + mergeBase: string | undefined; +} + +export interface GitRebaseStatus { + type: 'rebase'; + repoPath: string; + HEAD: GitRevisionReference; + current: GitBranchReference | GitTagReference | undefined; + incoming: GitBranchReference | GitRevisionReference; + + mergeBase: string | undefined; + onto: GitRevisionReference; + + steps: { + current: { number: number; commit: GitRevisionReference | undefined }; + total: number; + }; +} + +export interface GitRevertStatus { + type: 'revert'; + repoPath: string; + HEAD: GitRevisionReference; + current: GitBranchReference; + incoming: GitRevisionReference; + + mergeBase?: never; +} + +export const statusStringsByType = { + 'cherry-pick': { + label: 'Cherry picking', + conflicts: 'Resolve conflicts to continue cherry picking', + directionality: 'into', + }, + merge: { + label: 'Merging', + conflicts: 'Resolve conflicts to continue merging', + directionality: 'into', + }, + rebase: { + label: 'Rebasing', + conflicts: 'Resolve conflicts to continue rebasing', + directionality: 'onto', + pending: 'Pending rebase of', + }, + revert: { + label: 'Reverting', + conflicts: 'Resolve conflicts to continue reverting', + directionality: 'in', + }, +} as const; diff --git a/src/git/models/rebase.ts b/src/git/models/rebase.ts deleted file mode 100644 index ccb8e59bb0d01..0000000000000 --- a/src/git/models/rebase.ts +++ /dev/null @@ -1,16 +0,0 @@ -import type { GitBranchReference, GitRevisionReference, GitTagReference } from './reference'; - -export interface GitRebaseStatus { - type: 'rebase'; - repoPath: string; - HEAD: GitRevisionReference; - onto: GitRevisionReference; - mergeBase: string | undefined; - current: GitBranchReference | GitTagReference | undefined; - incoming: GitBranchReference; - - steps: { - current: { number: number; commit: GitRevisionReference | undefined }; - total: number; - }; -} diff --git a/src/git/models/repository.ts b/src/git/models/repository.ts index b93dc7eff0322..b57da0a9647d6 100644 --- a/src/git/models/repository.ts +++ b/src/git/models/repository.ts @@ -95,11 +95,12 @@ export const enum RepositoryChange { Remotes = 5, Worktrees = 6, Config = 7, - /** Union of Cherry, Merge, and Rebase */ - Status = 8, + /** Effectively a union of Cherry, Merge, Rebase, and Revert */ + PausedOperationStatus = 8, CherryPick = 9, Merge = 10, Rebase = 11, + Revert = 12, // No file watching required Closed = 100, @@ -147,16 +148,18 @@ export class RepositoryChangeEvent { if ( affected.includes(RepositoryChange.CherryPick) || affected.includes(RepositoryChange.Merge) || - affected.includes(RepositoryChange.Rebase) + affected.includes(RepositoryChange.Rebase) || + affected.includes(RepositoryChange.Revert) ) { - if (!affected.includes(RepositoryChange.Status)) { - affected.push(RepositoryChange.Status); + if (!affected.includes(RepositoryChange.PausedOperationStatus)) { + affected.push(RepositoryChange.PausedOperationStatus); } - } else if (affected.includes(RepositoryChange.Status)) { + } else if (affected.includes(RepositoryChange.PausedOperationStatus)) { changes = new Set(changes); changes.delete(RepositoryChange.CherryPick); changes.delete(RepositoryChange.Merge); changes.delete(RepositoryChange.Rebase); + changes.delete(RepositoryChange.Revert); } } @@ -486,7 +489,7 @@ export class Repository implements Disposable { const match = uri != null ? // Move worktrees first, since if it is in a worktree it isn't affecting this repo directly - /(worktrees|index|HEAD|FETCH_HEAD|ORIG_HEAD|CHERRY_PICK_HEAD|MERGE_HEAD|REBASE_HEAD|rebase-merge|config|refs\/(?:heads|remotes|stash|tags))/.exec( + /(worktrees|index|HEAD|FETCH_HEAD|ORIG_HEAD|CHERRY_PICK_HEAD|MERGE_HEAD|REBASE_HEAD|rebase-merge|REVERT_HEAD|config|refs\/(?:heads|remotes|stash|tags))/.exec( this.container.git.getRelativePath(uri, base), ) : undefined; @@ -514,16 +517,20 @@ export class Repository implements Disposable { return; case 'CHERRY_PICK_HEAD': - this.fireChange(RepositoryChange.CherryPick, RepositoryChange.Status); + this.fireChange(RepositoryChange.CherryPick, RepositoryChange.PausedOperationStatus); return; case 'MERGE_HEAD': - this.fireChange(RepositoryChange.Merge, RepositoryChange.Status); + this.fireChange(RepositoryChange.Merge, RepositoryChange.PausedOperationStatus); return; case 'REBASE_HEAD': case 'rebase-merge': - this.fireChange(RepositoryChange.Rebase, RepositoryChange.Status); + this.fireChange(RepositoryChange.Rebase, RepositoryChange.PausedOperationStatus); + return; + + case 'REVERT_HEAD': + this.fireChange(RepositoryChange.Revert, RepositoryChange.PausedOperationStatus); return; case 'refs/heads': diff --git a/src/plus/integrations/providers/github/githubGitProvider.ts b/src/plus/integrations/providers/github/githubGitProvider.ts index 097a6a02166e2..2a281e5b84035 100644 --- a/src/plus/integrations/providers/github/githubGitProvider.ts +++ b/src/plus/integrations/providers/github/githubGitProvider.ts @@ -62,8 +62,6 @@ import type { GitGraphRowTag, } from '../../../../git/models/graph'; import type { GitLog } from '../../../../git/models/log'; -import type { GitMergeStatus } from '../../../../git/models/merge'; -import type { GitRebaseStatus } from '../../../../git/models/rebase'; import type { GitReference } from '../../../../git/models/reference'; import { createReference } from '../../../../git/models/reference.utils'; import type { GitReflog } from '../../../../git/models/reflog'; @@ -695,7 +693,7 @@ export class GitHubGitProvider implements GitProvider, Disposable { debugger; // Trap and cache expected blame errors if (document.state != null && !String(ex).includes('No provider registered with')) { - const msg = ex?.toString() ?? ''; + const msg: string = ex?.toString() ?? ''; Logger.debug(scope, `Cache replace (with empty promise): '${key}'`); const value: CachedBlame = { @@ -2561,18 +2559,6 @@ export class GitHubGitProvider implements GitProvider, Disposable { } } - // @gate() - @log() - async getMergeStatus(_repoPath: string): Promise { - return undefined; - } - - // @gate() - @log() - async getRebaseStatus(_repoPath: string): Promise { - return undefined; - } - @log() async getNextComparisonUris( repoPath: string, diff --git a/src/trackers/documentTracker.ts b/src/trackers/documentTracker.ts index 1eefa40bbeecc..eac0ce1924ba4 100644 --- a/src/trackers/documentTracker.ts +++ b/src/trackers/documentTracker.ts @@ -167,7 +167,7 @@ export class GitDocumentTracker implements Disposable { e.changed( RepositoryChange.Index, RepositoryChange.Heads, - RepositoryChange.Status, + RepositoryChange.PausedOperationStatus, RepositoryChange.Unknown, RepositoryChangeComparisonMode.Any, ) diff --git a/src/views/branchesView.ts b/src/views/branchesView.ts index 9146fc9ad9ecd..7adaa363501a7 100644 --- a/src/views/branchesView.ts +++ b/src/views/branchesView.ts @@ -44,7 +44,7 @@ export class BranchesRepositoryNode extends RepositoryFolderNode range @@ -266,36 +263,20 @@ export class BranchNode const children = []; const status = getSettledValue(statusResult); - const mergeStatus = getSettledValue(mergeStatusResult); - const rebaseStatus = getSettledValue(rebaseStatusResult); + const pausedOpsStatus = getSettledValue(pausedOpStatusResult); const unpublishedCommits = getSettledValue(unpublishedCommitsResult); if (pullRequest != null) { children.push(new PullRequestNode(this.view, this, pullRequest, branch)); } - if (this.options.showStatus && mergeStatus != null) { + if (pausedOpsStatus != null) { children.push( - new MergeStatusNode( + new PausedOperationStatusNode( this.view, this, branch, - mergeStatus, - status ?? (await this.view.container.git.getStatus(this.uri.repoPath)), - this.root, - ), - ); - } else if ( - this.options.showStatus && - rebaseStatus != null && - (branch.current || branch.name === rebaseStatus.incoming.name) - ) { - children.push( - new RebaseStatusNode( - this.view, - this, - branch, - rebaseStatus, + pausedOpsStatus, status ?? (await this.view.container.git.getStatus(this.uri.repoPath)), this.root, ), diff --git a/src/views/nodes/fileHistoryNode.ts b/src/views/nodes/fileHistoryNode.ts index 89ebad6d8cafa..2309cf690aab6 100644 --- a/src/views/nodes/fileHistoryNode.ts +++ b/src/views/nodes/fileHistoryNode.ts @@ -213,7 +213,7 @@ export class FileHistoryNode RepositoryChange.Heads, RepositoryChange.Remotes, RepositoryChange.RemoteProviders, - RepositoryChange.Status, + RepositoryChange.PausedOperationStatus, RepositoryChange.Unknown, RepositoryChangeComparisonMode.Any, ) diff --git a/src/views/nodes/fileRevisionAsCommitNode.ts b/src/views/nodes/fileRevisionAsCommitNode.ts index 1b17d09f9cc96..9774e669bc060 100644 --- a/src/views/nodes/fileRevisionAsCommitNode.ts +++ b/src/views/nodes/fileRevisionAsCommitNode.ts @@ -59,18 +59,12 @@ export class FileRevisionAsCommitNode extends ViewRefFileNode< async getChildren(): Promise { if (!this.commit.file?.hasConflicts) return []; - const [mergeStatusResult, rebaseStatusResult] = await Promise.allSettled([ - this.view.container.git.getMergeStatus(this.commit.repoPath), - this.view.container.git.getRebaseStatus(this.commit.repoPath), - ]); - - const mergeStatus = getSettledValue(mergeStatusResult); - const rebaseStatus = getSettledValue(rebaseStatusResult); - if (mergeStatus == null && rebaseStatus == null) return []; + const pausedOpStatus = await this.view.container.git.getPausedOperationStatus(this.commit.repoPath); + if (pausedOpStatus == null) return []; return [ - new MergeConflictCurrentChangesNode(this.view, this, (mergeStatus ?? rebaseStatus)!, this.file), - new MergeConflictIncomingChangesNode(this.view, this, (mergeStatus ?? rebaseStatus)!, this.file), + new MergeConflictCurrentChangesNode(this.view, this, pausedOpStatus, this.file), + new MergeConflictIncomingChangesNode(this.view, this, pausedOpStatus, this.file), ]; } diff --git a/src/views/nodes/lineHistoryNode.ts b/src/views/nodes/lineHistoryNode.ts index 20ecf32d6f2f0..011ff31d91f7e 100644 --- a/src/views/nodes/lineHistoryNode.ts +++ b/src/views/nodes/lineHistoryNode.ts @@ -217,7 +217,7 @@ export class LineHistoryNode RepositoryChange.Heads, RepositoryChange.Remotes, RepositoryChange.RemoteProviders, - RepositoryChange.Status, + RepositoryChange.PausedOperationStatus, RepositoryChange.Unknown, RepositoryChangeComparisonMode.Any, ) diff --git a/src/views/nodes/mergeConflictCurrentChangesNode.ts b/src/views/nodes/mergeConflictCurrentChangesNode.ts index 1192838c9a3f1..4bc5a33b5ff73 100644 --- a/src/views/nodes/mergeConflictCurrentChangesNode.ts +++ b/src/views/nodes/mergeConflictCurrentChangesNode.ts @@ -6,8 +6,7 @@ import { GlCommand } from '../../constants.commands'; import { GitUri } from '../../git/gitUri'; import type { GitCommit } from '../../git/models/commit'; import type { GitFile } from '../../git/models/file'; -import type { GitMergeStatus } from '../../git/models/merge'; -import type { GitRebaseStatus } from '../../git/models/rebase'; +import type { GitPausedOperationStatus } from '../../git/models/pausedOperationStatus'; import { getReferenceLabel } from '../../git/models/reference.utils'; import { createCommand, createCoreCommand } from '../../system/vscode/command'; import { configuration } from '../../system/vscode/configuration'; @@ -24,7 +23,7 @@ export class MergeConflictCurrentChangesNode extends ViewNode< constructor( view: ViewsWithCommits | FileHistoryView | LineHistoryView, protected override readonly parent: ViewNode, - private readonly status: GitMergeStatus | GitRebaseStatus, + private readonly status: GitPausedOperationStatus, private readonly file: GitFile, ) { super('conflict-current-changes', GitUri.fromFile(file, status.repoPath, 'HEAD'), view, parent); diff --git a/src/views/nodes/mergeConflictFileNode.ts b/src/views/nodes/mergeConflictFileNode.ts index 3951d97a8bdd0..a818a86c13dd3 100644 --- a/src/views/nodes/mergeConflictFileNode.ts +++ b/src/views/nodes/mergeConflictFileNode.ts @@ -3,8 +3,7 @@ import { ThemeIcon, TreeItem, TreeItemCollapsibleState } from 'vscode'; import { StatusFileFormatter } from '../../git/formatters/statusFormatter'; import { GitUri } from '../../git/gitUri'; import type { GitFile } from '../../git/models/file'; -import type { GitMergeStatus } from '../../git/models/merge'; -import type { GitRebaseStatus } from '../../git/models/rebase'; +import type { GitPausedOperationStatus } from '../../git/models/pausedOperationStatus'; import { createCoreCommand } from '../../system/vscode/command'; import { relativeDir } from '../../system/vscode/path'; import type { ViewsWithCommits } from '../viewBase'; @@ -20,7 +19,7 @@ export class MergeConflictFileNode extends ViewFileNode<'conflict-file', ViewsWi view: ViewsWithCommits, parent: ViewNode, file: GitFile, - public readonly status: GitMergeStatus | GitRebaseStatus, + public readonly status: GitPausedOperationStatus, ) { super('conflict-file', GitUri.fromFile(file, status.repoPath, status.HEAD.ref), view, parent, file); } diff --git a/src/views/nodes/mergeConflictFilesNode.ts b/src/views/nodes/mergeConflictFilesNode.ts index f603bbc9a642f..480712f342470 100644 --- a/src/views/nodes/mergeConflictFilesNode.ts +++ b/src/views/nodes/mergeConflictFilesNode.ts @@ -1,7 +1,6 @@ import { TreeItem, TreeItemCollapsibleState } from 'vscode'; import { GitUri } from '../../git/gitUri'; -import type { GitMergeStatus } from '../../git/models/merge'; -import type { GitRebaseStatus } from '../../git/models/rebase'; +import type { GitPausedOperationStatus } from '../../git/models/pausedOperationStatus'; import type { GitStatusFile } from '../../git/models/status'; import { makeHierarchical } from '../../system/array'; import { joinPaths, normalizePath } from '../../system/path'; @@ -16,7 +15,7 @@ export class MergeConflictFilesNode extends ViewNode<'conflict-files', ViewsWith constructor( view: ViewsWithCommits, protected override readonly parent: ViewNode, - private readonly status: GitMergeStatus | GitRebaseStatus, + private readonly status: GitPausedOperationStatus, private readonly conflicts: GitStatusFile[], ) { super('conflict-files', GitUri.fromRepoPath(status.repoPath), view, parent); diff --git a/src/views/nodes/mergeConflictIncomingChangesNode.ts b/src/views/nodes/mergeConflictIncomingChangesNode.ts index 4f221f0a01df7..8f9c4d7cc2d06 100644 --- a/src/views/nodes/mergeConflictIncomingChangesNode.ts +++ b/src/views/nodes/mergeConflictIncomingChangesNode.ts @@ -6,8 +6,7 @@ import { GlCommand } from '../../constants.commands'; import { GitUri } from '../../git/gitUri'; import type { GitCommit } from '../../git/models/commit'; import type { GitFile } from '../../git/models/file'; -import type { GitMergeStatus } from '../../git/models/merge'; -import type { GitRebaseStatus } from '../../git/models/rebase'; +import type { GitPausedOperationStatus } from '../../git/models/pausedOperationStatus'; import { getReferenceLabel } from '../../git/models/reference.utils'; import { createCommand, createCoreCommand } from '../../system/vscode/command'; import { configuration } from '../../system/vscode/configuration'; @@ -24,7 +23,7 @@ export class MergeConflictIncomingChangesNode extends ViewNode< constructor( view: ViewsWithCommits | FileHistoryView | LineHistoryView, protected override readonly parent: ViewNode, - private readonly status: GitMergeStatus | GitRebaseStatus, + private readonly status: GitPausedOperationStatus, private readonly file: GitFile, ) { super('conflict-incoming-changes', GitUri.fromFile(file, status.repoPath, status.HEAD.ref), view, parent); diff --git a/src/views/nodes/mergeStatusNode.ts b/src/views/nodes/mergeStatusNode.ts deleted file mode 100644 index 25199684b0bc7..0000000000000 --- a/src/views/nodes/mergeStatusNode.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { MarkdownString, ThemeColor, ThemeIcon, TreeItem, TreeItemCollapsibleState } from 'vscode'; -import type { Colors } from '../../constants.colors'; -import { GitUri } from '../../git/gitUri'; -import type { GitBranch } from '../../git/models/branch'; -import type { GitMergeStatus } from '../../git/models/merge'; -import { getReferenceLabel } from '../../git/models/reference.utils'; -import type { GitStatus } from '../../git/models/status'; -import { pluralize } from '../../system/string'; -import type { ViewsWithCommits } from '../viewBase'; -import { createViewDecorationUri } from '../viewDecorationProvider'; -import { ContextValues, getViewNodeId, ViewNode } from './abstract/viewNode'; -import { MergeConflictFilesNode } from './mergeConflictFilesNode'; - -export class MergeStatusNode extends ViewNode<'merge-status', ViewsWithCommits> { - constructor( - view: ViewsWithCommits, - protected override readonly parent: ViewNode, - public readonly branch: GitBranch, - public readonly mergeStatus: GitMergeStatus, - public readonly status: GitStatus | undefined, - // Specifies that the node is shown as a root - public readonly root: boolean, - ) { - super('merge-status', GitUri.fromRepoPath(mergeStatus.repoPath), view, parent); - - this.updateContext({ branch: branch, root: root, status: 'merging' }); - this._uniqueId = getViewNodeId(this.type, this.context); - } - - get repoPath(): string { - return this.uri.repoPath!; - } - - getChildren(): ViewNode[] { - return this.status?.hasConflicts - ? [new MergeConflictFilesNode(this.view, this, this.mergeStatus, this.status.conflicts)] - : []; - } - - getTreeItem(): TreeItem { - const hasConflicts = this.status?.hasConflicts === true; - const item = new TreeItem( - `${hasConflicts ? 'Resolve conflicts before merging' : 'Merging'} ${ - this.mergeStatus.incoming != null - ? `${getReferenceLabel(this.mergeStatus.incoming, { expand: false, icon: false })} ` - : '' - }into ${getReferenceLabel(this.mergeStatus.current, { expand: false, icon: false })}`, - hasConflicts ? TreeItemCollapsibleState.Expanded : TreeItemCollapsibleState.None, - ); - item.id = this.id; - item.contextValue = ContextValues.Merge; - item.description = hasConflicts ? pluralize('conflict', this.status.conflicts.length) : undefined; - item.iconPath = hasConflicts - ? new ThemeIcon( - 'warning', - new ThemeColor( - 'gitlens.decorations.statusMergingOrRebasingConflictForegroundColor' satisfies Colors, - ), - ) - : new ThemeIcon( - 'warning', - new ThemeColor('gitlens.decorations.statusMergingOrRebasingForegroundColor' satisfies Colors), - ); - - const markdown = new MarkdownString( - `Merging ${ - this.mergeStatus.incoming != null ? getReferenceLabel(this.mergeStatus.incoming, { label: false }) : '' - }into ${getReferenceLabel(this.mergeStatus.current, { label: false })}${ - hasConflicts - ? `\n\nResolve ${pluralize('conflict', this.status.conflicts.length)} before continuing` - : '' - }`, - true, - ); - markdown.supportHtml = true; - markdown.isTrusted = true; - item.tooltip = markdown; - item.resourceUri = createViewDecorationUri('status', { status: 'merging', conflicts: hasConflicts }); - - return item; - } -} diff --git a/src/views/nodes/pausedOperationStatusNode.ts b/src/views/nodes/pausedOperationStatusNode.ts new file mode 100644 index 0000000000000..10ab3091369c4 --- /dev/null +++ b/src/views/nodes/pausedOperationStatusNode.ts @@ -0,0 +1,184 @@ +import { MarkdownString, ThemeColor, ThemeIcon, TreeItem, TreeItemCollapsibleState, Uri } from 'vscode'; +import type { Colors } from '../../constants.colors'; +import { GitUri } from '../../git/gitUri'; +import type { GitBranch } from '../../git/models/branch'; +import type { GitPausedOperationStatus } from '../../git/models/pausedOperationStatus'; +import { statusStringsByType } from '../../git/models/pausedOperationStatus'; +import { getReferenceLabel } from '../../git/models/reference.utils'; +import type { GitStatus } from '../../git/models/status'; +import { pluralize } from '../../system/string'; +import { executeCoreCommand } from '../../system/vscode/command'; +import type { ViewsWithCommits } from '../viewBase'; +import { createViewDecorationUri } from '../viewDecorationProvider'; +import { ContextValues, getViewNodeId, ViewNode } from './abstract/viewNode'; +import { MergeConflictFilesNode } from './mergeConflictFilesNode'; +import { RebaseCommitNode } from './rebaseCommitNode'; + +export class PausedOperationStatusNode extends ViewNode<'paused-operation-status', ViewsWithCommits> { + constructor( + view: ViewsWithCommits, + protected override readonly parent: ViewNode, + public readonly branch: GitBranch, + public readonly pausedOpStatus: GitPausedOperationStatus, + public readonly status: GitStatus | undefined, + // Specifies that the node is shown as a root + public readonly root: boolean, + ) { + super('paused-operation-status', GitUri.fromRepoPath(pausedOpStatus.repoPath), view, parent); + + this.updateContext({ branch: branch, root: root, pausedOperation: pausedOpStatus.type }); + this._uniqueId = getViewNodeId(this.type, this.context); + } + + get repoPath(): string { + return this.uri.repoPath!; + } + + async getChildren(): Promise { + if (this.pausedOpStatus.type !== 'rebase') { + return this.status?.hasConflicts + ? [new MergeConflictFilesNode(this.view, this, this.pausedOpStatus, this.status.conflicts)] + : []; + } + + const children: (MergeConflictFilesNode | RebaseCommitNode)[] = []; + + const revision = this.pausedOpStatus.steps.current.commit; + if (revision != null) { + const commit = + revision != null + ? await this.view.container.git.getCommit(this.pausedOpStatus.repoPath, revision.ref) + : undefined; + if (commit != null) { + children.push(new RebaseCommitNode(this.view, this, commit)); + } + } + + if (this.status?.hasConflicts) { + children.push(new MergeConflictFilesNode(this.view, this, this.pausedOpStatus, this.status.conflicts)); + } + + return children; + } + + getTreeItem(): TreeItem { + const hasConflicts = this.status?.hasConflicts === true; + const hasChildren = + this.status?.hasConflicts || + (this.pausedOpStatus.type === 'rebase' && + this.pausedOpStatus.steps.total > 0 && + this.pausedOpStatus.steps.current.commit != null); + + const item = new TreeItem( + this.label, + hasChildren ? TreeItemCollapsibleState.Expanded : TreeItemCollapsibleState.None, + ); + item.id = this.id; + + switch (this.pausedOpStatus.type) { + case 'cherry-pick': + item.contextValue = ContextValues.PausedOperationCherryPick; + break; + case 'merge': + item.contextValue = ContextValues.PausedOperationMerge; + break; + case 'rebase': + item.contextValue = ContextValues.PausedOperationRebase; + break; + case 'revert': + item.contextValue = ContextValues.PausedOperationRevert; + break; + } + + item.description = hasConflicts ? pluralize('conflict', this.status.conflicts.length) : undefined; + + const iconColor: Colors = hasConflicts + ? 'gitlens.decorations.statusMergingOrRebasingConflictForegroundColor' + : 'gitlens.decorations.statusMergingOrRebasingForegroundColor'; + item.iconPath = new ThemeIcon('warning', new ThemeColor(iconColor)); + + item.tooltip = this.tooltip; + item.resourceUri = createViewDecorationUri('status', { + status: this.pausedOpStatus.type, + conflicts: hasConflicts, + }); + + return item; + } + + private get label(): string { + const hasConflicts = this.status?.hasConflicts === true; + + if (this.pausedOpStatus.type !== 'rebase') { + const strings = statusStringsByType[this.pausedOpStatus.type]; + return `${hasConflicts ? strings.conflicts : strings.label} ${getReferenceLabel( + this.pausedOpStatus.incoming, + { + expand: false, + icon: false, + }, + )} ${strings.directionality} ${getReferenceLabel(this.pausedOpStatus.current, { + expand: false, + icon: false, + })}`; + } + + const started = this.pausedOpStatus.steps.total > 0; + const strings = statusStringsByType[this.pausedOpStatus.type]; + return `${hasConflicts ? strings.conflicts : started ? strings.label : strings.pending} ${getReferenceLabel( + this.pausedOpStatus.incoming, + { expand: false, icon: false }, + )} ${strings.directionality} ${getReferenceLabel(this.pausedOpStatus.current ?? this.pausedOpStatus.onto, { + expand: false, + icon: false, + })}${started ? ` (${this.pausedOpStatus.steps.current.number}/${this.pausedOpStatus.steps.total})` : ''}`; + } + + private get tooltip(): MarkdownString { + const hasConflicts = this.status?.hasConflicts === true; + + let tooltip; + if (this.pausedOpStatus.type !== 'rebase') { + const strings = statusStringsByType[this.pausedOpStatus.type]; + tooltip = `${strings.label} ${getReferenceLabel(this.pausedOpStatus.incoming, { label: false })} ${ + strings.directionality + } ${getReferenceLabel(this.pausedOpStatus.current, { label: false })}${ + hasConflicts + ? `\n\nResolve ${pluralize('conflict', this.status.conflicts.length)} before continuing` + : '' + }`; + } else { + const started = this.pausedOpStatus.steps.total > 0; + const strings = statusStringsByType[this.pausedOpStatus.type]; + tooltip = `${started ? strings.label : strings.pending} ${getReferenceLabel(this.pausedOpStatus.incoming, { + label: false, + })} ${strings.directionality} ${getReferenceLabel(this.pausedOpStatus.current ?? this.pausedOpStatus.onto, { + label: false, + })}${ + started + ? `\n\nPaused at step ${this.pausedOpStatus.steps.current.number} of ${ + this.pausedOpStatus.steps.total + }${ + hasConflicts + ? `\\\nResolve ${pluralize('conflict', this.status.conflicts.length)} before continuing` + : '' + }` + : '' + }`; + } + + const markdown = new MarkdownString(tooltip, true); + markdown.supportHtml = true; + markdown.isTrusted = true; + return markdown; + } + + async openRebaseEditor() { + if (this.pausedOpStatus.type !== 'rebase') return; + + const rebaseTodoUri = Uri.joinPath(this.uri, '.git', 'rebase-merge', 'git-rebase-todo'); + await executeCoreCommand('vscode.openWith', rebaseTodoUri, 'gitlens.rebase', { + preview: false, + }); + } +} diff --git a/src/views/nodes/rebaseStatusNode.ts b/src/views/nodes/rebaseStatusNode.ts deleted file mode 100644 index 8ee4c3e18534b..0000000000000 --- a/src/views/nodes/rebaseStatusNode.ts +++ /dev/null @@ -1,120 +0,0 @@ -import { MarkdownString, ThemeColor, ThemeIcon, TreeItem, TreeItemCollapsibleState, Uri } from 'vscode'; -import type { Colors } from '../../constants.colors'; -import { GitUri } from '../../git/gitUri'; -import type { GitBranch } from '../../git/models/branch'; -import type { GitRebaseStatus } from '../../git/models/rebase'; -import { getReferenceLabel } from '../../git/models/reference.utils'; -import type { GitStatus } from '../../git/models/status'; -import { pluralize } from '../../system/string'; -import { executeCoreCommand } from '../../system/vscode/command'; -import type { ViewsWithCommits } from '../viewBase'; -import { createViewDecorationUri } from '../viewDecorationProvider'; -import { ContextValues, getViewNodeId, ViewNode } from './abstract/viewNode'; -import { MergeConflictFilesNode } from './mergeConflictFilesNode'; -import { RebaseCommitNode } from './rebaseCommitNode'; - -export class RebaseStatusNode extends ViewNode<'rebase-status', ViewsWithCommits> { - constructor( - view: ViewsWithCommits, - protected override readonly parent: ViewNode, - public readonly branch: GitBranch, - public readonly rebaseStatus: GitRebaseStatus, - public readonly status: GitStatus | undefined, - // Specifies that the node is shown as a root - public readonly root: boolean, - ) { - super('rebase-status', GitUri.fromRepoPath(rebaseStatus.repoPath), view, parent); - - this.updateContext({ branch: branch, root: root, status: 'rebasing' }); - this._uniqueId = getViewNodeId(this.type, this.context); - } - - get repoPath(): string { - return this.uri.repoPath!; - } - - async getChildren(): Promise { - const children: (MergeConflictFilesNode | RebaseCommitNode)[] = []; - - const revision = this.rebaseStatus.steps.current.commit; - if (revision != null) { - const commit = - revision != null - ? await this.view.container.git.getCommit(this.rebaseStatus.repoPath, revision.ref) - : undefined; - if (commit != null) { - children.push(new RebaseCommitNode(this.view, this, commit)); - } - } - - if (this.status?.hasConflicts) { - children.push(new MergeConflictFilesNode(this.view, this, this.rebaseStatus, this.status.conflicts)); - } - - return children; - } - - getTreeItem(): TreeItem { - const started = this.rebaseStatus.steps.total > 0; - const pausedAtCommit = started && this.rebaseStatus.steps.current.commit != null; - const hasConflicts = this.status?.hasConflicts === true; - - const item = new TreeItem( - `${hasConflicts ? 'Resolve conflicts to continue rebasing' : started ? 'Rebasing' : 'Pending rebase of'} ${ - this.rebaseStatus.incoming != null - ? getReferenceLabel(this.rebaseStatus.incoming, { expand: false, icon: false }) - : '' - } onto ${getReferenceLabel(this.rebaseStatus.current ?? this.rebaseStatus.onto, { - expand: false, - icon: false, - })}${started ? ` (${this.rebaseStatus.steps.current.number}/${this.rebaseStatus.steps.total})` : ''}`, - pausedAtCommit ? TreeItemCollapsibleState.Expanded : TreeItemCollapsibleState.None, - ); - item.id = this.id; - item.contextValue = ContextValues.Rebase; - item.description = hasConflicts ? pluralize('conflict', this.status.conflicts.length) : undefined; - item.iconPath = hasConflicts - ? new ThemeIcon( - 'warning', - new ThemeColor( - 'gitlens.decorations.statusMergingOrRebasingConflictForegroundColor' satisfies Colors, - ), - ) - : new ThemeIcon( - 'warning', - new ThemeColor('gitlens.decorations.statusMergingOrRebasingForegroundColor' satisfies Colors), - ); - - const markdown = new MarkdownString( - `${started ? 'Rebasing' : 'Pending rebase of'} ${ - this.rebaseStatus.incoming != null - ? getReferenceLabel(this.rebaseStatus.incoming, { label: false }) - : '' - } onto ${getReferenceLabel(this.rebaseStatus.current ?? this.rebaseStatus.onto, { label: false })}${ - started - ? `\n\nPaused at step ${this.rebaseStatus.steps.current.number} of ${ - this.rebaseStatus.steps.total - }${ - hasConflicts - ? `\\\nResolve ${pluralize('conflict', this.status.conflicts.length)} before continuing` - : '' - }` - : '' - }`, - true, - ); - markdown.supportHtml = true; - markdown.isTrusted = true; - item.tooltip = markdown; - item.resourceUri = createViewDecorationUri('status', { status: 'rebasing', conflicts: hasConflicts }); - - return item; - } - - async openEditor() { - const rebaseTodoUri = Uri.joinPath(this.uri, '.git', 'rebase-merge', 'git-rebase-todo'); - await executeCoreCommand('vscode.openWith', rebaseTodoUri, 'gitlens.rebase', { - preview: false, - }); - } -} diff --git a/src/views/nodes/repositoryNode.ts b/src/views/nodes/repositoryNode.ts index f39ef067c8b99..f59c58efbf51f 100644 --- a/src/views/nodes/repositoryNode.ts +++ b/src/views/nodes/repositoryNode.ts @@ -31,8 +31,7 @@ import { BranchTrackingStatusNode } from './branchTrackingStatusNode'; import { MessageNode } from './common'; import { CompareBranchNode } from './compareBranchNode'; import { ContributorsNode } from './contributorsNode'; -import { MergeStatusNode } from './mergeStatusNode'; -import { RebaseStatusNode } from './rebaseStatusNode'; +import { PausedOperationStatusNode } from './pausedOperationStatusNode'; import { ReflogNode } from './reflogNode'; import { RemotesNode } from './remotesNode'; import { StashesNode } from './stashesNode'; @@ -99,15 +98,9 @@ export class RepositoryNode extends SubscribeableViewNode<'repository', ViewsWit status.rebasing, ); - const [mergeStatus, rebaseStatus] = await Promise.all([ - this.view.container.git.getMergeStatus(status.repoPath), - this.view.container.git.getRebaseStatus(status.repoPath), - ]); - - if (mergeStatus != null) { - children.push(new MergeStatusNode(this.view, this, branch, mergeStatus, status, true)); - } else if (rebaseStatus != null) { - children.push(new RebaseStatusNode(this.view, this, branch, rebaseStatus, status, true)); + const pausedOpStatus = await this.view.container.git.getPausedOperationStatus(status.repoPath); + if (pausedOpStatus != null) { + children.push(new PausedOperationStatusNode(this.view, this, branch, pausedOpStatus, status, true)); } else if (this.view.config.showUpstreamStatus) { if (status.upstream) { if (!status.state.behind && !status.state.ahead) { @@ -453,7 +446,7 @@ export class RepositoryNode extends SubscribeableViewNode<'repository', ViewsWit RepositoryChange.Index, RepositoryChange.Heads, RepositoryChange.Opened, - RepositoryChange.Status, + RepositoryChange.PausedOperationStatus, RepositoryChange.Unknown, RepositoryChangeComparisonMode.Any, ) diff --git a/src/views/viewDecorationProvider.ts b/src/views/viewDecorationProvider.ts index 2da95cff40d1b..06c5cf847d229 100644 --- a/src/views/viewDecorationProvider.ts +++ b/src/views/viewDecorationProvider.ts @@ -5,6 +5,7 @@ import { GlyphChars, Schemes } from '../constants'; import type { Colors } from '../constants.colors'; import type { GitBranchStatus } from '../git/models/branch'; import type { GitFileStatus } from '../git/models/file'; +import type { GitPausedOperation } from '../git/models/pausedOperationStatus'; export class ViewFileDecorationProvider implements FileDecorationProvider, Disposable { private readonly _onDidChange = new EventEmitter(); @@ -223,7 +224,7 @@ function getRemoteDecoration(uri: Uri, _token: CancellationToken): FileDecoratio } interface StatusViewDecoration { - status: 'merging' | 'rebasing'; + status: GitPausedOperation; conflicts?: boolean; } @@ -231,8 +232,10 @@ function getStatusDecoration(uri: Uri, _token: CancellationToken): FileDecoratio const state = getViewDecoration<'status'>(uri); switch (state?.status) { - case 'rebasing': - case 'merging': + case 'cherry-pick': + case 'merge': + case 'rebase': + case 'revert': if (state?.conflicts) { return { badge: '!', diff --git a/src/views/worktreesView.ts b/src/views/worktreesView.ts index 02cc2d8fa77a0..8d52ea4b63ea9 100644 --- a/src/views/worktreesView.ts +++ b/src/views/worktreesView.ts @@ -42,7 +42,7 @@ export class WorktreesRepositoryNode extends RepositoryFolderNode`; } diff --git a/src/webviews/apps/plus/home/components/branch-card.ts b/src/webviews/apps/plus/home/components/branch-card.ts index 052bf00a5881e..65daf567c27df 100644 --- a/src/webviews/apps/plus/home/components/branch-card.ts +++ b/src/webviews/apps/plus/home/components/branch-card.ts @@ -407,11 +407,18 @@ export abstract class GlBranchCardBase extends GlElement { get branchCardIndicator() { if (!this.branch.opened) return undefined; - const isMerging = this.wip?.mergeStatus != null; - const isRebasing = this.wip?.rebaseStatus != null; - if (isMerging || isRebasing) { + if (this.wip?.pausedOpStatus != null) { if (this.wip?.hasConflicts) return 'conflict'; - return isMerging ? 'merging' : 'rebasing'; + switch (this.wip.pausedOpStatus.type) { + case 'cherry-pick': + return 'cherry-picking'; + case 'merge': + return 'merging'; + case 'rebase': + return 'rebasing'; + case 'revert': + return 'reverting'; + } } const hasWip = diff --git a/src/webviews/apps/plus/home/components/merge-rebase-status.ts b/src/webviews/apps/plus/home/components/merge-rebase-status.ts index 728ee56943789..cf7b88abd28c8 100644 --- a/src/webviews/apps/plus/home/components/merge-rebase-status.ts +++ b/src/webviews/apps/plus/home/components/merge-rebase-status.ts @@ -1,8 +1,7 @@ import { css, html, LitElement, nothing } from 'lit'; import { customElement, property } from 'lit/decorators.js'; -import { when } from 'lit/directives/when.js'; -import type { GitMergeStatus } from '../../../../../git/models/merge'; -import type { GitRebaseStatus } from '../../../../../git/models/rebase'; +import type { GitPausedOperationStatus } from '../../../../../git/models/pausedOperationStatus'; +import { statusStringsByType } from '../../../../../git/models/pausedOperationStatus'; import { getReferenceLabel } from '../../../shared/git-utils'; import '../../../shared/components/overlays/tooltip'; @@ -52,44 +51,50 @@ export class GlMergeConflictWarning extends LitElement { conflicts = false; @property({ type: Object }) - merge?: GitMergeStatus; - - @property({ type: Object }) - rebase?: GitRebaseStatus; + pausedOpStatus?: GitPausedOperationStatus; override render() { - if (this.merge == null && this.rebase == null) return nothing; + if (this.pausedOpStatus == null) return nothing; return html` - ${when( - this.merge != null, - () => this.renderMerge(), - () => this.renderRebase(), - )} + ${this.renderStatus(this.pausedOpStatus)} `; } - private renderMerge() { - return html`${this.conflicts ? 'Resolve conflicts before merging' : 'Merging'} into - ${getReferenceLabel(this.merge!.current, { expand: false, icon: false })}`; - } + private renderStatus(pausedOpStatus: GitPausedOperationStatus) { + if (pausedOpStatus.type !== 'rebase') { + const strings = statusStringsByType[pausedOpStatus.type]; + return html`${this.conflicts ? strings.conflicts : strings.label} + + ${getReferenceLabel(pausedOpStatus.incoming, { expand: false, icon: false })} ${strings.directionality} + ${getReferenceLabel(pausedOpStatus.current, { expand: false, icon: false })}`; + } - private renderRebase() { - const started = this.rebase!.steps.total > 0; + const started = pausedOpStatus.steps.total > 0; + const strings = statusStringsByType[pausedOpStatus.type]; return html`${this.conflicts ? 'Resolve conflicts to continue rebasing' : started ? 'Rebasing' : 'Pending rebase'} - onto - ${getReferenceLabel(this.rebase!.current ?? this.rebase!.onto, { + >${this.conflicts ? strings.conflicts : started ? strings.label : strings.pending} + + ${getReferenceLabel(pausedOpStatus.incoming, { expand: false, icon: false })} ${strings.directionality} + ${getReferenceLabel(pausedOpStatus.current ?? pausedOpStatus.onto, { expand: false, icon: false, })}${started - ? html`(${this.rebase!.steps.current.number}/${this.rebase!.steps.total})` + ? html`(${pausedOpStatus.steps.current.number}/${pausedOpStatus.steps.total})` : nothing}`; } } diff --git a/src/webviews/apps/shared/components/card/card.css.ts b/src/webviews/apps/shared/components/card/card.css.ts index 6705a36ba3dfb..acce55851f705 100644 --- a/src/webviews/apps/shared/components/card/card.css.ts +++ b/src/webviews/apps/shared/components/card/card.css.ts @@ -35,8 +35,10 @@ export const cardStyles = css` border-inline-start-color: var(--gl-card-indicator-border, var(--vscode-gitDecoration-addedResourceForeground)); } + .card.is-cherry-picking, + .card.is-merging, .card.is-rebasing, - .card.is-merging { + .card.is-reverting { border-inline-start-color: var( --gl-card-indicator-border, var(--vscode-gitlens-decorations\\.statusMergingOrRebasingForegroundColor) diff --git a/src/webviews/apps/shared/components/card/card.ts b/src/webviews/apps/shared/components/card/card.ts index ea0b550b4eb5a..4d1efb179dc25 100644 --- a/src/webviews/apps/shared/components/card/card.ts +++ b/src/webviews/apps/shared/components/card/card.ts @@ -18,8 +18,10 @@ export class GlCard extends LitElement { indicator?: | 'base' | 'active' + | 'cherry-picking' | 'merging' | 'rebasing' + | 'reverting' | 'conflict' | 'issue-open' | 'issue-closed' diff --git a/src/webviews/home/homeWebview.ts b/src/webviews/home/homeWebview.ts index 635307b9195e3..5769b73654fb1 100644 --- a/src/webviews/home/homeWebview.ts +++ b/src/webviews/home/homeWebview.ts @@ -754,7 +754,7 @@ export class HomeWebviewProvider implements WebviewProvider; diff --git a/src/webviews/plus/graph/graphWebview.ts b/src/webviews/plus/graph/graphWebview.ts index 858e96002fb7d..b9aa0fba2c529 100644 --- a/src/webviews/plus/graph/graphWebview.ts +++ b/src/webviews/plus/graph/graphWebview.ts @@ -948,7 +948,7 @@ export class GraphWebviewProvider implements WebviewProvider Date: Tue, 7 Jan 2025 19:01:21 -0500 Subject: [PATCH 03/11] Splits git utils into webview safe vs vscode only Moves paused operation status strings into utils --- src/autolinks/autolinks.ts | 2 +- src/commands/quickCommand.steps.ts | 4 ++-- src/env/node/git/localGitProvider.ts | 6 ++--- src/git/formatters/commitFormatter.ts | 2 +- src/git/gitProvider.ts | 2 +- src/git/gitProviderService.ts | 4 ++-- src/git/models/pausedOperationStatus.ts | 24 ------------------- src/git/models/worktree.quickpick.ts | 2 +- src/git/remotes/github.ts | 2 +- src/git/remotes/gitlab.ts | 2 +- src/git/utils/pausedOperationStatus.utils.ts | 23 ++++++++++++++++++ src/git/utils/{ => vscode}/icons.ts | 22 ++++++++--------- src/git/utils/{ => vscode}/sorting.ts | 24 +++++++++---------- .../providers/github/githubGitProvider.ts | 6 ++--- src/quickpicks/contributorsPicker.ts | 2 +- src/quickpicks/items/gitWizard.ts | 2 +- src/quickpicks/referencePicker.ts | 2 +- src/views/nodes/autolinkedItemNode.ts | 2 +- src/views/nodes/branchNode.ts | 2 +- src/views/nodes/contributorsNode.ts | 2 +- src/views/nodes/pausedOperationStatusNode.ts | 10 ++++---- src/views/nodes/pullRequestNode.ts | 2 +- src/views/nodes/repositoryNode.ts | 2 +- src/views/nodes/worktreeNode.ts | 2 +- src/views/nodes/worktreesNode.ts | 2 +- .../home/components/merge-rebase-status.ts | 6 ++--- src/webviews/apps/tsconfig.json | 3 ++- src/webviews/home/homeWebview.ts | 2 +- src/webviews/plus/graph/graphWebview.ts | 2 +- 29 files changed, 84 insertions(+), 84 deletions(-) create mode 100644 src/git/utils/pausedOperationStatus.utils.ts rename src/git/utils/{ => vscode}/icons.ts (90%) rename src/git/utils/{ => vscode}/sorting.ts (94%) diff --git a/src/autolinks/autolinks.ts b/src/autolinks/autolinks.ts index f9ba58b0a3b12..7aad6ac8a73ad 100644 --- a/src/autolinks/autolinks.ts +++ b/src/autolinks/autolinks.ts @@ -5,7 +5,7 @@ import type { IntegrationId } from '../constants.integrations'; import { IssueIntegrationId } from '../constants.integrations'; import type { Container } from '../container'; import type { GitRemote } from '../git/models/remote'; -import { getIssueOrPullRequestHtmlIcon, getIssueOrPullRequestMarkdownIcon } from '../git/utils/icons'; +import { getIssueOrPullRequestHtmlIcon, getIssueOrPullRequestMarkdownIcon } from '../git/utils/vscode/icons'; import type { HostingIntegration, IssueIntegration } from '../plus/integrations/integration'; import { fromNow } from '../system/date'; import { debug } from '../system/decorators/log'; diff --git a/src/commands/quickCommand.steps.ts b/src/commands/quickCommand.steps.ts index 1a4b4947b797f..88f1d39a9154e 100644 --- a/src/commands/quickCommand.steps.ts +++ b/src/commands/quickCommand.steps.ts @@ -43,8 +43,8 @@ import type { WorktreeQuickPickItem } from '../git/models/worktree.quickpick'; import { createWorktreeQuickPickItem } from '../git/models/worktree.quickpick'; import { getWorktreesByBranch } from '../git/models/worktree.utils'; import { remoteUrlRegex } from '../git/parsers/remoteParser'; -import type { BranchSortOptions, TagSortOptions } from '../git/utils/sorting'; -import { sortBranches, sortContributors, sortTags, sortWorktrees } from '../git/utils/sorting'; +import type { BranchSortOptions, TagSortOptions } from '../git/utils/vscode/sorting'; +import { sortBranches, sortContributors, sortTags, sortWorktrees } from '../git/utils/vscode/sorting'; import { getApplicablePromo } from '../plus/gk/account/promos'; import { isSubscriptionPaidPlan, isSubscriptionPreviewTrialExpired } from '../plus/gk/account/subscription'; import type { LaunchpadCommandArgs } from '../plus/launchpad/launchpad'; diff --git a/src/env/node/git/localGitProvider.ts b/src/env/node/git/localGitProvider.ts index 703dc0c4e39e4..06e9e7a9d8370 100644 --- a/src/env/node/git/localGitProvider.ts +++ b/src/env/node/git/localGitProvider.ts @@ -165,9 +165,9 @@ import { parseGitWorktrees } from '../../../git/parsers/worktreeParser'; import { getRemoteProviderMatcher, loadRemoteProviders } from '../../../git/remotes/remoteProviders'; import type { GitSearch, GitSearchResultData, GitSearchResults } from '../../../git/search'; import { getGitArgsFromSearchQuery, getSearchQueryComparisonKey } from '../../../git/search'; -import { getRemoteIconUri } from '../../../git/utils/icons'; -import type { BranchSortOptions, TagSortOptions } from '../../../git/utils/sorting'; -import { sortBranches, sortContributors, sortTags } from '../../../git/utils/sorting'; +import { getRemoteIconUri } from '../../../git/utils/vscode/icons'; +import type { BranchSortOptions, TagSortOptions } from '../../../git/utils/vscode/sorting'; +import { sortBranches, sortContributors, sortTags } from '../../../git/utils/vscode/sorting'; import { showBlameInvalidIgnoreRevsFileWarningMessage, showGenericErrorMessage, diff --git a/src/git/formatters/commitFormatter.ts b/src/git/formatters/commitFormatter.ts index ce8994ee8567e..69c5198f865ab 100644 --- a/src/git/formatters/commitFormatter.ts +++ b/src/git/formatters/commitFormatter.ts @@ -40,7 +40,7 @@ import { getHighlanderProviders } from '../models/remote'; import { uncommitted, uncommittedStaged } from '../models/revision'; import { isUncommittedStaged, shortenRevision } from '../models/revision.utils'; import type { RemoteProvider } from '../remotes/remoteProvider'; -import { getIssueOrPullRequestMarkdownIcon } from '../utils/icons'; +import { getIssueOrPullRequestMarkdownIcon } from '../utils/vscode/icons'; import type { FormatOptions, RequiredTokenOptions } from './formatter'; import { Formatter } from './formatter'; diff --git a/src/git/gitProvider.ts b/src/git/gitProvider.ts index 04e8f84d1e3fa..c09faaaf3e63a 100644 --- a/src/git/gitProvider.ts +++ b/src/git/gitProvider.ts @@ -27,7 +27,7 @@ import type { GitTreeEntry } from './models/tree'; import type { GitUser } from './models/user'; import type { GitWorktree } from './models/worktree'; import type { GitSearch } from './search'; -import type { BranchSortOptions, TagSortOptions } from './utils/sorting'; +import type { BranchSortOptions, TagSortOptions } from './utils/vscode/sorting'; export type GitCaches = | 'branches' diff --git a/src/git/gitProviderService.ts b/src/git/gitProviderService.ts index 7f72812e72b36..7df3a15ece7c4 100644 --- a/src/git/gitProviderService.ts +++ b/src/git/gitProviderService.ts @@ -88,8 +88,8 @@ import type { GitUser } from './models/user'; import type { GitWorktree } from './models/worktree'; import type { RemoteProvider } from './remotes/remoteProvider'; import type { GitSearch } from './search'; -import type { BranchSortOptions, TagSortOptions } from './utils/sorting'; -import { sortRepositories } from './utils/sorting'; +import type { BranchSortOptions, TagSortOptions } from './utils/vscode/sorting'; +import { sortRepositories } from './utils/vscode/sorting'; const emptyArray = Object.freeze([]) as unknown as any[]; const emptyDisposable = Object.freeze({ diff --git a/src/git/models/pausedOperationStatus.ts b/src/git/models/pausedOperationStatus.ts index 8b5a030635f3a..16daac8a7369e 100644 --- a/src/git/models/pausedOperationStatus.ts +++ b/src/git/models/pausedOperationStatus.ts @@ -52,27 +52,3 @@ export interface GitRevertStatus { mergeBase?: never; } - -export const statusStringsByType = { - 'cherry-pick': { - label: 'Cherry picking', - conflicts: 'Resolve conflicts to continue cherry picking', - directionality: 'into', - }, - merge: { - label: 'Merging', - conflicts: 'Resolve conflicts to continue merging', - directionality: 'into', - }, - rebase: { - label: 'Rebasing', - conflicts: 'Resolve conflicts to continue rebasing', - directionality: 'onto', - pending: 'Pending rebase of', - }, - revert: { - label: 'Reverting', - conflicts: 'Resolve conflicts to continue reverting', - directionality: 'in', - }, -} as const; diff --git a/src/git/models/worktree.quickpick.ts b/src/git/models/worktree.quickpick.ts index d2aaf0b2f300c..5ef097419629b 100644 --- a/src/git/models/worktree.quickpick.ts +++ b/src/git/models/worktree.quickpick.ts @@ -4,7 +4,7 @@ import { GlyphChars } from '../../constants'; import { Container } from '../../container'; import type { QuickPickItemOfT } from '../../quickpicks/items/common'; import { pad } from '../../system/string'; -import { getBranchIconPath } from '../utils/icons'; +import { getBranchIconPath } from '../utils/vscode/icons'; import { shortenRevision } from './revision.utils'; import type { GitStatus } from './status'; import type { GitWorktree } from './worktree'; diff --git a/src/git/remotes/github.ts b/src/git/remotes/github.ts index 4d8ba770e58b0..b841c3bbc8fcb 100644 --- a/src/git/remotes/github.ts +++ b/src/git/remotes/github.ts @@ -12,7 +12,7 @@ import { escapeMarkdown, unescapeMarkdown } from '../../system/markdown'; import { equalsIgnoreCase } from '../../system/string'; import type { Repository } from '../models/repository'; import { isSha } from '../models/revision.utils'; -import { getIssueOrPullRequestMarkdownIcon } from '../utils/icons'; +import { getIssueOrPullRequestMarkdownIcon } from '../utils/vscode/icons'; import type { RemoteProviderId } from './remoteProvider'; import { RemoteProvider } from './remoteProvider'; diff --git a/src/git/remotes/gitlab.ts b/src/git/remotes/gitlab.ts index 9ef36a00387e1..4c9f862f8ee00 100644 --- a/src/git/remotes/gitlab.ts +++ b/src/git/remotes/gitlab.ts @@ -11,7 +11,7 @@ import { escapeMarkdown, unescapeMarkdown } from '../../system/markdown'; import { equalsIgnoreCase } from '../../system/string'; import type { Repository } from '../models/repository'; import { isSha } from '../models/revision.utils'; -import { getIssueOrPullRequestMarkdownIcon } from '../utils/icons'; +import { getIssueOrPullRequestMarkdownIcon } from '../utils/vscode/icons'; import type { RemoteProviderId } from './remoteProvider'; import { RemoteProvider } from './remoteProvider'; diff --git a/src/git/utils/pausedOperationStatus.utils.ts b/src/git/utils/pausedOperationStatus.utils.ts new file mode 100644 index 0000000000000..3db3f758899ff --- /dev/null +++ b/src/git/utils/pausedOperationStatus.utils.ts @@ -0,0 +1,23 @@ +export const pausedOperationStatusStringsByType = { + 'cherry-pick': { + label: 'Cherry picking', + conflicts: 'Resolve conflicts to continue cherry picking', + directionality: 'into', + }, + merge: { + label: 'Merging', + conflicts: 'Resolve conflicts to continue merging', + directionality: 'into', + }, + rebase: { + label: 'Rebasing', + conflicts: 'Resolve conflicts to continue rebasing', + directionality: 'onto', + pending: 'Pending rebase of', + }, + revert: { + label: 'Reverting', + conflicts: 'Resolve conflicts to continue reverting', + directionality: 'in', + }, +} as const; diff --git a/src/git/utils/icons.ts b/src/git/utils/vscode/icons.ts similarity index 90% rename from src/git/utils/icons.ts rename to src/git/utils/vscode/icons.ts index 1c50f9ea74491..bb05d4a0b78b3 100644 --- a/src/git/utils/icons.ts +++ b/src/git/utils/vscode/icons.ts @@ -1,16 +1,16 @@ import type { ColorTheme } from 'vscode'; import { ColorThemeKind, ThemeColor, ThemeIcon, Uri, window } from 'vscode'; -import type { IconPath } from '../../@types/vscode.iconpath'; -import type { Colors } from '../../constants.colors'; -import type { Container } from '../../container'; -import { isLightTheme } from '../../system/vscode/utils'; -import { getIconPathUris } from '../../system/vscode/vscode'; -import type { GitBranch } from '../models/branch'; -import type { IssueOrPullRequest } from '../models/issue'; -import type { GitRemote } from '../models/remote'; -import { getRemoteThemeIconString } from '../models/remote'; -import type { Repository } from '../models/repository'; -import type { GitStatus } from '../models/status'; +import type { IconPath } from '../../../@types/vscode.iconpath'; +import type { Colors } from '../../../constants.colors'; +import type { Container } from '../../../container'; +import { isLightTheme } from '../../../system/vscode/utils'; +import { getIconPathUris } from '../../../system/vscode/vscode'; +import type { GitBranch } from '../../models/branch'; +import type { IssueOrPullRequest } from '../../models/issue'; +import type { GitRemote } from '../../models/remote'; +import { getRemoteThemeIconString } from '../../models/remote'; +import type { Repository } from '../../models/repository'; +import type { GitStatus } from '../../models/status'; export function getBranchIconPath(container: Container, branch: GitBranch | undefined): IconPath { switch (branch?.status) { diff --git a/src/git/utils/sorting.ts b/src/git/utils/vscode/sorting.ts similarity index 94% rename from src/git/utils/sorting.ts rename to src/git/utils/vscode/sorting.ts index bad9589fc8929..eb5e2a4a67683 100644 --- a/src/git/utils/sorting.ts +++ b/src/git/utils/vscode/sorting.ts @@ -1,15 +1,15 @@ -import type { BranchSorting, ContributorSorting, RepositoriesSorting, TagSorting } from '../../config'; -import { sortCompare } from '../../system/string'; -import { configuration } from '../../system/vscode/configuration'; -import type { GitBranch } from '../models/branch'; -import type { GitContributor } from '../models/contributor'; -import { isContributor } from '../models/contributor'; -import type { ContributorQuickPickItem } from '../models/contributor.quickpick'; -import type { Repository } from '../models/repository'; -import type { GitTag } from '../models/tag'; -import type { GitWorktree } from '../models/worktree'; -import { isWorktree } from '../models/worktree'; -import type { WorktreeQuickPickItem } from '../models/worktree.quickpick'; +import type { BranchSorting, ContributorSorting, RepositoriesSorting, TagSorting } from '../../../config'; +import { sortCompare } from '../../../system/string'; +import { configuration } from '../../../system/vscode/configuration'; +import type { GitBranch } from '../../models/branch'; +import type { GitContributor } from '../../models/contributor'; +import { isContributor } from '../../models/contributor'; +import type { ContributorQuickPickItem } from '../../models/contributor.quickpick'; +import type { Repository } from '../../models/repository'; +import type { GitTag } from '../../models/tag'; +import type { GitWorktree } from '../../models/worktree'; +import { isWorktree } from '../../models/worktree'; +import type { WorktreeQuickPickItem } from '../../models/worktree.quickpick'; export interface BranchSortOptions { current?: boolean; diff --git a/src/plus/integrations/providers/github/githubGitProvider.ts b/src/plus/integrations/providers/github/githubGitProvider.ts index 2a281e5b84035..283c68a17ac76 100644 --- a/src/plus/integrations/providers/github/githubGitProvider.ts +++ b/src/plus/integrations/providers/github/githubGitProvider.ts @@ -88,9 +88,9 @@ import type { GitWorktree } from '../../../../git/models/worktree'; import { getRemoteProviderMatcher, loadRemoteProviders } from '../../../../git/remotes/remoteProviders'; import type { GitSearch, GitSearchResultData, GitSearchResults } from '../../../../git/search'; import { getSearchQueryComparisonKey, parseSearchQuery } from '../../../../git/search'; -import { getRemoteIconUri } from '../../../../git/utils/icons'; -import type { BranchSortOptions, TagSortOptions } from '../../../../git/utils/sorting'; -import { sortBranches, sortTags } from '../../../../git/utils/sorting'; +import { getRemoteIconUri } from '../../../../git/utils/vscode/icons'; +import type { BranchSortOptions, TagSortOptions } from '../../../../git/utils/vscode/sorting'; +import { sortBranches, sortTags } from '../../../../git/utils/vscode/sorting'; import { gate } from '../../../../system/decorators/gate'; import { debug, log } from '../../../../system/decorators/log'; import { filterMap, first, last, map, some, union } from '../../../../system/iterable'; diff --git a/src/quickpicks/contributorsPicker.ts b/src/quickpicks/contributorsPicker.ts index 2b09ebce2fd03..f2ac0c9f1a23e 100644 --- a/src/quickpicks/contributorsPicker.ts +++ b/src/quickpicks/contributorsPicker.ts @@ -7,7 +7,7 @@ import type { GitContributor } from '../git/models/contributor'; import type { ContributorQuickPickItem } from '../git/models/contributor.quickpick'; import { createContributorQuickPickItem } from '../git/models/contributor.quickpick'; import type { Repository } from '../git/models/repository'; -import { sortContributors } from '../git/utils/sorting'; +import { sortContributors } from '../git/utils/vscode/sorting'; import { debounce } from '../system/function'; import { defer } from '../system/promise'; import { pad, truncate } from '../system/string'; diff --git a/src/quickpicks/items/gitWizard.ts b/src/quickpicks/items/gitWizard.ts index 666b2e66f78ea..78141ca20bce1 100644 --- a/src/quickpicks/items/gitWizard.ts +++ b/src/quickpicks/items/gitWizard.ts @@ -16,7 +16,7 @@ import { getRemoteUpstreamDescription } from '../../git/models/remote'; import type { Repository } from '../../git/models/repository'; import { isRevisionRange, shortenRevision } from '../../git/models/revision.utils'; import type { GitTag } from '../../git/models/tag'; -import { getBranchIconPath, getWorktreeBranchIconPath } from '../../git/utils/icons'; +import { getBranchIconPath, getWorktreeBranchIconPath } from '../../git/utils/vscode/icons'; import { fromNow } from '../../system/date'; import { pad } from '../../system/string'; import { configuration } from '../../system/vscode/configuration'; diff --git a/src/quickpicks/referencePicker.ts b/src/quickpicks/referencePicker.ts index a0133e8a244ba..751822c3b2350 100644 --- a/src/quickpicks/referencePicker.ts +++ b/src/quickpicks/referencePicker.ts @@ -11,7 +11,7 @@ import type { GitBranch } from '../git/models/branch'; import type { GitReference } from '../git/models/reference'; import { isBranchReference, isRevisionReference, isTagReference } from '../git/models/reference.utils'; import type { GitTag } from '../git/models/tag'; -import type { BranchSortOptions, TagSortOptions } from '../git/utils/sorting'; +import type { BranchSortOptions, TagSortOptions } from '../git/utils/vscode/sorting'; import type { KeyboardScope } from '../system/vscode/keyboard'; import { getQuickPickIgnoreFocusOut } from '../system/vscode/utils'; import type { BranchQuickPickItem, RefQuickPickItem, TagQuickPickItem } from './items/gitWizard'; diff --git a/src/views/nodes/autolinkedItemNode.ts b/src/views/nodes/autolinkedItemNode.ts index c6a576b9601cf..f80211d244fed 100644 --- a/src/views/nodes/autolinkedItemNode.ts +++ b/src/views/nodes/autolinkedItemNode.ts @@ -2,7 +2,7 @@ import { MarkdownString, ThemeIcon, TreeItem, TreeItemCollapsibleState } from 'v import type { Autolink } from '../../autolinks'; import { GitUri } from '../../git/gitUri'; import type { IssueOrPullRequest } from '../../git/models/issue'; -import { getIssueOrPullRequestMarkdownIcon, getIssueOrPullRequestThemeIcon } from '../../git/utils/icons'; +import { getIssueOrPullRequestMarkdownIcon, getIssueOrPullRequestThemeIcon } from '../../git/utils/vscode/icons'; import { fromNow } from '../../system/date'; import { isPromise } from '../../system/promise'; import type { ViewsWithCommits } from '../viewBase'; diff --git a/src/views/nodes/branchNode.ts b/src/views/nodes/branchNode.ts index 50a9b7442631c..24f6e78ebfbb3 100644 --- a/src/views/nodes/branchNode.ts +++ b/src/views/nodes/branchNode.ts @@ -17,7 +17,7 @@ import { getHighlanderProviders } from '../../git/models/remote'; import { Repository } from '../../git/models/repository'; import type { GitUser } from '../../git/models/user'; import type { GitWorktree } from '../../git/models/worktree'; -import { getBranchIconPath, getRemoteIconPath, getWorktreeBranchIconPath } from '../../git/utils/icons'; +import { getBranchIconPath, getRemoteIconPath, getWorktreeBranchIconPath } from '../../git/utils/vscode/icons'; import { fromNow } from '../../system/date'; import { gate } from '../../system/decorators/gate'; import { log } from '../../system/decorators/log'; diff --git a/src/views/nodes/contributorsNode.ts b/src/views/nodes/contributorsNode.ts index 244d66494d600..6a5aba351b36b 100644 --- a/src/views/nodes/contributorsNode.ts +++ b/src/views/nodes/contributorsNode.ts @@ -2,7 +2,7 @@ import { ThemeIcon, TreeItem, TreeItemCollapsibleState } from 'vscode'; import type { GitUri } from '../../git/gitUri'; import type { GitContributor } from '../../git/models/contributor'; import type { Repository } from '../../git/models/repository'; -import { sortContributors } from '../../git/utils/sorting'; +import { sortContributors } from '../../git/utils/vscode/sorting'; import { debug } from '../../system/decorators/log'; import { configuration } from '../../system/vscode/configuration'; import type { ViewsWithContributorsNode } from '../viewBase'; diff --git a/src/views/nodes/pausedOperationStatusNode.ts b/src/views/nodes/pausedOperationStatusNode.ts index 10ab3091369c4..a2941b80ab289 100644 --- a/src/views/nodes/pausedOperationStatusNode.ts +++ b/src/views/nodes/pausedOperationStatusNode.ts @@ -3,9 +3,9 @@ import type { Colors } from '../../constants.colors'; import { GitUri } from '../../git/gitUri'; import type { GitBranch } from '../../git/models/branch'; import type { GitPausedOperationStatus } from '../../git/models/pausedOperationStatus'; -import { statusStringsByType } from '../../git/models/pausedOperationStatus'; import { getReferenceLabel } from '../../git/models/reference.utils'; import type { GitStatus } from '../../git/models/status'; +import { pausedOperationStatusStringsByType } from '../../git/utils/pausedOperationStatus.utils'; import { pluralize } from '../../system/string'; import { executeCoreCommand } from '../../system/vscode/command'; import type { ViewsWithCommits } from '../viewBase'; @@ -110,7 +110,7 @@ export class PausedOperationStatusNode extends ViewNode<'paused-operation-status const hasConflicts = this.status?.hasConflicts === true; if (this.pausedOpStatus.type !== 'rebase') { - const strings = statusStringsByType[this.pausedOpStatus.type]; + const strings = pausedOperationStatusStringsByType[this.pausedOpStatus.type]; return `${hasConflicts ? strings.conflicts : strings.label} ${getReferenceLabel( this.pausedOpStatus.incoming, { @@ -124,7 +124,7 @@ export class PausedOperationStatusNode extends ViewNode<'paused-operation-status } const started = this.pausedOpStatus.steps.total > 0; - const strings = statusStringsByType[this.pausedOpStatus.type]; + const strings = pausedOperationStatusStringsByType[this.pausedOpStatus.type]; return `${hasConflicts ? strings.conflicts : started ? strings.label : strings.pending} ${getReferenceLabel( this.pausedOpStatus.incoming, { expand: false, icon: false }, @@ -139,7 +139,7 @@ export class PausedOperationStatusNode extends ViewNode<'paused-operation-status let tooltip; if (this.pausedOpStatus.type !== 'rebase') { - const strings = statusStringsByType[this.pausedOpStatus.type]; + const strings = pausedOperationStatusStringsByType[this.pausedOpStatus.type]; tooltip = `${strings.label} ${getReferenceLabel(this.pausedOpStatus.incoming, { label: false })} ${ strings.directionality } ${getReferenceLabel(this.pausedOpStatus.current, { label: false })}${ @@ -149,7 +149,7 @@ export class PausedOperationStatusNode extends ViewNode<'paused-operation-status }`; } else { const started = this.pausedOpStatus.steps.total > 0; - const strings = statusStringsByType[this.pausedOpStatus.type]; + const strings = pausedOperationStatusStringsByType[this.pausedOpStatus.type]; tooltip = `${started ? strings.label : strings.pending} ${getReferenceLabel(this.pausedOpStatus.incoming, { label: false, })} ${strings.directionality} ${getReferenceLabel(this.pausedOpStatus.current ?? this.pausedOpStatus.onto, { diff --git a/src/views/nodes/pullRequestNode.ts b/src/views/nodes/pullRequestNode.ts index 731185b44f1b4..6954bae681d94 100644 --- a/src/views/nodes/pullRequestNode.ts +++ b/src/views/nodes/pullRequestNode.ts @@ -12,7 +12,7 @@ import type { GitBranchReference } from '../../git/models/reference'; import type { Repository } from '../../git/models/repository'; import { createRevisionRange } from '../../git/models/revision.utils'; import { getAheadBehindFilesQuery, getCommitsQuery } from '../../git/queryResults'; -import { getIssueOrPullRequestMarkdownIcon, getIssueOrPullRequestThemeIcon } from '../../git/utils/icons'; +import { getIssueOrPullRequestMarkdownIcon, getIssueOrPullRequestThemeIcon } from '../../git/utils/vscode/icons'; import { pluralize } from '../../system/string'; import type { ViewsWithCommits } from '../viewBase'; import { CacheableChildrenViewNode } from './abstract/cacheableChildrenViewNode'; diff --git a/src/views/nodes/repositoryNode.ts b/src/views/nodes/repositoryNode.ts index f59c58efbf51f..a27872ffce2ff 100644 --- a/src/views/nodes/repositoryNode.ts +++ b/src/views/nodes/repositoryNode.ts @@ -7,7 +7,7 @@ import { getHighlanderProviders } from '../../git/models/remote'; import type { RepositoryChangeEvent, RepositoryFileSystemChangeEvent } from '../../git/models/repository'; import { Repository, RepositoryChange, RepositoryChangeComparisonMode } from '../../git/models/repository'; import type { GitStatus } from '../../git/models/status'; -import { getRepositoryStatusIconPath } from '../../git/utils/icons'; +import { getRepositoryStatusIconPath } from '../../git/utils/vscode/icons'; import type { CloudWorkspace, CloudWorkspaceRepositoryDescriptor, diff --git a/src/views/nodes/worktreeNode.ts b/src/views/nodes/worktreeNode.ts index a9e802f0399bf..62cf7aa2bbb1e 100644 --- a/src/views/nodes/worktreeNode.ts +++ b/src/views/nodes/worktreeNode.ts @@ -10,7 +10,7 @@ import { getHighlanderProviderName } from '../../git/models/remote'; import { shortenRevision } from '../../git/models/revision.utils'; import type { GitStatus } from '../../git/models/status'; import type { GitWorktree } from '../../git/models/worktree'; -import { getBranchIconPath } from '../../git/utils/icons'; +import { getBranchIconPath } from '../../git/utils/vscode/icons'; import { gate } from '../../system/decorators/gate'; import { debug } from '../../system/decorators/log'; import { map } from '../../system/iterable'; diff --git a/src/views/nodes/worktreesNode.ts b/src/views/nodes/worktreesNode.ts index 097a36879aaf3..d4f172d3a2533 100644 --- a/src/views/nodes/worktreesNode.ts +++ b/src/views/nodes/worktreesNode.ts @@ -3,7 +3,7 @@ import { GlyphChars } from '../../constants'; import { PlusFeatures } from '../../features'; import type { GitUri } from '../../git/gitUri'; import type { Repository } from '../../git/models/repository'; -import { sortWorktrees } from '../../git/utils/sorting'; +import { sortWorktrees } from '../../git/utils/vscode/sorting'; import { filterMap } from '../../system/array'; import { debug } from '../../system/decorators/log'; import { map } from '../../system/iterable'; diff --git a/src/webviews/apps/plus/home/components/merge-rebase-status.ts b/src/webviews/apps/plus/home/components/merge-rebase-status.ts index cf7b88abd28c8..92d090535ee34 100644 --- a/src/webviews/apps/plus/home/components/merge-rebase-status.ts +++ b/src/webviews/apps/plus/home/components/merge-rebase-status.ts @@ -1,7 +1,7 @@ import { css, html, LitElement, nothing } from 'lit'; import { customElement, property } from 'lit/decorators.js'; import type { GitPausedOperationStatus } from '../../../../../git/models/pausedOperationStatus'; -import { statusStringsByType } from '../../../../../git/models/pausedOperationStatus'; +import { pausedOperationStatusStringsByType } from '../../../../../git/utils/pausedOperationStatus.utils'; import { getReferenceLabel } from '../../../shared/git-utils'; import '../../../shared/components/overlays/tooltip'; @@ -66,7 +66,7 @@ export class GlMergeConflictWarning extends LitElement { private renderStatus(pausedOpStatus: GitPausedOperationStatus) { if (pausedOpStatus.type !== 'rebase') { - const strings = statusStringsByType[pausedOpStatus.type]; + const strings = pausedOperationStatusStringsByType[pausedOpStatus.type]; return html`${this.conflicts ? strings.conflicts : strings.label} 0; - const strings = statusStringsByType[pausedOpStatus.type]; + const strings = pausedOperationStatusStringsByType[pausedOpStatus.type]; return html`${this.conflicts ? strings.conflicts : started ? strings.label : strings.pending} Date: Tue, 7 Jan 2025 22:34:00 -0500 Subject: [PATCH 04/11] Updates dependencies --- CONTRIBUTING.md | 4 +- ThirdPartyNotices.txt | 6 +- package.json | 23 +- pnpm-lock.yaml | 1370 +++++++++++++++++++++-------------------- 4 files changed, 729 insertions(+), 674 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f80fa0d5ab0d5..9428109d41b92 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -19,8 +19,8 @@ git clone https://github.com/gitkraken/vscode-gitlens.git Prerequisites - [Git](https://git-scm.com/), `>= 2.7.2` -- [NodeJS](https://nodejs.org/), `>= v22.11.0` -- [pnpm](https://pnpm.io/), `>= 9.x` (install using [corepack](https://nodejs.org/docs/latest-v20.x/api/corepack.html)) +- [NodeJS](https://nodejs.org/), `>= 22.12.0` +- [pnpm](https://pnpm.io/), `>= 10.x` (install using [corepack](https://nodejs.org/docs/latest-v20.x/api/corepack.html)) ### Dependencies diff --git a/ThirdPartyNotices.txt b/ThirdPartyNotices.txt index cecd06f4adf99..3fec1f460dece 100644 --- a/ThirdPartyNotices.txt +++ b/ThirdPartyNotices.txt @@ -19,18 +19,18 @@ This project incorporates components from the projects listed below. 14. @opentelemetry/semantic-conventions version 1.28.0 (https://github.com/open-telemetry/opentelemetry-js) 15. @shoelace-style/shoelace version 2.19.1 (https://github.com/shoelace-style/shoelace) 16. @vscode/codicons version 0.0.36 (https://github.com/microsoft/vscode-codicons) -17. billboard.js version 3.14.2 (https://github.com/naver/billboard.js) +17. billboard.js version 3.14.3 (https://github.com/naver/billboard.js) 18. https-proxy-agent version 5.0.1 (https://github.com/TooTallNate/node-https-proxy-agent) 19. iconv-lite version 0.6.3 (https://github.com/ashtuchkin/iconv-lite) 20. lit version 3.2.1 (https://github.com/lit/lit) -21. marked version 15.0.5 (https://github.com/markedjs/marked) +21. marked version 15.0.6 (https://github.com/markedjs/marked) 22. microsoft/vscode (https://github.com/microsoft/vscode) 23. node-fetch version 2.7.0 (https://github.com/bitinn/node-fetch) 24. os-browserify version 0.3.0 (https://github.com/CoderPuppy/os-browserify) 25. path-browserify version 1.0.1 (https://github.com/browserify/path-browserify) 26. react-dom version 16.8.4 (https://github.com/facebook/react) 27. react version 16.8.4 (https://github.com/facebook/react) -28. signal-utils version 0.20.0 (https://github.com/proposal-signals/signal-utils) +28. signal-utils version 0.21.1 (https://github.com/proposal-signals/signal-utils) 29. slug version 10.0.0 (https://github.com/Trott/slug) 30. sortablejs version 1.15.0 (https://github.com/SortableJS/Sortable) diff --git a/package.json b/package.json index 6a9fcaf60a3f9..e38d3ffd5129b 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,8 @@ "description": "Supercharge Git within VS Code — Visualize code authorship at a glance via Git blame annotations and CodeLens, seamlessly navigate and explore Git repositories, gain valuable insights via rich visualizations and powerful comparison commands, and so much more", "version": "16.1.1", "engines": { + "node": ">= 22.12.0", + "pnpm": ">= 10.0.0", "vscode": "^1.82.0" }, "license": "SEE LICENSE IN LICENSE", @@ -20018,25 +20020,25 @@ "@opentelemetry/semantic-conventions": "1.28.0", "@shoelace-style/shoelace": "2.19.1", "@vscode/codicons": "0.0.36", - "billboard.js": "3.14.2", + "billboard.js": "3.14.3", "https-proxy-agent": "5.0.1", "iconv-lite": "0.6.3", "lit": "3.2.1", - "marked": "15.0.5", + "marked": "15.0.6", "node-fetch": "2.7.0", "os-browserify": "0.3.0", "path-browserify": "1.0.1", "react": "16.8.4", "react-dom": "16.8.4", - "signal-utils": "0.20.0", + "signal-utils": "0.21.1", "slug": "10.0.0", "sortablejs": "1.15.0" }, "devDependencies": { "@eamodio/eslint-lite-webpack-plugin": "0.2.0", - "@eslint/js": "9.16.0", + "@eslint/js": "9.17.0", "@playwright/test": "1.49.1", - "@swc/core": "1.10.4", + "@swc/core": "1.10.6", "@twbs/fantasticon": "3.0.0", "@types/eslint__js": "8.42.3", "@types/mocha": "10.0.10", @@ -20046,7 +20048,7 @@ "@types/slug": "5.0.9", "@types/sortablejs": "1.15.8", "@types/vscode": "1.82.0", - "@typescript-eslint/parser": "8.19.0", + "@typescript-eslint/parser": "8.19.1", "@vscode/test-cli": "^0.0.10", "@vscode/test-electron": "2.4.1", "@vscode/test-web": "0.0.65", @@ -20083,7 +20085,7 @@ "playwright": "1.49.1", "prettier": "3.1.0", "regex-to-strings": "2.1.0", - "sass": "1.82.0", + "sass": "1.83.1", "sass-loader": "16.0.4", "schema-utils": "4.3.0", "sharp": "0.32.6", @@ -20091,18 +20093,21 @@ "terser-webpack-plugin": "5.3.11", "ts-loader": "9.5.1", "typescript": "5.7.2", - "typescript-eslint": "8.19.0", + "typescript-eslint": "8.19.1", "webpack": "5.97.1", "webpack-bundle-analyzer": "4.10.2", "webpack-cli": "6.0.1", "webpack-node-externals": "3.0.0", "webpack-require-from": "1.8.6" }, + "pnpm.onlyBuiltDependencies": [ + "@swc/core" + ], "resolutions": { "esbuild": "0.24.2", "iconv-lite": "0.6.3", "node-fetch": "2.7.0", "semver-regex": "4.0.5" }, - "packageManager": "pnpm@10.0.0-rc.2" + "packageManager": "pnpm@10.0.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index af0e8599b5cea..fadefcb185ed6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -67,13 +67,13 @@ importers: version: 1.28.0 '@shoelace-style/shoelace': specifier: 2.19.1 - version: 2.19.1(@floating-ui/utils@0.2.8)(@types/react@17.0.83) + version: 2.19.1(@floating-ui/utils@0.2.9)(@types/react@17.0.83) '@vscode/codicons': specifier: 0.0.36 version: 0.0.36 billboard.js: - specifier: 3.14.2 - version: 3.14.2 + specifier: 3.14.3 + version: 3.14.3 https-proxy-agent: specifier: 5.0.1 version: 5.0.1 @@ -84,8 +84,8 @@ importers: specifier: 3.2.1 version: 3.2.1 marked: - specifier: 15.0.5 - version: 15.0.5 + specifier: 15.0.6 + version: 15.0.6 node-fetch: specifier: 2.7.0 version: 2.7.0(encoding@0.1.13) @@ -102,8 +102,8 @@ importers: specifier: 16.8.4 version: 16.8.4(react@16.8.4) signal-utils: - specifier: 0.20.0 - version: 0.20.0(signal-polyfill@0.2.1) + specifier: 0.21.1 + version: 0.21.1(signal-polyfill@0.2.1) slug: specifier: 10.0.0 version: 10.0.0 @@ -113,16 +113,16 @@ importers: devDependencies: '@eamodio/eslint-lite-webpack-plugin': specifier: 0.2.0 - version: 0.2.0(@swc/core@1.10.4)(esbuild@0.24.2)(eslint@9.17.0(jiti@2.4.0))(webpack-cli@6.0.1)(webpack@5.97.1) + version: 0.2.0(@swc/core@1.10.6)(esbuild@0.24.2)(eslint@9.17.0(jiti@2.4.0))(webpack-cli@6.0.1)(webpack@5.97.1) '@eslint/js': - specifier: 9.16.0 - version: 9.16.0 + specifier: 9.17.0 + version: 9.17.0 '@playwright/test': specifier: 1.49.1 version: 1.49.1 '@swc/core': - specifier: 1.10.4 - version: 1.10.4 + specifier: 1.10.6 + version: 1.10.6 '@twbs/fantasticon': specifier: 3.0.0 version: 3.0.0 @@ -151,8 +151,8 @@ importers: specifier: 1.82.0 version: 1.82.0 '@typescript-eslint/parser': - specifier: 8.19.0 - version: 8.19.0(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2) + specifier: 8.19.1 + version: 8.19.1(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2) '@vscode/test-cli': specifier: ^0.0.10 version: 0.0.10 @@ -262,11 +262,11 @@ importers: specifier: 2.1.0 version: 2.1.0 sass: - specifier: 1.82.0 - version: 1.82.0 + specifier: 1.83.1 + version: 1.83.1 sass-loader: specifier: 16.0.4 - version: 16.0.4(sass-embedded@1.77.8)(sass@1.82.0)(webpack@5.97.1) + version: 16.0.4(sass-embedded@1.77.8)(sass@1.83.1)(webpack@5.97.1) schema-utils: specifier: 4.3.0 version: 4.3.0 @@ -278,7 +278,7 @@ importers: version: 3.3.2 terser-webpack-plugin: specifier: 5.3.11 - version: 5.3.11(@swc/core@1.10.4)(esbuild@0.24.2)(webpack@5.97.1) + version: 5.3.11(@swc/core@1.10.6)(esbuild@0.24.2)(webpack@5.97.1) ts-loader: specifier: 9.5.1 version: 9.5.1(typescript@5.7.2)(webpack@5.97.1) @@ -286,11 +286,11 @@ importers: specifier: 5.7.2 version: 5.7.2 typescript-eslint: - specifier: 8.19.0 - version: 8.19.0(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2) + specifier: 8.19.1 + version: 8.19.1(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2) webpack: specifier: 5.97.1 - version: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) + version: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) webpack-bundle-analyzer: specifier: 4.10.2 version: 4.10.2 @@ -344,8 +344,8 @@ packages: resolution: {integrity: sha512-4IXXzcCdLdlXuCG+8UKEwLA1T1NHqUfanhXYHiQTn+6sfWCZXduqbtXDGceg3Ce5QxTGo7EqmbV6Bi+aqKuClQ==} engines: {node: '>=18.0.0'} - '@azure/msal-browser@3.27.0': - resolution: {integrity: sha512-+b4ZKSD8+vslCtVRVetkegEhOFMLP3rxDWJY212ct+2r6jVg6OSQKc1Qz3kCoXo0FgwaXkb+76TMZfpHp8QtgA==} + '@azure/msal-browser@3.28.0': + resolution: {integrity: sha512-1c1qUF6vB52mWlyoMem4xR1gdwiQWYEQB2uhDkbAL4wVJr8WmAcXybc1Qs33y19N4BdPI8/DHI7rPE8L5jMtWw==} engines: {node: '>=0.8.0'} '@azure/msal-common@14.16.0': @@ -569,10 +569,6 @@ packages: resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.16.0': - resolution: {integrity: sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.17.0': resolution: {integrity: sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -585,14 +581,14 @@ packages: resolution: {integrity: sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@floating-ui/core@1.6.8': - resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==} + '@floating-ui/core@1.6.9': + resolution: {integrity: sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==} - '@floating-ui/dom@1.6.12': - resolution: {integrity: sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==} + '@floating-ui/dom@1.6.13': + resolution: {integrity: sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==} - '@floating-ui/utils@0.2.8': - resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==} + '@floating-ui/utils@0.2.9': + resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==} '@gar/promisify@1.1.3': resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} @@ -646,8 +642,8 @@ packages: resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jridgewell/gen-mapping@0.3.5': - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} engines: {node: '>=6.0.0'} '@jridgewell/resolve-uri@3.1.2': @@ -724,8 +720,8 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} deprecated: This functionality has been moved to @npmcli/fs - '@octokit/endpoint@10.1.1': - resolution: {integrity: sha512-JYjh5rMOwXMJyUpj028cu0Gbp7qe/ihxfJMLc8VZBMMqSwLgOxDI1911gV4Enl1QSavAQNJcwmwBF9M0VvLh6Q==} + '@octokit/endpoint@10.1.2': + resolution: {integrity: sha512-XybpFv9Ms4hX5OCHMZqyODYqGTZ3H6K6Vva+M9LR7ib/xr1y1ZnlChYv9H680y77Vd/i/k+thXApeRASBQkzhA==} engines: {node: '>= 18'} '@octokit/graphql@8.1.2': @@ -951,68 +947,68 @@ packages: resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} engines: {node: '>=18'} - '@swc/core-darwin-arm64@1.10.4': - resolution: {integrity: sha512-sV/eurLhkjn/197y48bxKP19oqcLydSel42Qsy2zepBltqUx+/zZ8+/IS0Bi7kaWVFxerbW1IPB09uq8Zuvm3g==} + '@swc/core-darwin-arm64@1.10.6': + resolution: {integrity: sha512-USbMvT8Rw5PvIfF6HyTm+yW84J9c45emzmHBDIWY76vZHkFsS5MepNi+JLQyBzBBgE7ScwBRBNhRx6VNhkSoww==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.10.4': - resolution: {integrity: sha512-gjYNU6vrAUO4+FuovEo9ofnVosTFXkF0VDuo1MKPItz6e2pxc2ale4FGzLw0Nf7JB1sX4a8h06CN16/pLJ8Q2w==} + '@swc/core-darwin-x64@1.10.6': + resolution: {integrity: sha512-7t2IozcZN4r1p27ei+Kb8IjN4aLoBDn107fPi+aPLcVp2uFgJEUzhCDuZXBNW2057Mx1OHcjzrkaleRpECz3Xg==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.10.4': - resolution: {integrity: sha512-zd7fXH5w8s+Sfvn2oO464KDWl+ZX1MJiVmE4Pdk46N3PEaNwE0koTfgx2vQRqRG4vBBobzVvzICC3618WcefOA==} + '@swc/core-linux-arm-gnueabihf@1.10.6': + resolution: {integrity: sha512-CPgWT+D0bDp/qhXsLkIJ54LmKU1/zvyGaf/yz8A4iR+YoF6R5CSXENXhNJY8cIrb6+uNWJZzHJ+gefB5V51bpA==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.10.4': - resolution: {integrity: sha512-+UGfoHDxsMZgFD3tABKLeEZHqLNOkxStu+qCG7atGBhS4Slri6h6zijVvf4yI5X3kbXdvc44XV/hrP/Klnui2A==} + '@swc/core-linux-arm64-gnu@1.10.6': + resolution: {integrity: sha512-5qZ6hVnqO/ShETXdGSzvdGUVx372qydlj1YWSYiaxQzTAepEBc8TC1NVUgYtOHOKVRkky1d7p6GQ9lymsd4bHw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.10.4': - resolution: {integrity: sha512-cDDj2/uYsOH0pgAnDkovLZvKJpFmBMyXkxEG6Q4yw99HbzO6QzZ5HDGWGWVq/6dLgYKlnnmpjZCPPQIu01mXEg==} + '@swc/core-linux-arm64-musl@1.10.6': + resolution: {integrity: sha512-hB2xZFmXCKf2iJF5y2z01PSuLqEoUP3jIX/XlIHN+/AIP7PkSKsValE63LnjlnWPnSEI0IxUyRE3T3FzWE/fQQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.10.4': - resolution: {integrity: sha512-qJXh9D6Kf5xSdGWPINpLGixAbB5JX8JcbEJpRamhlDBoOcQC79dYfOMEIxWPhTS1DGLyFakAx2FX/b2VmQmj0g==} + '@swc/core-linux-x64-gnu@1.10.6': + resolution: {integrity: sha512-PRGPp0I22+oJ8RMGg8M4hXYxEffH3ayu0WoSDPOjfol1F51Wj1tfTWN4wVa2RibzJjkBwMOT0KGLGb/hSEDDXQ==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.10.4': - resolution: {integrity: sha512-A76lIAeyQnHCVt0RL/pG+0er8Qk9+acGJqSZOZm67Ve3B0oqMd871kPtaHBM0BW3OZAhoILgfHW3Op9Q3mx3Cw==} + '@swc/core-linux-x64-musl@1.10.6': + resolution: {integrity: sha512-SoNBxlA86lnoV9vIz/TCyakLkdRhFSHx6tFMKNH8wAhz1kKYbZfDmpYoIzeQqdTh0tpx8e/Zu1zdK4smovsZqQ==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.10.4': - resolution: {integrity: sha512-e6j5kBu4fIY7fFxFxnZI0MlEovRvp50Lg59Fw+DVbtqHk3C85dckcy5xKP+UoXeuEmFceauQDczUcGs19SRGSQ==} + '@swc/core-win32-arm64-msvc@1.10.6': + resolution: {integrity: sha512-6L5Y2E+FVvM+BtoA+mJFjf/SjpFr73w2kHBxINxwH8/PkjAjkePDr5m0ibQhPXV61bTwX49+1otzTY85EsUW9Q==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.10.4': - resolution: {integrity: sha512-RSYHfdKgNXV/amY5Tqk1EWVsyQnhlsM//jeqMLw5Fy9rfxP592W9UTumNikNRPdjI8wKKzNMXDb1U29tQjN0dg==} + '@swc/core-win32-ia32-msvc@1.10.6': + resolution: {integrity: sha512-kxK3tW8DJwEkAkwy0vhwoBAShRebH1QTe0mvH9tlBQ21rToVZQn+GCV/I44dind80hYPw0Tw2JKFVfoEJyBszg==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.10.4': - resolution: {integrity: sha512-1ujYpaqfqNPYdwKBlvJnOqcl+Syn3UrQ4XE0Txz6zMYgyh6cdU6a3pxqLqIUSJ12MtXRA9ZUhEz1ekU3LfLWXw==} + '@swc/core-win32-x64-msvc@1.10.6': + resolution: {integrity: sha512-4pJka/+t8XcHee12G/R5VWcilkp5poT2EJhrybpuREkpQ7iC/4WOlOVrohbWQ4AhDQmojYQI/iS+gdF2JFLzTQ==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.10.4': - resolution: {integrity: sha512-ut3zfiTLORMxhr6y/GBxkHmzcGuVpwJYX4qyXWuBKkpw/0g0S5iO1/wW7RnLnZbAi8wS/n0atRZoaZlXWBkeJg==} + '@swc/core@1.10.6': + resolution: {integrity: sha512-zgXXsI6SAVwr6XsXyMnqlyLoa1lT+r09bAWI1xT3679ejWqI1Vnl14eJG0GjWYXCEMKHCNytfMq3OOQ62C39QQ==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '*' @@ -1129,76 +1125,51 @@ packages: '@types/yargs@17.0.33': resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - '@typescript-eslint/eslint-plugin@8.19.0': - resolution: {integrity: sha512-NggSaEZCdSrFddbctrVjkVZvFC6KGfKfNK0CU7mNK/iKHGKbzT4Wmgm08dKpcZECBu9f5FypndoMyRHkdqfT1Q==} + '@typescript-eslint/eslint-plugin@8.19.1': + resolution: {integrity: sha512-tJzcVyvvb9h/PB96g30MpxACd9IrunT7GF9wfA9/0TJ1LxGOJx1TdPzSbBBnNED7K9Ka8ybJsnEpiXPktolTLg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/parser@8.19.0': - resolution: {integrity: sha512-6M8taKyOETY1TKHp0x8ndycipTVgmp4xtg5QpEZzXxDhNvvHOJi5rLRkLr8SK3jTgD5l4fTlvBiRdfsuWydxBw==} + '@typescript-eslint/parser@8.19.1': + resolution: {integrity: sha512-67gbfv8rAwawjYx3fYArwldTQKoYfezNUT4D5ioWetr/xCrxXxvleo3uuiFuKfejipvq+og7mjz3b0G2bVyUCw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/scope-manager@8.18.0': - resolution: {integrity: sha512-PNGcHop0jkK2WVYGotk/hxj+UFLhXtGPiGtiaWgVBVP1jhMoMCHlTyJA+hEj4rszoSdLTK3fN4oOatrL0Cp+Xw==} + '@typescript-eslint/scope-manager@8.19.1': + resolution: {integrity: sha512-60L9KIuN/xgmsINzonOcMDSB8p82h95hoBfSBtXuO4jlR1R9L1xSkmVZKgCPVfavDlXihh4ARNjXhh1gGnLC7Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.19.0': - resolution: {integrity: sha512-hkoJiKQS3GQ13TSMEiuNmSCvhz7ujyqD1x3ShbaETATHrck+9RaDdUbt+osXaUuns9OFwrDTTrjtwsU8gJyyRA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/type-utils@8.19.0': - resolution: {integrity: sha512-TZs0I0OSbd5Aza4qAMpp1cdCYVnER94IziudE3JU328YUHgWu9gwiwhag+fuLeJ2LkWLXI+F/182TbG+JaBdTg==} + '@typescript-eslint/type-utils@8.19.1': + resolution: {integrity: sha512-Rp7k9lhDKBMRJB/nM9Ksp1zs4796wVNyihG9/TU9R6KCJDNkQbc2EOKjrBtLYh3396ZdpXLtr/MkaSEmNMtykw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/types@8.18.0': - resolution: {integrity: sha512-FNYxgyTCAnFwTrzpBGq+zrnoTO4x0c1CKYY5MuUTzpScqmY5fmsh2o3+57lqdI3NZucBDCzDgdEbIaNfAjAHQA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/types@8.19.0': - resolution: {integrity: sha512-8XQ4Ss7G9WX8oaYvD4OOLCjIQYgRQxO+qCiR2V2s2GxI9AUpo7riNwo6jDhKtTcaJjT8PY54j2Yb33kWtSJsmA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@8.18.0': - resolution: {integrity: sha512-rqQgFRu6yPkauz+ms3nQpohwejS8bvgbPyIDq13cgEDbkXt4LH4OkDMT0/fN1RUtzG8e8AKJyDBoocuQh8qNeg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.8.0' - - '@typescript-eslint/typescript-estree@8.19.0': - resolution: {integrity: sha512-WW9PpDaLIFW9LCbucMSdYUuGeFUz1OkWYS/5fwZwTA+l2RwlWFdJvReQqMUMBw4yJWJOfqd7An9uwut2Oj8sLw==} + '@typescript-eslint/types@8.19.1': + resolution: {integrity: sha512-JBVHMLj7B1K1v1051ZaMMgLW4Q/jre5qGK0Ew6UgXz1Rqh+/xPzV1aW581OM00X6iOfyr1be+QyW8LOUf19BbA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/utils@8.18.0': - resolution: {integrity: sha512-p6GLdY383i7h5b0Qrfbix3Vc3+J2k6QWw6UMUeY5JGfm3C5LbZ4QIZzJNoNOfgyRe0uuYKjvVOsO/jD4SJO+xg==} + '@typescript-eslint/typescript-estree@8.19.1': + resolution: {integrity: sha512-jk/TZwSMJlxlNnqhy0Eod1PNEvCkpY6MXOXE/WLlblZ6ibb32i2We4uByoKPv1d0OD2xebDv4hbs3fm11SMw8Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/utils@8.19.0': - resolution: {integrity: sha512-PTBG+0oEMPH9jCZlfg07LCB2nYI0I317yyvXGfxnvGvw4SHIOuRnQ3kadyyXY6tGdChusIHIbM5zfIbp4M6tCg==} + '@typescript-eslint/utils@8.19.1': + resolution: {integrity: sha512-IxG5gLO0Ne+KaUc8iW1A+XuKLd63o4wlbI1Zp692n1xojCl/THvgIKXJXBZixTh5dd5+yTJ/VXH7GJaaw21qXA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/visitor-keys@8.18.0': - resolution: {integrity: sha512-pCh/qEA8Lb1wVIqNvBke8UaRjJ6wrAWkJO5yyIbs8Yx6TNGYyfNjOo61tLv+WwLvoLPp4BQ8B7AHKijl8NGUfw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/visitor-keys@8.19.0': - resolution: {integrity: sha512-mCFtBbFBJDCNCWUl5y6sZSCHXw1DEFEk3c/M3nRK2a4XUB8StGFtmcEMizdjKuBzB6e/smJAAWYug3VrdLMr1w==} + '@typescript-eslint/visitor-keys@8.19.1': + resolution: {integrity: sha512-fzmjU8CHK853V/avYZAvuVut3ZTfwN5YtMaoi+X9Y9MA9keaWNHC3zEQ9zvyX/7Hj+5JkNyK1l7TOR2hevHB6Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@vscode/codicons@0.0.36': @@ -1385,8 +1356,8 @@ packages: resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} engines: {node: '>= 14'} - agentkeepalive@4.5.0: - resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} + agentkeepalive@4.6.0: + resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} engines: {node: '>= 8.0.0'} aggregate-error@3.1.0: @@ -1461,8 +1432,8 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} engines: {node: '>= 0.4'} array-find-index@1.0.2: @@ -1489,16 +1460,16 @@ packages: resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} engines: {node: '>= 0.4'} - array.prototype.flat@1.3.2: - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + array.prototype.flat@1.3.3: + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} engines: {node: '>= 0.4'} - array.prototype.flatmap@1.3.2: - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} engines: {node: '>= 0.4'} - arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} arrify@1.0.1: @@ -1531,8 +1502,8 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - bare-events@2.5.0: - resolution: {integrity: sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==} + bare-events@2.5.3: + resolution: {integrity: sha512-pCO3aoRJ0MBiRMu8B7vUga0qL3L7gO1+SW7ku6qlSsMLwuhaawnuvZDyzJY/kyC63Un0XAB0OPUcfF1eTO/V+Q==} bare-fs@2.3.5: resolution: {integrity: sha512-SlE9eTxifPDJrT6YgemQ1WGFleevzwY+XAP1Xqgl56HtcrisC2CHCZ2tq6dBpcH2TnNxwUEUGhweo+lrQtYuiw==} @@ -1543,8 +1514,8 @@ packages: bare-path@2.1.3: resolution: {integrity: sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==} - bare-stream@2.4.2: - resolution: {integrity: sha512-XZ4ln/KV4KT+PXdIWTKjsLY+quqCaEtqqtgGJVPw9AoM73By03ij64YjepK0aQvHSWDb6AfAZwqKaFu68qkrdA==} + bare-stream@2.6.1: + resolution: {integrity: sha512-eVZbtKM+4uehzrsj49KtCy3Pbg7kO1pJ3SKZ1SFrIH/0pnj9scuGGgUlNDf/7qS8WKtGdiJY5Kyhs/ivYPTB/g==} base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -1556,8 +1527,8 @@ packages: big.js@5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - billboard.js@3.14.2: - resolution: {integrity: sha512-PPqqW+zm2qP41AjAU1eegCI2a98k/52N9z1NhXT73uHXlmw4LyqdWVSEx6vFbAjN5hNDYqwsZHF/tRqWZKdhqQ==} + billboard.js@3.14.3: + resolution: {integrity: sha512-DhldgsPcAv6Y9iw7VTnY6NaRKUlZ2UvW9e60tCi2C3cxq9HzQWrnx4f0xDCk51O/SDshhE+/2PcaIdhZ9DD7+A==} binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} @@ -1591,8 +1562,8 @@ packages: browserify-zlib@0.1.4: resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} - browserslist@4.24.2: - resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} + browserslist@4.24.3: + resolution: {integrity: sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -1639,6 +1610,10 @@ packages: resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} engines: {node: '>= 0.4'} + call-bound@1.0.3: + resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} + engines: {node: '>= 0.4'} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -1657,8 +1632,8 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001687: - resolution: {integrity: sha512-0S/FDhf4ZiqrTUiQ39dKeUjYRjkv7lOZU1Dgif2rIqrTzX/1wV2hfKu9TOm1IHkdSijfLswxTFzl/cvir+SLSQ==} + caniuse-lite@1.0.30001690: + resolution: {integrity: sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==} case@1.6.3: resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==} @@ -1672,8 +1647,8 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + chalk@5.4.1: + resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} cheerio-select@2.1.0: @@ -1687,8 +1662,8 @@ packages: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} - chokidar@4.0.1: - resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} chownr@1.1.4: @@ -2078,16 +2053,16 @@ packages: resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} engines: {node: '>=12'} - data-view-buffer@1.0.1: - resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} engines: {node: '>= 0.4'} - data-view-byte-length@1.0.1: - resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} engines: {node: '>= 0.4'} - data-view-byte-offset@1.0.0: - resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} engines: {node: '>= 0.4'} debounce@1.2.1: @@ -2241,8 +2216,8 @@ packages: domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} - domutils@3.1.0: - resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} @@ -2250,8 +2225,8 @@ packages: dragula@3.7.2: resolution: {integrity: sha512-iDPdNTPZY7P/l0CQ800QiX+PNA2XF9iC3ePLWfGxeb/j8iPPedRuQdfSOfZrazgSpmaShYvYQ/jx7keWb4YNzA==} - dunder-proto@1.0.0: - resolution: {integrity: sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A==} + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} duplexer@0.1.2: @@ -2269,8 +2244,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.72: - resolution: {integrity: sha512-ZpSAUOZ2Izby7qnZluSrAlGgGQzucmFbN0n64dYzocYxnxV5ufurpj3VgEe4cUp7ir9LmeLxNYo8bVnlM8bQHw==} + electron-to-chromium@1.5.79: + resolution: {integrity: sha512-nYOxJNxQ9Om4EC88BE4pPoNI8xwSFf8pU/BAeOl4Hh/b/i6V4biTAzwV7pXi3ARKeoYO5JZKMIXTryXSVer5RA==} emoji-regex@10.4.0: resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} @@ -2295,8 +2270,8 @@ packages: end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - enhanced-resolve@5.17.1: - resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} + enhanced-resolve@5.18.0: + resolution: {integrity: sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==} engines: {node: '>=10.13.0'} entities@2.2.0: @@ -2321,8 +2296,8 @@ packages: error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - es-abstract@1.23.5: - resolution: {integrity: sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==} + es-abstract@1.23.9: + resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} engines: {node: '>= 0.4'} es-define-property@1.0.1: @@ -2333,15 +2308,15 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-module-lexer@1.5.4: - resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + es-module-lexer@1.6.0: + resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} es-object-atoms@1.0.0: resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} engines: {node: '>= 0.4'} - es-set-tostringtag@2.0.3: - resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} es-shim-unscopables@1.0.2: @@ -2516,8 +2491,8 @@ packages: exponential-backoff@3.1.1: resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} - fast-content-type-parse@2.0.0: - resolution: {integrity: sha512-fCqg/6Sps8tqk8p+kqyKqYfOF0VjPNYrqpLiqNl0RBKmD80B080AJWVV6EkSkscjToNExcXg1+Mfzftrx6+iSA==} + fast-content-type-parse@2.0.1: + resolution: {integrity: sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==} fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -2525,8 +2500,8 @@ packages: fast-fifo@1.3.2: resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} fast-json-stable-stringify@2.1.0: @@ -2535,15 +2510,15 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-uri@3.0.3: - resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==} + fast-uri@3.0.5: + resolution: {integrity: sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q==} fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} - fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + fastq@1.18.0: + resolution: {integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==} fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} @@ -2646,8 +2621,8 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} engines: {node: '>= 0.4'} functions-have-names@1.2.3: @@ -2662,12 +2637,16 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-intrinsic@1.2.5: - resolution: {integrity: sha512-Y4+pKa7XeRUPWFNvOOYHkRYrfzW07oraURSvjDmRVOJ748OrVmeXtpE4+GCEHncjCjkTxPNRt8kEbxDhsn6VTg==} + get-intrinsic@1.2.7: + resolution: {integrity: sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==} engines: {node: '>= 0.4'} - get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} get-tsconfig@4.8.1: @@ -2756,8 +2735,9 @@ packages: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} - has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} @@ -2958,8 +2938,8 @@ packages: ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} internmap@2.0.3: @@ -2977,8 +2957,8 @@ packages: resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} engines: {node: '>= 12'} - is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} is-arrayish@0.2.1: @@ -2987,8 +2967,8 @@ packages: is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - is-async-function@2.0.0: - resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + is-async-function@2.1.0: + resolution: {integrity: sha512-GExz9MtyhlZyXYLxzlJRj5WUCE661zhDa1Yna52CN57AJsymh+DvXXjyveSioqSRdxvUrdKdvqB1b5cVKsNpWQ==} engines: {node: '>= 0.4'} is-bigint@1.1.0: @@ -2999,8 +2979,8 @@ packages: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} - is-boolean-object@1.2.0: - resolution: {integrity: sha512-kR5g0+dXf/+kXnqI+lu0URKYPKgICtHGGNCDSB10AaUFj3o/HkB3u7WfpRBJGFopxxY0oH3ux7ZsDjLtK7xqvw==} + is-boolean-object@1.2.1: + resolution: {integrity: sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==} engines: {node: '>= 0.4'} is-bun-module@1.3.0: @@ -3014,16 +2994,16 @@ packages: resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} hasBin: true - is-core-module@2.15.1: - resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} - is-data-view@1.0.1: - resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} engines: {node: '>= 0.4'} - is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} engines: {node: '>= 0.4'} is-deflate@1.0.0: @@ -3038,16 +3018,16 @@ packages: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - is-finalizationregistry@1.1.0: - resolution: {integrity: sha512-qfMdqbAQEwBw78ZyReKnlA8ezmPdb9BemzIIip/JkjaZUhitfXDkkr+3QTboW0JrSXT1QWyYShpvnNHGZ4c4yA==} + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} engines: {node: '>= 0.4'} is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + is-generator-function@1.1.0: + resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} engines: {node: '>= 0.4'} is-glob@4.0.3: @@ -3069,12 +3049,8 @@ packages: resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} - is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - - is-number-object@1.1.0: - resolution: {integrity: sha512-KVSZV0Dunv9DTPkhXwcZ3Q+tUc9TsaE1ZwX5J2WMvsSGS6Md8TFPun5uwh0yRdrNerI6vf/tbJxqSx4c1ZI1Lw==} + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} engines: {node: '>= 0.4'} is-number@7.0.0: @@ -3108,28 +3084,28 @@ packages: is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - is-regex@1.2.0: - resolution: {integrity: sha512-B6ohK4ZmoftlUe+uvenXSbPJFo6U37BH7oO1B3nQH8f/7h27N56s85MhUtbFJAziz5dcmuR3i8ovUl35zp8pFA==} + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} is-set@2.0.3: resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} engines: {node: '>= 0.4'} - is-shared-array-buffer@1.0.3: - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} engines: {node: '>= 0.4'} - is-string@1.1.0: - resolution: {integrity: sha512-PlfzajuF9vSo5wErv3MJAKD/nqf9ngAs1NFQYm16nUYFO2IzxJ2hcm+IOCg+EEopdykNNUhVq5cz35cAUxU8+g==} + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} engines: {node: '>= 0.4'} - is-symbol@1.1.0: - resolution: {integrity: sha512-qS8KkNNXUZ/I+nX6QT8ZS1/Yx0A444yhzdTKxCzKkNjQ9sHErBxJnJAgh+f5YhusYECEcjo4XcyH87hn6+ks0A==} + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} engines: {node: '>= 0.4'} - is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} is-unicode-supported@0.1.0: @@ -3147,11 +3123,12 @@ packages: resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} engines: {node: '>= 0.4'} - is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + is-weakref@1.1.0: + resolution: {integrity: sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==} + engines: {node: '>= 0.4'} - is-weakset@2.0.3: - resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} engines: {node: '>= 0.4'} is-wsl@2.2.0: @@ -3462,11 +3439,15 @@ packages: resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} hasBin: true - marked@15.0.5: - resolution: {integrity: sha512-xN+kSuqHjxWg+Q47yhhZMUP+kO1qHobvXkkm6FX+7N6lDvanLDd8H7AQ0jWDDyq+fDt/cSrJaBGyWYHXy0KQWA==} + marked@15.0.6: + resolution: {integrity: sha512-Y07CUOE+HQXbVDCGl3LXggqJDbXDP2pArc2C1N1RRMN0ONiShoSsIInMd5Gsxupe7fKLpgimTV+HOJ9r7bA+pg==} engines: {node: '>= 18'} hasBin: true + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + mdn-data@2.0.28: resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} @@ -3735,8 +3716,8 @@ packages: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} object.fromentries@2.0.8: @@ -3747,12 +3728,12 @@ packages: resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} engines: {node: '>= 0.4'} - object.values@1.2.0: - resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} + object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} engines: {node: '>= 0.4'} - obliterator@2.0.4: - resolution: {integrity: sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==} + obliterator@2.0.5: + resolution: {integrity: sha512-42CPE9AhahZRsMNslczq0ctAEtqk8Eka26QofnqC346BZdHDySk3LWka23LI7ULIw11NmltpiLagIq8gBozxTw==} on-finished@2.3.0: resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} @@ -3800,6 +3781,10 @@ packages: engines: {node: '>= 20'} hasBin: true + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -3960,8 +3945,8 @@ packages: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} - postcss-calc@10.0.2: - resolution: {integrity: sha512-DT/Wwm6fCKgpYVI7ZEWuPJ4az8hiEHtCUeYjZXqU7Ou4QqYh1Df2yCQ7Ca6N7xqKPFkxN3fhf+u9KSoOCJNAjg==} + postcss-calc@10.1.0: + resolution: {integrity: sha512-uQ/LDGsf3mgsSUEXmAt3VsCSHR3aKqtEIkmB+4PhzYwRYOW5MZs/GhCCFpsOtJJkP6EC6uGipbrnaTjqaJZcJw==} engines: {node: ^18.12 || ^20.9 || >=22.0} peerDependencies: postcss: ^8.4.38 @@ -4056,8 +4041,8 @@ packages: peerDependencies: postcss: ^8.1.0 - postcss-modules-local-by-default@4.1.0: - resolution: {integrity: sha512-rm0bdSv4jC3BDma3s9H19ZddW0aHX6EoqwDYU2IfZhRN+53QrufTRo2IdkAbRqLx4R2IYbZnbjKKxg4VN5oU9Q==} + postcss-modules-local-by-default@4.2.0: + resolution: {integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 @@ -4367,8 +4352,8 @@ packages: resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==} engines: {node: '>=12'} - reflect.getprototypeof@1.0.8: - resolution: {integrity: sha512-B5dj6usc5dkk8uFliwjwDHM8To5/QwdKz9JcBZ8Ic4G1f0YmeeJTtE/ZTdgRFPAfxZFiUaPhZ1Jcs4qeagItGQ==} + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} engines: {node: '>= 0.4'} regenerator-runtime@0.14.1: @@ -4382,8 +4367,8 @@ packages: resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} hasBin: true - regexp.prototype.flags@1.5.3: - resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==} + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} relateurl@0.2.7: @@ -4424,8 +4409,9 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} hasBin: true restore-cursor@4.0.0: @@ -4459,8 +4445,8 @@ packages: rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} - safe-array-concat@1.1.2: - resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} engines: {node: '>=0.4'} safe-buffer@5.1.2: @@ -4472,8 +4458,12 @@ packages: safe-identifier@0.4.2: resolution: {integrity: sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==} - safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} safer-buffer@2.1.2: @@ -4619,8 +4609,8 @@ packages: webpack: optional: true - sass@1.82.0: - resolution: {integrity: sha512-j4GMCTa8elGyN9A7x7bEglx0VgSpNUG4W4wNedQ33wSMdnkqQCT8HTwOaVSV4e6yQovcu/3Oc4coJP/l0xhL2Q==} + sass@1.83.1: + resolution: {integrity: sha512-EVJbDaEs4Rr3F0glJzFSOvtg2/oy2V/YrGFPqPY24UqcLDWcI9ZY5sN+qyO3c/QCZwzgfirvhXvINiJCE/OLcA==} engines: {node: '>=14.0.0'} hasBin: true @@ -4665,6 +4655,10 @@ packages: resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} engines: {node: '>= 0.4'} + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} @@ -4690,8 +4684,20 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} engines: {node: '>= 0.4'} signal-exit@3.0.7: @@ -4704,8 +4710,8 @@ packages: signal-polyfill@0.2.1: resolution: {integrity: sha512-HtchWosT4UT1i6yIMmxjg7gqkDT9lXvQtJRGVppi2TDwVjgs8cS+7ATVFqBvgJGThludjxrxJFOvmzzGSAc8OA==} - signal-utils@0.20.0: - resolution: {integrity: sha512-EH1pz4/hfwHOKX5Zdgo62RONuo0pHBWN0zxlBiQHmC1W2CffwNZdcNTvFcBT3QZppdfjx2MSmGYJWvCuLUN8FQ==} + signal-utils@0.21.1: + resolution: {integrity: sha512-i9cdLSvVH4j8ql8mz2lyrA93xL499P8wEbIev3ldSriXeUwqh+wM4Q5VPhIZ19gPtIS4BOopJuKB8l1+wH9LCg==} peerDependencies: signal-polyfill: ^0.2.0 @@ -4824,8 +4830,8 @@ packages: stream-shift@1.0.3: resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} - streamx@2.21.0: - resolution: {integrity: sha512-Qz6MsDZXJ6ur9u+b+4xCG18TluU7PGlRfXVAAjNiGsFrBUt/ioyLkxbFaKJygoPs+/kW4VyBj0bSj89Qu0IGyg==} + streamx@2.21.1: + resolution: {integrity: sha512-PhP9wUnFLa+91CPy3N6tiQsK+gnYyUNuk15S3YG/zjYE7RuPeCjJngqnzpC31ow0lzBHQ+QGO4cNJnd0djYUsw==} string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} @@ -4839,12 +4845,13 @@ packages: resolution: {integrity: sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==} engines: {node: '>=16'} - string.prototype.trim@1.2.9: - resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} engines: {node: '>= 0.4'} - string.prototype.trimend@1.0.8: - resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} string.prototype.trimstart@1.0.8: resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} @@ -4973,8 +4980,8 @@ packages: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} - text-decoder@1.2.2: - resolution: {integrity: sha512-/MDslo7ZyWTA2vnk1j7XoDVfXsGk3tp+zFEJHJGm0UjIlQifonVFwlVbQDFh8KJzTBnT8ie115TYqir6bclddA==} + text-decoder@1.2.3: + resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} through2@2.0.5: resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} @@ -5009,11 +5016,11 @@ packages: resolution: {integrity: sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==} engines: {node: '>=12'} - ts-api-utils@1.4.3: - resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} - engines: {node: '>=16'} + ts-api-utils@2.0.0: + resolution: {integrity: sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==} + engines: {node: '>=18.12'} peerDependencies: - typescript: '>=4.2.0' + typescript: '>=4.8.4' ts-loader@9.5.1: resolution: {integrity: sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==} @@ -5064,16 +5071,16 @@ packages: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} - typed-array-buffer@1.0.2: - resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} - typed-array-byte-length@1.0.1: - resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} engines: {node: '>= 0.4'} - typed-array-byte-offset@1.0.3: - resolution: {integrity: sha512-GsvTyUHTriq6o/bHcTd0vM7OQ9JEdlvluu9YISaA7+KzDzPaIzEeDFNkTfhdE3MYcNhNi0vq/LlegYgIs5yPAw==} + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} engines: {node: '>= 0.4'} typed-array-length@1.0.7: @@ -5083,8 +5090,8 @@ packages: typed-rest-client@1.8.11: resolution: {integrity: sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==} - typescript-eslint@8.19.0: - resolution: {integrity: sha512-Ni8sUkVWYK4KAcTtPjQ/UTiRk6jcsuDhPpxULapUDi8A/l8TSBk+t1GtJA1RsCzIJg0q6+J7bf35AwQigENWRQ==} + typescript-eslint@8.19.1: + resolution: {integrity: sha512-LKPUQpdEMVOeKluHi8md7rwLcoXHhwvWp3x+sJkMuq3gGm9yaYJtPo8sRZSblMFJ5pcOGCAak/scKf1mvZDlQw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -5108,8 +5115,9 @@ packages: engines: {node: '>=0.8.0'} hasBin: true - unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} uncontrollable@5.1.0: resolution: {integrity: sha512-5FXYaFANKaafg4IVZXUNtGyzsnYEvqlr9wQ3WpZxFpEUxl29A3H6Q4G1Dnnorvq9TGOGATBApWR4YpLAh+F5hw==} @@ -5242,20 +5250,20 @@ packages: whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - which-boxed-primitive@1.1.0: - resolution: {integrity: sha512-Ei7Miu/AXe2JJ4iNF5j/UphAgRoma4trE6PtisM09bPygb3egMH3YLW/befsWb1A1AxvNSFidOFTB18XtnIIng==} + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} - which-builtin-type@1.2.0: - resolution: {integrity: sha512-I+qLGQ/vucCby4tf5HsLmGueEla4ZhwTBSqaooS+Y0BuxN4Cp+okmGuV+8mXZ84KDI9BA+oklo+RzKg0ONdSUA==} + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} engines: {node: '>= 0.4'} which-collection@1.0.2: resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} engines: {node: '>= 0.4'} - which-typed-array@1.1.16: - resolution: {integrity: sha512-g+N+GAWiRj66DngFwHvISJd+ITsyphZvD1vChfVg6cEdnzy53GzB3oy0fUNlvhz7H7+MiqhYr26qxQShCpKTTQ==} + which-typed-array@1.1.18: + resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==} engines: {node: '>= 0.4'} which@2.0.2: @@ -5425,7 +5433,7 @@ snapshots: '@azure/core-tracing': 1.2.0 '@azure/core-util': 1.11.0 '@azure/logger': 1.1.4 - '@azure/msal-browser': 3.27.0 + '@azure/msal-browser': 3.28.0 '@azure/msal-node': 2.16.2 events: 3.3.0 jws: 4.0.0 @@ -5439,7 +5447,7 @@ snapshots: dependencies: tslib: 2.8.1 - '@azure/msal-browser@3.27.0': + '@azure/msal-browser@3.28.0': dependencies: '@azure/msal-common': 14.16.0 @@ -5478,14 +5486,14 @@ snapshots: '@discoveryjs/json-ext@0.6.3': {} - '@eamodio/eslint-lite-webpack-plugin@0.2.0(@swc/core@1.10.4)(esbuild@0.24.2)(eslint@9.17.0(jiti@2.4.0))(webpack-cli@6.0.1)(webpack@5.97.1)': + '@eamodio/eslint-lite-webpack-plugin@0.2.0(@swc/core@1.10.6)(esbuild@0.24.2)(eslint@9.17.0(jiti@2.4.0))(webpack-cli@6.0.1)(webpack@5.97.1)': dependencies: '@types/eslint': 9.6.1 - '@types/webpack': 5.28.5(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) + '@types/webpack': 5.28.5(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) eslint: 9.17.0(jiti@2.4.0) - fast-glob: 3.3.2 + fast-glob: 3.3.3 minimatch: 10.0.1 - webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) transitivePeerDependencies: - '@swc/core' - esbuild @@ -5600,8 +5608,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.16.0': {} - '@eslint/js@9.17.0': {} '@eslint/object-schema@2.1.5': {} @@ -5610,16 +5616,16 @@ snapshots: dependencies: levn: 0.4.1 - '@floating-ui/core@1.6.8': + '@floating-ui/core@1.6.9': dependencies: - '@floating-ui/utils': 0.2.8 + '@floating-ui/utils': 0.2.9 - '@floating-ui/dom@1.6.12': + '@floating-ui/dom@1.6.13': dependencies: - '@floating-ui/core': 1.6.8 - '@floating-ui/utils': 0.2.8 + '@floating-ui/core': 1.6.9 + '@floating-ui/utils': 0.2.9 - '@floating-ui/utils@0.2.8': {} + '@floating-ui/utils@0.2.9': {} '@gar/promisify@1.1.3': {} @@ -5643,7 +5649,7 @@ snapshots: '@gitkraken/shared-web-components@0.1.1-rc.15': dependencies: - '@floating-ui/dom': 1.6.12 + '@floating-ui/dom': 1.6.13 typescript: 4.9.5 '@gk-nzaytsev/fast-string-truncated-width@1.1.0': {} @@ -5685,7 +5691,7 @@ snapshots: '@types/yargs': 17.0.33 chalk: 4.1.2 - '@jridgewell/gen-mapping@0.3.5': + '@jridgewell/gen-mapping@0.3.8': dependencies: '@jridgewell/set-array': 1.2.1 '@jridgewell/sourcemap-codec': 1.5.0 @@ -5697,7 +5703,7 @@ snapshots: '@jridgewell/source-map@0.3.6': dependencies: - '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 '@jridgewell/sourcemap-codec@1.5.0': {} @@ -5750,7 +5756,7 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 + fastq: 1.18.0 '@nolyfill/is-core-module@1.0.39': {} @@ -5768,7 +5774,7 @@ snapshots: mkdirp: 1.0.4 rimraf: 3.0.2 - '@octokit/endpoint@10.1.1': + '@octokit/endpoint@10.1.2': dependencies: '@octokit/types': 13.6.2 universal-user-agent: 7.0.2 @@ -5787,10 +5793,10 @@ snapshots: '@octokit/request@9.1.4': dependencies: - '@octokit/endpoint': 10.1.1 + '@octokit/endpoint': 10.1.2 '@octokit/request-error': 6.1.6 '@octokit/types': 13.6.2 - fast-content-type-parse: 2.0.0 + fast-content-type-parse: 2.0.1 universal-user-agent: 7.0.2 '@octokit/types@13.6.2': @@ -5963,14 +5969,14 @@ snapshots: '@shoelace-style/localize@3.2.1': {} - '@shoelace-style/shoelace@2.19.1(@floating-ui/utils@0.2.8)(@types/react@17.0.83)': + '@shoelace-style/shoelace@2.19.1(@floating-ui/utils@0.2.9)(@types/react@17.0.83)': dependencies: '@ctrl/tinycolor': 4.1.0 - '@floating-ui/dom': 1.6.12 + '@floating-ui/dom': 1.6.13 '@lit/react': 1.0.6(@types/react@17.0.83) '@shoelace-style/animations': 1.2.0 '@shoelace-style/localize': 3.2.1 - composed-offset-position: 0.0.6(@floating-ui/utils@0.2.8) + composed-offset-position: 0.0.6(@floating-ui/utils@0.2.9) lit: 3.2.1 qr-creator: 1.0.0 transitivePeerDependencies: @@ -5981,51 +5987,51 @@ snapshots: '@sindresorhus/merge-streams@2.3.0': {} - '@swc/core-darwin-arm64@1.10.4': + '@swc/core-darwin-arm64@1.10.6': optional: true - '@swc/core-darwin-x64@1.10.4': + '@swc/core-darwin-x64@1.10.6': optional: true - '@swc/core-linux-arm-gnueabihf@1.10.4': + '@swc/core-linux-arm-gnueabihf@1.10.6': optional: true - '@swc/core-linux-arm64-gnu@1.10.4': + '@swc/core-linux-arm64-gnu@1.10.6': optional: true - '@swc/core-linux-arm64-musl@1.10.4': + '@swc/core-linux-arm64-musl@1.10.6': optional: true - '@swc/core-linux-x64-gnu@1.10.4': + '@swc/core-linux-x64-gnu@1.10.6': optional: true - '@swc/core-linux-x64-musl@1.10.4': + '@swc/core-linux-x64-musl@1.10.6': optional: true - '@swc/core-win32-arm64-msvc@1.10.4': + '@swc/core-win32-arm64-msvc@1.10.6': optional: true - '@swc/core-win32-ia32-msvc@1.10.4': + '@swc/core-win32-ia32-msvc@1.10.6': optional: true - '@swc/core-win32-x64-msvc@1.10.4': + '@swc/core-win32-x64-msvc@1.10.6': optional: true - '@swc/core@1.10.4': + '@swc/core@1.10.6': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.17 optionalDependencies: - '@swc/core-darwin-arm64': 1.10.4 - '@swc/core-darwin-x64': 1.10.4 - '@swc/core-linux-arm-gnueabihf': 1.10.4 - '@swc/core-linux-arm64-gnu': 1.10.4 - '@swc/core-linux-arm64-musl': 1.10.4 - '@swc/core-linux-x64-gnu': 1.10.4 - '@swc/core-linux-x64-musl': 1.10.4 - '@swc/core-win32-arm64-msvc': 1.10.4 - '@swc/core-win32-ia32-msvc': 1.10.4 - '@swc/core-win32-x64-msvc': 1.10.4 + '@swc/core-darwin-arm64': 1.10.6 + '@swc/core-darwin-x64': 1.10.6 + '@swc/core-linux-arm-gnueabihf': 1.10.6 + '@swc/core-linux-arm64-gnu': 1.10.6 + '@swc/core-linux-arm64-musl': 1.10.6 + '@swc/core-linux-x64-gnu': 1.10.6 + '@swc/core-linux-x64-musl': 1.10.6 + '@swc/core-win32-arm64-msvc': 1.10.6 + '@swc/core-win32-ia32-msvc': 1.10.6 + '@swc/core-win32-x64-msvc': 1.10.6 '@swc/counter@0.1.3': {} @@ -6133,11 +6139,11 @@ snapshots: '@types/vscode@1.82.0': {} - '@types/webpack@5.28.5(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1)': + '@types/webpack@5.28.5(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1)': dependencies: '@types/node': 18.15.13 tapable: 2.2.1 - webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) transitivePeerDependencies: - '@swc/core' - esbuild @@ -6150,118 +6156,81 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.19.0(@typescript-eslint/parser@8.19.0(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2))(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2)': + '@typescript-eslint/eslint-plugin@8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2))(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.19.0(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2) - '@typescript-eslint/scope-manager': 8.19.0 - '@typescript-eslint/type-utils': 8.19.0(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2) - '@typescript-eslint/utils': 8.19.0(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.19.0 + '@typescript-eslint/parser': 8.19.1(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.19.1 + '@typescript-eslint/type-utils': 8.19.1(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2) + '@typescript-eslint/utils': 8.19.1(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.19.1 eslint: 9.17.0(jiti@2.4.0) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 1.4.3(typescript@5.7.2) + ts-api-utils: 2.0.0(typescript@5.7.2) typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.19.0(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2)': + '@typescript-eslint/parser@8.19.1(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2)': dependencies: - '@typescript-eslint/scope-manager': 8.19.0 - '@typescript-eslint/types': 8.19.0 - '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.19.0 + '@typescript-eslint/scope-manager': 8.19.1 + '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.19.1 debug: 4.4.0(supports-color@8.1.1) eslint: 9.17.0(jiti@2.4.0) typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.18.0': - dependencies: - '@typescript-eslint/types': 8.18.0 - '@typescript-eslint/visitor-keys': 8.18.0 - - '@typescript-eslint/scope-manager@8.19.0': + '@typescript-eslint/scope-manager@8.19.1': dependencies: - '@typescript-eslint/types': 8.19.0 - '@typescript-eslint/visitor-keys': 8.19.0 + '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/visitor-keys': 8.19.1 - '@typescript-eslint/type-utils@8.19.0(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2)': + '@typescript-eslint/type-utils@8.19.1(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2)': dependencies: - '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) - '@typescript-eslint/utils': 8.19.0(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.2) + '@typescript-eslint/utils': 8.19.1(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2) debug: 4.4.0(supports-color@8.1.1) eslint: 9.17.0(jiti@2.4.0) - ts-api-utils: 1.4.3(typescript@5.7.2) + ts-api-utils: 2.0.0(typescript@5.7.2) typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.18.0': {} + '@typescript-eslint/types@8.19.1': {} - '@typescript-eslint/types@8.19.0': {} - - '@typescript-eslint/typescript-estree@8.18.0(typescript@5.7.2)': + '@typescript-eslint/typescript-estree@8.19.1(typescript@5.7.2)': dependencies: - '@typescript-eslint/types': 8.18.0 - '@typescript-eslint/visitor-keys': 8.18.0 + '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/visitor-keys': 8.19.1 debug: 4.4.0(supports-color@8.1.1) - fast-glob: 3.3.2 + fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.4.3(typescript@5.7.2) + ts-api-utils: 2.0.0(typescript@5.7.2) typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.19.0(typescript@5.7.2)': - dependencies: - '@typescript-eslint/types': 8.19.0 - '@typescript-eslint/visitor-keys': 8.19.0 - debug: 4.4.0(supports-color@8.1.1) - fast-glob: 3.3.2 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.6.3 - ts-api-utils: 1.4.3(typescript@5.7.2) - typescript: 5.7.2 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.18.0(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2)': + '@typescript-eslint/utils@8.19.1(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2)': dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@9.17.0(jiti@2.4.0)) - '@typescript-eslint/scope-manager': 8.18.0 - '@typescript-eslint/types': 8.18.0 - '@typescript-eslint/typescript-estree': 8.18.0(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.19.1 + '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.2) eslint: 9.17.0(jiti@2.4.0) typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.19.0(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2)': + '@typescript-eslint/visitor-keys@8.19.1': dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.17.0(jiti@2.4.0)) - '@typescript-eslint/scope-manager': 8.19.0 - '@typescript-eslint/types': 8.19.0 - '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) - eslint: 9.17.0(jiti@2.4.0) - typescript: 5.7.2 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/visitor-keys@8.18.0': - dependencies: - '@typescript-eslint/types': 8.18.0 - eslint-visitor-keys: 4.2.0 - - '@typescript-eslint/visitor-keys@8.19.0': - dependencies: - '@typescript-eslint/types': 8.19.0 + '@typescript-eslint/types': 8.19.1 eslint-visitor-keys: 4.2.0 '@vscode/codicons@0.0.36': {} @@ -6271,7 +6240,7 @@ snapshots: '@types/mocha': 10.0.10 c8: 9.1.0 chokidar: 3.6.0 - enhanced-resolve: 5.17.1 + enhanced-resolve: 5.18.0 glob: 10.4.5 minimatch: 9.0.5 mocha: 10.8.2 @@ -6456,17 +6425,17 @@ snapshots: '@webpack-cli/configtest@3.0.1(webpack-cli@6.0.1)(webpack@5.97.1)': dependencies: - webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) webpack-cli: 6.0.1(webpack-bundle-analyzer@4.10.2)(webpack@5.97.1) '@webpack-cli/info@3.0.1(webpack-cli@6.0.1)(webpack@5.97.1)': dependencies: - webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) webpack-cli: 6.0.1(webpack-bundle-analyzer@4.10.2)(webpack@5.97.1) '@webpack-cli/serve@3.0.1(webpack-cli@6.0.1)(webpack@5.97.1)': dependencies: - webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) webpack-cli: 6.0.1(webpack-bundle-analyzer@4.10.2)(webpack@5.97.1) '@xmldom/xmldom@0.7.13': {} @@ -6502,7 +6471,7 @@ snapshots: agent-base@7.1.3: {} - agentkeepalive@4.5.0: + agentkeepalive@4.6.0: dependencies: humanize-ms: 1.2.1 @@ -6534,7 +6503,7 @@ snapshots: ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.0.3 + fast-uri: 3.0.5 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 @@ -6573,10 +6542,10 @@ snapshots: argparse@2.0.1: {} - array-buffer-byte-length@1.0.1: + array-buffer-byte-length@1.0.2: dependencies: - call-bind: 1.0.8 - is-array-buffer: 3.0.4 + call-bound: 1.0.3 + is-array-buffer: 3.0.5 optional: true array-find-index@1.0.2: {} @@ -6585,10 +6554,10 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.5 + es-abstract: 1.23.9 es-object-atoms: 1.0.0 - get-intrinsic: 1.2.5 - is-string: 1.1.0 + get-intrinsic: 1.2.7 + is-string: 1.1.1 optional: true array-union@1.0.2: @@ -6603,38 +6572,37 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.5 + es-abstract: 1.23.9 es-errors: 1.3.0 es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 optional: true - array.prototype.flat@1.3.2: + array.prototype.flat@1.3.3: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.5 + es-abstract: 1.23.9 es-shim-unscopables: 1.0.2 optional: true - array.prototype.flatmap@1.3.2: + array.prototype.flatmap@1.3.3: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.5 + es-abstract: 1.23.9 es-shim-unscopables: 1.0.2 optional: true - arraybuffer.prototype.slice@1.0.3: + arraybuffer.prototype.slice@1.0.4: dependencies: - array-buffer-byte-length: 1.0.1 + array-buffer-byte-length: 1.0.2 call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.5 + es-abstract: 1.23.9 es-errors: 1.3.0 - get-intrinsic: 1.2.5 - is-array-buffer: 3.0.4 - is-shared-array-buffer: 1.0.3 + get-intrinsic: 1.2.7 + is-array-buffer: 3.0.5 optional: true arrify@1.0.1: {} @@ -6645,8 +6613,8 @@ snapshots: autoprefixer@10.4.20(postcss@8.4.49): dependencies: - browserslist: 4.24.2 - caniuse-lite: 1.0.30001687 + browserslist: 4.24.3 + caniuse-lite: 1.0.30001690 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -6667,14 +6635,14 @@ snapshots: balanced-match@1.0.2: {} - bare-events@2.5.0: + bare-events@2.5.3: optional: true bare-fs@2.3.5: dependencies: - bare-events: 2.5.0 + bare-events: 2.5.3 bare-path: 2.1.3 - bare-stream: 2.4.2 + bare-stream: 2.6.1 optional: true bare-os@2.4.4: @@ -6685,9 +6653,9 @@ snapshots: bare-os: 2.4.4 optional: true - bare-stream@2.4.2: + bare-stream@2.6.1: dependencies: - streamx: 2.21.0 + streamx: 2.21.1 optional: true base64-js@1.5.1: {} @@ -6698,7 +6666,7 @@ snapshots: big.js@5.2.2: {} - billboard.js@3.14.2: + billboard.js@3.14.3: dependencies: '@types/d3-selection': 3.0.11 '@types/d3-transition': 3.0.9 @@ -6755,12 +6723,12 @@ snapshots: dependencies: pako: 0.2.9 - browserslist@4.24.2: + browserslist@4.24.3: dependencies: - caniuse-lite: 1.0.30001687 - electron-to-chromium: 1.5.72 + caniuse-lite: 1.0.30001690 + electron-to-chromium: 1.5.79 node-releases: 2.0.19 - update-browserslist-db: 1.1.1(browserslist@4.24.2) + update-browserslist-db: 1.1.1(browserslist@4.24.3) buffer-builder@0.2.0: {} @@ -6835,8 +6803,14 @@ snapshots: dependencies: call-bind-apply-helpers: 1.0.1 es-define-property: 1.0.1 - get-intrinsic: 1.2.5 + get-intrinsic: 1.2.7 set-function-length: 1.2.2 + optional: true + + call-bound@1.0.3: + dependencies: + call-bind-apply-helpers: 1.0.1 + get-intrinsic: 1.2.7 callsites@3.1.0: {} @@ -6856,12 +6830,12 @@ snapshots: caniuse-api@3.0.0: dependencies: - browserslist: 4.24.2 - caniuse-lite: 1.0.30001687 + browserslist: 4.24.3 + caniuse-lite: 1.0.30001690 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001687: {} + caniuse-lite@1.0.30001690: {} case@1.6.3: {} @@ -6876,7 +6850,7 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 - chalk@5.3.0: {} + chalk@5.4.1: {} cheerio-select@2.1.0: dependencies: @@ -6885,14 +6859,14 @@ snapshots: css-what: 6.1.0 domelementtype: 2.3.0 domhandler: 5.0.3 - domutils: 3.1.0 + domutils: 3.2.2 cheerio@1.0.0-rc.12: dependencies: cheerio-select: 2.1.0 dom-serializer: 2.0.0 domhandler: 5.0.3 - domutils: 3.1.0 + domutils: 3.2.2 htmlparser2: 8.0.2 parse5: 7.2.1 parse5-htmlparser2-tree-adapter: 7.1.0 @@ -6909,7 +6883,7 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - chokidar@4.0.1: + chokidar@4.0.3: dependencies: readdirp: 4.0.2 @@ -6925,7 +6899,7 @@ snapshots: circular-dependency-plugin@5.2.2(webpack@5.97.1): dependencies: - webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) classnames@2.5.1: {} @@ -6938,7 +6912,7 @@ snapshots: clean-webpack-plugin@4.0.0(webpack@5.97.1): dependencies: del: 4.1.1 - webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) cli-cursor@4.0.0: dependencies: @@ -7018,9 +6992,9 @@ snapshots: commander@9.5.0: {} - composed-offset-position@0.0.6(@floating-ui/utils@0.2.8): + composed-offset-position@0.0.6(@floating-ui/utils@0.2.9): dependencies: - '@floating-ui/utils': 0.2.8 + '@floating-ui/utils': 0.2.9 concat-map@0.0.1: {} @@ -7046,13 +7020,13 @@ snapshots: copy-webpack-plugin@12.0.2(webpack@5.97.1): dependencies: - fast-glob: 3.3.2 + fast-glob: 3.3.3 glob-parent: 6.0.2 globby: 14.0.2 normalize-path: 3.0.0 schema-utils: 4.3.0 serialize-javascript: 6.0.2 - webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) core-js@2.6.12: {} @@ -7082,7 +7056,7 @@ snapshots: cheerio: 1.0.0-rc.12 html-webpack-plugin: 5.6.3(webpack@5.97.1) lodash: 4.17.21 - webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) css-declaration-sorter@7.2.0(postcss@8.4.49): dependencies: @@ -7093,13 +7067,13 @@ snapshots: icss-utils: 5.1.0(postcss@8.4.49) postcss: 8.4.49 postcss-modules-extract-imports: 3.1.0(postcss@8.4.49) - postcss-modules-local-by-default: 4.1.0(postcss@8.4.49) + postcss-modules-local-by-default: 4.2.0(postcss@8.4.49) postcss-modules-scope: 3.2.1(postcss@8.4.49) postcss-modules-values: 4.0.0(postcss@8.4.49) postcss-value-parser: 4.2.0 semver: 7.6.3 optionalDependencies: - webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) css-minimizer-webpack-plugin@7.0.0(esbuild@0.24.2)(webpack@5.97.1): dependencies: @@ -7109,7 +7083,7 @@ snapshots: postcss: 8.4.49 schema-utils: 4.3.0 serialize-javascript: 6.0.2 - webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) optionalDependencies: esbuild: 0.24.2 @@ -7126,7 +7100,7 @@ snapshots: boolbase: 1.0.0 css-what: 6.1.0 domhandler: 5.0.3 - domutils: 3.1.0 + domutils: 3.2.2 nth-check: 2.1.1 css-tree@2.2.1: @@ -7146,7 +7120,7 @@ snapshots: cssnano-preset-advanced@7.0.6(postcss@8.4.49): dependencies: autoprefixer: 10.4.20(postcss@8.4.49) - browserslist: 4.24.2 + browserslist: 4.24.3 cssnano-preset-default: 7.0.6(postcss@8.4.49) postcss: 8.4.49 postcss-discard-unused: 7.0.3(postcss@8.4.49) @@ -7156,11 +7130,11 @@ snapshots: cssnano-preset-default@7.0.6(postcss@8.4.49): dependencies: - browserslist: 4.24.2 + browserslist: 4.24.3 css-declaration-sorter: 7.2.0(postcss@8.4.49) cssnano-utils: 5.0.0(postcss@8.4.49) postcss: 8.4.49 - postcss-calc: 10.0.2(postcss@8.4.49) + postcss-calc: 10.1.0(postcss@8.4.49) postcss-colormin: 7.0.2(postcss@8.4.49) postcss-convert-values: 7.0.4(postcss@8.4.49) postcss-discard-comments: 7.0.3(postcss@8.4.49) @@ -7290,25 +7264,25 @@ snapshots: d3-selection: 3.0.0 d3-transition: 3.0.1(d3-selection@3.0.0) - data-view-buffer@1.0.1: + data-view-buffer@1.0.2: dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 es-errors: 1.3.0 - is-data-view: 1.0.1 + is-data-view: 1.0.2 optional: true - data-view-byte-length@1.0.1: + data-view-byte-length@1.0.2: dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 es-errors: 1.3.0 - is-data-view: 1.0.1 + is-data-view: 1.0.2 optional: true - data-view-byte-offset@1.0.0: + data-view-byte-offset@1.0.1: dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 es-errors: 1.3.0 - is-data-view: 1.0.1 + is-data-view: 1.0.2 optional: true debounce@1.2.1: {} @@ -7355,6 +7329,7 @@ snapshots: es-define-property: 1.0.1 es-errors: 1.3.0 gopd: 1.2.0 + optional: true define-lazy-prop@2.0.0: {} @@ -7446,7 +7421,7 @@ snapshots: domelementtype: 2.3.0 domhandler: 4.3.1 - domutils@3.1.0: + domutils@3.2.2: dependencies: dom-serializer: 2.0.0 domelementtype: 2.3.0 @@ -7462,7 +7437,7 @@ snapshots: contra: 1.9.4 crossvent: 1.5.4 - dunder-proto@1.0.0: + dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.1 es-errors: 1.3.0 @@ -7485,7 +7460,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.72: {} + electron-to-chromium@1.5.79: {} emoji-regex@10.4.0: {} @@ -7506,7 +7481,7 @@ snapshots: dependencies: once: 1.4.0 - enhanced-resolve@5.17.1: + enhanced-resolve@5.18.0: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 @@ -7525,70 +7500,75 @@ snapshots: dependencies: is-arrayish: 0.2.1 - es-abstract@1.23.5: + es-abstract@1.23.9: dependencies: - array-buffer-byte-length: 1.0.1 - arraybuffer.prototype.slice: 1.0.3 + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 available-typed-arrays: 1.0.7 call-bind: 1.0.8 - data-view-buffer: 1.0.1 - data-view-byte-length: 1.0.1 - data-view-byte-offset: 1.0.0 + call-bound: 1.0.3 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 es-define-property: 1.0.1 es-errors: 1.3.0 es-object-atoms: 1.0.0 - es-set-tostringtag: 2.0.3 + es-set-tostringtag: 2.1.0 es-to-primitive: 1.3.0 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.5 - get-symbol-description: 1.0.2 + function.prototype.name: 1.1.8 + get-intrinsic: 1.2.7 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 globalthis: 1.0.4 gopd: 1.2.0 has-property-descriptors: 1.0.2 has-proto: 1.2.0 has-symbols: 1.1.0 hasown: 2.0.2 - internal-slot: 1.0.7 - is-array-buffer: 3.0.4 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 is-callable: 1.2.7 - is-data-view: 1.0.1 - is-negative-zero: 2.0.3 - is-regex: 1.2.0 - is-shared-array-buffer: 1.0.3 - is-string: 1.1.0 - is-typed-array: 1.1.13 - is-weakref: 1.0.2 + is-data-view: 1.0.2 + is-regex: 1.2.1 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.0 + math-intrinsics: 1.1.0 object-inspect: 1.13.3 object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.3 - safe-array-concat: 1.1.2 - safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.9 - string.prototype.trimend: 1.0.8 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.2 - typed-array-byte-length: 1.0.1 - typed-array-byte-offset: 1.0.3 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 typed-array-length: 1.0.7 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.16 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.18 optional: true es-define-property@1.0.1: {} es-errors@1.3.0: {} - es-module-lexer@1.5.4: {} + es-module-lexer@1.6.0: {} es-object-atoms@1.0.0: dependencies: es-errors: 1.3.0 - optional: true - es-set-tostringtag@2.0.3: + es-set-tostringtag@2.1.0: dependencies: - get-intrinsic: 1.2.5 + es-errors: 1.3.0 + get-intrinsic: 1.2.7 has-tostringtag: 1.0.2 hasown: 2.0.2 optional: true @@ -7601,8 +7581,8 @@ snapshots: es-to-primitive@1.3.0: dependencies: is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.1.0 + is-date-object: 1.1.0 + is-symbol: 1.1.1 optional: true esbuild-loader@4.2.2(webpack@5.97.1): @@ -7610,7 +7590,7 @@ snapshots: esbuild: 0.24.2 get-tsconfig: 4.8.1 loader-utils: 2.0.4 - webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) webpack-sources: 1.4.3 esbuild-node-externals@1.16.0(esbuild@0.24.2): @@ -7622,9 +7602,9 @@ snapshots: esbuild-sass-plugin@3.3.1(esbuild@0.24.2)(sass-embedded@1.77.8): dependencies: esbuild: 0.24.2 - resolve: 1.22.8 + resolve: 1.22.10 safe-identifier: 0.4.2 - sass: 1.82.0 + sass: 1.83.1 sass-embedded: 1.77.8 esbuild@0.24.2: @@ -7666,8 +7646,8 @@ snapshots: eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7 - is-core-module: 2.15.1 - resolve: 1.22.8 + is-core-module: 2.16.1 + resolve: 1.22.10 transitivePeerDependencies: - supports-color @@ -7675,24 +7655,24 @@ snapshots: dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.0(supports-color@8.1.1) - enhanced-resolve: 5.17.1 + enhanced-resolve: 5.18.0 eslint: 9.17.0(jiti@2.4.0) - fast-glob: 3.3.2 + fast-glob: 3.3.3 get-tsconfig: 4.8.1 is-bun-module: 1.3.0 is-glob: 4.0.3 stable-hash: 0.0.4 optionalDependencies: - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@8.19.0(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@9.17.0(jiti@2.4.0)) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@8.19.1(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@9.17.0(jiti@2.4.0)) eslint-plugin-import-x: 4.6.1(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.19.0(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@9.17.0(jiti@2.4.0)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.19.1(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@9.17.0(jiti@2.4.0)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.19.0(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2) + '@typescript-eslint/parser': 8.19.1(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2) eslint: 9.17.0(jiti@2.4.0) eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import-x@4.6.1(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2))(eslint-plugin-import@2.29.1)(eslint@9.17.0(jiti@2.4.0)) @@ -7707,11 +7687,11 @@ snapshots: eslint-plugin-import-x@4.6.1(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2): dependencies: '@types/doctrine': 0.0.9 - '@typescript-eslint/scope-manager': 8.18.0 - '@typescript-eslint/utils': 8.18.0(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.19.1 + '@typescript-eslint/utils': 8.19.1(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2) debug: 4.4.0(supports-color@8.1.1) doctrine: 3.0.0 - enhanced-resolve: 5.17.1 + enhanced-resolve: 5.18.0 eslint: 9.17.0(jiti@2.4.0) eslint-import-resolver-node: 0.3.9 get-tsconfig: 4.8.1 @@ -7724,28 +7704,28 @@ snapshots: - supports-color - typescript - eslint-plugin-import@2.29.1(@typescript-eslint/parser@8.19.0(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@9.17.0(jiti@2.4.0)): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@8.19.1(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@9.17.0(jiti@2.4.0)): dependencies: array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 - array.prototype.flat: 1.3.2 - array.prototype.flatmap: 1.3.2 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 eslint: 9.17.0(jiti@2.4.0) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.19.0(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@9.17.0(jiti@2.4.0)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.19.1(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@9.17.0(jiti@2.4.0)) hasown: 2.0.2 - is-core-module: 2.15.1 + is-core-module: 2.16.1 is-glob: 4.0.3 minimatch: 3.1.2 object.fromentries: 2.0.8 object.groupby: 1.0.3 - object.values: 1.2.0 + object.values: 1.2.1 semver: 6.3.1 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.19.0(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2) + '@typescript-eslint/parser': 8.19.1(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -7846,13 +7826,13 @@ snapshots: exponential-backoff@3.1.1: {} - fast-content-type-parse@2.0.0: {} + fast-content-type-parse@2.0.1: {} fast-deep-equal@3.1.3: {} fast-fifo@1.3.2: {} - fast-glob@3.3.2: + fast-glob@3.3.3: dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 @@ -7864,11 +7844,11 @@ snapshots: fast-levenshtein@2.0.6: {} - fast-uri@3.0.3: {} + fast-uri@3.0.5: {} fastest-levenshtein@1.0.16: {} - fastq@1.17.1: + fastq@1.18.0: dependencies: reusify: 1.0.4 @@ -7936,7 +7916,7 @@ snapshots: semver: 7.6.3 tapable: 2.2.1 typescript: 5.7.2 - webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) form-data@4.0.1: dependencies: @@ -7972,12 +7952,14 @@ snapshots: function-bind@1.1.2: {} - function.prototype.name@1.1.6: + function.prototype.name@1.1.8: dependencies: call-bind: 1.0.8 + call-bound: 1.0.3 define-properties: 1.2.1 - es-abstract: 1.23.5 functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 optional: true functions-have-names@1.2.3: @@ -7996,22 +7978,29 @@ snapshots: get-caller-file@2.0.5: {} - get-intrinsic@1.2.5: + get-intrinsic@1.2.7: dependencies: call-bind-apply-helpers: 1.0.1 - dunder-proto: 1.0.0 es-define-property: 1.0.1 es-errors: 1.3.0 + es-object-atoms: 1.0.0 function-bind: 1.1.2 + get-proto: 1.0.1 gopd: 1.2.0 has-symbols: 1.1.0 hasown: 2.0.2 + math-intrinsics: 1.1.0 - get-symbol-description@1.0.2: + get-proto@1.0.1: dependencies: - call-bind: 1.0.8 + dunder-proto: 1.0.1 + es-object-atoms: 1.0.0 + + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.3 es-errors: 1.3.0 - get-intrinsic: 1.2.5 + get-intrinsic: 1.2.7 optional: true get-tsconfig@4.8.1: @@ -8079,7 +8068,7 @@ snapshots: dependencies: array-union: 3.0.1 dir-glob: 3.0.1 - fast-glob: 3.3.2 + fast-glob: 3.3.3 ignore: 5.3.2 merge2: 1.4.1 slash: 4.0.0 @@ -8087,7 +8076,7 @@ snapshots: globby@14.0.2: dependencies: '@sindresorhus/merge-streams': 2.3.0 - fast-glob: 3.3.2 + fast-glob: 3.3.3 ignore: 5.3.2 path-type: 5.0.0 slash: 5.1.0 @@ -8131,7 +8120,7 @@ snapshots: hard-rejection@2.1.0: {} - has-bigints@1.0.2: + has-bigints@1.1.0: optional: true has-flag@3.0.0: {} @@ -8141,10 +8130,11 @@ snapshots: has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.1 + optional: true has-proto@1.2.0: dependencies: - dunder-proto: 1.0.0 + dunder-proto: 1.0.1 optional: true has-symbols@1.1.0: {} @@ -8175,7 +8165,7 @@ snapshots: dependencies: html-minifier-terser: 7.2.0 parse5: 7.2.1 - webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) html-minifier-terser@6.1.0: dependencies: @@ -8205,7 +8195,7 @@ snapshots: pretty-error: 4.0.0 tapable: 2.2.1 optionalDependencies: - webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) htmlparser2@6.1.0: dependencies: @@ -8218,7 +8208,7 @@ snapshots: dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 - domutils: 3.1.0 + domutils: 3.2.2 entities: 4.5.0 http-assert@1.5.0: @@ -8300,7 +8290,7 @@ snapshots: dependencies: schema-utils: 4.3.0 serialize-javascript: 6.0.2 - webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) optionalDependencies: sharp: 0.32.6 svgo: 3.3.2 @@ -8340,11 +8330,11 @@ snapshots: ini@1.3.8: {} - internal-slot@1.0.7: + internal-slot@1.1.0: dependencies: es-errors: 1.3.0 hasown: 2.0.2 - side-channel: 1.0.6 + side-channel: 1.1.0 optional: true internmap@2.0.3: {} @@ -8360,33 +8350,37 @@ snapshots: jsbn: 1.1.0 sprintf-js: 1.1.3 - is-array-buffer@3.0.4: + is-array-buffer@3.0.5: dependencies: call-bind: 1.0.8 - get-intrinsic: 1.2.5 + call-bound: 1.0.3 + get-intrinsic: 1.2.7 optional: true is-arrayish@0.2.1: {} is-arrayish@0.3.2: {} - is-async-function@2.0.0: + is-async-function@2.1.0: dependencies: + call-bound: 1.0.3 + get-proto: 1.0.1 has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 optional: true is-bigint@1.1.0: dependencies: - has-bigints: 1.0.2 + has-bigints: 1.1.0 optional: true is-binary-path@2.1.0: dependencies: binary-extensions: 2.3.0 - is-boolean-object@1.2.0: + is-boolean-object@1.2.1: dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 has-tostringtag: 1.0.2 optional: true @@ -8401,17 +8395,20 @@ snapshots: dependencies: ci-info: 2.0.0 - is-core-module@2.15.1: + is-core-module@2.16.1: dependencies: hasown: 2.0.2 - is-data-view@1.0.1: + is-data-view@1.0.2: dependencies: - is-typed-array: 1.1.13 + call-bound: 1.0.3 + get-intrinsic: 1.2.7 + is-typed-array: 1.1.15 optional: true - is-date-object@1.0.5: + is-date-object@1.1.0: dependencies: + call-bound: 1.0.3 has-tostringtag: 1.0.2 optional: true @@ -8421,16 +8418,19 @@ snapshots: is-extglob@2.1.1: {} - is-finalizationregistry@1.1.0: + is-finalizationregistry@1.1.1: dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 optional: true is-fullwidth-code-point@3.0.0: {} - is-generator-function@1.0.10: + is-generator-function@1.1.0: dependencies: + call-bound: 1.0.3 + get-proto: 1.0.1 has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 is-glob@4.0.3: dependencies: @@ -8445,12 +8445,9 @@ snapshots: is-map@2.0.3: optional: true - is-negative-zero@2.0.3: - optional: true - - is-number-object@1.1.0: + is-number-object@1.1.1: dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 has-tostringtag: 1.0.2 optional: true @@ -8476,38 +8473,37 @@ snapshots: is-potential-custom-element-name@1.0.1: {} - is-regex@1.2.0: + is-regex@1.2.1: dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 gopd: 1.2.0 has-tostringtag: 1.0.2 hasown: 2.0.2 - optional: true is-set@2.0.3: optional: true - is-shared-array-buffer@1.0.3: + is-shared-array-buffer@1.0.4: dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 optional: true - is-string@1.1.0: + is-string@1.1.1: dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 has-tostringtag: 1.0.2 optional: true - is-symbol@1.1.0: + is-symbol@1.1.1: dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 has-symbols: 1.1.0 - safe-regex-test: 1.0.3 + safe-regex-test: 1.1.0 optional: true - is-typed-array@1.1.13: + is-typed-array@1.1.15: dependencies: - which-typed-array: 1.1.16 + which-typed-array: 1.1.18 optional: true is-unicode-supported@0.1.0: {} @@ -8521,15 +8517,15 @@ snapshots: is-weakmap@2.0.2: optional: true - is-weakref@1.0.2: + is-weakref@1.1.0: dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 optional: true - is-weakset@2.0.3: + is-weakset@2.0.4: dependencies: - call-bind: 1.0.8 - get-intrinsic: 1.2.5 + call-bound: 1.0.3 + get-intrinsic: 1.2.7 optional: true is-wsl@2.2.0: @@ -8743,7 +8739,7 @@ snapshots: fresh: 0.5.2 http-assert: 1.5.0 http-errors: 1.8.1 - is-generator-function: 1.0.10 + is-generator-function: 1.1.0 koa-compose: 4.1.0 koa-convert: 2.0.0 on-finished: 2.4.1 @@ -8853,7 +8849,7 @@ snapshots: log-symbols@5.1.0: dependencies: - chalk: 5.3.0 + chalk: 5.4.1 is-unicode-supported: 1.3.0 long@5.2.3: {} @@ -8884,7 +8880,7 @@ snapshots: make-fetch-happen@10.2.1: dependencies: - agentkeepalive: 4.5.0 + agentkeepalive: 4.6.0 cacache: 16.1.3 http-cache-semantics: 4.1.1 http-proxy-agent: 5.0.0 @@ -8917,7 +8913,9 @@ snapshots: punycode.js: 2.3.1 uc.micro: 2.1.0 - marked@15.0.5: {} + marked@15.0.6: {} + + math-intrinsics@1.1.0: {} mdn-data@2.0.28: {} @@ -8975,7 +8973,7 @@ snapshots: dependencies: schema-utils: 4.3.0 tapable: 2.2.1 - webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) minimatch@10.0.1: dependencies: @@ -9044,7 +9042,7 @@ snapshots: mnemonist@0.39.8: dependencies: - obliterator: 2.0.4 + obliterator: 2.0.5 mocha@10.8.2: dependencies: @@ -9156,14 +9154,14 @@ snapshots: normalize-package-data@3.0.3: dependencies: hosted-git-info: 4.1.0 - is-core-module: 2.15.1 + is-core-module: 2.16.1 semver: 7.6.3 validate-npm-package-license: 3.0.4 normalize-package-data@5.0.0: dependencies: hosted-git-info: 6.1.3 - is-core-module: 2.15.1 + is-core-module: 2.16.1 semver: 7.6.3 validate-npm-package-license: 3.0.4 @@ -9191,10 +9189,12 @@ snapshots: object-keys@1.1.1: optional: true - object.assign@4.1.5: + object.assign@4.1.7: dependencies: call-bind: 1.0.8 + call-bound: 1.0.3 define-properties: 1.2.1 + es-object-atoms: 1.0.0 has-symbols: 1.1.0 object-keys: 1.1.1 optional: true @@ -9203,7 +9203,7 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.5 + es-abstract: 1.23.9 es-object-atoms: 1.0.0 optional: true @@ -9211,17 +9211,18 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.5 + es-abstract: 1.23.9 optional: true - object.values@1.2.0: + object.values@1.2.1: dependencies: call-bind: 1.0.8 + call-bound: 1.0.3 define-properties: 1.2.1 es-object-atoms: 1.0.0 optional: true - obliterator@2.0.4: {} + obliterator@2.0.5: {} on-finished@2.3.0: dependencies: @@ -9262,7 +9263,7 @@ snapshots: ora@7.0.1: dependencies: - chalk: 5.3.0 + chalk: 5.4.1 cli-cursor: 4.0.0 cli-spinners: 2.9.2 is-interactive: 2.0.0 @@ -9288,6 +9289,13 @@ snapshots: - debug - supports-color + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.2.7 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + optional: true + p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -9429,15 +9437,15 @@ snapshots: possible-typed-array-names@1.0.0: optional: true - postcss-calc@10.0.2(postcss@8.4.49): + postcss-calc@10.1.0(postcss@8.4.49): dependencies: postcss: 8.4.49 - postcss-selector-parser: 6.1.2 + postcss-selector-parser: 7.0.0 postcss-value-parser: 4.2.0 postcss-colormin@7.0.2(postcss@8.4.49): dependencies: - browserslist: 4.24.2 + browserslist: 4.24.3 caniuse-api: 3.0.0 colord: 2.9.3 postcss: 8.4.49 @@ -9445,7 +9453,7 @@ snapshots: postcss-convert-values@7.0.4(postcss@8.4.49): dependencies: - browserslist: 4.24.2 + browserslist: 4.24.3 postcss: 8.4.49 postcss-value-parser: 4.2.0 @@ -9485,7 +9493,7 @@ snapshots: postcss-merge-rules@7.0.4(postcss@8.4.49): dependencies: - browserslist: 4.24.2 + browserslist: 4.24.3 caniuse-api: 3.0.0 cssnano-utils: 5.0.0(postcss@8.4.49) postcss: 8.4.49 @@ -9505,7 +9513,7 @@ snapshots: postcss-minify-params@7.0.2(postcss@8.4.49): dependencies: - browserslist: 4.24.2 + browserslist: 4.24.3 cssnano-utils: 5.0.0(postcss@8.4.49) postcss: 8.4.49 postcss-value-parser: 4.2.0 @@ -9520,7 +9528,7 @@ snapshots: dependencies: postcss: 8.4.49 - postcss-modules-local-by-default@4.1.0(postcss@8.4.49): + postcss-modules-local-by-default@4.2.0(postcss@8.4.49): dependencies: icss-utils: 5.1.0(postcss@8.4.49) postcss: 8.4.49 @@ -9568,7 +9576,7 @@ snapshots: postcss-normalize-unicode@7.0.2(postcss@8.4.49): dependencies: - browserslist: 4.24.2 + browserslist: 4.24.3 postcss: 8.4.49 postcss-value-parser: 4.2.0 @@ -9595,7 +9603,7 @@ snapshots: postcss-reduce-initial@7.0.2(postcss@8.4.49): dependencies: - browserslist: 4.24.2 + browserslist: 4.24.3 caniuse-api: 3.0.0 postcss: 8.4.49 @@ -9721,7 +9729,7 @@ snapshots: qs@6.13.1: dependencies: - side-channel: 1.0.6 + side-channel: 1.1.0 queue-microtask@1.2.3: {} @@ -9876,23 +9884,23 @@ snapshots: rechoir@0.8.0: dependencies: - resolve: 1.22.8 + resolve: 1.22.10 redent@4.0.0: dependencies: indent-string: 5.0.0 strip-indent: 4.0.0 - reflect.getprototypeof@1.0.8: + reflect.getprototypeof@1.0.10: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - dunder-proto: 1.0.0 - es-abstract: 1.23.5 + es-abstract: 1.23.9 es-errors: 1.3.0 - get-intrinsic: 1.2.5 - gopd: 1.2.0 - which-builtin-type: 1.2.0 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.7 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 optional: true regenerator-runtime@0.14.1: {} @@ -9905,11 +9913,13 @@ snapshots: regexp-tree@0.1.27: {} - regexp.prototype.flags@1.5.3: + regexp.prototype.flags@1.5.4: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 set-function-name: 2.0.2 optional: true @@ -9944,9 +9954,9 @@ snapshots: resolve-pkg-maps@1.0.0: {} - resolve@1.22.8: + resolve@1.22.10: dependencies: - is-core-module: 2.15.1 + is-core-module: 2.16.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -9977,10 +9987,11 @@ snapshots: dependencies: tslib: 2.8.1 - safe-array-concat@1.1.2: + safe-array-concat@1.1.3: dependencies: call-bind: 1.0.8 - get-intrinsic: 1.2.5 + call-bound: 1.0.3 + get-intrinsic: 1.2.7 has-symbols: 1.1.0 isarray: 2.0.5 optional: true @@ -9991,13 +10002,18 @@ snapshots: safe-identifier@0.4.2: {} - safe-regex-test@1.0.3: + safe-push-apply@1.0.0: dependencies: - call-bind: 1.0.8 es-errors: 1.3.0 - is-regex: 1.2.0 + isarray: 2.0.5 optional: true + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + is-regex: 1.2.1 + safer-buffer@2.1.2: {} sass-embedded-android-arm64@1.77.8: @@ -10078,17 +10094,17 @@ snapshots: sass-embedded-win32-ia32: 1.77.8 sass-embedded-win32-x64: 1.77.8 - sass-loader@16.0.4(sass-embedded@1.77.8)(sass@1.82.0)(webpack@5.97.1): + sass-loader@16.0.4(sass-embedded@1.77.8)(sass@1.83.1)(webpack@5.97.1): dependencies: neo-async: 2.6.2 optionalDependencies: - sass: 1.82.0 + sass: 1.83.1 sass-embedded: 1.77.8 - webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) - sass@1.82.0: + sass@1.83.1: dependencies: - chokidar: 4.0.1 + chokidar: 4.0.3 immutable: 5.0.3 source-map-js: 1.2.1 optionalDependencies: @@ -10132,9 +10148,10 @@ snapshots: define-data-property: 1.1.4 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.5 + get-intrinsic: 1.2.7 gopd: 1.2.0 has-property-descriptors: 1.0.2 + optional: true set-function-name@2.0.2: dependencies: @@ -10144,6 +10161,13 @@ snapshots: has-property-descriptors: 1.0.2 optional: true + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + optional: true + setimmediate@1.0.5: {} setprototypeof@1.1.0: {} @@ -10171,20 +10195,41 @@ snapshots: shebang-regex@3.0.0: {} - side-channel@1.0.6: + side-channel-list@1.0.0: dependencies: - call-bind: 1.0.8 es-errors: 1.3.0 - get-intrinsic: 1.2.5 object-inspect: 1.13.3 + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.7 + object-inspect: 1.13.3 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.7 + object-inspect: 1.13.3 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.3 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + signal-exit@3.0.7: {} signal-exit@4.1.0: {} signal-polyfill@0.2.1: {} - signal-utils@0.20.0(signal-polyfill@0.2.1): + signal-utils@0.21.1(signal-polyfill@0.2.1): dependencies: signal-polyfill: 0.2.1 @@ -10294,13 +10339,13 @@ snapshots: stream-shift@1.0.3: {} - streamx@2.21.0: + streamx@2.21.1: dependencies: fast-fifo: 1.3.2 queue-tick: 1.0.1 - text-decoder: 1.2.2 + text-decoder: 1.2.3 optionalDependencies: - bare-events: 2.5.0 + bare-events: 2.5.3 string-width@4.2.3: dependencies: @@ -10320,17 +10365,21 @@ snapshots: emoji-regex: 10.4.0 strip-ansi: 7.1.0 - string.prototype.trim@1.2.9: + string.prototype.trim@1.2.10: dependencies: call-bind: 1.0.8 + call-bound: 1.0.3 + define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.23.5 + es-abstract: 1.23.9 es-object-atoms: 1.0.0 + has-property-descriptors: 1.0.2 optional: true - string.prototype.trimend@1.0.8: + string.prototype.trimend@1.0.9: dependencies: call-bind: 1.0.8 + call-bound: 1.0.3 define-properties: 1.2.1 es-object-atoms: 1.0.0 optional: true @@ -10371,7 +10420,7 @@ snapshots: stylehacks@7.0.4(postcss@8.4.49): dependencies: - browserslist: 4.24.2 + browserslist: 4.24.3 postcss: 8.4.49 postcss-selector-parser: 6.1.2 @@ -10450,7 +10499,7 @@ snapshots: dependencies: b4a: 1.6.7 fast-fifo: 1.3.2 - streamx: 2.21.0 + streamx: 2.21.1 tar@6.2.1: dependencies: @@ -10461,16 +10510,16 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 - terser-webpack-plugin@5.3.11(@swc/core@1.10.4)(esbuild@0.24.2)(webpack@5.97.1): + terser-webpack-plugin@5.3.11(@swc/core@1.10.6)(esbuild@0.24.2)(webpack@5.97.1): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 4.3.0 serialize-javascript: 6.0.2 terser: 5.37.0 - webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) optionalDependencies: - '@swc/core': 1.10.4 + '@swc/core': 1.10.6 esbuild: 0.24.2 terser@5.37.0: @@ -10486,7 +10535,7 @@ snapshots: glob: 7.2.3 minimatch: 3.1.2 - text-decoder@1.2.2: + text-decoder@1.2.3: dependencies: b4a: 1.6.7 @@ -10513,19 +10562,19 @@ snapshots: trim-newlines@4.1.1: {} - ts-api-utils@1.4.3(typescript@5.7.2): + ts-api-utils@2.0.0(typescript@5.7.2): dependencies: typescript: 5.7.2 ts-loader@9.5.1(typescript@5.7.2)(webpack@5.97.1): dependencies: chalk: 4.1.2 - enhanced-resolve: 5.17.1 + enhanced-resolve: 5.18.0 micromatch: 4.0.8 semver: 7.6.3 source-map: 0.7.4 typescript: 5.7.2 - webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) tsconfig-paths@3.15.0: dependencies: @@ -10575,31 +10624,31 @@ snapshots: media-typer: 0.3.0 mime-types: 2.1.35 - typed-array-buffer@1.0.2: + typed-array-buffer@1.0.3: dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 es-errors: 1.3.0 - is-typed-array: 1.1.13 + is-typed-array: 1.1.15 optional: true - typed-array-byte-length@1.0.1: + typed-array-byte-length@1.0.3: dependencies: call-bind: 1.0.8 for-each: 0.3.3 gopd: 1.2.0 has-proto: 1.2.0 - is-typed-array: 1.1.13 + is-typed-array: 1.1.15 optional: true - typed-array-byte-offset@1.0.3: + typed-array-byte-offset@1.0.4: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.8 for-each: 0.3.3 gopd: 1.2.0 has-proto: 1.2.0 - is-typed-array: 1.1.13 - reflect.getprototypeof: 1.0.8 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 optional: true typed-array-length@1.0.7: @@ -10607,9 +10656,9 @@ snapshots: call-bind: 1.0.8 for-each: 0.3.3 gopd: 1.2.0 - is-typed-array: 1.1.13 + is-typed-array: 1.1.15 possible-typed-array-names: 1.0.0 - reflect.getprototypeof: 1.0.8 + reflect.getprototypeof: 1.0.10 optional: true typed-rest-client@1.8.11: @@ -10618,11 +10667,11 @@ snapshots: tunnel: 0.0.6 underscore: 1.13.7 - typescript-eslint@8.19.0(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2): + typescript-eslint@8.19.1(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.19.0(@typescript-eslint/parser@8.19.0(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2))(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2) - '@typescript-eslint/parser': 8.19.0(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2) - '@typescript-eslint/utils': 8.19.0(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2) + '@typescript-eslint/eslint-plugin': 8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2))(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2) + '@typescript-eslint/parser': 8.19.1(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2) + '@typescript-eslint/utils': 8.19.1(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2) eslint: 9.17.0(jiti@2.4.0) typescript: 5.7.2 transitivePeerDependencies: @@ -10637,12 +10686,12 @@ snapshots: uglify-js@3.19.3: optional: true - unbox-primitive@1.0.2: + unbox-primitive@1.1.0: dependencies: - call-bind: 1.0.8 - has-bigints: 1.0.2 + call-bound: 1.0.3 + has-bigints: 1.1.0 has-symbols: 1.1.0 - which-boxed-primitive: 1.1.0 + which-boxed-primitive: 1.1.1 optional: true uncontrollable@5.1.0(react@16.8.4): @@ -10666,9 +10715,9 @@ snapshots: universalify@2.0.1: {} - update-browserslist-db@1.1.1(browserslist@4.24.2): + update-browserslist-db@1.1.1(browserslist@4.24.3): dependencies: - browserslist: 4.24.2 + browserslist: 4.24.3 escalade: 3.2.0 picocolors: 1.1.1 @@ -10748,7 +10797,7 @@ snapshots: import-local: 3.2.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) webpack-merge: 6.0.1 optionalDependencies: webpack-bundle-analyzer: 4.10.2 @@ -10772,7 +10821,7 @@ snapshots: webpack-sources@3.2.3: {} - webpack@5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1): + webpack@5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.6 @@ -10780,10 +10829,10 @@ snapshots: '@webassemblyjs/wasm-edit': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 acorn: 8.14.0 - browserslist: 4.24.2 + browserslist: 4.24.3 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.17.1 - es-module-lexer: 1.5.4 + enhanced-resolve: 5.18.0 + es-module-lexer: 1.6.0 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -10794,7 +10843,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.11(@swc/core@1.10.4)(esbuild@0.24.2)(webpack@5.97.1) + terser-webpack-plugin: 5.3.11(@swc/core@1.10.6)(esbuild@0.24.2)(webpack@5.97.1) watchpack: 2.4.2 webpack-sources: 3.2.3 optionalDependencies: @@ -10809,30 +10858,30 @@ snapshots: tr46: 0.0.3 webidl-conversions: 3.0.1 - which-boxed-primitive@1.1.0: + which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 - is-boolean-object: 1.2.0 - is-number-object: 1.1.0 - is-string: 1.1.0 - is-symbol: 1.1.0 + is-boolean-object: 1.2.1 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 optional: true - which-builtin-type@1.2.0: + which-builtin-type@1.2.1: dependencies: - call-bind: 1.0.8 - function.prototype.name: 1.1.6 + call-bound: 1.0.3 + function.prototype.name: 1.1.8 has-tostringtag: 1.0.2 - is-async-function: 2.0.0 - is-date-object: 1.0.5 - is-finalizationregistry: 1.1.0 - is-generator-function: 1.0.10 - is-regex: 1.2.0 - is-weakref: 1.0.2 + is-async-function: 2.1.0 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.0 + is-regex: 1.2.1 + is-weakref: 1.1.0 isarray: 2.0.5 - which-boxed-primitive: 1.1.0 + which-boxed-primitive: 1.1.1 which-collection: 1.0.2 - which-typed-array: 1.1.16 + which-typed-array: 1.1.18 optional: true which-collection@1.0.2: @@ -10840,13 +10889,14 @@ snapshots: is-map: 2.0.3 is-set: 2.0.3 is-weakmap: 2.0.2 - is-weakset: 2.0.3 + is-weakset: 2.0.4 optional: true - which-typed-array@1.1.16: + which-typed-array@1.1.18: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.8 + call-bound: 1.0.3 for-each: 0.3.3 gopd: 1.2.0 has-tostringtag: 1.0.2 From 53e7cc0dd50857faff3f210b6fb4e8a10ebcdd21 Mon Sep 17 00:00:00 2001 From: Eric Amodio Date: Wed, 8 Jan 2025 00:56:20 -0500 Subject: [PATCH 05/11] Fixes #3914 clears annotations on split editors --- CHANGELOG.md | 1 + src/annotations/annotationProvider.ts | 4 +- src/annotations/fileAnnotationController.ts | 3 +- src/commands/toggleFileAnnotations.ts | 42 +++++++++++++++++++-- src/system/vscode/utils.ts | 6 +++ 5 files changed, 50 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ada20109b515..7fd55e164415a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p ### Fixed +- Fixes [#3914](https://github.com/gitkraken/vscode-gitlens/issues/#3914) - Attempting to clear a file annotation on a split file w/o the annotation no-ops - Fixes [#3911](https://github.com/gitkraken/vscode-gitlens/issues/#3911) - Avoid Home opening when first-install isn't reliable (e.g. GitPod) - Fixes [#3888](https://github.com/gitkraken/vscode-gitlens/issues/#3888) - Graph hover should disappear when right-clicking a row diff --git a/src/annotations/annotationProvider.ts b/src/annotations/annotationProvider.ts index 929107235c004..a85807e2cdb58 100644 --- a/src/annotations/annotationProvider.ts +++ b/src/annotations/annotationProvider.ts @@ -18,9 +18,9 @@ export interface AnnotationState { restoring?: boolean; } -export type TextEditorCorrelationKey = string; +export type TextEditorCorrelationKey = `${string}|${number}`; export function getEditorCorrelationKey(editor: TextEditor | undefined): TextEditorCorrelationKey { - return `${editor?.document.uri.toString()}|${editor?.viewColumn}`; + return `${editor?.document.uri.toString()}|${editor?.viewColumn ?? 0}`; } export type DidChangeStatusCallback = (e: { editor?: TextEditor; status?: AnnotationStatus }) => void; diff --git a/src/annotations/fileAnnotationController.ts b/src/annotations/fileAnnotationController.ts index fb111da425a13..5c7026a4c5aed 100644 --- a/src/annotations/fileAnnotationController.ts +++ b/src/annotations/fileAnnotationController.ts @@ -273,8 +273,9 @@ export class FileAnnotationController implements Disposable { } @log({ args: { 0: e => e?.document.uri.toString(true) } }) - clear(editor: TextEditor) { + clear(editor: TextEditor | undefined) { if (this.isInWindowToggle()) return this.clearAll(); + if (editor == null) return; return this.clearCore(getEditorCorrelationKey(editor), true); } diff --git a/src/commands/toggleFileAnnotations.ts b/src/commands/toggleFileAnnotations.ts index 42e3353dafcbc..3fc62d239db1b 100644 --- a/src/commands/toggleFileAnnotations.ts +++ b/src/commands/toggleFileAnnotations.ts @@ -6,7 +6,7 @@ import type { Container } from '../container'; import { showGenericErrorMessage } from '../messages'; import { Logger } from '../system/logger'; import { command } from '../system/vscode/command'; -import { getEditorIfVisible, isTrackableTextEditor } from '../system/vscode/utils'; +import { getEditorIfVisible, getOtherVisibleTextEditors, isTrackableTextEditor } from '../system/vscode/utils'; import { ActiveEditorCommand, EditorCommand } from './base'; @command() @@ -17,10 +17,17 @@ export class ClearFileAnnotationsCommand extends EditorCommand { async execute(editor: TextEditor | undefined, _edit: TextEditorEdit, uri?: Uri): Promise { editor = getValidEditor(editor, uri); - if (editor == null) return; try { - await this.container.fileAnnotations.clear(editor); + if (!editor || this.container.fileAnnotations.isInWindowToggle()) { + await this.container.fileAnnotations.clear(editor); + return; + } + + // Clear split editors as though they were linked, because we can't handle the command states effectively + await Promise.allSettled( + [editor, ...getOtherVisibleTextEditors(editor)].map(e => this.container.fileAnnotations.clear(e)), + ); } catch (ex) { Logger.error(ex, 'ClearFileAnnotationsCommand'); void showGenericErrorMessage('Unable to clear file annotations'); @@ -117,6 +124,35 @@ async function toggleFileAnnotations + // container.fileAnnotations.toggle( + // e, + // args.type, + // { + // selection: args.context?.selection ?? { line: e?.selection.active.line }, + // ...args.context, + // }, + // args.on, + // ), + // ), + // ); } catch (ex) { Logger.error(ex, 'ToggleFileAnnotationsCommand'); void showGenericErrorMessage(`Unable to toggle file ${args.type} annotations`); diff --git a/src/system/vscode/utils.ts b/src/system/vscode/utils.ts index 597462c339170..7951f088b4134 100644 --- a/src/system/vscode/utils.ts +++ b/src/system/vscode/utils.ts @@ -98,6 +98,12 @@ export function getEditorIfVisible(documentOrUri: TextDocument | Uri): TextEdito return window.visibleTextEditors.find(e => e.document === documentOrUri); } +export function getOtherVisibleTextEditors(editor: TextEditor): TextEditor[] { + return window.visibleTextEditors.filter( + e => e !== editor && e.document.uri.toString() === editor.document.uri.toString(), + ); +} + export function getQuickPickIgnoreFocusOut() { return !configuration.get('advanced.quickPick.closeOnFocusOut'); } From 31e5067d65a5706f23209793bfed81bdcda7686b Mon Sep 17 00:00:00 2001 From: Eric Amodio Date: Wed, 8 Jan 2025 00:58:35 -0500 Subject: [PATCH 06/11] Fixes #3915 clears annotations on tab close --- CHANGELOG.md | 9 +++++---- src/annotations/annotationProvider.ts | 8 +++++++- src/annotations/fileAnnotationController.ts | 10 +++++++++- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7fd55e164415a..728bf5801026c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,9 +13,10 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p ### Fixed -- Fixes [#3914](https://github.com/gitkraken/vscode-gitlens/issues/#3914) - Attempting to clear a file annotation on a split file w/o the annotation no-ops -- Fixes [#3911](https://github.com/gitkraken/vscode-gitlens/issues/#3911) - Avoid Home opening when first-install isn't reliable (e.g. GitPod) -- Fixes [#3888](https://github.com/gitkraken/vscode-gitlens/issues/#3888) - Graph hover should disappear when right-clicking a row +- Fixes [#3915](https://github.com/gitkraken/vscode-gitlens/issues/3915) - Closing a split editor with annotations causes the Clear Annotations button to get stuck +- Fixes [#3914](https://github.com/gitkraken/vscode-gitlens/issues/3914) - Attempting to clear a file annotation on a split file w/o the annotation no-ops +- Fixes [#3911](https://github.com/gitkraken/vscode-gitlens/issues/3911) - Avoid Home opening when first-install isn't reliable (e.g. GitPod) +- Fixes [#3888](https://github.com/gitkraken/vscode-gitlens/issues/3888) - Graph hover should disappear when right-clicking a row ## [16.1.1] - 2024-12-20 @@ -29,7 +30,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p ### Fixed -- Fixes [#3899](https://github.com/gitkraken/vscode-gitlens/issues/#3899) - custom autolinks not being detected +- Fixes [#3899](https://github.com/gitkraken/vscode-gitlens/issues/3899) - custom autolinks not being detected - Fixes owner avatars from getting lost (progressively) on refresh of the _Home_ view - Fixes launchpad status icon for 'waiting for review' state on _Home_ - Fixes missing _Delete Branch..._ command from branches on worktrees in the _Branches_ view diff --git a/src/annotations/annotationProvider.ts b/src/annotations/annotationProvider.ts index a85807e2cdb58..01b0abfd20905 100644 --- a/src/annotations/annotationProvider.ts +++ b/src/annotations/annotationProvider.ts @@ -1,4 +1,4 @@ -import type { TextEditor, TextEditorDecorationType, TextEditorSelectionChangeEvent } from 'vscode'; +import type { Tab, TextEditor, TextEditorDecorationType, TextEditorSelectionChangeEvent } from 'vscode'; import { Disposable, window } from 'vscode'; import type { FileAnnotationType } from '../config'; import type { AnnotationStatus } from '../constants'; @@ -6,6 +6,7 @@ import type { Container } from '../container'; import { Logger } from '../system/logger'; import type { Deferred } from '../system/promise'; import { defer } from '../system/promise'; +import { getTabUri } from '../system/vscode/utils'; import type { TrackedGitDocument } from '../trackers/trackedDocument'; import type { Decoration } from './annotations'; @@ -23,6 +24,11 @@ export function getEditorCorrelationKey(editor: TextEditor | undefined): TextEdi return `${editor?.document.uri.toString()}|${editor?.viewColumn ?? 0}`; } +export function getEditorCorrelationKeyFromTab(tab: Tab): TextEditorCorrelationKey { + const uri = getTabUri(tab); + return `${uri?.toString()}|${tab.group.viewColumn}`; +} + export type DidChangeStatusCallback = (e: { editor?: TextEditor; status?: AnnotationStatus }) => void; export abstract class AnnotationProviderBase diff --git a/src/annotations/fileAnnotationController.ts b/src/annotations/fileAnnotationController.ts index 5c7026a4c5aed..763433c09e58b 100644 --- a/src/annotations/fileAnnotationController.ts +++ b/src/annotations/fileAnnotationController.ts @@ -3,6 +3,7 @@ import type { ConfigurationChangeEvent, Event, Progress, + TabChangeEvent, TextDocument, TextEditor, TextEditorDecorationType, @@ -42,7 +43,7 @@ import type { DocumentDirtyStateChangeEvent, } from '../trackers/documentTracker'; import type { AnnotationContext, AnnotationProviderBase, TextEditorCorrelationKey } from './annotationProvider'; -import { getEditorCorrelationKey } from './annotationProvider'; +import { getEditorCorrelationKey, getEditorCorrelationKeyFromTab } from './annotationProvider'; import type { ChangesAnnotationContext } from './gutterChangesAnnotationProvider'; export const Decorations = { @@ -227,6 +228,12 @@ export class FileAnnotationController implements Disposable { } } + private onTabsChanged(e: TabChangeEvent) { + for (const tab of e.closed) { + void this.clearCore(getEditorCorrelationKeyFromTab(tab)); + } + } + private onTextDocumentClosed(document: TextDocument) { if (!this.container.git.isTrackable(document.uri)) return; @@ -688,6 +695,7 @@ export class FileAnnotationController implements Disposable { window.onDidChangeActiveTextEditor(debounce(this.onActiveTextEditorChanged, 50), this), window.onDidChangeTextEditorViewColumn(this.onTextEditorViewColumnChanged, this), window.onDidChangeVisibleTextEditors(debounce(this.onVisibleTextEditorsChanged, 50), this), + window.tabGroups.onDidChangeTabs(this.onTabsChanged, this), workspace.onDidCloseTextDocument(this.onTextDocumentClosed, this), this.container.documentTracker.onDidChangeBlameState(this.onBlameStateChanged, this), this.container.documentTracker.onDidChangeDirtyState(this.onDirtyStateChanged, this), From 068d520cd728e8093e21a5b3cf9b263de0bed219 Mon Sep 17 00:00:00 2001 From: Eric Amodio Date: Wed, 8 Jan 2025 10:16:25 -0500 Subject: [PATCH 07/11] Fixes CI to match pnpm version --- .github/workflows/cd-pre.yml | 2 +- .github/workflows/cd-stable.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cd-pre.yml b/.github/workflows/cd-pre.yml index f0469cce3d2ea..0924701f86735 100644 --- a/.github/workflows/cd-pre.yml +++ b/.github/workflows/cd-pre.yml @@ -61,7 +61,7 @@ jobs: - name: Setup pnpm uses: pnpm/action-setup@v3 with: - version: 9 + version: 10 - name: Install run: pnpm install - name: Apply pre-release patch diff --git a/.github/workflows/cd-stable.yml b/.github/workflows/cd-stable.yml index b44cddd1cd803..a442556121772 100644 --- a/.github/workflows/cd-stable.yml +++ b/.github/workflows/cd-stable.yml @@ -21,7 +21,7 @@ jobs: - name: Setup pnpm uses: pnpm/action-setup@v3 with: - version: 9 + version: 10 - name: Setup Environment run: node -e "console.log('PACKAGE_VERSION=' + require('./package.json').version + '\nPACKAGE_NAME=' + require('./package.json').name + '-' + require('./package.json').version)" >> $GITHUB_ENV - name: Verify versions From 095a918e08d4c6ff6a29f7c69e668ee9aac8d8cb Mon Sep 17 00:00:00 2001 From: Eric Amodio Date: Wed, 8 Jan 2025 11:55:43 -0500 Subject: [PATCH 08/11] Adds more granular bundle analysis --- package.json | 3 +++ webpack.config.mjs | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index e38d3ffd5129b..aac5fe51b99c4 100644 --- a/package.json +++ b/package.json @@ -19942,6 +19942,9 @@ }, "scripts": { "analyze:bundle": "webpack --mode production --env analyzeBundle", + "analyze:bundle:extension": "webpack --mode production --config-name extension:node --env analyzeBundle", + "analyze:bundle:extension:browser": "webpack --mode production --config-name extension:webworker --env analyzeBundle", + "analyze:bundle:webviews": "webpack --mode production --config-name webviews --env analyzeBundle", "analyze:deps": "webpack --env analyzeDeps", "build": "webpack --mode development", "build:quick": "webpack --mode development --env skipLint", diff --git a/webpack.config.mjs b/webpack.config.mjs index cca2259f309e8..358d3a9e6bfaf 100644 --- a/webpack.config.mjs +++ b/webpack.config.mjs @@ -183,7 +183,7 @@ function getExtensionConfig(target, mode, env) { }, mode: mode, target: target, - devtool: mode === 'production' ? false : 'source-map', + devtool: mode === 'production' && !env.analyzeBundle ? false : 'source-map', output: { chunkFilename: '[name].js', filename: 'gitlens.js', @@ -420,7 +420,7 @@ function getWebviewsConfig(mode, env) { }, mode: mode, target: 'web', - devtool: mode === 'production' ? false : 'source-map', + devtool: mode === 'production' && !env.analyzeBundle ? false : 'source-map', output: { chunkFilename: '[name].js', filename: '[name].js', From dad6e55e87bc96f235b7351f7079938508b3663b Mon Sep 17 00:00:00 2001 From: Eric Amodio Date: Wed, 8 Jan 2025 11:55:54 -0500 Subject: [PATCH 09/11] Removes holiday snow --- src/webviews/apps/plus/shared/components/home-header.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/webviews/apps/plus/shared/components/home-header.ts b/src/webviews/apps/plus/shared/components/home-header.ts index 6044af0326606..0d8d458cdeecd 100644 --- a/src/webviews/apps/plus/shared/components/home-header.ts +++ b/src/webviews/apps/plus/shared/components/home-header.ts @@ -10,7 +10,7 @@ import '../../../shared/components/button-container'; import '../../../shared/components/code-icon'; import '../../../shared/components/overlays/popover'; import '../../../shared/components/promo'; -import '../../../shared/components/snow'; +// import '../../../shared/components/snow'; @customElement('gl-home-header') export class GLHomeHeader extends LitElement { @@ -65,7 +65,7 @@ export class GLHomeHeader extends LitElement { override render() { return html`
- +
`; From 40e3a2406f101b9fcb209321e3743092de655a1c Mon Sep 17 00:00:00 2001 From: Eric Amodio Date: Wed, 8 Jan 2025 13:03:55 -0500 Subject: [PATCH 10/11] Updates dependencies -- fixing CI --- package.json | 5 +- pnpm-lock.yaml | 319 +++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 270 insertions(+), 54 deletions(-) diff --git a/package.json b/package.json index aac5fe51b99c4..0d4a7e66f61fc 100644 --- a/package.json +++ b/package.json @@ -20091,7 +20091,7 @@ "sass": "1.83.1", "sass-loader": "16.0.4", "schema-utils": "4.3.0", - "sharp": "0.32.6", + "sharp": "0.33.5", "svgo": "3.3.2", "terser-webpack-plugin": "5.3.11", "ts-loader": "9.5.1", @@ -20103,9 +20103,6 @@ "webpack-node-externals": "3.0.0", "webpack-require-from": "1.8.6" }, - "pnpm.onlyBuiltDependencies": [ - "@swc/core" - ], "resolutions": { "esbuild": "0.24.2", "iconv-lite": "0.6.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fadefcb185ed6..875a2d7daa695 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -236,7 +236,7 @@ importers: version: 5.6.3(webpack@5.97.1) image-minimizer-webpack-plugin: specifier: 4.1.3 - version: 4.1.3(sharp@0.32.6)(svgo@3.3.2)(webpack@5.97.1) + version: 4.1.3(sharp@0.33.5)(svgo@3.3.2)(webpack@5.97.1) license-checker-rseidelsohn: specifier: 4.4.2 version: 4.4.2 @@ -271,8 +271,8 @@ importers: specifier: 4.3.0 version: 4.3.0 sharp: - specifier: 0.32.6 - version: 0.32.6 + specifier: 0.33.5 + version: 0.33.5 svgo: specifier: 3.3.2 version: 3.3.2 @@ -397,6 +397,9 @@ packages: eslint: ^9.16.0 webpack: ^5.97.1 + '@emnapi/runtime@1.3.1': + resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} + '@esbuild/aix-ppc64@0.24.2': resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} engines: {node: '>=18'} @@ -626,6 +629,111 @@ packages: resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} engines: {node: '>=18.18'} + '@img/sharp-darwin-arm64@0.33.5': + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.33.5': + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.0.4': + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.0.4': + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.0.4': + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.0.5': + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.0.4': + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.0.4': + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.33.5': + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.33.5': + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-s390x@0.33.5': + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.33.5': + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.33.5': + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.33.5': + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.33.5': + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-ia32@0.33.5': + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.33.5': + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -1562,8 +1670,8 @@ packages: browserify-zlib@0.1.4: resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} - browserslist@4.24.3: - resolution: {integrity: sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==} + browserslist@4.24.4: + resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -3643,9 +3751,6 @@ packages: node-addon-api@4.3.0: resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==} - node-addon-api@6.1.0: - resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} - node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} @@ -4672,9 +4777,9 @@ packages: resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} engines: {node: '>=8'} - sharp@0.32.6: - resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==} - engines: {node: '>=14.15.0'} + sharp@0.33.5: + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} @@ -5146,8 +5251,8 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} - update-browserslist-db@1.1.1: - resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} + update-browserslist-db@1.1.2: + resolution: {integrity: sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -5500,6 +5605,11 @@ snapshots: - uglify-js - webpack-cli + '@emnapi/runtime@1.3.1': + dependencies: + tslib: 2.8.1 + optional: true + '@esbuild/aix-ppc64@0.24.2': optional: true @@ -5667,6 +5777,81 @@ snapshots: '@humanwhocodes/retry@0.4.1': {} + '@img/sharp-darwin-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.0.4 + optional: true + + '@img/sharp-darwin-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.0.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.0.5': + optional: true + + '@img/sharp-libvips-linux-s390x@1.0.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + optional: true + + '@img/sharp-linux-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.0.4 + optional: true + + '@img/sharp-linux-arm@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.0.5 + optional: true + + '@img/sharp-linux-s390x@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.0.4 + optional: true + + '@img/sharp-linux-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + optional: true + + '@img/sharp-wasm32@0.33.5': + dependencies: + '@emnapi/runtime': 1.3.1 + optional: true + + '@img/sharp-win32-ia32@0.33.5': + optional: true + + '@img/sharp-win32-x64@0.33.5': + optional: true + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -6613,7 +6798,7 @@ snapshots: autoprefixer@10.4.20(postcss@8.4.49): dependencies: - browserslist: 4.24.3 + browserslist: 4.24.4 caniuse-lite: 1.0.30001690 fraction.js: 4.3.7 normalize-range: 0.1.2 @@ -6695,6 +6880,7 @@ snapshots: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 + optional: true bl@5.1.0: dependencies: @@ -6723,12 +6909,12 @@ snapshots: dependencies: pako: 0.2.9 - browserslist@4.24.3: + browserslist@4.24.4: dependencies: caniuse-lite: 1.0.30001690 electron-to-chromium: 1.5.79 node-releases: 2.0.19 - update-browserslist-db: 1.1.1(browserslist@4.24.3) + update-browserslist-db: 1.1.2(browserslist@4.24.4) buffer-builder@0.2.0: {} @@ -6742,6 +6928,7 @@ snapshots: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 + optional: true buffer@6.0.3: dependencies: @@ -6830,7 +7017,7 @@ snapshots: caniuse-api@3.0.0: dependencies: - browserslist: 4.24.3 + browserslist: 4.24.4 caniuse-lite: 1.0.30001690 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 @@ -6887,7 +7074,8 @@ snapshots: dependencies: readdirp: 4.0.2 - chownr@1.1.4: {} + chownr@1.1.4: + optional: true chownr@2.0.0: {} @@ -7120,7 +7308,7 @@ snapshots: cssnano-preset-advanced@7.0.6(postcss@8.4.49): dependencies: autoprefixer: 10.4.20(postcss@8.4.49) - browserslist: 4.24.3 + browserslist: 4.24.4 cssnano-preset-default: 7.0.6(postcss@8.4.49) postcss: 8.4.49 postcss-discard-unused: 7.0.3(postcss@8.4.49) @@ -7130,7 +7318,7 @@ snapshots: cssnano-preset-default@7.0.6(postcss@8.4.49): dependencies: - browserslist: 4.24.3 + browserslist: 4.24.4 css-declaration-sorter: 7.2.0(postcss@8.4.49) cssnano-utils: 5.0.0(postcss@8.4.49) postcss: 8.4.49 @@ -7315,10 +7503,12 @@ snapshots: decompress-response@6.0.0: dependencies: mimic-response: 3.1.0 + optional: true deep-equal@1.0.1: {} - deep-extend@0.6.0: {} + deep-extend@0.6.0: + optional: true deep-is@0.1.4: {} @@ -7822,7 +8012,8 @@ snapshots: events@3.3.0: {} - expand-template@2.0.3: {} + expand-template@2.0.3: + optional: true exponential-backoff@3.1.1: {} @@ -7928,7 +8119,8 @@ snapshots: fresh@0.5.2: {} - fs-constants@1.0.0: {} + fs-constants@1.0.0: + optional: true fs-extra@10.1.0: dependencies: @@ -8007,7 +8199,8 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 - github-from-package@0.0.0: {} + github-from-package@0.0.0: + optional: true glob-parent@5.1.2: dependencies: @@ -8286,13 +8479,13 @@ snapshots: ignore@5.3.2: {} - image-minimizer-webpack-plugin@4.1.3(sharp@0.32.6)(svgo@3.3.2)(webpack@5.97.1): + image-minimizer-webpack-plugin@4.1.3(sharp@0.33.5)(svgo@3.3.2)(webpack@5.97.1): dependencies: schema-utils: 4.3.0 serialize-javascript: 6.0.2 webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) optionalDependencies: - sharp: 0.32.6 + sharp: 0.33.5 svgo: 3.3.2 immediate@3.0.6: {} @@ -8328,7 +8521,8 @@ snapshots: inherits@2.0.4: {} - ini@1.3.8: {} + ini@1.3.8: + optional: true internal-slot@1.1.0: dependencies: @@ -8965,7 +9159,8 @@ snapshots: mimic-fn@2.1.0: {} - mimic-response@3.1.0: {} + mimic-response@3.1.0: + optional: true min-indent@1.0.1: {} @@ -9036,7 +9231,8 @@ snapshots: minipass: 3.3.6 yallist: 4.0.0 - mkdirp-classic@0.5.3: {} + mkdirp-classic@0.5.3: + optional: true mkdirp@1.0.4: {} @@ -9089,7 +9285,8 @@ snapshots: nanoid@3.3.8: {} - napi-build-utils@1.0.2: {} + napi-build-utils@1.0.2: + optional: true natural-compare@1.4.0: {} @@ -9107,14 +9304,13 @@ snapshots: node-abi@3.71.0: dependencies: semver: 7.6.3 + optional: true node-abort-controller@3.1.1: {} node-addon-api@4.3.0: optional: true - node-addon-api@6.1.0: {} - node-addon-api@7.1.1: optional: true @@ -9445,7 +9641,7 @@ snapshots: postcss-colormin@7.0.2(postcss@8.4.49): dependencies: - browserslist: 4.24.3 + browserslist: 4.24.4 caniuse-api: 3.0.0 colord: 2.9.3 postcss: 8.4.49 @@ -9453,7 +9649,7 @@ snapshots: postcss-convert-values@7.0.4(postcss@8.4.49): dependencies: - browserslist: 4.24.3 + browserslist: 4.24.4 postcss: 8.4.49 postcss-value-parser: 4.2.0 @@ -9493,7 +9689,7 @@ snapshots: postcss-merge-rules@7.0.4(postcss@8.4.49): dependencies: - browserslist: 4.24.3 + browserslist: 4.24.4 caniuse-api: 3.0.0 cssnano-utils: 5.0.0(postcss@8.4.49) postcss: 8.4.49 @@ -9513,7 +9709,7 @@ snapshots: postcss-minify-params@7.0.2(postcss@8.4.49): dependencies: - browserslist: 4.24.3 + browserslist: 4.24.4 cssnano-utils: 5.0.0(postcss@8.4.49) postcss: 8.4.49 postcss-value-parser: 4.2.0 @@ -9576,7 +9772,7 @@ snapshots: postcss-normalize-unicode@7.0.2(postcss@8.4.49): dependencies: - browserslist: 4.24.3 + browserslist: 4.24.4 postcss: 8.4.49 postcss-value-parser: 4.2.0 @@ -9603,7 +9799,7 @@ snapshots: postcss-reduce-initial@7.0.2(postcss@8.4.49): dependencies: - browserslist: 4.24.3 + browserslist: 4.24.4 caniuse-api: 3.0.0 postcss: 8.4.49 @@ -9659,6 +9855,7 @@ snapshots: simple-get: 4.0.1 tar-fs: 2.1.1 tunnel-agent: 0.6.0 + optional: true prelude-ls@1.2.1: {} @@ -9747,6 +9944,7 @@ snapshots: ini: 1.3.8 minimist: 1.2.8 strip-json-comments: 2.0.1 + optional: true re-resizable@6.9.11(react-dom@16.8.4(react@16.8.4))(react@16.8.4): dependencies: @@ -10178,16 +10376,31 @@ snapshots: dependencies: kind-of: 6.0.3 - sharp@0.32.6: + sharp@0.33.5: dependencies: color: 4.2.3 detect-libc: 2.0.3 - node-addon-api: 6.1.0 - prebuild-install: 7.1.2 semver: 7.6.3 - simple-get: 4.0.1 - tar-fs: 3.0.6 - tunnel-agent: 0.6.0 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.33.5 + '@img/sharp-darwin-x64': 0.33.5 + '@img/sharp-libvips-darwin-arm64': 1.0.4 + '@img/sharp-libvips-darwin-x64': 1.0.4 + '@img/sharp-libvips-linux-arm': 1.0.5 + '@img/sharp-libvips-linux-arm64': 1.0.4 + '@img/sharp-libvips-linux-s390x': 1.0.4 + '@img/sharp-libvips-linux-x64': 1.0.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + '@img/sharp-linux-arm': 0.33.5 + '@img/sharp-linux-arm64': 0.33.5 + '@img/sharp-linux-s390x': 0.33.5 + '@img/sharp-linux-x64': 0.33.5 + '@img/sharp-linuxmusl-arm64': 0.33.5 + '@img/sharp-linuxmusl-x64': 0.33.5 + '@img/sharp-wasm32': 0.33.5 + '@img/sharp-win32-ia32': 0.33.5 + '@img/sharp-win32-x64': 0.33.5 shebang-command@2.0.0: dependencies: @@ -10233,13 +10446,15 @@ snapshots: dependencies: signal-polyfill: 0.2.1 - simple-concat@1.0.1: {} + simple-concat@1.0.1: + optional: true simple-get@4.0.1: dependencies: decompress-response: 6.0.0 once: 1.4.0 simple-concat: 1.0.1 + optional: true simple-swizzle@0.2.2: dependencies: @@ -10414,13 +10629,14 @@ snapshots: dependencies: min-indent: 1.0.1 - strip-json-comments@2.0.1: {} + strip-json-comments@2.0.1: + optional: true strip-json-comments@3.1.1: {} stylehacks@7.0.4(postcss@8.4.49): dependencies: - browserslist: 4.24.3 + browserslist: 4.24.4 postcss: 8.4.49 postcss-selector-parser: 6.1.2 @@ -10478,6 +10694,7 @@ snapshots: mkdirp-classic: 0.5.3 pump: 3.0.2 tar-stream: 2.2.0 + optional: true tar-fs@3.0.6: dependencies: @@ -10494,6 +10711,7 @@ snapshots: fs-constants: 1.0.0 inherits: 2.0.4 readable-stream: 3.6.2 + optional: true tar-stream@3.1.7: dependencies: @@ -10610,6 +10828,7 @@ snapshots: tunnel-agent@0.6.0: dependencies: safe-buffer: 5.2.1 + optional: true tunnel@0.0.6: {} @@ -10715,9 +10934,9 @@ snapshots: universalify@2.0.1: {} - update-browserslist-db@1.1.1(browserslist@4.24.3): + update-browserslist-db@1.1.2(browserslist@4.24.4): dependencies: - browserslist: 4.24.3 + browserslist: 4.24.4 escalade: 3.2.0 picocolors: 1.1.1 @@ -10829,7 +11048,7 @@ snapshots: '@webassemblyjs/wasm-edit': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 acorn: 8.14.0 - browserslist: 4.24.3 + browserslist: 4.24.4 chrome-trace-event: 1.0.4 enhanced-resolve: 5.18.0 es-module-lexer: 1.6.0 From d61feb823e52be66d3a65383a80a102cab0120fd Mon Sep 17 00:00:00 2001 From: Eric Amodio Date: Wed, 8 Jan 2025 14:14:10 -0500 Subject: [PATCH 11/11] Downgrades swc to avoid segfault on windows --- package.json | 2 +- pnpm-lock.yaml | 152 ++++++++++++++++++++++++------------------------- 2 files changed, 77 insertions(+), 77 deletions(-) diff --git a/package.json b/package.json index 0d4a7e66f61fc..8b4cc88953045 100644 --- a/package.json +++ b/package.json @@ -20041,7 +20041,7 @@ "@eamodio/eslint-lite-webpack-plugin": "0.2.0", "@eslint/js": "9.17.0", "@playwright/test": "1.49.1", - "@swc/core": "1.10.6", + "@swc/core": "1.10.4", "@twbs/fantasticon": "3.0.0", "@types/eslint__js": "8.42.3", "@types/mocha": "10.0.10", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 875a2d7daa695..2a84c8878e457 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -113,7 +113,7 @@ importers: devDependencies: '@eamodio/eslint-lite-webpack-plugin': specifier: 0.2.0 - version: 0.2.0(@swc/core@1.10.6)(esbuild@0.24.2)(eslint@9.17.0(jiti@2.4.0))(webpack-cli@6.0.1)(webpack@5.97.1) + version: 0.2.0(@swc/core@1.10.4)(esbuild@0.24.2)(eslint@9.17.0(jiti@2.4.0))(webpack-cli@6.0.1)(webpack@5.97.1) '@eslint/js': specifier: 9.17.0 version: 9.17.0 @@ -121,8 +121,8 @@ importers: specifier: 1.49.1 version: 1.49.1 '@swc/core': - specifier: 1.10.6 - version: 1.10.6 + specifier: 1.10.4 + version: 1.10.4 '@twbs/fantasticon': specifier: 3.0.0 version: 3.0.0 @@ -278,7 +278,7 @@ importers: version: 3.3.2 terser-webpack-plugin: specifier: 5.3.11 - version: 5.3.11(@swc/core@1.10.6)(esbuild@0.24.2)(webpack@5.97.1) + version: 5.3.11(@swc/core@1.10.4)(esbuild@0.24.2)(webpack@5.97.1) ts-loader: specifier: 9.5.1 version: 9.5.1(typescript@5.7.2)(webpack@5.97.1) @@ -290,7 +290,7 @@ importers: version: 8.19.1(eslint@9.17.0(jiti@2.4.0))(typescript@5.7.2) webpack: specifier: 5.97.1 - version: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) + version: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) webpack-bundle-analyzer: specifier: 4.10.2 version: 4.10.2 @@ -1055,68 +1055,68 @@ packages: resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} engines: {node: '>=18'} - '@swc/core-darwin-arm64@1.10.6': - resolution: {integrity: sha512-USbMvT8Rw5PvIfF6HyTm+yW84J9c45emzmHBDIWY76vZHkFsS5MepNi+JLQyBzBBgE7ScwBRBNhRx6VNhkSoww==} + '@swc/core-darwin-arm64@1.10.4': + resolution: {integrity: sha512-sV/eurLhkjn/197y48bxKP19oqcLydSel42Qsy2zepBltqUx+/zZ8+/IS0Bi7kaWVFxerbW1IPB09uq8Zuvm3g==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.10.6': - resolution: {integrity: sha512-7t2IozcZN4r1p27ei+Kb8IjN4aLoBDn107fPi+aPLcVp2uFgJEUzhCDuZXBNW2057Mx1OHcjzrkaleRpECz3Xg==} + '@swc/core-darwin-x64@1.10.4': + resolution: {integrity: sha512-gjYNU6vrAUO4+FuovEo9ofnVosTFXkF0VDuo1MKPItz6e2pxc2ale4FGzLw0Nf7JB1sX4a8h06CN16/pLJ8Q2w==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.10.6': - resolution: {integrity: sha512-CPgWT+D0bDp/qhXsLkIJ54LmKU1/zvyGaf/yz8A4iR+YoF6R5CSXENXhNJY8cIrb6+uNWJZzHJ+gefB5V51bpA==} + '@swc/core-linux-arm-gnueabihf@1.10.4': + resolution: {integrity: sha512-zd7fXH5w8s+Sfvn2oO464KDWl+ZX1MJiVmE4Pdk46N3PEaNwE0koTfgx2vQRqRG4vBBobzVvzICC3618WcefOA==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.10.6': - resolution: {integrity: sha512-5qZ6hVnqO/ShETXdGSzvdGUVx372qydlj1YWSYiaxQzTAepEBc8TC1NVUgYtOHOKVRkky1d7p6GQ9lymsd4bHw==} + '@swc/core-linux-arm64-gnu@1.10.4': + resolution: {integrity: sha512-+UGfoHDxsMZgFD3tABKLeEZHqLNOkxStu+qCG7atGBhS4Slri6h6zijVvf4yI5X3kbXdvc44XV/hrP/Klnui2A==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.10.6': - resolution: {integrity: sha512-hB2xZFmXCKf2iJF5y2z01PSuLqEoUP3jIX/XlIHN+/AIP7PkSKsValE63LnjlnWPnSEI0IxUyRE3T3FzWE/fQQ==} + '@swc/core-linux-arm64-musl@1.10.4': + resolution: {integrity: sha512-cDDj2/uYsOH0pgAnDkovLZvKJpFmBMyXkxEG6Q4yw99HbzO6QzZ5HDGWGWVq/6dLgYKlnnmpjZCPPQIu01mXEg==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.10.6': - resolution: {integrity: sha512-PRGPp0I22+oJ8RMGg8M4hXYxEffH3ayu0WoSDPOjfol1F51Wj1tfTWN4wVa2RibzJjkBwMOT0KGLGb/hSEDDXQ==} + '@swc/core-linux-x64-gnu@1.10.4': + resolution: {integrity: sha512-qJXh9D6Kf5xSdGWPINpLGixAbB5JX8JcbEJpRamhlDBoOcQC79dYfOMEIxWPhTS1DGLyFakAx2FX/b2VmQmj0g==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.10.6': - resolution: {integrity: sha512-SoNBxlA86lnoV9vIz/TCyakLkdRhFSHx6tFMKNH8wAhz1kKYbZfDmpYoIzeQqdTh0tpx8e/Zu1zdK4smovsZqQ==} + '@swc/core-linux-x64-musl@1.10.4': + resolution: {integrity: sha512-A76lIAeyQnHCVt0RL/pG+0er8Qk9+acGJqSZOZm67Ve3B0oqMd871kPtaHBM0BW3OZAhoILgfHW3Op9Q3mx3Cw==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.10.6': - resolution: {integrity: sha512-6L5Y2E+FVvM+BtoA+mJFjf/SjpFr73w2kHBxINxwH8/PkjAjkePDr5m0ibQhPXV61bTwX49+1otzTY85EsUW9Q==} + '@swc/core-win32-arm64-msvc@1.10.4': + resolution: {integrity: sha512-e6j5kBu4fIY7fFxFxnZI0MlEovRvp50Lg59Fw+DVbtqHk3C85dckcy5xKP+UoXeuEmFceauQDczUcGs19SRGSQ==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.10.6': - resolution: {integrity: sha512-kxK3tW8DJwEkAkwy0vhwoBAShRebH1QTe0mvH9tlBQ21rToVZQn+GCV/I44dind80hYPw0Tw2JKFVfoEJyBszg==} + '@swc/core-win32-ia32-msvc@1.10.4': + resolution: {integrity: sha512-RSYHfdKgNXV/amY5Tqk1EWVsyQnhlsM//jeqMLw5Fy9rfxP592W9UTumNikNRPdjI8wKKzNMXDb1U29tQjN0dg==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.10.6': - resolution: {integrity: sha512-4pJka/+t8XcHee12G/R5VWcilkp5poT2EJhrybpuREkpQ7iC/4WOlOVrohbWQ4AhDQmojYQI/iS+gdF2JFLzTQ==} + '@swc/core-win32-x64-msvc@1.10.4': + resolution: {integrity: sha512-1ujYpaqfqNPYdwKBlvJnOqcl+Syn3UrQ4XE0Txz6zMYgyh6cdU6a3pxqLqIUSJ12MtXRA9ZUhEz1ekU3LfLWXw==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.10.6': - resolution: {integrity: sha512-zgXXsI6SAVwr6XsXyMnqlyLoa1lT+r09bAWI1xT3679ejWqI1Vnl14eJG0GjWYXCEMKHCNytfMq3OOQ62C39QQ==} + '@swc/core@1.10.4': + resolution: {integrity: sha512-ut3zfiTLORMxhr6y/GBxkHmzcGuVpwJYX4qyXWuBKkpw/0g0S5iO1/wW7RnLnZbAi8wS/n0atRZoaZlXWBkeJg==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '*' @@ -5591,14 +5591,14 @@ snapshots: '@discoveryjs/json-ext@0.6.3': {} - '@eamodio/eslint-lite-webpack-plugin@0.2.0(@swc/core@1.10.6)(esbuild@0.24.2)(eslint@9.17.0(jiti@2.4.0))(webpack-cli@6.0.1)(webpack@5.97.1)': + '@eamodio/eslint-lite-webpack-plugin@0.2.0(@swc/core@1.10.4)(esbuild@0.24.2)(eslint@9.17.0(jiti@2.4.0))(webpack-cli@6.0.1)(webpack@5.97.1)': dependencies: '@types/eslint': 9.6.1 - '@types/webpack': 5.28.5(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) + '@types/webpack': 5.28.5(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) eslint: 9.17.0(jiti@2.4.0) fast-glob: 3.3.3 minimatch: 10.0.1 - webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) transitivePeerDependencies: - '@swc/core' - esbuild @@ -6172,51 +6172,51 @@ snapshots: '@sindresorhus/merge-streams@2.3.0': {} - '@swc/core-darwin-arm64@1.10.6': + '@swc/core-darwin-arm64@1.10.4': optional: true - '@swc/core-darwin-x64@1.10.6': + '@swc/core-darwin-x64@1.10.4': optional: true - '@swc/core-linux-arm-gnueabihf@1.10.6': + '@swc/core-linux-arm-gnueabihf@1.10.4': optional: true - '@swc/core-linux-arm64-gnu@1.10.6': + '@swc/core-linux-arm64-gnu@1.10.4': optional: true - '@swc/core-linux-arm64-musl@1.10.6': + '@swc/core-linux-arm64-musl@1.10.4': optional: true - '@swc/core-linux-x64-gnu@1.10.6': + '@swc/core-linux-x64-gnu@1.10.4': optional: true - '@swc/core-linux-x64-musl@1.10.6': + '@swc/core-linux-x64-musl@1.10.4': optional: true - '@swc/core-win32-arm64-msvc@1.10.6': + '@swc/core-win32-arm64-msvc@1.10.4': optional: true - '@swc/core-win32-ia32-msvc@1.10.6': + '@swc/core-win32-ia32-msvc@1.10.4': optional: true - '@swc/core-win32-x64-msvc@1.10.6': + '@swc/core-win32-x64-msvc@1.10.4': optional: true - '@swc/core@1.10.6': + '@swc/core@1.10.4': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.17 optionalDependencies: - '@swc/core-darwin-arm64': 1.10.6 - '@swc/core-darwin-x64': 1.10.6 - '@swc/core-linux-arm-gnueabihf': 1.10.6 - '@swc/core-linux-arm64-gnu': 1.10.6 - '@swc/core-linux-arm64-musl': 1.10.6 - '@swc/core-linux-x64-gnu': 1.10.6 - '@swc/core-linux-x64-musl': 1.10.6 - '@swc/core-win32-arm64-msvc': 1.10.6 - '@swc/core-win32-ia32-msvc': 1.10.6 - '@swc/core-win32-x64-msvc': 1.10.6 + '@swc/core-darwin-arm64': 1.10.4 + '@swc/core-darwin-x64': 1.10.4 + '@swc/core-linux-arm-gnueabihf': 1.10.4 + '@swc/core-linux-arm64-gnu': 1.10.4 + '@swc/core-linux-arm64-musl': 1.10.4 + '@swc/core-linux-x64-gnu': 1.10.4 + '@swc/core-linux-x64-musl': 1.10.4 + '@swc/core-win32-arm64-msvc': 1.10.4 + '@swc/core-win32-ia32-msvc': 1.10.4 + '@swc/core-win32-x64-msvc': 1.10.4 '@swc/counter@0.1.3': {} @@ -6324,11 +6324,11 @@ snapshots: '@types/vscode@1.82.0': {} - '@types/webpack@5.28.5(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1)': + '@types/webpack@5.28.5(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1)': dependencies: '@types/node': 18.15.13 tapable: 2.2.1 - webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) transitivePeerDependencies: - '@swc/core' - esbuild @@ -6610,17 +6610,17 @@ snapshots: '@webpack-cli/configtest@3.0.1(webpack-cli@6.0.1)(webpack@5.97.1)': dependencies: - webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) webpack-cli: 6.0.1(webpack-bundle-analyzer@4.10.2)(webpack@5.97.1) '@webpack-cli/info@3.0.1(webpack-cli@6.0.1)(webpack@5.97.1)': dependencies: - webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) webpack-cli: 6.0.1(webpack-bundle-analyzer@4.10.2)(webpack@5.97.1) '@webpack-cli/serve@3.0.1(webpack-cli@6.0.1)(webpack@5.97.1)': dependencies: - webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) webpack-cli: 6.0.1(webpack-bundle-analyzer@4.10.2)(webpack@5.97.1) '@xmldom/xmldom@0.7.13': {} @@ -7087,7 +7087,7 @@ snapshots: circular-dependency-plugin@5.2.2(webpack@5.97.1): dependencies: - webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) classnames@2.5.1: {} @@ -7100,7 +7100,7 @@ snapshots: clean-webpack-plugin@4.0.0(webpack@5.97.1): dependencies: del: 4.1.1 - webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) cli-cursor@4.0.0: dependencies: @@ -7214,7 +7214,7 @@ snapshots: normalize-path: 3.0.0 schema-utils: 4.3.0 serialize-javascript: 6.0.2 - webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) core-js@2.6.12: {} @@ -7244,7 +7244,7 @@ snapshots: cheerio: 1.0.0-rc.12 html-webpack-plugin: 5.6.3(webpack@5.97.1) lodash: 4.17.21 - webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) css-declaration-sorter@7.2.0(postcss@8.4.49): dependencies: @@ -7261,7 +7261,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.6.3 optionalDependencies: - webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) css-minimizer-webpack-plugin@7.0.0(esbuild@0.24.2)(webpack@5.97.1): dependencies: @@ -7271,7 +7271,7 @@ snapshots: postcss: 8.4.49 schema-utils: 4.3.0 serialize-javascript: 6.0.2 - webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) optionalDependencies: esbuild: 0.24.2 @@ -7780,7 +7780,7 @@ snapshots: esbuild: 0.24.2 get-tsconfig: 4.8.1 loader-utils: 2.0.4 - webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) webpack-sources: 1.4.3 esbuild-node-externals@1.16.0(esbuild@0.24.2): @@ -8107,7 +8107,7 @@ snapshots: semver: 7.6.3 tapable: 2.2.1 typescript: 5.7.2 - webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) form-data@4.0.1: dependencies: @@ -8358,7 +8358,7 @@ snapshots: dependencies: html-minifier-terser: 7.2.0 parse5: 7.2.1 - webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) html-minifier-terser@6.1.0: dependencies: @@ -8388,7 +8388,7 @@ snapshots: pretty-error: 4.0.0 tapable: 2.2.1 optionalDependencies: - webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) htmlparser2@6.1.0: dependencies: @@ -8483,7 +8483,7 @@ snapshots: dependencies: schema-utils: 4.3.0 serialize-javascript: 6.0.2 - webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) optionalDependencies: sharp: 0.33.5 svgo: 3.3.2 @@ -9168,7 +9168,7 @@ snapshots: dependencies: schema-utils: 4.3.0 tapable: 2.2.1 - webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) minimatch@10.0.1: dependencies: @@ -10298,7 +10298,7 @@ snapshots: optionalDependencies: sass: 1.83.1 sass-embedded: 1.77.8 - webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) sass@1.83.1: dependencies: @@ -10728,16 +10728,16 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 - terser-webpack-plugin@5.3.11(@swc/core@1.10.6)(esbuild@0.24.2)(webpack@5.97.1): + terser-webpack-plugin@5.3.11(@swc/core@1.10.4)(esbuild@0.24.2)(webpack@5.97.1): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 4.3.0 serialize-javascript: 6.0.2 terser: 5.37.0 - webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) optionalDependencies: - '@swc/core': 1.10.6 + '@swc/core': 1.10.4 esbuild: 0.24.2 terser@5.37.0: @@ -10792,7 +10792,7 @@ snapshots: semver: 7.6.3 source-map: 0.7.4 typescript: 5.7.2 - webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) tsconfig-paths@3.15.0: dependencies: @@ -11016,7 +11016,7 @@ snapshots: import-local: 3.2.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1) + webpack: 5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1) webpack-merge: 6.0.1 optionalDependencies: webpack-bundle-analyzer: 4.10.2 @@ -11040,7 +11040,7 @@ snapshots: webpack-sources@3.2.3: {} - webpack@5.97.1(@swc/core@1.10.6)(esbuild@0.24.2)(webpack-cli@6.0.1): + webpack@5.97.1(@swc/core@1.10.4)(esbuild@0.24.2)(webpack-cli@6.0.1): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.6 @@ -11062,7 +11062,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.11(@swc/core@1.10.6)(esbuild@0.24.2)(webpack@5.97.1) + terser-webpack-plugin: 5.3.11(@swc/core@1.10.4)(esbuild@0.24.2)(webpack@5.97.1) watchpack: 2.4.2 webpack-sources: 3.2.3 optionalDependencies: