n8n-nodes-base
Version:
Base nodes of n8n
109 lines • 4.31 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getUsers = getUsers;
exports.getRepositories = getRepositories;
exports.getWorkflows = getWorkflows;
exports.getRefs = getRefs;
const GenericFunctions_1 = require("./GenericFunctions");
async function getUsers(filter, paginationToken) {
const page = paginationToken ? +paginationToken : 1;
const per_page = 100;
let responseData = {
items: [],
total_count: 0,
};
try {
responseData = await GenericFunctions_1.githubApiRequest.call(this, 'GET', '/search/users', {}, { q: filter, page, per_page });
}
catch {
// will fail if the owner does not have any users
}
const results = responseData.items.map((item) => ({
name: item.login,
value: item.login,
url: item.html_url,
}));
const nextPaginationToken = page * per_page < responseData.total_count ? page + 1 : undefined;
return { results, paginationToken: nextPaginationToken };
}
async function getRepositories(filter, paginationToken) {
const owner = this.getCurrentNodeParameter('owner', { extractValue: true });
const page = paginationToken ? +paginationToken : 1;
const per_page = 100;
const q = `${filter ?? ''} user:${owner} fork:true`;
let responseData = {
items: [],
total_count: 0,
};
try {
responseData = await GenericFunctions_1.githubApiRequest.call(this, 'GET', '/search/repositories', {}, { q, page, per_page });
}
catch {
// will fail if the owner does not have any repositories
}
const results = responseData.items.map((item) => ({
name: item.name,
value: item.name,
url: item.html_url,
}));
const nextPaginationToken = page * per_page < responseData.total_count ? page + 1 : undefined;
return { results, paginationToken: nextPaginationToken };
}
async function getWorkflows(paginationToken) {
const owner = this.getCurrentNodeParameter('owner', { extractValue: true });
const repository = this.getCurrentNodeParameter('repository', { extractValue: true });
const page = paginationToken ? +paginationToken : 1;
const per_page = 100;
const endpoint = `/repos/${owner}/${repository}/actions/workflows`;
let responseData = {
workflows: [],
total_count: 0,
};
try {
responseData = await GenericFunctions_1.githubApiRequest.call(this, 'GET', endpoint, {}, { page, per_page });
}
catch {
// will fail if the repository does not have any workflows
}
const results = responseData.workflows.map((workflow) => ({
name: workflow.name,
value: workflow.id,
}));
const nextPaginationToken = page * per_page < responseData.total_count ? page + 1 : undefined;
return { results, paginationToken: nextPaginationToken };
}
async function getRefs(filter, paginationToken) {
const owner = this.getCurrentNodeParameter('owner', { extractValue: true });
const repository = this.getCurrentNodeParameter('repository', { extractValue: true });
const page = paginationToken ? +paginationToken : 1;
const per_page = 100;
const responseData = await GenericFunctions_1.githubApiRequest.call(this, 'GET', `/repos/${owner}/${repository}/git/refs`, {}, { page, per_page });
const refs = [];
for (const ref of responseData) {
const refPath = ref.ref.split('/');
const refType = refPath[1];
const refName = refPath.slice(2).join('/');
let description = '';
if (refType === 'heads') {
description = `Branch: ${refName}`;
}
else if (refType === 'tags') {
description = `Tag: ${refName}`;
}
else {
description = `${refType}: ${refName}`;
}
refs.push({
name: refName,
value: refName,
description,
});
}
if (filter) {
const filteredRefs = refs.filter((ref) => ref.name.toLowerCase().includes(filter.toLowerCase()));
return { results: filteredRefs };
}
const nextPaginationToken = responseData.length === per_page ? page + 1 : undefined;
return { results: refs, paginationToken: nextPaginationToken };
}
//# sourceMappingURL=SearchFunctions.js.map