Files
2026-05-27 23:29:53 +01:00

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, registerSitemapErrorCodes
  • emptyUrls, 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; counter sitemap.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