aggregation-repository-provider
Version:
aggregates several repository providers into one
70 lines (69 loc) • 3.04 kB
text/typescript
/**
* <!-- 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";