@gitkraken/core-gitlens 0.4.0 → 0.4.101
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 +74 -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 +135 -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 +297 -13
- package/dist/plus/integrations/integrationService.d.ts.map +1 -1
- package/dist/plus/integrations/integrationService.js +672 -36
- 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 +262 -10
- package/dist/plus/integrations/models/gitHostIntegration.d.ts.map +1 -1
- package/dist/plus/integrations/models/gitHostIntegration.js +675 -101
- 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 +70 -7
- package/dist/plus/integrations/models/issuesIntegration.d.ts.map +1 -1
- package/dist/plus/integrations/models/issuesIntegration.js +108 -35
- 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/broaden.d.ts +20 -0
- package/dist/plus/integrations/reads/broaden.d.ts.map +1 -0
- package/dist/plus/integrations/reads/broaden.js +326 -0
- package/dist/plus/integrations/reads/broaden.js.map +1 -0
- package/dist/plus/integrations/reads/context.d.ts +74 -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 +320 -0
- package/dist/plus/integrations/reads/hierarchy.js.map +1 -0
- package/dist/plus/integrations/reads/hierarchy.utils.d.ts +77 -0
- package/dist/plus/integrations/reads/hierarchy.utils.d.ts.map +1 -0
- package/dist/plus/integrations/reads/hierarchy.utils.js +128 -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 +334 -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/resolveRepository.d.ts +25 -0
- package/dist/plus/integrations/reads/resolveRepository.d.ts.map +1 -0
- package/dist/plus/integrations/reads/resolveRepository.js +235 -0
- package/dist/plus/integrations/reads/resolveRepository.js.map +1 -0
- package/dist/plus/integrations/reads/sweeps.d.ts +11 -0
- package/dist/plus/integrations/reads/sweeps.d.ts.map +1 -0
- package/dist/plus/integrations/reads/sweeps.js +125 -0
- package/dist/plus/integrations/reads/sweeps.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 +153 -0
- package/src/plus/integrations/index.ts +148 -51
- package/src/plus/integrations/integrationService.ts +940 -49
- package/src/plus/integrations/lite.ts +233 -0
- package/src/plus/integrations/manager.ts +359 -0
- package/src/plus/integrations/models/gitHostIntegration.ts +1005 -134
- package/src/plus/integrations/models/integration.ts +293 -24
- package/src/plus/integrations/models/issuesIntegration.ts +132 -39
- 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/broaden.ts +452 -0
- package/src/plus/integrations/reads/context.ts +99 -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 +473 -0
- package/src/plus/integrations/reads/hierarchy.utils.ts +155 -0
- package/src/plus/integrations/reads/issueTracker.ts +468 -0
- package/src/plus/integrations/reads/issues.ts +409 -0
- package/src/plus/integrations/reads/paging.ts +277 -0
- package/src/plus/integrations/reads/pullRequests.ts +260 -0
- package/src/plus/integrations/reads/resolveRepository.ts +272 -0
- package/src/plus/integrations/reads/sweeps.ts +185 -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
|
@@ -2,12 +2,102 @@ import ProviderApis from '@gitkraken/provider-apis';
|
|
|
2
2
|
import { base64 } from '../../../utils/base64.js';
|
|
3
3
|
import { toTokenWithInfo } from '../authentication/models.js';
|
|
4
4
|
import { GitCloudHostIntegrationId, GitSelfManagedHostIntegrationId, IssuesCloudHostIntegrationId, } from '../constants.js';
|
|
5
|
-
import { AuthenticationError, AuthenticationErrorReason, RequestClientError, RequestNotFoundError,
|
|
5
|
+
import { AuthenticationError, AuthenticationErrorReason, isRateLimitResponse, RequestClientError, RequestNotFoundError, toError, toRateLimitError, } from '../errors.js';
|
|
6
6
|
import { providersMetadata } from './models.js';
|
|
7
|
+
import { collectProviderPagedResult, mergeCollectionMetadata, parsePageCursor, toPageCursor, } from './utils/providerPaging.js';
|
|
7
8
|
const createProviderApis = ProviderApis.default ?? ProviderApis;
|
|
9
|
+
// Both GitHub and GitLab `getRepo` throw a missing-repo error whose message is exactly
|
|
10
|
+
// `Repository <x> not found`. Anchoring to that shape (rather than a loose `not found` substring) keeps
|
|
11
|
+
// the message fallbacks from misclassifying unrelated GraphQL/transport failures as a confident negative.
|
|
12
|
+
const repoNotFoundMessage = /^Repository .+ not found$/i;
|
|
13
|
+
// Duck-typed rather than `ex instanceof GraphQLErrors`, because importing the class as a value makes this
|
|
14
|
+
// module unloadable from plain Node ESM consumers: `@gitkraken/provider-apis` is CommonJS and declares its
|
|
15
|
+
// exports through getters, which Node's `cjs-module-lexer` cannot see, so the only named exports it can
|
|
16
|
+
// synthesize are `default` and `module.exports`. Bundled hosts (webpack/esbuild) bind the named export
|
|
17
|
+
// fine, but the published package keeps third-party deps external, so the named import survives into
|
|
18
|
+
// consumers and breaks linking there. The SDK's constructor always assigns `graphQLErrors` (defaulting to
|
|
19
|
+
// `[]`) and it is the only SDK error carrying that field, so the shape check is unambiguous.
|
|
20
|
+
function isGraphQLErrors(ex) {
|
|
21
|
+
return ex instanceof Error && Array.isArray(ex.graphQLErrors);
|
|
22
|
+
}
|
|
23
|
+
// `handleProviderError` classifies not-found by HTTP status (404/410/422), which only works for the
|
|
24
|
+
// REST `getRepo` clients (Bitbucket, Bitbucket Server, Azure DevOps). GitHub and GitLab `getRepo` are
|
|
25
|
+
// GraphQL: a missing repo comes back as HTTP 200 with a null node, and the SDK throws an unclassified
|
|
26
|
+
// error with no `response.status`, so it would otherwise fall through to the generic error bucket. This
|
|
27
|
+
// detects the SDK's not-found shapes so `getRepo` can rethrow them as `RequestNotFoundError`, keeping the
|
|
28
|
+
// facade's by-type mapping intact.
|
|
29
|
+
function isGraphQLRepoNotFoundError(ex) {
|
|
30
|
+
// GitHub throws `GraphQLErrors`. The SDK reports the null repository node with the same
|
|
31
|
+
// `Repository <x> not found` message regardless of the underlying cause, so a `FORBIDDEN` or
|
|
32
|
+
// `RATE_LIMITED` GraphQL error would also surface with that message. Trust the structured error type
|
|
33
|
+
// when entries are present (only `NOT_FOUND` is a real not-found), and fall back to the repo-specific
|
|
34
|
+
// message only when there are no entries to disambiguate (a bare null node).
|
|
35
|
+
if (isGraphQLErrors(ex)) {
|
|
36
|
+
const errors = ex.graphQLErrors;
|
|
37
|
+
// Scope NOT_FOUND to the `repository` field: `getRepo`'s query only selects that node today, but
|
|
38
|
+
// were it to grow other selections that can emit NOT_FOUND, an unscoped check would misclassify
|
|
39
|
+
// them. Tolerate a missing `path` so we degrade to the current behavior if the SDK stops populating
|
|
40
|
+
// it, rather than silently regressing to `error`.
|
|
41
|
+
if (errors?.length) {
|
|
42
|
+
return errors.some((e) => e.type === 'NOT_FOUND' && (e.path == null || e.path.includes('repository')));
|
|
43
|
+
}
|
|
44
|
+
return repoNotFoundMessage.test(ex.message);
|
|
45
|
+
}
|
|
46
|
+
// GitLab's `getRepo` throws a plain Error; match its not-found message specifically so unrelated
|
|
47
|
+
// bare Errors (network/parse failures) still reach the generic error bucket.
|
|
48
|
+
return ex instanceof Error && repoNotFoundMessage.test(ex.message);
|
|
49
|
+
}
|
|
50
|
+
const trelloBaseUrl = 'https://api.trello.com';
|
|
51
|
+
function getTrelloAuthHeaders(appKey, token) {
|
|
52
|
+
return {
|
|
53
|
+
Authorization: `OAuth oauth_consumer_key="${appKey}", oauth_token="${token}"`,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function getTrelloMemberAvatarUrl(member) {
|
|
57
|
+
if (member.avatarUrl != null)
|
|
58
|
+
return member.avatarUrl;
|
|
59
|
+
if (member.avatarHash == null)
|
|
60
|
+
return null;
|
|
61
|
+
return `https://trello-members.s3.amazonaws.com/${member.id}/${member.avatarHash}/50.png`;
|
|
62
|
+
}
|
|
63
|
+
function fromTrelloCard(card, trelloBoardListsById) {
|
|
64
|
+
const createdDate = new Date(1000 * parseInt(card.id.substring(0, 8), 16));
|
|
65
|
+
const list = card.idList != null ? trelloBoardListsById[card.idList] : undefined;
|
|
66
|
+
return {
|
|
67
|
+
id: card.id,
|
|
68
|
+
commentCount: card.badges?.comments ?? null,
|
|
69
|
+
number: String(card.idShort),
|
|
70
|
+
title: card.name,
|
|
71
|
+
url: card.url,
|
|
72
|
+
closedDate: null,
|
|
73
|
+
createdDate: new Date(createdDate.toISOString()),
|
|
74
|
+
author: null,
|
|
75
|
+
updatedDate: new Date(card.dateLastActivity),
|
|
76
|
+
assignees: (card.members ?? []).map(member => ({
|
|
77
|
+
id: member.id,
|
|
78
|
+
username: member.username ?? null,
|
|
79
|
+
name: member.fullName ?? null,
|
|
80
|
+
email: null,
|
|
81
|
+
avatarUrl: getTrelloMemberAvatarUrl(member),
|
|
82
|
+
url: null,
|
|
83
|
+
})),
|
|
84
|
+
description: null,
|
|
85
|
+
state: list != null ? { id: card.idList, name: list.name, color: null } : null,
|
|
86
|
+
type: null,
|
|
87
|
+
repository: null,
|
|
88
|
+
upvoteCount: card.badges?.votes ?? null,
|
|
89
|
+
labels: (card.labels ?? []).map(label => ({
|
|
90
|
+
color: label.color,
|
|
91
|
+
description: null,
|
|
92
|
+
id: label.id,
|
|
93
|
+
name: label.name,
|
|
94
|
+
})),
|
|
95
|
+
};
|
|
96
|
+
}
|
|
8
97
|
export class ProvidersApi {
|
|
9
98
|
authenticationService;
|
|
10
99
|
providers;
|
|
100
|
+
request;
|
|
11
101
|
constructor(authenticationService) {
|
|
12
102
|
this.authenticationService = authenticationService;
|
|
13
103
|
const http = authenticationService.ctx.http;
|
|
@@ -22,23 +112,32 @@ export class ProvidersApi {
|
|
|
22
112
|
});
|
|
23
113
|
return parseFetchResponseForApi(response);
|
|
24
114
|
};
|
|
115
|
+
this.request = customFetch;
|
|
25
116
|
const providerApis = createProviderApis({ request: customFetch });
|
|
26
117
|
this.providers = {
|
|
27
118
|
[GitCloudHostIntegrationId.GitHub]: {
|
|
28
119
|
...providersMetadata[GitCloudHostIntegrationId.GitHub],
|
|
29
120
|
provider: providerApis.github,
|
|
121
|
+
getRepoFn: providerApis.github.getRepo.bind(providerApis.github),
|
|
30
122
|
getCurrentUserFn: providerApis.github.getCurrentUser.bind(providerApis.github),
|
|
31
123
|
getPullRequestsForReposFn: providerApis.github.getPullRequestsForRepos.bind(providerApis.github),
|
|
32
124
|
getPullRequestsForUserFn: providerApis.github.getPullRequestsAssociatedWithUser.bind(providerApis.github),
|
|
33
125
|
getIssuesForReposFn: providerApis.github.getIssuesForRepos.bind(providerApis.github),
|
|
126
|
+
getOrgsForCurrentUserFn: providerApis.github.getOrgsForCurrentUser.bind(providerApis.github),
|
|
127
|
+
getReposForOrgFn: providerApis.github.getReposForOrg.bind(providerApis.github),
|
|
128
|
+
getReposForCurrentUserFn: providerApis.github.getReposForCurrentUser.bind(providerApis.github),
|
|
34
129
|
},
|
|
35
130
|
[GitSelfManagedHostIntegrationId.CloudGitHubEnterprise]: {
|
|
36
131
|
...providersMetadata[GitSelfManagedHostIntegrationId.CloudGitHubEnterprise],
|
|
37
132
|
provider: providerApis.github,
|
|
133
|
+
getRepoFn: providerApis.github.getRepo.bind(providerApis.github),
|
|
38
134
|
getCurrentUserFn: providerApis.github.getCurrentUser.bind(providerApis.github),
|
|
39
135
|
getPullRequestsForReposFn: providerApis.github.getPullRequestsForRepos.bind(providerApis.github),
|
|
40
136
|
getPullRequestsForUserFn: providerApis.github.getPullRequestsAssociatedWithUser.bind(providerApis.github),
|
|
41
137
|
getIssuesForReposFn: providerApis.github.getIssuesForRepos.bind(providerApis.github),
|
|
138
|
+
getOrgsForCurrentUserFn: providerApis.github.getOrgsForCurrentUser.bind(providerApis.github),
|
|
139
|
+
getReposForOrgFn: providerApis.github.getReposForOrg.bind(providerApis.github),
|
|
140
|
+
getReposForCurrentUserFn: providerApis.github.getReposForCurrentUser.bind(providerApis.github),
|
|
42
141
|
},
|
|
43
142
|
[GitCloudHostIntegrationId.GitLab]: {
|
|
44
143
|
...providersMetadata[GitCloudHostIntegrationId.GitLab],
|
|
@@ -48,32 +147,43 @@ export class ProvidersApi {
|
|
|
48
147
|
getPullRequestsForReposFn: providerApis.gitlab.getPullRequestsForRepos.bind(providerApis.gitlab),
|
|
49
148
|
getPullRequestsForRepoFn: providerApis.gitlab.getPullRequestsForRepo.bind(providerApis.gitlab),
|
|
50
149
|
getPullRequestsForUserFn: providerApis.gitlab.getPullRequestsAssociatedWithUser.bind(providerApis.gitlab),
|
|
150
|
+
getGitLabPullRequestsForUserAssociationFn: providerApis.gitlab.getPullRequestsForUser.bind(providerApis.gitlab),
|
|
51
151
|
getIssueFn: providerApis.gitlab.getIssue.bind(providerApis.gitlab),
|
|
52
152
|
getIssuesForReposFn: providerApis.gitlab.getIssuesForRepos.bind(providerApis.gitlab),
|
|
53
153
|
getIssuesForRepoFn: providerApis.gitlab.getIssuesForRepo.bind(providerApis.gitlab),
|
|
154
|
+
getIssuesForCurrentUserFn: providerApis.gitlab.getIssuesForCurrentUser.bind(providerApis.gitlab),
|
|
54
155
|
mergePullRequestFn: providerApis.gitlab.mergePullRequest.bind(providerApis.gitlab),
|
|
156
|
+
getGroupsForCurrentUserFn: providerApis.gitlab.getGroupsForCurrentUser.bind(providerApis.gitlab),
|
|
157
|
+
getReposForCurrentUserFn: providerApis.gitlab.getReposForCurrentUser.bind(providerApis.gitlab),
|
|
55
158
|
},
|
|
56
159
|
[GitSelfManagedHostIntegrationId.CloudGitLabSelfHosted]: {
|
|
57
160
|
...providersMetadata[GitSelfManagedHostIntegrationId.CloudGitLabSelfHosted],
|
|
58
161
|
provider: providerApis.gitlab,
|
|
162
|
+
getRepoFn: providerApis.gitlab.getRepo.bind(providerApis.gitlab),
|
|
59
163
|
getCurrentUserFn: providerApis.gitlab.getCurrentUser.bind(providerApis.gitlab),
|
|
60
164
|
getPullRequestsForReposFn: providerApis.gitlab.getPullRequestsForRepos.bind(providerApis.gitlab),
|
|
61
165
|
getPullRequestsForRepoFn: providerApis.gitlab.getPullRequestsForRepo.bind(providerApis.gitlab),
|
|
62
166
|
getPullRequestsForUserFn: providerApis.gitlab.getPullRequestsAssociatedWithUser.bind(providerApis.gitlab),
|
|
167
|
+
getGitLabPullRequestsForUserAssociationFn: providerApis.gitlab.getPullRequestsForUser.bind(providerApis.gitlab),
|
|
63
168
|
getIssueFn: providerApis.gitlab.getIssue.bind(providerApis.gitlab),
|
|
64
169
|
getIssuesForReposFn: providerApis.gitlab.getIssuesForRepos.bind(providerApis.gitlab),
|
|
65
170
|
getIssuesForRepoFn: providerApis.gitlab.getIssuesForRepo.bind(providerApis.gitlab),
|
|
171
|
+
getIssuesForCurrentUserFn: providerApis.gitlab.getIssuesForCurrentUser.bind(providerApis.gitlab),
|
|
66
172
|
mergePullRequestFn: providerApis.gitlab.mergePullRequest.bind(providerApis.gitlab),
|
|
173
|
+
getGroupsForCurrentUserFn: providerApis.gitlab.getGroupsForCurrentUser.bind(providerApis.gitlab),
|
|
174
|
+
getReposForCurrentUserFn: providerApis.gitlab.getReposForCurrentUser.bind(providerApis.gitlab),
|
|
67
175
|
},
|
|
68
176
|
[GitCloudHostIntegrationId.Bitbucket]: {
|
|
69
177
|
...providersMetadata[GitCloudHostIntegrationId.Bitbucket],
|
|
70
178
|
provider: providerApis.bitbucket,
|
|
179
|
+
getRepoFn: providerApis.bitbucket.getRepo.bind(providerApis.bitbucket),
|
|
71
180
|
getCurrentUserFn: providerApis.bitbucket.getCurrentUser.bind(providerApis.bitbucket),
|
|
72
181
|
getBitbucketResourcesForCurrentUserFn: providerApis.bitbucket.getWorkspacesForCurrentUser.bind(providerApis.bitbucket),
|
|
73
182
|
getBitbucketPullRequestsAuthoredByUserForWorkspaceFn: providerApis.bitbucket.getPullRequestsForUserAndWorkspace.bind(providerApis.bitbucket),
|
|
74
183
|
getPullRequestsForReposFn: providerApis.bitbucket.getPullRequestsForRepos.bind(providerApis.bitbucket),
|
|
75
184
|
getPullRequestsForRepoFn: providerApis.bitbucket.getPullRequestsForRepo.bind(providerApis.bitbucket),
|
|
76
185
|
mergePullRequestFn: providerApis.bitbucket.mergePullRequest.bind(providerApis.bitbucket),
|
|
186
|
+
getReposForWorkspaceFn: providerApis.bitbucket.getReposForWorkspace.bind(providerApis.bitbucket),
|
|
77
187
|
},
|
|
78
188
|
[GitSelfManagedHostIntegrationId.BitbucketServer]: {
|
|
79
189
|
...providersMetadata[GitSelfManagedHostIntegrationId.BitbucketServer],
|
|
@@ -96,6 +206,7 @@ export class ProvidersApi {
|
|
|
96
206
|
getPullRequestsForReposFn: providerApis.azureDevOps.getPullRequestsForRepos.bind(providerApis.azureDevOps),
|
|
97
207
|
getPullRequestsForRepoFn: providerApis.azureDevOps.getPullRequestsForRepo.bind(providerApis.azureDevOps),
|
|
98
208
|
getPullRequestsForAzureProjectsFn: providerApis.azureDevOps.getPullRequestsForProjects.bind(providerApis.azureDevOps),
|
|
209
|
+
getPullRequestsForAzureProjectFn: providerApis.azureDevOps.getPullRequestsForProject.bind(providerApis.azureDevOps),
|
|
99
210
|
getIssuesForAzureProjectFn: providerApis.azureDevOps.getIssuesForAzureProject.bind(providerApis.azureDevOps),
|
|
100
211
|
getReposForAzureProjectFn: providerApis.azureDevOps.getReposForAzureProject.bind(providerApis.azureDevOps),
|
|
101
212
|
mergePullRequestFn: providerApis.azureDevOps.mergePullRequest.bind(providerApis.azureDevOps),
|
|
@@ -111,6 +222,7 @@ export class ProvidersApi {
|
|
|
111
222
|
getPullRequestsForReposFn: providerApis.azureDevOps.getPullRequestsForRepos.bind(providerApis.azureDevOps),
|
|
112
223
|
getPullRequestsForRepoFn: providerApis.azureDevOps.getPullRequestsForRepo.bind(providerApis.azureDevOps),
|
|
113
224
|
getPullRequestsForAzureProjectsFn: providerApis.azureDevOps.getPullRequestsForProjects.bind(providerApis.azureDevOps),
|
|
225
|
+
getPullRequestsForAzureProjectFn: providerApis.azureDevOps.getPullRequestsForProject.bind(providerApis.azureDevOps),
|
|
114
226
|
getIssuesForAzureProjectFn: providerApis.azureDevOps.getIssuesForAzureProject.bind(providerApis.azureDevOps),
|
|
115
227
|
getReposForAzureProjectFn: providerApis.azureDevOps.getReposForAzureProject.bind(providerApis.azureDevOps),
|
|
116
228
|
mergePullRequestFn: providerApis.azureDevOps.mergePullRequest.bind(providerApis.azureDevOps),
|
|
@@ -121,6 +233,7 @@ export class ProvidersApi {
|
|
|
121
233
|
getCurrentUserForResourceFn: providerApis.jira.getCurrentUserForResource.bind(providerApis.jira),
|
|
122
234
|
getJiraResourcesForCurrentUserFn: providerApis.jira.getJiraResourcesForCurrentUser.bind(providerApis.jira),
|
|
123
235
|
getJiraProjectsForResourcesFn: providerApis.jira.getJiraProjectsForResources.bind(providerApis.jira),
|
|
236
|
+
getJiraProjectsForResourceFn: providerApis.jira.getJiraProjectsForResource.bind(providerApis.jira),
|
|
124
237
|
getIssueFn: providerApis.jira.getIssue.bind(providerApis.jira),
|
|
125
238
|
getIssuesForProjectFn: providerApis.jira.getIssuesForProject.bind(providerApis.jira),
|
|
126
239
|
getIssuesForResourceForCurrentUserFn: providerApis.jira.getIssuesForResourceForCurrentUser.bind(providerApis.jira),
|
|
@@ -132,10 +245,18 @@ export class ProvidersApi {
|
|
|
132
245
|
getIssuesForCurrentUserFn: providerApis.linear.getIssuesForCurrentUser.bind(providerApis.linear),
|
|
133
246
|
getLinearOrganizationFn: providerApis.linear.getLinearOrganization.bind(providerApis.linear),
|
|
134
247
|
getLinearTeamsForCurrentUserFn: providerApis.linear.getTeamsForCurrentUser.bind(providerApis.linear),
|
|
248
|
+
getLinearIssuesFn: providerApis.linear.getIssues.bind(providerApis.linear),
|
|
249
|
+
getLinearCurrentUserFn: providerApis.linear.getCurrentUser.bind(providerApis.linear),
|
|
135
250
|
},
|
|
136
251
|
[IssuesCloudHostIntegrationId.Trello]: {
|
|
137
252
|
...providersMetadata[IssuesCloudHostIntegrationId.Trello],
|
|
138
253
|
provider: providerApis.trello,
|
|
254
|
+
getTrelloCurrentUserFn: providerApis.trello.getCurrentUser.bind(providerApis.trello),
|
|
255
|
+
getTrelloBoardsForCurrentUserFn: providerApis.trello.getBoardsForCurrentUser.bind(providerApis.trello),
|
|
256
|
+
getTrelloListsForBoardFn: providerApis.trello.getListsForTrelloBoard.bind(providerApis.trello),
|
|
257
|
+
getTrelloAccountForIdFn: providerApis.trello.getAccountForId.bind(providerApis.trello),
|
|
258
|
+
getTrelloIssuesForBoardFn: providerApis.trello.getIssuesForBoard.bind(providerApis.trello),
|
|
259
|
+
getTrelloLabelsForBoardFn: providerApis.trello.getLabelsForBoard.bind(providerApis.trello),
|
|
139
260
|
},
|
|
140
261
|
};
|
|
141
262
|
}
|
|
@@ -165,7 +286,12 @@ export class ProvidersApi {
|
|
|
165
286
|
input.every((id) => typeof id === 'string' || typeof id === 'number'));
|
|
166
287
|
}
|
|
167
288
|
async getProviderToken(provider, options) {
|
|
168
|
-
|
|
289
|
+
// When a specific connection is requested, resolve that connection's cloud session (mirroring
|
|
290
|
+
// `Integration.resolveReadSession`); otherwise keep the plain descriptor so the primary is resolved.
|
|
291
|
+
// An empty string is not a real target, so it must also fall through to the primary path.
|
|
292
|
+
const providerDescriptor = options?.connectionId
|
|
293
|
+
? { domain: provider.domain, scopes: provider.scopes, connectionId: options.connectionId, cloud: true }
|
|
294
|
+
: { domain: provider.domain, scopes: provider.scopes };
|
|
169
295
|
try {
|
|
170
296
|
const authProvider = await this.authenticationService.get(provider.id);
|
|
171
297
|
const session = await authProvider.getSession(providerDescriptor, {
|
|
@@ -183,7 +309,7 @@ export class ProvidersApi {
|
|
|
183
309
|
getAzurePATForOAuthToken(oauthToken) {
|
|
184
310
|
return base64(`PAT:${oauthToken}`);
|
|
185
311
|
}
|
|
186
|
-
async
|
|
312
|
+
async ensureProviderToken(tokenOptInfo) {
|
|
187
313
|
const providerId = tokenOptInfo.providerId;
|
|
188
314
|
const provider = this.providers[providerId];
|
|
189
315
|
if (provider == null) {
|
|
@@ -192,12 +318,20 @@ export class ProvidersApi {
|
|
|
192
318
|
if (providerId !== provider.id) {
|
|
193
319
|
throw new Error(`Provider id mismatch: expected ${providerId} but got ${provider.id}`);
|
|
194
320
|
}
|
|
321
|
+
const connectionId = 'connectionId' in tokenOptInfo ? tokenOptInfo.connectionId : undefined;
|
|
195
322
|
const tokenWithInfo = tokenOptInfo?.accessToken
|
|
196
323
|
? tokenOptInfo
|
|
197
|
-
: await this.getProviderToken(provider
|
|
324
|
+
: await this.getProviderToken(provider, {
|
|
325
|
+
connectionId: connectionId,
|
|
326
|
+
});
|
|
198
327
|
if (tokenWithInfo == null) {
|
|
199
328
|
throw new Error(`Not connected to provider ${providerId}`);
|
|
200
329
|
}
|
|
330
|
+
return { provider: provider, tokenWithInfo: tokenWithInfo };
|
|
331
|
+
}
|
|
332
|
+
async ensureProviderTokenAndFunction(tokenOptInfo, providerFn) {
|
|
333
|
+
const { provider, tokenWithInfo } = await this.ensureProviderToken(tokenOptInfo);
|
|
334
|
+
const providerId = tokenOptInfo.providerId;
|
|
201
335
|
if (provider[providerFn] == null) {
|
|
202
336
|
throw new Error(`Provider with id ${providerId} does not support function: ${providerFn}`);
|
|
203
337
|
}
|
|
@@ -211,40 +345,25 @@ export class ProvidersApi {
|
|
|
211
345
|
throw new Error(`Provider with id ${providerId} not registered`);
|
|
212
346
|
}
|
|
213
347
|
if (error?.response?.status != null) {
|
|
214
|
-
|
|
348
|
+
const status = error.response.status;
|
|
349
|
+
switch (status) {
|
|
215
350
|
case 404: // Not found
|
|
216
351
|
case 410: // Gone
|
|
217
352
|
case 422: // Unprocessable Entity
|
|
218
353
|
throw new RequestNotFoundError(error);
|
|
354
|
+
case 429: // Too Many Requests
|
|
355
|
+
throw toRateLimitError(error, token);
|
|
219
356
|
case 401: // Unauthorized
|
|
220
|
-
if (error.message?.includes('rate limit')) {
|
|
221
|
-
let resetAt;
|
|
222
|
-
const reset = error.response?.headers?.['x-ratelimit-reset'];
|
|
223
|
-
if (reset != null) {
|
|
224
|
-
resetAt = parseInt(reset, 10);
|
|
225
|
-
if (Number.isNaN(resetAt)) {
|
|
226
|
-
resetAt = undefined;
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
throw new RequestRateLimitError(error, token, resetAt);
|
|
230
|
-
}
|
|
231
|
-
throw new AuthenticationError(tokenInfo, AuthenticationErrorReason.Unauthorized, error);
|
|
232
357
|
case 403: // Forbidden
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
//
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
if (reset != null) {
|
|
239
|
-
resetAt = parseInt(reset, 10);
|
|
240
|
-
if (Number.isNaN(resetAt)) {
|
|
241
|
-
resetAt = undefined;
|
|
242
|
-
}
|
|
358
|
+
// A throttled request arrives on both statuses depending on the host (see
|
|
359
|
+
// `isRateLimitResponse`); 403 previously skipped the check, so every provider going through the
|
|
360
|
+
// SDK reported a rate limit as `auth` and asked the user to reconnect a healthy account.
|
|
361
|
+
if (isRateLimitResponse({ status: status, message: error.message })) {
|
|
362
|
+
throw toRateLimitError(error, token);
|
|
243
363
|
}
|
|
244
|
-
throw new
|
|
245
|
-
}
|
|
364
|
+
throw new AuthenticationError(tokenInfo, status === 401 ? AuthenticationErrorReason.Unauthorized : AuthenticationErrorReason.Forbidden, error);
|
|
246
365
|
default:
|
|
247
|
-
if (
|
|
366
|
+
if (status >= 400 && status < 500) {
|
|
248
367
|
throw new RequestClientError(error);
|
|
249
368
|
}
|
|
250
369
|
}
|
|
@@ -261,16 +380,30 @@ export class ProvidersApi {
|
|
|
261
380
|
}
|
|
262
381
|
const cursorValue = cursorInfo.value;
|
|
263
382
|
const cursorType = cursorInfo.type;
|
|
383
|
+
// An explicit numbered `page` request wins over a page-typed cursor; otherwise follow the cursor. A
|
|
384
|
+
// live cursor-typed cursor still takes precedence so an in-flight continuation is never clobbered.
|
|
385
|
+
const requestedPage = typeof args?.page === 'number' ? args.page : undefined;
|
|
386
|
+
const requestedPageSize = typeof args?.pageSize === 'number' ? args.pageSize : undefined;
|
|
264
387
|
let cursorOrPage = {};
|
|
265
|
-
if (cursorType
|
|
388
|
+
if (requestedPage != null && cursorType !== 'cursor') {
|
|
389
|
+
cursorOrPage = { page: requestedPage };
|
|
390
|
+
}
|
|
391
|
+
else if (cursorType === 'page') {
|
|
266
392
|
cursorOrPage = { page: cursorValue };
|
|
267
393
|
}
|
|
268
394
|
else if (cursorType === 'cursor') {
|
|
269
395
|
cursorOrPage = { cursor: cursorValue };
|
|
270
396
|
}
|
|
397
|
+
// Strip the caller's paging keys so `getPagedResult` fully controls them; otherwise `args.page` could
|
|
398
|
+
// survive alongside a resolved `cursor` (or the raw serialized wrapper `args.cursor` could leak in when
|
|
399
|
+
// following a page), letting the provider clobber the continuation we intended.
|
|
400
|
+
const { page: _page, pageSize: _pageSize, cursor: _cursor, ...restArgs } = args ?? {};
|
|
271
401
|
const input = {
|
|
272
|
-
...
|
|
402
|
+
...restArgs,
|
|
273
403
|
...cursorOrPage,
|
|
404
|
+
// `pageSize` is honored by numbered providers; GitHub reads `maxPageSize`. Set both so whichever
|
|
405
|
+
// the resolved provider understands takes effect; the other is ignored.
|
|
406
|
+
...(requestedPageSize != null ? { pageSize: requestedPageSize, maxPageSize: requestedPageSize } : {}),
|
|
274
407
|
};
|
|
275
408
|
try {
|
|
276
409
|
const result = await providerFn?.(input, {
|
|
@@ -279,22 +412,46 @@ export class ProvidersApi {
|
|
|
279
412
|
baseUrl: baseUrl,
|
|
280
413
|
});
|
|
281
414
|
if (result == null) {
|
|
282
|
-
|
|
415
|
+
const continuationWasRequested = (cursor != null && cursor !== '{}') || (requestedPage != null && requestedPage > 1);
|
|
416
|
+
return continuationWasRequested
|
|
417
|
+
? {
|
|
418
|
+
values: [],
|
|
419
|
+
paging: { cursor: '{}', more: false, truncated: true },
|
|
420
|
+
metadata: { completeness: 'partial' },
|
|
421
|
+
}
|
|
422
|
+
: { values: [] };
|
|
283
423
|
}
|
|
284
|
-
const
|
|
424
|
+
const pageInfo = result.pageInfo;
|
|
425
|
+
const hasMore = pageInfo?.hasNextPage ?? false;
|
|
285
426
|
let nextCursor = '{}';
|
|
286
|
-
if (
|
|
287
|
-
nextCursor = JSON.stringify({ value:
|
|
427
|
+
if (pageInfo?.endCursor != null) {
|
|
428
|
+
nextCursor = JSON.stringify({ value: pageInfo.endCursor, type: 'cursor' });
|
|
288
429
|
}
|
|
289
|
-
else if (
|
|
290
|
-
nextCursor = JSON.stringify({ value:
|
|
430
|
+
else if (pageInfo?.nextPage != null) {
|
|
431
|
+
nextCursor = JSON.stringify({ value: pageInfo.nextPage, type: 'page' });
|
|
291
432
|
}
|
|
433
|
+
const continuationBroken = hasMore && (nextCursor === '{}' || nextCursor === cursor);
|
|
434
|
+
const normalizedMetadata = mergeCollectionMetadata(result.metadata, continuationBroken ? { completeness: 'partial' } : undefined);
|
|
435
|
+
// SDK collection completeness is independent from provider-native pagination: a result can expose a
|
|
436
|
+
// real next page (`more`) and still have a failed sibling scope (`partial`/`unknown`). Surface the
|
|
437
|
+
// latter as `truncated` so consumers treat the page as incomplete. Absent metadata (old providers,
|
|
438
|
+
// test doubles) leaves `truncated` unset for backward compatibility.
|
|
439
|
+
const truncated = normalizedMetadata != null && normalizedMetadata.completeness !== 'complete' ? true : undefined;
|
|
292
440
|
return {
|
|
293
441
|
values: result.data,
|
|
294
442
|
paging: {
|
|
295
443
|
cursor: nextCursor,
|
|
296
|
-
more: hasMore,
|
|
444
|
+
more: hasMore && !continuationBroken,
|
|
445
|
+
truncated: truncated,
|
|
446
|
+
// Numbered-page metadata; left undefined by cursor-based providers (which don't report a
|
|
447
|
+
// currentPage), so we never echo the requested page for a provider that ignored it.
|
|
448
|
+
page: pageInfo?.currentPage ?? undefined,
|
|
449
|
+
pageSize: requestedPageSize,
|
|
450
|
+
nextPage: pageInfo?.nextPage ?? undefined,
|
|
451
|
+
totalPages: pageInfo?.totalPages ?? undefined,
|
|
452
|
+
totalCount: pageInfo?.totalCount ?? undefined,
|
|
297
453
|
},
|
|
454
|
+
metadata: normalizedMetadata,
|
|
298
455
|
};
|
|
299
456
|
}
|
|
300
457
|
catch (e) {
|
|
@@ -303,7 +460,11 @@ export class ProvidersApi {
|
|
|
303
460
|
}
|
|
304
461
|
async getRepo(tokenOptInfo, owner, name, project, options) {
|
|
305
462
|
const providerId = tokenOptInfo.providerId;
|
|
306
|
-
|
|
463
|
+
const isAzureDevOps = providerId === GitCloudHostIntegrationId.AzureDevOps ||
|
|
464
|
+
providerId === GitSelfManagedHostIntegrationId.AzureDevOpsServer;
|
|
465
|
+
if (isAzureDevOps) {
|
|
466
|
+
if (project == null)
|
|
467
|
+
return undefined;
|
|
307
468
|
const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getRepoOfProjectFn');
|
|
308
469
|
const token = tokenWithInfo.accessToken;
|
|
309
470
|
try {
|
|
@@ -311,6 +472,8 @@ export class ProvidersApi {
|
|
|
311
472
|
return result?.data;
|
|
312
473
|
}
|
|
313
474
|
catch (e) {
|
|
475
|
+
if (isGraphQLRepoNotFoundError(e))
|
|
476
|
+
throw new RequestNotFoundError(toError(e));
|
|
314
477
|
return this.handleProviderError(tokenWithInfo, e);
|
|
315
478
|
}
|
|
316
479
|
}
|
|
@@ -322,6 +485,8 @@ export class ProvidersApi {
|
|
|
322
485
|
return result?.data;
|
|
323
486
|
}
|
|
324
487
|
catch (e) {
|
|
488
|
+
if (isGraphQLRepoNotFoundError(e))
|
|
489
|
+
throw new RequestNotFoundError(toError(e));
|
|
325
490
|
return this.handleProviderError(tokenWithInfo, e);
|
|
326
491
|
}
|
|
327
492
|
}
|
|
@@ -383,41 +548,89 @@ export class ProvidersApi {
|
|
|
383
548
|
return this.handleProviderError(tokenWithInfo, e);
|
|
384
549
|
}
|
|
385
550
|
}
|
|
386
|
-
|
|
387
|
-
|
|
551
|
+
/**
|
|
552
|
+
* Reads issues scoped to Linear teams/projects/labels (Linear's issue-list filter). One page per call —
|
|
553
|
+
* follow `paging.cursor`. Linear's `getIssues` has no author/assignee filter, so per-user scoping is
|
|
554
|
+
* applied client-side by the caller.
|
|
555
|
+
*/
|
|
556
|
+
async getLinearIssues(tokenOptInfo, input, options) {
|
|
557
|
+
const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getLinearIssuesFn');
|
|
558
|
+
return this.getPagedResult({ ...input, ...options }, provider.getLinearIssuesFn, tokenWithInfo, options?.cursor ?? undefined);
|
|
559
|
+
}
|
|
560
|
+
/** Resolves Linear's current user (viewer). The viewer query returns only id/name/email/displayName. */
|
|
561
|
+
async getLinearCurrentUser(tokenOptInfo) {
|
|
562
|
+
const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getLinearCurrentUserFn');
|
|
388
563
|
const token = tokenWithInfo.accessToken;
|
|
389
564
|
try {
|
|
390
|
-
return (await provider.
|
|
565
|
+
return (await provider.getLinearCurrentUserFn?.({ token: token }))?.data;
|
|
391
566
|
}
|
|
392
567
|
catch (e) {
|
|
393
568
|
return this.handleProviderError(tokenWithInfo, e);
|
|
394
569
|
}
|
|
395
570
|
}
|
|
396
|
-
async
|
|
397
|
-
const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, '
|
|
571
|
+
async getAzureResourcesForUser(tokenOptInfo, userId, options) {
|
|
572
|
+
const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getAzureResourcesForUserFn');
|
|
398
573
|
const token = tokenWithInfo.accessToken;
|
|
399
574
|
try {
|
|
400
|
-
return (await provider.
|
|
575
|
+
return (await provider.getAzureResourcesForUserFn?.({ userId: userId }, { token: token, isPAT: options?.isPAT, baseUrl: options?.baseUrl }))?.data;
|
|
401
576
|
}
|
|
402
577
|
catch (e) {
|
|
403
578
|
return this.handleProviderError(tokenWithInfo, e);
|
|
404
579
|
}
|
|
405
580
|
}
|
|
406
|
-
async
|
|
581
|
+
async getBitbucketResourcesForCurrentUser(tokenOptInfo) {
|
|
582
|
+
const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getBitbucketResourcesForCurrentUserFn');
|
|
583
|
+
const token = tokenWithInfo.accessToken;
|
|
584
|
+
// Drain every workspace page (numbered): the SDK returns 50 per page, and a user in more than one page
|
|
585
|
+
// of workspaces would otherwise silently lose the rest (with them, their orgs/PRs). A scoped drain keeps
|
|
586
|
+
// a successful prefix plus structured failure metadata when a later page fails.
|
|
587
|
+
const result = await collectProviderPagedResult(async (cursor) => {
|
|
588
|
+
try {
|
|
589
|
+
const page = parsePageCursor(cursor);
|
|
590
|
+
const response = await provider.getBitbucketResourcesForCurrentUserFn?.({ page: page }, { token: token });
|
|
591
|
+
if (response == null)
|
|
592
|
+
return undefined;
|
|
593
|
+
const hasMore = response.pageInfo?.hasNextPage === true;
|
|
594
|
+
const nextPage = response.pageInfo?.nextPage;
|
|
595
|
+
return {
|
|
596
|
+
values: response.data,
|
|
597
|
+
paging: {
|
|
598
|
+
more: hasMore,
|
|
599
|
+
cursor: hasMore && nextPage != null ? toPageCursor(nextPage) : '{}',
|
|
600
|
+
},
|
|
601
|
+
};
|
|
602
|
+
}
|
|
603
|
+
catch (ex) {
|
|
604
|
+
return this.handleProviderError(tokenWithInfo, ex);
|
|
605
|
+
}
|
|
606
|
+
}, 20, { providerId: tokenWithInfo.providerId });
|
|
607
|
+
return {
|
|
608
|
+
values: result.values,
|
|
609
|
+
paging: { cursor: '{}', more: false, ...(result.truncated ? { truncated: true } : {}) },
|
|
610
|
+
...(result.metadata != null ? { metadata: result.metadata } : {}),
|
|
611
|
+
};
|
|
612
|
+
}
|
|
613
|
+
async getBitbucketPullRequestsAuthoredByUserForWorkspace(tokenOptInfo, userId, workspaceSlug, options) {
|
|
407
614
|
const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getBitbucketPullRequestsAuthoredByUserForWorkspaceFn');
|
|
408
615
|
const token = tokenWithInfo.accessToken;
|
|
409
616
|
try {
|
|
410
|
-
|
|
617
|
+
const result = await provider.getBitbucketPullRequestsAuthoredByUserForWorkspaceFn?.({ userId: userId, workspaceSlug: workspaceSlug, states: options?.states, page: options?.page }, { token: token });
|
|
618
|
+
if (result == null)
|
|
619
|
+
return undefined;
|
|
620
|
+
return { data: result.data, hasMore: result.pageInfo.hasNextPage, nextPage: result.pageInfo.nextPage };
|
|
411
621
|
}
|
|
412
622
|
catch (e) {
|
|
413
623
|
return this.handleProviderError(tokenWithInfo, e);
|
|
414
624
|
}
|
|
415
625
|
}
|
|
416
|
-
async getBitbucketServerPullRequestsForCurrentUser(tokenOptInfo, baseUrl) {
|
|
626
|
+
async getBitbucketServerPullRequestsForCurrentUser(tokenOptInfo, baseUrl, options) {
|
|
417
627
|
const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getBitbucketServerPullRequestsForCurrentUserFn');
|
|
418
628
|
const token = tokenWithInfo.accessToken;
|
|
419
629
|
try {
|
|
420
|
-
|
|
630
|
+
const result = await provider.getBitbucketServerPullRequestsForCurrentUserFn?.({ states: options?.states, page: options?.page }, { token: token, baseUrl: baseUrl });
|
|
631
|
+
if (result == null)
|
|
632
|
+
return undefined;
|
|
633
|
+
return { data: result.data, hasMore: result.pageInfo.hasNextPage, nextPage: result.pageInfo.nextPage };
|
|
421
634
|
}
|
|
422
635
|
catch (e) {
|
|
423
636
|
return this.handleProviderError(tokenWithInfo, e);
|
|
@@ -427,13 +640,19 @@ export class ProvidersApi {
|
|
|
427
640
|
const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getJiraProjectsForResourcesFn');
|
|
428
641
|
const token = tokenWithInfo.accessToken;
|
|
429
642
|
try {
|
|
430
|
-
|
|
431
|
-
|
|
643
|
+
const result = await provider.getJiraProjectsForResourcesFn?.({ resourceIds: resourceIds }, { token: token });
|
|
644
|
+
// Preserve the SDK's per-resource completeness/failures instead of collapsing to a bare array, so the
|
|
645
|
+
// Jira integration can cache only proven-successful resources and warn on the failed ones.
|
|
646
|
+
return { values: result?.data ?? [], metadata: result?.metadata };
|
|
432
647
|
}
|
|
433
648
|
catch (e) {
|
|
434
649
|
return this.handleProviderError(tokenWithInfo, e);
|
|
435
650
|
}
|
|
436
651
|
}
|
|
652
|
+
async getJiraProjectsForResource(tokenOptInfo, resourceId, options) {
|
|
653
|
+
const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getJiraProjectsForResourceFn');
|
|
654
|
+
return this.getPagedResult({ resourceId: resourceId }, provider.getJiraProjectsForResourceFn, tokenWithInfo, options?.cursor);
|
|
655
|
+
}
|
|
437
656
|
async getAzureProjectsForResource(tokenOptInfo, namespace, options) {
|
|
438
657
|
const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getAzureProjectsForResourceFn');
|
|
439
658
|
const token = tokenWithInfo.accessToken;
|
|
@@ -450,6 +669,44 @@ export class ProvidersApi {
|
|
|
450
669
|
const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getReposForAzureProjectFn');
|
|
451
670
|
return this.getPagedResult({ namespace: namespace, project: project, ...options }, provider.getReposForAzureProjectFn, tokenWithInfo, options?.cursor, options?.isPAT, options?.baseUrl);
|
|
452
671
|
}
|
|
672
|
+
async getGitHubOrgsForCurrentUser(tokenOptInfo, options) {
|
|
673
|
+
const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getOrgsForCurrentUserFn');
|
|
674
|
+
// Drain all pages so a user in many orgs doesn't lose everything past the first page, while
|
|
675
|
+
// surfacing `truncated` when the defensive backstop stops before the listing is exhausted.
|
|
676
|
+
const result = await collectProviderPagedResult(cursor => this.getPagedResult({}, provider.getOrgsForCurrentUserFn, tokenWithInfo, cursor, options?.isPAT, options?.baseUrl), 20, { providerId: tokenWithInfo.providerId });
|
|
677
|
+
// This method drains internally and takes no cursor, so a backstop cursor isn't resumable by
|
|
678
|
+
// callers — keep only the truncation signal rather than exposing a misleading `paging`.
|
|
679
|
+
return {
|
|
680
|
+
values: result.values,
|
|
681
|
+
...(result.truncated ? { truncated: true } : {}),
|
|
682
|
+
...(result.metadata != null ? { metadata: result.metadata } : {}),
|
|
683
|
+
};
|
|
684
|
+
}
|
|
685
|
+
async getReposForOrg(tokenOptInfo, orgName, options) {
|
|
686
|
+
const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getReposForOrgFn');
|
|
687
|
+
return this.getPagedResult({ orgName: orgName }, provider.getReposForOrgFn, tokenWithInfo, options?.cursor, options?.isPAT, options?.baseUrl);
|
|
688
|
+
}
|
|
689
|
+
async getReposForBitbucketWorkspace(tokenOptInfo, workspace, options) {
|
|
690
|
+
const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getReposForWorkspaceFn');
|
|
691
|
+
return this.getPagedResult({ workspace: workspace }, provider.getReposForWorkspaceFn, tokenWithInfo, options?.cursor, options?.isPAT, options?.baseUrl);
|
|
692
|
+
}
|
|
693
|
+
async getReposForCurrentUser(tokenOptInfo, options) {
|
|
694
|
+
const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getReposForCurrentUserFn');
|
|
695
|
+
return this.getPagedResult(options?.affiliations != null ? { affiliations: options.affiliations } : {}, provider.getReposForCurrentUserFn, tokenWithInfo, options?.cursor, options?.isPAT, options?.baseUrl);
|
|
696
|
+
}
|
|
697
|
+
async getGitlabGroupsForCurrentUser(tokenOptInfo, options) {
|
|
698
|
+
const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getGroupsForCurrentUserFn');
|
|
699
|
+
// Drain all pages so a user in many groups doesn't lose everything past the first page, while
|
|
700
|
+
// surfacing `truncated` when the defensive backstop stops before the listing is exhausted.
|
|
701
|
+
const result = await collectProviderPagedResult(cursor => this.getPagedResult({ topLevelOnly: options?.topLevelOnly }, provider.getGroupsForCurrentUserFn, tokenWithInfo, cursor, options?.isPAT, options?.baseUrl), 20, { providerId: tokenWithInfo.providerId });
|
|
702
|
+
// This method drains internally and takes no cursor, so a backstop cursor isn't resumable by
|
|
703
|
+
// callers — keep only the truncation signal rather than exposing a misleading `paging`.
|
|
704
|
+
return {
|
|
705
|
+
values: result.values,
|
|
706
|
+
...(result.truncated ? { truncated: true } : {}),
|
|
707
|
+
...(result.metadata != null ? { metadata: result.metadata } : {}),
|
|
708
|
+
};
|
|
709
|
+
}
|
|
453
710
|
async getPullRequestsForRepos(tokenOptInfo, reposOrIds, options) {
|
|
454
711
|
const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getPullRequestsForReposFn');
|
|
455
712
|
return this.getPagedResult({
|
|
@@ -470,13 +727,68 @@ export class ProvidersApi {
|
|
|
470
727
|
...options,
|
|
471
728
|
}, provider.getPullRequestsForUserFn, tokenWithInfo, options?.cursor, options?.isPAT, options?.baseUrl);
|
|
472
729
|
}
|
|
730
|
+
async getGitLabPullRequestsForUserAssociation(tokenOptInfo, username, association, options) {
|
|
731
|
+
const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getGitLabPullRequestsForUserAssociationFn');
|
|
732
|
+
return this.getPagedResult({
|
|
733
|
+
username: username,
|
|
734
|
+
association: association,
|
|
735
|
+
states: options?.states,
|
|
736
|
+
pageSize: options?.pageSize,
|
|
737
|
+
}, provider.getGitLabPullRequestsForUserAssociationFn, tokenWithInfo, options?.cursor, options?.isPAT, options?.baseUrl);
|
|
738
|
+
}
|
|
473
739
|
async getPullRequestsForAzureProjects(tokenOptInfo, projects, options) {
|
|
474
740
|
const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getPullRequestsForAzureProjectsFn');
|
|
475
741
|
const token = tokenWithInfo.accessToken;
|
|
476
742
|
// Azure only supports PAT for this call
|
|
477
743
|
const azureToken = options?.isPAT ? token : this.getAzurePATForOAuthToken(token);
|
|
478
744
|
try {
|
|
479
|
-
|
|
745
|
+
const result = await provider.getPullRequestsForAzureProjectsFn?.({
|
|
746
|
+
projects: projects,
|
|
747
|
+
authorLogin: options?.authorLogin,
|
|
748
|
+
assigneeLogins: options?.assigneeLogins,
|
|
749
|
+
reviewerId: options?.reviewerId,
|
|
750
|
+
states: options?.states,
|
|
751
|
+
repo: options?.repo,
|
|
752
|
+
},
|
|
753
|
+
// `azureToken` is always a PAT here (the raw token when `isPAT`, otherwise a PAT derived from
|
|
754
|
+
// the OAuth token), so it must be sent as a PAT regardless of the incoming `options?.isPAT`.
|
|
755
|
+
{ token: azureToken, isPAT: true, baseUrl: options?.baseUrl });
|
|
756
|
+
// The SDK's multi-project aggregate preserves successful projects and reports failed/incomplete ones
|
|
757
|
+
// through `metadata` (it has no `pageInfo`); keep it so the account-wide drain can warn on the failed
|
|
758
|
+
// projects and set `fetchFailed` instead of publishing a partial Azure read as complete.
|
|
759
|
+
return { values: result?.data ?? [], metadata: result?.metadata };
|
|
760
|
+
}
|
|
761
|
+
catch (e) {
|
|
762
|
+
return this.handleProviderError(tokenWithInfo, e);
|
|
763
|
+
}
|
|
764
|
+
}
|
|
765
|
+
/**
|
|
766
|
+
* Single Azure project PR read, paginated by number. Unlike {@link getPullRequestsForAzureProjects} (which
|
|
767
|
+
* aggregates across projects and exposes no paging), this returns one page plus whether more remain, so a
|
|
768
|
+
* caller can drain a project fully.
|
|
769
|
+
*/
|
|
770
|
+
async getPullRequestsForAzureProject(tokenOptInfo, project, options) {
|
|
771
|
+
const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getPullRequestsForAzureProjectFn');
|
|
772
|
+
const token = tokenWithInfo.accessToken;
|
|
773
|
+
// Azure only supports PAT for this call
|
|
774
|
+
const azureToken = options?.isPAT ? token : this.getAzurePATForOAuthToken(token);
|
|
775
|
+
try {
|
|
776
|
+
const result = await provider.getPullRequestsForAzureProjectFn?.({
|
|
777
|
+
namespace: project.namespace,
|
|
778
|
+
project: project.project,
|
|
779
|
+
authorLogin: options?.authorLogin,
|
|
780
|
+
assigneeLogins: options?.assigneeLogins,
|
|
781
|
+
reviewerId: options?.reviewerId,
|
|
782
|
+
states: options?.states,
|
|
783
|
+
repo: options?.repo,
|
|
784
|
+
page: options?.page,
|
|
785
|
+
},
|
|
786
|
+
// `azureToken` is always a PAT here (already PAT-formatted when `isPAT`, otherwise derived from
|
|
787
|
+
// the OAuth token), so it must be sent as a PAT regardless of the incoming `options?.isPAT`.
|
|
788
|
+
{ token: azureToken, isPAT: true, baseUrl: options?.baseUrl });
|
|
789
|
+
if (result == null)
|
|
790
|
+
return undefined;
|
|
791
|
+
return { data: result.data, hasMore: result.pageInfo.hasNextPage, nextPage: result.pageInfo.nextPage };
|
|
480
792
|
}
|
|
481
793
|
catch (e) {
|
|
482
794
|
return this.handleProviderError(tokenWithInfo, e);
|
|
@@ -528,7 +840,13 @@ export class ProvidersApi {
|
|
|
528
840
|
}
|
|
529
841
|
async getIssuesForCurrentUser(tokenOptInfo, options) {
|
|
530
842
|
const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getIssuesForCurrentUserFn');
|
|
531
|
-
return this.getPagedResult(
|
|
843
|
+
return this.getPagedResult({
|
|
844
|
+
scope: options?.scope,
|
|
845
|
+
assigneeUsername: options?.assigneeUsername,
|
|
846
|
+
authorUsername: options?.authorUsername,
|
|
847
|
+
page: options?.page,
|
|
848
|
+
pageSize: options?.pageSize,
|
|
849
|
+
}, provider.getIssuesForCurrentUserFn, tokenWithInfo, options?.cursor ?? undefined, options?.isPAT, options?.baseUrl);
|
|
532
850
|
}
|
|
533
851
|
async getIssuesForAzureProject(tokenOptInfo, namespace, project, options) {
|
|
534
852
|
const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getIssuesForAzureProjectFn');
|
|
@@ -545,6 +863,92 @@ export class ProvidersApi {
|
|
|
545
863
|
return this.handleProviderError(tokenWithInfo, e);
|
|
546
864
|
}
|
|
547
865
|
}
|
|
866
|
+
/**
|
|
867
|
+
* Single page of {@link getIssuesForProject} that preserves the SDK's `pageInfo` so a caller can drain
|
|
868
|
+
* every page (the plain {@link getIssuesForProject} discards it, silently capping at the first page).
|
|
869
|
+
* `nextCursor` is the raw provider cursor (Jira offset / nextPageToken) fed back verbatim as `options.cursor`.
|
|
870
|
+
*/
|
|
871
|
+
async getIssuesForProjectPaged(tokenOptInfo, project, resourceId, options) {
|
|
872
|
+
const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getIssuesForProjectFn');
|
|
873
|
+
const token = tokenWithInfo.accessToken;
|
|
874
|
+
try {
|
|
875
|
+
const result = await provider.getIssuesForProjectFn?.({ projectKey: project, resourceId: resourceId, ...options }, { token: token });
|
|
876
|
+
if (result == null)
|
|
877
|
+
return undefined;
|
|
878
|
+
return {
|
|
879
|
+
data: result.data,
|
|
880
|
+
hasMore: result.pageInfo?.hasNextPage ?? false,
|
|
881
|
+
nextCursor: result.pageInfo?.endCursor ?? undefined,
|
|
882
|
+
};
|
|
883
|
+
}
|
|
884
|
+
catch (e) {
|
|
885
|
+
return this.handleProviderError(tokenWithInfo, e);
|
|
886
|
+
}
|
|
887
|
+
}
|
|
888
|
+
async getTrelloCard(tokenOptInfo, appKey, cardId, options) {
|
|
889
|
+
const { tokenWithInfo } = await this.ensureProviderToken(tokenOptInfo);
|
|
890
|
+
try {
|
|
891
|
+
const result = await this.request({
|
|
892
|
+
url: `${trelloBaseUrl}/1/cards/${encodeURIComponent(cardId)}?members=true`,
|
|
893
|
+
headers: getTrelloAuthHeaders(appKey, tokenWithInfo.accessToken),
|
|
894
|
+
});
|
|
895
|
+
return fromTrelloCard(result.body, options?.trelloBoardListsById ?? {});
|
|
896
|
+
}
|
|
897
|
+
catch (e) {
|
|
898
|
+
try {
|
|
899
|
+
return this.handleProviderError(tokenWithInfo, e);
|
|
900
|
+
}
|
|
901
|
+
catch (ex) {
|
|
902
|
+
if (RequestNotFoundError.is(ex))
|
|
903
|
+
return undefined;
|
|
904
|
+
throw ex;
|
|
905
|
+
}
|
|
906
|
+
}
|
|
907
|
+
}
|
|
908
|
+
// Trello reads. The Trello client is keyed by an `appKey` (the Trello app key from the cloud token exchange)
|
|
909
|
+
// paired with the OAuth token, so each wrapper threads `appKey` through alongside `tokenWithInfo`.
|
|
910
|
+
async getTrelloCurrentUser(tokenOptInfo, appKey) {
|
|
911
|
+
const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getTrelloCurrentUserFn');
|
|
912
|
+
try {
|
|
913
|
+
const result = await provider.getTrelloCurrentUserFn?.({ appKey: appKey }, { token: tokenWithInfo.accessToken });
|
|
914
|
+
return result?.data;
|
|
915
|
+
}
|
|
916
|
+
catch (e) {
|
|
917
|
+
return this.handleProviderError(tokenWithInfo, e);
|
|
918
|
+
}
|
|
919
|
+
}
|
|
920
|
+
async getTrelloBoardsForCurrentUser(tokenOptInfo, appKey) {
|
|
921
|
+
const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getTrelloBoardsForCurrentUserFn');
|
|
922
|
+
try {
|
|
923
|
+
const result = await provider.getTrelloBoardsForCurrentUserFn?.({ appKey: appKey }, { token: tokenWithInfo.accessToken });
|
|
924
|
+
return result?.data;
|
|
925
|
+
}
|
|
926
|
+
catch (e) {
|
|
927
|
+
return this.handleProviderError(tokenWithInfo, e);
|
|
928
|
+
}
|
|
929
|
+
}
|
|
930
|
+
async getTrelloListsForBoard(tokenOptInfo, appKey, boardId) {
|
|
931
|
+
const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getTrelloListsForBoardFn');
|
|
932
|
+
try {
|
|
933
|
+
const result = await provider.getTrelloListsForBoardFn?.({ appKey: appKey, boardId: boardId }, { token: tokenWithInfo.accessToken });
|
|
934
|
+
return result?.data;
|
|
935
|
+
}
|
|
936
|
+
catch (e) {
|
|
937
|
+
return this.handleProviderError(tokenWithInfo, e);
|
|
938
|
+
}
|
|
939
|
+
}
|
|
940
|
+
async getTrelloIssuesForBoard(tokenOptInfo, appKey, boardId, options) {
|
|
941
|
+
const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getTrelloIssuesForBoardFn');
|
|
942
|
+
try {
|
|
943
|
+
const result = await provider.getTrelloIssuesForBoardFn?.({ appKey: appKey, boardId: boardId, ...options }, { token: tokenWithInfo.accessToken });
|
|
944
|
+
// Trello's search caps results and reports the cap through `metadata.completeness` (never a cursor).
|
|
945
|
+
// Preserve it so the integration can signal a terminal truncation rather than a fake next page.
|
|
946
|
+
return { values: result?.data ?? [], metadata: result?.metadata };
|
|
947
|
+
}
|
|
948
|
+
catch (e) {
|
|
949
|
+
return this.handleProviderError(tokenWithInfo, e);
|
|
950
|
+
}
|
|
951
|
+
}
|
|
548
952
|
async getIssuesForResourceForCurrentUser(tokenOptInfo, resourceId, options) {
|
|
549
953
|
const { provider, tokenWithInfo } = await this.ensureProviderTokenAndFunction(tokenOptInfo, 'getIssuesForResourceForCurrentUserFn');
|
|
550
954
|
return this.getPagedResult({ resourceId: resourceId }, provider.getIssuesForResourceForCurrentUserFn, tokenWithInfo, options?.cursor, options?.isPAT, options?.baseUrl);
|
|
@@ -593,10 +997,37 @@ async function parseFetchResponseForApi(response) {
|
|
|
593
997
|
};
|
|
594
998
|
// throw an error if the response is not ok
|
|
595
999
|
if (!response.ok) {
|
|
596
|
-
const
|
|
1000
|
+
const status = `(${response.status})${response.statusText ? ` ${response.statusText}` : ''}.`;
|
|
1001
|
+
const detail = getProviderResponseBodyMessage(body);
|
|
1002
|
+
const error = new Error(detail != null ? `${status} ${detail}` : status);
|
|
597
1003
|
Object.assign(error, { response: result });
|
|
598
1004
|
throw error;
|
|
599
1005
|
}
|
|
600
1006
|
return result;
|
|
601
1007
|
}
|
|
1008
|
+
const maxProviderErrorBodyLength = 500;
|
|
1009
|
+
/** Extracts the useful provider prose from an already-parsed SDK response body. */
|
|
1010
|
+
function getProviderResponseBodyMessage(body) {
|
|
1011
|
+
let message;
|
|
1012
|
+
if (typeof body === 'string') {
|
|
1013
|
+
message = body;
|
|
1014
|
+
}
|
|
1015
|
+
else if (body != null && typeof body === 'object') {
|
|
1016
|
+
const { message: direct, error } = body;
|
|
1017
|
+
if (typeof direct === 'string') {
|
|
1018
|
+
message = direct;
|
|
1019
|
+
}
|
|
1020
|
+
else if (typeof error === 'string') {
|
|
1021
|
+
message = error;
|
|
1022
|
+
}
|
|
1023
|
+
else if (error != null && typeof error === 'object') {
|
|
1024
|
+
const nested = error.message;
|
|
1025
|
+
if (typeof nested === 'string') {
|
|
1026
|
+
message = nested;
|
|
1027
|
+
}
|
|
1028
|
+
}
|
|
1029
|
+
}
|
|
1030
|
+
message = message?.trim();
|
|
1031
|
+
return message ? message.slice(0, maxProviderErrorBodyLength) : undefined;
|
|
1032
|
+
}
|
|
602
1033
|
//# sourceMappingURL=providersApi.js.map
|