"Worker में AfterPack" के तीन अर्थ हो सकते हैं, और वे आपस में बदले नहीं जा सकते। AfterPack आज आपके Worker के अंदर चल सकता है, एक WebAssembly module के रूप में जिसे आप npm से install करते हैं। Pro AfterPack के cloud में चलता है, और Worker से वहाँ वैसे ही पहुँचा जाता है जैसे कहीं और से। Workers for Platforms पर AfterPack — एक AfterPack-operated Pro जो किसी Workers for Platforms account के अंदर चलता है और हर request पर नई शक्ल serve करता है — roadmap पर है और अभी मौजूद नहीं है।
यह पेज तीनों को, इसी क्रम में, कवर करता है।
AfterPack, आपके अपने Worker के अंदर
@afterpack/wasm WebAssembly में compile किया गया AfterPack है। यह वही Rust engine है जिसे CLI और framework plugins चलाते हैं, बस आपकी मशीन की architecture के बजाय wasm32 के लिए build किया गया।
npm install @afterpack/wasmimport { obfuscate } from "@afterpack/wasm";
export default {
async fetch(request) {
const source = await request.text();
const result = await obfuscate({ path: "app.js", source }, { preset: "hard" });
return new Response(result.bytes, {
headers: { "content-type": "application/javascript" },
});
},
};यही पूरा integration है। कोई init call नहीं, कोई nodejs_compat flag नहीं, .wasm फ़ाइल के लिए कोई wrangler rule नहीं। Module का कोई WebAssembly import नहीं है, इसलिए पहली बार obfuscate call करने पर वह synchronously instantiate हो जाता है, और package का exports map आपके bundler को अपने आप Worker के अनुरूप entry दे देता है। वही import Node में भी काम करता है, जहाँ एक अलग entry binary को disk से पढ़ती है।
Surface @afterpack/core जैसी ही है — obfuscate, obfuscateAll, version, सभी async, और सभी ऐसी build पर throw करते हैं जो ship नहीं हो सकती। Configuration वही object है जो Configuration पर documented है, preset और seed समेत।
@afterpack/core एक native binary ship करता है और तेज़ है। @afterpack/wasm तब चुनें जब host native binary load नहीं कर सकता: एक Worker, एक sandboxed CI image, एक edge function।
इसकी लागत क्या है
Engine binary package के अंदर, पहले से compiled, ship होती है।
| Size | |
|---|---|
Raw .wasm | 4.36 MiB |
| Gzipped | 1.25 MiB |
Cloudflare की Worker size सीमा free plan पर 3 MB compressed और paid पर 10 MB है, इसलिए engine दोनों में फ़िट हो जाता है। Free plan में जो फ़िट नहीं होता वह काम है: वह CPU को हर invocation पर 10 ms तक सीमित करता है, और laptop के एक core पर 185 KB bundle को obfuscate करने में डिफ़ॉल्ट light preset पर 0.3 सेकंड से कम और medium पर लगभग 1 सेकंड लगते हैं। Demo से आगे की किसी भी चीज़ के लिए Workers Paid चाहिए।
जो Worker हर request पर वही asset obfuscate करता है, वह हर बार वह CPU खर्च करता है। जहाँ हर request पर नया आकार आपका लक्ष्य नहीं है, वहाँ result को एक rotation window के लिए cache करना, या यह काम अपनी build में करके output serve करना, bill कम रखता है।
आपके host किए package की क्षमताएँ और सीमाएँ
आपका install किया .wasm Free protection करता है। Pro transforms केवल AfterPack के infrastructure पर चलते हैं, इसलिए package में unlock करने लायक कुछ नहीं है: bypass करने के लिए कोई key check नहीं, कोई switch नहीं जो host की गई copy को Pro build में बदल दे। एक key काम को cloud की ओर भेजती है; यह local पर कुछ भी चालू नहीं करती।
Published package एक npm provenance record रखता है — package version, उसे build करने वाला workflow, और artifact digest — ताकि आप अपने install किए bytes को उन्हें बनाने वाली build से जोड़ सकें।
Pro, आज: cloud API
Pro इस package का हिस्सा नहीं है और कभी नहीं होगा। यह केवल AfterPack के अपने infrastructure पर चलता है; ऊपर बताई tier सीमा का यही उद्देश्य है। Package में जो है, वह इसका client है।
Worker से वहाँ पहुँचना वही call है जो आप पहले से लिखते हैं: @afterpack/wasm को एक key pass करें और वही obfuscate() Pro चलाता है। Package अंदर ही अंदर POST /v1/obfuscate/batch पर Pro request भेजता है, इसलिए Worker को API हाथ से code नहीं करनी पड़ती। Cloud API reference पूरा wire contract है, और Deployment modes बताता है कि engine की जगह बदलने पर क्या बदलता है।
दो परिणाम जिन्हें स्पष्ट कहना ज़रूरी है। आपका source आपके Worker से बाहर जाता है और AfterPack के cloud में process होता है — memory में, persist किए बिना, जैसा Privacy & data handling में बताया गया है। और अगर cloud तक नहीं पहुँचा जा सकता, तो build fail closed होती है।
जो package आपके अपने infrastructure पर Pro transforms चलाने का दावा करता है, वह हमारा नहीं है। इस नाम से कुछ भी install करने से पहले npm provenance record जाँचें।
Roadmap पर: Workers for Platforms पर AfterPack
वह रूप जो अभी मौजूद नहीं है: Workers के लिए AfterPack का दिया एक wrapper, जो Workers for Platforms dispatch namespace के अंदर चलता है और हर request पर नई शक्ल serve करता है। कोई package install करने की ज़रूरत नहीं और कोई worker-to-worker request नहीं — Pro build Cloudflare के network से बाहर round trip किए बिना edge पर चलती है।
यह roadmap पर है और इसकी कोई तारीख नहीं है। इस पेज की कोई भी चीज़ इस पर निर्भर नहीं है, और Deployment modes बताता है कि आज क्या ship होता है। "Source कभी हमारे infrastructure से बाहर नहीं जाना चाहिए" वाली आवश्यकता का जवाब एक मुफ़्त local build है, जो आज उपलब्ध है।
चुनाव
| आप चाहते हैं | इस्तेमाल करें |
|---|---|
| Worker में obfuscation, आपके account से कुछ बाहर न जाए | @afterpack/wasm, यही पेज |
| सामान्य Node build में obfuscation | @afterpack/core या CLI |
| Pro hardening और region-स्तर के directives | वही call एक key के साथ, जो cloud API तक पहुँचती है |
| Pro, edge पर, AfterPack के दिए wrapper में | उपलब्ध नहीं |
आगे
- Deployment modes: local बनाम cloud, और हर एक क्या store करता है।
- Cloud API reference: वह contract जिसे Worker Pro builds के लिए call करता है।
- Configuration: हर key जिसे दोनों packages स्वीकार करते हैं।
- Tiers: Free में क्या शामिल है, और Pro क्या जोड़ता है।
- Privacy & data handling: हर mode में आपकी मशीन से क्या बाहर जाता है।