fix slop code, by slop066543614 hours ago152 lines · 4.6 KB | 1 | import { |
| 2 | Args, |
| 3 | Context, |
| 4 | Int, |
| 5 | Parent, |
| 6 | ResolveField, |
| 7 | Resolver, |
| 8 | } from '@nestjs/graphql'; |
| 9 | import { AllowAnonymous } |
| 10 | |
| 11 | import type { GraphqlContext |
| 12 | import type { GithubViewer |
| 13 | import { Viewer } |
| 14 | import { sliceConnection } |
| 15 | import { IssueConnection, IssueNode |
| 16 | import { IssueCommentConnection } |
| 17 | import type { IssueOrPullRequestFields |
| 18 | import { LabelConnection } |
| 19 | import { Actor } |
| 20 | import { |
| 21 | IssueTypeNode, |
| 22 | MilestoneNode, |
| 23 | ProjectV2ItemConnection, |
| 24 | ProjectV2ItemFieldValue, |
| 25 | ProjectV2ItemNode, |
| 26 | ReactionGroup, |
| 27 | SubIssuesSummary, |
| 28 | } from '../../types/placeholders.type.js'; |
| 29 | import { RepositoryNode } |
| 30 | import { UserConnection } |
| 31 | import { RepositoryNodesService } |
| 32 | import { IssueNodesService } |
| 33 | |
| 34 | @Resolver(() => |
| 35 | @AllowAnonymous() |
| 36 | export class IssueResolver |
| 37 | constructor( |
| 38 | private readonly issues |
| 39 | private readonly repositories |
| 40 | ) {} |
| 41 | |
| 42 | @ResolveField(() => |
| 43 | databaseId( |
| 44 | @Parent() issue |
| 45 | @Context() { |
| 46 | ) { |
| 47 | return this.issues |
| 48 | } |
| 49 | |
| 50 | @ResolveField(() => |
| 51 | author( |
| 52 | @Parent() issue |
| 53 | @Context() { |
| 54 | ) { |
| 55 | return this.issues |
| 56 | } |
| 57 | |
| 58 | @ResolveField(() => |
| 59 | assignees( |
| 60 | @Parent() issue |
| 61 | @Context() { |
| 62 | @Args('first' |
| 63 | ) { |
| 64 | return this.issues |
| 65 | } |
| 66 | |
| 67 | @ResolveField(() => |
| 68 | labels( |
| 69 | @Parent() issue |
| 70 | @Args('first' |
| 71 | ) { |
| 72 | return this.issues |
| 73 | } |
| 74 | |
| 75 | @ResolveField(() => |
| 76 | comments( |
| 77 | @Parent() issue |
| 78 | @Viewer() viewer |
| 79 | @Context() { |
| 80 | @Args('first' |
| 81 | @Args('last' |
| 82 | @Args('after' |
| 83 | ) { |
| 84 | return this.issues |
| 85 | } |
| 86 | |
| 87 | @ResolveField(() => |
| 88 | repository( |
| 89 | @Parent() issue |
| 90 | @Viewer() viewer |
| 91 | ) { |
| 92 | return this.repositories |
| 93 | } |
| 94 | |
| 95 | @ResolveField(() => |
| 96 | milestone() { |
| 97 | return null; |
| 98 | } |
| 99 | |
| 100 | @ResolveField(() => |
| 101 | reactionGroups() { |
| 102 | return []; |
| 103 | } |
| 104 | |
| 105 | @ResolveField(() => |
| 106 | projectItems( |
| 107 | @Args('first' |
| 108 | @Args('after' |
| 109 | @Args('last' |
| 110 | @Args('before' |
| 111 | @Args('includeArchived' |
| 112 | type: () => |
| 113 | nullable: true, |
| 114 | defaultValue: true, |
| 115 | }) |
| 116 | _includeArchived?: boolean |
| 117 | ) { |
| 118 | return sliceConnection([], |
| 119 | } |
| 120 | |
| 121 | @ResolveField(() => |
| 122 | issueType() { |
| 123 | return null; |
| 124 | } |
| 125 | |
| 126 | @ResolveField(() => |
| 127 | parent() { |
| 128 | return null; |
| 129 | } |
| 130 | |
| 131 | @ResolveField(() => |
| 132 | subIssues( |
| 133 | @Args('first' |
| 134 | ) { |
| 135 | return sliceConnection([], |
| 136 | } |
| 137 | |
| 138 | @ResolveField(() => |
| 139 | subIssuesSummary() { |
| 140 | return { total: |
| 141 | } |
| 142 | } |
| 143 | |
| 144 | /** ProjectV2Item.fieldValueByName exists so gh's issue view validates; Ghost has no projects, so no item is ever returned. */ |
| 145 | @Resolver(() => |
| 146 | @AllowAnonymous() |
| 147 | export class ProjectV2ItemResolver |
| 148 | @ResolveField(() => |
| 149 | fieldValueByName(@Args( |
| 150 | return null; |
| 151 | } |
| 152 | } |
from
'
@thallesp/nestjs-better-auth
'
;
}
from
'
../../../../lib/github/loaders.js
'
;
}
from
'
../../../auth/github-request.js
'
;
from
'
../../../auth/viewer.decorator.js
'
;
from
'
../../connection.js
'
;
}
from
'
../../types/issue.type.js
'
;
from
'
../../types/issue-comment.type.js
'
;
}
from
'
../../types/issue-or-pull-request.type.js
'
;
from
'
../../types/label.type.js
'
;
from
'
../../types/node.interface.js
'
;
from
'
../../types/repository.type.js
'
;
from
'
../../types/user.type.js
'
;
from
'
../repository/repository-nodes.service.js
'
;
from
'
./issue-nodes.service.js
'
;
IssueNode
)
{
:
IssueNodesService
,
:
RepositoryNodesService
,
Int
,
{
nullable
:
true
}
)
:
IssueOrPullRequestFields
,
loaders
}
:
GraphqlContext
,
.
databaseId
(
issue
,
loaders
)
;
Actor
,
{
nullable
:
true
}
)
:
IssueOrPullRequestFields
,
loaders
}
:
GraphqlContext
,
.
author
(
issue
,
loaders
)
;
UserConnection
)
:
IssueOrPullRequestFields
,
loaders
}
:
GraphqlContext
,
,
{
type
:
()
=>
Int
,
nullable
:
true
}
)
first
?
:
number
,
.
assignees
(
issue
,
loaders
,
first
)
;
LabelConnection
,
{
nullable
:
true
}
)
:
IssueOrPullRequestFields
,
,
{
type
:
()
=>
Int
,
nullable
:
true
}
)
first
?
:
number
,
.
labels
(
issue
,
first
)
;
IssueCommentConnection
)
:
IssueOrPullRequestFields
,
:
GithubViewer
|
null
,
loaders
}
:
GraphqlContext
,
,
{
type
:
()
=>
Int
,
nullable
:
true
}
)
first
?
:
number
,
,
{
type
:
()
=>
Int
,
nullable
:
true
}
)
last
?
:
number
,
,
{
type
:
()
=>
String
,
nullable
:
true
}
)
after
?
:
string
,
.
comments
(
issue
,
viewer
,
loaders
,
first
,
last
,
after
)
;
RepositoryNode
)
:
IssueOrPullRequestFields
,
:
GithubViewer
|
null
,
.
load
(
issue
.
repositoryGhostId
,
viewer
)
;
MilestoneNode
,
{
nullable
:
true
}
)
[
ReactionGroup
]
,
{
nullable
:
true
}
)
ProjectV2ItemConnection
)
,
{
type
:
()
=>
Int
,
nullable
:
true
}
)
_first
?
:
number
,
,
{
type
:
()
=>
String
,
nullable
:
true
}
)
_after
?
:
string
,
,
{
type
:
()
=>
Int
,
nullable
:
true
}
)
_last
?
:
number
,
,
{
type
:
()
=>
String
,
nullable
:
true
}
)
_before
?
:
string
,
,
{
Boolean
,
,
{}
)
;
IssueTypeNode
,
{
nullable
:
true
}
)
IssueNode
,
{
nullable
:
true
}
)
IssueConnection
)
,
{
type
:
()
=>
Int
,
nullable
:
true
}
)
_first
?
:
number
,
{}
)
;
SubIssuesSummary
)
0
,
completed
:
0
,
percentCompleted
:
0
}
;
ProjectV2ItemNode
)
{
ProjectV2ItemFieldValue
,
{
nullable
:
true
}
)
'
name
'
)
_name
:
string
)
{