@ghx-dev/core 0.1.2 → 0.2.1
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/.claude-plugin/plugin.json +21 -0
- package/README.md +49 -45
- package/dist/cards/issue.assignees.add.yaml +51 -0
- package/dist/cards/issue.assignees.remove.yaml +51 -0
- package/dist/cards/issue.assignees.set.yaml +48 -0
- package/dist/cards/issue.close.yaml +17 -2
- package/dist/cards/issue.comments.create.yaml +17 -2
- package/dist/cards/issue.comments.list.yaml +1 -0
- package/dist/cards/issue.create.yaml +12 -0
- package/dist/cards/issue.delete.yaml +17 -2
- package/dist/cards/issue.labels.add.yaml +49 -0
- package/dist/cards/issue.labels.remove.yaml +51 -0
- package/dist/cards/issue.labels.set.yaml +48 -0
- package/dist/cards/issue.list.yaml +1 -0
- package/dist/cards/issue.milestone.clear.yaml +41 -0
- package/dist/cards/issue.milestone.set.yaml +24 -4
- package/dist/{core/registry/cards/issue.blocked_by.add.yaml → cards/issue.relations.blocked_by.add.yaml} +4 -2
- package/dist/cards/{issue.blocked_by.remove.yaml → issue.relations.blocked_by.remove.yaml} +2 -1
- package/dist/cards/{issue.parent.remove.yaml → issue.relations.parent.remove.yaml} +12 -1
- package/dist/{core/registry/cards/issue.parent.set.yaml → cards/issue.relations.parent.set.yaml} +4 -2
- package/dist/{core/registry/cards/issue.linked_prs.list.yaml → cards/issue.relations.prs.list.yaml} +2 -1
- package/dist/cards/{issue.relations.get.yaml → issue.relations.view.yaml} +2 -1
- package/dist/cards/issue.reopen.yaml +17 -2
- package/dist/cards/issue.update.yaml +17 -2
- package/dist/cards/issue.view.yaml +8 -5
- package/dist/cards/pr.assignees.add.yaml +33 -0
- package/dist/cards/pr.assignees.remove.yaml +33 -0
- package/dist/cards/pr.branch.update.yaml +6 -2
- package/dist/{core/registry/cards/pr.status.checks.yaml → cards/pr.checks.list.yaml} +15 -2
- package/dist/{core/registry/cards/pr.checks.rerun_all.yaml → cards/pr.checks.rerun.all.yaml} +2 -4
- package/dist/{core/registry/cards/pr.checks.rerun_failed.yaml → cards/pr.checks.rerun.failed.yaml} +3 -5
- package/dist/cards/pr.create.yaml +34 -0
- package/dist/cards/{pr.diff.list_files.yaml → pr.diff.files.yaml} +2 -1
- package/dist/cards/{pr.ready_for_review.set.yaml → pr.diff.view.yaml} +6 -8
- package/dist/cards/pr.list.yaml +1 -0
- package/dist/{core/registry/cards/pr.mergeability.view.yaml → cards/pr.merge.status.yaml} +7 -3
- package/dist/{core/registry/cards/pr.merge.execute.yaml → cards/pr.merge.yaml} +10 -4
- package/dist/cards/pr.reviews.list.yaml +2 -1
- package/dist/cards/{pr.reviewers.request.yaml → pr.reviews.request.yaml} +7 -4
- package/dist/cards/pr.reviews.submit.yaml +68 -0
- package/dist/cards/{pr.comments.list.yaml → pr.threads.list.yaml} +3 -2
- package/dist/cards/{pr.comment.reply.yaml → pr.threads.reply.yaml} +5 -2
- package/dist/{core/registry/cards/pr.comment.resolve.yaml → cards/pr.threads.resolve.yaml} +2 -1
- package/dist/cards/{pr.comment.unresolve.yaml → pr.threads.unresolve.yaml} +2 -1
- package/dist/cards/pr.update.yaml +34 -0
- package/dist/cards/pr.view.yaml +8 -5
- package/dist/cards/project_v2.fields.list.yaml +18 -2
- package/dist/cards/{project_v2.item.field.update.yaml → project_v2.items.field.update.yaml} +9 -6
- package/dist/cards/{project_v2.item.add_issue.yaml → project_v2.items.issue.add.yaml} +10 -6
- package/dist/cards/project_v2.items.issue.remove.yaml +26 -0
- package/dist/cards/project_v2.items.list.yaml +8 -2
- package/dist/{core/registry/cards/project_v2.org.get.yaml → cards/project_v2.org.view.yaml} +7 -3
- package/dist/cards/{project_v2.user.get.yaml → project_v2.user.view.yaml} +7 -3
- package/dist/{core/registry/cards/release.create_draft.yaml → cards/release.create.yaml} +1 -1
- package/dist/cards/release.list.yaml +8 -3
- package/dist/cards/{release.publish_draft.yaml → release.publish.yaml} +1 -1
- package/dist/cards/{release.get.yaml → release.view.yaml} +9 -5
- package/dist/cards/repo.issue_types.list.yaml +7 -3
- package/dist/cards/repo.labels.list.yaml +7 -2
- package/dist/cards/repo.view.yaml +3 -4
- package/dist/cards/{workflow_dispatch.run.yaml → workflow.dispatch.yaml} +1 -1
- package/dist/cards/{workflow_job.logs.get.yaml → workflow.job.logs.raw.yaml} +2 -2
- package/dist/{core/registry/cards/workflow_job.logs.analyze.yaml → cards/workflow.job.logs.view.yaml} +1 -1
- package/dist/{core/registry/cards/workflow_run.artifacts.list.yaml → cards/workflow.run.artifacts.list.yaml} +1 -1
- package/dist/cards/{workflow_run.cancel.yaml → workflow.run.cancel.yaml} +1 -1
- package/dist/cards/{workflow_run.rerun_all.yaml → workflow.run.rerun.all.yaml} +3 -3
- package/dist/{core/registry/cards/workflow_run.rerun_failed.yaml → cards/workflow.run.rerun.failed.yaml} +3 -3
- package/dist/{core/registry/cards/workflow_run.get.yaml → cards/workflow.run.view.yaml} +19 -4
- package/dist/cards/{workflow_runs.list.yaml → workflow.runs.list.yaml} +1 -1
- package/dist/cards/{workflow.get.yaml → workflow.view.yaml} +2 -2
- package/dist/chunk-3DU2WHXF.js +15 -0
- package/dist/chunk-3DU2WHXF.js.map +1 -0
- package/dist/chunk-7HUKYNI2.js +536 -0
- package/dist/chunk-7HUKYNI2.js.map +1 -0
- package/dist/chunk-GQO6BHJV.js +98 -0
- package/dist/chunk-GQO6BHJV.js.map +1 -0
- package/dist/chunk-H7CLZHRO.js +280 -0
- package/dist/chunk-H7CLZHRO.js.map +1 -0
- package/dist/chunk-HEHONZTO.js +121 -0
- package/dist/chunk-HEHONZTO.js.map +1 -0
- package/dist/chunk-M5PJLKL5.js +6132 -0
- package/dist/chunk-M5PJLKL5.js.map +1 -0
- package/dist/chunk-NQ53ETYV.js +128 -0
- package/dist/chunk-NQ53ETYV.js.map +1 -0
- package/dist/chunk-OQWLEFAH.js +436 -0
- package/dist/chunk-OQWLEFAH.js.map +1 -0
- package/dist/chunk-Q2NW7DJE.js +878 -0
- package/dist/chunk-Q2NW7DJE.js.map +1 -0
- package/dist/chunk-QRHKAMRY.js +211 -0
- package/dist/chunk-QRHKAMRY.js.map +1 -0
- package/dist/chunk-R3CBGJZX.js +12 -0
- package/dist/chunk-R3CBGJZX.js.map +1 -0
- package/dist/chunk-TGL33GEA.js +132 -0
- package/dist/chunk-TGL33GEA.js.map +1 -0
- package/dist/chunk-TPQYVCAS.js +15 -0
- package/dist/chunk-TPQYVCAS.js.map +1 -0
- package/dist/chunk-ZGBVX2VG.js +32 -0
- package/dist/chunk-ZGBVX2VG.js.map +1 -0
- package/dist/cli/index.js +268 -22
- package/dist/cli/index.js.map +1 -1
- package/dist/core/registry/cards/issue.assignees.add.yaml +51 -0
- package/dist/core/registry/cards/issue.assignees.remove.yaml +51 -0
- package/dist/core/registry/cards/issue.assignees.set.yaml +48 -0
- package/dist/core/registry/cards/issue.close.yaml +17 -2
- package/dist/core/registry/cards/issue.comments.create.yaml +17 -2
- package/dist/core/registry/cards/issue.comments.list.yaml +1 -0
- package/dist/core/registry/cards/issue.create.yaml +12 -0
- package/dist/core/registry/cards/issue.delete.yaml +17 -2
- package/dist/core/registry/cards/issue.labels.add.yaml +49 -0
- package/dist/core/registry/cards/issue.labels.remove.yaml +51 -0
- package/dist/core/registry/cards/issue.labels.set.yaml +48 -0
- package/dist/core/registry/cards/issue.list.yaml +1 -0
- package/dist/core/registry/cards/issue.milestone.clear.yaml +41 -0
- package/dist/core/registry/cards/issue.milestone.set.yaml +24 -4
- package/dist/{cards/issue.blocked_by.add.yaml → core/registry/cards/issue.relations.blocked_by.add.yaml} +4 -2
- package/dist/core/registry/cards/{issue.blocked_by.remove.yaml → issue.relations.blocked_by.remove.yaml} +2 -1
- package/dist/core/registry/cards/{issue.parent.remove.yaml → issue.relations.parent.remove.yaml} +12 -1
- package/dist/{cards/issue.parent.set.yaml → core/registry/cards/issue.relations.parent.set.yaml} +4 -2
- package/dist/{cards/issue.linked_prs.list.yaml → core/registry/cards/issue.relations.prs.list.yaml} +2 -1
- package/dist/core/registry/cards/{issue.relations.get.yaml → issue.relations.view.yaml} +2 -1
- package/dist/core/registry/cards/issue.reopen.yaml +17 -2
- package/dist/core/registry/cards/issue.update.yaml +17 -2
- package/dist/core/registry/cards/issue.view.yaml +8 -5
- package/dist/core/registry/cards/pr.assignees.add.yaml +33 -0
- package/dist/core/registry/cards/pr.assignees.remove.yaml +33 -0
- package/dist/core/registry/cards/pr.branch.update.yaml +6 -2
- package/dist/{cards/pr.status.checks.yaml → core/registry/cards/pr.checks.list.yaml} +15 -2
- package/dist/{cards/pr.checks.rerun_all.yaml → core/registry/cards/pr.checks.rerun.all.yaml} +2 -4
- package/dist/{cards/pr.checks.rerun_failed.yaml → core/registry/cards/pr.checks.rerun.failed.yaml} +3 -5
- package/dist/core/registry/cards/pr.create.yaml +34 -0
- package/dist/core/registry/cards/{pr.diff.list_files.yaml → pr.diff.files.yaml} +2 -1
- package/dist/core/registry/cards/{pr.ready_for_review.set.yaml → pr.diff.view.yaml} +6 -8
- package/dist/core/registry/cards/pr.list.yaml +1 -0
- package/dist/{cards/pr.mergeability.view.yaml → core/registry/cards/pr.merge.status.yaml} +7 -3
- package/dist/{cards/pr.merge.execute.yaml → core/registry/cards/pr.merge.yaml} +10 -4
- package/dist/core/registry/cards/pr.reviews.list.yaml +2 -1
- package/dist/core/registry/cards/{pr.reviewers.request.yaml → pr.reviews.request.yaml} +7 -4
- package/dist/core/registry/cards/pr.reviews.submit.yaml +68 -0
- package/dist/core/registry/cards/{pr.comments.list.yaml → pr.threads.list.yaml} +3 -2
- package/dist/core/registry/cards/{pr.comment.reply.yaml → pr.threads.reply.yaml} +5 -2
- package/dist/{cards/pr.comment.resolve.yaml → core/registry/cards/pr.threads.resolve.yaml} +2 -1
- package/dist/core/registry/cards/{pr.comment.unresolve.yaml → pr.threads.unresolve.yaml} +2 -1
- package/dist/core/registry/cards/pr.update.yaml +34 -0
- package/dist/core/registry/cards/pr.view.yaml +8 -5
- package/dist/core/registry/cards/project_v2.fields.list.yaml +18 -2
- package/dist/core/registry/cards/{project_v2.item.field.update.yaml → project_v2.items.field.update.yaml} +9 -6
- package/dist/core/registry/cards/{project_v2.item.add_issue.yaml → project_v2.items.issue.add.yaml} +10 -6
- package/dist/core/registry/cards/project_v2.items.issue.remove.yaml +26 -0
- package/dist/core/registry/cards/project_v2.items.list.yaml +8 -2
- package/dist/{cards/project_v2.org.get.yaml → core/registry/cards/project_v2.org.view.yaml} +7 -3
- package/dist/core/registry/cards/{project_v2.user.get.yaml → project_v2.user.view.yaml} +7 -3
- package/dist/{cards/release.create_draft.yaml → core/registry/cards/release.create.yaml} +1 -1
- package/dist/core/registry/cards/release.list.yaml +8 -3
- package/dist/core/registry/cards/{release.publish_draft.yaml → release.publish.yaml} +1 -1
- package/dist/core/registry/cards/{release.get.yaml → release.view.yaml} +9 -5
- package/dist/core/registry/cards/repo.issue_types.list.yaml +7 -3
- package/dist/core/registry/cards/repo.labels.list.yaml +7 -2
- package/dist/core/registry/cards/repo.view.yaml +3 -4
- package/dist/core/registry/cards/{workflow_dispatch.run.yaml → workflow.dispatch.yaml} +1 -1
- package/dist/core/registry/cards/{workflow_job.logs.get.yaml → workflow.job.logs.raw.yaml} +2 -2
- package/dist/{cards/workflow_job.logs.analyze.yaml → core/registry/cards/workflow.job.logs.view.yaml} +1 -1
- package/dist/{cards/workflow_run.artifacts.list.yaml → core/registry/cards/workflow.run.artifacts.list.yaml} +1 -1
- package/dist/core/registry/cards/{workflow_run.cancel.yaml → workflow.run.cancel.yaml} +1 -1
- package/dist/core/registry/cards/{workflow_run.rerun_all.yaml → workflow.run.rerun.all.yaml} +3 -3
- package/dist/{cards/workflow_run.rerun_failed.yaml → core/registry/cards/workflow.run.rerun.failed.yaml} +3 -3
- package/dist/{cards/workflow_run.get.yaml → core/registry/cards/workflow.run.view.yaml} +19 -4
- package/dist/core/registry/cards/{workflow_runs.list.yaml → workflow.runs.list.yaml} +1 -1
- package/dist/core/registry/cards/{workflow.get.yaml → workflow.view.yaml} +2 -2
- package/dist/index.d.ts +671 -35
- package/dist/index.js +41 -5
- package/dist/index.js.map +1 -1
- package/dist/issue-mutations-OW464JP3.js +645 -0
- package/dist/issue-mutations-OW464JP3.js.map +1 -0
- package/dist/issue-queries-ORG3VPK4.js +93 -0
- package/dist/issue-queries-ORG3VPK4.js.map +1 -0
- package/dist/pr-mutations-WOTG6FAB.js +484 -0
- package/dist/pr-mutations-WOTG6FAB.js.map +1 -0
- package/dist/pr-queries-6CJJW7BT.js +143 -0
- package/dist/pr-queries-6CJJW7BT.js.map +1 -0
- package/dist/project-QFSCYDDW.js +429 -0
- package/dist/project-QFSCYDDW.js.map +1 -0
- package/dist/release-33236BBA.js +57 -0
- package/dist/release-33236BBA.js.map +1 -0
- package/dist/repo-M6DKCWBG.js +82 -0
- package/dist/repo-M6DKCWBG.js.map +1 -0
- package/package.json +19 -16
- package/skills/using-ghx/SKILL.md +127 -0
- package/dist/agent.d.ts +0 -32
- package/dist/agent.js +0 -36
- package/dist/agent.js.map +0 -1
- package/dist/cards/check_run.annotations.list.yaml +0 -35
- package/dist/cards/issue.assignees.update.yaml +0 -27
- package/dist/cards/issue.labels.update.yaml +0 -27
- package/dist/cards/pr.assignees.update.yaml +0 -38
- package/dist/cards/pr.checks.get_failed.yaml +0 -42
- package/dist/cards/pr.review.submit_approve.yaml +0 -26
- package/dist/cards/pr.review.submit_comment.yaml +0 -26
- package/dist/cards/pr.review.submit_request_changes.yaml +0 -26
- package/dist/cards/workflow_run.jobs.list.yaml +0 -35
- package/dist/chunk-2FCPR3XZ.js +0 -54
- package/dist/chunk-2FCPR3XZ.js.map +0 -1
- package/dist/chunk-RDUPMVHG.js +0 -4139
- package/dist/chunk-RDUPMVHG.js.map +0 -1
- package/dist/chunk-UN5YHUNK.js +0 -245
- package/dist/chunk-UN5YHUNK.js.map +0 -1
- package/dist/cli/assets/skills/ghx/SKILL.md +0 -57
- package/dist/core/registry/cards/check_run.annotations.list.yaml +0 -35
- package/dist/core/registry/cards/issue.assignees.update.yaml +0 -27
- package/dist/core/registry/cards/issue.labels.update.yaml +0 -27
- package/dist/core/registry/cards/pr.assignees.update.yaml +0 -38
- package/dist/core/registry/cards/pr.checks.get_failed.yaml +0 -42
- package/dist/core/registry/cards/pr.review.submit_approve.yaml +0 -26
- package/dist/core/registry/cards/pr.review.submit_comment.yaml +0 -26
- package/dist/core/registry/cards/pr.review.submit_request_changes.yaml +0 -26
- package/dist/core/registry/cards/workflow_run.jobs.list.yaml +0 -35
- package/dist/envelope-BpF6MNCv.d.ts +0 -55
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import {
|
|
2
|
+
PageInfoFieldsFragmentDoc
|
|
3
|
+
} from "./chunk-R3CBGJZX.js";
|
|
4
|
+
|
|
5
|
+
// src/gql/operations/repo-issue-types-list.generated.ts
|
|
6
|
+
var RepoIssueTypesListDocument = `
|
|
7
|
+
query RepoIssueTypesList($owner: String!, $name: String!, $first: Int!, $after: String) {
|
|
8
|
+
repository(owner: $owner, name: $name) {
|
|
9
|
+
issueTypes(first: $first, after: $after) {
|
|
10
|
+
nodes {
|
|
11
|
+
id
|
|
12
|
+
name
|
|
13
|
+
color
|
|
14
|
+
isEnabled
|
|
15
|
+
}
|
|
16
|
+
pageInfo {
|
|
17
|
+
...PageInfoFields
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
${PageInfoFieldsFragmentDoc}`;
|
|
23
|
+
var defaultWrapper = (action, _operationName, _operationType, _variables) => action();
|
|
24
|
+
function getSdk(client, withWrapper = defaultWrapper) {
|
|
25
|
+
return {
|
|
26
|
+
RepoIssueTypesList(variables, requestHeaders, signal) {
|
|
27
|
+
return withWrapper(
|
|
28
|
+
(wrappedRequestHeaders) => client.request({
|
|
29
|
+
document: RepoIssueTypesListDocument,
|
|
30
|
+
variables,
|
|
31
|
+
requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },
|
|
32
|
+
signal
|
|
33
|
+
}),
|
|
34
|
+
"RepoIssueTypesList",
|
|
35
|
+
"query",
|
|
36
|
+
variables
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// src/gql/operations/repo-labels-list.generated.ts
|
|
43
|
+
var RepoLabelsListDocument = `
|
|
44
|
+
query RepoLabelsList($owner: String!, $name: String!, $first: Int!, $after: String) {
|
|
45
|
+
repository(owner: $owner, name: $name) {
|
|
46
|
+
labels(
|
|
47
|
+
first: $first
|
|
48
|
+
after: $after
|
|
49
|
+
orderBy: {field: CREATED_AT, direction: DESC}
|
|
50
|
+
) {
|
|
51
|
+
nodes {
|
|
52
|
+
id
|
|
53
|
+
name
|
|
54
|
+
description
|
|
55
|
+
color
|
|
56
|
+
isDefault
|
|
57
|
+
}
|
|
58
|
+
pageInfo {
|
|
59
|
+
...PageInfoFields
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
${PageInfoFieldsFragmentDoc}`;
|
|
65
|
+
var defaultWrapper2 = (action, _operationName, _operationType, _variables) => action();
|
|
66
|
+
function getSdk2(client, withWrapper = defaultWrapper2) {
|
|
67
|
+
return {
|
|
68
|
+
RepoLabelsList(variables, requestHeaders, signal) {
|
|
69
|
+
return withWrapper(
|
|
70
|
+
(wrappedRequestHeaders) => client.request({
|
|
71
|
+
document: RepoLabelsListDocument,
|
|
72
|
+
variables,
|
|
73
|
+
requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },
|
|
74
|
+
signal
|
|
75
|
+
}),
|
|
76
|
+
"RepoLabelsList",
|
|
77
|
+
"query",
|
|
78
|
+
variables
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// src/gql/operations/repo-view.generated.ts
|
|
85
|
+
var RepoViewDocument = `
|
|
86
|
+
query RepoView($owner: String!, $name: String!) {
|
|
87
|
+
repository(owner: $owner, name: $name) {
|
|
88
|
+
id
|
|
89
|
+
name
|
|
90
|
+
nameWithOwner
|
|
91
|
+
isPrivate
|
|
92
|
+
stargazerCount
|
|
93
|
+
forkCount
|
|
94
|
+
url
|
|
95
|
+
defaultBranchRef {
|
|
96
|
+
name
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
`;
|
|
101
|
+
var defaultWrapper3 = (action, _operationName, _operationType, _variables) => action();
|
|
102
|
+
function getSdk3(client, withWrapper = defaultWrapper3) {
|
|
103
|
+
return {
|
|
104
|
+
RepoView(variables, requestHeaders, signal) {
|
|
105
|
+
return withWrapper(
|
|
106
|
+
(wrappedRequestHeaders) => client.request({
|
|
107
|
+
document: RepoViewDocument,
|
|
108
|
+
variables,
|
|
109
|
+
requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },
|
|
110
|
+
signal
|
|
111
|
+
}),
|
|
112
|
+
"RepoView",
|
|
113
|
+
"query",
|
|
114
|
+
variables
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export {
|
|
121
|
+
RepoIssueTypesListDocument,
|
|
122
|
+
getSdk,
|
|
123
|
+
RepoLabelsListDocument,
|
|
124
|
+
getSdk2,
|
|
125
|
+
RepoViewDocument,
|
|
126
|
+
getSdk3
|
|
127
|
+
};
|
|
128
|
+
//# sourceMappingURL=chunk-NQ53ETYV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/gql/operations/repo-issue-types-list.generated.ts","../src/gql/operations/repo-labels-list.generated.ts","../src/gql/operations/repo-view.generated.ts"],"sourcesContent":["import type { GraphQLClient, RequestOptions } from \"graphql-request\"\nimport type * as Types from \"./base-types.js\"\nimport { PageInfoFieldsFragmentDoc } from \"./fragments/page-info-fields.generated.js\"\n\ntype GraphQLClientRequestHeaders = RequestOptions[\"requestHeaders\"]\nexport type RepoIssueTypesListQueryVariables = Types.Exact<{\n owner: Types.Scalars[\"String\"][\"input\"]\n name: Types.Scalars[\"String\"][\"input\"]\n first: Types.Scalars[\"Int\"][\"input\"]\n after?: Types.InputMaybe<Types.Scalars[\"String\"][\"input\"]>\n}>\n\nexport type RepoIssueTypesListQuery = {\n __typename?: \"Query\"\n repository?: {\n __typename?: \"Repository\"\n issueTypes?: {\n __typename?: \"IssueTypeConnection\"\n nodes?: Array<{\n __typename?: \"IssueType\"\n id: string\n name: string\n color: Types.IssueTypeColor\n isEnabled: boolean\n } | null> | null\n pageInfo: { __typename?: \"PageInfo\"; endCursor?: string | null; hasNextPage: boolean }\n } | null\n } | null\n}\n\nexport const RepoIssueTypesListDocument = `\n query RepoIssueTypesList($owner: String!, $name: String!, $first: Int!, $after: String) {\n repository(owner: $owner, name: $name) {\n issueTypes(first: $first, after: $after) {\n nodes {\n id\n name\n color\n isEnabled\n }\n pageInfo {\n ...PageInfoFields\n }\n }\n }\n}\n ${PageInfoFieldsFragmentDoc}`\n\nexport type SdkFunctionWrapper = <T>(\n action: (requestHeaders?: Record<string, string>) => Promise<T>,\n operationName: string,\n operationType?: string,\n variables?: any,\n) => Promise<T>\n\nconst defaultWrapper: SdkFunctionWrapper = (action, _operationName, _operationType, _variables) =>\n action()\n\nexport function getSdk(client: GraphQLClient, withWrapper: SdkFunctionWrapper = defaultWrapper) {\n return {\n RepoIssueTypesList(\n variables: RepoIssueTypesListQueryVariables,\n requestHeaders?: GraphQLClientRequestHeaders,\n signal?: RequestInit[\"signal\"],\n ): Promise<RepoIssueTypesListQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<RepoIssueTypesListQuery>({\n document: RepoIssueTypesListDocument,\n variables,\n requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },\n signal,\n }),\n \"RepoIssueTypesList\",\n \"query\",\n variables,\n )\n },\n }\n}\nexport type Sdk = ReturnType<typeof getSdk>\n","import type { GraphQLClient, RequestOptions } from \"graphql-request\"\nimport type * as Types from \"./base-types.js\"\nimport { PageInfoFieldsFragmentDoc } from \"./fragments/page-info-fields.generated.js\"\n\ntype GraphQLClientRequestHeaders = RequestOptions[\"requestHeaders\"]\nexport type RepoLabelsListQueryVariables = Types.Exact<{\n owner: Types.Scalars[\"String\"][\"input\"]\n name: Types.Scalars[\"String\"][\"input\"]\n first: Types.Scalars[\"Int\"][\"input\"]\n after?: Types.InputMaybe<Types.Scalars[\"String\"][\"input\"]>\n}>\n\nexport type RepoLabelsListQuery = {\n __typename?: \"Query\"\n repository?: {\n __typename?: \"Repository\"\n labels?: {\n __typename?: \"LabelConnection\"\n nodes?: Array<{\n __typename?: \"Label\"\n id: string\n name: string\n description?: string | null\n color: string\n isDefault: boolean\n } | null> | null\n pageInfo: { __typename?: \"PageInfo\"; endCursor?: string | null; hasNextPage: boolean }\n } | null\n } | null\n}\n\nexport const RepoLabelsListDocument = `\n query RepoLabelsList($owner: String!, $name: String!, $first: Int!, $after: String) {\n repository(owner: $owner, name: $name) {\n labels(\n first: $first\n after: $after\n orderBy: {field: CREATED_AT, direction: DESC}\n ) {\n nodes {\n id\n name\n description\n color\n isDefault\n }\n pageInfo {\n ...PageInfoFields\n }\n }\n }\n}\n ${PageInfoFieldsFragmentDoc}`\n\nexport type SdkFunctionWrapper = <T>(\n action: (requestHeaders?: Record<string, string>) => Promise<T>,\n operationName: string,\n operationType?: string,\n variables?: any,\n) => Promise<T>\n\nconst defaultWrapper: SdkFunctionWrapper = (action, _operationName, _operationType, _variables) =>\n action()\n\nexport function getSdk(client: GraphQLClient, withWrapper: SdkFunctionWrapper = defaultWrapper) {\n return {\n RepoLabelsList(\n variables: RepoLabelsListQueryVariables,\n requestHeaders?: GraphQLClientRequestHeaders,\n signal?: RequestInit[\"signal\"],\n ): Promise<RepoLabelsListQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<RepoLabelsListQuery>({\n document: RepoLabelsListDocument,\n variables,\n requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },\n signal,\n }),\n \"RepoLabelsList\",\n \"query\",\n variables,\n )\n },\n }\n}\nexport type Sdk = ReturnType<typeof getSdk>\n","import type { GraphQLClient, RequestOptions } from \"graphql-request\"\nimport type * as Types from \"./base-types.js\"\n\ntype GraphQLClientRequestHeaders = RequestOptions[\"requestHeaders\"]\nexport type RepoViewQueryVariables = Types.Exact<{\n owner: Types.Scalars[\"String\"][\"input\"]\n name: Types.Scalars[\"String\"][\"input\"]\n}>\n\nexport type RepoViewQuery = {\n __typename?: \"Query\"\n repository?: {\n __typename?: \"Repository\"\n id: string\n name: string\n nameWithOwner: string\n isPrivate: boolean\n stargazerCount: number\n forkCount: number\n url: any\n defaultBranchRef?: { __typename?: \"Ref\"; name: string } | null\n } | null\n}\n\nexport const RepoViewDocument = `\n query RepoView($owner: String!, $name: String!) {\n repository(owner: $owner, name: $name) {\n id\n name\n nameWithOwner\n isPrivate\n stargazerCount\n forkCount\n url\n defaultBranchRef {\n name\n }\n }\n}\n `\n\nexport type SdkFunctionWrapper = <T>(\n action: (requestHeaders?: Record<string, string>) => Promise<T>,\n operationName: string,\n operationType?: string,\n variables?: any,\n) => Promise<T>\n\nconst defaultWrapper: SdkFunctionWrapper = (action, _operationName, _operationType, _variables) =>\n action()\n\nexport function getSdk(client: GraphQLClient, withWrapper: SdkFunctionWrapper = defaultWrapper) {\n return {\n RepoView(\n variables: RepoViewQueryVariables,\n requestHeaders?: GraphQLClientRequestHeaders,\n signal?: RequestInit[\"signal\"],\n ): Promise<RepoViewQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<RepoViewQuery>({\n document: RepoViewDocument,\n variables,\n requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },\n signal,\n }),\n \"RepoView\",\n \"query\",\n variables,\n )\n },\n }\n}\nexport type Sdk = ReturnType<typeof getSdk>\n"],"mappings":";;;;;AA8BO,IAAM,6BAA6B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAgBpC,yBAAyB;AAS/B,IAAM,iBAAqC,CAAC,QAAQ,gBAAgB,gBAAgB,eAClF,OAAO;AAEF,SAAS,OAAO,QAAuB,cAAkC,gBAAgB;AAC9F,SAAO;AAAA,IACL,mBACE,WACA,gBACA,QACkC;AAClC,aAAO;AAAA,QACL,CAAC,0BACC,OAAO,QAAiC;AAAA,UACtC,UAAU;AAAA,UACV;AAAA,UACA,gBAAgB,EAAE,GAAG,gBAAgB,GAAG,sBAAsB;AAAA,UAC9D;AAAA,QACF,CAAC;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AChDO,IAAM,yBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAqBhC,yBAAyB;AAS/B,IAAMA,kBAAqC,CAAC,QAAQ,gBAAgB,gBAAgB,eAClF,OAAO;AAEF,SAASC,QAAO,QAAuB,cAAkCD,iBAAgB;AAC9F,SAAO;AAAA,IACL,eACE,WACA,gBACA,QAC8B;AAC9B,aAAO;AAAA,QACL,CAAC,0BACC,OAAO,QAA6B;AAAA,UAClC,UAAU;AAAA,UACV;AAAA,UACA,gBAAgB,EAAE,GAAG,gBAAgB,GAAG,sBAAsB;AAAA,UAC9D;AAAA,QACF,CAAC;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AC7DO,IAAM,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAwBhC,IAAME,kBAAqC,CAAC,QAAQ,gBAAgB,gBAAgB,eAClF,OAAO;AAEF,SAASC,QAAO,QAAuB,cAAkCD,iBAAgB;AAC9F,SAAO;AAAA,IACL,SACE,WACA,gBACA,QACwB;AACxB,aAAO;AAAA,QACL,CAAC,0BACC,OAAO,QAAuB;AAAA,UAC5B,UAAU;AAAA,UACV;AAAA,UACA,gBAAgB,EAAE,GAAG,gBAAgB,GAAG,sBAAsB;AAAA,UAC9D;AAAA,QACF,CAAC;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;","names":["defaultWrapper","getSdk","defaultWrapper","getSdk"]}
|
|
@@ -0,0 +1,436 @@
|
|
|
1
|
+
// src/gql/assertions.ts
|
|
2
|
+
function assertRepoInput(input) {
|
|
3
|
+
if (input.owner.trim().length === 0 || input.name.trim().length === 0) {
|
|
4
|
+
throw new Error("Repository owner and name are required");
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
function assertIssueInput(input) {
|
|
8
|
+
if (input.owner.trim().length === 0 || input.name.trim().length === 0) {
|
|
9
|
+
throw new Error("Repository owner and name are required");
|
|
10
|
+
}
|
|
11
|
+
if (!Number.isInteger(input.issueNumber) || input.issueNumber <= 0) {
|
|
12
|
+
throw new Error("Issue number must be a positive integer");
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function assertIssueListInput(input) {
|
|
16
|
+
if (input.owner.trim().length === 0 || input.name.trim().length === 0) {
|
|
17
|
+
throw new Error("Repository owner and name are required");
|
|
18
|
+
}
|
|
19
|
+
if (!Number.isInteger(input.first) || input.first <= 0) {
|
|
20
|
+
throw new Error("List page size must be a positive integer");
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function assertIssueCommentsListInput(input) {
|
|
24
|
+
if (input.owner.trim().length === 0 || input.name.trim().length === 0) {
|
|
25
|
+
throw new Error("Repository owner and name are required");
|
|
26
|
+
}
|
|
27
|
+
if (!Number.isInteger(input.issueNumber) || input.issueNumber <= 0) {
|
|
28
|
+
throw new Error("Issue number must be a positive integer");
|
|
29
|
+
}
|
|
30
|
+
if (!Number.isInteger(input.first) || input.first <= 0) {
|
|
31
|
+
throw new Error("List page size must be a positive integer");
|
|
32
|
+
}
|
|
33
|
+
if (input.after !== void 0 && input.after !== null && typeof input.after !== "string") {
|
|
34
|
+
throw new Error("After cursor must be a string");
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function assertNonEmptyString(value, fieldName) {
|
|
38
|
+
if (typeof value !== "string" || value.trim().length === 0) {
|
|
39
|
+
throw new Error(`${fieldName} is required`);
|
|
40
|
+
}
|
|
41
|
+
return value;
|
|
42
|
+
}
|
|
43
|
+
function assertOptionalString(value, fieldName) {
|
|
44
|
+
if (value === void 0) {
|
|
45
|
+
return void 0;
|
|
46
|
+
}
|
|
47
|
+
if (typeof value !== "string") {
|
|
48
|
+
throw new Error(`${fieldName} must be a string`);
|
|
49
|
+
}
|
|
50
|
+
return value;
|
|
51
|
+
}
|
|
52
|
+
function assertStringArray(value, fieldName) {
|
|
53
|
+
if (!Array.isArray(value)) {
|
|
54
|
+
throw new Error(`${fieldName} must be an array of non-empty strings`);
|
|
55
|
+
}
|
|
56
|
+
if (value.length === 0) {
|
|
57
|
+
throw new Error(`${fieldName} must not be empty`);
|
|
58
|
+
}
|
|
59
|
+
if (value.some((entry) => typeof entry !== "string" || entry.trim().length === 0)) {
|
|
60
|
+
throw new Error(`${fieldName} must be an array of non-empty strings`);
|
|
61
|
+
}
|
|
62
|
+
return value;
|
|
63
|
+
}
|
|
64
|
+
function assertIssueCreateInput(input) {
|
|
65
|
+
assertRepoInput({ owner: input.owner, name: input.name });
|
|
66
|
+
assertNonEmptyString(input.title, "Issue title");
|
|
67
|
+
assertOptionalString(input.body, "Issue body");
|
|
68
|
+
}
|
|
69
|
+
function assertIssueUpdateInput(input) {
|
|
70
|
+
assertIssueInput({
|
|
71
|
+
owner: input.owner,
|
|
72
|
+
name: input.name,
|
|
73
|
+
issueNumber: input.issueNumber
|
|
74
|
+
});
|
|
75
|
+
if (input.title === void 0 && input.body === void 0) {
|
|
76
|
+
throw new Error("Issue update requires at least one field");
|
|
77
|
+
}
|
|
78
|
+
if (input.title !== void 0) {
|
|
79
|
+
assertOptionalString(input.title, "Issue title");
|
|
80
|
+
}
|
|
81
|
+
if (input.body !== void 0) {
|
|
82
|
+
assertOptionalString(input.body, "Issue body");
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function assertIssueMutationInput(input) {
|
|
86
|
+
assertIssueInput({
|
|
87
|
+
owner: input.owner,
|
|
88
|
+
name: input.name,
|
|
89
|
+
issueNumber: input.issueNumber
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
function assertIssueLabelsUpdateInput(input) {
|
|
93
|
+
assertIssueInput({
|
|
94
|
+
owner: input.owner,
|
|
95
|
+
name: input.name,
|
|
96
|
+
issueNumber: input.issueNumber
|
|
97
|
+
});
|
|
98
|
+
assertStringArray(input.labels, "Labels");
|
|
99
|
+
}
|
|
100
|
+
function assertIssueLabelsAddInput(input) {
|
|
101
|
+
assertIssueInput({
|
|
102
|
+
owner: input.owner,
|
|
103
|
+
name: input.name,
|
|
104
|
+
issueNumber: input.issueNumber
|
|
105
|
+
});
|
|
106
|
+
assertStringArray(input.labels, "Labels");
|
|
107
|
+
}
|
|
108
|
+
function assertIssueLabelsRemoveInput(input) {
|
|
109
|
+
assertIssueInput({
|
|
110
|
+
owner: input.owner,
|
|
111
|
+
name: input.name,
|
|
112
|
+
issueNumber: input.issueNumber
|
|
113
|
+
});
|
|
114
|
+
assertStringArray(input.labels, "Labels");
|
|
115
|
+
}
|
|
116
|
+
function assertIssueAssigneesUpdateInput(input) {
|
|
117
|
+
assertIssueInput({
|
|
118
|
+
owner: input.owner,
|
|
119
|
+
name: input.name,
|
|
120
|
+
issueNumber: input.issueNumber
|
|
121
|
+
});
|
|
122
|
+
assertStringArray(input.assignees, "Assignees");
|
|
123
|
+
}
|
|
124
|
+
function assertIssueAssigneesAddInput(input) {
|
|
125
|
+
assertIssueInput({
|
|
126
|
+
owner: input.owner,
|
|
127
|
+
name: input.name,
|
|
128
|
+
issueNumber: input.issueNumber
|
|
129
|
+
});
|
|
130
|
+
assertStringArray(input.assignees, "Assignees");
|
|
131
|
+
}
|
|
132
|
+
function assertIssueAssigneesRemoveInput(input) {
|
|
133
|
+
assertIssueInput({
|
|
134
|
+
owner: input.owner,
|
|
135
|
+
name: input.name,
|
|
136
|
+
issueNumber: input.issueNumber
|
|
137
|
+
});
|
|
138
|
+
assertStringArray(input.assignees, "Assignees");
|
|
139
|
+
}
|
|
140
|
+
function assertIssueMilestoneSetInput(input) {
|
|
141
|
+
assertIssueInput({
|
|
142
|
+
owner: input.owner,
|
|
143
|
+
name: input.name,
|
|
144
|
+
issueNumber: input.issueNumber
|
|
145
|
+
});
|
|
146
|
+
if (!Number.isInteger(input.milestoneNumber) || input.milestoneNumber <= 0) {
|
|
147
|
+
throw new Error("Milestone number must be a positive integer");
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
function assertIssueCommentCreateInput(input) {
|
|
151
|
+
assertIssueInput({
|
|
152
|
+
owner: input.owner,
|
|
153
|
+
name: input.name,
|
|
154
|
+
issueNumber: input.issueNumber
|
|
155
|
+
});
|
|
156
|
+
assertNonEmptyString(input.body, "Issue comment body");
|
|
157
|
+
}
|
|
158
|
+
function assertIssueLinkedPrsListInput(input) {
|
|
159
|
+
assertIssueInput(input);
|
|
160
|
+
}
|
|
161
|
+
function assertIssueRelationsGetInput(input) {
|
|
162
|
+
assertIssueInput(input);
|
|
163
|
+
}
|
|
164
|
+
function assertIssueParentSetInput(input) {
|
|
165
|
+
assertNonEmptyString(input.issueId, "Issue id");
|
|
166
|
+
assertNonEmptyString(input.parentIssueId, "Parent issue id");
|
|
167
|
+
}
|
|
168
|
+
function assertIssueParentRemoveInput(input) {
|
|
169
|
+
assertNonEmptyString(input.issueId, "Issue id");
|
|
170
|
+
}
|
|
171
|
+
function assertIssueBlockedByInput(input) {
|
|
172
|
+
assertNonEmptyString(input.issueId, "Issue id");
|
|
173
|
+
assertNonEmptyString(input.blockedByIssueId, "Blocked-by issue id");
|
|
174
|
+
}
|
|
175
|
+
function assertPrInput(input) {
|
|
176
|
+
if (input.owner.trim().length === 0 || input.name.trim().length === 0) {
|
|
177
|
+
throw new Error("Repository owner and name are required");
|
|
178
|
+
}
|
|
179
|
+
if (!Number.isInteger(input.prNumber) || input.prNumber <= 0) {
|
|
180
|
+
throw new Error("PR number must be a positive integer");
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
function assertPrListInput(input) {
|
|
184
|
+
if (input.owner.trim().length === 0 || input.name.trim().length === 0) {
|
|
185
|
+
throw new Error("Repository owner and name are required");
|
|
186
|
+
}
|
|
187
|
+
if (!Number.isInteger(input.first) || input.first <= 0) {
|
|
188
|
+
throw new Error("List page size must be a positive integer");
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
function assertPrReviewsListInput(input) {
|
|
192
|
+
if (typeof input.owner !== "string" || typeof input.name !== "string" || input.owner.trim().length === 0 || input.name.trim().length === 0) {
|
|
193
|
+
throw new Error("Repository owner and name are required");
|
|
194
|
+
}
|
|
195
|
+
if (!Number.isInteger(input.prNumber) || input.prNumber <= 0) {
|
|
196
|
+
throw new Error("PR number must be a positive integer");
|
|
197
|
+
}
|
|
198
|
+
if (!Number.isInteger(input.first) || input.first <= 0) {
|
|
199
|
+
throw new Error("List page size must be a positive integer");
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
function assertPrDiffListFilesInput(input) {
|
|
203
|
+
if (typeof input.owner !== "string" || typeof input.name !== "string" || input.owner.trim().length === 0 || input.name.trim().length === 0) {
|
|
204
|
+
throw new Error("Repository owner and name are required");
|
|
205
|
+
}
|
|
206
|
+
if (!Number.isInteger(input.prNumber) || input.prNumber <= 0) {
|
|
207
|
+
throw new Error("PR number must be a positive integer");
|
|
208
|
+
}
|
|
209
|
+
if (!Number.isInteger(input.first) || input.first <= 0) {
|
|
210
|
+
throw new Error("List page size must be a positive integer");
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
function assertPrCommentsListInput(input) {
|
|
214
|
+
if (typeof input.owner !== "string" || typeof input.name !== "string" || input.owner.trim().length === 0 || input.name.trim().length === 0) {
|
|
215
|
+
throw new Error("Repository owner and name are required");
|
|
216
|
+
}
|
|
217
|
+
if (!Number.isInteger(input.prNumber) || input.prNumber <= 0) {
|
|
218
|
+
throw new Error("PR number must be a positive integer");
|
|
219
|
+
}
|
|
220
|
+
if (!Number.isInteger(input.first) || input.first <= 0) {
|
|
221
|
+
throw new Error("List page size must be a positive integer");
|
|
222
|
+
}
|
|
223
|
+
if (input.unresolvedOnly !== void 0 && typeof input.unresolvedOnly !== "boolean") {
|
|
224
|
+
throw new Error("unresolvedOnly must be a boolean");
|
|
225
|
+
}
|
|
226
|
+
if (input.includeOutdated !== void 0 && typeof input.includeOutdated !== "boolean") {
|
|
227
|
+
throw new Error("includeOutdated must be a boolean");
|
|
228
|
+
}
|
|
229
|
+
if (input.after !== void 0 && input.after !== null && typeof input.after !== "string") {
|
|
230
|
+
throw new Error("After cursor must be a string");
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
function asRecord(value) {
|
|
234
|
+
return typeof value === "object" && value !== null && !Array.isArray(value) ? value : null;
|
|
235
|
+
}
|
|
236
|
+
function assertReviewThreadInput(input) {
|
|
237
|
+
if (typeof input.threadId !== "string" || input.threadId.trim().length === 0) {
|
|
238
|
+
throw new Error("Review thread id is required");
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
function assertReplyToReviewThreadInput(input) {
|
|
242
|
+
assertReviewThreadInput(input);
|
|
243
|
+
if (typeof input.body !== "string" || input.body.trim().length === 0) {
|
|
244
|
+
throw new Error("Reply body is required");
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
function assertRepoAndPaginationInput(input) {
|
|
248
|
+
if (input.owner.trim().length === 0 || input.name.trim().length === 0) {
|
|
249
|
+
throw new Error("Repository owner and name are required");
|
|
250
|
+
}
|
|
251
|
+
if (!Number.isInteger(input.first) || input.first <= 0 || input.first > 100) {
|
|
252
|
+
throw new Error("List page size must be a positive integer between 1 and 100");
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
function assertReleaseViewInput(input) {
|
|
256
|
+
if (input.owner.trim().length === 0 || input.name.trim().length === 0) {
|
|
257
|
+
throw new Error("Repository owner and name are required");
|
|
258
|
+
}
|
|
259
|
+
if (typeof input.tagName !== "string" || input.tagName.trim().length === 0) {
|
|
260
|
+
throw new Error("Release tag name is required");
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
function assertProjectInput(input) {
|
|
264
|
+
assertNonEmptyString(input.owner, "Project owner");
|
|
265
|
+
if (!Number.isInteger(input.projectNumber) || input.projectNumber <= 0) {
|
|
266
|
+
throw new Error("Project number must be a positive integer");
|
|
267
|
+
}
|
|
268
|
+
if (input.first !== void 0 && (!Number.isInteger(input.first) || input.first < 1 || input.first > 100)) {
|
|
269
|
+
throw new Error("`first` must be an integer between 1 and 100");
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
function assertProjectOrgInput(input) {
|
|
273
|
+
if (input.org.trim().length === 0) {
|
|
274
|
+
throw new Error("Organization name is required");
|
|
275
|
+
}
|
|
276
|
+
if (!Number.isInteger(input.projectNumber) || input.projectNumber <= 0) {
|
|
277
|
+
throw new Error("Project number must be a positive integer");
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
function assertProjectUserInput(input) {
|
|
281
|
+
if (input.user.trim().length === 0) {
|
|
282
|
+
throw new Error("User login is required");
|
|
283
|
+
}
|
|
284
|
+
if (!Number.isInteger(input.projectNumber) || input.projectNumber <= 0) {
|
|
285
|
+
throw new Error("Project number must be a positive integer");
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
function assertPrCreateInput(input) {
|
|
289
|
+
assertRepoInput({ owner: input.owner, name: input.name });
|
|
290
|
+
assertNonEmptyString(input.title, "PR title");
|
|
291
|
+
assertNonEmptyString(input.headRefName, "Head branch name");
|
|
292
|
+
assertNonEmptyString(input.baseRefName, "Base branch name");
|
|
293
|
+
assertOptionalString(input.body, "PR body");
|
|
294
|
+
if (input.draft !== void 0 && typeof input.draft !== "boolean") {
|
|
295
|
+
throw new Error("draft must be a boolean");
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
function assertPrUpdateInput(input) {
|
|
299
|
+
assertPrInput({
|
|
300
|
+
owner: input.owner,
|
|
301
|
+
name: input.name,
|
|
302
|
+
prNumber: input.prNumber
|
|
303
|
+
});
|
|
304
|
+
if (input.title === void 0 && input.body === void 0 && input.draft === void 0) {
|
|
305
|
+
throw new Error("At least one of title, body, or draft must be provided");
|
|
306
|
+
}
|
|
307
|
+
assertOptionalString(input.title, "PR title");
|
|
308
|
+
assertOptionalString(input.body, "PR body");
|
|
309
|
+
if (input.draft !== void 0 && typeof input.draft !== "boolean") {
|
|
310
|
+
throw new Error("draft must be a boolean");
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
var VALID_MERGE_METHODS = /* @__PURE__ */ new Set(["MERGE", "SQUASH", "REBASE"]);
|
|
314
|
+
var VALID_BRANCH_UPDATE_METHODS = /* @__PURE__ */ new Set(["MERGE", "REBASE"]);
|
|
315
|
+
function assertPrMergeInput(input) {
|
|
316
|
+
assertPrInput({
|
|
317
|
+
owner: input.owner,
|
|
318
|
+
name: input.name,
|
|
319
|
+
prNumber: input.prNumber
|
|
320
|
+
});
|
|
321
|
+
if (input.mergeMethod !== void 0 && !VALID_MERGE_METHODS.has(input.mergeMethod)) {
|
|
322
|
+
throw new Error(
|
|
323
|
+
`mergeMethod "${input.mergeMethod}" is invalid. Expected one of: MERGE, SQUASH, REBASE`
|
|
324
|
+
);
|
|
325
|
+
}
|
|
326
|
+
if (input.deleteBranch !== void 0 && typeof input.deleteBranch !== "boolean") {
|
|
327
|
+
throw new Error("deleteBranch must be a boolean");
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
function assertPrBranchUpdateInput(input) {
|
|
331
|
+
assertPrInput({
|
|
332
|
+
owner: input.owner,
|
|
333
|
+
name: input.name,
|
|
334
|
+
prNumber: input.prNumber
|
|
335
|
+
});
|
|
336
|
+
if (input.updateMethod !== void 0 && !VALID_BRANCH_UPDATE_METHODS.has(input.updateMethod)) {
|
|
337
|
+
throw new Error(
|
|
338
|
+
`updateMethod "${input.updateMethod}" is invalid. Expected one of: MERGE, REBASE`
|
|
339
|
+
);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
function assertPrAssigneesInput(input) {
|
|
343
|
+
assertPrInput({
|
|
344
|
+
owner: input.owner,
|
|
345
|
+
name: input.name,
|
|
346
|
+
prNumber: input.prNumber
|
|
347
|
+
});
|
|
348
|
+
assertStringArray(input.assignees, "Assignees");
|
|
349
|
+
}
|
|
350
|
+
function assertPrReviewsRequestInput(input) {
|
|
351
|
+
assertPrInput({
|
|
352
|
+
owner: input.owner,
|
|
353
|
+
name: input.name,
|
|
354
|
+
prNumber: input.prNumber
|
|
355
|
+
});
|
|
356
|
+
assertStringArray(input.reviewers, "Reviewers");
|
|
357
|
+
}
|
|
358
|
+
var VALID_REVIEW_EVENTS = /* @__PURE__ */ new Set(["APPROVE", "COMMENT", "REQUEST_CHANGES"]);
|
|
359
|
+
function assertDraftComment(comment, index) {
|
|
360
|
+
if (typeof comment !== "object" || comment === null) {
|
|
361
|
+
throw new Error(`comments[${index}] must be an object`);
|
|
362
|
+
}
|
|
363
|
+
const c = comment;
|
|
364
|
+
assertNonEmptyString(c.path, `comments[${index}].path`);
|
|
365
|
+
assertNonEmptyString(c.body, `comments[${index}].body`);
|
|
366
|
+
if (!Number.isInteger(c.line) || c.line <= 0) {
|
|
367
|
+
throw new Error(`comments[${index}].line must be a positive integer`);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
function assertPrReviewSubmitInput(input) {
|
|
371
|
+
assertNonEmptyString(input.owner, "Repository owner");
|
|
372
|
+
assertNonEmptyString(input.name, "Repository name");
|
|
373
|
+
if (!Number.isInteger(input.prNumber) || input.prNumber <= 0) {
|
|
374
|
+
throw new Error("PR number must be a positive integer");
|
|
375
|
+
}
|
|
376
|
+
if (!input.event || typeof input.event !== "string") {
|
|
377
|
+
throw new Error("Review event is required");
|
|
378
|
+
}
|
|
379
|
+
if (!VALID_REVIEW_EVENTS.has(input.event)) {
|
|
380
|
+
throw new Error(
|
|
381
|
+
`event "${input.event}" is invalid. Expected one of: APPROVE, COMMENT, REQUEST_CHANGES`
|
|
382
|
+
);
|
|
383
|
+
}
|
|
384
|
+
assertOptionalString(input.body, "Review body");
|
|
385
|
+
if (input.comments !== void 0) {
|
|
386
|
+
if (!Array.isArray(input.comments)) {
|
|
387
|
+
throw new Error("comments must be an array");
|
|
388
|
+
}
|
|
389
|
+
input.comments.forEach((c, i) => assertDraftComment(c, i));
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
export {
|
|
394
|
+
assertRepoInput,
|
|
395
|
+
assertIssueInput,
|
|
396
|
+
assertIssueListInput,
|
|
397
|
+
assertIssueCommentsListInput,
|
|
398
|
+
assertNonEmptyString,
|
|
399
|
+
assertIssueCreateInput,
|
|
400
|
+
assertIssueUpdateInput,
|
|
401
|
+
assertIssueMutationInput,
|
|
402
|
+
assertIssueLabelsUpdateInput,
|
|
403
|
+
assertIssueLabelsAddInput,
|
|
404
|
+
assertIssueLabelsRemoveInput,
|
|
405
|
+
assertIssueAssigneesUpdateInput,
|
|
406
|
+
assertIssueAssigneesAddInput,
|
|
407
|
+
assertIssueAssigneesRemoveInput,
|
|
408
|
+
assertIssueMilestoneSetInput,
|
|
409
|
+
assertIssueCommentCreateInput,
|
|
410
|
+
assertIssueLinkedPrsListInput,
|
|
411
|
+
assertIssueRelationsGetInput,
|
|
412
|
+
assertIssueParentSetInput,
|
|
413
|
+
assertIssueParentRemoveInput,
|
|
414
|
+
assertIssueBlockedByInput,
|
|
415
|
+
assertPrInput,
|
|
416
|
+
assertPrListInput,
|
|
417
|
+
assertPrReviewsListInput,
|
|
418
|
+
assertPrDiffListFilesInput,
|
|
419
|
+
assertPrCommentsListInput,
|
|
420
|
+
asRecord,
|
|
421
|
+
assertReviewThreadInput,
|
|
422
|
+
assertReplyToReviewThreadInput,
|
|
423
|
+
assertRepoAndPaginationInput,
|
|
424
|
+
assertReleaseViewInput,
|
|
425
|
+
assertProjectInput,
|
|
426
|
+
assertProjectOrgInput,
|
|
427
|
+
assertProjectUserInput,
|
|
428
|
+
assertPrCreateInput,
|
|
429
|
+
assertPrUpdateInput,
|
|
430
|
+
assertPrMergeInput,
|
|
431
|
+
assertPrBranchUpdateInput,
|
|
432
|
+
assertPrAssigneesInput,
|
|
433
|
+
assertPrReviewsRequestInput,
|
|
434
|
+
assertPrReviewSubmitInput
|
|
435
|
+
};
|
|
436
|
+
//# sourceMappingURL=chunk-OQWLEFAH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/gql/assertions.ts"],"sourcesContent":["import type {\n DraftComment,\n IssueAssigneesAddInput,\n IssueAssigneesRemoveInput,\n IssueAssigneesUpdateInput,\n IssueBlockedByInput,\n IssueCommentCreateInput,\n IssueCommentsListInput,\n IssueCreateInput,\n IssueLabelsAddInput,\n IssueLabelsRemoveInput,\n IssueLabelsUpdateInput,\n IssueLinkedPrsListInput,\n IssueListInput,\n IssueMilestoneSetInput,\n IssueMutationInput,\n IssueParentRemoveInput,\n IssueParentSetInput,\n IssueRelationsGetInput,\n IssueUpdateInput,\n IssueViewInput,\n PrAssigneesAddInput,\n PrAssigneesRemoveInput,\n PrBranchUpdateInput,\n PrCommentsListInput,\n PrCreateInput,\n PrDiffListFilesInput,\n PrListInput,\n PrMergeInput,\n ProjectV2OrgViewInput,\n ProjectV2UserViewInput,\n PrReviewSubmitInput,\n PrReviewsListInput,\n PrReviewsRequestInput,\n PrUpdateInput,\n PrViewInput,\n ReleaseViewInput,\n ReplyToReviewThreadInput,\n RepoViewInput,\n ReviewThreadMutationInput,\n} from \"./types.js\"\n\nexport function assertRepoInput(input: RepoViewInput): void {\n if (input.owner.trim().length === 0 || input.name.trim().length === 0) {\n throw new Error(\"Repository owner and name are required\")\n }\n}\n\nexport function assertIssueInput(input: IssueViewInput): void {\n if (input.owner.trim().length === 0 || input.name.trim().length === 0) {\n throw new Error(\"Repository owner and name are required\")\n }\n if (!Number.isInteger(input.issueNumber) || input.issueNumber <= 0) {\n throw new Error(\"Issue number must be a positive integer\")\n }\n}\n\nexport function assertIssueListInput(input: IssueListInput): void {\n if (input.owner.trim().length === 0 || input.name.trim().length === 0) {\n throw new Error(\"Repository owner and name are required\")\n }\n if (!Number.isInteger(input.first) || input.first <= 0) {\n throw new Error(\"List page size must be a positive integer\")\n }\n}\n\nexport function assertIssueCommentsListInput(input: IssueCommentsListInput): void {\n if (input.owner.trim().length === 0 || input.name.trim().length === 0) {\n throw new Error(\"Repository owner and name are required\")\n }\n if (!Number.isInteger(input.issueNumber) || input.issueNumber <= 0) {\n throw new Error(\"Issue number must be a positive integer\")\n }\n if (!Number.isInteger(input.first) || input.first <= 0) {\n throw new Error(\"List page size must be a positive integer\")\n }\n if (input.after !== undefined && input.after !== null && typeof input.after !== \"string\") {\n throw new Error(\"After cursor must be a string\")\n }\n}\n\nexport function assertNonEmptyString(value: unknown, fieldName: string): string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new Error(`${fieldName} is required`)\n }\n\n return value\n}\n\nexport function assertOptionalString(value: unknown, fieldName: string): string | undefined {\n if (value === undefined) {\n return undefined\n }\n\n if (typeof value !== \"string\") {\n throw new Error(`${fieldName} must be a string`)\n }\n\n return value\n}\n\nexport function assertStringArray(value: unknown, fieldName: string): string[] {\n if (!Array.isArray(value)) {\n throw new Error(`${fieldName} must be an array of non-empty strings`)\n }\n\n if (value.length === 0) {\n throw new Error(`${fieldName} must not be empty`)\n }\n\n if (value.some((entry) => typeof entry !== \"string\" || entry.trim().length === 0)) {\n throw new Error(`${fieldName} must be an array of non-empty strings`)\n }\n\n return value\n}\n\nexport function assertIssueCreateInput(input: IssueCreateInput): void {\n assertRepoInput({ owner: input.owner, name: input.name })\n assertNonEmptyString(input.title, \"Issue title\")\n assertOptionalString(input.body, \"Issue body\")\n}\n\nexport function assertIssueUpdateInput(input: IssueUpdateInput): void {\n assertIssueInput({\n owner: input.owner,\n name: input.name,\n issueNumber: input.issueNumber,\n })\n if (input.title === undefined && input.body === undefined) {\n throw new Error(\"Issue update requires at least one field\")\n }\n if (input.title !== undefined) {\n assertOptionalString(input.title, \"Issue title\")\n }\n if (input.body !== undefined) {\n assertOptionalString(input.body, \"Issue body\")\n }\n}\n\nexport function assertIssueMutationInput(input: IssueMutationInput): void {\n assertIssueInput({\n owner: input.owner,\n name: input.name,\n issueNumber: input.issueNumber,\n })\n}\n\nexport function assertIssueLabelsUpdateInput(input: IssueLabelsUpdateInput): void {\n assertIssueInput({\n owner: input.owner,\n name: input.name,\n issueNumber: input.issueNumber,\n })\n assertStringArray(input.labels, \"Labels\")\n}\n\nexport function assertIssueLabelsAddInput(input: IssueLabelsAddInput): void {\n assertIssueInput({\n owner: input.owner,\n name: input.name,\n issueNumber: input.issueNumber,\n })\n assertStringArray(input.labels, \"Labels\")\n}\n\nexport function assertIssueLabelsRemoveInput(input: IssueLabelsRemoveInput): void {\n assertIssueInput({\n owner: input.owner,\n name: input.name,\n issueNumber: input.issueNumber,\n })\n assertStringArray(input.labels, \"Labels\")\n}\n\nexport function assertIssueAssigneesUpdateInput(input: IssueAssigneesUpdateInput): void {\n assertIssueInput({\n owner: input.owner,\n name: input.name,\n issueNumber: input.issueNumber,\n })\n assertStringArray(input.assignees, \"Assignees\")\n}\n\nexport function assertIssueAssigneesAddInput(input: IssueAssigneesAddInput): void {\n assertIssueInput({\n owner: input.owner,\n name: input.name,\n issueNumber: input.issueNumber,\n })\n assertStringArray(input.assignees, \"Assignees\")\n}\n\nexport function assertIssueAssigneesRemoveInput(input: IssueAssigneesRemoveInput): void {\n assertIssueInput({\n owner: input.owner,\n name: input.name,\n issueNumber: input.issueNumber,\n })\n assertStringArray(input.assignees, \"Assignees\")\n}\n\nexport function assertIssueMilestoneSetInput(input: IssueMilestoneSetInput): void {\n assertIssueInput({\n owner: input.owner,\n name: input.name,\n issueNumber: input.issueNumber,\n })\n if (!Number.isInteger(input.milestoneNumber) || input.milestoneNumber <= 0) {\n throw new Error(\"Milestone number must be a positive integer\")\n }\n}\n\nexport function assertIssueCommentCreateInput(input: IssueCommentCreateInput): void {\n assertIssueInput({\n owner: input.owner,\n name: input.name,\n issueNumber: input.issueNumber,\n })\n assertNonEmptyString(input.body, \"Issue comment body\")\n}\n\nexport function assertIssueLinkedPrsListInput(input: IssueLinkedPrsListInput): void {\n assertIssueInput(input)\n}\n\nexport function assertIssueRelationsGetInput(input: IssueRelationsGetInput): void {\n assertIssueInput(input)\n}\n\nexport function assertIssueParentSetInput(input: IssueParentSetInput): void {\n assertNonEmptyString(input.issueId, \"Issue id\")\n assertNonEmptyString(input.parentIssueId, \"Parent issue id\")\n}\n\nexport function assertIssueParentRemoveInput(input: IssueParentRemoveInput): void {\n assertNonEmptyString(input.issueId, \"Issue id\")\n}\n\nexport function assertIssueBlockedByInput(input: IssueBlockedByInput): void {\n assertNonEmptyString(input.issueId, \"Issue id\")\n assertNonEmptyString(input.blockedByIssueId, \"Blocked-by issue id\")\n}\n\nexport function assertPrInput(input: PrViewInput): void {\n if (input.owner.trim().length === 0 || input.name.trim().length === 0) {\n throw new Error(\"Repository owner and name are required\")\n }\n if (!Number.isInteger(input.prNumber) || input.prNumber <= 0) {\n throw new Error(\"PR number must be a positive integer\")\n }\n}\n\nexport function assertPrListInput(input: PrListInput): void {\n if (input.owner.trim().length === 0 || input.name.trim().length === 0) {\n throw new Error(\"Repository owner and name are required\")\n }\n if (!Number.isInteger(input.first) || input.first <= 0) {\n throw new Error(\"List page size must be a positive integer\")\n }\n}\n\nexport function assertPrReviewsListInput(input: PrReviewsListInput): void {\n if (\n typeof input.owner !== \"string\" ||\n typeof input.name !== \"string\" ||\n input.owner.trim().length === 0 ||\n input.name.trim().length === 0\n ) {\n throw new Error(\"Repository owner and name are required\")\n }\n if (!Number.isInteger(input.prNumber) || input.prNumber <= 0) {\n throw new Error(\"PR number must be a positive integer\")\n }\n if (!Number.isInteger(input.first) || input.first <= 0) {\n throw new Error(\"List page size must be a positive integer\")\n }\n}\n\nexport function assertPrDiffListFilesInput(input: PrDiffListFilesInput): void {\n if (\n typeof input.owner !== \"string\" ||\n typeof input.name !== \"string\" ||\n input.owner.trim().length === 0 ||\n input.name.trim().length === 0\n ) {\n throw new Error(\"Repository owner and name are required\")\n }\n if (!Number.isInteger(input.prNumber) || input.prNumber <= 0) {\n throw new Error(\"PR number must be a positive integer\")\n }\n if (!Number.isInteger(input.first) || input.first <= 0) {\n throw new Error(\"List page size must be a positive integer\")\n }\n}\n\nexport function assertPrCommentsListInput(input: PrCommentsListInput): void {\n if (\n typeof input.owner !== \"string\" ||\n typeof input.name !== \"string\" ||\n input.owner.trim().length === 0 ||\n input.name.trim().length === 0\n ) {\n throw new Error(\"Repository owner and name are required\")\n }\n if (!Number.isInteger(input.prNumber) || input.prNumber <= 0) {\n throw new Error(\"PR number must be a positive integer\")\n }\n if (!Number.isInteger(input.first) || input.first <= 0) {\n throw new Error(\"List page size must be a positive integer\")\n }\n if (input.unresolvedOnly !== undefined && typeof input.unresolvedOnly !== \"boolean\") {\n throw new Error(\"unresolvedOnly must be a boolean\")\n }\n if (input.includeOutdated !== undefined && typeof input.includeOutdated !== \"boolean\") {\n throw new Error(\"includeOutdated must be a boolean\")\n }\n if (input.after !== undefined && input.after !== null && typeof input.after !== \"string\") {\n throw new Error(\"After cursor must be a string\")\n }\n}\n\nexport function asRecord(value: unknown): Record<string, unknown> | null {\n return typeof value === \"object\" && value !== null && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : null\n}\n\nexport function assertReviewThreadInput(input: ReviewThreadMutationInput): void {\n if (typeof input.threadId !== \"string\" || input.threadId.trim().length === 0) {\n throw new Error(\"Review thread id is required\")\n }\n}\n\nexport function assertReplyToReviewThreadInput(input: ReplyToReviewThreadInput): void {\n assertReviewThreadInput(input)\n if (typeof input.body !== \"string\" || input.body.trim().length === 0) {\n throw new Error(\"Reply body is required\")\n }\n}\n\nexport function assertRepoAndPaginationInput(input: {\n owner: string\n name: string\n first: number\n}): void {\n if (input.owner.trim().length === 0 || input.name.trim().length === 0) {\n throw new Error(\"Repository owner and name are required\")\n }\n if (!Number.isInteger(input.first) || input.first <= 0 || input.first > 100) {\n throw new Error(\"List page size must be a positive integer between 1 and 100\")\n }\n}\n\nexport function assertReleaseViewInput(input: ReleaseViewInput): void {\n if (input.owner.trim().length === 0 || input.name.trim().length === 0) {\n throw new Error(\"Repository owner and name are required\")\n }\n if (typeof input.tagName !== \"string\" || input.tagName.trim().length === 0) {\n throw new Error(\"Release tag name is required\")\n }\n}\n\nexport function assertProjectInput(input: {\n owner: string\n projectNumber: number\n first?: number\n}): void {\n assertNonEmptyString(input.owner, \"Project owner\")\n if (!Number.isInteger(input.projectNumber) || input.projectNumber <= 0) {\n throw new Error(\"Project number must be a positive integer\")\n }\n if (\n input.first !== undefined &&\n (!Number.isInteger(input.first) || input.first < 1 || input.first > 100)\n ) {\n throw new Error(\"`first` must be an integer between 1 and 100\")\n }\n}\n\nexport function assertProjectOrgInput(input: ProjectV2OrgViewInput): void {\n if (input.org.trim().length === 0) {\n throw new Error(\"Organization name is required\")\n }\n if (!Number.isInteger(input.projectNumber) || input.projectNumber <= 0) {\n throw new Error(\"Project number must be a positive integer\")\n }\n}\n\nexport function assertProjectUserInput(input: ProjectV2UserViewInput): void {\n if (input.user.trim().length === 0) {\n throw new Error(\"User login is required\")\n }\n if (!Number.isInteger(input.projectNumber) || input.projectNumber <= 0) {\n throw new Error(\"Project number must be a positive integer\")\n }\n}\n\nexport function assertPrCreateInput(input: PrCreateInput): void {\n assertRepoInput({ owner: input.owner, name: input.name })\n assertNonEmptyString(input.title, \"PR title\")\n assertNonEmptyString(input.headRefName, \"Head branch name\")\n assertNonEmptyString(input.baseRefName, \"Base branch name\")\n assertOptionalString(input.body, \"PR body\")\n if (input.draft !== undefined && typeof input.draft !== \"boolean\") {\n throw new Error(\"draft must be a boolean\")\n }\n}\n\nexport function assertPrUpdateInput(input: PrUpdateInput): void {\n assertPrInput({\n owner: input.owner,\n name: input.name,\n prNumber: input.prNumber,\n })\n if (input.title === undefined && input.body === undefined && input.draft === undefined) {\n throw new Error(\"At least one of title, body, or draft must be provided\")\n }\n assertOptionalString(input.title, \"PR title\")\n assertOptionalString(input.body, \"PR body\")\n if (input.draft !== undefined && typeof input.draft !== \"boolean\") {\n throw new Error(\"draft must be a boolean\")\n }\n}\n\nconst VALID_MERGE_METHODS = new Set([\"MERGE\", \"SQUASH\", \"REBASE\"])\nconst VALID_BRANCH_UPDATE_METHODS = new Set([\"MERGE\", \"REBASE\"])\n\nexport function assertPrMergeInput(input: PrMergeInput): void {\n assertPrInput({\n owner: input.owner,\n name: input.name,\n prNumber: input.prNumber,\n })\n if (input.mergeMethod !== undefined && !VALID_MERGE_METHODS.has(input.mergeMethod)) {\n throw new Error(\n `mergeMethod \"${input.mergeMethod}\" is invalid. Expected one of: MERGE, SQUASH, REBASE`,\n )\n }\n if (input.deleteBranch !== undefined && typeof input.deleteBranch !== \"boolean\") {\n throw new Error(\"deleteBranch must be a boolean\")\n }\n}\n\nexport function assertPrBranchUpdateInput(input: PrBranchUpdateInput): void {\n assertPrInput({\n owner: input.owner,\n name: input.name,\n prNumber: input.prNumber,\n })\n if (input.updateMethod !== undefined && !VALID_BRANCH_UPDATE_METHODS.has(input.updateMethod)) {\n throw new Error(\n `updateMethod \"${input.updateMethod}\" is invalid. Expected one of: MERGE, REBASE`,\n )\n }\n}\n\nexport function assertPrAssigneesInput(input: PrAssigneesAddInput | PrAssigneesRemoveInput): void {\n assertPrInput({\n owner: input.owner,\n name: input.name,\n prNumber: input.prNumber,\n })\n assertStringArray(input.assignees, \"Assignees\")\n}\n\nexport function assertPrReviewsRequestInput(input: PrReviewsRequestInput): void {\n assertPrInput({\n owner: input.owner,\n name: input.name,\n prNumber: input.prNumber,\n })\n assertStringArray(input.reviewers, \"Reviewers\")\n}\n\nconst VALID_REVIEW_EVENTS = new Set([\"APPROVE\", \"COMMENT\", \"REQUEST_CHANGES\"])\n\nfunction assertDraftComment(comment: unknown, index: number): void {\n if (typeof comment !== \"object\" || comment === null) {\n throw new Error(`comments[${index}] must be an object`)\n }\n const c = comment as DraftComment\n assertNonEmptyString(c.path, `comments[${index}].path`)\n assertNonEmptyString(c.body, `comments[${index}].body`)\n if (!Number.isInteger(c.line) || c.line <= 0) {\n throw new Error(`comments[${index}].line must be a positive integer`)\n }\n}\n\nexport function assertPrReviewSubmitInput(input: PrReviewSubmitInput): void {\n assertNonEmptyString(input.owner, \"Repository owner\")\n assertNonEmptyString(input.name, \"Repository name\")\n if (!Number.isInteger(input.prNumber) || input.prNumber <= 0) {\n throw new Error(\"PR number must be a positive integer\")\n }\n if (!input.event || typeof input.event !== \"string\") {\n throw new Error(\"Review event is required\")\n }\n if (!VALID_REVIEW_EVENTS.has(input.event)) {\n throw new Error(\n `event \"${input.event}\" is invalid. Expected one of: APPROVE, COMMENT, REQUEST_CHANGES`,\n )\n }\n assertOptionalString(input.body, \"Review body\")\n if (input.comments !== undefined) {\n if (!Array.isArray(input.comments)) {\n throw new Error(\"comments must be an array\")\n }\n input.comments.forEach((c, i) => assertDraftComment(c, i))\n }\n}\n"],"mappings":"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","names":[]}
|