{"_id":"@afilmory/builder","_rev":"8-2e51b8f5d79cfea5adabce62a7fd7de8","name":"@afilmory/builder","dist-tags":{"latest":"0.2.2"},"versions":{"0.1.0":{"name":"@afilmory/builder","version":"0.1.0","_id":"@afilmory/builder@0.1.0","maintainers":[{"name":"innei","email":"tukon479@gmail.com"}],"dist":{"shasum":"d755b72b263e9103da54be51171929540a87a3d2","tarball":"https://registry.npmjs.org/@afilmory/builder/-/builder-0.1.0.tgz","fileCount":61,"integrity":"sha512-ZsLJbuCWMmkMGlAASu7PS4G3+lCgHpz0znfFFWpcPf7XG8P5LC39SkAMqsAdHLsalJFXzifEg4OLD9k/35qtkA==","signatures":[{"sig":"MEUCIQDQBj72VGX8MMZHPnXNIYqGl3Pcw0NTwKMa7bXL3t6svgIgFM0qzpuFUYrw465vVVE8zutGLDQp+OLSv/l+czPiat8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":531084},"type":"module","exports":{".":"./src/index.ts","./*":"./src/*"},"gitHead":"ad0c8830a629c10ab958ad2c28cb1f1a648ff33f","scripts":{"cli":"tsx src/cli.ts","bump":"nbump","build":"tsdown"},"_npmUser":{"name":"innei","email":"tukon479@gmail.com"},"_npmVersion":"10.2.4","description":"这是照片库构建系统的核心模块，采用模块化设计，将不同功能分离到各自的模块中。","directories":{},"_nodeVersion":"22.15.0","dependencies":{"c12":"^1.11.2","execa":"9.6.0","sharp":"0.34.4","heic-to":"1.3.0","blurhash":"2.0.5","thumbhash":"0.1.1","heic-convert":"2.1.0","dotenv-expand":"catalog:","@vingle/bmp-js":"^0.2.5","@afilmory/utils":"workspace:*","exiftool-vendored":"31.1.0","@aws-sdk/client-s3":"3.916.0","@aws-sdk/node-http-handler":"3.374.0","@aws-sdk/s3-request-presigner":"3.916.0"},"publishConfig":{"main":"./dist/index.js","access":"public","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./*":{"types":"./dist/*.d.ts","import":"./dist/*.js"}}},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"0.15.9"},"_npmOperationalInternal":{"tmp":"tmp/builder_0.1.0_1761650956715_0.35633481407486256","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@afilmory/builder","version":"0.1.1","_id":"@afilmory/builder@0.1.1","maintainers":[{"name":"innei","email":"tukon479@gmail.com"}],"dist":{"shasum":"cb6246277c62e9b078847535dfe8ff2118a8c156","tarball":"https://registry.npmjs.org/@afilmory/builder/-/builder-0.1.1.tgz","fileCount":61,"integrity":"sha512-KyCSsly6j3GKt6xiafWof8Mm+HCw1RzLnVRkYgtZ8fPsS3Esli78yTLW+oV8U41L4TWxw7GUWljuNc1mvQf0Kw==","signatures":[{"sig":"MEUCIQDKC+akJNZo0J34L3R7HfvWZ/CVXki66wMy24Iyi5/OFAIgK039zZ0qMbYX76XM3ETsWL5O7gLqnghrJYc5+Rzq2z4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":532606},"type":"module","exports":{".":"./src/index.ts","./*":"./src/*"},"gitHead":"ad0c8830a629c10ab958ad2c28cb1f1a648ff33f","scripts":{"cli":"tsx src/cli.ts","bump":"nbump","build":"tsdown"},"_npmUser":{"name":"innei","email":"tukon479@gmail.com"},"_npmVersion":"10.2.4","description":"这是照片库构建系统的核心模块，采用模块化设计，将不同功能分离到各自的模块中。","directories":{},"_nodeVersion":"22.15.0","dependencies":{"c12":"^1.11.2","execa":"9.6.0","sharp":"0.34.4","heic-to":"1.3.0","blurhash":"2.0.5","thumbhash":"0.1.1","heic-convert":"2.1.0","dotenv-expand":"catalog:","@vingle/bmp-js":"^0.2.5","exiftool-vendored":"31.1.0","@aws-sdk/client-s3":"3.916.0","@aws-sdk/node-http-handler":"3.374.0","@aws-sdk/s3-request-presigner":"3.916.0"},"publishConfig":{"main":"./dist/index.js","access":"public","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./*":{"types":"./dist/*.d.ts","import":"./dist/*.js"}}},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"0.15.9","@afilmory/utils":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/builder_0.1.1_1761651035135_0.6576461878778515","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@afilmory/builder","version":"0.1.2","_id":"@afilmory/builder@0.1.2","maintainers":[{"name":"innei","email":"tukon479@gmail.com"}],"dist":{"shasum":"e979ca3d140b48d27b818901d2adadcb297e606f","tarball":"https://registry.npmjs.org/@afilmory/builder/-/builder-0.1.2.tgz","fileCount":61,"integrity":"sha512-UMk7lcGTRggtER999HEC4MST0ymTv2rXfnDQOYvS33BeNB5D3g65pkq8HhkCFMT8EknwQePXZL1OxC2i0EAj9g==","signatures":[{"sig":"MEUCIDX55I5AJauPcioJJ7KZE4g3rRm5pKChe92GZzePf/dQAiEAi6yZA/1j1napIxwY7HOeeKdny8YTABBTQcNcV6yno+0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":532510},"type":"module","exports":{".":"./src/index.ts","./*":"./src/*"},"gitHead":"ad0c8830a629c10ab958ad2c28cb1f1a648ff33f","scripts":{"cli":"tsx src/cli.ts","bump":"nbump","build":"tsdown"},"_npmUser":{"name":"innei","email":"tukon479@gmail.com"},"_npmVersion":"10.2.4","description":"这是照片库构建系统的核心模块，采用模块化设计，将不同功能分离到各自的模块中。","directories":{},"_nodeVersion":"22.15.0","dependencies":{"c12":"^1.11.2","execa":"9.6.0","sharp":"0.34.4","heic-to":"1.3.0","blurhash":"2.0.5","thumbhash":"0.1.1","heic-convert":"2.1.0","dotenv-expand":"catalog:","@vingle/bmp-js":"^0.2.5","exiftool-vendored":"31.1.0","@aws-sdk/client-s3":"3.916.0","@aws-sdk/node-http-handler":"3.374.0","@aws-sdk/s3-request-presigner":"3.916.0"},"publishConfig":{"main":"./dist/index.js","access":"public","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./*":{"types":"./dist/*.d.ts","import":"./dist/*.js"}}},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"0.15.9","@afilmory/utils":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/builder_0.1.2_1761651312396_0.710893450899192","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@afilmory/builder","version":"0.1.3","_id":"@afilmory/builder@0.1.3","maintainers":[{"name":"innei","email":"tukon479@gmail.com"}],"dist":{"shasum":"57c62fd84b3b877673ef2eedbeb19e7fcc216954","tarball":"https://registry.npmjs.org/@afilmory/builder/-/builder-0.1.3.tgz","fileCount":62,"integrity":"sha512-syaMtpq8y5mMS2UFpddERI8zY7tTIThxD4Rp11EQqJ77CFKXyX7L2kirumZHwy8CPGZW8GYn/CkX0o/85hCVSw==","signatures":[{"sig":"MEUCICwd4nYJ89BMcs8ocXX8GCx0yM049IS664+Q2CBK6QxIAiEAs9FbACxKbBCVjWX6k7eN105x96pXcozsZJyPDo5v8JI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":575619},"main":"./dist/index.js","type":"module","_from":"file:afilmory-builder-0.1.3.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./*":{"types":"./dist/*.d.ts","import":"./dist/*.js"}},"scripts":{"cli":"tsx src/cli.ts","bump":"nbump","build":"tsdown"},"_npmUser":{"name":"innei","email":"tukon479@gmail.com"},"_resolved":"/private/var/folders/lh/pd33jhq91zqbgk8ktnz12j280000gp/T/261e6769f4418a87f7d5339ff82020c6/afilmory-builder-0.1.3.tgz","_integrity":"sha512-syaMtpq8y5mMS2UFpddERI8zY7tTIThxD4Rp11EQqJ77CFKXyX7L2kirumZHwy8CPGZW8GYn/CkX0o/85hCVSw==","_npmVersion":"10.2.4","description":"这是照片库构建系统的核心模块，采用模块化设计，将不同功能分离到各自的模块中。","directories":{},"_nodeVersion":"22.15.0","dependencies":{"c12":"^1.11.2","execa":"9.6.0","sharp":"0.34.4","heic-to":"1.3.0","blurhash":"2.0.5","thumbhash":"0.1.1","heic-convert":"2.1.0","dotenv-expand":"12.0.3","@vingle/bmp-js":"^0.2.5","exiftool-vendored":"31.1.0","@aws-sdk/client-s3":"3.916.0","@aws-sdk/node-http-handler":"3.374.0","@aws-sdk/s3-request-presigner":"3.916.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"0.15.9","@afilmory/utils":"0.0.1"},"_npmOperationalInternal":{"tmp":"tmp/builder_0.1.3_1761651352506_0.2821658478775757","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@afilmory/builder","version":"0.2.0","_id":"@afilmory/builder@0.2.0","maintainers":[{"name":"innei","email":"tukon479@gmail.com"}],"dist":{"shasum":"e37774aa5ae6186bc3e6d473df4f7340d6434bd5","tarball":"https://registry.npmjs.org/@afilmory/builder/-/builder-0.2.0.tgz","fileCount":80,"integrity":"sha512-yetAutICxTZaxvvD/uFs2WFxWI6lTC3jUrqN1w8/Fhc6Nw6KQhNFYKfTfvUF1pAJ979uawDFYtj8NlmfbnDpqw==","signatures":[{"sig":"MEUCIF3i/+a4Wr6fBJybVQ+emHF1h3HXsILYdIsyAGPAMQzMAiEA8uIcDIPjER+Cq775vGRaZyrSY5KItyYoUtlWjYBt/mY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":601006},"main":"./dist/index.js","type":"module","_from":"file:afilmory-builder-0.2.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./*":{"types":"./dist/*.d.ts","import":"./dist/*.js"}},"scripts":{"cli":"tsx src/cli.ts","bump":"nbump","build":"tsdown"},"_npmUser":{"name":"innei","email":"tukon479@gmail.com"},"_resolved":"/private/var/folders/lh/pd33jhq91zqbgk8ktnz12j280000gp/T/010c61044a4018572a9704f45ed75e18/afilmory-builder-0.2.0.tgz","_integrity":"sha512-yetAutICxTZaxvvD/uFs2WFxWI6lTC3jUrqN1w8/Fhc6Nw6KQhNFYKfTfvUF1pAJ979uawDFYtj8NlmfbnDpqw==","_npmVersion":"10.2.4","description":"这是照片库构建系统的核心模块，采用模块化设计，将不同功能分离到各自的模块中。","directories":{},"_nodeVersion":"22.15.0","dependencies":{"c12":"^3.3.2","execa":"9.6.0","sharp":"0.34.5","heic-to":"1.3.0","blurhash":"2.0.5","thumbhash":"0.1.1","heic-convert":"2.1.0","dotenv-expand":"12.0.3","@vingle/bmp-js":"^0.2.5","fast-xml-parser":"4.4.1","exiftool-vendored":"31.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"0.16.3","@afilmory/utils":"0.0.1"},"_npmOperationalInternal":{"tmp":"tmp/builder_0.2.0_1763051129254_0.98783316997111","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@afilmory/builder","version":"0.2.1","_id":"@afilmory/builder@0.2.1","maintainers":[{"name":"innei","email":"tukon479@gmail.com"}],"dist":{"shasum":"00146ab0b2d71834a32a510c66219c8139c956e5","tarball":"https://registry.npmjs.org/@afilmory/builder/-/builder-0.2.1.tgz","fileCount":80,"integrity":"sha512-MrDgPxSBVOnVeMzKg5ZmksWCm5XgTTTgROiTs5ehqgEIhFGelGhCz0rwh6Bmv8GOjxxn21zU1OH6LI41rXQ7Ew==","signatures":[{"sig":"MEUCIQD3u8RCGdLRPLcbM4GUrzLKX0vfO1oeJ/Y3vIu73q/JmwIgbpLBYemHtLNUjkOYTKXYyxGyLyz9LEsSPpfftg1pmlU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":601015},"main":"./dist/index.js","type":"module","_from":"file:afilmory-builder-0.2.1.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./*":{"types":"./dist/*.d.ts","import":"./dist/*.js"}},"scripts":{"cli":"tsx src/cli.ts","bump":"nbump","build":"tsdown"},"_npmUser":{"name":"innei","email":"tukon479@gmail.com"},"_resolved":"/private/var/folders/lh/pd33jhq91zqbgk8ktnz12j280000gp/T/33e576941a532e423428610cae4aaa4b/afilmory-builder-0.2.1.tgz","_integrity":"sha512-MrDgPxSBVOnVeMzKg5ZmksWCm5XgTTTgROiTs5ehqgEIhFGelGhCz0rwh6Bmv8GOjxxn21zU1OH6LI41rXQ7Ew==","_npmVersion":"10.2.4","description":"这是照片库构建系统的核心模块，采用模块化设计，将不同功能分离到各自的模块中。","directories":{},"_nodeVersion":"22.15.0","dependencies":{"c12":"^3.3.2","execa":"9.6.0","sharp":"0.34.5","heic-to":"1.3.0","blurhash":"2.0.5","thumbhash":"0.1.1","heic-convert":"2.1.0","dotenv-expand":"12.0.3","@vingle/bmp-js":"^0.2.5","fast-xml-parser":"4.4.1","exiftool-vendored":"31.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"0.16.3","@afilmory/utils":"0.0.1"},"_npmOperationalInternal":{"tmp":"tmp/builder_0.2.1_1763051311715_0.7492533533388124","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@afilmory/builder","version":"0.2.2","_id":"@afilmory/builder@0.2.2","maintainers":[{"name":"innei","email":"tukon479@gmail.com"}],"dist":{"shasum":"329d3c0aba37b1d8a8a12ec16f984ffe5691207d","tarball":"https://registry.npmjs.org/@afilmory/builder/-/builder-0.2.2.tgz","fileCount":80,"integrity":"sha512-zJIRySMvB8gUtZf3ylOd1rMpBv/JRnS04sGnoddXAqDxeBJG7CqQ098rlAT6tFLPCbPXXDAdWke9Msld7SJYtA==","signatures":[{"sig":"MEUCIQC7BPzqwnR3Ymp1aYbXjJ/yxSK7vR39iIwR88h4bNBIywIgc3GpzW45bMf109qXwu5vtrqPVCUr0aZ9hzK8cIiJUdg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":601020},"main":"./dist/index.mjs","type":"module","_from":"file:afilmory-builder-0.2.2.tgz","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./*":{"types":"./dist/*.d.mts","import":"./dist/*.mjs"}},"scripts":{"cli":"tsx src/cli.ts","bump":"nbump","build":"tsdown"},"_npmUser":{"name":"innei","email":"tukon479@gmail.com"},"_resolved":"/private/var/folders/lh/pd33jhq91zqbgk8ktnz12j280000gp/T/0555afb1995c07de52e4a0bd13247010/afilmory-builder-0.2.2.tgz","_integrity":"sha512-zJIRySMvB8gUtZf3ylOd1rMpBv/JRnS04sGnoddXAqDxeBJG7CqQ098rlAT6tFLPCbPXXDAdWke9Msld7SJYtA==","_npmVersion":"10.2.4","description":"这是照片库构建系统的核心模块，采用模块化设计，将不同功能分离到各自的模块中。","directories":{},"_nodeVersion":"22.15.0","dependencies":{"c12":"^3.3.2","execa":"9.6.0","sharp":"0.34.5","heic-to":"1.3.0","blurhash":"2.0.5","thumbhash":"0.1.1","heic-convert":"2.1.0","dotenv-expand":"12.0.3","@vingle/bmp-js":"^0.2.5","fast-xml-parser":"4.4.1","exiftool-vendored":"31.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"0.16.3","@afilmory/utils":"0.0.1"},"_npmOperationalInternal":{"tmp":"tmp/builder_0.2.2_1763051436421_0.4050793010071123","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2025-10-28T11:29:16.640Z","modified":"2026-04-25T13:30:51.752Z","0.1.0":"2025-10-28T11:29:16.948Z","0.1.1":"2025-10-28T11:30:35.347Z","0.1.2":"2025-10-28T11:35:12.680Z","0.1.3":"2025-10-28T11:35:52.698Z","0.2.0":"2025-11-13T16:25:29.456Z","0.2.1":"2025-11-13T16:28:31.953Z","0.2.2":"2025-11-13T16:30:36.656Z"},"description":"这是照片库构建系统的核心模块，采用模块化设计，将不同功能分离到各自的模块中。","maintainers":[{"email":"npm@chralpha.com","name":"chralpha"},{"email":"tukon479@gmail.com","name":"innei"}],"readme":"# Afilmory Builder\n\n这是照片库构建系统的核心模块，采用模块化设计，将不同功能分离到各自的模块中。\n\n## 架构概览\n\n```\nsrc/core/\n├── types/          # 类型定义\n│   └── photo.ts    # 照片相关类型\n├── logger/         # 日志系统\n│   └── index.ts    # 统一日志器\n├── s3/             # S3 存储操作\n│   ├── client.ts   # S3 客户端配置\n│   └── operations.ts # S3 操作（上传、下载、列表）\n├── image/          # 图像处理\n│   ├── processor.ts # 图像预处理和元数据\n│   ├── blurhash.ts # Blurhash 生成\n│   ├── thumbnail.ts # 缩略图生成\n│   └── exif.ts     # EXIF 数据提取\n├── photo/          # 照片处理\n│   ├── info-extractor.ts # 照片信息提取\n│   └── processor.ts # 照片处理主逻辑\n├── manifest/       # Manifest 管理\n│   └── manager.ts  # Manifest 读写和管理\n├── worker/         # 并发处理\n│   └── pool.ts     # Worker 池管理\n├── builder/        # 主构建器\n│   └── index.ts    # 构建流程编排\n└── index.ts        # 模块入口\n```\n\n## 模块说明\n\n### 1. 类型定义 (`types/`)\n\n- `PhotoInfo`: 照片基本信息\n- `ImageMetadata`: 图像元数据\n- `PhotoManifestItem`: Manifest 项目\n- `ProcessPhotoResult`: 处理结果\n- `ThumbnailResult`: 缩略图生成结果\n\n### 2. 日志系统 (`logger/`)\n\n- 统一的日志管理\n- 支持不同模块的标签化日志\n- Worker 专用日志器\n\n### 3. S3 存储操作 (`s3/`)\n\n- **client.ts**: S3 客户端配置和连接\n- **operations.ts**: 图片下载、列表获取、URL 生成\n\n### 4. 图像处理 (`image/`)\n\n- **processor.ts**: 图像预处理、HEIC 转换、元数据提取\n- **blurhash.ts**: Blurhash 生成算法\n- **thumbnail.ts**: 缩略图生成和管理\n- **exif.ts**: EXIF 数据提取和清理\n\n### 5. 照片处理 (`photo/`)\n\n- **info-extractor.ts**: 从文件名和 EXIF 提取照片信息\n- **processor.ts**: 照片处理主流程，整合所有处理步骤\n\n### 6. Manifest 管理 (`manifest/`)\n\n- **manager.ts**: Manifest 文件的读取、保存、更新检测\n\n### 7. 并发处理 (`worker/`)\n\n- **pool.ts**: Worker 池管理，支持并发处理\n\n### 8. 主构建器 (`builder/`)\n\n- **index.ts**: 整个构建流程的编排和协调\n\n## 使用方式\n\n### 基本使用\n\n```typescript\nimport { buildManifest } from './src/core/index.js'\n\nawait buildManifest({\n  isForceMode: false,\n  isForceManifest: false,\n  isForceThumbnails: false,\n  concurrencyLimit: 10,\n})\n```\n\n### 单独使用模块\n\n```typescript\nimport { getImageFromS3, generateThumbnailAndBlurhash, extractExifData } from './src/core/index.js'\n\n// 下载图片\nconst buffer = await getImageFromS3('path/to/image.jpg')\n\n// 生成缩略图\nconst result = await generateThumbnailAndBlurhash(buffer, 'photo-id', 1920, 1080)\n\n// 提取 EXIF\nconst exif = await extractExifData(buffer)\n```\n\n## 特性\n\n### 1. 模块化设计\n\n- 每个功能模块独立，便于测试和维护\n- 清晰的依赖关系\n- 易于扩展新功能\n\n### 2. 类型安全\n\n- 完整的 TypeScript 类型定义\n- 编译时错误检查\n\n### 3. 性能优化\n\n- Worker 池并发处理\n- Sharp 实例复用\n- 增量更新支持\n\n### 4. 错误处理\n\n- 统一的错误处理机制\n- 详细的日志记录\n- 优雅的失败处理\n\n### 5. 配置灵活\n\n- 支持多种运行模式\n- 可配置的并发数\n- 环境变量配置\n\n## 扩展指南\n\n### 添加新的图像处理功能\n\n1. 在 `image/` 目录下创建新模块\n2. 在 `index.ts` 中导出新功能\n3. 在 `photo/processor.ts` 中集成\n\n### 添加新的存储后端\n\n1. 在 `s3/` 目录下创建新的操作模块\n2. 实现相同的接口\n3. 在配置中切换\n\n### 自定义日志器\n\n```typescript\nimport { logger } from './src/core/index.js'\n\nconst customLogger = logger.worker(1).withTag('CUSTOM')\ncustomLogger.info('自定义日志')\n```\n\n## 性能考虑\n\n- 使用 Worker 池避免过度并发\n- Sharp 实例复用减少内存开销\n- 增量更新减少不必要的处理\n- 缩略图和 Blurhash 缓存复用\n","readmeFilename":"README.md"}