2.5 KiB
2.5 KiB
OpenSpec Change: enterprise-sitemap
- Change ID: enterprise-sitemap
- Package:
@suaveplan/sitemap - Category: universal
- Target path:
universal/platform/sitemap - Status: PROPOSED
- Date: 2026-04-19
- Reference spec:
/mnt/s/web/suaveplan/enterprise/sitemap.md
Summary
Greenfield rebuild of @suaveplan/sitemap — RFC-compliant XML sitemap generator + parser with image, video, and news extensions; sitemap-index generator for sites > 50 k URLs; incremental builder with hash-based change detection; gzip compression with Content-Encoding headers; structured errors.
Current-state audit (genesis)
Package does not exist yet — fresh build.
Dependencies
- Workspace:
@suaveplan/error,@suaveplan/types - External (via catalog):
zod,tslib,@opentelemetry/api,fflate(compression),fast-xml-parser - Dev (via catalog):
vitest,@vitest/coverage-istanbul,fast-check,mitata
Preserved public surface
Generator / parser
SitemapGenerator,SitemapIndexGenerator- Types:
SitemapOptions,SitemapUrl,SitemapImage,SitemapVideo,SitemapNews,SitemapIndex,ChangeFreq,RobotsRule,VALID_CHANGE_FREQS,SitemapIndexConfig,SitemapIndexResult,SubSitemap
Extensions
- Images:
addImagesToUrl,addImagesToUrlSet,countImages,createImageEntry,extractImageUrls,removeImagesFromUrl,validateImageData,validateImageSet - Videos:
addVideosToUrl,addVideosToUrlSet,countVideos,createVideoEntry,extractVideoTitles,removeVideosFromUrl,validateVideoData
Incremental
IncrementalBuilder,computeUrlHash,IncrementalBuilderConfig,UrlChangeRecord,ChangeDetectionMode,ChangeDetectionResult
Compression
compressSitemap,decompressSitemap,estimateCompressedSize,formatSize,generateCompressionHeaders- Types:
CompressionHeaders,CompressionResult,SizeEstimate
Errors
SitemapError,SitemapErrorCode,SitemapErrorContext,SITEMAP_ERROR_METADATA,registerSitemapErrorCodesemptyUrls,fetchFailed,invalidChangeFreq,invalidPriority,invalidUrl,parseFailed,tooLarge
New genesis additions
- Zod schemas for every URL / image / video shape.
- OTel histograms
sitemap.generate.duration_ms,sitemap.parse.duration_ms; countersitemap.urls.total. - Property tests: build → compress → decompress → parse yields identical URL set.
Impact
- Adds one new package:
universal/platform/sitemap - Adds one new spec capability:
sitemap