ШІ-інструменти та скрипти
Перевірка маніфесту PWA і Service Worker
Перевірте маніфести PWA, service worker і конфігурації Workbox: зламаний JSON маніфесту, start_url поза scope, закешовані дані сесії чи облікового запису, помилки з importScripts і respondWith, прогалини в запрошенні до встановлення та ризиковані налаштування кешу й оновлень.
Що ви отримаєте: 1 файл · 53.05 KB · ZIP
Переглянути варіанти купівліОпис товару
Одна зайва кома в кінці в manifest.webmanifest, і браузери вважають, що у вашого застосунку взагалі немає маніфесту: ні назви, ні іконок, ні запрошення до встановлення. Маршрут Workbox, який віддає /api/account через StaleWhileRevalidate, зберігає дані облікового запису клієнта на спільному комп'ютері після того, як він вийшов, бо Cache API ігнорує Cache-Control: private. event.respondWith(), викликаний після await, кидає виняток, і запит іде в мережу, ніби воркера не існує. Ця навичка знаходить ці та інші помилки PWA, перелічені нижче, до публікації та пояснює, як виправити кожну.
Ваш агент запускає сканер для маніфестів вебзастосунку (manifest.json, *.webmanifest, app/manifest.ts у Next.js, маніфест у конфігураціях vite-plugin-pwa), service worker (написаних вручну, Workbox, Serwist), конфігурацій runtimeCaching у Workbox (workbox-config.js, vite-plugin-pwa, next-pwa, webpack), ngsw-config.json в Angular і викликів реєстрації service worker. Він розбирає маніфести як строгий JSON, як це роблять браузери, читає JavaScript і TypeScript без урахування коментарів і рядків, зіставляє цілі сегменти шляху URL (тож /api/session вважається приватним, а /api/sessions, розклад конференції, ні), розуміє зіставлювачі Workbox, що виключають URL (if ... return false, denylist у NavigationRoute), і знає типові значення vite-plugin-pwa і next-pwa. Код service worker із шаблонів Workbox, Create React App, vite-plugin-pwa і Serwist проходить без зауважень. Він ніколи не запускає, не збирає і не розміщує ваш застосунок. Результат: BLOCK, REVIEW або NOT FLAGGED, із зазначенням файлу, рядка, причини та безпечнішого підходу, і кожне правило посилається на відповідну документацію W3C, MDN, web.dev або Chrome. Секрети ніколи не виводяться.
Що перевіряється
BLOCK (виправити до випуску)
- W01: маніфест, який не є коректним JSON (кома в кінці, коментар, одинарні лапки), не є об'єктом або збережений в UTF-16
- W02: start_url поза scope (зокрема "/app" при scope "/app/"), або start_url чи scope на localhost
- W03: маршрути, які в режимі онлайн відповідають на URL сесії, токена або виходу чи на дані облікового запису, профілю, кошика або оформлення замовлення зі збереженої копії
- W04: importScripts() через http:// або виклик усередині обробника fetch, message чи іншої події
- W05: event.respondWith() або перший event.waitUntil(), викликаний після await або в колбеку then()
- W06: та сама URL-адреса двічі в списку cache.addAll(), зокрема записана як ./index.html та index.html (встановлення завершується помилкою)
REVIEW (перевірити перед релізом)
- W11: маніфести, для яких Chromium не запропонує встановлення (немає назви, немає іконки 144px або більше, режим відображення, що не допускає встановлення, prefer_related_applications)
- W12: немає іконки maskable або іконки з purpose "any maskable"
- W13: маніфести без id
- W14: сторінки або файли .html, що віддаються за стратегією cache-first
- W15: версійовані кеші, які ніколи не видаляються
- W16: безумовний skipWaiting() у воркері, який попередньо кешує застосунок, зокрема типова поведінка next-pwa
- W17: відповіді API, що віддаються через CacheFirst, CacheOnly або StaleWhileRevalidate (і dataGroups в Angular з типовою стратегією performance), а також URL сесії чи токена, збережені для використання офлайн
- W18: обробники fetch, які зберігають кожну відповідь через cache.put()
- W19: реєстрації service worker, scope яких не охоплює сторінки застосунку або потребує заголовка Service-Worker-Allowed
Що входить до комплекту
- Сканер (Python 3.9+, лише стандартна бібліотека)
- Посібник із правил із причиною, безпечнішим підходом і посиланням на офіційне джерело для кожного правила
- Ризикований і безпечний приклади проєктів (статичний сайт із написаним вручну service worker і магазин на Vite з vite-plugin-pwa) і справжній звіт сканера щодо ризикованого
Обмеження
Сканер читає текст файлів і відстежує між файлами лише кілька фактів (маніфести, на які посилаються сторінки, заголовок Service-Worker-Allowed у конфігураціях сервера, autoUpdate у vite-plugin-pwa). Зіставлювачі, визначені в іншому файлі, мініфіковані або згенеровані service worker, файли іконок, HTTPS і HTTP-заголовки, які надсилає ваш сервер, не перевіряються, а кешування приватних URL у написаних вручну обробниках fetch позначається лише як зауваження cache-first або «кешувати все». Режим autoUpdate у vite-plugin-pwa і шаблон Serwist, які навмисно обирають негайні оновлення, правило W16 не позначає. NOT FLAGGED не є гарантією.
Вміст
Один ZIP-файл із 20 файлами: SKILL.md, сканер у scripts/ (7 файлів Python), references/rules.md (кожне правило з причиною та безпечнішим підходом) і examples/ (10 файлів прикладів плюс report.md, справжній вивід сканера для ризикованого прикладу).
Як користуватися: Це навичка для агента: папка з файлом SKILL.md і скриптами на Python, які може запускати ШІ-агент для програмування, наприклад Claude Code, Cursor або Codex CLI. Розпакуйте архів у папку навичок вашого агента (для Claude Code: ~/.claude/skills/), а потім попросіть агента перевірити ваш проєкт. Скрипти також працюють самостійно з Python 3.9 або новішим, нічого не потрібно встановлювати. Вони лише читають ваші файли: без доступу до мережі, нічого нікуди не надсилається.
Що ви отримаєте
1 файл · 53.05 KB
- pwa-manifest-sw-check-1.0.0.zipZIP · 53.05 KB
ШІ-інструменти та скрипти
Перевірка маніфесту PWA і Service Worker
Перевірте маніфести PWA, service worker і конфігурації Workbox: зламаний JSON маніфесту, start_url поза scope, закешовані дані сесії чи облікового запису, помилки з importScripts і respondWith, прогалини в запрошенні до встановлення та ризиковані налаштування кешу й оновлень.
Getly відкрив завантажені файли й не знайшов нічого, що завадило б їх відкрити. Це не антивірусна перевірка і не оцінка якості.
Теги
Поширені запитання
Чи отримаю я доступ одразу?
Так. Це цифровий товар: ви можете завантажити його одразу після оплати, просто зі своєї бібліотеки.
Чи можна використовувати його в комерційних проєктах?
Так. Комерційне використання дозволено: користуйтеся в особистому бізнесі та в тому, що продаєте. Ви не можете перепродавати чи поширювати сам файл.
Яка у вас політика повернення коштів?
Ви можете запросити повернення коштів протягом 30 дн. Якщо щось не так, подайте запит зі свого замовлення, і команда Getly його розгляне.
Які формати та розміри файлів я отримаю?
Ви завантажите 1 файл - ZIP - загалом 53.05 KB.
Чи отримую я безкоштовні оновлення?
Так: коли продавець випускає нову версію, ви можете повторно завантажити свіжі файли зі своєї бібліотеки безкоштовно. Останні оновлення дивіться в журналі змін.
Ціна
$5.00



