2025-11-21 17:13:06 +00:00
|
|
|
/**
|
|
|
|
|
* RubyGems Registry Type Definitions
|
|
|
|
|
* Compliant with Compact Index API and RubyGems protocol
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Gem version entry in compact index
|
|
|
|
|
*/
|
|
|
|
|
export interface IRubyGemsVersion {
|
|
|
|
|
/** Version number */
|
|
|
|
|
version: string;
|
|
|
|
|
/** Platform (e.g., ruby, x86_64-linux) */
|
|
|
|
|
platform?: string;
|
|
|
|
|
/** Dependencies */
|
|
|
|
|
dependencies?: IRubyGemsDependency[];
|
|
|
|
|
/** Requirements */
|
|
|
|
|
requirements?: IRubyGemsRequirement[];
|
|
|
|
|
/** Whether this version is yanked */
|
|
|
|
|
yanked?: boolean;
|
|
|
|
|
/** SHA256 checksum of .gem file */
|
|
|
|
|
checksum?: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Gem dependency specification
|
|
|
|
|
*/
|
|
|
|
|
export interface IRubyGemsDependency {
|
|
|
|
|
/** Gem name */
|
|
|
|
|
name: string;
|
|
|
|
|
/** Version requirement (e.g., ">= 1.0", "~> 2.0") */
|
|
|
|
|
requirement: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Gem requirements (ruby version, rubygems version, etc.)
|
|
|
|
|
*/
|
|
|
|
|
export interface IRubyGemsRequirement {
|
|
|
|
|
/** Requirement type (ruby, rubygems) */
|
|
|
|
|
type: 'ruby' | 'rubygems';
|
|
|
|
|
/** Version requirement */
|
|
|
|
|
requirement: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Complete gem metadata
|
|
|
|
|
*/
|
|
|
|
|
export interface IRubyGemsMetadata {
|
|
|
|
|
/** Gem name */
|
|
|
|
|
name: string;
|
|
|
|
|
/** All versions */
|
|
|
|
|
versions: Record<string, IRubyGemsVersionMetadata>;
|
|
|
|
|
/** Last modified timestamp */
|
|
|
|
|
'last-modified'?: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Version-specific metadata
|
|
|
|
|
*/
|
|
|
|
|
export interface IRubyGemsVersionMetadata {
|
|
|
|
|
/** Version number */
|
|
|
|
|
version: string;
|
|
|
|
|
/** Platform */
|
|
|
|
|
platform?: string;
|
|
|
|
|
/** Authors */
|
|
|
|
|
authors?: string[];
|
|
|
|
|
/** Description */
|
|
|
|
|
description?: string;
|
|
|
|
|
/** Summary */
|
|
|
|
|
summary?: string;
|
|
|
|
|
/** Homepage */
|
|
|
|
|
homepage?: string;
|
|
|
|
|
/** License */
|
|
|
|
|
license?: string;
|
|
|
|
|
/** Dependencies */
|
|
|
|
|
dependencies?: IRubyGemsDependency[];
|
|
|
|
|
/** Requirements */
|
|
|
|
|
requirements?: IRubyGemsRequirement[];
|
|
|
|
|
/** SHA256 checksum */
|
|
|
|
|
checksum: string;
|
|
|
|
|
/** File size */
|
|
|
|
|
size: number;
|
|
|
|
|
/** Upload timestamp */
|
|
|
|
|
'upload-time': string;
|
|
|
|
|
/** Uploader */
|
|
|
|
|
'uploaded-by': string;
|
|
|
|
|
/** Yanked status */
|
|
|
|
|
yanked?: boolean;
|
|
|
|
|
/** Yank reason */
|
|
|
|
|
'yank-reason'?: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Compact index versions file entry
|
|
|
|
|
* Format: GEMNAME [-]VERSION_PLATFORM[,VERSION_PLATFORM,...] MD5
|
|
|
|
|
*/
|
|
|
|
|
export interface ICompactIndexVersionsEntry {
|
|
|
|
|
/** Gem name */
|
|
|
|
|
name: string;
|
|
|
|
|
/** Versions (with optional platform and yank flag) */
|
|
|
|
|
versions: Array<{
|
|
|
|
|
version: string;
|
|
|
|
|
platform?: string;
|
|
|
|
|
yanked: boolean;
|
|
|
|
|
}>;
|
|
|
|
|
/** MD5 checksum of info file */
|
|
|
|
|
infoChecksum: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Compact index info file entry
|
|
|
|
|
* Format: VERSION[-PLATFORM] [DEP[,DEP,...]]|REQ[,REQ,...]
|
|
|
|
|
*/
|
|
|
|
|
export interface ICompactIndexInfoEntry {
|
|
|
|
|
/** Version number */
|
|
|
|
|
version: string;
|
|
|
|
|
/** Platform (optional) */
|
|
|
|
|
platform?: string;
|
|
|
|
|
/** Dependencies */
|
|
|
|
|
dependencies: IRubyGemsDependency[];
|
|
|
|
|
/** Requirements */
|
|
|
|
|
requirements: IRubyGemsRequirement[];
|
|
|
|
|
/** SHA256 checksum */
|
|
|
|
|
checksum: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Gem upload request
|
|
|
|
|
*/
|
|
|
|
|
export interface IRubyGemsUploadRequest {
|
|
|
|
|
/** Gem file data */
|
|
|
|
|
gemData: Buffer;
|
|
|
|
|
/** Gem filename */
|
|
|
|
|
filename: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Gem upload response
|
|
|
|
|
*/
|
|
|
|
|
export interface IRubyGemsUploadResponse {
|
|
|
|
|
/** Success message */
|
|
|
|
|
message?: string;
|
|
|
|
|
/** Gem name */
|
|
|
|
|
name?: string;
|
|
|
|
|
/** Version */
|
|
|
|
|
version?: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Yank request
|
|
|
|
|
*/
|
|
|
|
|
export interface IRubyGemsYankRequest {
|
|
|
|
|
/** Gem name */
|
|
|
|
|
gem_name: string;
|
|
|
|
|
/** Version to yank */
|
|
|
|
|
version: string;
|
|
|
|
|
/** Platform (optional) */
|
|
|
|
|
platform?: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Yank response
|
|
|
|
|
*/
|
|
|
|
|
export interface IRubyGemsYankResponse {
|
|
|
|
|
/** Success indicator */
|
|
|
|
|
success: boolean;
|
|
|
|
|
/** Message */
|
|
|
|
|
message?: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Version info response (JSON)
|
|
|
|
|
*/
|
|
|
|
|
export interface IRubyGemsVersionInfo {
|
|
|
|
|
/** Gem name */
|
|
|
|
|
name: string;
|
|
|
|
|
/** Versions list */
|
|
|
|
|
versions: Array<{
|
|
|
|
|
/** Version number */
|
|
|
|
|
number: string;
|
|
|
|
|
/** Platform */
|
|
|
|
|
platform?: string;
|
|
|
|
|
/** Build date */
|
|
|
|
|
built_at?: string;
|
|
|
|
|
/** Download count */
|
|
|
|
|
downloads_count?: number;
|
|
|
|
|
}>;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Dependencies query response
|
|
|
|
|
*/
|
|
|
|
|
export interface IRubyGemsDependenciesResponse {
|
|
|
|
|
/** Dependencies for requested gems */
|
|
|
|
|
dependencies: Array<{
|
|
|
|
|
/** Gem name */
|
|
|
|
|
name: string;
|
|
|
|
|
/** Version */
|
|
|
|
|
number: string;
|
|
|
|
|
/** Platform */
|
|
|
|
|
platform?: string;
|
|
|
|
|
/** Dependencies */
|
|
|
|
|
dependencies: Array<{
|
|
|
|
|
name: string;
|
|
|
|
|
requirements: string;
|
|
|
|
|
}>;
|
|
|
|
|
}>;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Error response structure
|
|
|
|
|
*/
|
|
|
|
|
export interface IRubyGemsError {
|
|
|
|
|
/** Error message */
|
2025-11-25 15:07:59 +00:00
|
|
|
error: string;
|
2025-11-21 17:13:06 +00:00
|
|
|
/** HTTP status code */
|
|
|
|
|
status?: number;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Gem specification (extracted from .gem file)
|
|
|
|
|
*/
|
|
|
|
|
export interface IRubyGemsSpec {
|
|
|
|
|
/** Gem name */
|
|
|
|
|
name: string;
|
|
|
|
|
/** Version */
|
|
|
|
|
version: string;
|
|
|
|
|
/** Platform */
|
|
|
|
|
platform?: string;
|
|
|
|
|
/** Authors */
|
|
|
|
|
authors?: string[];
|
|
|
|
|
/** Email */
|
|
|
|
|
email?: string;
|
|
|
|
|
/** Homepage */
|
|
|
|
|
homepage?: string;
|
|
|
|
|
/** Summary */
|
|
|
|
|
summary?: string;
|
|
|
|
|
/** Description */
|
|
|
|
|
description?: string;
|
|
|
|
|
/** License */
|
|
|
|
|
license?: string;
|
|
|
|
|
/** Dependencies */
|
|
|
|
|
dependencies?: IRubyGemsDependency[];
|
|
|
|
|
/** Required Ruby version */
|
|
|
|
|
required_ruby_version?: string;
|
|
|
|
|
/** Required RubyGems version */
|
|
|
|
|
required_rubygems_version?: string;
|
|
|
|
|
/** Files */
|
|
|
|
|
files?: string[];
|
|
|
|
|
/** Requirements */
|
|
|
|
|
requirements?: string[];
|
|
|
|
|
}
|