@gitkraken/core-gitlens 0.4.0 → 0.4.100
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +71 -1
- package/README.md +9 -2
- package/dist/git/cache.d.ts +29 -2
- package/dist/git/cache.d.ts.map +1 -1
- package/dist/git/cache.js +67 -7
- package/dist/git/cache.js.map +1 -1
- package/dist/git/context.d.ts.map +1 -1
- package/dist/git/errors.d.ts +31 -1
- package/dist/git/errors.d.ts.map +1 -1
- package/dist/git/errors.js +29 -0
- package/dist/git/errors.js.map +1 -1
- package/dist/git/models/author.d.ts.map +1 -1
- package/dist/git/models/author.js.map +1 -1
- package/dist/git/models/autolink.d.ts.map +1 -1
- package/dist/git/models/autolink.js.map +1 -1
- package/dist/git/models/blame.d.ts.map +1 -1
- package/dist/git/models/blame.js.map +1 -1
- package/dist/git/models/branch.d.ts.map +1 -1
- package/dist/git/models/branch.js.map +1 -1
- package/dist/git/models/commit.d.ts.map +1 -1
- package/dist/git/models/commit.js +1 -1
- package/dist/git/models/commit.js.map +1 -1
- package/dist/git/models/contributor.d.ts.map +1 -1
- package/dist/git/models/contributor.js.map +1 -1
- package/dist/git/models/defaultBranch.d.ts.map +1 -1
- package/dist/git/models/defaultBranch.js.map +1 -1
- package/dist/git/models/diff.d.ts.map +1 -1
- package/dist/git/models/diff.js.map +1 -1
- package/dist/git/models/file.d.ts.map +1 -1
- package/dist/git/models/file.js.map +1 -1
- package/dist/git/models/fileChange.d.ts.map +1 -1
- package/dist/git/models/fileChange.js.map +1 -1
- package/dist/git/models/fileStatus.d.ts +22 -22
- package/dist/git/models/fileStatus.d.ts.map +1 -1
- package/dist/git/models/fileStatus.js.map +1 -1
- package/dist/git/models/graph.d.ts +122 -1
- package/dist/git/models/graph.d.ts.map +1 -1
- package/dist/git/models/graph.js +4 -0
- package/dist/git/models/graph.js.map +1 -1
- package/dist/git/models/graphSearch.d.ts.map +1 -1
- package/dist/git/models/graphSearch.js.map +1 -1
- package/dist/git/models/graphSession.d.ts +177 -0
- package/dist/git/models/graphSession.d.ts.map +1 -0
- package/dist/git/models/graphSession.js +7 -0
- package/dist/git/models/graphSession.js.map +1 -0
- package/dist/git/models/issue.d.ts +12 -2
- package/dist/git/models/issue.d.ts.map +1 -1
- package/dist/git/models/issue.js +3 -1
- package/dist/git/models/issue.js.map +1 -1
- package/dist/git/models/issueOrPullRequest.d.ts.map +1 -1
- package/dist/git/models/issueOrPullRequest.js.map +1 -1
- package/dist/git/models/lineRange.d.ts.map +1 -1
- package/dist/git/models/lineRange.js.map +1 -1
- package/dist/git/models/log.d.ts.map +1 -1
- package/dist/git/models/log.js.map +1 -1
- package/dist/git/models/mergeConflicts.d.ts.map +1 -1
- package/dist/git/models/mergeConflicts.js.map +1 -1
- package/dist/git/models/patch.d.ts.map +1 -1
- package/dist/git/models/patch.js.map +1 -1
- package/dist/git/models/pausedOperationStatus.d.ts.map +1 -1
- package/dist/git/models/pausedOperationStatus.js.map +1 -1
- package/dist/git/models/pullRequest.d.ts +27 -2
- package/dist/git/models/pullRequest.d.ts.map +1 -1
- package/dist/git/models/pullRequest.js +7 -1
- package/dist/git/models/pullRequest.js.map +1 -1
- package/dist/git/models/rebase.d.ts.map +1 -1
- package/dist/git/models/rebase.js.map +1 -1
- package/dist/git/models/reference.d.ts.map +1 -1
- package/dist/git/models/reference.js.map +1 -1
- package/dist/git/models/reflog.d.ts.map +1 -1
- package/dist/git/models/reflog.js.map +1 -1
- package/dist/git/models/remote.d.ts.map +1 -1
- package/dist/git/models/remote.js.map +1 -1
- package/dist/git/models/remoteProvider.d.ts.map +1 -1
- package/dist/git/models/remoteProvider.js.map +1 -1
- package/dist/git/models/remoteResource.d.ts.map +1 -1
- package/dist/git/models/remoteResource.js.map +1 -1
- package/dist/git/models/repository.d.ts +20 -2
- package/dist/git/models/repository.d.ts.map +1 -1
- package/dist/git/models/repository.js +19 -0
- package/dist/git/models/repository.js.map +1 -1
- package/dist/git/models/repositoryChangeEvent.d.ts.map +1 -1
- package/dist/git/models/repositoryChangeEvent.js.map +1 -1
- package/dist/git/models/repositoryIdentities.d.ts.map +1 -1
- package/dist/git/models/repositoryIdentities.js.map +1 -1
- package/dist/git/models/repositoryMetadata.d.ts.map +1 -1
- package/dist/git/models/repositoryMetadata.js.map +1 -1
- package/dist/git/models/resourceDescriptor.d.ts +16 -0
- package/dist/git/models/resourceDescriptor.d.ts.map +1 -1
- package/dist/git/models/resourceDescriptor.js.map +1 -1
- package/dist/git/models/revision.d.ts.map +1 -1
- package/dist/git/models/revision.js.map +1 -1
- package/dist/git/models/search.d.ts.map +1 -1
- package/dist/git/models/search.js.map +1 -1
- package/dist/git/models/shortlog.d.ts.map +1 -1
- package/dist/git/models/shortlog.js.map +1 -1
- package/dist/git/models/signature.d.ts +14 -0
- package/dist/git/models/signature.d.ts.map +1 -1
- package/dist/git/models/signature.js.map +1 -1
- package/dist/git/models/staging.d.ts.map +1 -1
- package/dist/git/models/staging.js.map +1 -1
- package/dist/git/models/stash.d.ts.map +1 -1
- package/dist/git/models/stash.js.map +1 -1
- package/dist/git/models/status.d.ts.map +1 -1
- package/dist/git/models/status.js.map +1 -1
- package/dist/git/models/statusFile.d.ts.map +1 -1
- package/dist/git/models/statusFile.js.map +1 -1
- package/dist/git/models/tag.d.ts +11 -1
- package/dist/git/models/tag.d.ts.map +1 -1
- package/dist/git/models/tag.js +9 -2
- package/dist/git/models/tag.js.map +1 -1
- package/dist/git/models/tree.d.ts.map +1 -1
- package/dist/git/models/tree.js.map +1 -1
- package/dist/git/models/user.d.ts.map +1 -1
- package/dist/git/models/user.js.map +1 -1
- package/dist/git/models/worktree.d.ts.map +1 -1
- package/dist/git/models/worktree.js.map +1 -1
- package/dist/git/parsers/diffParser.d.ts.map +1 -1
- package/dist/git/parsers/diffParser.js +1 -1
- package/dist/git/parsers/diffParser.js.map +1 -1
- package/dist/git/parsers/rebaseTodoParser.d.ts.map +1 -1
- package/dist/git/parsers/rebaseTodoParser.js.map +1 -1
- package/dist/git/providers/blame.d.ts.map +1 -1
- package/dist/git/providers/blame.js.map +1 -1
- package/dist/git/providers/branches.d.ts +8 -1
- package/dist/git/providers/branches.d.ts.map +1 -1
- package/dist/git/providers/branches.js.map +1 -1
- package/dist/git/providers/commits.d.ts +6 -1
- package/dist/git/providers/commits.d.ts.map +1 -1
- package/dist/git/providers/commits.js.map +1 -1
- package/dist/git/providers/config.d.ts +6 -2
- package/dist/git/providers/config.d.ts.map +1 -1
- package/dist/git/providers/config.js.map +1 -1
- package/dist/git/providers/contributors.d.ts.map +1 -1
- package/dist/git/providers/contributors.js.map +1 -1
- package/dist/git/providers/diff.d.ts.map +1 -1
- package/dist/git/providers/diff.js.map +1 -1
- package/dist/git/providers/graph.d.ts +55 -1
- package/dist/git/providers/graph.d.ts.map +1 -1
- package/dist/git/providers/graph.js.map +1 -1
- package/dist/git/providers/operations.d.ts.map +1 -1
- package/dist/git/providers/operations.js.map +1 -1
- package/dist/git/providers/patch.d.ts.map +1 -1
- package/dist/git/providers/patch.js.map +1 -1
- package/dist/git/providers/pausedOperations.d.ts.map +1 -1
- package/dist/git/providers/pausedOperations.js.map +1 -1
- package/dist/git/providers/provider.d.ts.map +1 -1
- package/dist/git/providers/provider.js.map +1 -1
- package/dist/git/providers/refs.d.ts.map +1 -1
- package/dist/git/providers/refs.js.map +1 -1
- package/dist/git/providers/remotes.d.ts.map +1 -1
- package/dist/git/providers/remotes.js.map +1 -1
- package/dist/git/providers/revision.d.ts.map +1 -1
- package/dist/git/providers/revision.js.map +1 -1
- package/dist/git/providers/shared/remotes.d.ts.map +1 -1
- package/dist/git/providers/shared/remotes.js.map +1 -1
- package/dist/git/providers/staging.d.ts.map +1 -1
- package/dist/git/providers/staging.js.map +1 -1
- package/dist/git/providers/stash.d.ts.map +1 -1
- package/dist/git/providers/stash.js.map +1 -1
- package/dist/git/providers/status.d.ts +1 -0
- package/dist/git/providers/status.d.ts.map +1 -1
- package/dist/git/providers/status.js.map +1 -1
- package/dist/git/providers/tags.d.ts.map +1 -1
- package/dist/git/providers/tags.js.map +1 -1
- package/dist/git/providers/types.d.ts.map +1 -1
- package/dist/git/providers/types.js.map +1 -1
- package/dist/git/providers/worktrees.d.ts +3 -1
- package/dist/git/providers/worktrees.d.ts.map +1 -1
- package/dist/git/providers/worktrees.js.map +1 -1
- package/dist/git/remotes/azure-devops.d.ts.map +1 -1
- package/dist/git/remotes/azure-devops.js +27 -31
- package/dist/git/remotes/azure-devops.js.map +1 -1
- package/dist/git/remotes/bitbucket-server.d.ts.map +1 -1
- package/dist/git/remotes/bitbucket-server.js +21 -23
- package/dist/git/remotes/bitbucket-server.js.map +1 -1
- package/dist/git/remotes/bitbucket.d.ts.map +1 -1
- package/dist/git/remotes/bitbucket.js +21 -23
- package/dist/git/remotes/bitbucket.js.map +1 -1
- package/dist/git/remotes/custom.d.ts.map +1 -1
- package/dist/git/remotes/custom.js.map +1 -1
- package/dist/git/remotes/gerrit.d.ts.map +1 -1
- package/dist/git/remotes/gerrit.js +11 -13
- package/dist/git/remotes/gerrit.js.map +1 -1
- package/dist/git/remotes/gitea.d.ts.map +1 -1
- package/dist/git/remotes/gitea.js +12 -14
- package/dist/git/remotes/gitea.js.map +1 -1
- package/dist/git/remotes/github.d.ts.map +1 -1
- package/dist/git/remotes/github.js +54 -56
- package/dist/git/remotes/github.js.map +1 -1
- package/dist/git/remotes/gitlab.d.ts.map +1 -1
- package/dist/git/remotes/gitlab.js +93 -95
- package/dist/git/remotes/gitlab.js.map +1 -1
- package/dist/git/remotes/google-source.d.ts.map +1 -1
- package/dist/git/remotes/google-source.js.map +1 -1
- package/dist/git/remotes/matcher.d.ts.map +1 -1
- package/dist/git/remotes/matcher.js.map +1 -1
- package/dist/git/run.types.d.ts +62 -3
- package/dist/git/run.types.d.ts.map +1 -1
- package/dist/git/service.d.ts.map +1 -1
- package/dist/git/utils/autolink.utils.d.ts.map +1 -1
- package/dist/git/utils/autolink.utils.js.map +1 -1
- package/dist/git/utils/blame.utils.d.ts.map +1 -1
- package/dist/git/utils/blame.utils.js.map +1 -1
- package/dist/git/utils/branch.utils.d.ts.map +1 -1
- package/dist/git/utils/branch.utils.js +12 -1
- package/dist/git/utils/branch.utils.js.map +1 -1
- package/dist/git/utils/commit.utils.d.ts.map +1 -1
- package/dist/git/utils/commit.utils.js.map +1 -1
- package/dist/git/utils/conflictResolution.utils.d.ts.map +1 -1
- package/dist/git/utils/conflictResolution.utils.js.map +1 -1
- package/dist/git/utils/contributor.utils.d.ts +1 -1
- package/dist/git/utils/contributor.utils.d.ts.map +1 -1
- package/dist/git/utils/contributor.utils.js +1 -2
- package/dist/git/utils/contributor.utils.js.map +1 -1
- package/dist/git/utils/fetch.utils.d.ts.map +1 -1
- package/dist/git/utils/fetch.utils.js.map +1 -1
- package/dist/git/utils/fileStatus.utils.d.ts +7 -0
- package/dist/git/utils/fileStatus.utils.d.ts.map +1 -1
- package/dist/git/utils/fileStatus.utils.js +6 -0
- package/dist/git/utils/fileStatus.utils.js.map +1 -1
- package/dist/git/utils/graph.utils.d.ts +20 -0
- package/dist/git/utils/graph.utils.d.ts.map +1 -0
- package/dist/git/utils/graph.utils.js +40 -0
- package/dist/git/utils/graph.utils.js.map +1 -0
- package/dist/git/utils/issue.utils.d.ts.map +1 -1
- package/dist/git/utils/issue.utils.js +1 -0
- package/dist/git/utils/issue.utils.js.map +1 -1
- package/dist/git/utils/issueOrPullRequest.utils.d.ts.map +1 -1
- package/dist/git/utils/issueOrPullRequest.utils.js.map +1 -1
- package/dist/git/utils/mergeConflicts.utils.d.ts.map +1 -1
- package/dist/git/utils/mergeConflicts.utils.js.map +1 -1
- package/dist/git/utils/pausedOperationStatus.utils.d.ts +13 -13
- package/dist/git/utils/pausedOperationStatus.utils.d.ts.map +1 -1
- package/dist/git/utils/pausedOperationStatus.utils.js.map +1 -1
- package/dist/git/utils/pullRequest.utils.d.ts.map +1 -1
- package/dist/git/utils/pullRequest.utils.js +9 -0
- package/dist/git/utils/pullRequest.utils.js.map +1 -1
- package/dist/git/utils/reachability.utils.d.ts +20 -2
- package/dist/git/utils/reachability.utils.d.ts.map +1 -1
- package/dist/git/utils/reachability.utils.js +68 -7
- package/dist/git/utils/reachability.utils.js.map +1 -1
- package/dist/git/utils/rebase.utils.d.ts.map +1 -1
- package/dist/git/utils/rebase.utils.js.map +1 -1
- package/dist/git/utils/reference.utils.d.ts.map +1 -1
- package/dist/git/utils/reference.utils.js.map +1 -1
- package/dist/git/utils/remote.utils.d.ts.map +1 -1
- package/dist/git/utils/remote.utils.js.map +1 -1
- package/dist/git/utils/repository.utils.d.ts.map +1 -1
- package/dist/git/utils/repository.utils.js.map +1 -1
- package/dist/git/utils/resourceDescriptor.utils.d.ts.map +1 -1
- package/dist/git/utils/resourceDescriptor.utils.js.map +1 -1
- package/dist/git/utils/revision.utils.d.ts.map +1 -1
- package/dist/git/utils/revision.utils.js.map +1 -1
- package/dist/git/utils/search.utils.d.ts.map +1 -1
- package/dist/git/utils/search.utils.js.map +1 -1
- package/dist/git/utils/sorting.d.ts.map +1 -1
- package/dist/git/utils/sorting.js.map +1 -1
- package/dist/git/utils/sshKey.utils.d.ts +7 -0
- package/dist/git/utils/sshKey.utils.d.ts.map +1 -0
- package/dist/git/utils/sshKey.utils.js +25 -0
- package/dist/git/utils/sshKey.utils.js.map +1 -0
- package/dist/git/utils/status.utils.d.ts.map +1 -1
- package/dist/git/utils/status.utils.js.map +1 -1
- package/dist/git/utils/statusFile.utils.d.ts.map +1 -1
- package/dist/git/utils/statusFile.utils.js.map +1 -1
- package/dist/git/utils/tag.utils.d.ts.map +1 -1
- package/dist/git/utils/tag.utils.js.map +1 -1
- package/dist/git/utils/tooltip.utils.d.ts.map +1 -1
- package/dist/git/utils/tooltip.utils.js.map +1 -1
- package/dist/git/utils/uriAuthority.d.ts.map +1 -1
- package/dist/git/utils/uriAuthority.js.map +1 -1
- package/dist/git/utils/user.utils.d.ts.map +1 -1
- package/dist/git/utils/user.utils.js.map +1 -1
- package/dist/git/utils/worktree.utils.d.ts.map +1 -1
- package/dist/git/utils/worktree.utils.js.map +1 -1
- package/dist/git/watching/changeEvent.d.ts.map +1 -1
- package/dist/git/watching/changeEvent.js.map +1 -1
- package/dist/git/watching/classifyChange.d.ts.map +1 -1
- package/dist/git/watching/classifyChange.js.map +1 -1
- package/dist/git/watching/gitIgnoreFilter.d.ts.map +1 -1
- package/dist/git/watching/gitIgnoreFilter.js.map +1 -1
- package/dist/git/watching/initWatcher.d.ts.map +1 -1
- package/dist/git/watching/initWatcher.js.map +1 -1
- package/dist/git/watching/provider.d.ts.map +1 -1
- package/dist/git/watching/provider.js.map +1 -1
- package/dist/git/watching/watchGroup.d.ts.map +1 -1
- package/dist/git/watching/watchGroup.js.map +1 -1
- package/dist/git/watching/watchService.d.ts +4 -0
- package/dist/git/watching/watchService.d.ts.map +1 -1
- package/dist/git/watching/watchService.js +15 -1
- package/dist/git/watching/watchService.js.map +1 -1
- package/dist/git/watching/watchSession.d.ts +7 -0
- package/dist/git/watching/watchSession.d.ts.map +1 -1
- package/dist/git/watching/watchSession.js +14 -2
- package/dist/git/watching/watchSession.js.map +1 -1
- package/dist/git/watching/watcherPatterns.d.ts.map +1 -1
- package/dist/git/watching/watcherPatterns.js.map +1 -1
- package/dist/git-cli/cliGitProvider.d.ts.map +1 -1
- package/dist/git-cli/exec/exec.d.ts.map +1 -1
- package/dist/git-cli/exec/exec.errors.d.ts.map +1 -1
- package/dist/git-cli/exec/exec.errors.js.map +1 -1
- package/dist/git-cli/exec/exec.js.map +1 -1
- package/dist/git-cli/exec/exec.types.d.ts.map +1 -1
- package/dist/git-cli/exec/exec.types.js.map +1 -1
- package/dist/git-cli/exec/features.d.ts.map +1 -1
- package/dist/git-cli/exec/features.js.map +1 -1
- package/dist/git-cli/exec/git.d.ts +19 -27
- package/dist/git-cli/exec/git.d.ts.map +1 -1
- package/dist/git-cli/exec/git.js +126 -34
- package/dist/git-cli/exec/git.js.map +1 -1
- package/dist/git-cli/exec/gitQueue.d.ts.map +1 -1
- package/dist/git-cli/exec/gitQueue.js.map +1 -1
- package/dist/git-cli/exec/locator.d.ts.map +1 -1
- package/dist/git-cli/exec/locator.js.map +1 -1
- package/dist/git-cli/parsers/blameParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/blameParser.js.map +1 -1
- package/dist/git-cli/parsers/indexParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/indexParser.js.map +1 -1
- package/dist/git-cli/parsers/logParser.d.ts +9 -1
- package/dist/git-cli/parsers/logParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/logParser.js +141 -60
- package/dist/git-cli/parsers/logParser.js.map +1 -1
- package/dist/git-cli/parsers/mergeTreeParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/mergeTreeParser.js.map +1 -1
- package/dist/git-cli/parsers/refParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/refParser.js.map +1 -1
- package/dist/git-cli/parsers/reflogParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/reflogParser.js.map +1 -1
- package/dist/git-cli/parsers/remoteParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/remoteParser.js.map +1 -1
- package/dist/git-cli/parsers/shortlogParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/shortlogParser.js.map +1 -1
- package/dist/git-cli/parsers/signatureParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/signatureParser.js.map +1 -1
- package/dist/git-cli/parsers/sshSignatureParser.d.ts +21 -0
- package/dist/git-cli/parsers/sshSignatureParser.d.ts.map +1 -0
- package/dist/git-cli/parsers/sshSignatureParser.js +78 -0
- package/dist/git-cli/parsers/sshSignatureParser.js.map +1 -0
- package/dist/git-cli/parsers/statusParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/statusParser.js.map +1 -1
- package/dist/git-cli/parsers/treeParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/treeParser.js.map +1 -1
- package/dist/git-cli/parsers/worktreeParser.d.ts.map +1 -1
- package/dist/git-cli/parsers/worktreeParser.js +5 -7
- package/dist/git-cli/parsers/worktreeParser.js.map +1 -1
- package/dist/git-cli/providers/blame.d.ts.map +1 -1
- package/dist/git-cli/providers/blame.js.map +1 -1
- package/dist/git-cli/providers/branches.d.ts +1 -0
- package/dist/git-cli/providers/branches.d.ts.map +1 -1
- package/dist/git-cli/providers/branches.js +51 -32
- package/dist/git-cli/providers/branches.js.map +1 -1
- package/dist/git-cli/providers/commitFilesetUtils.d.ts.map +1 -1
- package/dist/git-cli/providers/commitFilesetUtils.js.map +1 -1
- package/dist/git-cli/providers/commits.d.ts +12 -1
- package/dist/git-cli/providers/commits.d.ts.map +1 -1
- package/dist/git-cli/providers/commits.js +89 -8
- package/dist/git-cli/providers/commits.js.map +1 -1
- package/dist/git-cli/providers/config.d.ts.map +1 -1
- package/dist/git-cli/providers/config.js.map +1 -1
- package/dist/git-cli/providers/contributors.d.ts.map +1 -1
- package/dist/git-cli/providers/contributors.js.map +1 -1
- package/dist/git-cli/providers/diff.d.ts.map +1 -1
- package/dist/git-cli/providers/diff.js.map +1 -1
- package/dist/git-cli/providers/graph.d.ts +35 -1
- package/dist/git-cli/providers/graph.d.ts.map +1 -1
- package/dist/git-cli/providers/graph.js +1434 -330
- package/dist/git-cli/providers/graph.js.map +1 -1
- package/dist/git-cli/providers/operations.d.ts.map +1 -1
- package/dist/git-cli/providers/operations.js.map +1 -1
- package/dist/git-cli/providers/patch.d.ts.map +1 -1
- package/dist/git-cli/providers/patch.js.map +1 -1
- package/dist/git-cli/providers/pausedOperations.d.ts.map +1 -1
- package/dist/git-cli/providers/pausedOperations.js +3 -3
- package/dist/git-cli/providers/pausedOperations.js.map +1 -1
- package/dist/git-cli/providers/refs.d.ts.map +1 -1
- package/dist/git-cli/providers/refs.js.map +1 -1
- package/dist/git-cli/providers/remotes.d.ts.map +1 -1
- package/dist/git-cli/providers/remotes.js.map +1 -1
- package/dist/git-cli/providers/revision.d.ts +1 -0
- package/dist/git-cli/providers/revision.d.ts.map +1 -1
- package/dist/git-cli/providers/revision.js +33 -0
- package/dist/git-cli/providers/revision.js.map +1 -1
- package/dist/git-cli/providers/staging.d.ts.map +1 -1
- package/dist/git-cli/providers/staging.js.map +1 -1
- package/dist/git-cli/providers/stash.d.ts.map +1 -1
- package/dist/git-cli/providers/stash.js.map +1 -1
- package/dist/git-cli/providers/status.d.ts +28 -0
- package/dist/git-cli/providers/status.d.ts.map +1 -1
- package/dist/git-cli/providers/status.js +240 -154
- package/dist/git-cli/providers/status.js.map +1 -1
- package/dist/git-cli/providers/tags.d.ts.map +1 -1
- package/dist/git-cli/providers/tags.js +2 -1
- package/dist/git-cli/providers/tags.js.map +1 -1
- package/dist/git-cli/providers/worktrees.d.ts +2 -1
- package/dist/git-cli/providers/worktrees.d.ts.map +1 -1
- package/dist/git-cli/providers/worktrees.js +28 -3
- package/dist/git-cli/providers/worktrees.js.map +1 -1
- package/dist/git-cli/service.d.ts.map +1 -1
- package/dist/git-cli/service.js +8 -0
- package/dist/git-cli/service.js.map +1 -1
- package/dist/ipc/ipcServer.d.ts.map +1 -1
- package/dist/ipc/ipcServer.js +1 -1
- package/dist/ipc/ipcServer.js.map +1 -1
- package/dist/plus/agents/providers/claudeCodeProvider.d.ts +6 -1
- package/dist/plus/agents/providers/claudeCodeProvider.d.ts.map +1 -1
- package/dist/plus/agents/providers/claudeCodeProvider.js +19 -0
- package/dist/plus/agents/providers/claudeCodeProvider.js.map +1 -1
- package/dist/plus/agents/providers/claudeCodeTranscript.d.ts +68 -0
- package/dist/plus/agents/providers/claudeCodeTranscript.d.ts.map +1 -1
- package/dist/plus/agents/providers/claudeCodeTranscript.js +262 -8
- package/dist/plus/agents/providers/claudeCodeTranscript.js.map +1 -1
- package/dist/plus/agents/types.d.ts +36 -2
- package/dist/plus/agents/types.d.ts.map +1 -1
- package/dist/plus/ai/constants.d.ts +1 -2
- package/dist/plus/ai/constants.d.ts.map +1 -1
- package/dist/plus/ai/constants.js +1 -8
- package/dist/plus/ai/constants.js.map +1 -1
- package/dist/plus/ai/errors.d.ts.map +1 -1
- package/dist/plus/ai/errors.js.map +1 -1
- package/dist/plus/ai/models/conversation.d.ts.map +1 -1
- package/dist/plus/ai/models/conversation.js.map +1 -1
- package/dist/plus/ai/models/model.d.ts +2 -1
- package/dist/plus/ai/models/model.d.ts.map +1 -1
- package/dist/plus/ai/models/model.js +50 -1
- package/dist/plus/ai/models/model.js.map +1 -1
- package/dist/plus/ai/models/promptTemplates.d.ts +5 -2
- package/dist/plus/ai/models/promptTemplates.d.ts.map +1 -1
- package/dist/plus/ai/models/promptTemplates.js.map +1 -1
- package/dist/plus/ai/models/provider.d.ts.map +1 -1
- package/dist/plus/ai/models/provider.js.map +1 -1
- package/dist/plus/ai/models/results.d.ts.map +1 -1
- package/dist/plus/ai/models/results.js.map +1 -1
- package/dist/plus/ai/prompts.d.ts +1 -1
- package/dist/plus/ai/prompts.d.ts.map +1 -1
- package/dist/plus/ai/prompts.js +15 -47
- package/dist/plus/ai/prompts.js.map +1 -1
- package/dist/plus/ai/providers/anthropicProvider.d.ts +5 -0
- package/dist/plus/ai/providers/anthropicProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/anthropicProvider.js +40 -3
- package/dist/plus/ai/providers/anthropicProvider.js.map +1 -1
- package/dist/plus/ai/providers/azureProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/azureProvider.js.map +1 -1
- package/dist/plus/ai/providers/context.d.ts.map +1 -1
- package/dist/plus/ai/providers/context.js.map +1 -1
- package/dist/plus/ai/providers/deepSeekProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/deepSeekProvider.js +17 -1
- package/dist/plus/ai/providers/deepSeekProvider.js.map +1 -1
- package/dist/plus/ai/providers/geminiProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/geminiProvider.js +25 -6
- package/dist/plus/ai/providers/geminiProvider.js.map +1 -1
- package/dist/plus/ai/providers/gitkrakenProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/gitkrakenProvider.js +1 -0
- package/dist/plus/ai/providers/gitkrakenProvider.js.map +1 -1
- package/dist/plus/ai/providers/huggingFaceProvider.d.ts +1 -1
- package/dist/plus/ai/providers/huggingFaceProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/huggingFaceProvider.js +21 -18
- package/dist/plus/ai/providers/huggingFaceProvider.js.map +1 -1
- package/dist/plus/ai/providers/mistralProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/mistralProvider.js.map +1 -1
- package/dist/plus/ai/providers/ollamaProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/ollamaProvider.js.map +1 -1
- package/dist/plus/ai/providers/openAICompatibleProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/openAICompatibleProvider.js.map +1 -1
- package/dist/plus/ai/providers/openAICompatibleProviderBase.d.ts +10 -1
- package/dist/plus/ai/providers/openAICompatibleProviderBase.d.ts.map +1 -1
- package/dist/plus/ai/providers/openAICompatibleProviderBase.js +9 -1
- package/dist/plus/ai/providers/openAICompatibleProviderBase.js.map +1 -1
- package/dist/plus/ai/providers/openRouterProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/openRouterProvider.js.map +1 -1
- package/dist/plus/ai/providers/openaiProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/openaiProvider.js.map +1 -1
- package/dist/plus/ai/providers/xaiProvider.d.ts.map +1 -1
- package/dist/plus/ai/providers/xaiProvider.js +14 -1
- package/dist/plus/ai/providers/xaiProvider.js.map +1 -1
- package/dist/plus/ai/utils/ai.utils.d.ts.map +1 -1
- package/dist/plus/ai/utils/ai.utils.js +0 -2
- package/dist/plus/ai/utils/ai.utils.js.map +1 -1
- package/dist/plus/ai/utils/results.utils.d.ts +3 -0
- package/dist/plus/ai/utils/results.utils.d.ts.map +1 -1
- package/dist/plus/ai/utils/results.utils.js +26 -0
- package/dist/plus/ai/utils/results.utils.js.map +1 -1
- package/dist/plus/ai/utils/truncation.utils.d.ts +1 -1
- package/dist/plus/ai/utils/truncation.utils.d.ts.map +1 -1
- package/dist/plus/ai/utils/truncation.utils.js.map +1 -1
- package/dist/plus/git-github/api/config.d.ts.map +1 -1
- package/dist/plus/git-github/api/config.js.map +1 -1
- package/dist/plus/git-github/api/github.d.ts +66 -3
- package/dist/plus/git-github/api/github.d.ts.map +1 -1
- package/dist/plus/git-github/api/github.js +345 -74
- package/dist/plus/git-github/api/github.js.map +1 -1
- package/dist/plus/git-github/api/github.utils.d.ts.map +1 -1
- package/dist/plus/git-github/api/github.utils.js.map +1 -1
- package/dist/plus/git-github/api/token.d.ts.map +1 -1
- package/dist/plus/git-github/api/token.js.map +1 -1
- package/dist/plus/git-github/api/tokenUtils.d.ts.map +1 -1
- package/dist/plus/git-github/api/tokenUtils.js.map +1 -1
- package/dist/plus/git-github/api/types.d.ts.map +1 -1
- package/dist/plus/git-github/api/types.js.map +1 -1
- package/dist/plus/git-github/context.d.ts.map +1 -1
- package/dist/plus/git-github/models.d.ts +5 -0
- package/dist/plus/git-github/models.d.ts.map +1 -1
- package/dist/plus/git-github/models.js +27 -2
- package/dist/plus/git-github/models.js.map +1 -1
- package/dist/plus/git-github/providers/github/blame.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/blame.js.map +1 -1
- package/dist/plus/git-github/providers/github/branches.d.ts +2 -1
- package/dist/plus/git-github/providers/github/branches.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/branches.js +7 -3
- package/dist/plus/git-github/providers/github/branches.js.map +1 -1
- package/dist/plus/git-github/providers/github/commits.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/commits.js.map +1 -1
- package/dist/plus/git-github/providers/github/config.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/config.js.map +1 -1
- package/dist/plus/git-github/providers/github/contributors.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/contributors.js.map +1 -1
- package/dist/plus/git-github/providers/github/diff.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/diff.js +2 -2
- package/dist/plus/git-github/providers/github/diff.js.map +1 -1
- package/dist/plus/git-github/providers/github/graph.d.ts +12 -1
- package/dist/plus/git-github/providers/github/graph.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/graph.js +85 -0
- package/dist/plus/git-github/providers/github/graph.js.map +1 -1
- package/dist/plus/git-github/providers/github/refs.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/refs.js.map +1 -1
- package/dist/plus/git-github/providers/github/remotes.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/remotes.js.map +1 -1
- package/dist/plus/git-github/providers/github/revision.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/revision.js.map +1 -1
- package/dist/plus/git-github/providers/github/status.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/status.js.map +1 -1
- package/dist/plus/git-github/providers/github/tags.d.ts.map +1 -1
- package/dist/plus/git-github/providers/github/tags.js +3 -1
- package/dist/plus/git-github/providers/github/tags.js.map +1 -1
- package/dist/plus/git-github/providers/githubGitProvider.d.ts.map +1 -1
- package/dist/plus/git-github/providers/githubGitProvider.js.map +1 -1
- package/dist/plus/git-github/providers/githubProvider.d.ts.map +1 -1
- package/dist/plus/git-github/providers/githubProvider.js.map +1 -1
- package/dist/plus/integrations/authentication/cloudIntegrationService.d.ts +20 -1
- package/dist/plus/integrations/authentication/cloudIntegrationService.d.ts.map +1 -1
- package/dist/plus/integrations/authentication/cloudIntegrationService.js +134 -10
- package/dist/plus/integrations/authentication/cloudIntegrationService.js.map +1 -1
- package/dist/plus/integrations/authentication/configuredIntegrationService.d.ts +52 -5
- package/dist/plus/integrations/authentication/configuredIntegrationService.d.ts.map +1 -1
- package/dist/plus/integrations/authentication/configuredIntegrationService.js +248 -46
- package/dist/plus/integrations/authentication/configuredIntegrationService.js.map +1 -1
- package/dist/plus/integrations/authentication/integrationAuthenticationProvider.d.ts +24 -4
- package/dist/plus/integrations/authentication/integrationAuthenticationProvider.d.ts.map +1 -1
- package/dist/plus/integrations/authentication/integrationAuthenticationProvider.js +58 -26
- package/dist/plus/integrations/authentication/integrationAuthenticationProvider.js.map +1 -1
- package/dist/plus/integrations/authentication/integrationAuthenticationService.d.ts.map +1 -1
- package/dist/plus/integrations/authentication/integrationAuthenticationService.js +7 -3
- package/dist/plus/integrations/authentication/integrationAuthenticationService.js.map +1 -1
- package/dist/plus/integrations/authentication/manualTokenProvider.d.ts +1 -0
- package/dist/plus/integrations/authentication/manualTokenProvider.d.ts.map +1 -1
- package/dist/plus/integrations/authentication/manualTokenProvider.js +9 -5
- package/dist/plus/integrations/authentication/manualTokenProvider.js.map +1 -1
- package/dist/plus/integrations/authentication/models.d.ts +33 -0
- package/dist/plus/integrations/authentication/models.d.ts.map +1 -1
- package/dist/plus/integrations/authentication/models.js.map +1 -1
- package/dist/plus/integrations/collectionMetadata.d.ts +21 -0
- package/dist/plus/integrations/collectionMetadata.d.ts.map +1 -0
- package/dist/plus/integrations/collectionMetadata.js +121 -0
- package/dist/plus/integrations/collectionMetadata.js.map +1 -0
- package/dist/plus/integrations/constants.d.ts +12 -2
- package/dist/plus/integrations/constants.d.ts.map +1 -1
- package/dist/plus/integrations/constants.js +10 -0
- package/dist/plus/integrations/constants.js.map +1 -1
- package/dist/plus/integrations/context.d.ts +10 -6
- package/dist/plus/integrations/context.d.ts.map +1 -1
- package/dist/plus/integrations/errors.d.ts +65 -0
- package/dist/plus/integrations/errors.d.ts.map +1 -1
- package/dist/plus/integrations/errors.js +131 -0
- package/dist/plus/integrations/errors.js.map +1 -1
- package/dist/plus/integrations/index.d.ts +57 -12
- package/dist/plus/integrations/index.d.ts.map +1 -1
- package/dist/plus/integrations/index.js +39 -37
- package/dist/plus/integrations/index.js.map +1 -1
- package/dist/plus/integrations/integrationService.d.ts +293 -12
- package/dist/plus/integrations/integrationService.d.ts.map +1 -1
- package/dist/plus/integrations/integrationService.js +1305 -37
- package/dist/plus/integrations/integrationService.js.map +1 -1
- package/dist/plus/integrations/lite.d.ts +47 -0
- package/dist/plus/integrations/lite.d.ts.map +1 -0
- package/dist/plus/integrations/lite.js +141 -0
- package/dist/plus/integrations/lite.js.map +1 -0
- package/dist/plus/integrations/manager.d.ts +332 -0
- package/dist/plus/integrations/manager.d.ts.map +1 -0
- package/dist/plus/integrations/manager.js +2 -0
- package/dist/plus/integrations/manager.js.map +1 -0
- package/dist/plus/integrations/models/gitHostIntegration.d.ts +269 -10
- package/dist/plus/integrations/models/gitHostIntegration.d.ts.map +1 -1
- package/dist/plus/integrations/models/gitHostIntegration.js +712 -88
- package/dist/plus/integrations/models/gitHostIntegration.js.map +1 -1
- package/dist/plus/integrations/models/integration.d.ts +88 -3
- package/dist/plus/integrations/models/integration.d.ts.map +1 -1
- package/dist/plus/integrations/models/integration.js +192 -21
- package/dist/plus/integrations/models/integration.js.map +1 -1
- package/dist/plus/integrations/models/issuesIntegration.d.ts +87 -7
- package/dist/plus/integrations/models/issuesIntegration.d.ts.map +1 -1
- package/dist/plus/integrations/models/issuesIntegration.js +148 -33
- package/dist/plus/integrations/models/issuesIntegration.js.map +1 -1
- package/dist/plus/integrations/providerFilters.d.ts +12 -0
- package/dist/plus/integrations/providerFilters.d.ts.map +1 -0
- package/dist/plus/integrations/providerFilters.js +14 -0
- package/dist/plus/integrations/providerFilters.js.map +1 -0
- package/dist/plus/integrations/providers/apiClients.d.ts.map +1 -1
- package/dist/plus/integrations/providers/apiClients.js +3 -3
- package/dist/plus/integrations/providers/apiClients.js.map +1 -1
- package/dist/plus/integrations/providers/apiConfig.d.ts +52 -0
- package/dist/plus/integrations/providers/apiConfig.d.ts.map +1 -0
- package/dist/plus/integrations/providers/apiConfig.js +19 -0
- package/dist/plus/integrations/providers/apiConfig.js.map +1 -0
- package/dist/plus/integrations/providers/azure/azure.d.ts +14 -2
- package/dist/plus/integrations/providers/azure/azure.d.ts.map +1 -1
- package/dist/plus/integrations/providers/azure/azure.js +107 -32
- package/dist/plus/integrations/providers/azure/azure.js.map +1 -1
- package/dist/plus/integrations/providers/azure/models.d.ts +16 -0
- package/dist/plus/integrations/providers/azure/models.d.ts.map +1 -1
- package/dist/plus/integrations/providers/azure/models.js +6 -6
- package/dist/plus/integrations/providers/azure/models.js.map +1 -1
- package/dist/plus/integrations/providers/azureDevOps.d.ts +55 -9
- package/dist/plus/integrations/providers/azureDevOps.d.ts.map +1 -1
- package/dist/plus/integrations/providers/azureDevOps.js +572 -79
- package/dist/plus/integrations/providers/azureDevOps.js.map +1 -1
- package/dist/plus/integrations/providers/bitbucket/bitbucket.d.ts +13 -2
- package/dist/plus/integrations/providers/bitbucket/bitbucket.d.ts.map +1 -1
- package/dist/plus/integrations/providers/bitbucket/bitbucket.js +108 -32
- package/dist/plus/integrations/providers/bitbucket/bitbucket.js.map +1 -1
- package/dist/plus/integrations/providers/bitbucket/models.d.ts.map +1 -1
- package/dist/plus/integrations/providers/bitbucket/models.js.map +1 -1
- package/dist/plus/integrations/providers/bitbucket-server/models.d.ts +19 -1
- package/dist/plus/integrations/providers/bitbucket-server/models.d.ts.map +1 -1
- package/dist/plus/integrations/providers/bitbucket-server/models.js +20 -1
- package/dist/plus/integrations/providers/bitbucket-server/models.js.map +1 -1
- package/dist/plus/integrations/providers/bitbucket-server.d.ts +28 -4
- package/dist/plus/integrations/providers/bitbucket-server.d.ts.map +1 -1
- package/dist/plus/integrations/providers/bitbucket-server.js +110 -6
- package/dist/plus/integrations/providers/bitbucket-server.js.map +1 -1
- package/dist/plus/integrations/providers/bitbucket.d.ts +38 -4
- package/dist/plus/integrations/providers/bitbucket.d.ts.map +1 -1
- package/dist/plus/integrations/providers/bitbucket.js +330 -34
- package/dist/plus/integrations/providers/bitbucket.js.map +1 -1
- package/dist/plus/integrations/providers/github/github.d.ts.map +1 -1
- package/dist/plus/integrations/providers/github/github.js +1 -1
- package/dist/plus/integrations/providers/github/github.js.map +1 -1
- package/dist/plus/integrations/providers/github/github.utils.d.ts.map +1 -1
- package/dist/plus/integrations/providers/github/github.utils.js.map +1 -1
- package/dist/plus/integrations/providers/github/models.d.ts.map +1 -1
- package/dist/plus/integrations/providers/github/models.js.map +1 -1
- package/dist/plus/integrations/providers/github.d.ts +49 -6
- package/dist/plus/integrations/providers/github.d.ts.map +1 -1
- package/dist/plus/integrations/providers/github.js +289 -4
- package/dist/plus/integrations/providers/github.js.map +1 -1
- package/dist/plus/integrations/providers/gitlab/gitlab.d.ts +11 -3
- package/dist/plus/integrations/providers/gitlab/gitlab.d.ts.map +1 -1
- package/dist/plus/integrations/providers/gitlab/gitlab.js +121 -47
- package/dist/plus/integrations/providers/gitlab/gitlab.js.map +1 -1
- package/dist/plus/integrations/providers/gitlab/gitlab.utils.d.ts +6 -0
- package/dist/plus/integrations/providers/gitlab/gitlab.utils.d.ts.map +1 -1
- package/dist/plus/integrations/providers/gitlab/gitlab.utils.js +8 -0
- package/dist/plus/integrations/providers/gitlab/gitlab.utils.js.map +1 -1
- package/dist/plus/integrations/providers/gitlab/models.d.ts +10 -0
- package/dist/plus/integrations/providers/gitlab/models.d.ts.map +1 -1
- package/dist/plus/integrations/providers/gitlab/models.js +8 -5
- package/dist/plus/integrations/providers/gitlab/models.js.map +1 -1
- package/dist/plus/integrations/providers/gitlab.d.ts +50 -5
- package/dist/plus/integrations/providers/gitlab.d.ts.map +1 -1
- package/dist/plus/integrations/providers/gitlab.js +274 -8
- package/dist/plus/integrations/providers/gitlab.js.map +1 -1
- package/dist/plus/integrations/providers/jira.d.ts +13 -2
- package/dist/plus/integrations/providers/jira.d.ts.map +1 -1
- package/dist/plus/integrations/providers/jira.js +200 -30
- package/dist/plus/integrations/providers/jira.js.map +1 -1
- package/dist/plus/integrations/providers/linear.d.ts +16 -5
- package/dist/plus/integrations/providers/linear.d.ts.map +1 -1
- package/dist/plus/integrations/providers/linear.js +127 -21
- package/dist/plus/integrations/providers/linear.js.map +1 -1
- package/dist/plus/integrations/providers/models.d.ts +339 -60
- package/dist/plus/integrations/providers/models.d.ts.map +1 -1
- package/dist/plus/integrations/providers/models.js +307 -59
- package/dist/plus/integrations/providers/models.js.map +1 -1
- package/dist/plus/integrations/providers/providersApi.d.ts +144 -11
- package/dist/plus/integrations/providers/providersApi.d.ts.map +1 -1
- package/dist/plus/integrations/providers/providersApi.js +486 -55
- package/dist/plus/integrations/providers/providersApi.js.map +1 -1
- package/dist/plus/integrations/providers/trello.d.ts +47 -0
- package/dist/plus/integrations/providers/trello.d.ts.map +1 -0
- package/dist/plus/integrations/providers/trello.js +141 -0
- package/dist/plus/integrations/providers/trello.js.map +1 -0
- package/dist/plus/integrations/providers/utils/providerPaging.d.ts +29 -0
- package/dist/plus/integrations/providers/utils/providerPaging.d.ts.map +1 -0
- package/dist/plus/integrations/providers/utils/providerPaging.js +154 -0
- package/dist/plus/integrations/providers/utils/providerPaging.js.map +1 -0
- package/dist/plus/integrations/providers/utils.d.ts +21 -0
- package/dist/plus/integrations/providers/utils.d.ts.map +1 -1
- package/dist/plus/integrations/providers/utils.js +57 -6
- package/dist/plus/integrations/providers/utils.js.map +1 -1
- package/dist/plus/integrations/reads/context.d.ts +52 -0
- package/dist/plus/integrations/reads/context.d.ts.map +1 -0
- package/dist/plus/integrations/reads/context.js +2 -0
- package/dist/plus/integrations/reads/context.js.map +1 -0
- package/dist/plus/integrations/reads/cursors.d.ts +66 -0
- package/dist/plus/integrations/reads/cursors.d.ts.map +1 -0
- package/dist/plus/integrations/reads/cursors.js +133 -0
- package/dist/plus/integrations/reads/cursors.js.map +1 -0
- package/dist/plus/integrations/reads/drains.d.ts +60 -0
- package/dist/plus/integrations/reads/drains.d.ts.map +1 -0
- package/dist/plus/integrations/reads/drains.js +255 -0
- package/dist/plus/integrations/reads/drains.js.map +1 -0
- package/dist/plus/integrations/reads/filters.d.ts +81 -0
- package/dist/plus/integrations/reads/filters.d.ts.map +1 -0
- package/dist/plus/integrations/reads/filters.js +87 -0
- package/dist/plus/integrations/reads/filters.js.map +1 -0
- package/dist/plus/integrations/reads/hierarchy.d.ts +17 -0
- package/dist/plus/integrations/reads/hierarchy.d.ts.map +1 -0
- package/dist/plus/integrations/reads/hierarchy.js +348 -0
- package/dist/plus/integrations/reads/hierarchy.js.map +1 -0
- package/dist/plus/integrations/reads/hierarchy.utils.d.ts +53 -0
- package/dist/plus/integrations/reads/hierarchy.utils.d.ts.map +1 -0
- package/dist/plus/integrations/reads/hierarchy.utils.js +85 -0
- package/dist/plus/integrations/reads/hierarchy.utils.js.map +1 -0
- package/dist/plus/integrations/reads/issueTracker.d.ts +19 -0
- package/dist/plus/integrations/reads/issueTracker.d.ts.map +1 -0
- package/dist/plus/integrations/reads/issueTracker.js +346 -0
- package/dist/plus/integrations/reads/issueTracker.js.map +1 -0
- package/dist/plus/integrations/reads/issues.d.ts +34 -0
- package/dist/plus/integrations/reads/issues.d.ts.map +1 -0
- package/dist/plus/integrations/reads/issues.js +244 -0
- package/dist/plus/integrations/reads/issues.js.map +1 -0
- package/dist/plus/integrations/reads/paging.d.ts +136 -0
- package/dist/plus/integrations/reads/paging.d.ts.map +1 -0
- package/dist/plus/integrations/reads/paging.js +221 -0
- package/dist/plus/integrations/reads/paging.js.map +1 -0
- package/dist/plus/integrations/reads/pullRequests.d.ts +32 -0
- package/dist/plus/integrations/reads/pullRequests.d.ts.map +1 -0
- package/dist/plus/integrations/reads/pullRequests.js +151 -0
- package/dist/plus/integrations/reads/pullRequests.js.map +1 -0
- package/dist/plus/integrations/reads/warnings.d.ts +47 -0
- package/dist/plus/integrations/reads/warnings.d.ts.map +1 -0
- package/dist/plus/integrations/reads/warnings.js +81 -0
- package/dist/plus/integrations/reads/warnings.js.map +1 -0
- package/dist/plus/integrations/results.d.ts +189 -0
- package/dist/plus/integrations/results.d.ts.map +1 -0
- package/dist/plus/integrations/results.js +62 -0
- package/dist/plus/integrations/results.js.map +1 -0
- package/dist/plus/integrations/utils/domain.utils.d.ts +5 -0
- package/dist/plus/integrations/utils/domain.utils.d.ts.map +1 -0
- package/dist/plus/integrations/utils/domain.utils.js +27 -0
- package/dist/plus/integrations/utils/domain.utils.js.map +1 -0
- package/dist/plus/integrations/utils/integration.utils.d.ts +27 -1
- package/dist/plus/integrations/utils/integration.utils.d.ts.map +1 -1
- package/dist/plus/integrations/utils/integration.utils.js +86 -15
- package/dist/plus/integrations/utils/integration.utils.js.map +1 -1
- package/dist/utils/array.d.ts.map +1 -1
- package/dist/utils/array.js.map +1 -1
- package/dist/utils/brand.d.ts.map +1 -1
- package/dist/utils/cancellation.d.ts +13 -0
- package/dist/utils/cancellation.d.ts.map +1 -1
- package/dist/utils/cancellation.js +52 -7
- package/dist/utils/cancellation.js.map +1 -1
- package/dist/utils/charCode.d.ts.map +1 -1
- package/dist/utils/coalescedRun.d.ts +16 -0
- package/dist/utils/coalescedRun.d.ts.map +1 -0
- package/dist/utils/coalescedRun.js +43 -0
- package/dist/utils/coalescedRun.js.map +1 -0
- package/dist/utils/color.d.ts.map +1 -1
- package/dist/utils/color.js +3 -3
- package/dist/utils/color.js.map +1 -1
- package/dist/utils/date.d.ts +24 -0
- package/dist/utils/date.d.ts.map +1 -1
- package/dist/utils/date.js +62 -0
- package/dist/utils/date.js.map +1 -1
- package/dist/utils/debounce.js +1 -1
- package/dist/utils/debounce.js.map +1 -1
- package/dist/utils/decorators/debounce.d.ts.map +1 -1
- package/dist/utils/decorators/debounce.js.map +1 -1
- package/dist/utils/decorators/gate.d.ts.map +1 -1
- package/dist/utils/decorators/gate.js +2 -2
- package/dist/utils/decorators/gate.js.map +1 -1
- package/dist/utils/decorators/log.d.ts.map +1 -1
- package/dist/utils/decorators/log.js +5 -5
- package/dist/utils/decorators/log.js.map +1 -1
- package/dist/utils/decorators/memoize.d.ts.map +1 -1
- package/dist/utils/decorators/memoize.js +2 -2
- package/dist/utils/decorators/memoize.js.map +1 -1
- package/dist/utils/decorators/resolver.d.ts.map +1 -1
- package/dist/utils/decorators/resolver.js.map +1 -1
- package/dist/utils/decorators/sequentialize.d.ts.map +1 -1
- package/dist/utils/decorators/sequentialize.js +2 -2
- package/dist/utils/decorators/sequentialize.js.map +1 -1
- package/dist/utils/decorators/serializable.d.ts.map +1 -1
- package/dist/utils/decorators/serializable.js +1 -1
- package/dist/utils/decorators/serializable.js.map +1 -1
- package/dist/utils/dedupedAsyncCache.d.ts.map +1 -1
- package/dist/utils/env/browser/base64.d.ts.map +1 -1
- package/dist/utils/env/browser/base64.js.map +1 -1
- package/dist/utils/env/browser/crypto.d.ts.map +1 -1
- package/dist/utils/env/browser/crypto.js.map +1 -1
- package/dist/utils/env/browser/fs.d.ts.map +1 -1
- package/dist/utils/env/browser/fs.js.map +1 -1
- package/dist/utils/env/browser/hex.d.ts.map +1 -1
- package/dist/utils/env/browser/hex.js.map +1 -1
- package/dist/utils/env/browser/hrtime.d.ts.map +1 -1
- package/dist/utils/env/browser/hrtime.js.map +1 -1
- package/dist/utils/env/browser/logScope.d.ts.map +1 -1
- package/dist/utils/env/browser/logScope.js.map +1 -1
- package/dist/utils/env/browser/md5.d.ts.map +1 -1
- package/dist/utils/env/browser/md5.js.map +1 -1
- package/dist/utils/env/browser/platform.d.ts.map +1 -1
- package/dist/utils/env/browser/platform.js.map +1 -1
- package/dist/utils/env/node/base64.d.ts.map +1 -1
- package/dist/utils/env/node/base64.js.map +1 -1
- package/dist/utils/env/node/crypto.d.ts.map +1 -1
- package/dist/utils/env/node/crypto.js.map +1 -1
- package/dist/utils/env/node/exec.d.ts +9 -1
- package/dist/utils/env/node/exec.d.ts.map +1 -1
- package/dist/utils/env/node/exec.js +11 -4
- package/dist/utils/env/node/exec.js.map +1 -1
- package/dist/utils/env/node/fs.d.ts.map +1 -1
- package/dist/utils/env/node/fs.js.map +1 -1
- package/dist/utils/env/node/hex.d.ts.map +1 -1
- package/dist/utils/env/node/hex.js.map +1 -1
- package/dist/utils/env/node/hrtime.d.ts.map +1 -1
- package/dist/utils/env/node/hrtime.js.map +1 -1
- package/dist/utils/env/node/logScope.d.ts.map +1 -1
- package/dist/utils/env/node/logScope.js.map +1 -1
- package/dist/utils/env/node/platform.d.ts.map +1 -1
- package/dist/utils/env/node/platform.js.map +1 -1
- package/dist/utils/event.d.ts.map +1 -1
- package/dist/utils/event.js +18 -22
- package/dist/utils/event.js.map +1 -1
- package/dist/utils/formatter.d.ts.map +1 -1
- package/dist/utils/formatter.js.map +1 -1
- package/dist/utils/function.d.ts.map +1 -1
- package/dist/utils/function.js +3 -3
- package/dist/utils/function.js.map +1 -1
- package/dist/utils/hash.js.map +1 -1
- package/dist/utils/iterable.d.ts.map +1 -1
- package/dist/utils/iterable.js +2 -6
- package/dist/utils/iterable.js.map +1 -1
- package/dist/utils/lazy.d.ts.map +1 -1
- package/dist/utils/lazy.js.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +1 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/logger.scoped.js +1 -1
- package/dist/utils/logger.scoped.js.map +1 -1
- package/dist/utils/lruMap.d.ts.map +1 -1
- package/dist/utils/lruMap.js.map +1 -1
- package/dist/utils/mru.d.ts.map +1 -1
- package/dist/utils/mru.js.map +1 -1
- package/dist/utils/object.js.map +1 -1
- package/dist/utils/paging.d.ts +29 -0
- package/dist/utils/paging.d.ts.map +1 -1
- package/dist/utils/paging.js +18 -0
- package/dist/utils/paging.js.map +1 -1
- package/dist/utils/path.js.map +1 -1
- package/dist/utils/promise.d.ts +10 -0
- package/dist/utils/promise.d.ts.map +1 -1
- package/dist/utils/promise.js +26 -3
- package/dist/utils/promise.js.map +1 -1
- package/dist/utils/promiseCache.d.ts +12 -2
- package/dist/utils/promiseCache.d.ts.map +1 -1
- package/dist/utils/promiseCache.js +80 -50
- package/dist/utils/promiseCache.js.map +1 -1
- package/dist/utils/searchTree.d.ts.map +1 -1
- package/dist/utils/searchTree.js +4 -1
- package/dist/utils/searchTree.js.map +1 -1
- package/dist/utils/stopwatch.d.ts.map +1 -1
- package/dist/utils/string.js +1 -1
- package/dist/utils/string.js.map +1 -1
- package/dist/utils/subscriptionManager.d.ts.map +1 -1
- package/dist/utils/subscriptionManager.js.map +1 -1
- package/dist/utils/trie.d.ts.map +1 -1
- package/dist/utils/trie.js +1 -0
- package/dist/utils/trie.js.map +1 -1
- package/docs/integrations.md +372 -0
- package/docs/kepler-read-api-parity.md +112 -0
- package/package.json +238 -213
- package/src/git/cache.ts +75 -8
- package/src/git/errors.ts +36 -1
- package/src/git/models/commit.ts +1 -1
- package/src/git/models/graph.ts +147 -0
- package/src/git/models/graphSession.ts +205 -0
- package/src/git/models/issue.ts +12 -1
- package/src/git/models/pullRequest.ts +27 -1
- package/src/git/models/repository.ts +24 -1
- package/src/git/models/resourceDescriptor.ts +17 -0
- package/src/git/models/signature.ts +16 -0
- package/src/git/models/tag.ts +6 -1
- package/src/git/parsers/diffParser.ts +1 -1
- package/src/git/providers/branches.ts +6 -1
- package/src/git/providers/commits.ts +6 -1
- package/src/git/providers/config.ts +5 -1
- package/src/git/providers/graph.ts +69 -2
- package/src/git/providers/status.ts +1 -1
- package/src/git/providers/worktrees.ts +3 -1
- package/src/git/remotes/azure-devops.ts +29 -33
- package/src/git/remotes/bitbucket-server.ts +23 -25
- package/src/git/remotes/bitbucket.ts +23 -25
- package/src/git/remotes/gerrit.ts +12 -14
- package/src/git/remotes/gitea.ts +13 -15
- package/src/git/remotes/github.ts +56 -58
- package/src/git/remotes/gitlab.ts +102 -104
- package/src/git/run.types.ts +54 -4
- package/src/git/utils/branch.utils.ts +12 -1
- package/src/git/utils/contributor.utils.ts +1 -1
- package/src/git/utils/fileStatus.utils.ts +7 -0
- package/src/git/utils/graph.utils.ts +46 -0
- package/src/git/utils/issue.utils.ts +1 -0
- package/src/git/utils/pullRequest.utils.ts +9 -0
- package/src/git/utils/reachability.utils.ts +79 -8
- package/src/git/utils/sshKey.utils.ts +30 -0
- package/src/git/watching/watchService.ts +16 -1
- package/src/git/watching/watchSession.ts +20 -2
- package/src/git-cli/exec/git.ts +144 -42
- package/src/git-cli/parsers/logParser.ts +83 -1
- package/src/git-cli/parsers/sshSignatureParser.ts +85 -0
- package/src/git-cli/parsers/worktreeParser.ts +5 -7
- package/src/git-cli/providers/branches.ts +60 -38
- package/src/git-cli/providers/commits.ts +102 -9
- package/src/git-cli/providers/graph.ts +1771 -393
- package/src/git-cli/providers/pausedOperations.ts +3 -3
- package/src/git-cli/providers/revision.ts +42 -0
- package/src/git-cli/providers/status.ts +333 -178
- package/src/git-cli/providers/tags.ts +2 -0
- package/src/git-cli/providers/worktrees.ts +40 -4
- package/src/git-cli/service.ts +9 -0
- package/src/ipc/ipcServer.ts +1 -1
- package/src/plus/agents/providers/claudeCodeProvider.ts +25 -0
- package/src/plus/agents/providers/claudeCodeTranscript.ts +320 -8
- package/src/plus/agents/types.ts +34 -0
- package/src/plus/ai/constants.ts +1 -9
- package/src/plus/ai/models/model.ts +53 -2
- package/src/plus/ai/models/promptTemplates.ts +9 -2
- package/src/plus/ai/prompts.ts +16 -48
- package/src/plus/ai/providers/anthropicProvider.ts +45 -3
- package/src/plus/ai/providers/deepSeekProvider.ts +17 -1
- package/src/plus/ai/providers/geminiProvider.ts +25 -6
- package/src/plus/ai/providers/gitkrakenProvider.ts +2 -0
- package/src/plus/ai/providers/huggingFaceProvider.ts +28 -21
- package/src/plus/ai/providers/openAICompatibleProviderBase.ts +16 -1
- package/src/plus/ai/providers/xaiProvider.ts +14 -1
- package/src/plus/ai/utils/ai.utils.ts +0 -2
- package/src/plus/ai/utils/results.utils.ts +32 -0
- package/src/plus/ai/utils/truncation.utils.ts +0 -1
- package/src/plus/git-github/api/github.ts +484 -104
- package/src/plus/git-github/models.ts +33 -0
- package/src/plus/git-github/providers/github/branches.ts +6 -3
- package/src/plus/git-github/providers/github/diff.ts +1 -1
- package/src/plus/git-github/providers/github/graph.ts +131 -0
- package/src/plus/git-github/providers/github/tags.ts +2 -0
- package/src/plus/integrations/authentication/cloudIntegrationService.ts +189 -17
- package/src/plus/integrations/authentication/configuredIntegrationService.ts +287 -50
- package/src/plus/integrations/authentication/integrationAuthenticationProvider.ts +105 -31
- package/src/plus/integrations/authentication/integrationAuthenticationService.ts +7 -3
- package/src/plus/integrations/authentication/manualTokenProvider.ts +12 -5
- package/src/plus/integrations/authentication/models.ts +35 -1
- package/src/plus/integrations/collectionMetadata.ts +143 -0
- package/src/plus/integrations/constants.ts +21 -0
- package/src/plus/integrations/context.ts +8 -9
- package/src/plus/integrations/errors.ts +149 -0
- package/src/plus/integrations/index.ts +148 -51
- package/src/plus/integrations/integrationService.ts +1714 -49
- package/src/plus/integrations/lite.ts +233 -0
- package/src/plus/integrations/manager.ts +359 -0
- package/src/plus/integrations/models/gitHostIntegration.ts +1014 -121
- package/src/plus/integrations/models/integration.ts +293 -24
- package/src/plus/integrations/models/issuesIntegration.ts +178 -38
- package/src/plus/integrations/providerFilters.ts +12 -0
- package/src/plus/integrations/providers/apiClients.ts +8 -11
- package/src/plus/integrations/providers/apiConfig.ts +71 -0
- package/src/plus/integrations/providers/azure/azure.ts +164 -33
- package/src/plus/integrations/providers/azure/models.ts +19 -6
- package/src/plus/integrations/providers/azureDevOps.ts +766 -101
- package/src/plus/integrations/providers/bitbucket/bitbucket.ts +164 -34
- package/src/plus/integrations/providers/bitbucket-server/models.ts +32 -1
- package/src/plus/integrations/providers/bitbucket-server.ts +173 -8
- package/src/plus/integrations/providers/bitbucket.ts +489 -45
- package/src/plus/integrations/providers/github/github.ts +2 -2
- package/src/plus/integrations/providers/github/github.utils.ts +1 -1
- package/src/plus/integrations/providers/github.ts +390 -6
- package/src/plus/integrations/providers/gitlab/gitlab.ts +170 -60
- package/src/plus/integrations/providers/gitlab/gitlab.utils.ts +9 -0
- package/src/plus/integrations/providers/gitlab/models.ts +19 -5
- package/src/plus/integrations/providers/gitlab.ts +369 -10
- package/src/plus/integrations/providers/jira.ts +247 -42
- package/src/plus/integrations/providers/linear.ts +154 -27
- package/src/plus/integrations/providers/models.ts +583 -75
- package/src/plus/integrations/providers/providersApi.ts +849 -86
- package/src/plus/integrations/providers/trello.ts +205 -0
- package/src/plus/integrations/providers/utils/providerPaging.ts +177 -0
- package/src/plus/integrations/providers/utils.ts +68 -8
- package/src/plus/integrations/reads/context.ts +75 -0
- package/src/plus/integrations/reads/cursors.ts +224 -0
- package/src/plus/integrations/reads/drains.ts +343 -0
- package/src/plus/integrations/reads/filters.ts +124 -0
- package/src/plus/integrations/reads/hierarchy.ts +493 -0
- package/src/plus/integrations/reads/hierarchy.utils.ts +106 -0
- package/src/plus/integrations/reads/issueTracker.ts +480 -0
- package/src/plus/integrations/reads/issues.ts +407 -0
- package/src/plus/integrations/reads/paging.ts +277 -0
- package/src/plus/integrations/reads/pullRequests.ts +267 -0
- package/src/plus/integrations/reads/warnings.ts +170 -0
- package/src/plus/integrations/results.ts +275 -0
- package/src/plus/integrations/utils/domain.utils.ts +26 -0
- package/src/plus/integrations/utils/integration.utils.ts +93 -16
- package/src/utils/brand.ts +0 -2
- package/src/utils/cancellation.ts +56 -7
- package/src/utils/coalescedRun.ts +45 -0
- package/src/utils/color.ts +3 -3
- package/src/utils/date.ts +72 -0
- package/src/utils/debounce.ts +1 -1
- package/src/utils/decorators/gate.ts +2 -2
- package/src/utils/decorators/log.ts +5 -5
- package/src/utils/decorators/memoize.ts +2 -2
- package/src/utils/decorators/sequentialize.ts +2 -2
- package/src/utils/decorators/serializable.ts +1 -1
- package/src/utils/env/node/exec.ts +20 -5
- package/src/utils/event.ts +19 -25
- package/src/utils/function.ts +3 -3
- package/src/utils/iterable.ts +2 -6
- package/src/utils/logger.scoped.ts +1 -1
- package/src/utils/logger.ts +1 -1
- package/src/utils/paging.ts +46 -0
- package/src/utils/promise.ts +33 -3
- package/src/utils/promiseCache.ts +81 -51
- package/src/utils/searchTree.ts +4 -2
- package/src/utils/string.ts +1 -1
- package/src/utils/trie.ts +1 -0
- package/dist/plus/ai/providers/githubModelsProvider.d.ts +0 -19
- package/dist/plus/ai/providers/githubModelsProvider.d.ts.map +0 -1
- package/dist/plus/ai/providers/githubModelsProvider.js +0 -51
- package/dist/plus/ai/providers/githubModelsProvider.js.map +0 -1
- package/src/plus/ai/providers/githubModelsProvider.ts +0 -92
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
import { AuthenticationError, RequestNotFoundError, RequestRateLimitError } from '../../git/errors.js';
|
|
2
|
+
import type { IntegrationIds } from './constants.js';
|
|
3
|
+
|
|
4
|
+
export interface ConnectionStateChangeEvent {
|
|
5
|
+
key: string;
|
|
6
|
+
reason: 'connected' | 'disconnected';
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* A per-provider, per-connection warning surfaced alongside (partial) read results. Consumers use
|
|
11
|
+
* these to drive auth recovery, retry, or truncation messaging without the read itself throwing.
|
|
12
|
+
*
|
|
13
|
+
* `kind` is the programmatic discriminant (a rate-limit is retryable, a 404 is not, an auth failure
|
|
14
|
+
* needs re-connection); `isAuth` is retained as a convenience mirror of `kind === 'auth'`.
|
|
15
|
+
*/
|
|
16
|
+
export type ProviderWarningKind = 'auth' | 'rate-limit' | 'not-found' | 'no-connection' | 'other';
|
|
17
|
+
|
|
18
|
+
export interface ProviderWarning {
|
|
19
|
+
providerId: IntegrationIds;
|
|
20
|
+
/** Disambiguates connections on self-managed hosts (where one provider id spans multiple domains). */
|
|
21
|
+
domain?: string;
|
|
22
|
+
/** The specific token/connection the read was pinned to, when a `connectionId` was supplied. */
|
|
23
|
+
connectionId?: string;
|
|
24
|
+
message: string;
|
|
25
|
+
kind: ProviderWarningKind;
|
|
26
|
+
/** Convenience mirror of `kind === 'auth'`. */
|
|
27
|
+
isAuth: boolean;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export interface ProviderPageInfo {
|
|
31
|
+
/**
|
|
32
|
+
* The 1-based POSITION of the returned page. One convention across every paged read, page-number and
|
|
33
|
+
* cursor paging alike, so a `getNextPageParam`-style consumer can key off it uniformly:
|
|
34
|
+
* - the page number the provider itself reported, when it reports one (authoritative);
|
|
35
|
+
* - else the position the caller addressed: the page encoded in a threaded page cursor, or the `page`
|
|
36
|
+
* supplied alongside an opaque cursor (1 when the caller supplied no `page`);
|
|
37
|
+
* - else, for a read that can be advanced by page number, the requested `page` — the provider either
|
|
38
|
+
* honored it or the internal drain reached it (see the paging contract on `IntegrationManager`);
|
|
39
|
+
* - else 1: a cursor-only read with no cursor threaded back ignores a requested page number and answers
|
|
40
|
+
* with its first page, so echoing the request would mislabel page 1 as page N.
|
|
41
|
+
*
|
|
42
|
+
* A page past the provider's terminal cursor still reports the requested `page` with empty `items` — an
|
|
43
|
+
* empty page N, never page N-1 relabeled.
|
|
44
|
+
*
|
|
45
|
+
* Continue a cursor-paged read from `cursor`, NOT from `currentPage + 1`: a cursor-only host can't be
|
|
46
|
+
* addressed by number, so this is a position label and not always a resumable request parameter.
|
|
47
|
+
*/
|
|
48
|
+
currentPage: number;
|
|
49
|
+
/**
|
|
50
|
+
* The page size IN EFFECT, which is not always the one requested — it is whichever of these the read can
|
|
51
|
+
* actually vouch for:
|
|
52
|
+
* - the size the provider reported for the page it served (numbered-page hosts), else
|
|
53
|
+
* - the `itemsPerPage` that was applied to the request (repo-scoped reads, which forward it), else
|
|
54
|
+
* - `items.length`, for a read that takes no page size at all: the account-wide PR/issue reads, `listRepos`
|
|
55
|
+
* (cursor-only), and `listIssueTrackerIssuesPage`, whose `itemsPerPage` counts PROJECTS rather than issues.
|
|
56
|
+
*
|
|
57
|
+
* So it is a description of the page, not an echo of the request: don't derive a total from
|
|
58
|
+
* `currentPage * itemsPerPage`, and don't read `items.length < itemsPerPage` as "last page" — `hasMore` /
|
|
59
|
+
* `cursor` are the only continuation signals.
|
|
60
|
+
*/
|
|
61
|
+
itemsPerPage: number;
|
|
62
|
+
/**
|
|
63
|
+
* A COMPLETENESS assertion, not a mode flag: `true` only when a sweep drained every page of every target
|
|
64
|
+
* without truncating or failing (`!truncated && !fetchFailed`). Set exclusively by `sweepPullRequests` /
|
|
65
|
+
* `sweepClosedPullRequests` and absent on every paged read, so `allPages !== true` does NOT by itself mean
|
|
66
|
+
* "this was a single page".
|
|
67
|
+
*
|
|
68
|
+
* This is the signal to gate on before caching a sweep as authoritative: unlike `truncated` it is `false`
|
|
69
|
+
* for BOTH kinds of incompleteness, so it can't be misread as a benign cap.
|
|
70
|
+
*/
|
|
71
|
+
allPages?: boolean;
|
|
72
|
+
/**
|
|
73
|
+
* True when the read stopped before it could confirm it had everything. Deliberately does NOT distinguish
|
|
74
|
+
* WHY, and a consumer must not assume it means a provider ceiling — a sweep sets it from three different
|
|
75
|
+
* origins:
|
|
76
|
+
* - a provider-side ceiling or per-scope backstop propagated from below (e.g. GitHub Search's 1000-result
|
|
77
|
+
* cap): the missing items are NOT reachable, so this really is "complete to the provider's limit";
|
|
78
|
+
* - the sweep's OWN `maxPages` cap (default 100) with a usable cursor still in hand: the missing items ARE
|
|
79
|
+
* reachable and were simply not fetched — raise `maxPages` to get them;
|
|
80
|
+
* - the provider reporting another page but handing back no usable cursor: not reachable.
|
|
81
|
+
*
|
|
82
|
+
* Only the second is recoverable, and a sweep exposes no continuation cursor, so treating a truncated sweep
|
|
83
|
+
* as a complete set silently drops reachable data in that case. Prefer `allPages` for the cache decision.
|
|
84
|
+
*/
|
|
85
|
+
truncated?: boolean;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export interface ProviderResult<T> {
|
|
89
|
+
items: T[];
|
|
90
|
+
warnings: ProviderWarning[];
|
|
91
|
+
/**
|
|
92
|
+
* True when `items` is incomplete — distinguishes a failed or truncated flat read from a genuinely empty
|
|
93
|
+
* result. Paged results additionally use `page.truncated` when a completed page could not confirm it
|
|
94
|
+
* drained everything.
|
|
95
|
+
*/
|
|
96
|
+
fetchFailed?: boolean;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export interface ProviderPagedResult<T> extends ProviderResult<T> {
|
|
100
|
+
page: ProviderPageInfo;
|
|
101
|
+
hasMore: boolean;
|
|
102
|
+
/**
|
|
103
|
+
* Opaque cursor for cursor-based paging (GraphQL, per-repo/per-project cursors, etc.). For hosts that
|
|
104
|
+
* require the previous page's cursor, consumers should pass this value back to the next `cursor` option.
|
|
105
|
+
* A retry-only cursor may remain when `hasMore` is false: `hasMore` means automatic forward progress,
|
|
106
|
+
* while explicitly reusing such a cursor retries failed work without creating an infinite paging loop.
|
|
107
|
+
*/
|
|
108
|
+
cursor?: string;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export interface ProviderSweepResult<T> extends ProviderResult<T> {
|
|
112
|
+
page: ProviderPageInfo;
|
|
113
|
+
hasMore: boolean;
|
|
114
|
+
/**
|
|
115
|
+
* Providers whose top-level read failed before returning any usable page. Partial per-scope failures stay
|
|
116
|
+
* represented by `warnings` + `fetchFailed` and are intentionally excluded.
|
|
117
|
+
*/
|
|
118
|
+
failedProviderIds: IntegrationIds[];
|
|
119
|
+
/**
|
|
120
|
+
* Providers whose read started successfully but could not produce an authoritative complete slice (for
|
|
121
|
+
* example, a later page failed, collection metadata reported a partial scope, or a paging backstop was hit).
|
|
122
|
+
* Kept separate from
|
|
123
|
+
* `failedProviderIds` so consumers can accept healthy sibling providers while preserving an older snapshot
|
|
124
|
+
* for a provider whose returned slice has a gap.
|
|
125
|
+
*/
|
|
126
|
+
incompleteProviderIds: IntegrationIds[];
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
export interface ProviderBroadenResult<T> extends ProviderPagedResult<T> {
|
|
130
|
+
broadenedProviderIds: IntegrationIds[];
|
|
131
|
+
/** Providers for which no requested org produced a usable issue result. */
|
|
132
|
+
failedProviderIds: IntegrationIds[];
|
|
133
|
+
/** Providers with both a usable org result and at least one failed or truncated org slice. */
|
|
134
|
+
incompleteProviderIds: IntegrationIds[];
|
|
135
|
+
fanOutCount: number;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export type RepositoryResolutionStatus =
|
|
139
|
+
| 'resolved'
|
|
140
|
+
| 'not-found'
|
|
141
|
+
| 'unauthorized'
|
|
142
|
+
| 'unsupported-provider'
|
|
143
|
+
| 'invalid-remote-url'
|
|
144
|
+
| 'host-mismatch'
|
|
145
|
+
| 'undetermined';
|
|
146
|
+
|
|
147
|
+
export interface RepositoryIdentity {
|
|
148
|
+
providerId: IntegrationIds;
|
|
149
|
+
domain: string;
|
|
150
|
+
/** The provider's canonical owner/namespace (follows renames), falling back to the parsed remote when omitted. */
|
|
151
|
+
owner: string;
|
|
152
|
+
/** The provider's canonical repo name (follows renames), falling back to the parsed remote when omitted. */
|
|
153
|
+
name: string;
|
|
154
|
+
project?: string;
|
|
155
|
+
/** The original input remote URL, so the caller can key the resolution back to the remote it asked about. */
|
|
156
|
+
remoteUrl: string;
|
|
157
|
+
/**
|
|
158
|
+
* True when the provider's canonical owner/name differ from what the input remote URL carried — i.e. the
|
|
159
|
+
* repo was renamed/moved host-side and the local remote is stale. Case-insensitive, mirroring gkcli's
|
|
160
|
+
* `EqualFold` compare so hosts that echo the input casing (e.g. Bitbucket Server/Azure) aren't flagged.
|
|
161
|
+
*/
|
|
162
|
+
renamed: boolean;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
export interface RepositoryResolution {
|
|
166
|
+
status: RepositoryResolutionStatus;
|
|
167
|
+
identity?: RepositoryIdentity;
|
|
168
|
+
warning?: ProviderWarning;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
export interface ResolveRepositoryResult {
|
|
172
|
+
resolution: RepositoryResolution;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
const maxProviderWarningMessageLength = 500;
|
|
176
|
+
|
|
177
|
+
function providerWarningMessage(ex: unknown): string {
|
|
178
|
+
const raw = (ex instanceof Error ? ex.message : String(ex)).trim();
|
|
179
|
+
const carrier = ex as { status?: unknown; response?: { status?: unknown } } | null | undefined;
|
|
180
|
+
const status =
|
|
181
|
+
typeof carrier?.status === 'number'
|
|
182
|
+
? carrier.status
|
|
183
|
+
: typeof carrier?.response?.status === 'number'
|
|
184
|
+
? carrier.response.status
|
|
185
|
+
: undefined;
|
|
186
|
+
|
|
187
|
+
// Gateways commonly answer API requests with a complete HTML error page. That payload is neither actionable
|
|
188
|
+
// nor suitable for a warning DTO consumed by UIs and logs; preserve the status without leaking the document.
|
|
189
|
+
if (/<(?:!doctype\s+html|html|head|body)\b/i.test(raw)) {
|
|
190
|
+
return status != null ? `Provider request failed with status ${status}.` : 'Provider request failed.';
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
if (!raw) {
|
|
194
|
+
return status != null ? `Provider request failed with status ${status}.` : 'Provider request failed.';
|
|
195
|
+
}
|
|
196
|
+
return raw.length > maxProviderWarningMessageLength
|
|
197
|
+
? `${raw.slice(0, maxProviderWarningMessageLength - 3)}...`
|
|
198
|
+
: raw;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Normalized org/workspace/group shape returned by the provider facade.
|
|
203
|
+
* `name` is the provider identifier to pass to follow-up reads, while `org` is an optional display label.
|
|
204
|
+
*/
|
|
205
|
+
export interface ProviderOrganization {
|
|
206
|
+
id: string;
|
|
207
|
+
providerId: IntegrationIds;
|
|
208
|
+
name: string;
|
|
209
|
+
org?: string;
|
|
210
|
+
url: string;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/** Normalized repository shape returned by the provider facade. */
|
|
214
|
+
export interface ProviderRepositoryShape {
|
|
215
|
+
id: string;
|
|
216
|
+
namespace: string;
|
|
217
|
+
name: string;
|
|
218
|
+
/** Azure DevOps project; `undefined` for hosts without a project layer. */
|
|
219
|
+
project?: string;
|
|
220
|
+
/** Web (browser) URL, when the provider exposes it. */
|
|
221
|
+
url?: string;
|
|
222
|
+
/** HTTPS clone URL, when available. */
|
|
223
|
+
cloneUrlHttps?: string;
|
|
224
|
+
/** SSH clone URL, when available. */
|
|
225
|
+
cloneUrlSsh?: string;
|
|
226
|
+
/** Default branch name, when the provider reports it. */
|
|
227
|
+
defaultBranch?: string;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Classifies a caught provider exception into a neutral {@link ProviderWarning}. Ordering matters:
|
|
232
|
+
* `instanceof` is checked most-specific-first so a rate-limit isn't mislabeled as a generic error and
|
|
233
|
+
* a 404 isn't mislabeled as auth.
|
|
234
|
+
*/
|
|
235
|
+
export function toProviderWarning(
|
|
236
|
+
providerId: IntegrationIds,
|
|
237
|
+
domain: string | undefined,
|
|
238
|
+
connectionId: string | undefined,
|
|
239
|
+
ex: unknown,
|
|
240
|
+
): ProviderWarning {
|
|
241
|
+
let kind: ProviderWarning['kind'];
|
|
242
|
+
if (ex instanceof AuthenticationError) {
|
|
243
|
+
kind = 'auth';
|
|
244
|
+
} else if (ex instanceof RequestRateLimitError) {
|
|
245
|
+
kind = 'rate-limit';
|
|
246
|
+
} else if (ex instanceof RequestNotFoundError) {
|
|
247
|
+
kind = 'not-found';
|
|
248
|
+
} else {
|
|
249
|
+
kind = 'other';
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
return {
|
|
253
|
+
providerId: providerId,
|
|
254
|
+
domain: domain,
|
|
255
|
+
connectionId: connectionId,
|
|
256
|
+
message: providerWarningMessage(ex),
|
|
257
|
+
kind: kind,
|
|
258
|
+
isAuth: kind === 'auth',
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/** A stable key for deduplicating warnings accumulated across drained pages / fan-out scopes. */
|
|
263
|
+
function providerWarningKey(warning: ProviderWarning): string {
|
|
264
|
+
return [warning.providerId, warning.connectionId ?? '', warning.domain ?? '', warning.kind, warning.message].join(
|
|
265
|
+
' ',
|
|
266
|
+
);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/** Appends `warning` to `into` only when an equal warning (by provider/connection/domain/kind/message) is absent. */
|
|
270
|
+
export function appendDedupedWarning(into: ProviderWarning[], warning: ProviderWarning): void {
|
|
271
|
+
const key = providerWarningKey(warning);
|
|
272
|
+
if (into.some(existing => providerWarningKey(existing) === key)) return;
|
|
273
|
+
|
|
274
|
+
into.push(warning);
|
|
275
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** Extracts the host from a domain expressed as either a URL or a bare host. */
|
|
2
|
+
export function hostFromDomain(domain: string | undefined): string | undefined {
|
|
3
|
+
const value = domain?.trim();
|
|
4
|
+
if (!value) return undefined;
|
|
5
|
+
|
|
6
|
+
if (/^[a-z][a-z\d+\-.]*:\/\//i.test(value)) {
|
|
7
|
+
try {
|
|
8
|
+
return new URL(value).host || undefined;
|
|
9
|
+
} catch {
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
try {
|
|
15
|
+
return new URL(`https://${value}`).host || undefined;
|
|
16
|
+
} catch {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/** Whether two URL-or-host domain values identify the same normalized host and port. */
|
|
22
|
+
export function areDomainsOnSameHost(first: string | undefined, second: string | undefined): boolean {
|
|
23
|
+
const firstHost = hostFromDomain(first);
|
|
24
|
+
const secondHost = hostFromDomain(second);
|
|
25
|
+
return firstHost != null && secondHost != null && firstHost === secondHost;
|
|
26
|
+
}
|
|
@@ -7,20 +7,11 @@ import {
|
|
|
7
7
|
} from '../constants.js';
|
|
8
8
|
import type { GitHostIntegration } from '../models/gitHostIntegration.js';
|
|
9
9
|
import type { Integration, IntegrationConnectedKey } from '../models/integration.js';
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
//
|
|
13
|
-
//
|
|
14
|
-
|
|
15
|
-
// `providers/models.ts` is still loading triggers a TDZ on `providersMetadata`.
|
|
16
|
-
const azureCloudDomainRegex = /^dev\.azure\.com$|\bvisualstudio\.com$/i;
|
|
17
|
-
const bitbucketCloudDomainRegex = /^bitbucket\.org$/i;
|
|
18
|
-
function isAzureCloudDomain(domain: string | undefined): boolean {
|
|
19
|
-
return domain != null && azureCloudDomainRegex.test(domain);
|
|
20
|
-
}
|
|
21
|
-
function isBitbucketCloudDomain(domain: string | undefined): boolean {
|
|
22
|
-
return domain != null && bitbucketCloudDomainRegex.test(domain);
|
|
23
|
-
}
|
|
10
|
+
// These domain checks come from `providers/models.ts` (already imported here) rather than the individual
|
|
11
|
+
// provider modules: those read `providersMetadata[...]` synchronously at module init, so importing from them
|
|
12
|
+
// while `providers/models.ts` is still loading triggers a TDZ on `providersMetadata`. Importing the shared
|
|
13
|
+
// predicates keeps one definition of each regex — duplicating them let a fix land in only one place.
|
|
14
|
+
import { isAzureCloudDomain, isBitbucketCloudDomain, isGitHubDotCom, isGitLabDotCom } from '../providers/models.js';
|
|
24
15
|
|
|
25
16
|
const selfHostedIntegrationIds: GitSelfManagedHostIntegrationId[] = [
|
|
26
17
|
GitSelfManagedHostIntegrationId.CloudGitHubEnterprise,
|
|
@@ -35,8 +26,7 @@ export const supportedIntegrationIds: IntegrationIds[] = [
|
|
|
35
26
|
GitCloudHostIntegrationId.Bitbucket,
|
|
36
27
|
GitCloudHostIntegrationId.AzureDevOps,
|
|
37
28
|
IssuesCloudHostIntegrationId.Jira,
|
|
38
|
-
|
|
39
|
-
// would make reset()'s ensureProvider() throw 'No authentication provider registered'.
|
|
29
|
+
IssuesCloudHostIntegrationId.Trello,
|
|
40
30
|
...selfHostedIntegrationIds,
|
|
41
31
|
] as const;
|
|
42
32
|
|
|
@@ -117,6 +107,20 @@ export function isCloudGitSelfManagedHostIntegrationId(
|
|
|
117
107
|
}
|
|
118
108
|
}
|
|
119
109
|
|
|
110
|
+
/**
|
|
111
|
+
* Whether a provider's cloud token uses `expiresIn: 0` to mean "never expires" (rather than "already
|
|
112
|
+
* expired"). GitHub and the cloud self-managed hosts always return 0 for their non-expiring tokens; Trello
|
|
113
|
+
* is issued with `expiration: never` (identity-service), so its cloud token comes back as 0 too. Callers
|
|
114
|
+
* must map 0 → a far-future expiry for these, or the session is immediately treated as expired.
|
|
115
|
+
*/
|
|
116
|
+
export function isNonExpiringZeroTokenIntegrationId(id: IntegrationIds): boolean {
|
|
117
|
+
return (
|
|
118
|
+
id === GitCloudHostIntegrationId.GitHub ||
|
|
119
|
+
id === IssuesCloudHostIntegrationId.Trello ||
|
|
120
|
+
isCloudGitSelfManagedHostIntegrationId(id)
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
|
|
120
124
|
export function isGitHostIntegration(integration: Integration): integration is GitHostIntegration {
|
|
121
125
|
return integration.type === 'git';
|
|
122
126
|
}
|
|
@@ -136,3 +140,76 @@ export function isGitCloudHostIntegrationId(id: IntegrationIds): id is GitCloudH
|
|
|
136
140
|
export function isGitSelfManagedHostIntegrationId(id: IntegrationIds): id is GitSelfManagedHostIntegrationId {
|
|
137
141
|
return selfHostedIntegrationIds.includes(id as GitSelfManagedHostIntegrationId);
|
|
138
142
|
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Whether this id belongs to a dedicated issue tracker (resource → project) rather than a git host.
|
|
146
|
+
*
|
|
147
|
+
* Decided from the id alone, so a read can refuse a mismatched surface — a repo/PR read asked of Jira, or an
|
|
148
|
+
* issue-tracker project read asked of GitHub — before resolving a connection. The instance-level
|
|
149
|
+
* {@link isIssuesIntegration} answers the same question once an integration is in hand.
|
|
150
|
+
*/
|
|
151
|
+
export function isIssuesHostIntegrationId(id: IntegrationIds): id is IssuesCloudHostIntegrationId {
|
|
152
|
+
switch (id) {
|
|
153
|
+
case IssuesCloudHostIntegrationId.Jira:
|
|
154
|
+
case IssuesCloudHostIntegrationId.Linear:
|
|
155
|
+
case IssuesCloudHostIntegrationId.Trello:
|
|
156
|
+
return true;
|
|
157
|
+
default:
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Whether a read targeted only by an explicit self-managed `domain` (no `connectionId`) must treat a
|
|
164
|
+
* session-less core result as a broken target instead of an empty account. Without this, a self-managed host
|
|
165
|
+
* addressed only by domain — the manual-token/external-auth case `domain` exists to cover — returns an empty
|
|
166
|
+
* success with no warning and no `fetchFailed`, indistinguishable from "this host has nothing".
|
|
167
|
+
*/
|
|
168
|
+
export function warnOnMissingSessionForDomain(id: IntegrationIds, domain: string | undefined): boolean {
|
|
169
|
+
return domain != null && isGitSelfManagedHostIntegrationId(id);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/** Maps an integration id to the git-remote provider type used by the remote-URL matcher. */
|
|
173
|
+
export function remoteProviderTypeForIntegration(id: IntegrationIds): RemoteProviderId | undefined {
|
|
174
|
+
switch (id) {
|
|
175
|
+
case GitCloudHostIntegrationId.GitHub:
|
|
176
|
+
case GitSelfManagedHostIntegrationId.CloudGitHubEnterprise:
|
|
177
|
+
return 'github';
|
|
178
|
+
case GitCloudHostIntegrationId.GitLab:
|
|
179
|
+
case GitSelfManagedHostIntegrationId.CloudGitLabSelfHosted:
|
|
180
|
+
return 'gitlab';
|
|
181
|
+
case GitCloudHostIntegrationId.Bitbucket:
|
|
182
|
+
return 'bitbucket';
|
|
183
|
+
case GitSelfManagedHostIntegrationId.BitbucketServer:
|
|
184
|
+
return 'bitbucket-server';
|
|
185
|
+
case GitCloudHostIntegrationId.AzureDevOps:
|
|
186
|
+
case GitSelfManagedHostIntegrationId.AzureDevOpsServer:
|
|
187
|
+
return 'azure-devops';
|
|
188
|
+
default:
|
|
189
|
+
return undefined;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/** Normalizes a host remote-config `type` string (e.g. `'GitHub'`) to a git-remote provider type. */
|
|
194
|
+
export function remoteProviderTypeForConfig(type: string): RemoteProviderId | undefined {
|
|
195
|
+
switch (type.toLowerCase()) {
|
|
196
|
+
case 'github':
|
|
197
|
+
return 'github';
|
|
198
|
+
case 'gitlab':
|
|
199
|
+
return 'gitlab';
|
|
200
|
+
case 'bitbucket':
|
|
201
|
+
return 'bitbucket';
|
|
202
|
+
case 'bitbucket-server':
|
|
203
|
+
case 'bitbucketserver':
|
|
204
|
+
return 'bitbucket-server';
|
|
205
|
+
case 'azuredevops':
|
|
206
|
+
case 'azure-devops':
|
|
207
|
+
return 'azure-devops';
|
|
208
|
+
case 'gitea':
|
|
209
|
+
return 'gitea';
|
|
210
|
+
case 'gerrit':
|
|
211
|
+
return 'gerrit';
|
|
212
|
+
default:
|
|
213
|
+
return undefined;
|
|
214
|
+
}
|
|
215
|
+
}
|
package/src/utils/brand.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
2
1
|
declare const __brand: unique symbol;
|
|
3
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
4
2
|
declare const __base: unique symbol;
|
|
5
3
|
|
|
6
4
|
type _Brand<Base, B> = { [__brand]: B; [__base]: Base };
|
|
@@ -59,6 +59,40 @@ export function raceWithSignal<T>(promise: Promise<T>, signal: AbortSignal): Pro
|
|
|
59
59
|
});
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
+
/**
|
|
63
|
+
* Races a promise against a timeout. If `ms` elapses before the promise settles, the returned promise
|
|
64
|
+
* rejects with `CancellationError`. If the promise settles first, the timer is cleared. Parallels
|
|
65
|
+
* `raceWithSignal`, with a timer standing in for the signal.
|
|
66
|
+
*
|
|
67
|
+
* When `abortOnTimeout` is provided, it is aborted on timeout — so a caller can link the underlying operation to
|
|
68
|
+
* it (e.g. via `AbortSignal.any`) and have it torn down instead of orphaned. Abort is best-effort (a truly-stuck
|
|
69
|
+
* op may ignore it); the returned promise rejects on timeout regardless of whether the underlying op settles.
|
|
70
|
+
*/
|
|
71
|
+
export function raceWithTimeout<T>(promise: Promise<T>, ms: number, abortOnTimeout?: AbortController): Promise<T> {
|
|
72
|
+
return new Promise<T>((resolve, reject) => {
|
|
73
|
+
const timer = setTimeout(() => {
|
|
74
|
+
const error = new CancellationError(new Error(`Timed out after ${ms}ms`));
|
|
75
|
+
abortOnTimeout?.abort(error);
|
|
76
|
+
reject(error);
|
|
77
|
+
}, ms);
|
|
78
|
+
// Don't let the timeout timer keep a (Node) process alive on its own — a still-pending promise shouldn't
|
|
79
|
+
// hold the event loop open just for its backstop (no-op in the browser, where setTimeout returns a number).
|
|
80
|
+
if (typeof timer !== 'number') {
|
|
81
|
+
timer.unref();
|
|
82
|
+
}
|
|
83
|
+
promise.then(
|
|
84
|
+
v => {
|
|
85
|
+
clearTimeout(timer);
|
|
86
|
+
resolve(v);
|
|
87
|
+
},
|
|
88
|
+
(e: unknown) => {
|
|
89
|
+
clearTimeout(timer);
|
|
90
|
+
reject(e instanceof Error ? e : new Error(String(e)));
|
|
91
|
+
},
|
|
92
|
+
);
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
|
|
62
96
|
/**
|
|
63
97
|
* Aggregates multiple caller `AbortSignal`s into a single signal that
|
|
64
98
|
* only fires when **all** callers have cancelled (the inverse of `AbortSignal.any()`).
|
|
@@ -71,7 +105,8 @@ export function raceWithSignal<T>(promise: Promise<T>, signal: AbortSignal): Pro
|
|
|
71
105
|
export class AbortAggregate {
|
|
72
106
|
private readonly controller = new AbortController();
|
|
73
107
|
private activeCount = 0;
|
|
74
|
-
|
|
108
|
+
/** One listener-remover per registration (NOT keyed by signal), so adding the same signal twice is safe. */
|
|
109
|
+
private readonly cleanups = new Set<() => void>();
|
|
75
110
|
|
|
76
111
|
/** The aggregate signal — only fires when all callers have cancelled. */
|
|
77
112
|
get signal(): AbortSignal {
|
|
@@ -83,6 +118,8 @@ export class AbortAggregate {
|
|
|
83
118
|
* - If `cancellation` is provided, the caller is auto-removed when it fires.
|
|
84
119
|
* - If `cancellation` is `undefined`, the caller is "permanent" — the aggregate
|
|
85
120
|
* can never fire while it's active. Call the returned cleanup on promise settle.
|
|
121
|
+
* - The same signal instance may safely be added more than once — each registration is tracked and cleaned up
|
|
122
|
+
* independently, so no listener leaks.
|
|
86
123
|
* @returns A cleanup function to unregister the caller.
|
|
87
124
|
*/
|
|
88
125
|
add(cancellation?: AbortSignal): () => void {
|
|
@@ -101,17 +138,29 @@ export class AbortAggregate {
|
|
|
101
138
|
return () => {};
|
|
102
139
|
}
|
|
103
140
|
|
|
141
|
+
// Track this registration's listener removal individually (a Set of removers, NOT keyed by the signal) so
|
|
142
|
+
// adding the same signal twice can't overwrite the other's cleanup. `settled` keeps both exit paths (abort
|
|
143
|
+
// vs. manual cleanup) idempotent and preserves the accounting: only `onAbort` decrements `activeCount`.
|
|
144
|
+
let settled = false;
|
|
145
|
+
let remove: () => void;
|
|
104
146
|
const onAbort = () => {
|
|
105
|
-
|
|
147
|
+
if (settled) return;
|
|
148
|
+
|
|
149
|
+
settled = true;
|
|
150
|
+
this.cleanups.delete(remove);
|
|
106
151
|
this.activeCount--;
|
|
107
152
|
this.checkAbort();
|
|
108
153
|
};
|
|
154
|
+
remove = () => cancellation.removeEventListener('abort', onAbort);
|
|
109
155
|
cancellation.addEventListener('abort', onAbort, { once: true });
|
|
110
|
-
this.cleanups.
|
|
156
|
+
this.cleanups.add(remove);
|
|
111
157
|
|
|
112
158
|
return () => {
|
|
113
|
-
|
|
114
|
-
|
|
159
|
+
if (settled) return;
|
|
160
|
+
|
|
161
|
+
settled = true;
|
|
162
|
+
this.cleanups.delete(remove);
|
|
163
|
+
remove();
|
|
115
164
|
};
|
|
116
165
|
}
|
|
117
166
|
|
|
@@ -123,8 +172,8 @@ export class AbortAggregate {
|
|
|
123
172
|
|
|
124
173
|
/** Remove all abort listeners. Call when the cached promise settles. */
|
|
125
174
|
dispose(): void {
|
|
126
|
-
for (const
|
|
127
|
-
|
|
175
|
+
for (const remove of this.cleanups) {
|
|
176
|
+
remove();
|
|
128
177
|
}
|
|
129
178
|
this.cleanups.clear();
|
|
130
179
|
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/** Single-flight async runner with one trailing rerun: `run()` while a run is in flight joins the
|
|
2
|
+
* SAME promise and marks it dirty; when the run settles (resolve OR reject), one trailing `refire`
|
|
3
|
+
* fires so state that changed mid-run is re-processed. `refire` should re-enter the owner's calling
|
|
4
|
+
* method (which applies its own gates) — fire-and-forget. `markDirty()` forces the trailing refire
|
|
5
|
+
* (e.g. on a repo swap mid-run) without joining. */
|
|
6
|
+
export class CoalescedRun<T> {
|
|
7
|
+
private _dirty = false;
|
|
8
|
+
private _inflight: Promise<T> | undefined;
|
|
9
|
+
|
|
10
|
+
constructor(
|
|
11
|
+
private readonly fn: () => Promise<T>,
|
|
12
|
+
private readonly refire: () => void,
|
|
13
|
+
) {}
|
|
14
|
+
|
|
15
|
+
get running(): boolean {
|
|
16
|
+
return this._inflight != null;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
markDirty(): void {
|
|
20
|
+
if (this._inflight != null) {
|
|
21
|
+
this._dirty = true;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
run(): Promise<T> {
|
|
26
|
+
if (this._inflight != null) {
|
|
27
|
+
this._dirty = true;
|
|
28
|
+
return this._inflight;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Defer `fn` to a microtask so `_inflight` is assigned BEFORE any of fn's code runs — a
|
|
32
|
+
// synchronous reentrant `run()` from fn's prologue then joins instead of double-running.
|
|
33
|
+
const promise = Promise.resolve()
|
|
34
|
+
.then(this.fn)
|
|
35
|
+
.finally(() => {
|
|
36
|
+
this._inflight = undefined;
|
|
37
|
+
if (this._dirty) {
|
|
38
|
+
this._dirty = false;
|
|
39
|
+
this.refire();
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
this._inflight = promise;
|
|
43
|
+
return promise;
|
|
44
|
+
}
|
|
45
|
+
}
|
package/src/utils/color.ts
CHANGED
|
@@ -344,15 +344,15 @@ export class Color {
|
|
|
344
344
|
static from(value: string | Color): Color {
|
|
345
345
|
if (value instanceof Color) return value;
|
|
346
346
|
|
|
347
|
-
return parseColor(value)
|
|
347
|
+
return parseColor(value) ?? Color.red;
|
|
348
348
|
}
|
|
349
349
|
|
|
350
350
|
static fromCssVariable(variable: string, css: { getPropertyValue(property: string): string }): Color {
|
|
351
|
-
return parseColor(getCssVariable(variable, css))
|
|
351
|
+
return parseColor(getCssVariable(variable, css)) ?? Color.red;
|
|
352
352
|
}
|
|
353
353
|
|
|
354
354
|
static fromHex(hex: string): Color {
|
|
355
|
-
return parseHexColor(hex)
|
|
355
|
+
return parseHexColor(hex) ?? Color.red;
|
|
356
356
|
}
|
|
357
357
|
|
|
358
358
|
static equals(a: Color | null, b: Color | null): boolean {
|