UNPKG

@atomist/sdm

Version:

Atomist Software Delivery Machine SDK

54 lines 1.83 kB
"use strict"; /* * Copyright © 2019 Atomist, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.allReposInTeam = void 0; const _ = require("lodash"); const PageSize = 100; /** * Use a GraphQL query to find all repos for the current team * @param rrr RepoRefResolver used to find RepoRef from GraphQL result * @constructor */ function allReposInTeam(rrr) { return (context) => { return queryForPage(rrr, context, 0); }; } exports.allReposInTeam = allReposInTeam; /** * Recursively query for repos from the present offset * @param rrr repo ref resolver to use * @param {HandlerContext} context * @param {number} offset * @return {Promise<RepoRef[]>} */ function queryForPage(rrr, context, offset) { return context.graphClient.query({ name: "ReposInTeam", variables: { offset, size: PageSize }, }) .then(result => { return _.flatMap(result.ChatTeam[0].orgs, org => org.repo.map((r) => rrr.toRemoteRepoRef(r, {}))); }) .then(repos => { return (repos.length < PageSize) ? repos : queryForPage(rrr, context, offset + PageSize) .then(moreRepos => repos.concat(moreRepos)); }); } //# sourceMappingURL=allReposInTeam.js.map