From ec9da02ffaebad581d266095b33f24abfbc70b4c Mon Sep 17 00:00:00 2001 From: Eric Amodio <eamodio@gmail.com> Date: Mon, 12 Jun 2023 01:11:36 -0400 Subject: [PATCH] Avoids use-before-init w/ useDefineForClassFields See https://github.com/microsoft/TypeScript/issues/50971 --- src/views/nodes/branchNode.ts | 4 +++- src/views/nodes/branchTrackingStatusNode.ts | 4 +++- src/views/nodes/contributorNode.ts | 4 +++- src/views/nodes/fileHistoryNode.ts | 4 +++- src/views/nodes/lineHistoryNode.ts | 4 +++- src/views/nodes/reflogNode.ts | 4 +++- src/views/nodes/reflogRecordNode.ts | 4 +++- src/views/nodes/resultsCommitsNode.ts | 5 ++++- src/views/nodes/tagNode.ts | 4 +++- src/views/nodes/worktreeNode.ts | 4 +++- 10 files changed, 31 insertions(+), 10 deletions(-) diff --git a/src/views/nodes/branchNode.ts b/src/views/nodes/branchNode.ts index c273651..720fb03 100644 --- a/src/views/nodes/branchNode.ts +++ b/src/views/nodes/branchNode.ts @@ -38,6 +38,8 @@ type State = { }; export class BranchNode extends ViewRefNode<ViewsWithBranches, GitBranchReference, State> implements PageableViewNode { + limit: number | undefined; + private readonly options: { expanded: boolean; limitCommits: boolean; @@ -73,6 +75,7 @@ export class BranchNode extends ViewRefNode<ViewsWithBranches, GitBranchReferenc this.updateContext({ repository: repo, branch: branch, root: root }); this._uniqueId = getViewNodeId('branch', this.context); + this.limit = this.view.getNodeLastKnownLimit(this); this.options = { expanded: false, @@ -563,7 +566,6 @@ export class BranchNode extends ViewRefNode<ViewsWithBranches, GitBranchReferenc return this._log?.hasMore ?? true; } - limit: number | undefined = this.view.getNodeLastKnownLimit(this); @gate() async loadMore(limit?: number | { until?: any }) { let log = await window.withProgress( diff --git a/src/views/nodes/branchTrackingStatusNode.ts b/src/views/nodes/branchTrackingStatusNode.ts index faa6298..d0e72f5 100644 --- a/src/views/nodes/branchTrackingStatusNode.ts +++ b/src/views/nodes/branchTrackingStatusNode.ts @@ -27,6 +27,8 @@ export interface BranchTrackingStatus { } export class BranchTrackingStatusNode extends ViewNode<ViewsWithCommits> implements PageableViewNode { + limit: number | undefined; + constructor( view: ViewsWithCommits, protected override readonly parent: ViewNode, @@ -48,6 +50,7 @@ export class BranchTrackingStatusNode extends ViewNode<ViewsWithCommits> impleme root: root, }); this._uniqueId = getViewNodeId('tracking-status', this.context); + this.limit = this.view.getNodeLastKnownLimit(this); } override get id(): string { @@ -284,7 +287,6 @@ export class BranchTrackingStatusNode extends ViewNode<ViewsWithCommits> impleme return this._log?.hasMore ?? true; } - limit: number | undefined = this.view.getNodeLastKnownLimit(this); @gate() async loadMore(limit?: number | { until?: any }) { let log = await window.withProgress( diff --git a/src/views/nodes/contributorNode.ts b/src/views/nodes/contributorNode.ts index 33ca835..53b92d7 100644 --- a/src/views/nodes/contributorNode.ts +++ b/src/views/nodes/contributorNode.ts @@ -18,6 +18,8 @@ import type { PageableViewNode } from './viewNode'; import { ContextValues, getViewNodeId, ViewNode } from './viewNode'; export class ContributorNode extends ViewNode<ViewsWithContributors> implements PageableViewNode { + limit: number | undefined; + constructor( uri: GitUri, view: ViewsWithContributors, @@ -33,6 +35,7 @@ export class ContributorNode extends ViewNode<ViewsWithContributors> implements this.updateContext({ contributor: contributor }); this._uniqueId = getViewNodeId('contributor', this.context); + this.limit = this.view.getNodeLastKnownLimit(this); } override get id(): string { @@ -185,7 +188,6 @@ export class ContributorNode extends ViewNode<ViewsWithContributors> implements return this._log?.hasMore ?? true; } - limit: number | undefined = this.view.getNodeLastKnownLimit(this); @gate() async loadMore(limit?: number | { until?: any }) { let log = await window.withProgress( diff --git a/src/views/nodes/fileHistoryNode.ts b/src/views/nodes/fileHistoryNode.ts index c228ef7..e004d28 100644 --- a/src/views/nodes/fileHistoryNode.ts +++ b/src/views/nodes/fileHistoryNode.ts @@ -22,6 +22,8 @@ import type { PageableViewNode, ViewNode } from './viewNode'; import { ContextValues, getViewNodeId, SubscribeableViewNode } from './viewNode'; export class FileHistoryNode extends SubscribeableViewNode<FileHistoryView> implements PageableViewNode { + limit: number | undefined; + protected override splatted = true; constructor( @@ -37,6 +39,7 @@ export class FileHistoryNode extends SubscribeableViewNode<FileHistoryView> impl this.updateContext({ branch: branch }); } this._uniqueId = getViewNodeId(`file-history+${uri.toString()}`, this.context); + this.limit = this.view.getNodeLastKnownLimit(this); } override get id(): string { @@ -250,7 +253,6 @@ export class FileHistoryNode extends SubscribeableViewNode<FileHistoryView> impl return this._log?.hasMore ?? true; } - limit: number | undefined = this.view.getNodeLastKnownLimit(this); @gate() async loadMore(limit?: number | { until?: any }) { let log = await window.withProgress( diff --git a/src/views/nodes/lineHistoryNode.ts b/src/views/nodes/lineHistoryNode.ts index e3bc62d..adc56a2 100644 --- a/src/views/nodes/lineHistoryNode.ts +++ b/src/views/nodes/lineHistoryNode.ts @@ -26,6 +26,8 @@ export class LineHistoryNode extends SubscribeableViewNode<FileHistoryView | LineHistoryView> implements PageableViewNode { + limit: number | undefined; + protected override splatted = true; constructor( @@ -47,6 +49,7 @@ export class LineHistoryNode },${selection.end.character}]`, this.context, ); + this.limit = this.view.getNodeLastKnownLimit(this); } override get id(): string { @@ -263,7 +266,6 @@ export class LineHistoryNode return this._log?.hasMore ?? true; } - limit: number | undefined = this.view.getNodeLastKnownLimit(this); @gate() async loadMore(limit?: number | { until?: any }) { let log = await window.withProgress( diff --git a/src/views/nodes/reflogNode.ts b/src/views/nodes/reflogNode.ts index 6831ca9..ec55b9f 100644 --- a/src/views/nodes/reflogNode.ts +++ b/src/views/nodes/reflogNode.ts @@ -12,6 +12,8 @@ import type { PageableViewNode } from './viewNode'; import { ContextValues, getViewNodeId, ViewNode } from './viewNode'; export class ReflogNode extends ViewNode<RepositoriesView | WorkspacesView> implements PageableViewNode { + limit: number | undefined; + constructor( uri: GitUri, view: RepositoriesView | WorkspacesView, @@ -22,6 +24,7 @@ export class ReflogNode extends ViewNode<RepositoriesView | WorkspacesView> impl this.updateContext({ repository: repo }); this._uniqueId = getViewNodeId('reflog', this.context); + this.limit = this.view.getNodeLastKnownLimit(this); } override get id(): string { @@ -88,7 +91,6 @@ export class ReflogNode extends ViewNode<RepositoriesView | WorkspacesView> impl return this._reflog?.hasMore ?? true; } - limit: number | undefined = this.view.getNodeLastKnownLimit(this); async loadMore(limit?: number) { let reflog = await this.getReflog(); if (reflog === undefined || !reflog.hasMore) return; diff --git a/src/views/nodes/reflogRecordNode.ts b/src/views/nodes/reflogRecordNode.ts index 887ee48..797fd47 100644 --- a/src/views/nodes/reflogRecordNode.ts +++ b/src/views/nodes/reflogRecordNode.ts @@ -13,11 +13,14 @@ import type { PageableViewNode } from './viewNode'; import { ContextValues, getViewNodeId, ViewNode } from './viewNode'; export class ReflogRecordNode extends ViewNode<ViewsWithCommits> implements PageableViewNode { + limit: number | undefined; + constructor(view: ViewsWithCommits, parent: ViewNode, public readonly record: GitReflogRecord) { super(GitUri.fromRepoPath(record.repoPath), view, parent); this.updateContext({ reflog: record }); this._uniqueId = getViewNodeId('reflog-record', this.context); + this.limit = this.view.getNodeLastKnownLimit(this); } override get id(): string { @@ -86,7 +89,6 @@ export class ReflogRecordNode extends ViewNode<ViewsWithCommits> implements Page return this._log?.hasMore ?? true; } - limit: number | undefined = this.view.getNodeLastKnownLimit(this); @gate() async loadMore(limit?: number | { until?: any }) { let log = await window.withProgress( diff --git a/src/views/nodes/resultsCommitsNode.ts b/src/views/nodes/resultsCommitsNode.ts index d47860d..df4b34c 100644 --- a/src/views/nodes/resultsCommitsNode.ts +++ b/src/views/nodes/resultsCommitsNode.ts @@ -29,6 +29,8 @@ export class ResultsCommitsNode<View extends ViewsWithCommits = ViewsWithCommits extends ViewNode<View> implements PageableViewNode { + limit: number | undefined; + constructor( view: View, protected override readonly parent: ViewNode, @@ -55,6 +57,8 @@ export class ResultsCommitsNode<View extends ViewsWithCommits = ViewsWithCommits super(GitUri.fromRepoPath(repoPath), view, parent); this._uniqueId = getViewNodeId(`results-commits${_options?.id ? `+${_options.id}` : ''}`, this.context); + this.limit = this.view.getNodeLastKnownLimit(this); + this._options = { expand: true, ..._options }; if (splatted != null) { this.splatted = splatted; @@ -195,7 +199,6 @@ export class ResultsCommitsNode<View extends ViewsWithCommits = ViewsWithCommits } private _expandAutolinks: boolean = false; - limit: number | undefined = this.view.getNodeLastKnownLimit(this); async loadMore(limit?: number, context?: Record<string, unknown>): Promise<void> { const results = await this.getCommitsQueryResults(); if (results == null || !results.hasMore) return; diff --git a/src/views/nodes/tagNode.ts b/src/views/nodes/tagNode.ts index df96a51..874dc9d 100644 --- a/src/views/nodes/tagNode.ts +++ b/src/views/nodes/tagNode.ts @@ -19,11 +19,14 @@ import type { PageableViewNode, ViewNode } from './viewNode'; import { ContextValues, getViewNodeId, ViewRefNode } from './viewNode'; export class TagNode extends ViewRefNode<ViewsWithTags, GitTagReference> implements PageableViewNode { + limit: number | undefined; + constructor(uri: GitUri, view: ViewsWithTags, public override parent: ViewNode, public readonly tag: GitTag) { super(uri, view, parent); this.updateContext({ tag: tag }); this._uniqueId = getViewNodeId('tag', this.context); + this.limit = this.view.getNodeLastKnownLimit(this); } override get id(): string { @@ -118,7 +121,6 @@ export class TagNode extends ViewRefNode<ViewsWithTags, GitTagReference> impleme return this._log?.hasMore ?? true; } - limit: number | undefined = this.view.getNodeLastKnownLimit(this); @gate() async loadMore(limit?: number | { until?: any }) { let log = await window.withProgress( diff --git a/src/views/nodes/worktreeNode.ts b/src/views/nodes/worktreeNode.ts index ac9701d..276cb92 100644 --- a/src/views/nodes/worktreeNode.ts +++ b/src/views/nodes/worktreeNode.ts @@ -30,6 +30,8 @@ type State = { }; export class WorktreeNode extends ViewNode<ViewsWithWorktrees, State> { + limit: number | undefined; + private _branch: GitBranch | undefined; constructor( @@ -42,6 +44,7 @@ export class WorktreeNode extends ViewNode<ViewsWithWorktrees, State> { this.updateContext({ worktree: worktree }); this._uniqueId = getViewNodeId('worktree', this.context); + this.limit = this.view.getNodeLastKnownLimit(this); } override get id(): string { @@ -397,7 +400,6 @@ export class WorktreeNode extends ViewNode<ViewsWithWorktrees, State> { return this._log?.hasMore ?? true; } - limit: number | undefined = this.view.getNodeLastKnownLimit(this); @gate() async loadMore(limit?: number | { until?: any }) { let log = await window.withProgress(