48 lines
2.2 KiB
TypeScript
48 lines
2.2 KiB
TypeScript
import { DownloadGitHubRepoOptions, DownloadGitHubRepoResult } from './github/index.js';
|
|
import { DownloadGitRepoOptions, DownloadGitRepoResult } from './git/index.js';
|
|
import { DownloadNPMPackageOptions, DownloadNPMPackageResult } from './npm/index.js';
|
|
import { DocumentNotModified } from './types/modified.js';
|
|
import { DownloadSourceType, DownloadSourceMixin } from './types/sources.js';
|
|
import { DownloadGitLabRepoOptions, DownloadGitLabRepoResult } from './gitlab/index.js';
|
|
import '../export/helpers/prepare.js';
|
|
import './github/types.js';
|
|
import './gitlab/types.js';
|
|
|
|
/**
|
|
* Options and result combinations
|
|
*/
|
|
interface DownloadGitRepo {
|
|
options: DownloadGitRepoOptions & DownloadSourceMixin<'git'>;
|
|
result: DownloadGitRepoResult;
|
|
}
|
|
interface DownloadGitHubRepo {
|
|
options: DownloadGitHubRepoOptions & DownloadSourceMixin<'github'>;
|
|
result: DownloadGitHubRepoResult;
|
|
}
|
|
interface DownloadGitLabRepo {
|
|
options: DownloadGitLabRepoOptions & DownloadSourceMixin<'gitlab'>;
|
|
result: DownloadGitLabRepoResult;
|
|
}
|
|
interface DownloadNPMPackage {
|
|
options: DownloadNPMPackageOptions & DownloadSourceMixin<'npm'>;
|
|
result: DownloadNPMPackageResult;
|
|
}
|
|
/**
|
|
* Combinations based on type
|
|
*/
|
|
type DownloadParamsMixin<T extends DownloadSourceType> = T extends 'git' ? DownloadGitRepo : T extends 'github' ? DownloadGitHubRepo : T extends 'gitlab' ? DownloadGitLabRepo : T extends 'npm' ? DownloadNPMPackage : never;
|
|
/**
|
|
* Combinations
|
|
*/
|
|
type DownloadParams = DownloadGitRepo | DownloadGitHubRepo | DownloadGitLabRepo | DownloadNPMPackage;
|
|
/**
|
|
* Pick options or result from combinations
|
|
*/
|
|
type DownloadOptions<T extends DownloadSourceType> = DownloadParamsMixin<T>['options'];
|
|
type DownloadResult<T extends DownloadSourceType> = Promise<DocumentNotModified | DownloadParamsMixin<T>['result']>;
|
|
declare function downloadPackage<T extends 'git'>(options: DownloadOptions<T>): DownloadResult<T>;
|
|
declare function downloadPackage<T extends 'github'>(options: DownloadOptions<T>): DownloadResult<T>;
|
|
declare function downloadPackage<T extends 'gitlab'>(options: DownloadOptions<T>): DownloadResult<T>;
|
|
declare function downloadPackage<T extends 'npm'>(options: DownloadOptions<T>): DownloadResult<T>;
|
|
|
|
export { type DownloadParams, type DownloadParamsMixin, downloadPackage };
|