AfterPack Pro

Free захищає весь ваш бандл рівномірно. Pro дає змогу застосувати найсильніший захист лише там, де це важливо: до однієї функції чи файлу, за допомогою директиви. А ще він зберігає запис про кожну збірку.

Free є базовим рівнем: повний каталог трансформацій, рівномірно застосований до всього бандла, на вашій машині, безкоштовно. Pro призначений для бандла, який не однорідний, коли одна перевірка ліцензії, одна процедура ціноутворення чи одні вбудовані облікові дані цінніші за весь код довкола.

Pro змінює те, куди потрапляє захист і наскільки точно. Сили жодної окремої трансформації він не змінює. Обидва тарифи можуть піднімати complexity настільки високо, наскільки дозволяє ваш бюджет розміру.

Що вже дає Free

Це не урізана пробна версія. Free запускає повний конвеєр: complexity не обмежена, і доступний кожен пресет на шкалі.

  • Кожен пресет: minify (ціль 0), light (5), medium (7), hard (12), extreme (25), а також будь-яке числове цільове значення, яке ви задасте. За замовчуванням діє light.
  • Кожна трансформація. Пониження літералів, сплощення потоку керування, непрозорі предикати, змішана булево-арифметична логіка, байт-код цілочислових виразів, матеріалізація констант, поглиблення областей видимості, переплетення перехресних залежностей.
  • Нова структура в кожній збірці. Не задавайте сід, щоб отримувати новий для кожної збірки; закріплюйте його, коли потрібен відтворюваний результат.
  • Усе інше, чого ви очікуєте: Protection Map, source map, плагіни для фреймворків, виявлення фреймворків. Жодного облікового запису, жодного ключа, жодного мережевого виклику для самої обфускації.
  • Зручний для відлагодження за замовчуванням. Devtools, точки зупину, console.log і вирази спостереження продовжують працювати. Якщо збірка щось повідомляє, див. Діагностика.

Розмір результату зростає разом із пресетом; виміряні розміри наведено на сторінці Продуктивність. Pro дає змогу витрачати цей розмір лише там, де це окупається, замість того щоб піднімати пресет для всього бандла.

One engine compiles to two build targets, a native binary and WebAssembly. Both have a free build; Pro protection runs only in AfterPack's cloudAfterPack engineone core, two build targetscompiles toNative binary@afterpack/coreWebAssembly@afterpack/wasm, and the cloudFree CLIruns on your machineFreePro cloudruns in AfterPack's cloudProPro transforms not includedPro transforms run hereBoth targets have a free build you can run yourself. Pro protection runs only in the cloud, never in code you ship.

Що дає Pro

Захист, який можна націлити

На Free ваша конфігурація однаково застосовується до кожного вузла бандла. На Pro позначена ділянка перевизначає ваші глобальні налаштування.

На практиці це означає, що можна залишити бандл на light заради швидких збірок і малого результату і все одно поставити extreme на ті двадцять рядків, які справді мають значення:

/* @afterpack preset=hard */
function verifyLicense(token) {
  // raised to complexity target 12, string floor forced on
}
/* @afterpack end */

/* @afterpack skip */
function debugPanel() {
  // target 0, floor off — left alone
}
/* @afterpack end */

Ділянки задаються блоковими коментарями @afterpack. Плагін зчитує директиви з вашого вихідного коду.

Що може задати директива: будь-який параметр, який застосовується до окремої ділянки.

Як директиви потрапляють до рушія

Зчитує їх плагін: @afterpack/next, @afterpack/vite, @afterpack/webpack або решта. Збірка Pro, запущена через npx afterpack@latest <path>, отримує захист Pro для всього бандла, без ділянок: CLI працює на зібраному результаті, де коментарів уже немає, тож не зчитує директиви і відхиляє directives.enabled.

Посилення для шляхів ліцензування та оплати

Два захисти, які можна ввімкнути і які збірки Free не застосовують:

НалаштуванняЩо воно робить для вас
transforms.selfIntegrity.enabledДодає перевірку над власною таблицею перевірок і виявляє зміни лише в цій таблиці. Зміну деінде у вашому коді не виявлено. Без втручання нічого не змінює.
transforms.comparisonHardening.enabledПеревірка рівності рядків стає односторонньою перевіркою дайджесту, тож літерала, з яким ви порівнюєте, в артефакті немає взагалі.

Обидва за замовчуванням вимкнені. Підтвердження позначеного патерну рефлексії працює однаково на обох тарифах: reflection.allow у вашій конфігурації. Його не можна задати директивою.

Збірки виконуються на інфраструктурі AfterPack

key спрямовує файли вашої збірки до хмари AfterPack, яка повертає захищений результат, щойно готовий кожен файл. Нічого додатково встановлювати й нічого оновлювати.

Вихідний код обробляється в пам'яті і не зберігається. Що змінюється, коли рушій переноситься, див. у розділі Режими розгортання.

Запис про кожну збірку

Хмарна збірка є записаною збіркою. AfterPack зберігає Protection Map цієї збірки та рядок підсумкових метрик, тож дашборд може показати мапу, діагностику і таймінги будь-якої недавньої збірки. Це відповідає на питання «чи справді той реліз був захищений?» без повторного запуску. Зберігання налаштовується для кожного проєкту і його можна вимкнути. Строк зберігання становить один рік і останні 500 збірок на проєкт, залежно від того, що закінчиться раніше. Використання обліковується в мегабайтах. Див. Скільки коштує Pro.

Повна матриця можливостей для кожного тарифу наведена в розділі Плани та тарифи.

Скільки коштує Pro

Pro тарифікує використання, а не місця. Ви купуєте MB JavaScript, які обробляє хмарний рушій: не збірки, не файли, не запити. Кожен тариф, зокрема Free, має необмежену кількість учасників робочого простору.

Ключ Pro спрямовує весь ваш клієнтський бандл через хмарний рушій, і кожен оброблений байт враховується, зокрема код поза вашими позначеними ділянками. Клієнтський бандл Next.js розміром 1.5 MB використовує 1.5 MB місячного ліміту на кожній збірці.

Отримати потужність Pro можна трьома способами:

  • Free із реєстрацією: 10 MB на місяць, без картки. Достатньо, щоб застосувати точкові можливості до реального бандла і порівняти результат. Див. Облікові записи.
  • Extra MB: $5 за 20 MB, разово. Ніколи не згорає, ніколи не поновлюється автоматично, а покупка не запускає підписку. Проєкт, який випускає реліз раз на кілька тижнів, може працювати лише на поповненнях.
  • План від $49/міс, коли обсяг робить його вигіднішим. Indie включає 500 MB на місяць, Team 3 GB, Studio 8 GB, кожен з автоматичним перевищенням з оплатою за MB, щоб напружений спринт не валив CI. Indie і Team мають 14-денний пробний період.

Збірка витрачає ліміт плану, потім Extra MB, потім перевищення, саме в такому порядку, тож поповнення стоїть за вашим місячним лімітом, а не витрачається першим. Ціни, обмеження на кількість проєктів, ставки перевищення та ліміт витрат наведено в розділі Плани та тарифи.

Для порівняння: типовий продакшн-бандл SPA важить від кількох сотень KB до кількох MB. Безкоштовних 10 MB вистачає на кілька реальних збірок, а 500 MB в Indie — на кілька сотень.

Незабаром

Зараз недоступно. Це пункти Pro з публічної дорожньої карти, де AfterPack повідомляє, що готується, без жодних дат.

МожливістьЩо вона додасть
Обфускація між модулямиПереплетення через межі модулів, а не лише в межах файлу.
Маскування мережевого транспортуКодек для кожної збірки для ваших API-запитів і відповідей у мережі.
Керовані source mapСимволізація продакшн-стек-трейсів через автентифікований пошук, без публікації будь-якої мапи.

Що робить налаштування лише для Pro у збірці Free

Збірка Free зупиняється на директиві для ділянки, яка посилює захист, замість того щоб застосувати слабший захист, ніж вимагав вихідний код, а будь-яку іншу директиву ігнорує. Два налаштування посилення вище просто не застосовуються. Збірка Pro, яка не може достукатися до хмари, зупиняється з помилкою (fail closed).

Далі