UNPKG

aggregation-repository-provider

Version:
70 lines (69 loc) 3.04 kB
/** * <!-- skip-example --> * Combines several repository providers into one. * @param {MultiGroupProvider[]} providers * @property {MultiGroupProvider[]} providers * @example * const provider = new AggregationProvider([ * new GithubProvider(), * new BitbucketProvider() * ]); * const repository1 = await provider.repository( * 'https://github.com/arlac77/aggregation-repository-provider' * ); * const repository2 = await provider.repository( * 'https://arlac77@bitbucket.org/arlac77/sync-test-repository.git' * ); * // repository1 -> github * // repository2 -> bitbucket */ export class AggregationProvider extends MultiGroupProvider { /** * Creates a new provider for a given list of provider factories. * Factories can be import urls with additional instance identifier. * ```txt * IDENTIFIER(my-repository-provider) * ``` * @param {(new()=>MultiGroupProvider)[]|string[]} factories * @param {Object} [options] additional options * @param {Object} [env] taken from process.env * @return {Promise<MultiGroupProvider>} newly created provider */ static initializeWithProviders(factories?: (new () => MultiGroupProvider)[] | string[], options?: any, env?: any): Promise<MultiGroupProvider>; constructor(providers: any, options: any); setProviders(providers: any): void; _providers: any; providers(name: any): AsyncGenerator<any, void, any>; lookup(type: any, name: any): Promise<any>; /** * Retrieve named pull request in one of the given providers. * They are consulted in the order of the propviders given to the constructor. * @param {string} name * @return {Promise<PullRequest>} */ pullRequest(name: string): Promise<PullRequest>; /** * Retrieve named tag in one of the given providers. * They are consulted in the order of the propviders given to the constructor. * @param {string} name * @return {Promise<Tag>} */ tag(name: string): Promise<Tag>; /** * List provider objects of a given type collected from all providers. * * @param {string} type name of the method to deliver typed iterator projects,milestones,hooks,repositories,branches,tags * @param {string[]|string|undefined} patterns group / repository filter * @return {AsyncIterable<Repository|PullRequest|Branch|Tag|Project|Milestone|Hook>} all matching repositories of the providers */ list(type: string, patterns: string[] | string | undefined): AsyncIterable<Repository | PullRequest | Branch | Tag | Project | Milestone | Hook>; } export default AggregationProvider; import { MultiGroupProvider } from "repository-provider"; import { PullRequest } from "repository-provider"; import { Tag } from "repository-provider"; import { Repository } from "repository-provider"; import { Branch } from "repository-provider"; import { Project } from "repository-provider"; import { Milestone } from "repository-provider"; import { Hook } from "repository-provider";