@ghx-dev/core 0.2.0 → 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.
Files changed (158) hide show
  1. package/.claude-plugin/plugin.json +2 -2
  2. package/README.md +44 -37
  3. package/dist/cards/issue.assignees.add.yaml +1 -0
  4. package/dist/cards/issue.assignees.remove.yaml +1 -0
  5. package/dist/cards/issue.assignees.set.yaml +1 -0
  6. package/dist/cards/issue.close.yaml +1 -0
  7. package/dist/cards/issue.comments.create.yaml +1 -0
  8. package/dist/cards/issue.comments.list.yaml +1 -0
  9. package/dist/cards/issue.create.yaml +1 -0
  10. package/dist/cards/issue.delete.yaml +1 -0
  11. package/dist/cards/issue.labels.add.yaml +1 -0
  12. package/dist/cards/issue.labels.remove.yaml +1 -0
  13. package/dist/cards/issue.labels.set.yaml +1 -0
  14. package/dist/cards/issue.list.yaml +1 -0
  15. package/dist/cards/issue.milestone.clear.yaml +1 -0
  16. package/dist/cards/issue.milestone.set.yaml +1 -0
  17. package/dist/cards/issue.relations.blocked_by.add.yaml +1 -0
  18. package/dist/cards/issue.relations.blocked_by.remove.yaml +1 -0
  19. package/dist/cards/issue.relations.parent.remove.yaml +1 -0
  20. package/dist/cards/issue.relations.parent.set.yaml +1 -0
  21. package/dist/cards/issue.relations.prs.list.yaml +1 -0
  22. package/dist/cards/issue.relations.view.yaml +1 -0
  23. package/dist/cards/issue.reopen.yaml +1 -0
  24. package/dist/cards/issue.update.yaml +1 -0
  25. package/dist/cards/issue.view.yaml +1 -0
  26. package/dist/cards/pr.assignees.add.yaml +6 -2
  27. package/dist/cards/pr.assignees.remove.yaml +6 -2
  28. package/dist/cards/pr.branch.update.yaml +6 -2
  29. package/dist/cards/pr.create.yaml +7 -3
  30. package/dist/cards/pr.diff.files.yaml +1 -0
  31. package/dist/cards/pr.list.yaml +1 -0
  32. package/dist/cards/pr.merge.status.yaml +1 -0
  33. package/dist/cards/pr.merge.yaml +9 -3
  34. package/dist/cards/pr.reviews.list.yaml +1 -0
  35. package/dist/cards/pr.reviews.request.yaml +6 -3
  36. package/dist/cards/pr.reviews.submit.yaml +1 -0
  37. package/dist/cards/pr.threads.list.yaml +1 -0
  38. package/dist/cards/pr.threads.reply.yaml +1 -0
  39. package/dist/cards/pr.threads.resolve.yaml +1 -0
  40. package/dist/cards/pr.threads.unresolve.yaml +1 -0
  41. package/dist/cards/pr.update.yaml +7 -2
  42. package/dist/cards/pr.view.yaml +1 -0
  43. package/dist/cards/project_v2.fields.list.yaml +18 -2
  44. package/dist/cards/project_v2.items.field.update.yaml +8 -5
  45. package/dist/cards/project_v2.items.issue.add.yaml +9 -5
  46. package/dist/cards/project_v2.items.issue.remove.yaml +8 -5
  47. package/dist/cards/project_v2.items.list.yaml +8 -2
  48. package/dist/cards/project_v2.org.view.yaml +6 -2
  49. package/dist/cards/project_v2.user.view.yaml +6 -2
  50. package/dist/cards/release.list.yaml +8 -3
  51. package/dist/cards/release.view.yaml +8 -4
  52. package/dist/cards/repo.issue_types.list.yaml +7 -3
  53. package/dist/cards/repo.labels.list.yaml +7 -2
  54. package/dist/cards/repo.view.yaml +1 -0
  55. package/dist/chunk-7HUKYNI2.js +536 -0
  56. package/dist/chunk-7HUKYNI2.js.map +1 -0
  57. package/dist/chunk-GQO6BHJV.js +98 -0
  58. package/dist/chunk-GQO6BHJV.js.map +1 -0
  59. package/dist/chunk-H7CLZHRO.js +280 -0
  60. package/dist/chunk-H7CLZHRO.js.map +1 -0
  61. package/dist/{chunk-3P3KHWFU.js → chunk-M5PJLKL5.js} +1079 -726
  62. package/dist/chunk-M5PJLKL5.js.map +1 -0
  63. package/dist/chunk-NQ53ETYV.js +128 -0
  64. package/dist/chunk-NQ53ETYV.js.map +1 -0
  65. package/dist/{chunk-BIWBJA2F.js → chunk-OQWLEFAH.js} +220 -12
  66. package/dist/chunk-OQWLEFAH.js.map +1 -0
  67. package/dist/{chunk-Q7RCIK2C.js → chunk-Q2NW7DJE.js} +167 -62
  68. package/dist/chunk-Q2NW7DJE.js.map +1 -0
  69. package/dist/{pr-queries-UOEOXIJQ.js → chunk-QRHKAMRY.js} +11 -131
  70. package/dist/chunk-QRHKAMRY.js.map +1 -0
  71. package/dist/{issue-queries-GRA4MKPD.js → chunk-TGL33GEA.js} +7 -83
  72. package/dist/chunk-TGL33GEA.js.map +1 -0
  73. package/dist/chunk-ZGBVX2VG.js +32 -0
  74. package/dist/chunk-ZGBVX2VG.js.map +1 -0
  75. package/dist/cli/index.js +79 -14
  76. package/dist/cli/index.js.map +1 -1
  77. package/dist/core/registry/cards/issue.assignees.add.yaml +1 -0
  78. package/dist/core/registry/cards/issue.assignees.remove.yaml +1 -0
  79. package/dist/core/registry/cards/issue.assignees.set.yaml +1 -0
  80. package/dist/core/registry/cards/issue.close.yaml +1 -0
  81. package/dist/core/registry/cards/issue.comments.create.yaml +1 -0
  82. package/dist/core/registry/cards/issue.comments.list.yaml +1 -0
  83. package/dist/core/registry/cards/issue.create.yaml +1 -0
  84. package/dist/core/registry/cards/issue.delete.yaml +1 -0
  85. package/dist/core/registry/cards/issue.labels.add.yaml +1 -0
  86. package/dist/core/registry/cards/issue.labels.remove.yaml +1 -0
  87. package/dist/core/registry/cards/issue.labels.set.yaml +1 -0
  88. package/dist/core/registry/cards/issue.list.yaml +1 -0
  89. package/dist/core/registry/cards/issue.milestone.clear.yaml +1 -0
  90. package/dist/core/registry/cards/issue.milestone.set.yaml +1 -0
  91. package/dist/core/registry/cards/issue.relations.blocked_by.add.yaml +1 -0
  92. package/dist/core/registry/cards/issue.relations.blocked_by.remove.yaml +1 -0
  93. package/dist/core/registry/cards/issue.relations.parent.remove.yaml +1 -0
  94. package/dist/core/registry/cards/issue.relations.parent.set.yaml +1 -0
  95. package/dist/core/registry/cards/issue.relations.prs.list.yaml +1 -0
  96. package/dist/core/registry/cards/issue.relations.view.yaml +1 -0
  97. package/dist/core/registry/cards/issue.reopen.yaml +1 -0
  98. package/dist/core/registry/cards/issue.update.yaml +1 -0
  99. package/dist/core/registry/cards/issue.view.yaml +1 -0
  100. package/dist/core/registry/cards/pr.assignees.add.yaml +6 -2
  101. package/dist/core/registry/cards/pr.assignees.remove.yaml +6 -2
  102. package/dist/core/registry/cards/pr.branch.update.yaml +6 -2
  103. package/dist/core/registry/cards/pr.create.yaml +7 -3
  104. package/dist/core/registry/cards/pr.diff.files.yaml +1 -0
  105. package/dist/core/registry/cards/pr.list.yaml +1 -0
  106. package/dist/core/registry/cards/pr.merge.status.yaml +1 -0
  107. package/dist/core/registry/cards/pr.merge.yaml +9 -3
  108. package/dist/core/registry/cards/pr.reviews.list.yaml +1 -0
  109. package/dist/core/registry/cards/pr.reviews.request.yaml +6 -3
  110. package/dist/core/registry/cards/pr.reviews.submit.yaml +1 -0
  111. package/dist/core/registry/cards/pr.threads.list.yaml +1 -0
  112. package/dist/core/registry/cards/pr.threads.reply.yaml +1 -0
  113. package/dist/core/registry/cards/pr.threads.resolve.yaml +1 -0
  114. package/dist/core/registry/cards/pr.threads.unresolve.yaml +1 -0
  115. package/dist/core/registry/cards/pr.update.yaml +7 -2
  116. package/dist/core/registry/cards/pr.view.yaml +1 -0
  117. package/dist/core/registry/cards/project_v2.fields.list.yaml +18 -2
  118. package/dist/core/registry/cards/project_v2.items.field.update.yaml +8 -5
  119. package/dist/core/registry/cards/project_v2.items.issue.add.yaml +9 -5
  120. package/dist/core/registry/cards/project_v2.items.issue.remove.yaml +8 -5
  121. package/dist/core/registry/cards/project_v2.items.list.yaml +8 -2
  122. package/dist/core/registry/cards/project_v2.org.view.yaml +6 -2
  123. package/dist/core/registry/cards/project_v2.user.view.yaml +6 -2
  124. package/dist/core/registry/cards/release.list.yaml +8 -3
  125. package/dist/core/registry/cards/release.view.yaml +8 -4
  126. package/dist/core/registry/cards/repo.issue_types.list.yaml +7 -3
  127. package/dist/core/registry/cards/repo.labels.list.yaml +7 -2
  128. package/dist/core/registry/cards/repo.view.yaml +1 -0
  129. package/dist/index.d.ts +297 -0
  130. package/dist/index.js +11 -3
  131. package/dist/index.js.map +1 -1
  132. package/dist/{issue-mutations-FJNZW7L5.js → issue-mutations-OW464JP3.js} +97 -120
  133. package/dist/issue-mutations-OW464JP3.js.map +1 -0
  134. package/dist/issue-queries-ORG3VPK4.js +93 -0
  135. package/dist/issue-queries-ORG3VPK4.js.map +1 -0
  136. package/dist/{pr-mutations-UG67YOF5.js → pr-mutations-WOTG6FAB.js} +234 -94
  137. package/dist/pr-mutations-WOTG6FAB.js.map +1 -0
  138. package/dist/pr-queries-6CJJW7BT.js +143 -0
  139. package/dist/pr-queries-6CJJW7BT.js.map +1 -0
  140. package/dist/project-QFSCYDDW.js +429 -0
  141. package/dist/project-QFSCYDDW.js.map +1 -0
  142. package/dist/release-33236BBA.js +57 -0
  143. package/dist/release-33236BBA.js.map +1 -0
  144. package/dist/repo-M6DKCWBG.js +82 -0
  145. package/dist/repo-M6DKCWBG.js.map +1 -0
  146. package/package.json +6 -6
  147. package/skills/using-ghx/SKILL.md +76 -10
  148. package/dist/chunk-3P3KHWFU.js.map +0 -1
  149. package/dist/chunk-BIWBJA2F.js.map +0 -1
  150. package/dist/chunk-Q7RCIK2C.js.map +0 -1
  151. package/dist/chunk-TDABI6C7.js +0 -167
  152. package/dist/chunk-TDABI6C7.js.map +0 -1
  153. package/dist/issue-mutations-FJNZW7L5.js.map +0 -1
  154. package/dist/issue-queries-GRA4MKPD.js.map +0 -1
  155. package/dist/pr-mutations-UG67YOF5.js.map +0 -1
  156. package/dist/pr-queries-UOEOXIJQ.js.map +0 -1
  157. package/dist/repo-JDUHFPZF.js +0 -66
  158. package/dist/repo-JDUHFPZF.js.map +0 -1
@@ -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"]}
@@ -50,7 +50,13 @@ function assertOptionalString(value, fieldName) {
50
50
  return value;
51
51
  }
52
52
  function assertStringArray(value, fieldName) {
53
- if (!Array.isArray(value) || value.some((entry) => typeof entry !== "string" || entry.trim().length === 0)) {
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)) {
54
60
  throw new Error(`${fieldName} must be an array of non-empty strings`);
55
61
  }
56
62
  return value;
@@ -61,7 +67,11 @@ function assertIssueCreateInput(input) {
61
67
  assertOptionalString(input.body, "Issue body");
62
68
  }
63
69
  function assertIssueUpdateInput(input) {
64
- assertIssueInput({ owner: input.owner, name: input.name, issueNumber: input.issueNumber });
70
+ assertIssueInput({
71
+ owner: input.owner,
72
+ name: input.name,
73
+ issueNumber: input.issueNumber
74
+ });
65
75
  if (input.title === void 0 && input.body === void 0) {
66
76
  throw new Error("Issue update requires at least one field");
67
77
  }
@@ -73,36 +83,76 @@ function assertIssueUpdateInput(input) {
73
83
  }
74
84
  }
75
85
  function assertIssueMutationInput(input) {
76
- assertIssueInput({ owner: input.owner, name: input.name, issueNumber: input.issueNumber });
86
+ assertIssueInput({
87
+ owner: input.owner,
88
+ name: input.name,
89
+ issueNumber: input.issueNumber
90
+ });
77
91
  }
78
92
  function assertIssueLabelsUpdateInput(input) {
79
- assertIssueInput({ owner: input.owner, name: input.name, issueNumber: input.issueNumber });
93
+ assertIssueInput({
94
+ owner: input.owner,
95
+ name: input.name,
96
+ issueNumber: input.issueNumber
97
+ });
80
98
  assertStringArray(input.labels, "Labels");
81
99
  }
82
100
  function assertIssueLabelsAddInput(input) {
83
- assertIssueInput({ owner: input.owner, name: input.name, issueNumber: input.issueNumber });
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
+ });
84
114
  assertStringArray(input.labels, "Labels");
85
115
  }
86
116
  function assertIssueAssigneesUpdateInput(input) {
87
- assertIssueInput({ owner: input.owner, name: input.name, issueNumber: input.issueNumber });
117
+ assertIssueInput({
118
+ owner: input.owner,
119
+ name: input.name,
120
+ issueNumber: input.issueNumber
121
+ });
88
122
  assertStringArray(input.assignees, "Assignees");
89
123
  }
90
124
  function assertIssueAssigneesAddInput(input) {
91
- assertIssueInput({ owner: input.owner, name: input.name, issueNumber: input.issueNumber });
125
+ assertIssueInput({
126
+ owner: input.owner,
127
+ name: input.name,
128
+ issueNumber: input.issueNumber
129
+ });
92
130
  assertStringArray(input.assignees, "Assignees");
93
131
  }
94
132
  function assertIssueAssigneesRemoveInput(input) {
95
- assertIssueInput({ owner: input.owner, name: input.name, issueNumber: input.issueNumber });
133
+ assertIssueInput({
134
+ owner: input.owner,
135
+ name: input.name,
136
+ issueNumber: input.issueNumber
137
+ });
96
138
  assertStringArray(input.assignees, "Assignees");
97
139
  }
98
140
  function assertIssueMilestoneSetInput(input) {
99
- assertIssueInput({ owner: input.owner, name: input.name, issueNumber: input.issueNumber });
141
+ assertIssueInput({
142
+ owner: input.owner,
143
+ name: input.name,
144
+ issueNumber: input.issueNumber
145
+ });
100
146
  if (!Number.isInteger(input.milestoneNumber) || input.milestoneNumber <= 0) {
101
147
  throw new Error("Milestone number must be a positive integer");
102
148
  }
103
149
  }
104
150
  function assertIssueCommentCreateInput(input) {
105
- assertIssueInput({ owner: input.owner, name: input.name, issueNumber: input.issueNumber });
151
+ assertIssueInput({
152
+ owner: input.owner,
153
+ name: input.name,
154
+ issueNumber: input.issueNumber
155
+ });
106
156
  assertNonEmptyString(input.body, "Issue comment body");
107
157
  }
108
158
  function assertIssueLinkedPrsListInput(input) {
@@ -194,6 +244,151 @@ function assertReplyToReviewThreadInput(input) {
194
244
  throw new Error("Reply body is required");
195
245
  }
196
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
+ }
197
392
 
198
393
  export {
199
394
  assertRepoInput,
@@ -206,6 +401,7 @@ export {
206
401
  assertIssueMutationInput,
207
402
  assertIssueLabelsUpdateInput,
208
403
  assertIssueLabelsAddInput,
404
+ assertIssueLabelsRemoveInput,
209
405
  assertIssueAssigneesUpdateInput,
210
406
  assertIssueAssigneesAddInput,
211
407
  assertIssueAssigneesRemoveInput,
@@ -223,6 +419,18 @@ export {
223
419
  assertPrCommentsListInput,
224
420
  asRecord,
225
421
  assertReviewThreadInput,
226
- assertReplyToReviewThreadInput
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
227
435
  };
228
- //# sourceMappingURL=chunk-BIWBJA2F.js.map
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":[]}