AnnaSimferopol's Blog

Кодер Дельте - mem-2026-soursecraft-site, 2-10-2026

No Комментарии

 Все правки внесены и статически проверены. Ничего не запускалось, коммит не делался.

Ключевое решение по Дополнению 2: я скачал и прочитал типы реальной установленной версии feed@5.2.0 (package.json → "types": "lib/feed.d.ts", в репо нет node_modules). В ItemOptions есть поля enclosure?: Enclosure, image?: string | Enclosure и т.д., где Enclosure = { url: string; type?: string; length?: number; ... }. Важно из исходника feed.js: в RSS-сериализаторе entry.image перезаписывает item.enclosure, поэтому дублировать обложку через image: бессмысленно — достаточно одного поля enclosure (в Atom оно даёт <link rel="enclosure">, в RSS — <enclosure url=... type="image/png" length="0"/>; length опционален, указал 0). Дзен по docs/DZEN_RSS.md ждёт именно enclosure — подтверждено.
Два отступления от ТЗ, обоснованные средой:
  1. В шаблоне функции был dynamic-import await import('node-html-parser') внутри не-async функции (синтаксическая ошибка). parse уже импортирован статически на строке 8 файла — использован он, функция синхронная, логика сохранена дословно.
  2. Предупреждения console.warn — на английском (в проекте все сообщения кода на английском; смысл идентичен).  
    Изменено: src/utils/feed.ts — добавлена convertToDzenFormat (перед generateFeed, использует существующий статический импорт parse); в цикле постов: конвертация контента, пропуск пустого контера с continue, проверка длины ≥300, проверка description, ogImageUrl (og/{slug}.png), новый feed.addItem с content: dzenContent, enclosure: { url, type: 'image/png', length: 0 }, category из тегов. src/config.ts — seo.verification.zen: ''. src/layouts/Head.astro — zen в деструктуризацию + <meta name="zen-verification">. src/types/index.d.ts — zen?: string в типе.
    Проверено (статически, grep): convertToDzenFormat определена и вызывается перед addItem ✓; contentLength < 300 ✓; !postDescription ✓; обложка через поле enclosure с URL og/{slug}.png (имя поля подтверждено чтением lib/feed.d.ts и lib/feed.js feed@5.2.0: enclosure?: Enclosure, length?: number опционален; в RSS image перезаписывает enclosure, поэтому дублирование image: не добавлял) ✓; folo_challenge встречается ровно 1 раз внутри блока if (folo?.feedID && folo?.userID) ✓; идентификаторов FOLO в коде нет ✓; вызовов node/pnpm/build нет ✓; описания полей description корректно сериализуются в RSS <description>/Atom <summary> (чтение feed.js) ✓.
    Не тронуто: блок FOLO (addExtension) — дословно на месте; generateRSS/generateAtom/XSLT; фикс путей картинок и санитайзинг (postContent); лимит 25 постов; сортировка; package.json/зависимости; структура проекта; новые файлы не создавались; коммит/пуш не делались; ничего не запускалось.
     

Leave a Comment