How linus-berg/nugget works
Nugget is an S3-backed offline NuGet V3 server. Clients restore/search through protocol endpoints; uploaders publish packages through the authenticated write API. The graph also preserves advisory serving and cross-instance catalog synchronization. Endpoint-to-service relationships are supported by the SOURCE INDEX; unsampled endpoint internals are not inferred beyond those references.
Main entry points: PackageCatalog.cs Package Catalog · VulnerabilityStore.cs Vulnerability Store · CatalogSynchronizer.cs Catalog Synchronizer · PackageRepository.cs Metadata Repository
Components 26
NuGet API
- Flat Container
Nugget.Api/Endpoints/FlatContainerEndpoints.cs - Registrations
Nugget.Api/Endpoints/RegistrationEndpoints.cs - Search API
Nugget.Api/Endpoints/SearchEndpoints.cs - Service Index
Nugget.Api/Endpoints/ServiceIndexEndpoints.cs - Publish API
Nugget.Api/Endpoints/PublishEndpoints.cs - Vulnerability API
Nugget.Api/Endpoints/VulnerabilityEndpoints.cs - HTTP Helpers
Nugget.Api/Endpoints/HttpHelpers.cs
Package Lifecycle
- Package Inspector
Nugget.Api/Packages/PackageInspector.cs - Package Publisher
Nugget.Api/Packages/PackagePublisher.cs - Package Records
Nugget.Api/Packages/PackageRecord.cs - Metadata Repository
Nugget.Api/Packages/PackageRepository.cs
Catalog and Search
- Package Catalog
Nugget.Api/Catalog/PackageCatalog.cs - Package Summaries
Nugget.Api/Catalog/PackageSummary.cs - Catalog Synchronizer
Nugget.Api/Catalog/CatalogSynchronizer.cs - Sync Service
Nugget.Api/Catalog/CatalogSyncService.cs - Change Feed
Nugget.Api/Catalog/ChangeFeed.cs - Download Statistics
Nugget.Api/Catalog/DownloadStatistics.cs - Search Query
Nugget.Api/Catalog/SearchQuery.cs
S3 Persistence
- Object Store Interface
Nugget.Api/Storage/IObjectStore.cs - S3 Store
Nugget.Api/Storage/S3ObjectStore.cs - Storage Keys
Nugget.Api/Storage/StorageKeys.cs - JSON Serialization
Nugget.Api/Json/NuggetJson.cs
Advisories
- Vulnerability Store
Nugget.Api/Vulnerabilities/VulnerabilityStore.cs
Other components
- NuGet Clients
- Package Uploaders
- NuGet Advisory Source
Connections 42
- NuGet Clients → Service Index: requests resources
- NuGet Clients → Flat Container: restores packages
- NuGet Clients → Registrations: requests metadata
- NuGet Clients → Search API: searches packages
- Package Uploaders → Publish API: uploads packages
- Publish API → Package Inspector: inspects upload
Nugget.Api/Endpoints/PublishEndpoints.cs - Publish API → Package Publisher: publishes versions
Nugget.Api/Endpoints/PublishEndpoints.cs - Publish API → Change Feed: records changes
Nugget.Api/Endpoints/PublishEndpoints.cs - Publish API → Package Catalog: updates catalog
Nugget.Api/Endpoints/PublishEndpoints.cs - Package Publisher → Metadata Repository: updates metadata
Nugget.Api/Packages/PackagePublisher.cs - Package Publisher → Object Store Interface: writes package
Nugget.Api/Packages/PackagePublisher.cs - Package Publisher → Change Feed: appends changes
Nugget.Api/Packages/PackagePublisher.cs - Metadata Repository → Object Store Interface: reads and writes
Nugget.Api/Packages/PackageRepository.cs - Metadata Repository → Package Records: loads records
Nugget.Api/Packages/PackageRepository.cs - Metadata Repository → Storage Keys: keys metadata
Nugget.Api/Packages/PackageRepository.cs - Flat Container → Metadata Repository: reads package records
Nugget.Api/Endpoints/FlatContainerEndpoints.cs - Flat Container → Package Catalog: reads package data
Nugget.Api/Endpoints/FlatContainerEndpoints.cs - Flat Container → Download Statistics: counts downloads
Nugget.Api/Endpoints/FlatContainerEndpoints.cs - Registrations → Package Catalog: reads package data
Nugget.Api/Endpoints/RegistrationEndpoints.cs - Registrations → Metadata Repository: reads records
Nugget.Api/Endpoints/RegistrationEndpoints.cs - Registrations → Vulnerability Store: adds advisories
Nugget.Api/Endpoints/RegistrationEndpoints.cs - Search API → Package Catalog: searches catalog
Nugget.Api/Endpoints/SearchEndpoints.cs - Search API → Download Statistics: uses download counts
Nugget.Api/Endpoints/SearchEndpoints.cs - Search API → Vulnerability Store: adds advisories
Nugget.Api/Endpoints/SearchEndpoints.cs - Service Index → Vulnerability Store: advertises advisories
Nugget.Api/Endpoints/ServiceIndexEndpoints.cs - Service Index → Package Catalog: reports package state
Nugget.Api/Endpoints/ServiceIndexEndpoints.cs - Vulnerability API → Vulnerability Store: serves advisory data
- Sync Service → Catalog Synchronizer: runs synchronization
Nugget.Api/Catalog/CatalogSyncService.cs - Catalog Synchronizer → Object Store Interface: loads snapshots
Nugget.Api/Catalog/CatalogSynchronizer.cs - Catalog Synchronizer → Metadata Repository: rebuilds from metadata
Nugget.Api/Catalog/CatalogSynchronizer.cs - Catalog Synchronizer → Package Catalog: applies changes
Nugget.Api/Catalog/CatalogSynchronizer.cs - Catalog Synchronizer → Download Statistics: publishes counts
Nugget.Api/Catalog/CatalogSynchronizer.cs - Catalog Synchronizer → Vulnerability Store: loads advisories
Nugget.Api/Catalog/CatalogSynchronizer.cs - Catalog Synchronizer → Change Feed: consumes changes
Nugget.Api/Catalog/CatalogSynchronizer.cs - Package Catalog → Package Summaries: indexes records
Nugget.Api/Catalog/PackageCatalog.cs - Package Catalog → Search Query: parses search terms
Nugget.Api/Catalog/PackageCatalog.cs - Change Feed → Object Store Interface: stores change entries
Nugget.Api/Catalog/ChangeFeed.cs - Vulnerability Store → Object Store Interface: stores advisories
Nugget.Api/Vulnerabilities/VulnerabilityStore.cs - Vulnerability Store → Storage Keys: keys advisory files
Nugget.Api/Vulnerabilities/VulnerabilityStore.cs - NuGet Advisory Source → Vulnerability Store: supplies mirrored data
- Object Store Interface → S3 Store: implemented by
Nugget.Api/Storage/S3ObjectStore.cs - HTTP Helpers → JSON Serialization: serializes responses
Nugget.Api/Endpoints/HttpHelpers.cs