110 lines
3.2 KiB
TypeScript
110 lines
3.2 KiB
TypeScript
function digestToHash(digest: string): string {
|
|
return digest.split(':')[1];
|
|
}
|
|
|
|
export function getOciBlobPath(digest: string): string {
|
|
return `oci/blobs/sha256/${digestToHash(digest)}`;
|
|
}
|
|
|
|
export function getOciManifestPath(repository: string, digest: string): string {
|
|
return `oci/manifests/${repository}/${digestToHash(digest)}`;
|
|
}
|
|
|
|
export function getNpmPackumentPath(packageName: string): string {
|
|
return `npm/packages/${packageName}/index.json`;
|
|
}
|
|
|
|
export function getNpmTarballPath(packageName: string, version: string): string {
|
|
const safeName = packageName.replace('@', '').replace('/', '-');
|
|
return `npm/packages/${packageName}/${safeName}-${version}.tgz`;
|
|
}
|
|
|
|
export function getMavenArtifactPath(
|
|
groupId: string,
|
|
artifactId: string,
|
|
version: string,
|
|
filename: string
|
|
): string {
|
|
const groupPath = groupId.replace(/\./g, '/');
|
|
return `maven/artifacts/${groupPath}/${artifactId}/${version}/${filename}`;
|
|
}
|
|
|
|
export function getMavenMetadataPath(groupId: string, artifactId: string): string {
|
|
const groupPath = groupId.replace(/\./g, '/');
|
|
return `maven/metadata/${groupPath}/${artifactId}/maven-metadata.xml`;
|
|
}
|
|
|
|
export function getCargoConfigPath(): string {
|
|
return 'cargo/config.json';
|
|
}
|
|
|
|
export function getCargoIndexPath(crateName: string): string {
|
|
const lower = crateName.toLowerCase();
|
|
const len = lower.length;
|
|
|
|
if (len === 1) {
|
|
return `cargo/index/1/${lower}`;
|
|
}
|
|
|
|
if (len === 2) {
|
|
return `cargo/index/2/${lower}`;
|
|
}
|
|
|
|
if (len === 3) {
|
|
return `cargo/index/3/${lower.charAt(0)}/${lower}`;
|
|
}
|
|
|
|
const prefix1 = lower.substring(0, 2);
|
|
const prefix2 = lower.substring(2, 4);
|
|
return `cargo/index/${prefix1}/${prefix2}/${lower}`;
|
|
}
|
|
|
|
export function getCargoCratePath(crateName: string, version: string): string {
|
|
return `cargo/crates/${crateName}/${crateName}-${version}.crate`;
|
|
}
|
|
|
|
export function getComposerMetadataPath(vendorPackage: string): string {
|
|
return `composer/packages/${vendorPackage}/metadata.json`;
|
|
}
|
|
|
|
export function getComposerZipPath(vendorPackage: string, reference: string): string {
|
|
return `composer/packages/${vendorPackage}/${reference}.zip`;
|
|
}
|
|
|
|
export function getPypiMetadataPath(packageName: string): string {
|
|
return `pypi/metadata/${packageName}/metadata.json`;
|
|
}
|
|
|
|
export function getPypiSimpleIndexPath(packageName: string): string {
|
|
return `pypi/simple/${packageName}/index.html`;
|
|
}
|
|
|
|
export function getPypiSimpleRootIndexPath(): string {
|
|
return 'pypi/simple/index.html';
|
|
}
|
|
|
|
export function getPypiPackageFilePath(packageName: string, filename: string): string {
|
|
return `pypi/packages/${packageName}/${filename}`;
|
|
}
|
|
|
|
export function getRubyGemsVersionsPath(): string {
|
|
return 'rubygems/versions';
|
|
}
|
|
|
|
export function getRubyGemsInfoPath(gemName: string): string {
|
|
return `rubygems/info/${gemName}`;
|
|
}
|
|
|
|
export function getRubyGemsNamesPath(): string {
|
|
return 'rubygems/names';
|
|
}
|
|
|
|
export function getRubyGemsGemPath(gemName: string, version: string, platform?: string): string {
|
|
const filename = platform ? `${gemName}-${version}-${platform}.gem` : `${gemName}-${version}.gem`;
|
|
return `rubygems/gems/${filename}`;
|
|
}
|
|
|
|
export function getRubyGemsMetadataPath(gemName: string): string {
|
|
return `rubygems/metadata/${gemName}/metadata.json`;
|
|
}
|