@credal/actions 0.2.196 → 0.2.198
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/dist/actions/autogen/templates.js +8 -12
- package/dist/actions/autogen/types.js +26 -8
- package/dist/actions/groups.d.ts +6 -0
- package/dist/actions/groups.js +251 -0
- package/dist/actions/invoke.js +11 -22
- package/dist/actions/parse.js +231 -244
- package/dist/actions/providers/asana/commentAsanaTask.js +8 -15
- package/dist/actions/providers/asana/createAsanaTask.js +20 -21
- package/dist/actions/providers/asana/getTasksDetails.js +18 -34
- package/dist/actions/providers/asana/listAsanaTasksByProject.js +62 -79
- package/dist/actions/providers/asana/searchAsanaTasks.js +6 -16
- package/dist/actions/providers/asana/updateAsanaTask.js +16 -15
- package/dist/actions/providers/asana/utils.js +47 -64
- package/dist/actions/providers/ashby/addCandidateToProject.d.ts +3 -0
- package/dist/actions/providers/ashby/addCandidateToProject.js +31 -0
- package/dist/actions/providers/ashby/createCandidate.d.ts +3 -0
- package/dist/actions/providers/ashby/createCandidate.js +38 -0
- package/dist/actions/providers/ashby/createNote.d.ts +3 -0
- package/dist/actions/providers/ashby/createNote.js +31 -0
- package/dist/actions/providers/ashby/getCandidateInfo.d.ts +3 -0
- package/dist/actions/providers/ashby/getCandidateInfo.js +33 -0
- package/dist/actions/providers/ashby/listCandidateNotes.d.ts +3 -0
- package/dist/actions/providers/ashby/listCandidateNotes.js +33 -0
- package/dist/actions/providers/ashby/listCandidates.d.ts +3 -0
- package/dist/actions/providers/ashby/listCandidates.js +30 -0
- package/dist/actions/providers/ashby/searchCandidates.d.ts +3 -0
- package/dist/actions/providers/ashby/searchCandidates.js +34 -0
- package/dist/actions/providers/ashby/updateCandidate.d.ts +3 -0
- package/dist/actions/providers/ashby/updateCandidate.js +56 -0
- package/dist/actions/providers/bing/getTopNSearchResultUrls.js +4 -14
- package/dist/actions/providers/confluence/fetchPageContent.js +5 -15
- package/dist/actions/providers/confluence/overwritePage.js +5 -14
- package/dist/actions/providers/finnhub/getBasicFinancials.js +7 -19
- package/dist/actions/providers/finnhub/symbolLookup.js +3 -12
- package/dist/actions/providers/firecrawl/deepResearch.js +11 -21
- package/dist/actions/providers/firecrawl/getTopNSearchResultUrls.js +8 -21
- package/dist/actions/providers/firecrawl/scrapeTweetDataWithNitter.js +4 -13
- package/dist/actions/providers/firecrawl/scrapeUrl.js +16 -21
- package/dist/actions/providers/firecrawl/searchAndScrape.js +6 -17
- package/dist/actions/providers/generic/fillTemplate.js +2 -11
- package/dist/actions/providers/github/createBranch.js +9 -18
- package/dist/actions/providers/github/createOrUpdateFile.js +6 -15
- package/dist/actions/providers/github/createPullRequest.js +5 -14
- package/dist/actions/providers/github/fetchFile.d.ts +3 -0
- package/dist/actions/providers/github/fetchFile.js +131 -0
- package/dist/actions/providers/github/getBranch.js +4 -13
- package/dist/actions/providers/github/getContents.d.ts +3 -0
- package/dist/actions/providers/github/getContents.js +41 -0
- package/dist/actions/providers/github/getFileContent.js +6 -16
- package/dist/actions/providers/github/getPullRequestDetails.js +39 -18
- package/dist/actions/providers/github/listCommits.js +17 -15
- package/dist/actions/providers/github/listDirectory.js +13 -25
- package/dist/actions/providers/github/listPullRequests.js +4 -13
- package/dist/actions/providers/github/searchOrganization.js +29 -49
- package/dist/actions/providers/github/utils.js +5 -16
- package/dist/actions/providers/gitlab/getFileContent.js +13 -24
- package/dist/actions/providers/gitlab/getMergeRequest.js +18 -30
- package/dist/actions/providers/gitlab/listDirectory.js +15 -27
- package/dist/actions/providers/gitlab/searchGroup.js +45 -52
- package/dist/actions/providers/gitlab/utils.js +19 -32
- package/dist/actions/providers/gong/getGongTranscripts.d.ts +3 -0
- package/dist/actions/providers/gong/getGongTranscripts.js +315 -0
- package/dist/actions/providers/google-oauth/addGroupMember.js +3 -12
- package/dist/actions/providers/google-oauth/addTextToTopOfDoc.js +3 -12
- package/dist/actions/providers/google-oauth/appendRowsToSpreadsheet.js +4 -13
- package/dist/actions/providers/google-oauth/createNewGoogleDoc.js +7 -17
- package/dist/actions/providers/google-oauth/createPresentation.js +7 -13
- package/dist/actions/providers/google-oauth/createSpreadsheet.js +7 -13
- package/dist/actions/providers/google-oauth/deleteCalendarEvent.js +3 -12
- package/dist/actions/providers/google-oauth/deleteGroupMember.js +3 -12
- package/dist/actions/providers/google-oauth/deleteRowFromSpreadsheet.js +3 -12
- package/dist/actions/providers/google-oauth/editAGoogleCalendarEvent.js +4 -14
- package/dist/actions/providers/google-oauth/getDriveFileContentById.js +23 -33
- package/dist/actions/providers/google-oauth/getGroup.js +3 -12
- package/dist/actions/providers/google-oauth/getPresentation.js +23 -37
- package/dist/actions/providers/google-oauth/hasGroupMember.js +3 -12
- package/dist/actions/providers/google-oauth/listCalendarEvents.js +27 -21
- package/dist/actions/providers/google-oauth/listCalendars.js +4 -14
- package/dist/actions/providers/google-oauth/listGroupMembers.js +4 -13
- package/dist/actions/providers/google-oauth/listGroups.js +4 -14
- package/dist/actions/providers/google-oauth/queryGoogleBigQuery.js +10 -21
- package/dist/actions/providers/google-oauth/scheduleCalendarMeeting.js +11 -14
- package/dist/actions/providers/google-oauth/searchDriveByKeywords.js +3 -12
- package/dist/actions/providers/google-oauth/searchDriveByKeywordsAndGetFileContent.js +12 -23
- package/dist/actions/providers/google-oauth/searchDriveByQuery.js +30 -42
- package/dist/actions/providers/google-oauth/searchDriveByQueryAndGetFileContent.js +9 -20
- package/dist/actions/providers/google-oauth/updateCalendarEvent.js +3 -12
- package/dist/actions/providers/google-oauth/updateDoc.js +3 -12
- package/dist/actions/providers/google-oauth/updatePresentation.js +3 -12
- package/dist/actions/providers/google-oauth/updateRowsInSpreadsheet.js +4 -13
- package/dist/actions/providers/google-oauth/updateSpreadsheet.js +3 -12
- package/dist/actions/providers/google-oauth/utils/decodeMessage.js +7 -8
- package/dist/actions/providers/googleSearch/customSearch.js +18 -36
- package/dist/actions/providers/googlemail/listGmailThreads.js +7 -16
- package/dist/actions/providers/googlemail/searchGmailMessages.js +10 -20
- package/dist/actions/providers/googlemail/sendGmail.js +7 -17
- package/dist/actions/providers/googlemaps/nearbysearchRestaurants.js +13 -25
- package/dist/actions/providers/googlemaps/validateAddress.js +3 -12
- package/dist/actions/providers/hubspot/getCompanies.js +4 -14
- package/dist/actions/providers/hubspot/getCompanyDetails.js +3 -12
- package/dist/actions/providers/hubspot/getContactDetails.js +3 -12
- package/dist/actions/providers/hubspot/getContacts.js +4 -14
- package/dist/actions/providers/hubspot/getDealDetails.js +3 -12
- package/dist/actions/providers/hubspot/getDeals.js +3 -12
- package/dist/actions/providers/hubspot/getTicketDetails.js +3 -12
- package/dist/actions/providers/hubspot/getTickets.js +3 -12
- package/dist/actions/providers/jamf/getJamfComputerInventory.d.ts +3 -0
- package/dist/actions/providers/jamf/getJamfComputerInventory.js +37 -0
- package/dist/actions/providers/jamf/getJamfFileVaultRecoveryKey.d.ts +3 -0
- package/dist/actions/providers/jamf/getJamfFileVaultRecoveryKey.js +39 -0
- package/dist/actions/providers/jamf/getJamfUserComputerId.d.ts +3 -0
- package/dist/actions/providers/jamf/getJamfUserComputerId.js +45 -0
- package/dist/actions/providers/jamf/lockJamfComputerById.d.ts +3 -0
- package/dist/actions/providers/jamf/lockJamfComputerById.js +39 -0
- package/dist/actions/providers/jira/assignJiraTicket.js +4 -13
- package/dist/actions/providers/jira/commentJiraTicket.js +3 -12
- package/dist/actions/providers/jira/createJiraTicket.js +22 -18
- package/dist/actions/providers/jira/createServiceDeskRequest.js +3 -12
- package/dist/actions/providers/jira/getJiraDCIssuesByQuery.js +5 -14
- package/dist/actions/providers/jira/getJiraIssuesByQuery.js +19 -29
- package/dist/actions/providers/jira/getJiraTicketDetails.js +3 -12
- package/dist/actions/providers/jira/getJiraTicketHistory.js +3 -12
- package/dist/actions/providers/jira/moveJiraTicketToProject.js +11 -21
- package/dist/actions/providers/jira/publicCommentOnServiceDeskRequest.js +3 -12
- package/dist/actions/providers/jira/updateJiraTicketDetails.js +15 -15
- package/dist/actions/providers/jira/updateJiraTicketStatus.js +4 -13
- package/dist/actions/providers/jira/utils.js +104 -126
- package/dist/actions/providers/kandji/getFVRecoveryKeyForDevice.d.ts +3 -0
- package/dist/actions/providers/kandji/getFVRecoveryKeyForDevice.js +85 -0
- package/dist/actions/providers/linear/getIssueDetails.js +10 -20
- package/dist/actions/providers/linear/getIssues.js +11 -21
- package/dist/actions/providers/linear/getProjectDetails.js +10 -20
- package/dist/actions/providers/linear/getProjects.js +6 -16
- package/dist/actions/providers/linear/getTeamDetails.js +7 -17
- package/dist/actions/providers/linear/getTeams.js +5 -15
- package/dist/actions/providers/looker/enableUserByEmail.js +5 -14
- package/dist/actions/providers/math/add.js +2 -11
- package/dist/actions/providers/microsoft/createDocument.js +4 -13
- package/dist/actions/providers/microsoft/getDocument.js +4 -13
- package/dist/actions/providers/microsoft/messageTeamsChannel.js +4 -13
- package/dist/actions/providers/microsoft/messageTeamsChat.js +4 -13
- package/dist/actions/providers/microsoft/updateDocument.js +4 -13
- package/dist/actions/providers/microsoft/updateSpreadsheet.js +4 -13
- package/dist/actions/providers/microsoft/utils.js +9 -20
- package/dist/actions/providers/mongodb/insertMongoDoc.js +5 -14
- package/dist/actions/providers/notion/searchByTitle.js +3 -12
- package/dist/actions/providers/nws/getForecastForLocation.js +4 -13
- package/dist/actions/providers/okta/addUserToGroup.d.ts +3 -0
- package/dist/actions/providers/okta/addUserToGroup.js +56 -0
- package/dist/actions/providers/okta/getOktaGroup.d.ts +3 -0
- package/dist/actions/providers/okta/getOktaGroup.js +73 -0
- package/dist/actions/providers/okta/getOktaUser.d.ts +3 -0
- package/dist/actions/providers/okta/getOktaUser.js +40 -0
- package/dist/actions/providers/okta/listMFA.d.ts +3 -0
- package/dist/actions/providers/okta/listMFA.js +52 -0
- package/dist/actions/providers/okta/listOktaGroupMembers.d.ts +3 -0
- package/dist/actions/providers/okta/listOktaGroupMembers.js +99 -0
- package/dist/actions/providers/okta/listOktaGroups.d.ts +3 -0
- package/dist/actions/providers/okta/listOktaGroups.js +92 -0
- package/dist/actions/providers/okta/listOktaUserGroups.d.ts +3 -0
- package/dist/actions/providers/okta/listOktaUserGroups.js +83 -0
- package/dist/actions/providers/okta/listOktaUsers.d.ts +3 -0
- package/dist/actions/providers/okta/listOktaUsers.js +100 -0
- package/dist/actions/providers/okta/removeUserFromGroup.d.ts +3 -0
- package/dist/actions/providers/okta/removeUserFromGroup.js +56 -0
- package/dist/actions/providers/okta/resetMFA.d.ts +3 -0
- package/dist/actions/providers/okta/resetMFA.js +62 -0
- package/dist/actions/providers/okta/resetPassword.d.ts +3 -0
- package/dist/actions/providers/okta/resetPassword.js +57 -0
- package/dist/actions/providers/okta/triggerOktaWorkflow.d.ts +3 -0
- package/dist/actions/providers/okta/triggerOktaWorkflow.js +44 -0
- package/dist/actions/providers/oktaOrg/getOktaUserByName.js +3 -12
- package/dist/actions/providers/openstreetmap/getLatitudeLongitudeFromLocation.js +3 -12
- package/dist/actions/providers/perplexity/perplexityDeepResearch.js +11 -21
- package/dist/actions/providers/resend/sendEmail.js +3 -12
- package/dist/actions/providers/resend/sendEmailHtml.js +3 -12
- package/dist/actions/providers/salesforce/createCase.js +10 -13
- package/dist/actions/providers/salesforce/createRecord.js +3 -12
- package/dist/actions/providers/salesforce/executeReport.js +3 -12
- package/dist/actions/providers/salesforce/fetchSalesforceSchema.d.ts +3 -0
- package/dist/actions/providers/salesforce/fetchSalesforceSchema.js +40 -0
- package/dist/actions/providers/salesforce/generateSalesReport.js +3 -12
- package/dist/actions/providers/salesforce/getRecord.js +3 -12
- package/dist/actions/providers/salesforce/getReportMetadata.js +11 -21
- package/dist/actions/providers/salesforce/getSalesforceRecordsByQuery.js +7 -17
- package/dist/actions/providers/salesforce/listReports.js +3 -12
- package/dist/actions/providers/salesforce/searchAllSalesforceRecords.js +3 -12
- package/dist/actions/providers/salesforce/searchSalesforceRecords.js +3 -12
- package/dist/actions/providers/salesforce/updateRecord.js +3 -12
- package/dist/actions/providers/slack/archiveChannel.d.ts +3 -0
- package/dist/actions/providers/slack/archiveChannel.js +42 -0
- package/dist/actions/providers/slack/createChannel.js +7 -17
- package/dist/actions/providers/slack/getChannelMembers.js +8 -18
- package/dist/actions/providers/slack/getChannelMessages.js +8 -18
- package/dist/actions/providers/slack/helpers.js +16 -47
- package/dist/actions/providers/slack/messageTransformers.js +10 -13
- package/dist/actions/providers/slack/sendDmFromBot.js +9 -19
- package/dist/actions/providers/slack/sendMessage.js +7 -17
- package/dist/actions/providers/slackUser/searchSlack.js +179 -212
- package/dist/actions/providers/slackUser/searchSlackRTS.js +41 -38
- package/dist/actions/providers/slackUser/utils.js +1 -1
- package/dist/actions/providers/snowflake/auth/getSnowflakeConnection.js +23 -34
- package/dist/actions/providers/snowflake/getRowByFieldValue.js +4 -13
- package/dist/actions/providers/snowflake/runSnowflakeQuery.js +9 -19
- package/dist/actions/providers/zendesk/addCommentToTicket.js +5 -14
- package/dist/actions/providers/zendesk/assignTicket.js +3 -12
- package/dist/actions/providers/zendesk/createZendeskTicket.js +3 -12
- package/dist/actions/providers/zendesk/getTicketDetails.js +3 -12
- package/dist/actions/providers/zendesk/listTickets.js +3 -12
- package/dist/actions/providers/zendesk/searchZendeskByQuery.js +3 -12
- package/dist/actions/providers/zendesk/updateTicketStatus.js +3 -12
- package/dist/actions/util/axiosClient.js +5 -5
- package/dist/app.js +14 -25
- package/dist/utils/google.js +122 -143
- package/dist/utils/pdf.js +10 -21
- package/package.json +10 -9
|
@@ -1,17 +1,7 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import axios from "axios";
|
|
11
2
|
import { githubListCommitsOutputSchema, } from "../../autogen/types.js";
|
|
12
3
|
import { MISSING_AUTH_TOKEN } from "../../util/missingAuthConstants.js";
|
|
13
|
-
const listCommits =
|
|
14
|
-
var _b, _c;
|
|
4
|
+
const listCommits = async ({ params, authParams, }) => {
|
|
15
5
|
const { authToken } = authParams;
|
|
16
6
|
if (!authToken) {
|
|
17
7
|
throw new Error(MISSING_AUTH_TOKEN);
|
|
@@ -35,7 +25,7 @@ const listCommits = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params,
|
|
|
35
25
|
if (author) {
|
|
36
26
|
requestParams.author = author;
|
|
37
27
|
}
|
|
38
|
-
const response =
|
|
28
|
+
const response = await axios.get(url, {
|
|
39
29
|
headers: {
|
|
40
30
|
Authorization: `Bearer ${authToken}`,
|
|
41
31
|
Accept: "application/vnd.github+json",
|
|
@@ -45,7 +35,19 @@ const listCommits = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params,
|
|
|
45
35
|
});
|
|
46
36
|
const commits = response.data;
|
|
47
37
|
// Transform only the field names that differ between GitHub API and our schema
|
|
48
|
-
const transformedCommits = commits.map(commit => (
|
|
38
|
+
const transformedCommits = commits.map(commit => ({
|
|
39
|
+
...commit,
|
|
40
|
+
htmlUrl: commit.html_url,
|
|
41
|
+
commit: {
|
|
42
|
+
...commit.commit,
|
|
43
|
+
commentCount: commit.commit.comment_count || 0,
|
|
44
|
+
},
|
|
45
|
+
author: commit.author,
|
|
46
|
+
parents: commit.parents.map(parent => ({
|
|
47
|
+
...parent,
|
|
48
|
+
htmlUrl: parent.html_url,
|
|
49
|
+
})),
|
|
50
|
+
}));
|
|
49
51
|
// Check if there are more pages by looking at the Link header
|
|
50
52
|
const linkHeader = response.headers.link;
|
|
51
53
|
const hasMore = linkHeader ? linkHeader.includes('rel="next"') : false;
|
|
@@ -59,7 +61,7 @@ const listCommits = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params,
|
|
|
59
61
|
catch (error) {
|
|
60
62
|
const errorMessage = error instanceof Error ? error.message : "Unknown error";
|
|
61
63
|
const responseError = error && typeof error === "object" && "response" in error
|
|
62
|
-
?
|
|
64
|
+
? error.response?.data?.message
|
|
63
65
|
: undefined;
|
|
64
66
|
return githubListCommitsOutputSchema.parse({
|
|
65
67
|
success: false,
|
|
@@ -69,5 +71,5 @@ const listCommits = (_a) => __awaiter(void 0, [_a], void 0, function* ({ params,
|
|
|
69
71
|
hasMore: false,
|
|
70
72
|
});
|
|
71
73
|
}
|
|
72
|
-
}
|
|
74
|
+
};
|
|
73
75
|
export default listCommits;
|
|
@@ -1,27 +1,18 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { MISSING_AUTH_TOKEN } from "../../util/missingAuthConstants.js";
|
|
11
2
|
import { getOctokit } from "./utils.js";
|
|
12
3
|
/**
|
|
13
4
|
* List directory contents
|
|
14
5
|
*/
|
|
15
|
-
const listDirectory =
|
|
6
|
+
const listDirectory = async ({ params, authParams, }) => {
|
|
16
7
|
if (!authParams.authToken) {
|
|
17
8
|
return {
|
|
18
9
|
success: false,
|
|
19
10
|
error: MISSING_AUTH_TOKEN,
|
|
20
11
|
};
|
|
21
12
|
}
|
|
22
|
-
const octokit =
|
|
13
|
+
const octokit = await getOctokit(authParams.authToken);
|
|
23
14
|
const { organization, repository, path } = params;
|
|
24
|
-
const contentResponse =
|
|
15
|
+
const contentResponse = await octokit.rest.repos.getContent({
|
|
25
16
|
owner: organization,
|
|
26
17
|
repo: repository,
|
|
27
18
|
path,
|
|
@@ -38,18 +29,15 @@ const listDirectory = (_a) => __awaiter(void 0, [_a], void 0, function* ({ param
|
|
|
38
29
|
}
|
|
39
30
|
return {
|
|
40
31
|
success: true,
|
|
41
|
-
results: data.map(item => {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
},
|
|
51
|
-
});
|
|
52
|
-
}),
|
|
32
|
+
results: data.map(item => ({
|
|
33
|
+
name: item.name,
|
|
34
|
+
url: item.html_url ?? item.url,
|
|
35
|
+
contents: {
|
|
36
|
+
path: item.path,
|
|
37
|
+
type: item.type,
|
|
38
|
+
size: item.size,
|
|
39
|
+
},
|
|
40
|
+
})),
|
|
53
41
|
};
|
|
54
|
-
}
|
|
42
|
+
};
|
|
55
43
|
export default listDirectory;
|
|
@@ -1,16 +1,7 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import axios from "axios";
|
|
11
2
|
import { githubListPullRequestsOutputSchema, } from "../../autogen/types.js";
|
|
12
3
|
import { MISSING_AUTH_TOKEN } from "../../util/missingAuthConstants.js";
|
|
13
|
-
const listPullRequests =
|
|
4
|
+
const listPullRequests = async ({ params, authParams, }) => {
|
|
14
5
|
const { authToken } = authParams;
|
|
15
6
|
if (!authToken) {
|
|
16
7
|
return githubListPullRequestsOutputSchema.parse({
|
|
@@ -25,14 +16,14 @@ const listPullRequests = (_a) => __awaiter(void 0, [_a], void 0, function* ({ pa
|
|
|
25
16
|
let page = 1;
|
|
26
17
|
const perPage = 100;
|
|
27
18
|
while (true) {
|
|
28
|
-
const response =
|
|
19
|
+
const response = await axios.get(url, {
|
|
29
20
|
headers: {
|
|
30
21
|
Authorization: `Bearer ${authToken}`,
|
|
31
22
|
Accept: "application/vnd.github+json",
|
|
32
23
|
"X-GitHub-Api-Version": "2022-11-28",
|
|
33
24
|
},
|
|
34
25
|
params: {
|
|
35
|
-
state: state
|
|
26
|
+
state: state ?? "all",
|
|
36
27
|
sort: "created",
|
|
37
28
|
direction: "desc",
|
|
38
29
|
per_page: perPage,
|
|
@@ -75,5 +66,5 @@ const listPullRequests = (_a) => __awaiter(void 0, [_a], void 0, function* ({ pa
|
|
|
75
66
|
error: error instanceof Error ? error.message : "An unknown error occurred",
|
|
76
67
|
});
|
|
77
68
|
}
|
|
78
|
-
}
|
|
69
|
+
};
|
|
79
70
|
export default listPullRequests;
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { githubSearchOrganizationOutputSchema, } from "../../autogen/types.js";
|
|
11
2
|
import { MISSING_AUTH_TOKEN } from "../../util/missingAuthConstants.js";
|
|
12
3
|
import { getOctokit } from "./utils.js";
|
|
@@ -18,17 +9,17 @@ const MAX_ISSUES_OR_PRS = 10;
|
|
|
18
9
|
const MAX_FILES_PER_PR = 5;
|
|
19
10
|
const MAX_PATCH_LINES = 20;
|
|
20
11
|
const MAX_FRAGMENT_LINES = 20;
|
|
21
|
-
const searchOrganization =
|
|
12
|
+
const searchOrganization = async ({ params, authParams, }) => {
|
|
22
13
|
if (!authParams.authToken) {
|
|
23
14
|
return githubSearchOrganizationOutputSchema.parse({
|
|
24
15
|
success: false,
|
|
25
16
|
error: MISSING_AUTH_TOKEN,
|
|
26
17
|
});
|
|
27
18
|
}
|
|
28
|
-
const octokit =
|
|
19
|
+
const octokit = await getOctokit(authParams.authToken);
|
|
29
20
|
const { organization, query, repository } = params;
|
|
30
21
|
const searchScope = repository ? `repo:${organization}/${repository}` : `org:${organization}`;
|
|
31
|
-
const [codeResultsResponse, commitResults, issueResults] =
|
|
22
|
+
const [codeResultsResponse, commitResults, issueResults] = await Promise.all([
|
|
32
23
|
octokit.rest.search.code({
|
|
33
24
|
q: `${query} in:file,path ${searchScope}`,
|
|
34
25
|
text_match: true,
|
|
@@ -54,31 +45,27 @@ const searchOrganization = (_a) => __awaiter(void 0, [_a], void 0, function* ({
|
|
|
54
45
|
url: item.html_url,
|
|
55
46
|
score: item.score,
|
|
56
47
|
textMatches: item.text_matches
|
|
57
|
-
? item.text_matches.map(match => {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
matches: (_d = match.matches) !== null && _d !== void 0 ? _d : [],
|
|
64
|
-
});
|
|
65
|
-
})
|
|
48
|
+
? item.text_matches.map(match => ({
|
|
49
|
+
object_url: match.object_url ?? undefined,
|
|
50
|
+
object_type: match.object_type ?? undefined,
|
|
51
|
+
fragment: match.fragment?.split("\n").slice(0, MAX_FRAGMENT_LINES).join("\n"),
|
|
52
|
+
matches: match.matches ?? [],
|
|
53
|
+
}))
|
|
66
54
|
: [],
|
|
67
55
|
}));
|
|
68
|
-
const commitDetailsWithErrors =
|
|
56
|
+
const commitDetailsWithErrors = await Promise.all(commitResults.data.items.slice(0, MAX_COMMITS).map(async (item) => {
|
|
69
57
|
// Get the repo details from the commit search result
|
|
70
58
|
const { owner, name } = item.repository;
|
|
71
59
|
try {
|
|
72
|
-
return
|
|
60
|
+
return await octokit.rest.repos.getCommit({ owner: owner.login, repo: name, ref: item.sha });
|
|
73
61
|
}
|
|
74
62
|
catch (error) {
|
|
75
63
|
console.error(`Error fetching commit ${item.sha} in ${owner.login}/${name}:`, error);
|
|
76
64
|
return null;
|
|
77
65
|
}
|
|
78
|
-
}))
|
|
66
|
+
}));
|
|
79
67
|
const commitDetails = commitDetailsWithErrors.filter(c => c !== null);
|
|
80
68
|
const enrichedCommits = commitResults.data.items.slice(0, MAX_COMMITS).map(item => {
|
|
81
|
-
var _a, _b;
|
|
82
69
|
const full = commitDetails.find(c => c.data.sha === item.sha);
|
|
83
70
|
return {
|
|
84
71
|
sha: item.sha,
|
|
@@ -88,46 +75,39 @@ const searchOrganization = (_a) => __awaiter(void 0, [_a], void 0, function* ({
|
|
|
88
75
|
author: item.commit.author,
|
|
89
76
|
},
|
|
90
77
|
score: item.score,
|
|
91
|
-
author:
|
|
92
|
-
files:
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
status: f.status,
|
|
97
|
-
patch: (_c = (_b = (_a = f.patch) === null || _a === void 0 ? void 0 : _a.split("\n")) === null || _b === void 0 ? void 0 : _b.slice(0, MAX_PATCH_LINES)) === null || _c === void 0 ? void 0 : _c.join("\n"),
|
|
98
|
-
});
|
|
78
|
+
author: item.author ?? undefined,
|
|
79
|
+
files: full?.data.files?.slice(0, MAX_FILES_PER_COMMIT).map(f => ({
|
|
80
|
+
filename: f.filename,
|
|
81
|
+
status: f.status,
|
|
82
|
+
patch: f.patch?.split("\n")?.slice(0, MAX_PATCH_LINES)?.join("\n"),
|
|
99
83
|
})) || [],
|
|
100
84
|
};
|
|
101
85
|
});
|
|
102
86
|
const prItems = issueResults.data.items.filter(item => item.pull_request).slice(0, MAX_ISSUES_OR_PRS);
|
|
103
87
|
const prNumbers = prItems.map(item => item.number);
|
|
104
|
-
const prFiles =
|
|
88
|
+
const prFiles = await Promise.all(prItems.map(async (item) => {
|
|
105
89
|
// Each item has a 'repository_url' like: "https://api.github.com/repos/ORG/REPO"
|
|
106
90
|
const repoUrlParts = item.repository_url.split("/");
|
|
107
|
-
const repo = repository
|
|
91
|
+
const repo = repository ?? repoUrlParts[repoUrlParts.length - 1];
|
|
108
92
|
try {
|
|
109
|
-
return
|
|
93
|
+
return await octokit.rest.pulls.listFiles({ owner: organization, repo: repo, pull_number: item.number });
|
|
110
94
|
}
|
|
111
95
|
catch (error) {
|
|
112
96
|
console.error(`Error fetching PR files for PR ${item.number} in ${organization}/${repo}:`, error);
|
|
113
97
|
return { data: [] };
|
|
114
98
|
}
|
|
115
|
-
}))
|
|
99
|
+
}));
|
|
116
100
|
const issuesAndPRs = issueResults.data.items
|
|
117
101
|
.slice(0, MAX_ISSUES_OR_PRS)
|
|
118
102
|
.map(item => {
|
|
119
|
-
var _a, _b, _c, _d;
|
|
120
103
|
const isPR = !!item.pull_request;
|
|
121
104
|
const prIndex = prNumbers.indexOf(item.number);
|
|
122
105
|
const files = isPR && prIndex !== -1
|
|
123
|
-
? prFiles[prIndex].data.slice(0, MAX_FILES_PER_PR).map(f => {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
patch: (_a = f.patch) === null || _a === void 0 ? void 0 : _a.split("\n").slice(0, MAX_PATCH_LINES).join("\n"),
|
|
129
|
-
});
|
|
130
|
-
})
|
|
106
|
+
? prFiles[prIndex].data.slice(0, MAX_FILES_PER_PR).map(f => ({
|
|
107
|
+
filename: f.filename,
|
|
108
|
+
status: f.status,
|
|
109
|
+
patch: f.patch?.split("\n").slice(0, MAX_PATCH_LINES).join("\n"),
|
|
110
|
+
}))
|
|
131
111
|
: undefined;
|
|
132
112
|
return {
|
|
133
113
|
number: item.number,
|
|
@@ -137,8 +117,8 @@ const searchOrganization = (_a) => __awaiter(void 0, [_a], void 0, function* ({
|
|
|
137
117
|
isPullRequest: isPR,
|
|
138
118
|
body: item.body,
|
|
139
119
|
user: {
|
|
140
|
-
email:
|
|
141
|
-
name:
|
|
120
|
+
email: item.user?.email ?? undefined,
|
|
121
|
+
name: item.user?.name ?? undefined,
|
|
142
122
|
},
|
|
143
123
|
score: item.score,
|
|
144
124
|
files,
|
|
@@ -167,5 +147,5 @@ const searchOrganization = (_a) => __awaiter(void 0, [_a], void 0, function* ({
|
|
|
167
147
|
})),
|
|
168
148
|
],
|
|
169
149
|
};
|
|
170
|
-
}
|
|
150
|
+
};
|
|
171
151
|
export default searchOrganization;
|
|
@@ -1,17 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
export function getOctokit(authToken) {
|
|
11
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
12
|
-
const { Octokit } = yield import("@octokit/core");
|
|
13
|
-
const { restEndpointMethods } = yield import("@octokit/plugin-rest-endpoint-methods");
|
|
14
|
-
const MyOctokit = Octokit.plugin(restEndpointMethods);
|
|
15
|
-
return new MyOctokit({ auth: authToken });
|
|
16
|
-
});
|
|
1
|
+
export async function getOctokit(authToken) {
|
|
2
|
+
const { Octokit } = await import("@octokit/core");
|
|
3
|
+
const { restEndpointMethods } = await import("@octokit/plugin-rest-endpoint-methods");
|
|
4
|
+
const MyOctokit = Octokit.plugin(restEndpointMethods);
|
|
5
|
+
return new MyOctokit({ auth: authToken });
|
|
17
6
|
}
|
|
@@ -1,33 +1,22 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { MISSING_AUTH_TOKEN } from "../../util/missingAuthConstants.js";
|
|
11
2
|
import { getProjectPath } from "./utils.js";
|
|
12
3
|
const GITLAB_API_URL = "https://gitlab.com";
|
|
13
|
-
function gitlabFetch(endpoint, authToken) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
},
|
|
19
|
-
});
|
|
20
|
-
if (!res.ok)
|
|
21
|
-
throw new Error(`GitLab API error: ${res.status} ${res.statusText}`);
|
|
22
|
-
return res.json();
|
|
4
|
+
async function gitlabFetch(endpoint, authToken) {
|
|
5
|
+
const res = await fetch(endpoint, {
|
|
6
|
+
headers: {
|
|
7
|
+
Authorization: `Bearer ${authToken}`,
|
|
8
|
+
},
|
|
23
9
|
});
|
|
10
|
+
if (!res.ok)
|
|
11
|
+
throw new Error(`GitLab API error: ${res.status} ${res.statusText}`);
|
|
12
|
+
return res.json();
|
|
24
13
|
}
|
|
25
14
|
/**
|
|
26
15
|
* Get file content from GitLab by project_id
|
|
27
16
|
*/
|
|
28
|
-
const getFileContent =
|
|
17
|
+
const getFileContent = async ({ params, authParams, }) => {
|
|
29
18
|
const { authToken, baseUrl } = authParams;
|
|
30
|
-
const gitlabBaseUrl = baseUrl
|
|
19
|
+
const gitlabBaseUrl = baseUrl ?? GITLAB_API_URL;
|
|
31
20
|
if (!authToken) {
|
|
32
21
|
return {
|
|
33
22
|
success: false,
|
|
@@ -38,14 +27,14 @@ const getFileContent = (_a) => __awaiter(void 0, [_a], void 0, function* ({ para
|
|
|
38
27
|
// The file path must be URL-encoded per GitLab API docs
|
|
39
28
|
const filePath = encodeURIComponent(path);
|
|
40
29
|
const fetchUrl = `${gitlabBaseUrl}/api/v4/projects/${project_id}/repository/files/${filePath}?ref=${encodeURIComponent(ref)}`;
|
|
41
|
-
const data =
|
|
30
|
+
const data = await gitlabFetch(fetchUrl, authToken);
|
|
42
31
|
if (data.encoding !== "base64" || typeof data.content !== "string") {
|
|
43
32
|
return { success: false, error: `Unexpected response: ${JSON.stringify(data)}` };
|
|
44
33
|
}
|
|
45
34
|
const content = Buffer.from(data.content, "base64").toString("utf-8");
|
|
46
35
|
// Get the project path to construct the correct web URL
|
|
47
36
|
const url = data.web_url ||
|
|
48
|
-
`${gitlabBaseUrl}/${
|
|
37
|
+
`${gitlabBaseUrl}/${await getProjectPath(project_id, authToken, `${gitlabBaseUrl}/api/v4`)}/-/blob/${ref}/${path}`;
|
|
49
38
|
return {
|
|
50
39
|
success: true,
|
|
51
40
|
results: [
|
|
@@ -61,5 +50,5 @@ const getFileContent = (_a) => __awaiter(void 0, [_a], void 0, function* ({ para
|
|
|
61
50
|
},
|
|
62
51
|
],
|
|
63
52
|
};
|
|
64
|
-
}
|
|
53
|
+
};
|
|
65
54
|
export default getFileContent;
|
|
@@ -1,36 +1,24 @@
|
|
|
1
1
|
// ============================================================================
|
|
2
2
|
// TYPES
|
|
3
3
|
// ============================================================================
|
|
4
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
5
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
6
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
7
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
8
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
9
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
10
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
11
|
-
});
|
|
12
|
-
};
|
|
13
4
|
// ============================================================================
|
|
14
5
|
// IMPLEMENTATION
|
|
15
6
|
// ============================================================================
|
|
16
7
|
import { MISSING_AUTH_TOKEN } from "../../util/missingAuthConstants.js";
|
|
17
8
|
import { getProjectPath } from "./utils.js";
|
|
18
9
|
const GITLAB_API_URL = "https://gitlab.com";
|
|
19
|
-
function gitlabFetch(url, authToken) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
headers: { Authorization: `Bearer ${authToken}` },
|
|
23
|
-
});
|
|
24
|
-
if (!res.ok) {
|
|
25
|
-
throw new Error(`GitLab API error: ${res.status} ${res.statusText}`);
|
|
26
|
-
}
|
|
27
|
-
return res.json();
|
|
10
|
+
async function gitlabFetch(url, authToken) {
|
|
11
|
+
const res = await fetch(url, {
|
|
12
|
+
headers: { Authorization: `Bearer ${authToken}` },
|
|
28
13
|
});
|
|
14
|
+
if (!res.ok) {
|
|
15
|
+
throw new Error(`GitLab API error: ${res.status} ${res.statusText}`);
|
|
16
|
+
}
|
|
17
|
+
return res.json();
|
|
29
18
|
}
|
|
30
|
-
export const getMergeRequestContent =
|
|
31
|
-
var _b, _c, _d, _e, _f;
|
|
19
|
+
export const getMergeRequestContent = async ({ params, authParams, }) => {
|
|
32
20
|
const { authToken, baseUrl } = authParams;
|
|
33
|
-
const gitlabBaseUrl = baseUrl
|
|
21
|
+
const gitlabBaseUrl = baseUrl ?? GITLAB_API_URL;
|
|
34
22
|
if (!authToken) {
|
|
35
23
|
return { success: false, error: MISSING_AUTH_TOKEN };
|
|
36
24
|
}
|
|
@@ -38,7 +26,7 @@ export const getMergeRequestContent = (_a) => __awaiter(void 0, [_a], void 0, fu
|
|
|
38
26
|
const projectPath = project_path
|
|
39
27
|
? project_path
|
|
40
28
|
: project_id
|
|
41
|
-
?
|
|
29
|
+
? await getProjectPath(project_id, authToken, `${gitlabBaseUrl}/api/v4`)
|
|
42
30
|
: undefined;
|
|
43
31
|
const encodedProjectPath = projectPath ? encodeURIComponent(projectPath) : undefined;
|
|
44
32
|
if (!encodedProjectPath) {
|
|
@@ -48,14 +36,14 @@ export const getMergeRequestContent = (_a) => __awaiter(void 0, [_a], void 0, fu
|
|
|
48
36
|
// 1. Fetch MR metadata
|
|
49
37
|
// --------------------------------------------------------------------------
|
|
50
38
|
const mrUrl = `${gitlabBaseUrl}/api/v4/projects/${encodedProjectPath}/merge_requests/${mr_iid}`;
|
|
51
|
-
const mr =
|
|
52
|
-
const webUrl =
|
|
39
|
+
const mr = await gitlabFetch(mrUrl, authToken);
|
|
40
|
+
const webUrl = mr.web_url ?? `${gitlabBaseUrl}/${encodedProjectPath}/-/merge_requests/${mr_iid}`;
|
|
53
41
|
const metadata = {
|
|
54
42
|
iid: mr.iid,
|
|
55
43
|
id: mr.id,
|
|
56
44
|
project_id: mr.project_id,
|
|
57
45
|
title: mr.title,
|
|
58
|
-
description:
|
|
46
|
+
description: mr.description ?? "",
|
|
59
47
|
state: mr.state,
|
|
60
48
|
merged: mr.merged,
|
|
61
49
|
sha: mr.sha,
|
|
@@ -64,14 +52,14 @@ export const getMergeRequestContent = (_a) => __awaiter(void 0, [_a], void 0, fu
|
|
|
64
52
|
web_url: webUrl,
|
|
65
53
|
source_branch: mr.source_branch,
|
|
66
54
|
target_branch: mr.target_branch,
|
|
67
|
-
source_sha:
|
|
68
|
-
target_sha:
|
|
55
|
+
source_sha: mr.diff_refs?.head_sha ?? mr.sha,
|
|
56
|
+
target_sha: mr.diff_refs?.base_sha,
|
|
69
57
|
};
|
|
70
58
|
// --------------------------------------------------------------------------
|
|
71
59
|
// 2. Fetch MR changes
|
|
72
60
|
// --------------------------------------------------------------------------
|
|
73
61
|
const changesUrl = `${gitlabBaseUrl}/api/v4/projects/${encodedProjectPath}/merge_requests/${mr_iid}/changes`;
|
|
74
|
-
const changesData =
|
|
62
|
+
const changesData = await gitlabFetch(changesUrl, authToken);
|
|
75
63
|
const changes = changesData.changes.map(c => ({
|
|
76
64
|
old_path: c.old_path,
|
|
77
65
|
new_path: c.new_path,
|
|
@@ -84,7 +72,7 @@ export const getMergeRequestContent = (_a) => __awaiter(void 0, [_a], void 0, fu
|
|
|
84
72
|
// 3. Fetch MR commits
|
|
85
73
|
// --------------------------------------------------------------------------
|
|
86
74
|
const commitsUrl = `${gitlabBaseUrl}/api/v4/projects/${encodedProjectPath}/merge_requests/${mr_iid}/commits`;
|
|
87
|
-
const commitsData =
|
|
75
|
+
const commitsData = await gitlabFetch(commitsUrl, authToken);
|
|
88
76
|
const commits = commitsData.map(c => ({
|
|
89
77
|
id: c.id,
|
|
90
78
|
title: c.title,
|
|
@@ -106,5 +94,5 @@ export const getMergeRequestContent = (_a) => __awaiter(void 0, [_a], void 0, fu
|
|
|
106
94
|
},
|
|
107
95
|
],
|
|
108
96
|
};
|
|
109
|
-
}
|
|
97
|
+
};
|
|
110
98
|
export default getMergeRequestContent;
|
|
@@ -1,34 +1,23 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { MISSING_AUTH_TOKEN } from "../../util/missingAuthConstants.js";
|
|
11
2
|
const GITLAB_API_URL = "https://gitlab.com";
|
|
12
|
-
function gitlabFetch(endpoint, authToken) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
},
|
|
18
|
-
});
|
|
19
|
-
if (!res.ok) {
|
|
20
|
-
const text = yield res.text();
|
|
21
|
-
throw new Error(`GitLab API error: ${res.status} ${text}`);
|
|
22
|
-
}
|
|
23
|
-
return res.json();
|
|
3
|
+
async function gitlabFetch(endpoint, authToken) {
|
|
4
|
+
const res = await fetch(endpoint, {
|
|
5
|
+
headers: {
|
|
6
|
+
Authorization: `Bearer ${authToken}`,
|
|
7
|
+
},
|
|
24
8
|
});
|
|
9
|
+
if (!res.ok) {
|
|
10
|
+
const text = await res.text();
|
|
11
|
+
throw new Error(`GitLab API error: ${res.status} ${text}`);
|
|
12
|
+
}
|
|
13
|
+
return res.json();
|
|
25
14
|
}
|
|
26
15
|
/**
|
|
27
16
|
* List directory contents from a GitLab project
|
|
28
17
|
*/
|
|
29
|
-
const listDirectory =
|
|
18
|
+
const listDirectory = async ({ params, authParams, }) => {
|
|
30
19
|
const { authToken, baseUrl } = authParams;
|
|
31
|
-
const gitlabBaseUrl = baseUrl
|
|
20
|
+
const gitlabBaseUrl = baseUrl ?? GITLAB_API_URL;
|
|
32
21
|
if (!authToken)
|
|
33
22
|
throw new Error(MISSING_AUTH_TOKEN);
|
|
34
23
|
const { group, project, path, ref = "main" } = params;
|
|
@@ -37,9 +26,8 @@ const listDirectory = (_a) => __awaiter(void 0, [_a], void 0, function* ({ param
|
|
|
37
26
|
const url = `${gitlabBaseUrl}/api/v4/projects/${encodedProjectPath}/repository/tree` +
|
|
38
27
|
`?path=${encodeURIComponent(path)}` +
|
|
39
28
|
`&ref=${encodeURIComponent(ref)}`;
|
|
40
|
-
const treeItems =
|
|
29
|
+
const treeItems = await gitlabFetch(url, authToken);
|
|
41
30
|
const results = treeItems.map(item => {
|
|
42
|
-
var _a;
|
|
43
31
|
const isFile = item.type === "blob";
|
|
44
32
|
const htmlUrl = `${gitlabBaseUrl}/${fullPath}/-/blob/${ref}/${item.path}`;
|
|
45
33
|
return {
|
|
@@ -49,11 +37,11 @@ const listDirectory = (_a) => __awaiter(void 0, [_a], void 0, function* ({ param
|
|
|
49
37
|
name: item.name,
|
|
50
38
|
path: item.path,
|
|
51
39
|
type: item.type, // "blob" or "tree"
|
|
52
|
-
size: isFile ? (
|
|
40
|
+
size: isFile ? (item.size ?? 0) : 0, // Size may not be returned; fallback to 0
|
|
53
41
|
htmlUrl,
|
|
54
42
|
},
|
|
55
43
|
};
|
|
56
44
|
});
|
|
57
45
|
return { success: true, results };
|
|
58
|
-
}
|
|
46
|
+
};
|
|
59
47
|
export default listDirectory;
|