# Документація AfterPack

Крок після збірки, що обфускує JavaScript, який створює ваш бандлер. Одна dev-залежність, один рядок; production-вивід виходить обфускованим і щоразу іншим, розробка лишається незмінною.

Source: https://www.afterpack.dev/uk/docs

> Припиніть постачати свій вихідний код. Кожен бандл, який ви розгортаєте, і є вашим вихідним кодом: агент для програмування сьогодні читає, пояснює й переписує мініфікований JavaScript за лічені хвилини, тож «мініфікований» означає лише «опублікований дрібнішим шрифтом». AfterPack — це крок після збірки, який закриває цю прогалину. Одна dev-залежність, один рядок, і ваш production-вивід постачається з перейменованими іменами й закодованими рядками, тож жоден читач, людина чи модель, не знайде вашу логіку через grep і не скопіює її в написаному вигляді. Кожна збірка має іншу форму, тож інструменти, написані під шаблони однієї збірки, ламаються на наступній. Він працює після вашого бандлера, ніколи не торкається вихідного коду й може видати вам Protection Map з точним переліком змін. Він не перетворює секрет на клієнті на секрет на сервері: той, хто запускає ваш код, усе одно може прочитати значення, які він використовує.

## Коли варто
- Браузер отримує логіку, за копіювання чи обхід якої хтось заплатив би: перевірку ліцензії, правила ціноутворення, античит, пейвол, вбудований SDK.
- Клієнт або анкета з безпеки питає, чи можна прочитати JavaScript, який ви постачаєте.
- Вам потрібен крок після збірки, який не зачіпає розробку.
- Ви віддаєте JavaScript із Cloudflare Worker і хочете, щоб він змінював форму в кожному вікні ротації.

## Коли не потрібно
- Усе цінне вже працює на сервері, а клієнт лише тонкий шар відображення.
- Код відкритий або призначений для читання.
- Вам потрібно, щоб секрет лишався секретом у браузері: жоден обфускатор цього не робить, і AfterPack прямо про це каже.

## Усе в одному файлі
- [Уся документація (англійською)](https://www.afterpack.dev/llms-full.txt): усі сторінки нижче, об'єднані в один файл.
- [Конфігурація у JSON](https://www.afterpack.dev/docs-config.json): реєстр у машиночитному вигляді.
- [Дорожня карта](https://www.afterpack.dev/roadmap.md): що вже вийшло і що далі.

## Початок роботи
- [Огляд](https://www.afterpack.dev/docs.md)
- [Швидкий старт](https://www.afterpack.dev/uk/docs/quickstart.md): Оберіть фреймворк, встановіть одну dev-залежність, зберіть проєкт і відкрийте Protection Map.
- [Найкращі практики](https://www.afterpack.dev/uk/docs/best-practices.md): Як за замовчуванням постачати обфускований JavaScript, позначати директивами важливі ділянки і постійно змінювати збірку, щоб зловмисники не могли вас випередити.
- [Як працює AfterPack](https://www.afterpack.dev/uk/docs/concepts.md): Що стандартний результат (Free) робить із вашим кодом, як він протидіє відновленню і що зловмисник може насправді відновити.

## Посібники
- [Збірка і CI](https://www.afterpack.dev/uk/docs/builds.md): Де AfterPack стоїть у вашому пайплайні: лише продакшн, один раз зібрати і просувати скрізь, з рецептом для CI та правилами щодо сідів, артефактів, source map і недоступної хмари.
- [Protection Map](https://www.afterpack.dev/uk/docs/protection-map.md): HTML-звіт, який показує, що AfterPack зробив із вашим кодом: кожен токен розфарбовано за тим, скільки трансформацій він зазнав.

## Сценарії
- [Перевірки пейвола](https://www.afterpack.dev/uk/docs/use-cases/paywall-checks.md): Перевірка пейволу в бандлі — це іменована функція, яка повертає boolean, і змінити її результат можна патчем в один рядок. Що обфускація та сід для кожної збірки змінюють у тому, як її знайти і як зберегти патч робочим.
- [Логіка цін і доступу](https://www.afterpack.dev/uk/docs/use-cases/pricing-logic.md): Ліміти планів, пороги квот і правила фіче-флагів у клієнтському JavaScript читаються як специфікація вашої комерційної моделі. Як зробити їх нечитабельними і що однаково залишається видимим.
- [API-ключі в бандлі](https://www.afterpack.dev/uk/docs/use-cases/shipped-api-keys.md): Обмежте його, сховайте за проксі, ротуйте, а потім обфускуйте те, що залишилося. Що насправді дає кодування облікових даних у бандлі і де це закінчується.
- [Випадково злиті секрети](https://www.afterpack.dev/uk/docs/use-cases/accidental-secrets.md): Облікові дані потрапили в розгорнутий бандл. Як дізнатися, що ваш живий сайт розкриває просто зараз, що змінює для значення наступна збірка і чому саме заміна ключа закриває інцидент.
- [Інструменти патчингу](https://www.afterpack.dev/uk/docs/use-cases/patching-tools.md): Юзерскрипт, патч для Tampermonkey чи розширення мусить за щось зачепитися у вашому JavaScript: за ім'я, рядок або впізнавану форму. Що структурна обфускація та нова форма кожної збірки роблять із цими якорями.
- [Невипущені функції](https://www.afterpack.dev/uk/docs/use-cases/unreleased-features.md): Назви прапорців, рядки маршрутів і текст невипущеного UI потрапляють до кожного відвідувача ще до будь-якого анонсу, а люди порівнюють бандли між релізами. Що прибрати, що захистити і що взагалі не включати в збірку.
- [Сканери безпеки](https://www.afterpack.dev/uk/docs/use-cases/security-scanners.md): Патерни, схожі на секрети, sourceMappingURL назад до вашого вихідного коду, відбитки бібліотек і мітка «відкритий текст чи мініфікований». Що перевіряє автоматизований читач і що обфускована збірка змінює у звіті.
- [Ліцензії в Electron](https://www.afterpack.dev/uk/docs/use-cases/electron-license-logic.md): app.asar розпаковується однією командою, а локальна перевірка ліцензії чи пробного періоду зазвичай зводиться до одного порівняння. Як обфускувати main, preload і renderer, щоб кряк не пережив ваш наступний реліз.
- [Розширення браузера](https://www.afterpack.dev/uk/docs/use-cases/browser-extensions.md): Опубліковане розширення є zip-архівом, який будь-хто може розпакувати й прочитати. Що змінює обфускація фонових і контентних скриптів і яку політику магазину варто перевірити, перш ніж випускати таке розширення.

## Фреймворки
- [Фреймворки](https://www.afterpack.dev/uk/docs/frameworks.md): Який пакет встановити для вашого стеку, куди він підключається і що записує.
  - [Angular](https://www.afterpack.dev/uk/docs/frameworks/angular.md): Обфускація Angular v17+ — це прохід після збірки по dist/<app>/browser: через CLI або через допоміжний пакет @afterpack/angular.
  - [Astro](https://www.afterpack.dev/uk/docs/frameworks/astro.md): @afterpack/astro — тонка інтеграція, яка підключає @afterpack/vite до власного Vite-конвеєра Astro.
  - [Electron](https://www.afterpack.dev/uk/docs/frameworks/electron.md): @afterpack/electron підключає main, preload і renderer з одним сідом одним викликом і відхиляє bytecodePlugin з electron-vite та незахищені резервні копії, перш ніж вони встигнуть випустити ваш вихідний код.
  - [esbuild](https://www.afterpack.dev/uk/docs/frameworks/esbuild.md): @afterpack/esbuild підключається до build.onEnd і обфускує виданий результат на місці.
  - [Next.js](https://www.afterpack.dev/uk/docs/frameworks/nextjs.md): @afterpack/next обфускує клієнтський JavaScript усередині next build, на Turbopack чи webpack, з SSR чи статичним експортом.
  - [Nuxt](https://www.afterpack.dev/uk/docs/frameworks/nuxt.md): @afterpack/nuxt — це модуль Nuxt 3, який реєструє @afterpack/vite у конфігурації Vite вашого Nuxt.
  - [Parcel](https://www.afterpack.dev/uk/docs/frameworks/parcel.md): @afterpack/parcel-optimizer обфускує кожен запакований бандл у пам'яті як Optimizer для Parcel 2 і зупиняє збірку з помилкою (fail closed), замість того щоб випустити чанк, який у продакшені віддає 404.
  - [Plain JS](https://www.afterpack.dev/uk/docs/frameworks/plain.md): Спрямуйте npx afterpack@latest на будь-який каталог зі згенерованим JavaScript. Не потрібні ні бандлер, ні плагін, ні файл конфігурації.
  - [Remix](https://www.afterpack.dev/uk/docs/frameworks/remix.md): Пакета @afterpack/remix немає. Remix збирається через Vite, тож використовуйте @afterpack/vite або запустіть CLI на результаті збірки.
  - [Rollup](https://www.afterpack.dev/uk/docs/frameworks/rollup.md): @afterpack/rollup зчитує Pro-директиви @afterpack з вашого вихідного коду і запускає рушій у generateBundle, до того як Rollup запише результат.
  - [Svelte](https://www.afterpack.dev/uk/docs/frameworks/svelte.md): @afterpack/svelte обгортає @afterpack/vite для проєктів Svelte: один рядок плагіна у vite.config.ts.
  - [SvelteKit](https://www.afterpack.dev/uk/docs/frameworks/sveltekit.md): @afterpack/sveltekit: один рядок плагіна після sveltekit() у vite.config.ts.
  - [Vite](https://www.afterpack.dev/uk/docs/frameworks/vite.md): @afterpack/vite обфускує вашу збірку в generateBundle, до того як Vite її запише. Це еталонна інтеграція, яку обгортає кожен інший пакет сімейства Vite.
  - [Vue](https://www.afterpack.dev/uk/docs/frameworks/vue.md): @afterpack/vue обгортає @afterpack/vite для проєктів Vue 3: один рядок плагіна у vite.config.ts.
  - [Webpack](https://www.afterpack.dev/uk/docs/frameworks/webpack.md): @afterpack/webpack під'єднується до compilation.hooks.processAssets і обфускує ваші ассети, перш ніж webpack їх запише.

## CLI
- [CLI](https://www.afterpack.dev/uk/docs/cli.md): Виклик npx afterpack@latest: необов'язковий шлях, кожен ключ конфігурації як прапорець, підкоманди verify, restore та audit і повний контракт кодів виходу.
- [Аудит](https://www.afterpack.dev/uk/docs/audit.md): Скануйте живий URL на публічні source map, читабельний код і витоки облікових даних та отримайте оцінку зі 100. Той самий сканер, що працює в публічному сканері безпеки, з вашого терміналу.

## Конфігурація
- [Конфігурація](https://www.afterpack.dev/uk/docs/config.md): Кожен параметр, де його задати і що він робить.
- [Пресети](https://www.afterpack.dev/uk/docs/presets.md): П'ять рівнів захисту від minify до extreme, цільова складність, яку задає кожен, і що вже гарантує стандартний пресет без конфігурації (light).
- [Складність](https://www.afterpack.dev/uk/docs/complexity.md): Єдиний регулятор, що стоїть за кожним пресетом: що зростає разом із числом, єдиний поріг, який перемикається на medium, і які трансформації конфігурація може вимкнути, але не може примусово ввімкнути.
- [Директиви](https://www.afterpack.dev/uk/docs/directives.md): Коментарі у вихідному коді, які змінюють захист AfterPack для коду, який вони позначають.

## Безпека
- [Модель загроз](https://www.afterpack.dev/uk/docs/threat-model.md): Матеріал для безпекового рев'ю AfterPack: актив, який він захищає, що відновлює кожен клас зловмисників, як зберігається секрет, де закінчується поточний обсяг і які засоби контролю працюють поруч із ним.
- [Класи відновлення](https://www.afterpack.dev/uk/docs/reversal-classes.md): Класи для статичного зловмисника, до яких належать трансформації AfterPack, і що зловмисник отримує, відновивши кожен із них.
- [Конфіденційність](https://www.afterpack.dev/uk/docs/privacy.md): Локальна збірка нічого не надсилає. Хмарна збірка обфускує в пам'яті й нічого не зберігає, окрім Protection Map, яку ви попросили зберегти і яку можна вимкнути. Телеметрія увімкнена за замовчуванням, надсилає звіт, коли збірка повідомляє діагностику рівня error, ніколи не надсилає його для чистої збірки і вимикається однією змінною середовища.

## Хмара і Pro
- [Pro](https://www.afterpack.dev/uk/docs/pro.md): Free захищає весь ваш бандл рівномірно. Pro дає змогу застосувати найсильніший захист лише там, де це важливо: до однієї функції чи файлу, за допомогою директиви. А ще він зберігає запис про кожну збірку.
- [Хмарний API](https://www.afterpack.dev/uk/docs/cloud-api.md): Протокол взаємодії з api.afterpack.dev: автентифікація, ендпоінт пакетної обфускації, обмеження, ліміти запитів, часовий бюджет збірки та діагностичні коди, які має обробляти клієнт.
- [Режими розгортання](https://www.afterpack.dev/uk/docs/deployment-modes.md): Два способи запускати рушій: локально на вашій машині або в хмарі AfterPack із ключем Pro.
- [Cloudflare Workers](https://www.afterpack.dev/uk/docs/workers.md): Запускайте AfterPack у власному Cloudflare Worker через @afterpack/wasm, передайте свій ключ Pro, щоб збирати в хмарі AfterPack, і кешуйте кожен результат на вікно ротації.

## Дашборд
- [Дашборд](https://www.afterpack.dev/uk/docs/dashboard.md): Що показує дашборд AfterPack, як він організований і які збірки в ньому з'являються.
  - [Робочі простори й проєкти](https://www.afterpack.dev/uk/docs/dashboard/workspaces.md): Два об'єкти, на яких тримається все інше в дашборді: хто що може робити в робочому просторі, як проєкти групують збірки й ключі і що змінюють сторінки налаштувань.
  - [Збірки](https://www.afterpack.dev/uk/docs/dashboard/builds.md): Запис про кожну збірку Pro Cloud: покриття, роздування, складність, час збірки, вартість, діагностика і Protection Map.
  - [API-ключі](https://www.afterpack.dev/uk/docs/dashboard/api-keys.md): Створення, обмеження, використання та відкликання ключа, який перетворює локальну збірку на збірку Pro Cloud.
  - [Використання й оплата](https://www.afterpack.dev/uk/docs/dashboard/usage.md): Як читати лічильник використання, три пули, з яких бере збірка, рядок статусу на плитці плану і що можна змінити на сторінці оплати.

## Плани й оплата
- [Тарифи](https://www.afterpack.dev/uk/docs/tiers.md): Free виконує повний конвеєр: складність необмежена, доступний кожен пресет. Між тарифами змінюється те, наскільки точково можна застосовувати захист, і скільки MB збірок Pro ви отримуєте щомісяця.
- [Облікові записи](https://www.afterpack.dev/uk/docs/accounts.md): Для чого потрібен обліковий запис AfterPack, що є на сторінці вашого особистого облікового запису і де шукати документацію про робочі простори, ключі, використання та оплату.
- [SLA, SLO і підтримка](https://www.afterpack.dev/uk/docs/sla.md): Що є цільовим показником, а що договірною гарантією для хмарного API Pro, як обробляються інциденти і який канал підтримки діє на кожному тарифі.
- [Enterprise](https://www.afterpack.dev/uk/docs/enterprise.md): Індивідуальний контракт: пріоритет у розробці на замовлення, приватна інсталяція рушія у вашій власній хмарі, спільний аудит безпеки і два варіанти розгортання для вихідного коду, який не може залишати вашу інфраструктуру.

## Довідка
- [Порівняння](https://www.afterpack.dev/uk/docs/comparison.md): Як AfterPack порівнюється з javascript-obfuscator, js-confuser, JScrambler, JSDefender і ByteHide за часом збірки, розміром результату та тим, чи результат досі працює, виміряно на одному стенді.
- [Продуктивність](https://www.afterpack.dev/uk/docs/performance.md): Скільки AfterPack коштує збірці й сторінці: виміряний час обфускації на бандлі 185 KB, час і розмір завантаження wasm-збірки, розмір результату, час запуску сторінки й ціна виконання кожного пресета, скільки захищений код платить за читання глобального об'єкта хоста і як новий сід впливає на кешування.
- [Семантичний контракт](https://www.afterpack.dev/uk/docs/semantic-contract.md): Що з поведінки вашої програми зберігає результат AfterPack, як кожен реліз рушія перевіряють на реальному коді, і короткий перелік навмисних відмінностей.
- [Діагностика](https://www.afterpack.dev/uk/docs/diagnostics.md): Кожен код DIAG_*, який видає AfterPack, що його спричинило, як це виправити, і коди виходу, які повертає збірка.
- [Глосарій](https://www.afterpack.dev/uk/docs/glossary.md): Словник документації AfterPack: поліморфізм, нематеріалізація, класи відновлення та інші терміни, визначені один раз.
- [Status API](https://www.afterpack.dev/uk/docs/status-api.md): GET /v1/status: публічне зведення поточного стану кожного сервісу AfterPack і його щоденної доступності за останні 90 днів, дані, на яких працює status.afterpack.dev.

## Допомога
- [Часті питання](https://www.afterpack.dev/uk/docs/faq.md): Найпоширеніші запитання про AfterPack і короткі відповіді на кожне в кількох абзацах.
